《区块链DAPP开发入门、代码实现、场景应用》笔记4——Ethereum Wallet中部署合约
账号创建完成之后,账号余额是0,但是部署合约是需要消耗GAS的,因此需要获取一定的以太币才能够继续本次实现。在测试网中获取以太币可以通过挖矿的方式,在开发菜单中可以选择打开挖矿模式,但是这需要将Syn Mode模式修改为Full,这意味着需要将测试网的全部区块数据同步下来才可以进行挖矿,这些数据非常大且同步缓慢,因此建议采用第2种方案:到以太坊基金会申请以太币,读者可以自行搜索“获取测试网以太坊币”,会有相关的网址获取以太币,一般需要输入读者自己的测试环境以太坊账号。
(1)本节使用的代码案例需要2个以上的以太坊账号,请读者申请创建2个账号并分别申请测试用的ETH代币。成功创建账号并获取以太币之后,就可以开始部署智能合约的操作了,如图2.13所示,选择 COTRACT->DEPLOY NEW CONTRACT。
图2.13 智能合约tab页面
(2)将上一章用的Coin合约代码复制粘贴到图2.14中3的区域,其中1表示账号用于部署该合约的账号,对应于Coin构造函数的msg.sender这个内容。区域2表示给当前的智能合约转账多少,单位是以太币的个数。4表示该合约代码存在编译错误,需要修改。
图2.14智能合约代码输入
(3)稍作修改之后,代码编译通过。在代码的右侧,是一个下拉选项,选项中有智能合约的名称列表,此示例中仅有Coin一个智能合约,选中此合约,在合约代码的下方有GAS费用调节的滑块和DEPLOY按钮。GAS费用前面讲到过,付出越高的GAS费用,被矿工选中打包成区块的概率也越高,如图2.15所示,此示例中我们选中默认GAS数量,然后点击DEPLOY按钮。
图2.15选择智能合约名称并修改GAS费用
(4)点击部署合约之后,以太坊钱包会弹出交易转账密码输入的对话框,此密码即为秘钥的加密密码,通过输入密码,以太坊钱包动态的解密私钥,通过私钥对交易进行签名,然后广播到以太坊网络中,该交易会加入到交易池中并显示为pending状态。矿工会选择该交易并将智能合约运行来修改以太坊状态机的状态。修改成功之后,将产生的新状态以及交易收据、永久存储数据、余额等信息写入到以太坊,并将所有数据打包进新的区块。
(5)正确输入密码并SEND TRASACTION之后,以太坊钱包会进入等待以太坊网络矿机打包的过程中,图2.16就是正在等待交易被打包,该交易是一个Create Contract的操作。交易被成功打包到新的区块之后,会生成关于该交易的很多索引信息,如图2.17所示。
图2.16输入密码,支付费用以便部署智能合约
图2.17交易等待打包的状态提示
(6)图2.18中,1是交易的hash值,点击该链接可以打开区块链浏览器,查看关于该交易的更多详细信息;2是区块打包的时间;3表示该交易设计的转账金额,本示例只是创建合约,并没有转移以太币;4是发起改交易的以太坊账户,点击该选项可以打开区块链浏览器,查看关于该账户的所有交易记录,任何有人都可以查到这些信息,因此区块链是透明公开的;5表示该交易的目的地址,创建智能合约时改地址是空;6、7、8表示执行该交易消耗的以太坊代币数量、GAS数量和GAS的价格,这些是该交易的交易手续费,是给以太坊矿工的激励,当然目前使用的是以太坊测试网,该网络的以太币并没有兑换价值;9表示该交易所在的区块高度,点击链接可以进入区块链浏览器查看该区块的其它信息。
图2.18创建智能合约产生的交易信息
(7)如图2.19所示,点击交易hash值之后浏览器打开的区块链浏览器信息,读者可以自行点击其它信息。该浏览器是第三方开发,与区块链钱包类似,任何人和机构都可以开发钱包和浏览器,以太坊的数据是无主的,去中心化的,任何人都可以开发软件来访问以太坊区块链上的交易数据,这就是区块链公开透明的魅力。同时因为加密学的应用,即使所有数据对所有人公开,代码和规则也公开,也无法通过篡改数据的方式来破坏区块链网络,或者通过作恶的方式来获取区块链上的数字货币,这就为区块链的创新应用提供了技术支持。
图2.19 以太坊区块链浏览器
(8)如图2.20所示,当交易打包完成之后,回到CONTRACTS页下面,可以看到刚刚创建的智能合约显示在了界面中。点击该智能合约,进入下一环节,调试智能合约。
图2.20 合约创建成功之后的界面
2020区块链各种应用都上马了,跟我一起学《区块链DAPP开发入门、代码实现、场景应用》吧。