来源 | 区块链研究实验室 封图 | CSDN 付费下载于视觉中国 以太坊存储机制 在EVM中允许执行智能合约代码。合约状态或内存存储在智能合约地址中。可以将这种存储视为位于智能合约地址的无限长度的数据结构数组。存储机制确保存储位置没有冲突,并遵循一组规则。使用这些规则,我们可以解码任何合约的状态。解码存储在映射中的数据需要知道所使用的密钥。合约数据的解码使用RPC调用eth_getStorageAt进行。 插槽位置 变量在智能合约的存储阵列中的位置由代码中出现的顺序以及变量的大小决定。此位置称为插槽。
下面是一个简单的 Solidity 合约示例,它实现了一个简单的数字存储合约,允许用户设置和获取一个整数值。这个合约将帮助你了解 Solidity 合约的基本结构和语法。
关于“以太猫”的流行,相信不少人都有所耳闻,甚至入手养过几只。从游戏性来说,其本质就是一个简单的收集交换类游戏,然鹅,是区块链赋予了它魅力,让用户每一只猫永远不会消失、不被篡改,更重要的是可以炒(滑稽脸),于是今天借此机会一探以太坊应用DApp的开发过程以及开发中遇到的坑。
这是"可升级智能合约:存储要点与挑战"系列的第二篇文章。这一次我们将仔细研究Solidity合约的状态变量的存储步距以及使用delegatecall时可能发生的地址/槽位冲突问题,并分析一个存在地址冲突问题的合约的示例,最终给出相应的解决方案。
在我们对etherscan等平台上合约进行安全审查时,常常会遇到没有公布Solidity源代码的合约,只能获取到合约的OPCODE,所以一个智能合约的反编译器对审计无源码的智能合约起到了非常重要的作用。
目前大部分的联盟链平台,包括FISCO BCOS,都采用Solidity作为智能合约开发语言,因此熟悉并上手Solidity十分必要。
“长安链·ChainMaker”智能合约的开发需要经过选择开发语言、开发工具、编写合逻辑代码、编译合约、部署合约和调用合约几个过程,长安链提供了整套合约开发过程推荐的工具,如下图所示:
我们探索及讨论了在以太坊[6]独特的 EVM 成本模型下编写高效 Solidity 代码的数据结构和实现技术。读者应该对 Solidity 中的编码以及 EVM 的总体工作方式有所了解。
话说,区块链行业对人才的缺口越来越大,但由于区块链涉及的知识领域较为广泛,能找到真正有用的人才对每个企业来说都非常不易。
不知道多少人和营长一样,在结束一天的工作后,就想瘫在沙发上玩玩游戏,一扫一天的疲惫。不过现在的游戏都越来越氪金了,就像玩家们常说的:不充钱你怎么能变强!!!
去年读研的时候上的 HKU 的 <COMP7408 Distributed Ledger and Blockchain Technology>,课程中学习了以太坊智能合约的开发,做了一个简单的图书管理 ÐApp,然后毕业设计也选择了基于 Ethereum 做了一个音乐版权应用,详见 Uright - 区块链音乐版权管理ÐApp,对 Solidity 开发有一些基础了解。
最近要找个H5的前端写个简单的DApp,聊过几个H5的工程师,都被跟以太坊交互的部分吓住了。虽然网上有N多的教程,但是对于H5工程师来说,还是有些困难。分析其原因,在于不了解ganache-cli(原来叫testrpc)/web3/以太坊节点/metamask之间的架构关系。
Solidity 的代码都包裹在合约里面. 一份合约就是以太应币应用的基本模块, 所有的变量和函数都属于一份合约, 它是你所有应用的起点.
智能合约部署在区块链上,它们是包含一些逻辑的代码片段,由 EVM 执行,将以太坊区块链变成一种世界分布式计算机。
在2018年,我们(CheckMarx)曾对智能合约安全状况进行过初步研究,重点是Solidity[1]编写的智能合约。当时,我们根据公开的合约源代码(译者注:本文称之为已扫描合约,本文出现的 x% 是以此为基数)编写了最常见的10 个智能合约安全问题。两年过去了该更新研究并评估智能合约安全性发展的如何了。
延禧攻略最近大火,傅恒和魏璎珞求而不得的爱情也令很多人觉得惋惜。那么傅恒到底为什么爱上魏璎珞呢?有网友真相了。
很多学习智能合约的程序员都会学 Solidity 语言,网上有大量关于 Solidity 的在线教程和书籍。而 Solidity 与 Truffle 框架的结合,简直就是开发智能合约的杀手级组合。几乎以太坊区块链上所有的的智能合约都是用 Solidity 编写的。
[第1部分] 使用Solidity[4] 和 React在以太坊上构建具有社交找回功能的智能合约钱包
参考博文:http://liyuechun.org/2017/10/13/smart-contract-voting-dapp/
这是深入 Solidity 数据存储位置[6]系列的另一篇。在今天的文章中,我们将学习 EVM 内存的布局,它的保留空间,空闲内存指针,如何使用memory引用来读写内存,以及使用内存时的常规最佳做法。
每次交易被发送到区块链上,必须支付 Gas 费用。消耗的 Gas 与交易所需的计算量有关,即:EVM 执行交易所需的计算量(如果交易不涉及 EVM,例如简单的以太币转账,Gas 的数量是固定的)。
在工程项目 scripts 中,我们可以找到一个名为 deploy.js,这个文件就是我们部署合约使用的脚本文件
接下来这节课好长好长啊,静怡,要坚持!!!!!!争取下午看完!!!加油!!!fighting!!!
Solidity 的语法概念最早由 Gavin Wood 在2014年提出,后期则由 Christian Reitwiessner 所领导的以太坊团队 Solidity 接手开发。该语言是针对以太坊虚拟机(EVM)所设计的5种语言之一(除 Solidity 外,还包括 Serpent、LLL、Vyper(实验中)和 Mutan(已弃用)),是目前 EVM 上最流行的语言。
NFT的非同质令牌不同于比特币的“同质令牌”。每个NFT代表一个不同的对象,所以它不能交换,替换或切割。当创作者将一件NFT作品“投”在区块链上,就会发生一定数量的代币来证明其稀缺性。
比特币设计的初衷就是要避免依赖中心化的机构,没有发行机构,也不可能操纵发行数量。既然没有中心化的信用机构,在电子货币运行的过程中,也势必需要一种机制来认可运行在区块链上的行为(包括比特币的运营,亦或是运行在区块链上的其他业务),这种机制就是共识机制。在完全去中心化的区块链上运行的比特币,采用的是PoW(Proof of Work,工作量证明),该机制完美的解决了拜占庭将军问题(存在异常的情况下仍能达成一致)。因为基础网络架构为分布式,对单独一个节点是无法控制或破坏整个网络,掌握网内51%的运算能力(非节点数)才有可能操作交易,而这个代价大概要超过270亿美元。
我们上一篇文章对nest2.0整体架构做了一个说明,本文则对每个文件进行进一步的解释。
如果你对于以太坊智能合约开发还没有概念(本文会假设你已经知道这些概念),建议先阅读入门篇。 就先学习任何编程语言一样,入门的第一个程序都是Hello World。今天我们来一步一步从搭建以太坊智能合约开发环境开始,讲解智能合约的Hello World如何编写。
用于标识一个函数不会修改合约的状态,即它只能读取数据而不能修改数据。这意味着在调用视图函数时,不会产生任何交易费用,并且不会改变合约的状态。例如:
你的一些编程“好习惯”反而会让你写出低效的智能合约。对于普通编程语言而言,计算机做运算和改变程序的状态顶多只是费点电或者费点时间,但对于 EVM 兼容类的编程语言(例如 Solidity 和 Vyper),执行这些操作都是费钱 的!这些花费的形式是区块链的原生货币(如以太坊的 ETH,Avalanche 的 AVAX 等等...),想象成你是在用原生货币购买计算资源。
这是个人和团队做的第一个基于以太坊的区块链项目。目前该项目在删档测试阶段 http://fox.doyo.com ,只要每日签到打卡官方还会送ETH和代币,喜欢薅羊毛的可以去看看。整个项目开发过程经历过相当多的坑。在文章内会一一提到。
“现在进入你还是先行者,最后观望者进场才是韭菜。”美图董事长蔡文胜在三点钟群中的预言一语成谶。在4月22日,随着BEC智能合约漏洞的爆出,一行代码蒸发了6447277680人民币。然而时隔三天,SMT的智能合约又爆出漏洞,SMT在火币Pro的价格下跌近20%。一时间,无论先行者还是准“韭菜”,都惨遭收割。 区块链做为一款能与价值交互的产品,难免不被人们神化。理性地分析一下,程序中的漏洞总是不可避免的,很难保证代码百分百不出错,即使大公司也只能通过发布测试版本来降低漏洞出现的概率。今天让我们来看看智能合约的
你可以自己学习,或者你可以使用这份便利的一步步的指南来准确地知道在什么时候该做什么,并对合约进行审计。
对优质区块链开发人员的需求很大,这是有充分理由的。区块链和ICO领域在过去几年中爆炸式增长。越来越多的人试图进入并在该领域中扬名立万。但是,为了获得成功,他们拥有一支强大而健全的团队至关重要。区块链开发人员,更准确地说,以太坊开发人员是该团队中最关键的组成部分。
在合约的开头处有一个Building接口,定义了isLastFloor函数,返回值是bool,应该是用来返回这一楼层是否为最顶层,在接口里没有函数是已实现的,类似于抽象合约,可以理解为它仅仅用来提供一个标准,这样继承于它的合约就可以遵照它的标准来进行交互,而接口内的函数在其调用合约内定义即可。
自Cryptokitties[1]推出以来,兼容 ERC-721 标准的加密收藏品已经非常流行,并在最近几个月向大规模采用的方向发展。本指南将涵盖使用0xcert/ethereum-erc721[2]智能合约库创建和部署我们自己的 ERC-721(NFT)。
今天我们来编写一个完整的去中心化应用(Dapps), 本文可以和编写智能合约结合起来看。
自从去年以太坊上的游戏CtyptoKitties(加密猫)流行起来以后,很多人发现了智能合约的新玩法——做游戏!在手机游戏市场中,棋牌类的游戏占领了很大的市场,比如斗地主、德州扑克等。这类游戏有一个共同的特点:在每轮游戏开始前,需要通过生成随机数来洗牌,来保证每一局牌面的随机性。通过智能合约来实现这类棋牌游戏遇到的一个问题就是:因为智能合约包括区块链上的数据都是开源的,一旦本轮洗牌使用的随机数在本轮游戏结束前记录到区块链上,那玩家就可以根据这个随机数计算出所有其他玩家的牌面,那这个洗牌也就失去原本的意义,游戏也就无法进行下去了。这种情况在区块链上如何解决呢?本文我们就一起来探讨下智能合约的数据存储问题。
这是深入 Solidity 数据存储位置[4]系列的另一篇。在今天的文章中,我们将更详细地介绍 EVM 中的一个重要数据位置:存储(Storage)。
Solidity(中文名称:Solidity 语言)是一种面向智能合约(Smart Contracts)的高级编程语言,最初由以太坊(Ethereum)的团队开发并用于以太坊平台上的智能合约编写。Solidity 的设计目标是简化以太坊智能合约的开发,使开发者能够创建安全、可靠的去中心化应用程序(DApps)。
"清单宣言.如何把事情做对[4] "是Atul Gawande[5]的一本书,他是著名的外科医生、作家和公共卫生领袖。马尔科姆-格拉德威尔[6]在对这本书的评论中写道:
老铁们,今天营长手把手带你们开发一款去中心化应用(Dapp)—— 宠物商店,来来来,先看下效果图:
本文只从写代码实现NFT的技术方案层面去介绍 NFT,不从其金融意义、案例,等层面去谈,因为这类内容可以随便在浏览器搜索到,而我接下来要谈的内容,浅层搜索下,数量不多。
2018年4月24日,又一件突发性事件引爆了币圈!刚刚发行了才两个月的“美链 Beauty Chain” (简称BEC)在受到黑客的攻击的影响下直接归零了!黑客使用的是以太坊ERC-20智能合约BatchOverFlow数据溢出的漏洞,向两个地址转出了数量巨大的BEC代币!黑客先是试探性地往Okex中转100万的BEC,发现成功转入卖出后,又分两次转入了一千万的BEC。发现两次都成功,黑客变得更加大胆,便转入了一亿枚BEC。但这1亿枚 BEC转入后,OKEx已经发现问题并停止了BEC的交易。按照转入记录,预计黑客已经卖出了最少 1100万枚BEC,折合昨日售价约一千八百多万人民币。
以下为吴家志在CSDN主办,区块链大本营、柏链道捷、极客帮创投协办的「第 9 期 CSDN 区块链技术沙龙」上的发言内容,区块链大本营在不改变原意的情况下作了精心整理。
今天科技圈最大的新闻莫过于百度李彦宏被“浇水”一事了,微博、微信、今日头条可谓是炸开了锅,但想想要是10年前,讨论最火的地方可能不是这些 app,无疑是百度贴吧了,但可能面临删帖的危险...
本文假设读者已按照前面课程完成了标准合约链或者TEE隐私合约链的部署。本文主要讲解蚂蚁区块链的智能合约编译环境的使用。包括以下内容: (1)蚂蚁区块链Cloud IDE 说明 (2)配置Cloud IDE证书 (3)Solidity智能合约编译/部署/运行
领取专属 10元无门槛券
手把手带您无忧上云