Solidity是什么
- Solidity是一門面向合約的、為實現智能合約而創建的高級編程語言,主要目的是為了在以太坊虛擬機(EVM)上運行
- Solidity是靜態語言,支持繼承、庫和復雜的用戶定義等特性
- 內含的類型除了常見的編程語言中的標準類型,還包括address等以太坊獨有的類型,solidity源碼文件通常以sol作為擴展名
- 目前對于solidity語言編程最好的是Remix。remix是一個基于Web瀏覽器的IDE,它可以編寫、部署智能合約
Solidity的語言特性
- Solidity語法接近于JavaScript,是一種面向對象的語言,但是因為Solidity是為了編寫真正意義上的運行在網絡中的去中心化合約,與傳統的語言相比具有很多的不同點
- 以太坊底層是基于賬戶,而不是UTXO,所以增加了一個特殊的address的數據類型用于定位用戶和合約賬戶
- 語言內嵌框架就支持支付,提供了和支付相關的payable關鍵字,可以在語言層面上直接支持支付
- 使用區塊鏈進行數據存儲,數據中的每一個狀態都可以永久存儲,所以在合約中定義變量是需要指定使用內存還是區塊鏈存儲
- 運行環境是在去中心化的網絡上,所以需要強調合約或者函數執行的調用方式
- 不同的異常機制。遵循原子特性,一旦出現異常,所有的執行都會被回撤,這主要是為了保證合約執行的原子特性,防止出現中間狀態出現數據不一致的情況
Solidity源碼和智能合約
- solidity源代碼要想成為可以運行在以太坊上的智能合約需要經歷以下步驟
- 用Solidity編寫的智能合約源代碼需要使用編譯器編譯為成為字節碼文件(bytecode),編譯過程中會同時產生智能合約的二進制接口規范(Application Binary Interface,簡稱為ABI)
- 通過交易(Transaction)的方式將字節碼部署到以太坊網絡,每次成功部署都會產生一個新的智能合約賬戶
- 使用JavaScript編寫的DApp通常通過修改web3.js+ABI去調用智能合約中的函數來實現對于數據的讀取和修改
Solidity編譯器
Remix
- Remix是一個基于web瀏覽器的Solidity IDE,可在線使用而且不需要安裝任何東西
solcjs
- Solcjs是Solidity的源碼庫的構建目標之一,是Solidity的命令行編譯器
- 使用npm可以便攜地安裝Solidity編譯器solcjs
- 默認是安裝在/opt/node-v9.0.0-linux-x64的文件夾下,可以使用軟連接映射到/usr/local/bin文件夾下
命令如下
npm install -g solc
?
?