1. 程式人生 > >Nick Szabo:智慧合約與傳統合約的區別及其用途

Nick Szabo:智慧合約與傳統合約的區別及其用途

Nick Szabo:密碼學家,智慧合約之父。

智慧合約理念可追溯至1993年,為密碼學家Nick Szabo所發明。自從以太坊引入智慧合約之後,其在區塊鏈領域被越來越多的人所熟知。本文正是Nick Szabo在第三屆區塊鏈全球峰會(2017年9月14-16日)上的演講內容,Nick從智慧合約的發展著手,用通俗易懂的語言為我們解釋了智慧合約與傳統合約的區別及其用途。

以下為演講正文,Enjoy!

大家好,我給大家介紹一下智慧合約。我在1993年發明了這個詞,自此以後這個詞的含義也有了不同的發展。

我先談一下為什麼要制定智慧合約。傳統合約是因為在生產產品和提供服務時,需要把不同的人和物整合在一起,從而可以為其他人創造價值。比如汽車發動機,由幾千個不同的部件組成。如果在一個工廠生產這麼多的元器件是不可能的,因為它涉及到很多方面的專業,所以我們要建立這樣一種合約——要把某個部件的生產外包給其他人,他們再外包給其他人,就形成一個合約網路。所以每一次交易都會制定一個合約。

在典型的合約當中,一般會有兩方,Bob和Alice,他們都希望這個交易有利於他們,所以他們需要的是創造共贏。根據合同法,大家就關係制定規則,而且還可以就自己的商業規則來制定一些條款。做交易需要制定規則,有些時候通過規則可以控制資產,如果有法律訴訟就涉及到對於錢的控制。合同法是整個社會的基礎層或者基礎協議,不管是企業、經濟,以及其他的社會都依賴於合同法的存在。合約實際上自中世紀就開始在歐洲等地發展,中世紀時在地中海的世界出現了一種新的合約叫做保險合約。傳統合約非常簡單,一般只有一頁,不像現在合約那麼複雜。我們制定智慧合約,其實理由和傳統合約是一樣的,希望建立雙贏的交易。

那為什麼要使用智慧合約呢?因為幹程式碼比溼程式碼更有優勢。智慧合約是幹程式碼,而傳統的律師、傳統合約是溼程式碼。傳統合約是基於合同法制定的,法律主要是基於主觀的看法和類比。智慧合約是基於軟體的,軟體主要建立在位元位之上。傳統合約在安全性方面,可能面臨法律的束縛,軟體的特性是基於複製和密碼學,還有其他的電腦科學,他們也是非常強大的。在預測性方面法律是比較靈活的,因為涉及到人的主觀判斷,這可能是好事,但是也意味著有時候會有模糊的判斷或漏洞,但軟體就比較固定和僵硬。在成熟度方面,法律已經打磨了成百上千年,軟體和智慧合約則比較新,應用經驗也比較少,所以我建議大家要從法律的設計模式當中看看有沒有啟發我們的地方。傳統的法律一般是人工、本地、不確定的,而公共的區塊鏈往往是自動化的、全球的、無情的。

一些人覺得智慧合約就是區塊鏈上執行的電腦程式,這種看法沒問題,但是和定義有所不同,我會談談我的見解。以太坊的合約仍然是智慧合約的中心,它可以控制資產,可以控制在什麼樣的情況下發生什麼樣的事情,會影響到激勵機制。同時合約也需要人們之間達成共識,要使人們之間達成共識就需要使用者的介面,比如有搜尋,讓雙方找到彼此,而且雙方要能夠進行談判,對合約進行定製化。還有執行的監控,使用者可以彼此監控對方合約的執行。還有一部分是在鏈下的,那就是執行的檢驗,比如說社交網路的營銷等,看看是不是在某個時間確實舉行了這樣的活動。有一些東西我們可以在鏈上進行檢驗,比如代幣的支付。

其實我們在區塊鏈上能做的東西還有很多,智慧合約是可以被定製化、被談判的。這裡用兩個人談判遠期的合約舉例子,你會看到交易所只能處理一些標準的合約,而且交易所並不是信任最小化的、去中心化的市場,它可能要犧牲很多的安全性,甚至響應的時間也比較慢,所以這樣的買賣盤記錄很難逃離中心化的機制,如果交易量很小的話買賣盤記錄也沒什麼意義的。如果交易是在區塊鏈上進行的,那麼整個交易生命週期就是這樣的,對Bob來說是簽訂一個智慧合約,首先要有搜尋、有談判、有合約的執行,執行合約之後可能要管理抵押品或者仲裁等等。在合同執行的階段,我們能很清楚的看到,交易雙方是否執行了自己的義務、是否付了錢,或者準時交付自己的產品等等。

