区块链开发(三)编写调试第一个以太坊智能合约
I?马鞭马鞭马鞭马鞭马鞭马鞭智能合约简介IDE
蓑衣网小编2022?马鞭目前以太坊支持三种语言编写智能合约,
?马鞭坚固性:类似于JavaScript,这是以太坊官方推荐的语言,也是最流行的智能合约语言。见Solidity文档,地址:3359 Solidity . readthedocs . io/en/latest/
?马鞭大蛇:类似Python风格,文档地址:https://github.com/ethereum/wiki/wiki/Serpent
?马鞭LL:类似Lisp风格,目前已经终止。
?马鞭马鞭你可以根据不同的习惯选择不同的高级语言。目前最流行的是扎实。本文中的所有智能合约都是用Solidity语言编写的。
目前有几种常见的可以编写智能合约的ide:
蓑衣网小编2022?马鞭Mix:是早期以太坊的主要开发IDE,可以支持智能合约和DAPP的编写、调试和部署,全图形化界面。但随着原主持人加文伍德(Gavin Wood)的离开,逐渐被边缘化,最后停止了发展。整个团队转向混音项目。为了未来,不建议学Mix。
?马鞭混音:是原混音团队的新作。目前只有简单的调试功能上线,以后可以重点关注。
?马鞭浏览器-solidity:该项目是智能合约浏览器版本的开发环境,可以支持在浏览器中直接开发、调试和编译。对于新手来说,不用安装就可以快速使用,非常方便。使用直接访问地址:https://ethereum.github.io/browser-solidity/.本文使用该IDE进行开发。
?riding crop Ethereum Studio:由第三方公司开发的智能合约在线IDE。它功能强大,使用免费,可以作为企业级开发的工具。访问地址是3359live.ether.camp/
?马鞭Visual Studio 2015:没错,就是微软的VS 2015。微软已经集成了以太坊的智能合同撰写功能,可见微软对以太坊的重视。
二?马鞭马鞭马鞭马鞭马鞭马鞭马鞭写第一个智能合约
1,马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭智能合同语法学习方法
?马鞭智能合约的语法和例子可以在Solidity的文档网站http://solidity.readthedocs.io/en/latest/.查看基本上,看完这些在线文档,你就已经熟练了,剩下的只是在实践中写代码而已。
2、吗?马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭示例合同代码
?马鞭我们先给出一个示例代码,然后我们就以这个代码为例来讲解智能合约的编写和调试。
——————33543——33——33————3333333————335433543543433433333333——-
合同Votelihe {
?马鞭马鞭结构候选{
?马鞭马鞭马鞭马鞭马鞭马鞭马鞭。
?马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭串名;
?马鞭马鞭}
?马鞭马鞭结构投票人{
?马鞭马鞭马鞭马鞭马鞭马鞭马鞭布尔投票;
?马鞭马鞭}
?马鞭马鞭映射(地址=投票人)公众投票人;
?马鞭马鞭候选人[]公开候选人;
?马鞭马鞭函数vote lithe(){
?马鞭马鞭马鞭马鞭马鞭马鞭马鞭candidates.push(候选人({
?马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭名字:“李和”,
?马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭votecount: 0
?马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭(中英对照(中英对照;
?马鞭马鞭马鞭马鞭马鞭马鞭马鞭candidates.push(候选人({
?马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭名字:“丹丹”,
?马鞭 函数描述如下:
函数Votelihe():构造函数,智能合约只运行一次
函数Vote_candidate():给候选人投票,每个投票人只能投一票
函数Getcount():返回当前候选人的票数
马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭用IDE写智能合约
?马鞭首先,我们打开浏览器-solidity。IDE的主要功能如下:
?马鞭马鞭将示例代码复制到左边的代码编辑框中,IDE会自动检测语法错误并显示在右边的窗口中,如下图:
?
?如您所见,提示未声明的对象是第14行的一个错误。显然,我的一个结构对象,候选人,被错误地写成了候选人2。可以通过修改来验证。?骑乘作物注意,当你在浏览器中编写代码时,它会自动保存在本地浏览器缓存中。只要清除浏览器缓存,代码就不会丢失。?三。调试第一个智能合约
?目前browser-solidity常见的调试方式有两种,一种是采用本地虚拟机调试方式,另一种是连接本地私有链进行调试。1、吗?马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭本地虚拟机调试模式?马鞭本地虚拟机调试,即在不连接任何节点的情况下,在内存中虚拟调试一个以太坊节点,优点是速度快,配置简单,缺点是只是虚拟调试,最后在真实的区块链节点上运行智能合约时,可能会与预期结果有所不同。?骑马鞭首先在调试环境设置中,选择JavaScript VM设置本地虚拟调试模式,如下图:??马鞭设置成功后,可以在账号状态栏看到可用账号列表,如下图
?
?马鞭智能合约代码编写完成后,点击“创建”按钮,将智能合约部署到内存中,并进行调试。如果部署成功,会出现智能合约的函数运行按钮和参数输入框,然后就可以调试你的智能合约了,如下图:
?
?马鞭运行该功能后,会出现相应的交易数据,可以完成整个智能合约的调试。
?马鞭如果你想分步调试智能合约,那么选择bug图标,切换到分步调试界面,实现智能合约的单步运行。注意,这里运行的单步并不是指代码,而是指智能合约编译后的操作码,如下图所示。
?
2、马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭马鞭连接本地私链调试
?马鞭马鞭连接本地私有链进行调试,就是通过RPC接口连接本地以太坊节点,实际部署调试智能合约。缺点是速度慢,配置复杂。好处是可以实际运行智能合约,最大程度防止出错。私链的配置请参考我最初发表的文章《区块链开发(一)搭建基于以太坊的私有链环境》。?马鞭首先在调试环境设置中,选择Web3 Provider设置本地虚拟调试模式,默认会给出一个http://localhost:8545的连接地址。如果你配置的私有链RPC端口被修改了,记得改成对应的端口,如下图:??马鞭马鞭然后,切换到帐户状态栏。此时显示的可用帐户应该都是您部署的私有链中的帐户。如果没有,说明私链没有连接成功。有两个可能的原因。第一,私链提供的端口是http访问,而browser-solidity的网页访问地址是https。解决方法是将browser-solidity访问地址改为http协议的地址改为http://ethereum.github.io/browser-solidity/.第二,系统的时间与网络不同步。用windows系统的时间同步功能同步就可以了。
四?马鞭马鞭马鞭马鞭马鞭马鞭马鞭其他常见智能合约资源
?马鞭马鞭这里有一些例子网站,可以参考一些成熟的代码进行快速迭代学习。常见的例子网站如下:
?马鞭https://github . com/以太坊/wiki/wiki/Solidity-Collections
?马鞭http://ether . fund/contracts/
?马鞭https://github . com/chriseth/solidity-examples?马鞭https://github . com/以太坊/dapp-bin?马鞭https://github . com/fivedogit/solidity-baby-steps?马鞭http://dapps . ether casts . com
?马鞭http://ther . fund/contracts
?马鞭常用的框架有三种:
?马鞭松露:手册地址是http://Truffle . readthedocs . io/en/latest/
目前流行的以太坊开发框架Truffle的手册,相当受欢迎。
?马鞭斑纹:指令地址http://dpple . readthedocs . io/en/master/这个开发框架是在gitter chart上看到的,感觉用的人不多。一、观察
?马鞭马鞭流星:指令地址https://github.com/ethereum/wiki/Dapp-using-meteor
这个开发框架是以太坊官网推荐的,值得学习。当然以太坊官网经常换方向,可能是