Bitcoin Core 0.21.0

Bitcoin Core installation binaries can be downloaded from bitcoincore.org and the source-code is available from the Bitcoin Core source repository.

0.21.0 版本說明

Bitcoin Core 0.21.0 版本現已發布,可從以下位置下載:

https://bitcoincore.org/bin/bitcoin-core-0.21.0/

Download torrent

此版本包含新功能、各種錯誤修正和效能改善,以及更新的翻譯。

請使用 GitHub 的問題追蹤器回報錯誤:

https://github.com/bitcoin/bitcoin/issues

如需接收安全性和更新通知,請訂閱:

https://bitcoincore.org/zh_TW/list/announcements/join/

如何升級

如果您正在執行舊版本,請將其關閉。等待它完全關閉(在某些情況下可能需要幾分鐘),然後執行安裝程式(在 Windows 上)或直接複製 /Applications/Bitcoin-Qt(在 Mac 上)或 bitcoind/bitcoin-qt(在 Linux 上)。

可以直接從已達到 EOL 的 Bitcoin Core 版本升級,但如果需要遷移資料目錄,可能需要一些時間。通常支援舊版本的 Bitcoin Core 錢包。

相容性

Bitcoin Core 在使用 Linux kernel、macOS 10.12+ 和 Windows 7 及更新版本的作業系統上受到支援和廣泛測試。Bitcoin Core 也應該可以在大多數其他類 Unix 系統上運作,但在這些系統上的測試頻率較低。不建議在不受支援的系統上使用 Bitcoin Core。

從 Bitcoin Core 0.20.0 開始,不再支援 macOS 10.12 之前的版本。此外,當 macOS「深色模式」啟動時,Bitcoin Core 尚未變更外觀。

