什么是區(qū)塊鏈智能合約?
關(guān)于區(qū)塊鏈智能合約的第一件事是它們不是合約、智能合約,也不一定在區(qū)塊鏈上。
要了解區(qū)塊鏈智能合約的第一件事是它們不是合約、智能合約,也不是必須在區(qū)塊鏈上。事實(shí)上,它們的名字很奇怪。
讓我們以相反的順序解決這些問(wèn)題,我們應(yīng)該在此過(guò)程中確切地找出智能合約實(shí)際上是什么。首先,介紹什么是交易,什么不是交易。
交易和非交易簡(jiǎn)介
最著名的區(qū)塊鏈?zhǔn)窍癖忍貛胚@樣的加密貨幣。2關(guān)于貨幣的事情——無(wú)論是虛擬的還是非虛擬的——是你主要想做的是使用它們買(mǎi)賣(mài)東西。你想要的是一個(gè)簡(jiǎn)單的交易模型:“一旦我為你提供這項(xiàng)服務(wù),你就會(huì)給我這個(gè)數(shù)量的貨幣。”我們知道這是如何運(yùn)作的,因?yàn)槊看挝覀冊(cè)谏痰昊蚓W(wǎng)上購(gòu)買(mǎi)東西時(shí),都會(huì)發(fā)生這樣的情況:起始狀態(tài)是“我有x數(shù)量”,交易完成后的狀態(tài)是“我有xy數(shù)量,并且你有y數(shù)量。”4這是在你完成交易之前你關(guān)心的從一種狀態(tài)轉(zhuǎn)移到另一種狀態(tài)。大多數(shù)加密貨幣都被設(shè)置為支持這種類(lèi)型的構(gòu)造。
這很好,但一些聰明的人意識(shí)到實(shí)際上有很多不同的方法可以做到這一點(diǎn)。以太坊是非交易結(jié)構(gòu)大獲成功的地方,Solidity是最著名的例子。我很高興地說(shuō),兩者都是開(kāi)源項(xiàng)目。為什么不在我交出我正在交出的任何東西之前需要滿(mǎn)足一組更復(fù)雜的條件?而且——這是一個(gè)聰明的地方——為什么不寫(xiě)那些可以被計(jì)算機(jī)執(zhí)行的代碼呢?你可能希望貨幣——或其他任何東西——只在一段時(shí)間后釋放,或者如果股票價(jià)格保持在一組特定的范圍內(nèi),或者如果某個(gè)人繼續(xù)擔(dān)任總理,5或者如果沒(méi)有意外eclipse在接下來(lái)的五天內(nèi)。6你也可能有復(fù)雜的依賴(lài)關(guān)系:只有當(dāng)我連續(xù)三周寫(xiě)一篇新文章并且沒(méi)有人對(duì)其中任何一個(gè)寫(xiě)令人不快的評(píng)論時(shí)才完成。7編寫(xiě)這段代碼,如果條件滿(mǎn)足,然后進(jìn)入下一個(gè)狀態(tài)。
不僅適用于區(qū)塊鏈
開(kāi)始解決那些“非”陳述。
現(xiàn)在,在區(qū)塊鏈中,重要的是一旦狀態(tài)發(fā)生變化,您就確保將其記錄在區(qū)塊鏈上,以便它是公開(kāi)的,沒(méi)有人可以更改或挑戰(zhàn)它。但是區(qū)塊鏈技術(shù)還有其他用途,正如我在“區(qū)塊鏈?zhǔn)且粋€(gè)安全主題嗎?”中解釋的那樣。無(wú)許可系統(tǒng),通常被稱(chēng)為分布式賬本技術(shù)(DLT),非常適合非交易狀態(tài)模型,主要是因?yàn)閷?duì)它們感興趣的人是封閉的組織團(tuán)體,他們希望以前滿(mǎn)足復(fù)雜的條件集他們移動(dòng)到下一個(gè)狀態(tài)。根據(jù)最嚴(yán)格的定義,這些不是區(qū)塊鏈。銀行和其他金融機(jī)構(gòu)可能是DLT獲得吸引力的最明顯例子,但它們?cè)诠?yīng)鏈領(lǐng)域非常有用,例如,您可能會(huì)遇到有關(guān)不斷變化的市場(chǎng)利率、可用性和運(yùn)輸時(shí)間或成本的條件,這可能所有這些都會(huì)影響所提供的商品或服務(wù)的最終價(jià)格。
沒(méi)那么聰明
智能合約可以是智能的,但對(duì)我來(lái)說(shuō),這意味著復(fù)雜并且能夠?qū)σ馔饣虿惶赡艿那闆r做出反應(yīng)。我認(rèn)為人們稱(chēng)它們?yōu)?ldquo;智能”是因?yàn)樗鼈凅w現(xiàn)在代碼中,而不是出于我上面建議的原因。
我認(rèn)為這實(shí)際上是一件非常好的事情,因?yàn)槲艺J(rèn)為我們不希望他們表達(dá)我的意思。我所知道的“智能合約”的大多數(shù)用法是兩個(gè)或多個(gè)組織根據(jù)一組已知且受充分約束的條件就系統(tǒng)的一組可能結(jié)果達(dá)成一致。這就是合同的一般含義,雖然我也即將與命名法的那部分爭(zhēng)論,但在這種情況下它是相當(dāng)合適的。
通常,您想要的不是意外或不太可能的情況以及人工智能/機(jī)器學(xué)習(xí)類(lèi)型的智能處理,因?yàn)槿绻@樣做了,那么結(jié)果可能會(huì)令人驚訝,并且可能會(huì)讓一個(gè)或多個(gè)人不高興當(dāng)事人。簡(jiǎn)單——或者至少很容易定義——是你想要內(nèi)置到系統(tǒng)中的一個(gè)關(guān)鍵屬性。例如,Solidity項(xiàng)目似乎至少意識(shí)到了其中的一些陷阱,并建議使用智能合約的人采用形式驗(yàn)證,但正如我們將在下面看到的,這只是觸及了問(wèn)題的表面。
不是合同
當(dāng)然,有一些合同——“在現(xiàn)實(shí)生活中”的合同——用于管理復(fù)雜和意外的情況。它們存在于明確的法律管轄范圍內(nèi)。構(gòu)成它們的單詞和短語(yǔ)受特定和明確定義的過(guò)程的約束,當(dāng)合同條件不滿(mǎn)足或違反時(shí),會(huì)受到已知的制裁和懲罰。經(jīng)常有挑戰(zhàn)這些的情況,但同樣存在應(yīng)對(duì)此類(lèi)挑戰(zhàn)的明確機(jī)制。
目前,“智能合約”不符合對(duì)合約的這種描述。將法律合同措辭映射到計(jì)算機(jī)代碼是一個(gè)非常復(fù)雜的過(guò)程,并且代碼處理容易出現(xiàn)的錯(cuò)誤類(lèi)型在司法系統(tǒng)中沒(méi)有一個(gè)很好的類(lèi)比。還有管轄權(quán)的問(wèn)題。這通常在合同條款中描述,但如果“智能合同”的處理發(fā)生在與相關(guān)方不同的司法管轄區(qū),甚至是未知的司法管轄區(qū),該怎么辦?這應(yīng)該重要嗎?這有關(guān)系嗎?我不知道,我也不知道一旦人們開(kāi)始以具有法律強(qiáng)制力的方式依賴(lài)這些結(jié)構(gòu),我也不知道還有什么其他問(wèn)題會(huì)從木制品中爬出來(lái),但我懷疑它們會(huì)受到歡迎。
同樣,當(dāng)IT人員談?wù)撥浖贤瑫r(shí),他們談?wù)摰氖峭耆煌臇|西:這是系統(tǒng)在已知輸入和啟動(dòng)條件的上下文中所宣傳的行為,這對(duì)我們也沒(méi)有幫助。
這和安全有什么關(guān)系?
一旦交易——或“智能合約”——完成并進(jìn)入?yún)^(qū)塊鏈或分布式賬本,它幾乎是不可變的,根據(jù)定義。但是在它完成之前呢?好吧,本文開(kāi)頭描述的這種類(lèi)型的簡(jiǎn)單交易是原子的——它們發(fā)生或不發(fā)生,用行話(huà)來(lái)說(shuō),它們是“不可分割和不可約的”。對(duì)于大多數(shù)目的,它們是瞬時(shí)的。
“智能合約”并非如此。它們需要處理,因此會(huì)隨著時(shí)間的推移而存在。這意味著在處理它們時(shí),它們會(huì)受到任何系統(tǒng)都可能容易受到攻擊的各種攻擊。標(biāo)準(zhǔn)清單是:
- 保密。“智能合約”的狀態(tài)可能會(huì)受到窺探,這可能導(dǎo)致不對(duì)稱(chēng)的知識(shí)或泄露給未經(jīng)批準(zhǔn)的各方。
- 正直。這是許多“智能合約”的噩夢(mèng)。如果一個(gè)實(shí)體——無(wú)論是基礎(chǔ)合同的一方與否——可以(有意或無(wú)意地)改變執(zhí)行“智能合約”的代碼的內(nèi)部狀態(tài),那么該“智能合約”的結(jié)果將不會(huì)像它們一樣預(yù)期是這樣,并且任何相關(guān)方都可能有充分的理由對(duì)結(jié)果提出異議。更重要的是,這樣的糾紛甚至可能不依賴(lài)于喪失誠(chéng)信的證據(jù),而只是依賴(lài)于懷疑。在執(zhí)行上下文中證明運(yùn)行時(shí)完整性——更不用說(shuō)在它被證明丟失時(shí)進(jìn)行緩解——是極其困難的。
- 可用性。如果一方發(fā)現(xiàn)與“智能合約”相關(guān)的條件對(duì)他們不利,他們可能會(huì)試圖影響構(gòu)成“智能合約”的系統(tǒng)任何部分的可用性,無(wú)論是代碼本身、系統(tǒng)的輸入或系統(tǒng)的輸出。其中任何一個(gè)都可能對(duì)現(xiàn)實(shí)生活的結(jié)果產(chǎn)生重大影響。
這篇文章的開(kāi)頭似乎是對(duì)命名約定的迂腐攻擊。我想可能會(huì)很清楚,8我對(duì)“智能合約”這個(gè)詞感到不舒服,這主要是因?yàn)槲艺J(rèn)為它讓一些人認(rèn)為這些結(jié)構(gòu)是他們所不具備的。反過(guò)來(lái),這可能意味著人們會(huì)在不合適的情況下使用它們。
人們還擔(dān)心,因?yàn)槲淖謺?huì)帶來(lái)包袱,這會(huì)導(dǎo)致人們沒(méi)有充分考慮安全性對(duì)這些結(jié)構(gòu)的影響。我認(rèn)為影響可能非常大。所以,如果你正在研究這些結(jié)構(gòu),請(qǐng)睜大眼睛。我在這篇文章中沒(méi)有過(guò)多地談?wù)摼徑獯胧?,但存在一些緩解措施?/p>