lnprototest 到底是什麼?它可以用於測試單個 Lightning 實現還是僅用於測試實現之間的互操作性?
lnprototest到底是什麼?它可以用於測試單個 Lightning 實現還是僅用於測試實現之間的互操作性?實現需要做什麼才能使用 lnprototest?
Rusty Russell 在 2020 年 8 月的悉尼蘇格拉底研討會上討論了 lnprototest(回購連結)。
lnprototest 到底是什麼?
它是一個純 Python3 測試系統和一些與目前存在於 c-lightning 儲存庫中的規範互動的包。你執行 lnprototest,它有這些腳本,上面寫著“我會發這個”,你會發回這個。它可以保持狀態並做一些相當複雜的事情。它有一大堆腳手架來理解承諾交易、錨輸出和一大堆其他東西。然後你寫這些腳本說“如果我發送這個它應該發送這個”或“如果我發送這個而不是……”。你創建了這個 DAG,一個可能發生的事情的圖表,它貫穿所有事情並檢查是否發生。
它可以用於測試單個 Lightning 實現還是僅用於測試實現之間的互操作性?
它對協議開發也非常有用,而不僅僅是測試現有的東西。當您想修改規範時,您可以編寫那一半並針對您自己的節點執行它。
自從寫了這個答案以來,Lisa Neigut 的 c-lightning repo 中的一個PR被合併以在每個 c-lightning CI 建構中執行 lnprototest。
實現需要做什麼才能使用 lnprototest?
他們需要自己的跑步者。以 c-lightning 為例,它會在 regtest 模式下啟動一個 bitcoind 並啟動一個 c-lightning 節點。這有點愚蠢。你必須讓 c-lightning 在開發者模式下執行,因為它使用了一些奇怪的技巧。我們正在慢慢地把它們拉出來。理想情況下,您可以在任何現成的實現中執行它。你必須弄髒你的手並為你的實現編寫一些 Python,這是真的。