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