首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >六字节与python字节

六字节与python字节
EN

Ethereum用户
提问于 2020-02-29 19:29:55
回答 1查看 397关注 0票数 1

我试图为下面的函数找到python模拟

实实

代码语言:javascript
运行
复制
function getMineDigest(uint256 nonce, bytes32 challenge_digest, bytes32 challenge_number) public view returns (bytes32 digesttest) {
        bytes32 digest = keccak256(abi.encodePacked(challenge_number, msg.sender, nonce));

        return digest;
    }

我以为蟒蛇的模拟应该是

代码语言:javascript
运行
复制
web3.solidityKeccak(['bytes32','address','uint256'], [challenge_number, account, nonce])

但是当我从python打电话给合同时

代码语言:javascript
运行
复制
getMineDigest(nonce, challenge_number, challenge_number).call()
output > b'S\x18\x0f\xc1\xf4\x99\\\xb7%N\x12\xf5\x94Ea\xb6\x08\x9a\xe4\x8d\xabD\xb6;#\xe3\xbf\xe9\x01\xef\x1b\xab'

当我运行python模拟程序时

代码语言:javascript
运行
复制
web3.solidityKeccak(['bytes32','address','uint256'], [challenge_number, account, nonce])

output > HexBytes('0xf44ce7626e2cb58df5fec54527ae88e1440661f4544fb5312fa79c35c216e45e')

它看起来像是一个是python字节,另一个是十六字节?这是唯一的区别吗?

EN

回答 1

Ethereum用户

发布于 2020-02-29 20:18:46

您提供给这两个函数的数据一定有问题,不可能完全相同。你可以试试这个。

混炼中创建一个契约:

代码语言:javascript
运行
复制
pragma solidity ^0.6.3;

contract Test {
    function getHash(bytes32 challenge, address adr, uint256 nonce) external pure returns (bytes32) {
        return keccak256(abi.encodePacked(challenge, adr, nonce));
    }
}

调用函数getHash(.)具有以下参数:"0x1f1e1d1c1b1a191817161514131211100f0e0c0d0b0a09080706050403020100", "0xCA35b7d915458EF540aDe6068dFe2F44E8fa733c", 42

调用的返回值:"0xec8bd2c257c7079fddc12dbd80a9512f07d66f41f52e4ec65d720523e245e88d"

使用web3执行等效的python代码(我使用了web3.__version__ 5.6.0):

代码语言:javascript
运行
复制
from web3 import Web3
Web3.solidityKeccak(['bytes32', 'address', 'uint256'], ["0x1f1e1d1c1b1a191817161514131211100f0e0c0d0b0a09080706050403020100", "0xCA35b7d915458EF540aDe6068dFe2F44E8fa733c", 42])

结果:HexBytes('0xec8bd2c257c7079fddc12dbd80a9512f07d66f41f52e4ec65d720523e245e88d')

票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/80219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档