美文网首页践行区块链
合约验证小技巧

合约验证小技巧

作者: Ashton | 来源:发表于2021-12-13 21:41 被阅读0次

我们在做合约验证的时候,如果合约是带构造函数的,并且合约是被优化过的,几乎不可避免的会碰到下面的问题。


image.png

因为事先浏览器并不知道我们的编译优化参数,无法准确填充所部署合约的构造函数参数。


image.png

正规的解决这个问题的办法,是要比较合约编译出来的字节码和合约部署交易的输入,因为构造函数参数会被放到合约部署交易输入的最后,两者相比较多出来的那部分就是验证合约时要填充的构造函数参数。

这里还有个很简单的小技巧,可以让你快速解决这个问题。

只需要把第一个 00000000000 之前的部分去掉就好。

举例说明,把下面的这段

Note: Unable to determine contructor arguments, please check and replace with correct values (43457263323044656c656761746f723a3a5f736574496d706c656d656e746174696f6e3a2043616c6c6572206d7573742062652061646d696e000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c000000000000000000000000f0700a310cb14615a67eec1a8dad5791859f65f100000000000000000000000061a43f8f65ef35d28e63eadb0224b08944d75afb00000000000000000000000000000000000000000000000000470de4df82000000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000001200000000000000000000000005ddc595fd33d7b2ab302143c420d0e7f21b622a000000000000000000000000c125cc8e28283afd02f908dd10f3ae415f3c5bb700000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000000946696c646120424e420000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000466424e420000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000)

变成下面这样就好了:

000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c000000000000000000000000f0700a310cb14615a67eec1a8dad5791859f65f100000000000000000000000061a43f8f65ef35d28e63eadb0224b08944d75afb00000000000000000000000000000000000000000000000000470de4df82000000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000001200000000000000000000000005ddc595fd33d7b2ab302143c420d0e7f21b622a000000000000000000000000c125cc8e28283afd02f908dd10f3ae415f3c5bb700000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000000946696c646120424e420000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000466424e420000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000

相关文章

  • 合约验证小技巧

    我们在做合约验证的时候,如果合约是带构造函数的,并且合约是被优化过的,几乎不可避免的会碰到下面的问题。 因为事先浏...

  • 公有链的本质挑战之三

    6月7日:(缺乏合约的形式化验证)3:缺乏合约的形式化验证智能合约的形式化验证仍然是一个未解决的巨大问题。首先,让...

  • K重交叉验证 和 网格搜索验证

    本文介绍Keras一些常见的验证和调参技巧,快速地验证模型和调节超参。 小技巧: CSV数据文件加载 Dense初...

  • 基于星云链的智能合约与Dapp(四)——编写并运行智能合约

    一般智能合约需要以下几个步骤:1.编写智能合约2.部署智能合约3.调用智能合约,验证合约执行结果 编写智能合约 N...

  • 什么是智能合约

    原文链接 1,什么是智能合约? 智能合约就是控制合约的协议 智能合约就是一种特殊协议,意在提供,验证或实施合同的履...

  • besu合约测试

    验证三个点:共有合约:是否可以进行私有交易私有合约:是否可以进行共有交易私有合约:是否可以部分方进行交易,类似qu...

  • Chainlink

    Chainlink功能主要有: 为智能合约获取加密货币价格; 生成可验证的随机数; 利用Chainlink合约库请...

  • 验证ETH智能合约

    tips:1. 合约的验证必须要求科学上网.2. 如果合约的构造函数需要传入参数,则必须要求输入合约的ABI3. ...

  • 什么是智能合约?

    一、什么是智能合约? 智能合约(英语:Smart contract )是一种旨在以信息化方式传播、验证或执行合同的...

  • 03智能合约

    智能合约(英语:Smart contract )是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允...

网友评论

    本文标题:合约验证小技巧

    本文链接:https://www.haomeiwen.com/subject/liysfrtx.html