Keccak
在 python 中執行 Solidity 的 keccak256
我想執行
keccak256(abi.encodePacked(challenge_number, msg.sender, nonce))
Solidity,nonce 是 uint256,challenge_digest 是 bytes32,challenge_number bytes32,testTarget 是 uint。這在 python 中的類比是什麼?我已經通過 Python 與我的元遮罩帳戶連接到契約。
Web3.solidityKeccak(abi_types, value)應該做的工作
例子:
Web3.solidityKeccak(['bool'], [True]) # HexBytes("0x5fe7f977e71dba2ea1a68e21057beebb9be2ac30c6410aa38d4f3fbe41dcffd2") Web3.solidityKeccak(['uint8', 'uint8', 'uint8'], [97, 98, 99]) # HexBytes("0x4e03657aea45a94fc7d47ba826c8d667c0d1e6e33a64a036ec44f58fa12d6c45") Web3.solidityKeccak(['uint8[]'], [[97, 98, 99]]) # HexBytes("0x233002c671295529bcc50b76a2ef2b0de2dac2d93945fca745255de1a9e4017e") Web3.solidityKeccak(['address'], ["0x49EdDD3769c0712032808D86597B84ac5c2F5614"]) # HexBytes("0x2ff37b5607484cd4eecf6d13292e22bd6e5401eaffcc07e279583bc742c68882") Web3.solidityKeccak(['address'], ["ethereumfoundation.eth"]) # HexBytes("0x913c99ea930c78868f1535d34cd705ab85929b2eaaf70fcd09677ecd6e5d75e9")