今天无意中看到以前以太坊学习时记录的一篇发币笔记,同时以太坊系列正好缺一篇智能合约实战的文章,于是整理了下并以EOS代币以太坊智能合约为例讲述了整个部署调用流程,算是补全吧,有需要的自取。
安装MetaMask
用到了Chrome应用商店,科学上网是必须的,当然大家也可以通过下载插件文件离线安装。
进入主界面后可以选择网络,然后通过keystore和私钥方式导入钱包
如果要连接本地私有网络,geth需要增加 --rpccorsdomain参数
geth --networkid 15 --rpc --rpcaddr 0.0.0.0 --rpcapi personal,db,eth,net,web3,miner --nodiscover --rpccorsdomain --rpcport 8545 --rpccorsdomain *
浏览器打开在线编辑工具BrowserSolidity
https://remix.ethereum.org/ ,速度有点,可能还需要科学上网
编译发币智能合约并部署
下面我们就以EOS代币智能合约为例来实践,EOS代币智能合约代码可以在下面链接找到:
https://etherscan.io/address/0x8 ... eb3b3b78ecfdb0#code
拷贝里面的代码粘贴到BrowserSolidity即可,BrowserSolidity会自动编译。
然后我们就开始部署,部署有两种方式
1)MetaMask部署
我们点击Run选项选择Injected Web3,如果显示没有网络连接,请在MetaMask切换网络刷新。
然后点击Deploy和确认即完成部署。Account栏请选择你要发起合约部署的账号,部署合约的费用都会从这个账号
扣掉。
2)手工部署
将上面的代码输入到geth命令终端即可。
这里需要注意的是将web3.eth.accounts[0]改成你自己的钱包地址,且部署前先解锁
> personal.unlockAccount(eth.accounts[0])
调用智能合约的函数
EOS代币比较特殊,初始化后TotalSupply=0, 需要调用mint函数增加供应,下面就以mint为例来说明
也有很多方法
web3js等第三方库
这个网上有很多教程,我这里就不说了
使用BrowserSolidity
使用geth命令行
1) 使用abi构造合约结构
var dsauthContract = web3.eth.contract([{"constant":false,"inputs":
。。。。。。
[{"indexed":true,"name":"owner","type":"address"}],"name":"LogSetOwner","type":"event"}]);
上面的代码还是从BrowserSolidity拷贝的
2)使用合约地址创建合约实例
contractInstance = dsauthContract.at("0x692a70d2e424a56d2c6c27aa97d1a86395877b3a");
上面的地址是创建合约时返回的,就是智能合约的地址
3)调用mint, transfer方法
contractInstance.transfer(1000000000000, {from:eth.accounts[0]});
//eth.accounts[0]账号有EOS后,给accounts[1]转账
contractInstance.transfer(eth.accounts[1], 1000, {from:eth.accounts[0]});
---------------------
【转载】
作者:ITleaks
原文:https://blog.csdn.net/ITleaks/article/details/81697345
|
|