【发布时间】:2021-09-30 01:01:59
【问题描述】:
我正在尝试按照this Solidity 示例使用 web3js 离线计算 Uniswap 对的地址:
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'
))));
我在js中有以下函数来计算对地址:
function getPair(token0, token1) {
const hexadem = '0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f';
const factory = '0xBCfCcbde45cE874adCB698cC183deBcF17952812';
let salt = web3.utils.soliditySha3(token0, token1);
let pair = web3.utils.soliditySha3('0xff', factory, salt, hexadem);
console.log(pair);
return pair
}
这是上述 Solidity 示例的正确实现吗?当我使用两个令牌地址运行代码时,我得到一个字符串太长而不能成为一对地址。有什么想法吗?
【问题讨论】: