小明一早與各團隊主管開完會後,開始思考交易所跟行銷獎勵兩個 POC 的可行性。不過無論是哪個 DApp 應用都會建構在智能合約的基礎上,因此他決定先深入學習以太坊上智能合約的主流開發語言 - Solidity。
Solidity 與其他程式語言無太大差異,它是一種靜態型別的程式語言。用於開發在以太坊虛擬機(EVM)上執行的智慧型合約,並編譯為可在 EVM 上執行的位元組碼。使用 Solidity,能夠編寫出可自我執行商業邏輯的應用程式,且是經部署後便永不可修改程式碼的交易合約。最新的官方文件可參考 https://solidity.readthedocs.io/ 。
Solidity 的語法與 JavaScript 相似,且是一種物件導向的語言。
而一個智能合約的組成必要元素有:
pragma solidity ^0.4.25; //宣告版本要高於0.4.25才可編譯
contract HelloWorld{
address creator;
string message;
//合約的建構函式
constructor() public {
creator = msg.sender;
}
//可公開(public)呼叫並回傳字串(string)型別的無傳入參數之函式
function say() public constant returns (string) {
return message;
}
function setMessage(string _newMsg) public {
message = _newMsg;
}
function kill() public {
if (msg.sender == creator)
selfdestruct(creator); //銷毀合約並將合約內的金額轉回給合約創建者地址
}
}
熟悉多種程式語言的小明覺得 Solidity 程式語法非常容易入門,主要的差異還是在於智能合約去中心化的特性:
本文同時發佈於作者部落格:https://www.bdetw.com/blockchain-dapps-solidity/
想找區塊鏈人才或想學習區塊鏈知識的夥伴。歡迎參加社群小聚,一起來輕鬆交流、互相學習成長、認識新朋友、發現新機會!
台北區塊鏈社群
https://bitlly.co/Q4dIK
BDE 區塊鏈學院 - 讓每個企業都懂區塊鏈。
https://bitlly.co/mbDwX