Remix+Geth 实现智能合约部署和调用详解
Remix编写智能合约
编写代码
Remix 在线编辑器
https://ethereum.github.io/browser-solidity/#optimize=false&version=soljson-v0.4.19+commit.c4cbbb05.js0
记得在setting里选择对应版本
在线调试
当complie没出现问题时, 就可以在线运行调试了
实现部署
点击Run, create, 实现部署
调用接口
在部署完之后会出现下面界面, 包括合约名字
如何调用接口?
只需要在对应的接口上输入参数, 调用的话,点击前面的接口名就能在下面看到输出
经过以上两步 我们应该已经调试好合约, 下面就是部署在私有链上了
Geth实现私有链部署合约和调用接口
部署合约
首先在ubantu安装好Geth环境, 配置好私有链,具体可参考此博客
https://blog.csdn.net/qq874455953/article/details/83692732
然后我们打开web3命令行
然后在Remix的complies界面点击detail
找到remix为我们自动生成的部署合约代码
复制此段代码 然后放到web3命令行
注意 生成的默认是第一个账户发起的
from: web3.eth.accounts[0]
需要解锁此用户才可以
personal.unlockAccount(eth.accounts[0])
然后挖矿确认 部署合约
miner.start();admin.sleepBlocks(1);miner.stop()
显示已经部署成功, 而且显示了合约的地址, 地址需要复制下来后面需要用
调用合约
获得合约实例
方法1:
其实当你在web3命令行运行remix赋值的命令语句时, 此时已经是有一个实例了, 对于我上面的例子,此时的实例就是 fitbody , 注意不是fitbodyContract , fitbodyContract 相当于一个类, 而fitbody是合约类生成的合约实例, 我们用的就是合约实例。这时的fitbody相当于下文的MyContract
这是方法2:
调用合约首先需要获得合约的实例,通过实例调用
var ac0 = web3.eth.accounts[0];
var MyContract = web3.eth.contract(<合约abi>).at(<合约地址>);
合约abi 通过编译本地合约代码获得
把remix的合约放到ubantu里 保存为code.sol
solc --abi code.tol
需要自行安装solidity编译器
而合约地址刚才已经保存。
通过实例调用合约接口
获得实例MyContract后可以通过下面方法调用
一般是需要先unLock调用的地址账户的
这种是对内容进行修改,或者合约需要发送以太币时的调用方式,执行完可获得交易的hash
MyContract.<你的合约接口, 这里一般会自动补全>.sendTransaction(<参数列表>, {from:<调用合约账户>, value : <附送的以太币>, gas: 10000000});
这种是进行查询时的接口调用方式
MyContract.<接口名>.call(<参数>);