我try 了两种不同的方法来计算Base Chain上的合同,并且我已经在Base Chain上部署了一个合同来验证.
def predict_contract_address(deployer_address, nonce):
encoded = Web3.solidity_keccak(['address', 'uint256'], [deployer_address, nonce])
contract_address = Web3.to_checksum_address(encoded[-20:])
return contract_address
此方法返回0xc989DF16dc2026D73f018158cEad7AAf3508Dd3e,该0xc989DF16dc2026D73f018158cEad7AAf3508Dd3e与实际地址不匹配.以下是第二种方法:
def pca(deployer_address, nonce):
return to_checksum_address(keccak(rlp.encode([deployer_address, nonce]))[-20:])
这种方法根据指南返回地址0xdEca8F8D505Ba2BF3B9d4120f66B3Ec9e49393fb,这也是错误的.两者都使用随机数0进行计算.发送实际合同部署哈希-0x 1 c2 e239387 c9 e6609 f1 e82900080 ab 9606 e42 d5 c33074 d1 e95431817698152 e0