什麼是智慧合約

左良發表於2017-12-11

前言

智慧合約是在以太坊的EVM上執行的一段經過編譯的程式碼。在這篇文章中我將詳細闡述智慧合約到底意味著什麼,開發的時候有哪些需要思維模式的轉變,如何避免踩坑等。

智慧合約

智慧合約與平時的程式碼其實沒有什麼區別,只是執行於一個以太坊這樣的分散式平臺上而已。這個執行的平臺,賦予了這些程式碼不可變確定性分散式可自校驗狀態等特點。程式碼執行過程中狀態的儲存,是不可變的。每一個人,都可以開一個自己的節點,重放整個區塊鏈,將會獲得同樣的結果。

在以太坊中,每個合約都有一個唯一的地址來標識它自己。客戶端可以與這個地址進行互動,可以傳送接收ether呼叫函式查詢當前的狀態等。

智慧合約,本質上來說就是程式碼,以及程式碼執行後儲存到區塊鏈上的狀態兩個元素組成。比如,你用來收發ETH的錢包,本質上就是一個智慧合約,只是外面套了一個介面。

GAS是什麼

既然提到了智慧合約,就不得不提和他相伴的GAS限制。智慧合約,就是一些程式碼,執行整個分散式網路中。由於網路中的每一個節點都是一個全節點。這樣的好處是容錯性強,壞處是效率低,消耗資源與時間。因為執行計算要花錢,而要執行的運算量與程式碼直接相關。所以,每個在網路執行的底層操作都需要一定量的gas。gas只是一個名字,它代表的是執行所需要花費的成本。更詳盡的請參考:《Calculating Costs in Ethereum Contracts》

開發智慧合約意味著什麼

開發智慧合約意味著什麼,或者說為什麼我們要開發智慧合約,這是一個需要思考的問題,通常的示例一般都是投票,競價,代幣等,這些但是這些例子總是讓人很迷惑,為什麼要用智慧合約來實現這些東西,能不能實現一些有實際價值的,更通俗,與真正的合約相關的內容。前面介紹了合約是什麼,可能你們還是沒有很清楚,合約可不可以等於合同,合同是不是具有約束性,能在雙方(合同一般是雙方或者多方)間提供約束,現在的智慧合約是否具有法律約束。

我們需不需要智慧合約

雖然現在區塊鏈很火,但是我們必須要承認,他的應用面不是很廣,只有少部分特定的行業適合使用。

合約開發方式

現在常用的語言是 solidity 類js語言,用用remix作為編輯,編譯和除錯的工具。或者本地使用文字編輯器編寫程式碼,並儲存為.sol 的檔案,然後使用solcjs 工具將 原始碼編譯為.abi .bin檔案。

remix編輯器

合約的部署方式

  1. 通過終端部署
  2. 通過web3js部署
  3. 通過JsonApi部署

引用

深入淺出以太坊 4--寫一個簡單的智慧合約 對於以太坊中gas的理解

本人網站出處:www.gethgeek.com/archives/sm…

相關文章