gpt4 book ai didi

ethereum - 为什么两个 Uni V3 池有不同的字节码?

转载 作者:行者123 更新时间:2023-12-04 13:24:45 35 4
gpt4 key购买 nike

我正在尝试评估两个智能合约(address_1 和 address_2)是否都是使用 web3 的 Uni V3 池。
我的想法是按如下方式请求每个合约的运行时字节码:

sc_i_bytecode = w3.eth.getCode(w3.toChecksumAddress(address_i))
然后将它们与我知道代表 Uni V3 池的另一个智能合约的字节码进行比较。我 知道 address_1 和 address_2 上的两个联系人都是 Uni V3 池,但是当我得到上面的字节码时,它们不匹配(即 sc_1_bytecode != sc_2_bytecode ,尽管它们都是由同一个 Uni V3 工厂实现的?)。它们似乎也不匹配我的 Uni V3 引用字节码的字节码。我只是想知道我是否遗漏了什么,而那些确实可以有不同的字节码?
谢谢

最佳答案

您可以在智能合约上调用 factory() 方法
https://etherscan.io/address/0xcbcdf9626bc03e24f779434178a73a0b4bad62ed#readContract
并验证它是否与 v3 工厂合约的地址匹配:
https://etherscan.io/address/0x1f98431c8ad98523631ae4a59f267346ea31f984
在您的两个示例池中, factory() 方法返回相同的 v3 工厂契约(Contract)地址:
0x6c6Bc977E13Df9b0de53b251522280BB72383700
0xcbcdf9626bc03e24f779434178a73a0b4bad62ed
etherscan上合约代码的方法:

interface IUniswapV3PoolImmutables {
/// @notice The contract that deployed the pool, which must adhere to the IUniswapV3Factory interface
/// @return The contract address
function factory() external view returns (address);


至于你为什么他们有不同的字节码的问题 - 我不是 100% 确定。可能与设置有关? (也从 etherscan 中提取)
{
"optimizer": {
"enabled": true,
"runs": 800
},
"metadata": {
"bytecodeHash": "none"
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"abi"
]
}
},
"libraries": {}
}

关于ethereum - 为什么两个 Uni V3 池有不同的字节码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69258462/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com