在gath控制台部署调用智能合约

登录

personal.unlockAccount(eth.coinbase)

解锁账户默认解锁300s
如果没有账户则需要注册
部署合约
要部署合约首先需要录入合约的bytecode

var code="0x合约的bytecode"

一定要在bytecode前加上0x否则会导致录入失败
录入智能合约的ABI

var abi=JSON.parse('ABI')

在remix在线编译器中编译solidity源码后可以得到bytecode和ABI
在这里插入图片描述录入需要的ABI为remix中复制下来的ABI删除压缩并转义后的代码。
压缩转义可以使用

http://www.bejson.com/zhuanyi/

录入完成后需要估算部署合约要用的gas

eth.estimateGas({data: code})

部署合约

var myContract = eth.contract(abi)
var contract1=myContract.new({from:eth.accounts[0],data:code,gas:1200000})//gas需要大于估算的gas数

因为这个私链上现在就只有我们自己这一个用户。没有其它矿工来挖矿把这个合约写入链上。所以我们要自己挖一下矿把合约写入链上。

txpool.status
//这个命令可以看到有没有待挖矿的交易。我们可以看到有一个。
miner.start()
miner.stop()
//挖一会矿再停下来。
txpool.status
//待挖矿交易变为0。就说明合约已经写入链上了。
contract1.address
//调用这个可以看到我们部署到链上的合约的地址了。这个值保存下来。以后要用到。

重新启动geth控制台时,调用原来部署好的智能合约要通过合约地址

var abi=JSON.parse(‘合约的abi’)
//录入ABI。格式同上一节
myContract = eth.contract(abi)
//创建类
contract = myContract.at(address)
//创建合约实例,这里要指名部署过的合约地址。地址先前已经保存。

调用合约
调用需要付费的合约

contract.函数名.sendTransaction("参数1","参数2","参数...",{from:"0xe473d288faf6c2d1812dbb759d7423605c7d1a58"})

调用不需要付费的合约

contract.函数名.call("参数1","参数2", "参数...")
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值