Protocol
池getwork“目標”?
在 getwork 請求中,bitcoind 發送一個與目前塊的比特值相對應的目標。主要礦池發送的目標是否與人們對比特幣的預期相同,“1”目標的難度,或者其他什麼?
我剛剛啟動了一個連接到slush’s pool的礦工。我的
getwork
礦工發送的回復是這樣的:{"id": "1", "result": {"hash1": "00000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000010000", "data": "00000001c5993e03c08cea1b78a2190865f68698c069a8033d60e5e70000082a00000000e0884a966424aac62b4997dc0bae1c60fab2ba12887fa842f07c9cacaf24b4534f3b53931a0c290b00000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000", "midstate": "390b85042008bac15b6ce310d791c8612610a0c5ee441b252ee6abee70bf742a", "target": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000" }, "error": null }
它給我的目標是 64 個十六進制數字長。這大約是 2^256,因此大於2^(256-32)-1 的最大目標。然後我意識到目標是’little-endian’,這意味著它是逐字節向後的。反轉它給出:
00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
這恰好是最大目標 2^(256-32)-1。
所以 slush 的池子至少要求我解決難度 1 的塊。
我知道P2Pool將難度設置得更高,因此 P2Pool 共享鏈上的共享大約每 10 秒就會被找到一次。目前為了實現這一點,它很難完成工作
609.82
,但它會根據最近找到 P2Pool 共享的速度每隔幾秒更改一次。編輯:我剛剛檢查過,結果我錯了。這是
getwork
我正在執行的 P2Pool 實例中的一個:{"error": null, "jsonrpc": "2.0", "id": 0, "result": {"hash1": "00000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000010000", "target": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000", "submitold": true, "identifier": "15578", "data": "000000011e90271e3071e27e4b16142162e54a68776176deeef5fe6e000001a800000000534e460eb3798f9d4149c56dddf486610512007201745fefd7661cedbde821fa4f3b5c461a0c290b00000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000", "midstate": "acb6f89399060ab343bbd17e3a6cccb89c2211af189bec8da15284a1d5e87b29" } }
請注意,目標與 slush 的池中的目標相同。它代表難度為 1。因此礦工認為它正在尋找難度為 1 的份額,但 P2Pool 拒絕礦工送出的任何難度小於 的份額
609.82
,或當時礦池的難度。