前言
智慧合約是在以太坊的EVM上執行的一段經過編譯的程式碼。在這篇文章中我將詳細闡述智慧合約到底意味著什麼,開發的時候有哪些需要思維模式的轉變,如何避免踩坑等。
智慧合約
智慧合約與平時的程式碼其實沒有什麼區別,只是執行於一個以太坊這樣的分散式平臺上而已。這個執行的平臺,賦予了這些程式碼不可變
,確定性
,分散式
和可自校驗狀態
等特點。程式碼執行過程中狀態的儲存,是不可變的。每一個人,都可以開一個自己的節點,重放整個區塊鏈,將會獲得同樣的結果。
在以太坊中,每個合約都有一個唯一的地址來標識它自己。客戶端可以與這個地址進行互動,可以傳送接收ether,呼叫函式
,查詢當前的狀態
等。
智慧合約,本質上來說就是程式碼,以及程式碼執行後儲存到區塊鏈上的狀態兩個元素組成。比如,你用來收發ETH的錢包,本質上就是一個智慧合約,只是外面套了一個介面。
GAS是什麼
既然提到了智慧合約,就不得不提和他相伴的GAS
限制。智慧合約
,就是一些程式碼,執行整個分散式網路中。由於網路中的每一個節點都是一個全節點。這樣的好處是容錯性強,壞處是效率低,消耗資源與時間。因為執行計算要花錢,而要執行的運算量與程式碼直接相關。所以,每個在網路執行的底層操作都需要一定量的gas。gas只是一個名字,它代表的是執行所需要花費的成本
。更詳盡的請參考:《Calculating Costs in Ethereum Contracts》
開發智慧合約意味著什麼
開發智慧合約意味著什麼,或者說為什麼我們要開發智慧合約,這是一個需要思考的問題,通常的示例一般都是投票,競價,代幣等,這些但是這些例子總是讓人很迷惑,為什麼要用智慧合約來實現這些東西,能不能實現一些有實際價值的,更通俗,與真正的合約
相關的內容。前面介紹了合約是什麼,可能你們還是沒有很清楚,合約可不可以等於合同,合同是不是具有約束性,能在雙方(合同一般是雙方或者多方)間提供約束,現在的智慧合約是否具有法律約束。
我們需不需要智慧合約
雖然現在區塊鏈很火,但是我們必須要承認,他的應用面不是很廣,只有少部分特定的行業適合使用。
合約開發方式
現在常用的語言是 solidity
類js語言,用用remix作為編輯,編譯和除錯的工具。或者本地使用文字編輯器編寫程式碼,並儲存為.sol 的檔案,然後使用solcjs 工具將 原始碼編譯為.abi .bin檔案。
合約的部署方式
- 通過終端部署
- 通過web3js部署
- 通過JsonApi部署