再來看一下交易階段的創新,在交易階段有很多創新,像亞馬遜、Uber、谷歌都進行了創新。比如Uber在搜尋階段有地圖告訴你駕駛員在哪裡,你知道哪裡有車可以載你,GPS告訴你在哪裡,駕駛員在哪裡,這樣可以匹配,這是使用者和提供商的匹配。談判階段你要麼接受,要麼不接受,這就是一個價格匹配的演算法。在零售當中一般就是你接受或者不接受,因為討價還價的成本比較高。Uber這裡比較靈活一點,它考慮到了成本差異,比如說在不同的時間段,價格不同。所以只要雙方就成本達成共識,他們就不需要再去討價還價了。那麼在執行階段,有用加密的信用卡付款,也有GPS驗證你到底去了哪裡。執行後的階段有評分、退款等。Uber會對司機進行評分,如果司機有不當行為就會把他們解聘,這是用演算法解聘的,有了這樣的演算法,能提升整個交易效率。

智慧合約還適用於現金流產品,把債券、股票等傳統的資產放在區塊鏈上,繞過傳統的金融資訊傳遞者可以進行更多的跨境投資,這樣可以減少交易摩擦,而且信任最小化,全球是無縫的。現在加密貨幣和代幣有超過1400億的價值,但是並沒有華爾街的支援、沒有中心機構的支援。雖然GFA這家聚焦於金融的合約公司,把智慧合約定義上為一種程式,但智慧合約還是人與人之間的關係,所以我們也希望具有專業知識的人進行智慧合約談判。

把固定收益、貸款、場外交易、期權、遠期集合在一起,我們建立了一些工具來減少這些交易的信任中介,那就是公有鏈。那些具有金融專業知識的非程式設計師可以在鏈上撰寫智慧合約,現在美國有1200萬的專業的程式設計人員,但金融專業人士的數量遠遠超過程式設計人員的數量,所以應該充分利用這個龐大的群體。既懂金融知識又懂程式設計的人很少,所以我們專注於具有金融知識的非程式設計人員。智慧合約是可以談判的,可以從合同法和傳統合約當中得到一些啟發,你會看到Alice可以提出報價,Bob可以拒絕報價,也可以接受,這和以前的合約形式是非常相似的。智慧合約也是可以定製化的,在智慧合約合夥人的過程中Alice和Bob對智慧合約進行定製化。所以智慧合約是對簡單的交易進行信任最小化的結算,非常直接,可以用在貸款、遠期、互相、差價合約等等。

有兩個涉及到人的因素:Composer,這是智慧合約談判的UI;Performance Manager,這是智慧合約執行檢驗和資產賬戶監控的PI,這些成對的交易形成了一個自然的網路市場。這裡的市場不是買賣盤的記錄,而是雙邊合約的網路,是現在經濟當中存在的網路,我覺得這也是智慧合約的核心,也是我們所研究的方向。我們希望建立成對的交易使得在全球形成自發的網路,這樣在全球進行交易就沒有任何摩擦,可以實現全球無縫交易。離岸的互助基金、存託憑證、ETF流動性很差,而且成本較高、滲透性差,所以要進行跨境投資很難。比如阿根廷人或中國人很難在其他國家進行投資,但在新興市場有很高的投資需求,他們卻沒有辦法使用到全球最為可靠的投資。我們的解決方案是要安全反映區塊鏈上金融資產最重要的特徵,我們一直在思考如何使得現金流能夠不需要這麼多的信任中介,所以我們充分利用了加密貨幣和智慧合約的能力,來大幅減少中介和交易對手的風險。

在上面大家看到有存託憑證,存託憑證實際上是投資於海外股票的一種非常普遍的方式。現在有很多的交易摩擦,比如存託憑證的流動性特別差,但交易量很大,而且還涉及到國際政治風險以及交易對手的風險,因為是私有銀行發起的,透明度也比較差,此外還涉及到跨境合約,所以當有爭執的時候不知道要去哪裡進行起訴。通過我們這樣一種基於區塊鏈的解決方案,可以解決上面所描述的這些問題。我們可以利用高流動性的市場價格來決定,這樣可以減少政治的風險,還可以實現現金流交易的及時到賬,不需要等待幾周的時間。

