分享下Scroll合约交互的Key值如何得来的
March 8th, 2023

之前为大家分享了 scroll 存款代码交互教程,大家发现我的代码样例里有个key值,有点疑惑,这个值的计算我是怎么知道的。

讲真,先开始我也不知道,用小狐狸手动走了一遍流程发,马上我就写了代码模拟来测试下,去查 tx hash 发送状态有问题,Fail with error 'Insufficient msg.value' 报这个错误。我不信邪,又执行了几遍,还是这个错误。这会就要停下了,好好看下成功的交易并做对比。

存款失败的情况
存款失败的情况

通过这两个对比成功的tx hash 和代码执行失败的tx hash 那就是在 value 这个字段有区别,可以看到成功的 value 0**.01000004 和 失败的 value 0.015 它们之间存在这个值的0.**00000004的差别。

存款成功的,小狐狸跑的
存款成功的,小狐狸跑的

不要着急,再去看下合约地址,看看其他人的交易是不是也是这样。仔细看下图,发现没有,是不是有个相同点,目前这个key=0.0000008。那么在存款时就可以得到实际发送的

amount += key

成功交易的hash分析
成功交易的hash分析

马上再测试,发现新的tx 状态ok的,可以成功存款了。

Input Data还需要在分析下吗?还想听。好吧 分析下吧,很简单,第一参数是amount,不加key的哈。第二个是固定参数(其他成功tx都是这个参数,直接上)

InputData分析
InputData分析

课外题: 如果这个key又变了怎么办呢?有知道的吗?我批量交互不能总上浏览器看吧,看了再来改,感觉有点low。

总结

  • 细心找失败tx和成功tx之间的不同

原理分析教程

往期代码交互教程

我的 推特 Lens Link3 Github

Subscribe to junjie9021
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.
More from junjie9021

Skeleton

Skeleton

Skeleton