比特幣核心的 git commit 消息中“頂級送出的 ACK:”的意義(如果有的話)是什麼?
對於比特幣的 git 儲存庫中的一些(但不是全部)送出消息,似乎有一種合理的標準化格式。例如,除了通常的說明性送出消息外,此送出(<https://github.com/bitcoin/bitcoin/commit/270616228bc9a3856a0a82dea26ac3480b7585cd>)還包括:
ACKs for top commit: MarcoFalke: ACK 0e7c90e crocodile fanquake: ACK 0e7c90e Tree-SHA512: 6d954a0aaf402c9594201626b59d29263479059e68fa5155bb44ed973cd0c3347729dd78b78b4d5a2275e45da365dc1afb4cc7e3293dea33fcc2e3e83a39faf5
有許多具有相似結構的送出消息。由於這些送出被隱藏在其他送出之下,這讓人想起比特幣協議本身使用的共識機制的各個方面。
換句話說,如果我們足夠用力地瞇著眼睛,送出消息本身似乎部分編碼了一個足夠慢的人類來解釋區塊鏈。
作為參考,這裡有一些問題(<https://github.com/bitcoin/bitcoin/issues/16200> 和<https://github.com/bitcoin/bitcoin/pull/16223>)關於這些消息的內容的一些討論是正在發生,但除非一個人已經是核心貢獻者,否則很難從這裡的上下文中了解正在發生的事情。
是否有任何關於這些消息如何/是否可能對貢獻者之間的共識方面進行編碼的非正式或其他文件?
來自<https://github.com/bitcoin/bitcoin/blob/v0.18.1/CONTRIBUTING.md#peer-review>:
任何人都可以參與由拉取請求中的評論表達的同行評審。通常,審閱者會檢查程式碼是否有明顯的錯誤,並測試更新檔集並對更新檔的技術優點發表意見。項目維護者在確定是否就合併拉取請求達成共識時會考慮同行評審(請記住,討論可能已經分散在 GitHub、郵件列表和 IRC 討論中)。在拉取請求評論中使用以下語言:
- ACK 表示“我已經測試了程式碼並且我同意它應該被合併”;
- NACK 的意思是“我不同意這應該被合併”,並且必須附有合理的技術理由(或在某些版權/專利/許可問題的情況下,法律理由)。沒有附帶推理的 NACK 可能會被忽略;
- utACK 的意思是“我沒有測試過程式碼,但是我已經查看過它並且看起來不錯,我同意它可以被合併”;
- 概念 ACK 的意思是“我同意這個拉取請求的一般原則”;
- Nit 指的是瑣碎的,通常是非阻塞的問題。
當在 GitHub 上合併比特幣核心的拉取請求時,維護者使用一個腳本,該腳本會自動將審閱者提供的 ACK 合併到合併送出中。