Mining-Pools
礦工多久更新一次他們的區塊交易列表?
假設一個區間沒有找到區塊,我們是否知道典型礦工多久用來自記憶體池的新交易更新他的區塊交易列表?
我發現一個參考表明預設更新時間是 60 秒,但我不確定池使用什麼軟體來生成它們的塊交易列表。
歡迎來到本站!
這取決於所使用的協議。
一些協議讓池規定交易列表的更新頻率,而另一些協議則由挖礦客戶端定義。
地層
在 Stratum 中,當礦池看到一個新區塊或經過一定時間時,它會向礦工發送一個新的 merkle 分支。預設情況下,它每60 秒更新一次事務列表。
當然,這只是一個預設值;池操作員可以改變這一點。
GBT
在帶有 longpoll 的 getblocktemplate 中,池在塊更改時或 60 秒後發送新工作。(至少對於比特幣來說。)
// Wait to respond until either the best block changes, OR a minute has passed and there are more transactions ... checktxtime = boost::get_system_time() + boost::posix_time::minutes(1);
在沒有 longpoll 的 getblocktemplate 中,礦工每隔一段時間就會尋找新的工作。“每隔一段時間”是礦工定義的。
cgminer 每 60 秒執行一次:
static void gen_gbt_work(struct pool *pool, struct work *work) ... if (now.tv_sec - pool->tv_lastwork.tv_sec > 60)
bfgminer 是使用者可配置的,但預設為 60 秒:
--scan-time <arg> Upper bound on time spent scanning current work, in seconds (default: 60)
結論
網路發現新區塊後每 60 秒更換一次工作是迄今為止最常見的做事方式。