「智能合約」一詞是由Nick Szabo在1997年首次提出的,比比特幣的出現要早很多。他是位計算機科學家、法學學者,還是個密碼譯解專家,所以我還是替他跟你「講人話」好了。
簡而言之:他想用分布式記賬技術來保存合同。如今的智能合同,就如現實世界中的合同一樣。唯一的區別只不過是它們完全是數碼形態的。事實上,一個智能合同,其實只是存儲在區塊鏈中的一個小小的計算機程序。
智能合同如何工作?
那咱們舉個例子來看看智能合同是如何運作的。你可能聽說過眾籌鼻祖Kickstarter。如果各團隊想要制造某種產品,他們可以上Kickstarter網站,建立項目內容,制定資金籌集目標,然后就可以開始等着從那些相信他們理念的人們那里收錢就可以了。
Kickstarter說到底是一個處在產品產出團隊和資金支持者之間的第三方。這就是說,雙方都只得相信Kickstarter能正確的按照他們的意願處理他們的錢。如果某個項目成功地籌到了錢,產品項目方就應該從Kickstarter那里拿到這筆錢。在資金支持者那方面,如果款子籌齊了,他們要求錢可以給到項目方。如果款子最終沒籌齊,則應該被退還給他們。項目方和資金方都只得信任Kickstarter。
但有了智能合同,我們就不需要類似Kickstarter這樣的第三方,也可以建立類似系統了。那么我們就來做一個智能合同來看看。
我們用編程設定這個智能合同必須持有所有收到的款項,直到達到已設定的目標款項。這些對項目投資的人,就可以把他們的錢轉到這個智能合同里。如果本項目達到要籌集的目標值,智能合同就自動的把錢轉給項目設立人。反之,如果項目最終沒有達到籌集資金的目標值,這筆錢又會自動的轉回給資金支持者們。挺厲害的吧!
而且,由於智能合同是存儲於區塊鏈當中的,因此所有信息都是分布式的用這個技術,沒人能對這筆錢說了算。
智能合同真的安全嗎?
誒,等下!可我們憑什么相信智能合同啊?
那是正是由於智能合同是存儲在區塊鏈上的,它們因此而自然具有的一些有趣的屬性,即不可更改性和分布式的特性。
不可更改性是指,智能合同一旦成立,則不可被更改。因此,沒人能背着你篡改你智能合同里的代碼。而分布式的特性是指,智能合同輸出的結果是被所在網絡中所有的人確認過的。因此,單個人是無法強迫智能合同放款的。因為所在網絡的其他人一定會發現這企圖,然后標記此行為無效。篡改智能合同幾乎成為不可能。
不僅是眾籌,智能合同的應用可以涉及很多領域。銀行可以用智能合同放貸或自動付款。保險公司可以用智能合同來處理一部分索賠。郵遞公司可以用它來做到付等。
看到這里,我相信你應該知道智能合同到底是什么了吧。
目前,只有幾個支持智能合同的區塊鏈,其中一個就是以太坊。它的成立、設計,都是專門針對支持智能合同的。編輯這些智能合同使用的是特別的編程語言,Solidity 這個編程語言是專為以太坊創設的,其語法類似於JavaScript。值得注意的是,比特幣也支持智能合同,盡管它相對以太坊而言還是非常有限的。
智能合約的應用平台:以太坊
以太坊(Ethereum)是一個開源的有智能合約功能的公共區塊鏈平台。從這個對於以太坊的定義中,我們可以得出幾個關鍵詞。第一,以太坊是一個區塊鏈。第二,以太坊具有智能合約功能。所以簡單地說,使用以太坊可以讓我們快速地起草以一份智能合約。
要使用以太坊起草智能合約,首先需要下載一個叫做「Ethereum Wallet」的應用程序,可以通過下面的鏈接獲取:Releases · ethereum/mist · GitHub
當安裝完成之后,該應用程序會自動下載以太坊區塊鏈的所有節點,將其存儲在本地。截止到我寫這篇文章的時候,一共有577萬個區塊,這份數據大概有2G的大小,所以可能會消耗比較長的下載時間。
下載完成之后,通過「File」-> 「New Account」菜單創建一個以太坊的賬號。
創建賬號之后記得備份一下 keystore 文件夾,這個相當於一個秘鑰。這個沒有了,你里面的所有財產可就都沒了。
賬號創建完成之后,點擊進入賬號,可以看到賬號的相關信息。
點擊「create a wallet contract」再創建一個「以太坊錢包」。
這里我選擇了「SINGLE OWNER ACCOUNT」,點擊「Create」之后會進入創建合同頁面。它需要你輸入賬號密碼進行交易。我們輸入密碼之后點擊「SEND TRANSACTION」進行交易。
正常來說會提示你沒有足夠的資金可以創建合同。
這是因為創建合同是需要消耗計算能力的,而計算能力是一種資源。在以太坊中,我們用以太幣來描述這種資源的價值。到了這里,如果你還想繼續玩一玩以太坊,那么你需要自己有一條機器去挖礦或者用我們的人民幣去購買。
下一篇文章,我們將說說如何挖礦獲取以太幣。