我知道有很多人正在開發區塊鏈,我也有自己的願望清單,我希望區塊鏈是全球無縫化的,是安全無許可的,而且有簡單保守的治理。我們現在的創新不是說沒有治理,實際上我們在電腦科學方面是一個重大的突破,要設計全新形式的治理太過理想化,所以我還是希望我們的治理機構是很簡單保守的。關於軟體更新方面,我希望能由具有電腦科學技術的人來決定,不需要讓會計師和律師見證這個交易合法不合法,這樣會大大減少交易成本。

區塊鏈上的智慧合約就是一種金融找到服務,使得金融資產能夠無縫跨境。當然軟體沒有辦法解決溼程式碼的問題,溼程式碼涉及到人類主觀判斷,比如保險理賠或風險評估,不僅涉及到人的主觀判斷,還涉及到本地支援,所以不能夠完全依賴於區塊鏈。

充分利用區塊鏈。區塊鏈不可能什麼都能做,傳統的金融業也是如此。所以為了最優的利用區塊鏈,我們必須把兩者結合在一起,比如現金流產品就是把金融和區塊鏈技術整合在一起,金融行業的人如果希望能夠利用私有鏈的話,我覺得是錯誤的,純粹主觀者認為公有鏈可以做一切,不需要任何傳統金融,我覺得這樣的觀點也是錯的。比特幣和以太坊世界的人也不太瞭解金融這個領域的實際情況,金融領域的人也不懂以太坊或者比特幣的世界,他們有時候可能沒辦法達成統一的意見而進行爭執,這就是文化的障礙。但是如果能夠把這兩者整合在一起,可能會創造最有價值的解決方案。

最後一點,持久存在的法律已經演進的非常成熟了,比如合同法在歐洲,來自於中世紀,演進得非常成熟,比重新發明交易機制更有效。我們的智慧合約是可以定製的,也可以進行談判,就像平常的合約一樣。至於幹程式碼和溼程式碼,我們現在還在學習什麼時候要使用傳統合約,什麼時候要使用智慧合約。所以我們也希望從這樣一種傳統的售貨機轉換為全球的金融機器,向大家提供金融的智慧合約。謝謝大家。

本文首發於萬向區塊鏈微信公眾號,未經授權不允許轉載。

相關推薦

Nick Szabo智慧合約傳統合約區別及其用途

Nick Szabo:密碼學家,智慧合約之父。智慧合約理念可追溯至1993年,為密碼學家Nick Szabo所發明。自從以太坊引入智慧合約之後,其在區塊鏈領域被越來越多的人所熟知。本文正是Nick Szabo在第三屆區塊鏈全球峰會(2017年9月14-16日)上的演講內容,N

區塊鏈(以太坊智慧合約)傳統軟體的區別

區塊鏈與傳統軟體設計有很多區別: 1. 區塊鏈是分散式的,而傳統軟體大多是中心化的 2. 區塊鏈通常有無數個備份(每個礦工處都會有一個完整的區塊鏈備份),而傳統軟體只會在單個或者若干個節點做備份 3. 區塊鏈是一個鏈式結構,在區塊鏈上的所有記錄都是可追溯且無法修改的,而

C++解析(20)智慧指標型別轉換函式

0.目錄 1.智慧指標 2.轉換建構函式 3.型別轉換函式 4.小結 1.智慧指標 記憶體洩漏(臭名昭著的Bug): 動態申請堆空間,用完後不歸還 C++語言中沒有垃圾回收機制 指標無法控制所指堆空間的生命週期 我們需要什麼: 需要一個特殊的指標 指標生命週期結束

系統架構設計師智慧財產權標準化

1.按照《伯爾尼公約》的規定,一個成員國給予其他成員國作品的版權保護期,應按照該成員國版權法的規定。即其他國家的版權,要按照我國的版權法的規定。 2.我國著作權不保護思想,即可以通過反向編譯技術、淨室技術和反向工程獲取他人軟體的技術構思。 3.在公司工作期間的智慧財產

雲合同線上合同電子簽章傳統簽章相比,有什麼優勢?

隨著移動網際網路的興起,簽章也開始了網際網路化,成為了我們所熟知的電子簽章。電子簽章在逐漸滲入各行業的過程中,人們不禁產生疑問:電子簽章與傳統簽章哪個更好? 要解決這個疑問,我們得先了解下電子簽

史上最強超融合入門乾貨超融合傳統架構特性及收益詳細對比

在IT基礎架構領域工作有十年了,親眼目睹和參與了上一代網路儲存架構在中國的興起和衰敗。的確,新IT浪潮已經到來,超融合就是諸多風口之一,成為了近幾年IT業界備受關注的話題。雖然超融合這個概念已經被廠商熱炒了至少兩年,但看到市場上依舊存在著很多模糊的定義和理解,所以想整理一

Deep Unrolling深度網路傳統模型之間的橋樑

