原文作者:Chris Truax原文編譯:Kxp,BlockBeats
引言
區塊鍊和智能合約有著改變商業運作方式的潛力。為了實現這一潛力,區塊鏈首先必須是可靠的。然而,目前實施的智能合約存在一種以前未被認識到的缺陷,可能導致它們所依附的區塊鏈崩潰或分裂。
與互聯網一樣,區塊鏈技術承諾一種新的無需中心化控制的互動方式。自誕生之日起,公共區塊鏈就需要在權威和私人控制之外運作。
但這是一個謬論。雖然區塊鏈可能在國家直接控制之外運作,但維護區塊鏈的服務器(稱為節點)及其運營者則不然。節點和運營者都有自身的實際位置,因此會受到所在國家法律的約束。
我們已經看到這種情況的一些後果。例如,許多區塊鏈初創公司因為提供根據美國法律屬於未註冊證券的項目而引起SEC 的不滿。自從Crypto 發明以來,各國權威一直間接通過稅法對Crypto 進行監管。在經歷了Three Arrows Capital、FTX、Coinbase 和Binance 的醜聞之後,國家的直接監管只是時間問題。
智能合約代表著一種更加隱蔽的威脅。雖然Crypto 領域將來會受到監管,即對未來交易會施加新的法規,但智能合約會產生「追溯性」監管的風險。換句話說,Crypto 可以選擇根據法規改變未來行為。但問題在於,一旦智能合約執行了某些操作,區塊鏈可能無法撤銷或改變這些操作,即使相關行為在未來可能受到法規限製或禁止。
智能合約的權威衝突
智能合約得到正確實施的標誌在於它不能被單方面修改。事實上,除非設計如此,即使得到各方同意,誰也不能修改智能合約。然而,一個在今天完全合法的智能合約行為在明天可能是非法的。智能合約的權威衝突(Smart Contract Authority Conflict,簡稱SCAC)是指智能合約執行了一個在運行區塊鏈節點的服務器所在地法律下被判定為非法的操作。
我們可以通過一個例子來加以說明:瑞士兒童基金會發行了一系列熱門NFT,其中包括一個智能合約,每當其中一個NFT 再次出售時,將向瑞士兒童基金會轉讓10% 的版稅。兩年後,美國權威將瑞士兒童基金會列為恐怖組織,並向位於美國的區塊鏈節點及其服務提供商發出通知,告知他們該列名單並威脅如果繼續參與有利於瑞士兒童基金會的交易將予以起訴。
隨後,其中一枚NFT 易手,並且智能合約執行了,將交易所得的10% 轉給瑞士兒童基金會。這筆交易得到了所有區塊鏈節點的驗證,包括位於美國的節點。結果,位於美國的節點運營者因為向該恐怖組織提供物質支持而被刑事起訴。
SCAC 陷阱
區塊鏈參與者如何避免這種法律責任?首先,節點將開始構建一種合規功能,作為驗證過程的一部分,以識別非法交易。除非你能識別出非法交易,否則就無法避免執行它。
顯然,礦工(即組裝新交易區塊的節點)肯定要在面臨潛在法律後果的情況下執行非法的智能合約交易。然而,一旦裝備了合規功能,礦工就能以一種相對容易且無擾動的方法來避免承擔責任。由於礦工可以選擇在新區塊中包含哪些待處理交易,他們可以簡單地選擇不處理那些他們認定為違反其所在國家法律的交易。這對區塊鏈本身沒有直接影響,因為交易仍然留在交易池中,可以由另一個礦工處理。
但是,當某個礦工最終處理此交易時,它將成為潛在的致命不穩定因素。在我們上面的例子中,假設一個位於瑞士的節點(瑞士兒童基金會在瑞士不被視為恐怖組織)最終在一個區塊中包含了這筆交易。然而,任何位於美國的節點,更具體地說是任何節點運營者,可能因為驗證該區塊而面臨刑事起訴,指控其協助完成交易。根據美國的節點數量以及區塊鏈使用的特定共識協議,這一問題將導致不同的結果,從沒有任何影響到區塊鏈的徹底崩潰。在某些情況下,這些交易可能無法執行,因為區塊鏈的激勵系統將阻止礦工選擇它們,即使礦工根據自己國家的法律並未被禁止執行此交易。
以Ethereum 為例,要實現「確定性」,需要2/3 的質押以太幣同意一組區塊。如果超過1/3 的驗證者要么離線要么拒絕驗證特定區塊,該區塊將無法最終確定。 Ethereum 通過施加懲罰的方式來解決這個問題,降低離線或拒絕驗證的節點的以太幣質押,直到這些「不合作」的節點持有的質押以太幣少於總抵押的1/3,然後允許剩餘節點驗證區塊並完成鏈的確認。
在我們的例子中,如果超過2/3 的「投票」權力,即質押的以太幣,由美國以外的驗證節點持有,那麼瑞士兒童基金會的交易可以在無需美國驗證者的情況下得到驗證。然而,如果超過1/3 的質押以太幣由美國的驗證節點持有,那麼該交易將無法在不讓美國驗證節點受到經濟懲罰的情況下得到驗證。
這可能只會使區塊鏈參與者面臨的合規問題更加嚴重。換句話說,在我們的例子中,Ethereum 區塊鏈試圖強迫美國參與者參與非法交易。除了在參與區塊鏈方面製造不利因素外,這可能還會帶來更大的法律問題。威脅要以財務損失威脅某人,除非他們從事非法活動,這是違反多項州和聯邦法律的行為。
避開SCAC 陷阱
由於SCAC 可能出現在智能合約創建之後的任何時候,它威脅著即使是最成熟的區塊鏈。更糟糕的是,一旦出現SCAC,解決問題可能已經太遲。幸運的是,區塊鏈可以實施反SCAC 的軟分叉協議進行更改。
一種解決方案是為節點提供標記有問題交易的選項,並在被要求驗證包含此類交易的區塊時投票「出席」。投票「出席」不會導致任何處罰,區塊鏈會將該節點視為在該驗證週期中退出了區塊鏈。因此,需要達成共識的節點總數將減少。完成驗證週期後,投票「出席」的節點將「重新加入」區塊鏈,並接受當前區塊鏈的狀態,就像離線節點重新上線一樣。
為了確保可靠性並避免出現驗證非法交易比合法交易更容易的情況,區塊鏈可能會制定一項規則,即當51% 的節點標記特定交易時,該交易被視為被拒絕,並從交易池中刪除。
如果不解決SCAC 問題,它將威脅到任何出現該問題的區塊鏈的穩定性。區塊鏈開發者需要認識到,隨著智能合約的廣泛使用,即使整個區塊鏈能夠產生足夠的共識來處理有問題的交易,個體區塊鏈節點也將面臨合規問題。雖然區塊鏈展示了巨大的潛力,但是,如果要實現這一潛力,區塊鏈不能強迫參與者在維護其在區塊鏈中的良好聲譽和遵守當地法律之間做出選擇。