主页 > imtoken苹果钱包 > 根据以太坊账号推测私钥 1、imToken可以调整合约吗?

根据以太坊账号推测私钥 1、imToken可以调整合约吗?

imtoken苹果钱包 2023-12-08 05:14:34

1、imToken可以调整合约吗?

今天在看以太坊的多重签名的时候,发现都是通过智能合约(类似投票合约)实现的根据以太坊账号推测私钥,那么就有一个问题,imToken等主流钱包是如何调用智能合约的。

以前都是用imToken钱包直接转账。 没想过用imToken钱包调合约。 今天研究了一下,发现其实挺简单的,就分享到这里吧。

两个,是的,可以!

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

在imToken钱包中,提供了高级选项模式,允许用户填写交易请求数据。 因此,只需要对调用的合约方法和参数进行abi-encode,即可得到16进制数据。

它还需要abi编码,什么鬼,我不知道。

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

工具地址:

3.口才没有证明,只有实践

这里我在实践中花了很多钱(0.00045 Ether),调用ERC20合约的transfer方法,通过在imToken中转账Ether来进行token转账。

1.签订合同

这里我使用了一个ERC20合约,合约代码详见:#code

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

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

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

计算出的ABI编码由三部分组成:

• 函数选择器(4字节),a9059cbb,计算方式为bytes4(keccak256("transfer(address, uint256)")) == 0xa9059cbb • 第一个参数地址值(32字节),0000000000000000000000006e1c69d7695c3b2d483a482b5 • 第二个值参数uint256 (32字节), 0000000000000000000000000000000000000000000000056bc75e2d631000000000000000000000000的十六进制

2.攻击

选择 ETH 转账,其中:

• 转账地址填写合约地址 • 转账的以太币数量,如果向合约转账以太币时不需要填写0,我这里转的是一个ERC20代币,所以以太币数量写0 • 填写GasPrice,一般填写20gwei,数值越大根据以太坊账号推测私钥,消耗的Gas越多,转账速度会更快。 • 填写GasLimit,由调用合约的方法决定。 ERC20转账一般消耗21000,我这里填30000,够用了 • 填数据,hashex工具计算出来的数据不加前缀0x(表示十六进制)

万事俱备,出击吧!

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

交易发送成功后,我们就可以在以太坊浏览器上看到我们的交易了。 我这里的交易地址是:

可怜,给的gas比较少,还在队列中/::<

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

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

惊人的!