当我打电话getwork我bitcoind服务器上,我得到如下:(比特币)从网络函数计算哈希值 - 怎么做?
./bitcoind getwork
{
"midstate" : "695d56ae173bbd0fd5f51d8f7753438b940b7cdd61eb62039036acd1af5e51e3",
"data" : "000000013d9dcbbc2d120137c5b1cb1da96bd45b249fd1014ae2c2b400001511000000009726fba001940ebb5c04adc4450bdc0c20b50db44951d9ca22fc5e75d51d501f4deec2711a1d932f00000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000",
"hash1" : "00000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000010000",
"target" : "00000000000000000000000000000000000000000000002f931d000000000000"
}
这个协议似乎并没有被记录在案。我如何根据这些数据计算散列。我认为这些数据是小端的。那么第一步是将所有东西都转换成大端?一旦完成,我计算数据的sha256。数据可以分为两个64字节的块。第一个chuck的散列由中间状态给出,因此不必计算。
因此,我必须用sha256对中间块#2进行散列,使用中间状态作为初始散列值。一旦完成,我最终得到一个块32的散列,它是32个字节。我再一次计算这个块的哈希以获得最终的哈希值。
那么,我是否会将所有东西都转换成小端并提交工作?
什么是hash1用于?