我试图重写PHP中的所有ethereum地址创建和Tx创建,我就快到了。我已经实现了一个sha3,但是现在我不知道它是否给了我正确的输出,因为在处理前缀十六进制字符时,似乎ethereum实现缺乏一致性,在下面的场景中,哪些场景具有这个sha3哈希的正确sha3。在我的php中,我已经生成了这个RPL散列(它是一个十六进制输出) PS,我知道output sha3 (Keccak)和标准sha3 sha3之间的区别。
现在,使用奇偶校验节点和web3js,我创建了一个sha3()。
设想方案1
web3.utils.sha3('ec0185055f9408bc82520c94145e99f7bc840f3ea42d9a64221f041f9955dca2880429d069189e000080038080')
或
web3.utils.sha3('ec0185055f9408bc82520c94145e99f7bc840f3ea42d9a64221f041f9955dca2880429d069189e000080038080',{encoding:'hex'})'0x9a8419514d3c7382a6dafc67adf18ac13b818687e9a074a0cee123e0f9a483d8‘
场景2
web3.utils.sha3('0xec0185055f9408bc82520c94145e99f7bc840f3ea42d9a64221f041f9955dca2880429d069189e000080038080')
'0xf1d622e8725ef0dd84e1e65239a0ecac4428b05a2ee0c219739e6e85eb57a8b6‘
设想3
使用以太
var util = require('ethereumjs-util');
var hashed = util.sha3('0xec0185055f9408bc82520c94145e99f7bc840f3ea42d9a64221f041f9955dca2880429d069189e000000038080')'0x0e79fdc47ef979edbbed33d347f42da74849149139db9d5a58a4038ae6bdc99c‘
设想4
(使用以太)
var util = require('ethereumjs-util');
var hashed = util.sha3('ec0185055f9408bc82520c94145e99f7bc840f3ea42d9a64221f041f9955dca2880429d069189e000080038080')'0x9a8419514d3c7382a6dafc67adf18ac13b818687e9a074a0cee123e0f9a483d8‘
发布于 2017-12-28 07:54:14
就是这个,假设您正在进行的是连续45个字节的哈希操作:
> web3.utils.sha3('0xec0185055f9408bc82520c94145e99f7bc840f3ea42d9a64221f041f9955dca2880429d069189e000080038080',{encoding:'hex'})
'0xf1d622e8725ef0dd84e1e65239a0ecac4428b05a2ee0c219739e6e85eb57a8b6'(原来,在Web3 1.0中,“编码:‘十六进制’”标志是可选的。以前不是这样的。
为了证实这一点,我编写了一个小LLL程序,以便从EVM获得一个权威的答案:
(returnlll
(seq
[0]:0xec0185055f9408bc82520c94145e99f7bc840f3ea42d9a64221f041f9955dca2
[32]:0x880429d069189e00008003808000000000000000000000000000000000000000
(return (keccak256 0 45))))运行它会给,
{"id":1,"jsonrpc":"2.0","result":"0xf1d622e8725ef0dd84e1e65239a0ecac4428b05a2ee0c219739e6e85eb57a8b6"}如上段所述。
我很确定这是正确的。它尽可能接近EVM,无需编写字节码。
在大多数其他示例(场景1和4)中,您正在散列ASCII字符串表示,可以使用本实用程序进行确认。我不知道场景3在处理什么。
发布于 2017-12-28 07:31:23
我很抱歉。我想我只是累了。我不知道为什么我不想在问之前做一些尝试和错误。所以我创建并试图根据所有的散列来广播TX
场景1 >>无效发件人。
场景2 >>发送成功。
景物3 >>发送成功。
场景4 >>无效发送方
所以决定使用场景2,因为我的php代码已经输出了,它的工作原理就像一种魅力。
https://ethereum.stackexchange.com/questions/34552
复制相似问题