節點的已知對等節點會以向後不相容的方式持久化到名為 peers.dat 的檔案中,以容納 Tor v3 和其他 BIP155 地址的儲存。這意味著如果檔案被 0.21.0 或更新版本修改,則舊版本將無法讀取它。在降級的情況下,這些舊版本將記錄錯誤訊息「Incorrect keysize in addrman deserialization」並繼續正常操作,就像檔案遺失一樣,建立一個新的空檔案。(#19954, #20284)

重要變更

P2P 和網路變更

  • mempool 現在追蹤透過錢包或 RPC 提交的交易是否已成功廣播。每 10-15 分鐘,節點將嘗試公告未廣播的交易,直到對等節點透過 getdata 訊息請求它或交易因其他原因從 mempool 中移除。節點不會追蹤使用 P2P 中繼提交到節點的交易的廣播狀態。此版本減少了透過 P2P 提交到執行錢包的節點的錢包交易的初始廣播保證。(#18038)

  • 對等節點已公告且我們考慮請求的交易集的大小已從 100000 減少到 5000(每個對等節點),當達到該限制時,將忽略進一步的公告。如果您需要傾倒(非常)大批次的交易,可以使用「relay」網路權限為受信任的對等節點進行例外處理。例如,對於 localhost,可以使用命令列選項 -whitelist=relay@127.0.0.1 啟用它。(#19988)

  • 此版本新增了對 Tor 版本 3 隱藏服務的支援,並使用 BIP155 將它們傳播到網路上的其他對等節點。Bitcoin Core 仍然完全支援版本 2 隱藏服務,但 Tor 網路將在未來幾個月開始棄用它們。(#19954)

  • 透過設定 -listenonion 設定參數自動建立的 Tor onion 服務現在將建立為 Tor v3 服務而不是 Tor v2。用於 Tor v2 的私鑰(如果有)將在資料目錄(參見 -datadir)中的 onion_private_key 檔案中保持不變,如果不需要可以刪除。Bitcoin Core 將不再嘗試讀取它。Tor v3 服務的私鑰將儲存在名為 onion_v3_private_key 的檔案中。要使用已棄用的 Tor v2 服務(不建議),可以將 onion_private_key 複製到 onion_v3_private_key,例如 cp -f onion_private_key onion_v3_private_key。(#19954)

  • 客戶端在關閉時寫入一個檔案(anchors.dat),其中包含節點的兩個出站僅區塊中繼對等節點(所謂的「錨點」)的網路地址。下次節點啟動時,它會讀取此檔案並嘗試重新連線到這兩個相同的對等節點。這可以防止攻擊者使用節點重新啟動來觸發對等節點的完全變更,這是他們可以用作日蝕攻擊一部分的內容。(#17428)

  • 此版本新增了在啟用時使用 -blockfilterindex=1 -peerblockfilters=1 向網路上的對等節點提供 BIP157 緊湊過濾器的支援。(#16442)

  • 此版本除了現有的主網、測試網和 regtest 網路外,還新增了對 signet(BIP325)的支援。Signet 是集中控制的測試網路,使它們能夠比較舊的測試網更可預測的測試環境。維護一個公共 signet,可使用 -signet 選擇。也可以建立個人 signet。(#18267)

  • 此版本實作了 BIP339 wtxid 中繼。協商後,交易使用其 wtxid 而不是 txid 公告。(#18044)

  • 此版本實作了提議的 Taproot 共識規則(BIP341BIP342),但沒有在主網上啟動。可以在 signet 上進行 Taproot 的實驗,其規則已經啟動。(#19553)

更新的 RPC

  • getpeerinfo RPC 有一個新的 network 欄位,提供對等節點連線的網路類型(「ipv4」、「ipv6」或「onion」)。(#20002)

  • getpeerinfo RPC 現在有額外的 last_blocklast_transaction 欄位,返回從每個對等節點收到的最後一個區塊和最後一個有效交易的 UNIX epoch 時間。(#19731)

  • getnetworkinfo 現在返回兩個新欄位 connections_inconnections_out,提供入站和出站對等連線的數量。這些新欄位是對現有 connections 欄位的補充,該欄位返回對等連線的總數。(#19405)

  • 公開的交易版本號現在被視為無符號 32 位元整數而不是有符號 32 位元整數。這與它們在共識邏輯中的處理相符。大於 2 的版本繼續為非標準(符合先前小於 1 或大於 2 為非標準的行為)。請注意,這包括 joinpsbt 命令,該命令透過選擇最高版本號來組合部分簽名的交易。(#16525)

  • getmempoolinfo 現在返回一個額外的 unbroadcastcount 欄位。mempool 追蹤本地提交的交易,直到對等節點確認其初始廣播。此欄位返回等待確認的交易計數。

  • Mempool RPC(例如 getmempoolentry 和具有 verbose=truegetrawmempool)現在返回一個額外的 unbroadcast 欄位。這表示交易的初始廣播是否已被對等節點確認。getmempoolancestorsgetmempooldescendants 也已更新。

  • 除非使用設定選項 -deprecatedrpc=banscore,否則 getpeerinfo RPC 不再返回 banscore 欄位。banscore 欄位將在下一個主要版本中完全移除。(#19469)

  • 如果交易將通過驗證,testmempoolaccept RPC 將返回 vsize 和帶有 base 費用的 fees 物件。(#19940)

  • getpeerinfo RPC 現在返回一個 connection_type 欄位。這表示與對等節點建立的連線類型。它將返回六個選項之一。有關更多資訊,請參閱 getpeerinfo 說明文件。(#19725)

  • 預設情況下,getpeerinfo RPC 不再返回 addnode 欄位。此欄位將在下一個主要版本中完全移除。可以使用設定選項 -deprecatedrpc=getpeerinfo_addnode 存取它。但是,建議改用 connection_type 欄位(當 addnode 為 true 時,它將返回 manual)。(#19725)

  • 預設情況下,getpeerinfo RPC 不再返回 whitelisted 欄位。此欄位將在下一個主要版本中完全移除。可以使用設定選項 -deprecatedrpc=getpeerinfo_whitelisted 存取它。但是,建議改用 permissions 欄位來了解是否已授予對等節點特定權限。(#19770)

  • 如果手動選擇的輸入不足以支付輸出和費用,walletcreatefundedpsbt RPC 呼叫現在將失敗並顯示 Insufficient funds。可以透過新的 add_inputs 選項自動新增額外的輸入。(#16377)

  • fundrawtransaction RPC 現在支援 add_inputs 選項,當為 false 時,如果需要,將阻止新增更多輸入,因此 RPC 失敗。

與錢包或 GUI 相關的 RPC 變更可以在下面的 GUI 或錢包部分找到。

新的 RPC

  • getindexinfo RPC 返回節點的主動執行索引,包括它們的當前同步狀態和高度。它還接受 index_name 以指定僅返回該索引的狀態。(#19550)

建置系統

更新的設定

  • 現在可以多次指定相同的 ZeroMQ 通知(例如 -zmqpubhashtx=address),以將相同的通知發布到不同的 ZeroMQ socket。(#18309)

  • -banscore 設定選項已被移除,該選項修改了斷開和阻止行為不當對等節點的預設閾值,這是 0.20.1 版本和本版本對處理行為不當對等節點的變更的一部分。有關詳細資訊,請參閱 0.20.1 版本說明中的「關於行為不當對等節點的變更」。(#19464)

  • -debug=db 日誌類別在 0.20 中已棄用,並替換為 -debug=walletdb 以將其與 coindb 區分開來,現已移除。(#19202)

  • 已從 noban 權限中提取 download 權限。為了相容性,noban 暗示 download 權限,但這可能在未來版本中變更。有關更多詳細資訊,請參閱受影響設定 -whitebind-whitelist 的說明。(#19191)

  • 不再接受在 0 位元之後包含 1 位元的網路遮罩(1 位元在左側不連續,例如 255.0.255.255)。根據 RFC 4632,它們是無效的。網路遮罩用於 -rpcallowip-whitelist 設定選項以及 setban RPC。(#19628)

  • -blocksonly 設定現在完全停用費用估算。(#18766)

與錢包或 GUI 相關的設定變更可以在下面的 GUI 或錢包部分找到。

工具和實用程式

  • 新的 bitcoin-cli -netinfo 命令提供網路對等連線儀表板,以人類可讀的格式顯示來自 getpeerinfogetnetworkinfo RPC 的資料。可以傳遞從 04 的可選整數參數,以查看不斷增加的詳細程度。(#19643)

  • 新的 bitcoin-cli -generate 命令,相當於 RPC generatenewaddress 後跟 generatetoaddress,可以為命令列測試目的生成區塊。這是先前 generate RPC 的客戶端版本。詳情請參閱說明。(#19133)

  • 當載入多個錢包時(例如在多錢包模式下),且未使用 -rpcwallet 指定錢包時,bitcoin-cli -getinfo 命令現在為每個載入的錢包顯示錢包名稱和餘額。(#18594)

  • bitcoin-cli -getinfoconnections 欄位現在擴充為返回具有對等連線的 inouttotal 數量的 JSON 物件。它以前返回對等連線總數的單個整數值。(#19405)

新設定

  • startupnotify 選項用於指定 Bitcoin Core 完成其啟動序列後要執行的命令。(#15367)

錢包

  • getaddressinfo RPC 已刪除兩個棄用的向後相容性,如 0.20 版本說明中所通知。已刪除棄用的 label 欄位以及棄用的返回包含 namepurpose 鍵值對的 JSON 物件的 labels 行為。自 0.20 以來,labels 欄位返回標籤名稱的 JSON 陣列。(#19200)

  • 為了改善錢包隱私,錢包重新廣播嘗試的頻率從大約每 15 分鐘一次減少到每 12-36 小時一次。為了保持類似水平的錢包交易初始廣播保證,mempool 將這些交易作為新引入的未廣播集的一部分進行追蹤。有關未廣播集的更多資訊,請參閱「P2P 和網路變更」部分。(#18038)

  • sendtoaddresssendmany RPC 接受可選的 verbose=True 參數,也返回有關已發送交易的費用原因。(#19501)

  • 即使密鑰池為空,錢包也可以建立沒有找零的交易。以前會失敗。(#17219)

  • -salvagewallet 啟動選項已被移除。新的 salvage 命令已新增到 bitcoin-wallet 工具,該工具執行 -salvagewallet 所做的搶救操作。(#18918)

  • 已新增一個新的設定標誌 -maxapsfee,它設定允許的最大避免部分花費(APS)費用。它預設為 0(即使用和不使用 APS 的費用相同)。將其設定為 -1 將停用 APS,除非設定了 -avoidpartialspends。(#14582)

  • 如果這不會導致費用與非 APS 變體相比有所不同,錢包現在預設會避免部分花費(APS)。允許的費用閾值可以使用新的 -maxapsfee 設定選項進行調整。(#14582)

  • createwalletloadwalletunloadwallet RPC 現在接受 load_on_startup 選項來修改設定清單。除非這些選項明確設定為 true 或 false,否則不會修改清單,因此 RPC 方法保持向後相容。(#15937)

  • 新增了一個新的 send RPC,其語法類似於 walletcreatefundedpsbt,包括對幣選擇和自訂費率的支援。send RPC 是實驗性的,可能會在後續版本中變更。(#16378)

  • estimate_mode 參數現在在 bumpfeefundrawtransactionsendmanysendtoaddresssendwalletcreatefundedpsbt RPC 中不區分大小寫。(#11413)

  • bumpfee RPC 現在在選項中使用 conf_target 而不是 confTarget。(#11413)

  • 當使用 lockUnspents 參數時,fundrawtransactionwalletcreatefundedpsbt 現在除了自動選擇的幣外,還鎖定手動選擇的幣。請注意,鎖定的幣永遠不會用於自動幣選擇,但仍可以手動選擇。(#18244)

  • -zapwallettxes 啟動選項已被移除,其功能也已從錢包中移除。此選項最初旨在允許搶救受到可塑性攻擊影響的錢包。最近,它已被用於未發出 RBF 訊號的交易的費用提升。此功能已被放棄交易功能取代。(#19671)

  • 當沒有載入錢包但呼叫錢包 RPC 時的錯誤代碼已從 -32601(找不到方法)變更為 -18(找不到錢包)。(#20101)

移除自動錢包建立

Bitcoin Core 將不再在啟動時自動建立新錢包。它將載入命令列上或 bitcoin.confsettings.json 檔案中由 -wallet 選項指定的現有錢包。預設情況下,它還將載入頂層未命名(「」)錢包。但是,如果指定的錢包不存在,Bitcoin Core 現在只會記錄警告,而不是像以前的版本那樣使用新金鑰和地址建立新錢包。

新錢包可以透過 GUI(其具有更顯著的建立錢包選項)、透過 bitcoin-cli createwalletbitcoin-wallet create 命令,或 createwallet RPC 建立。(#15454, #20186)

實驗性描述符錢包

請注意,描述符錢包仍然是實驗性的,並非所有預期功能都可用。此外,可能存在一些錯誤,當前功能可能會在未來變更。錯誤和缺少的功能可以回報到問題追蹤器

0.21 引入了一種新型錢包 - 描述符錢包。描述符錢包使用輸出描述符儲存 scriptPubKey 資訊。這與傳統錢包結構相反,後者使用金鑰隱式生成 scriptPubKey 和地址。由於這種轉變為基於腳本而不是基於金鑰,傳統錢包執行的許多令人困惑的事情在描述符錢包中是不可能的。描述符錢包對腳本使用「mine」的定義比傳統錢包使用的定義更簡單、更直觀。描述符錢包還對僅觀察事物和匯入使用不同的語義。

由於描述符錢包是一種新型錢包,它們的引入不會影響現有錢包。已經擁有 Bitcoin Core 錢包的使用者可以像以前一樣繼續使用它,行為沒有任何變更。新建立的傳統錢包(仍然是預設錢包類型)將像以前版本的 Bitcoin Core 一樣運作。

描述符錢包和傳統錢包之間的差異主要限於非使用者面向的事物。它們旨在行為類似,除了如下所述的匯入/匯出和僅觀察功能。

建立描述符錢包

描述符錢包不是預設的錢包類型。

在 GUI 中,已在建立錢包對話框中新增了一個複選框,以指示應建立描述符錢包。並且已將 descriptors 選項新增到 createwallet RPC。將 descriptors 設定為 true 將建立描述符錢包而不是傳統錢包。

如果未設定這些選項,則將建立傳統錢包。

IsMine 語義

IsMine 是指用於確定腳本是否屬於錢包的函數。這用於確定輸出是否屬於錢包。傳統錢包中的 IsMine 如果錢包能夠簽署花費具有該腳本的輸出的輸入,則返回 true。由於金鑰可以參與各種不同的腳本,這個 IsMine 定義可能導致許多意外的腳本被視為錢包的一部分。

使用描述符錢包,描述符明確指定錢包擁有的腳本集。由於描述符是確定性的且易於枚舉,使用者將確切知道錢包將考慮哪些腳本屬於它。此外,描述符錢包中 IsMine 的實作遠比傳統錢包簡單。值得注意的是,在傳統錢包中,IsMine 允許使用者取得一種類型的地址(例如 P2PKH),將其突變為另一種地址類型(例如 P2WPKH),錢包仍然會檢測發送到新地址類型的輸出,即使該地址未從錢包請求。描述符錢包不允許這樣做,只會觀察從錢包明確請求的地址。

這些對 IsMine 的變更將使推理錢包實際將觀察哪些腳本變得更容易。但是,對於絕大多數使用者來說,此變更在很大程度上是透明的,不會產生明顯的影響。

匯入和匯出

在傳統錢包中,可以將原始腳本和金鑰匯入到錢包中。這些匯入的腳本和金鑰與錢包生成的金鑰分開處理。這使 IsMine 邏輯複雜化,因為它必須區分可花費和僅觀察。

描述符錢包以不同方式處理匯入腳本和金鑰。只能匯入完整的描述符。然後,這些描述符被新增到錢包中,就像它是錢包本身生成的描述符一樣。這簡化了 IsMine 邏輯,使其不再需要區分可花費和僅觀察。因此,描述符錢包的僅觀察模型也不同,並在下一節中進行了更詳細的描述。

要匯入到描述符錢包中,已新增了一個新的 importdescriptors RPC,該 RPC 使用類似於 importmulti 的語法。

由於傳統錢包和描述符錢包使用不同的機制來儲存和匯入腳本和金鑰,因此已為描述符錢包停用了現有的匯入 RPC。尚未新增用於描述符錢包的新匯出 RPC。

以下 RPC 已為描述符錢包停用:

  • importprivkey
  • importpubkey
  • importaddress
  • importwallet
  • dumpprivkey
  • dumpwallet
  • importmulti
  • addmultisigaddress
  • sethdseed

僅觀察錢包

傳統錢包包含私鑰和正在觀察的腳本。那些被觀察的腳本不會貢獻到您的正常餘額。為了查看僅觀察餘額並在交易中使用僅觀察事物,許多 RPC 新增了一個 include_watchonly 選項,允許使用者這樣做。但是,很容易忘記包含此選項。

描述符錢包移動到每個錢包的僅觀察模型。相反,整個錢包根據是否在停用私鑰的情況下建立而被視為僅觀察。這消除了在錢包本身內區分僅觀察事物和非僅觀察事物的需要。

這種變更確實有一個警告。如果具有私鑰啟用的描述符錢包具有沒有所有私鑰的多金鑰描述符(例如只有一個私鑰的 multi(...)),則錢包將無法簽署和廣播交易。此類錢包需要使用 PSBT 工作流程,但典型的 GUI 發送、sendtoaddress 等工作流程仍然可用,只是無法運作。

如果錢包同時包含單金鑰(例如 wpkh(...))描述符和此類多金鑰描述符,則此問題會惡化,因為某些交易可以簽署和廣播,而其他交易則不能。這取決於哪些可用以及幣選擇演算法如何選擇輸入,某些交易僅包含單金鑰輸入,而其他交易將同時包含單金鑰和多金鑰輸入。但是,這不被視為受支援的用例;多重簽名應該在它們自己的錢包中,這些錢包還沒有描述符。雖然使用者現在無法匯出帶有私鑰的描述符,如前所述。

BIP 44/49/84 支援

使用描述符的變更改變了 Bitcoin Core 使用的預設派生路徑,以遵守 BIP 44/49/84。可以匯入具有不同派生路徑的描述符而不會出現問題。

SQLite 資料庫後端

描述符錢包對錢包檔案使用 SQLite 而不是傳統錢包中使用的 Berkeley DB。這將破壞對錢包操作的任何現有工具的相容性,但是,透過移動到描述符已經破壞了相容性。

錢包 RPC 變更

  • upgradewallet RPC 替換 -upgradewallet 命令列選項。(#15761)

  • 如果費用設定高於 -maxtxfee 命令列設定,settxfee RPC 將失敗。錢包已經無法建立費用高於 -maxtxfee 的交易。(#18467)

  • 已在 sendtoaddresssendmanyfundrawtransactionwalletcreatefundedpsbt RPC 以及實驗性的新 send RPC 中引入了新的 fee_rate 參數/選項,以 satoshis per vbyte (sat/vB) 計價。fundrawtransactionwalletcreatefundedpsbt 中的傳統 feeRate 選項仍然存在,用於以 BTC per 1,000 vbytes (BTC/kvB) 設定費率,但預計很快將被棄用以避免混淆。對於這些 RPC,費率錯誤訊息已從 BTC/kB 更新為 sat/vB,說明文件中的 BTC/kB 已更新為 BTC/kvB。sendsendtoaddress RPC 範例已更新,以幫助使用者建立具有明確費率的交易。(#20305, #11413)

  • bumpfee RPC fee_rate 選項已從 BTC/kvB 變更為 sat/vB,說明文件已更新。警告使用者這是一個破壞性的 API 變更,但它應該相對溫和:BTC/kvB 和 sat/vB 單位之間的巨大(100,000 倍)差異意味著以 BTC/kvB 而不是 sat/vB 錯誤計算的費率的交易應該會因為費率設定過低而引發錯誤。在最壞的情況下,交易可能以 1 sat/vB 發送,但由於當使用明確費率時預設啟動 Replace-by-Fee (BIP125 RBF),因此可以提升交易費用。(#20305)

GUI 變更

  • 在 GUI 中建立或載入的錢包現在將在啟動時自動載入,因此不需要在下次啟動 Bitcoin Core 時手動重新載入。要在啟動時載入的錢包清單儲存在 \<datadir\>/settings.json 中,並增強了指定更多錢包載入的任何命令列或 bitcoin.conf -wallet= 設定。在 GUI 中卸載的錢包將從設定清單中移除,因此它們不會在下次啟動時自動載入。(#19754)

  • GUI 對等節點視窗不再顯示「Ban Score」欄位。這是 0.20.1 版本和本版本對處理行為不當對等節點的變更的一部分。有關詳細資訊,請參閱 0.20.1 版本說明中的「關於行為不當對等節點的變更」。(#19512)

低階變更

RPC

  • 為了使 RPC sendtoaddresssendmany 更一致,以下 sendtoaddress 錯誤代碼已從 -4 變更為 -6
    • Insufficient funds
    • Fee estimation failed
    • Transaction has too long of a mempool chain
  • sendrawtransaction 超過 maxfeerate 的錯誤代碼已從 -26 變更為 -25。錯誤字串已從「absurdly-high-fee」變更為「Fee exceeds maximum configured by user (e.g. -maxtxfee, maxfeerate).」testmempoolaccept RPC 返回 max-fee-exceeded 而不是 absurdly-high-fee 作為 reject-reason。(#19339)

  • 為了使錢包和 rawtransaction RPC 更一致,超過最大費率的錯誤訊息已變更為「Fee exceeds maximum configured by user (e.g. -maxtxfee, maxfeerate).」(#19339)

測試

  • BIP 325 預設 signet 可以透過 -chain=signet-signet 設定啟用。設定 -signetchallenge-signetseednode 允許啟用自訂 signet。

  • generateblock RPC 允許使用 regtest 模式的測試人員生成由自訂交易集組成的區塊。(#17693)

致謝

感謝所有直接為此版本做出貢獻的人:

  • 10xcryptodev
  • Aaron Clauson
  • Aaron Hook
  • Adam Jonas
  • Adam Soltys
  • Adam Stein
  • Akio Nakamura
  • Alex Willmer
  • Amir Ghorbanian
  • Amiti Uttarwar
  • Andrew Chow
  • Andrew Toth
  • Anthony Fieroni
  • Anthony Towns
  • Antoine Poinsot
  • Antoine Riard
  • Ben Carman
  • Ben Woosley
  • Benoit Verret
  • Brian Liotti
  • Bushstar
  • Calvin Kim
  • Carl Dong
  • Chris Abrams
  • Chris L
  • Christopher Coverdale
  • codeShark149
  • Cory Fields
  • Craig Andrews
  • Damian Mee
  • Daniel Kraft
  • Danny Lee
  • David Reikher
  • DesWurstes
  • Dhruv Mehta
  • Duncan Dean
  • Elichai Turkel
  • Elliott Jin
  • Emil Engler
  • Ethan Heilman
  • eugene
  • Fabian Jahr
  • fanquake
  • Ferdinando M. Ametrano
  • freenancial
  • furszy
  • Gillian Chu
  • Gleb Naumenko
  • Glenn Willen
  • Gloria Zhao
  • glowang
  • gr0kchain
  • Gregory Sanders
  • grubles
  • gzhao408
  • Harris
  • Hennadii Stepanov
  • Hugo Nguyen
  • Igor Cota
  • Ivan Metlushko
  • Ivan Vershigora
  • Jake Leventhal
  • James O’Beirne
  • Jeremy Rubin
  • jgmorgan
  • Jim Posen
  • “jkcd”
  • jmorgan
  • John Newbery
  • Johnson Lau
  • Jon Atack
  • Jonas Schnelli
  • Jonathan Schoeller
  • João Barbosa
  • Justin Moon
  • kanon
  • Karl-Johan Alm
  • Kiminuo
  • Kristaps Kaupe
  • lontivero
  • Luke Dashjr
  • Marcin Jachymiak
  • MarcoFalke
  • Martin Ankerl
  • Martin Zumsande
  • maskoficarus
  • Matt Corallo
  • Matthew Zipkin
  • MeshCollider
  • Miguel Herranz
  • MIZUTA Takeshi
  • mruddy
  • Nadav Ivgi
  • Neha Narula
  • Nicolas Thumann
  • Niklas Gögge
  • Nima Yazdanmehr
  • nsa
  • nthumann
  • Oliver Gugger
  • pad
  • pasta
  • Peter Bushnell
  • pierrenn
  • Pieter Wuille
  • practicalswift
  • Prayank
  • Raúl Martínez (RME)
  • RandyMcMillan
  • Rene Pickhardt
  • Riccardo Masutti
  • Robert
  • Rod Vagg
  • Roy Shao
  • Russell Yanofsky
  • Saahil Shangle
  • sachinkm77
  • saibato
  • Samuel Dobson
  • sanket1729
  • Sebastian Falbesoner
  • Seleme Topuz
  • Sishir Giri
  • Sjors Provoost
  • skmcontrib
  • Stepan Snigirev
  • Stephan Oeste
  • Suhas Daftuar
  • t-bast
  • Tom Harding
  • Torhte Butler
  • TrentZ
  • Troy Giorshev
  • tryphe
  • Tyler Chambers
  • U-Zyn Chua
  • Vasil Dimov
  • wiz
  • Wladimir J. van der Laan

以及所有在 Transifex 上協助翻譯的人。