合约greeter是一个简单的智能合约,你可以使用这个合约来和其他人交流,它的回复会同你的输入完全一样,当输入为“Hello World!”的时候,合约也会回复“Hello World!”。
该合约主要面向第一次接触solidity和ethereum的初学者,旨在让大家能够了解如何编写一个简单的智能合约程序, 掌握基本流程。
- 返回你预先设置的字符串
- :selfdestruct 是 ethereum 智能合约自带的自毁程序,kill对此方法进行了封装,只有合约的拥有者才可以调用该方法;
- :返回合约 greeter 里的 greeting属性的值;
第一步 生成智能合约代码对象
我们先把合约代码smartContract_example01.sol 压缩为一行.新建一个ssh session, 切换到geth用户环境, 然后输入:. 切换到以太坊控制台,把合约代码保存为一个变量:
第二步 编译合约代码
然后编译合约代码:
可以看到编译好的二进制代码 可以看到合约的ABI
第三步 设置希望返回的字符串
第四步 部署合约
接下来我们要把编译好的合约部署到网络上去.
首先我们用ABI来创建一个javascript环境中的合约对象:
我们通过合约对象来部署合约:
- greeterContract.new方法的第一个参数设置了这个新合约的构造函数初始化的值
- greeterContract.new方法的第二个参数设置了这个新合约的创建者地址from, 这个新合约的代码data, 和用于创建新合约的费用gas.gas是一个估计值,只要比所需要的gas多就可以 ,合约创建完成后剩下的gas会退还给合约创建者.
- greeterContract.new方法的第三个参数设置了一个回调函数,可以告诉我们部署是否成功.
contract.new执行时会提示输入钱包密码.执行成功后,我们的合约Token就已经广播到网络上了. 此时只要等待矿工把我们的合约打包保存到以太坊区块链上,部署就完成了.
第五步 挖矿
在公有链上,矿工打包平均需要15秒,在私有链上,我们需要自己来做这件事情.首先开启挖矿:
此时需要等待一段时间,以太坊节点会生成挖矿必须的数据,这些数据都会放到内存里面. 在数据生成好之后,挖矿就会开始,稍后就能在控制台输出中看到类似:
第六步 停止挖矿(可选)
当生成DAG结束,提示已经挖出至少一个矿以后,我们需要停止挖矿(当然,你也可以不停,就是会一直输出)
第七步 部署在其他节点上
现在,你已经成功部署了一个智能合约,当运行以下代码时:
命令行上会出现如下返回结果:
好了,我们的第一个智能合约程序 "Hello World!" 已经完成了,但是目前它只有一个节点!
第八步 部署在其他节点上
为了使得其他人可以运行你的智能合约,你需要两个信息:
- 智能合约地址Address
- 智能合约ABI(Application Binary Interface),ABI其实就是一个有序的用户手册,描述了所有方法的名字和如何调用它们。 我们可以使用如下代码获得其ABI和智能合约地址:
然后你可以实例化一个JavaScript对象,该对象可以用来在任意联网机器上调用该合约,此处ABI和Address是上述代码返回值。
第九步 自毁程序
一个交易需要被发送到网络需要支付费用,自毁程序是对网络的补充,花费的费用远小于一次常用交易。
你可以通过以下代码来检验是否成功,如果自毁程序运行成功以下代码会返回0:
注册有任何问题请添加 微信:MVIP619 拉你进入群
打开微信扫一扫
添加客服
进入交流群
发表评论