【问题标题】:Compute uniswap pair address via python通过python计算uniswap对地址
【发布时间】:2021-06-16 23:37:02
【问题描述】:

我正在尝试计算 Uniswap 对的(离线,即没有 http 请求)地址, 使用 python、web3 和 eth-abi 库,基于 thissolidity 例子。

address factory = 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f;
address token0 = 0xCAFE000000000000000000000000000000000000; // change me!
address token1 = 0xF00D000000000000000000000000000000000000; // change me!

address pair = address(uint(keccak256(abi.encodePacked(
  hex'ff',
  factory,
  keccak256(abi.encodePacked(token0, token1)),
  hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f'
))));

有一些想法:

hexadem_ ='0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f'
hexadem_1 = 0xff
abiEncoded_1 = encode_abi_packed(['address', 'address'], (  token_0, token_1 ))
salt_ = web3.Web3.solidityKeccak(['bytes'], ['0x' +abiEncoded_1.hex()])
abiEncoded_2 = encode_abi_packed(['bytes', 'address', 'bytes32'], (bytes(hexadem_1), factory, salt_))
resPair = web3.Web3.solidityKeccak(['bytes','bytes'], ['0x' +abiEncoded_2.hex(), hexadem_])

有人可以建议我,有什么问题,应该考虑哪种方式?

【问题讨论】:

    标签: python hex byte solidity


    【解决方案1】:

    首先,resPair 太长,不能作为合约地址。 规则可以通过阅读来解释:https://eips.ethereum.org/EIPS/eip-1014

    还要确保按字母顺序输入这两个地址。使用 .sort() 函数来执行此操作。

    这是正确的代码:

    hexadem_ ='0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f'
    hexadem_1 = 0xff
    factory = '0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f' 
    abiEncoded_1 = encode_abi_packed(['address', 'address'], ('0x7825e833d495f3d1c28872415a4aee339d26ac88', '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' )) #these two addresses to be changed as fit. Currently they are TLOS and WETH
    salt_ = w3.solidityKeccak(['bytes'], ['0x' +abiEncoded_1.hex()])
    abiEncoded_2 = encode_abi_packed([ 'address', 'bytes32'], ( factory, salt_))
    resPair = w3.solidityKeccak(['bytes','bytes'], ['0xff' + abiEncoded_2.hex(), hexadem_])[12:]
    resPair
    

    希望这会有所帮助!我发现这是一个有趣的挑战:)

    【讨论】:

      猜你喜欢
      • 2021-09-30
      • 1970-01-01
      • 2021-09-26
      • 2021-05-21
      • 2015-08-19
      • 1970-01-01
      • 2012-03-16
      • 2011-06-28
      • 1970-01-01
      相关资源
      最近更新 更多