在EIP 1014 (create2)的澄清部分中,它说“这个EIP使碰撞成为可能。”
它没有解释冲突是如何发生的,但它链接到EIP 684 (防止覆盖契约),后者说:“目前这不是一个问题,因为如果不花费超过2^80的计算努力来查找地址冲突,就无法两次创建具有相同地址的契约,但是对于#86,这种情况将发生变化。”
所以现在我有点糊涂了。是create2现在需要少于2^80才能找到碰撞吗?或者这句话仅指当一个create2被用相同的参数调用两次,从而得到相同的地址时的情况?
发布于 2019-10-04 19:50:42
简单的 !
标准的ᴄʀᴇᴀᴛᴇ操作码使用呼叫地址的当前计数器来计算契约的目标地址。无论合同的订立是否成功,合同的现值仍在增加,这意味着旧的现在不能再使用了。
因此,在ᴄʀᴇᴀᴛᴇ2之前,您需要找到一个加密哈希冲突,以便将契约的代码部署到相同的地址。
这是因为这是不太可能的,ᴇɪᴘ 684在ᴄʀᴇᴀᴛᴇ2之前没有被考虑过,因为ᴄʀᴇᴀᴛᴇ2没有使用这个帐号来计算部署地址。
您在这里应该理解的一点是,使用相同的参数两次调用ᴄʀᴇᴀᴛᴇ2时会产生相同的部署地址,而对普通的ᴄʀᴇᴀᴛᴇ执行相同的操作则不会产生相同的部署地址。
https://ethereum.stackexchange.com/questions/69069
复制相似问题