編者按:深度學習在計算機視覺領域取得了巨大的成功,有研究者甚至一度期望這種端到端的學習策略可以完

Java學習筆記C/S B/S 區別

C/S 是Client/Server 的縮寫,是客戶機與伺服器結構的應用程式;B/S是Brower/Server 的縮寫,是瀏覽器和伺服器結構的應用程式,即Web 應用程式。C/S 與B/S 區別如下: 1)硬體環境不同: C/S 一般建立在專用的網路上, 小範圍裡的網路環境, 區域網

執行緒wait方法sleep方法區別

wait方法與sleep方法區別 wait:執行緒間的通訊的問題,需要等待別的執行緒喚醒。  sleep:自己控制執行緒的執行狀態 ,隔了一段時間自動醒過來。   wait:方法釋放了鎖 sleep:方法沒有釋放鎖 &nbs

Java之路方法過載重寫的區別

一、方法的過載(overload) 方法名相同但引數列表不同的方法簽名機制,稱之為方法的過載(method overload)。 過載的表現形式就是呼叫一系列具有相同名稱的方法,這些方法可根據傳入引數的不同而得到不同的處理結果,這其實就是多型性的一種體現,這屬於靜態多型,即同一種介面

#Java學習筆記C/S B/S 區別

C/S 是Client/Server 的縮寫,是客戶機與伺服器結構的應用程式;B/S是Brower/Server 的縮寫,是瀏覽器和伺服器結構的應用程式,即Web 應用程式。C/S 與B/S 區別如下: 如果有想要學習java的小夥伴,可來我們的java學習扣裙

Sring(二)String,StringBufferStringBuilder的區別

一、String 字串廣泛應用 在Java 程式設計中,在 Java 中字串屬於物件,Java 提供了 String 類來建立和操作字串。 串也是資料結構的一種 需要注意的是,String的值是不可變的,這就導致每次對String的操作都會生成新的String物件,這樣不僅效率低下,而且

由 System.arraycopy 引發的鞏固物件引用 物件 的區別

作者:林冠巨集 / 指尖下的幽靈 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 部落格:http://www.cnblogs.com/linguanh/ GitHub : https://github.com/af913337456/

Python程式設計生成器yieldyield from區別簡單理解

yield yield不僅可以返回值,也可以接收值 # yield返回值, 生成器 def gen(): for x in ["a", "b", "c"]: yield

TensorFlow入門tf.InteractiveSession()tf.Session()區別

tf.InteractiveSession():它能讓你在執行圖的時候,插入一些計算圖,這些計算圖是由某些操作(operations)構成的。這對於工作在互動式環境中的人們來說非常便利,比如使用IPython。 tf.Session():需要在啟動session之前構建

白話服務降級熔斷的區別

雖然之前在《Spring Cloud構建微服務架構》系列文章中介紹了Hystrix服務降級與Hystrix斷路器的概念。但是,還是一直收到這樣的提問:降級與熔斷區別是什麼?並且在很多交流過程中,發現有不少童鞋對降級和熔斷的概念有混淆的情況。所以,這篇博文準備換一種方式來說說這兩個概念,以幫助讀者更好的理解

小程式UI傳統HTML5區別

開發語言不同。 小程式自己開發了一套WXML標籤語言和WXSS樣式語言,並非直接使用標準的HTML5+css3。 元件封裝不同。 小程式獨立出來了很多原生APP的元件,在HTML5需要模擬才能實現的功能,小程式裡可以直接呼叫元件。小程式開發者工具 微信小程式的開發工具,基於MINA框架(現已取消該名稱)

轉帖#pragma once #ifndef的區別

為了避免同一個檔案被include多次 1   #ifndef 方式 2   #pragma once方式 在能夠支援這兩種方式的編譯器上,二者並沒有太大的區別,但是兩者仍然還是有一些細微的區別。 方式一:     #ifndef __SOMEFILE_H__     #de

Spring BeanFactoryFactoryBean的區別及其各自的詳細介紹於用法

排除 tle 判斷 service 關系 符號 它的 extc () 1. BeanFactory   BeanFactory,以Factory結尾,表示它是一個工廠類(接口),用於管理Bean的一個工廠。在Spring中,BeanFactory是IOC容器的核心接口,它的

什麽是JDK?什麽是JRE?JDKJRE的區別用途

編程 支持 應用服務 運行環境 用途 開發 dev ont 無需 一、編程環境與運行環境 JDK(Java Development Kit)稱為Java開發包或Java開發工具。是一個編寫Java的Applet小程序和應用程序的程序開發環境。JDK是整個Java的核心,包