首页 > 世链号 > 使用 imToken 钱包还能调用合约!
币小葱  

使用 imToken 钱包还能调用合约!

摘要:今天在看以太坊多重签名时,发现都是通过智能合约来实现的(类似投票合约),那么就有一个问题,主流的钱包如 imToken,怎么调用智能合约呢。

一、imToken 能调合约?

今天在看以太坊多重签名时,发现都是通过智能合约来实现的(类似投票合约),那么就有一个问题,主流的钱包如 imToken,怎么调用智能合约呢。

以前使用 imToken 钱包都是直接转账,从未想过使用 imToken 钱包来调合约,今天研究了下,发现其实挺简单的,这里分享出来。

二、是的,能!

无论是转账、部署合约还是调用合约,其本质都是向以太坊网络发起一笔交易,这笔交易是使用以太坊账号私钥对请求数据进行签名。

在 imToken 钱包里,提供了高级选项模式,允许用户填写交易的请求数据。因此,只需要将所调用的合约方法及参数进行 abi 编码,得到十六进制数据即可。

还需要 abi 编码,是什么鬼,我不会啊。

没关系,这里有一个很好用的在线工具,可以自动对所请求的合约方法和参数进行编码。

工具地址:https://abi.hashex.org

三、口说无凭,唯有实践

这里我耗费巨资(0.00045 Ether)进行了实践,在 imToken 中转账以太币的方式调用一个 ERC20 合约的 transfer 方法,进行 token 转账。

1、来个合约

这里我用的是一个 ERC20 的合约,合约代码详见:https://cn.etherscan.com/address/0x286f0322164f532f388dac8bce2a5101d92a3475#code

在这里可以获取到合约的 ABI 文件,如果没有 ABI 文件也没关系,只要能确定你需要调用的合约的方法,比如转账的方法为 transfer(address_to, uint256_value)

根据方法及参数填写相关信息,如下图所示。

涨知识 | 使用 imToken 钱包还能调用合约!

计算得到的 ABI 编码是由三部分组成:

•函数选择器 (4 字节),a9059cbb,计算方法是 bytes4(keccak256(“transfer(address, uint256)”)) == 0xa9059cbb•第一个参数 address 值(32 字节),0000000000000000000000006e1c69d7692c3ed4d483a32b7a14d75b1c8ef552•第二个参数 uint256 值(32 字节),0000000000000000000000000000000000000000000000056bc75e2d63100000,为 100000000000000000000 的 16 进制

2、进击吧

选择 ETH 转账,其中:

•转账地址填写合约地址•转账的以太币数量,如果不需要向合约转账以太币时填写 0,我这里是转一个 ERC20 的 token,因此以太币数写 0•填写 GasPrice,一般填写 20gwei 就可以,数值越大,消耗的 Gas 越多,转账越快•填写 GasLimit,这个由所调用合约的方法决定,ERC20 的转账一般消耗 21000,我这里填写 30000,足够了•填写 data,hashex 工具计算的数据没有添加前缀 0x(表示 16 进制)

万事具备,进击吧!

涨知识 | 使用 imToken 钱包还能调用合约!

交易发送成功后,可以在以太坊浏览器上看到我们的交易,我这里的交易地址为:https://cn.etherscan.com/tx/0x9f4e92b764f86810c7a5fbce1c3ac64babada9fd4148806433a96e0393e5ead6

穷啊,给的 Gas 比较少,还在排队中 /::<

涨知识 | 使用 imToken 钱包还能调用合约!

掌握了这个技巧,我们就可以使用 imToken 钱包参与锁仓、投票、多重签名等等合约业务了。

奥利给!


本文作者:六天

来源链接:mp.weixin.qq.com

免责声明
世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。