Base Chain合约地址计算咨询:两种算法结果与实际不符
合约地址计算问题(Base Chain)
我尝试了两种方法计算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,与实际地址不符。
第二种方法
代码实现:
def pca(deployer_address, nonce): return to_checksum_address(keccak(rlp.encode([deployer_address, nonce]))[-20:])
该方法返回地址:0xdEca8F8D505Ba2BF3B9d4120f66B3Ec9e49393fb,同样与实际地址不符。
补充信息
- 两种计算均使用nonce值为0
- 实际合约部署交易哈希:
0x1c2e239387c9e6609f1e82900080ab9606e42d5c33074d1e95431817698152e0
内容的提问来源于stack exchange,提问作者Spencer
相关产品推荐
相关产品推荐

