增长你的知识 | 使用imToken钱包也能调用合约!
imToken 是一款全球领先的区块链数字资产管理工具[ZB],帮助你安全管理BTC, ETH, ATOM, EOS, TRX, CKB, BCH, LTC, DOT, KSM, FIL, XTZ 资产,同时支持去中心化币币兑换功能 ...
1.合同可以调整吗?
今天在看以太坊多重签名的时候,发现都是通过智能合约(类似投票合约)来实现的。那么有一个问题:主流钱包是怎么调用智能合约的呢?
以前都是用钱包直接转账,从来没想过用钱包来调合约,今天研究了一下,发现其实挺简单的,所以就分享在这里。
2. 是的,你可以!
无论是转账、部署合约还是调用合约,本质都是向以太坊网络发起交易,该交易使用以太坊账户私钥对请求数据进行签名。
在钱包中提供了高级选项模式,允许用户填写交易的请求数据,因此只需要将调用的合约方法和参数编码成abi,即可得到十六进制数据。
我还需要 abi 编码,这到底是什么?我不知道该怎么做。
没关系,有一个非常好用的在线工具,可以自动对请求的合约方法和参数进行编码。
工具地址:
3. 光说不练是不够的,只有实践才能证明
这里我花了巨额资金(0.00045 Ether)进行练习,调用一个ERC20合约方法,通过转账Ether来转移Token。
1. 签订合同
这里我使用了一个ERC20合约,合约代码如下:#code
你可以在这里获取合约的ABI文件,没有ABI文件也没关系,只要你能确定需要调用的合约方法就可以了,比如转账方法(_to,)。
根据方式及参数填写相关信息,如下图所示。
计算出来的ABI代码由三部分组成:
• 函数选择器(4 个字节),计算方式为 ((“(, )”)) == • 第一个参数值(32 个字节),52 • 第二个参数值(32 个字节),十六进制
2.进攻!
选择ETH转账,其中:
• 填写转账地址的合约地址。 • 需要转出的以太币数量,如果不需要给合约转以太币,就填写0,我这里转的是ERC20的token,所以以太币数量为0。 • 填写,一般填写,数值越大,消耗的gas越多,转账越快。 • 填写,这个由调用的合约的方法决定,ERC20转账一般消耗21000,我这里填写30000,已经够用了。 • 填写数据imToken钱包,工具计算出来的数据没有加前缀0x(表示十六进制)
一切准备就绪,进攻!
交易发送成功后,就可以在以太坊浏览器上看到我们的交易了,我这里的交易地址是:
可怜,油不够了,还在排队/::<
掌握这项技术之后imToken,我们就可以使用钱包参与锁定,投票,多重签名等合约服务。
惊人的!