IRC meeting summary for 2017-05-11

概覽


註記 / 短議題

  • Sipa 和 Gmaxwell 一直在進行一項提案,以一種每個輸入和輸出只需幾微秒成本的方式始終維護 UTXO 承諾雜湊。這對於使 gettxoutsetinfo 即時化,或從其他人的 UTXO 集同步,或作為稍後軟分叉的基礎都很有用。有 3 種實作方式,都有不同的效能和安全性權衡。會議後幾天,郵件列表發布了一篇文章,解釋了不同的方法和選項。

主要議題

  • 每 txo utxo 資料庫
  • 手續費目標/硬幣選擇檢修

每 txo utxo 資料庫

背景

自 Bitcoin Core v0.8 以來,我們對鏈狀態資料庫及其快取使用了每交易模型。這意味著資料庫實際上是從 txid 到該交易未花費輸出列表的對應。PR #10195 將其更改為從輸出點((txid,index)對)到該輸出點的單獨未花費輸出的對應。

聚合每個交易的輸出的原始原因是為了節省空間:這樣,我們可以避免在多個輸出中重複 txid 和交易元資料。然而,LevelDB 在內部使用一種編碼,省略鍵中重複的前綴位元組,因此,重複 txid 並不是很重要。

使用每 txout 模型有許多優點:

  • 更簡單的程式碼。
  • 避免反序列化和序列化未使用輸出的 CPU 開銷。
  • 更可預測的記憶體使用。
  • 更容易適應各種快取刷新策略。

缺點:

  • 磁碟上的表示略大,有時記憶體中的表示更大(當快取中有同一 txid 的多個輸出時,這變成可選的)。

會議意見

測試結果非常有希望,如這張圖所示。Sipa 注意到在測試中鏈狀態從 2.2GB 增加到 2.7GB。

Gmaxwell 認為它應該很快合併以在 master 中進行更多測試,但它需要更多的測試/審查。BlueMatt 正在進行一半的審查,cfields 通過了審查,但不夠自信以 ACK 它。

仍需要進行一些程式碼清理,並為升級程序提供更好的使用者介面,因為啟動時會有一次性從舊資料庫升級到新資料庫,需要幾分鐘。

會議結論

  • 審查 PR #10195(將鏈狀態資料庫和快取切換到每 txout 模型)

手續費目標/硬幣選擇檢修

背景

硬幣選擇是一種演算法,它找出如何花費你錢包中的硬幣。應該使用哪些來資助交易。這是在不創建非標準交易(通過超過某些大小,或創建粉塵輸出),試圖找到低手續費配置,給使用者盡可能多的隱私和縮小整體 UTXO 集大小之間的平衡。

多年來已經進行了許多改進,但仍然有偶爾出現的問題。Instagibbs 正在進行更改手續費目標演算法的工作,以考慮考慮的輸入的「有效價值」,而不是簡單地嘗試達到絕對手續費,看看它是否失敗,然後在迴圈結束時使用估算的總手續費再次嘗試。

會議意見

Gmaxwell 對在沒有清掃粉塵策略的情況下進行變更感到有點不安,他擔心可能會有意外的 UTXO 計數爆炸。

隨著對話更深入到手續費目標和硬幣選擇的一般方法,Morcos 提到了「手續費智慧」的想法,即當手續費低時可以包含更多輸入。

Wumpus 喜歡在低手續費率期間清理具有負值的 UTXO 的想法,但補充說如果一開始就不創建那些會更好。Morcos 提到他的 PR #9343,它試圖做到這一點。

Bitcoin Core 的設計目標是永遠不要創建小於 0.01BTC 的找零輸出,除非錢包幾乎被交易耗盡,但這個目標根本沒有實現。

向前邁出的一個好步驟也是將硬幣選擇從 wallet.cpp 中解剖和模組化。

會議結論

  • 已經提出了許多關於手續費目標和硬幣選擇方法的想法,將在會議外進一步討論。

高優先級審查

Instagibbs 想加入 PR #10333,它修復了使用者報告的一些手續費問題,但不像硬幣選擇檢修那麼極端。

多錢包有一些審查意見,但是 PR 取決於上週加入到高優先級審查的 PR #9494

Jonasschnelli 想加入 PR #10240(HD 錢包自動恢復功能),應該包含在 0.15 中。

參與者

IRC nick Name/Nym
jonasschnelli Jonas Schnelli
sipa Pieter Wuille
cfields Cory Fields
luke-jr Luke Dashjr
kanzure Bryan Bishop
gmaxwell Gregory Maxwell
BlueMatt Matt Corallo
instagibbs Gregory Sanders
wumpus Wladimir van der Laan
murchandamus Mark Erhardt
morcos Alex Morcos
sdaftuar Suhas Daftuar

免責聲明

本摘要是在沒有任何討論參與者輸入的情況下編寫的,因此任何錯誤都是摘要作者的責任,而非討論參與者。