本節僅以一個簡單的智能合約示例,介紹智能合約的基本組成元素,本合約定義一個uint類型的變量,以及對應這個變量的讀寫函數。python
01 pragma solidity >=0.4.0 <0.6.0; 02 03 contract SimpleStorage { //使用關鍵字contract定義合約結構體 04 uint storedData; //定義一個變量 05 06 function set(uint x) public { //定義關於該變量的設置函數 07 storedData = x; 08 } 09 10 function get() public view returns (uint) { //定義關於該變量的讀取函數 11 return storedData; 12 } 13 }
代碼第1行是指明語法解釋使用的編譯器版本;目前以太坊的智能合約虛擬機仍然在開發升級中,還沒有有release版本,不一樣版本之間的API變更比較大,所以在編寫智能合約時,必須指明合約邏輯使用的API的版本號;代碼第3行經過contract關鍵字,聲明瞭一個智能合約結構體,能夠將該關鍵字與面向對象編程的class作類比,contract的設計模式和方法重載,父子繼承等特性,與面向對象的設計很是接近,所以說Solidity做爲一種高級的編程語言,極大的下降了對以太坊公鏈編程的難度,就像面向對象編程的Java語言比起彙編語言來說,大幅下降了程序開發的門檻同樣。編程
代碼第4行定義了一個成語變量,該變量的可見範圍盡在constract的大括號以內;第6~7行代碼定義了一個函數,該函數有可見範圍的修飾符public,關於可見範圍的詳細解釋放在第3章中,在此讀者僅僅須要瞭解,該描述符說明該函數能夠被區塊鏈之外的系統經過Web 3.0接口調用,也能夠經過以太坊內的其它智能合約調用。設計模式
代碼10~12定義了一個讀取函數,函數的可視範圍也是public,可是這個函數由於沒有修改區塊鏈上的任何數據和狀態,所以能夠將該函數定義爲view,相似於其餘編程語言的readonly屬性,同時在函數的最後定義了函數的返回類型安全
這個智能合約相對簡單,僅僅是將一個uint的數據保存在區塊鏈分佈式帳本中的合約。任何帳戶均可以讀寫這個數據,本示例並無對數據作任何訪問限制,這意味着任何人,任何帳戶均可以讀取和修改這個數據,在後面的章節中,會詳細介紹數據的訪問權限和安全性問題。編程語言
2020區塊鏈各類應用都上馬了,跟我一塊兒學《區塊鏈DAPP開發入門、代碼實現、場景應用》吧。分佈式