【開發智能合約 — Solidity系列】認識Solidity

閱讀時間約 3 分鐘
上一篇我們介紹了智能合約的基本概念,而在開發智能合約之前, 建議先對智能合約具備基礎的概念, 往後進行開發時較容易融會貫通, 還沒閱讀的朋友可以參閱此篇「【開發智能合約 — Solidity系列】 淺談智能合約」。
理解完「智能合約」之後,相信大家已經開始手癢了吧! 應該很想開始動手完成第一個自己專屬的「智能合約」,而在開始之前應該要來選個好用的開發工具,至於為什麼要選用Solidity這套程式語言? 主要是開發門檻比較容易入門,參照了ECMAScript的語法概念,相信常常在撰寫Web的朋友應該非常熟悉,不僅如此亦加入了靜態的概念,讓程式開發的過程中更加安全穩定,而Solidity也是目前區塊鏈程式開發相對熱門的一門技術,因此相信很多問題都會有許多開發者共同討論,在技術的道路上也比較不孤單。
其實撰寫智能合約的程式語言並非只有Solidity,還有以下幾個程式語言:
Vyper: 相似於Python風格的程式語言,出生的時間比Solidity晚,因此相關的討論與教學文章相對較少。
Serpent: 文檔相對少,目前官方也建議棄用。
LLL: 看起來是非常艱澀難懂的程式語言,可能是組合語言級別的大神較容易上手吧。

簡單的智能合約範例

在進入實戰開發之前,我們可以先來看一段簡單的程式碼,相信非常容易理解與開始,讓我們無痛的跨出第一步吧!
// 指定版本至少0.4.16,最多不超過0.9.0
pragma solidity >=0.4.16 <0.9.0;

// 合約類別
contract SimpleStorage {
// 宣告uint型態的變數
uint storedData;

// 提供設定變數的功能函數
function set(uint x) public {
storedData = x;
}

// 提供取得變數的功能函數
function get() public view returns (uint) {
return storedData;
}
}
有沒有發現,撰寫類別與內部函數的方式很像我們常用的Typescript,相信平常有在接觸的朋友應該是非常容易上手的。

官方文件閱讀導覽

其實Solidity的官方文件非常豐富且完整,因此非常容易開始,但需要閱讀英文,不過也有簡體中文版的文檔,但沒有那麼完整就是了。
而這邊就針對官方文件的大區塊進行稍微的簡介說明,以輔助閱讀。
以上四大區塊是開發過程比較常用的文件,剛入門的朋友會比較常閱覽這幾個章節,相信我們只要持續學習,每個人都能夠撰寫出一套屬於自己的智能合約。
最後一個區塊主要是記載每個中版號的異動資訊、BUG資訊、開發模式、開發風格,讓初學的開發者能有一定的規範可以遵循跟學習。

結語

剛看到這一套程式語言的時候真的覺得非常像平常在撰寫的Typescript,雖然不盡相同,但畢竟基於ECMAScript,本質上還是離不開太多,雖然另一套風格類似於PythonVyper也非常吸引人,但畢竟還是太新了,很多坑都還沒踩過,因此就先選擇較穩定的Solidity來練習,一但上手後相信要換到其他的開發語言也是一件輕而易舉的事情。
下一篇我們來了解一下什麼是Ethereum Virtual Machine(EVM)吧
喜歡撰寫文章的你,不妨來了解一下:
Web3.0時代下為創作者、閱讀者打造的專屬共贏平台 — 為什麼要加入?
歡迎加入一起練習寫作,賺取知識,累積財富!
為什麼會看到廣告
avatar-img
116會員
257內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
阿Han的沙龍 的其他內容
為什麼會有合約的誕生? 大家想過這個問題嗎? 試想,當陌生人與陌生人之間如果要產生與金錢相關的交易時,在沒有第三方機構的見證下,我想一般人應該也會存在著「不信任」的狀況產生,因此造就了「合約」的誕生,而這個「合約」主要目的在於確保雙方能夠在不損害對方的利益下完成交易的一種約定,其中包括了雙方的資訊、
為什麼會有合約的誕生? 大家想過這個問題嗎? 試想,當陌生人與陌生人之間如果要產生與金錢相關的交易時,在沒有第三方機構的見證下,我想一般人應該也會存在著「不信任」的狀況產生,因此造就了「合約」的誕生,而這個「合約」主要目的在於確保雙方能夠在不損害對方的利益下完成交易的一種約定,其中包括了雙方的資訊、
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
台股收在21858點,然後就端午節了。有好幾年都很怕端午變盤,沒想到做股票久了就也不怕了。 端午節前發現開發金有漲,查了一下,原來是改名+二王子要回來了,目前股價15元。
Thumbnail
親愛的讀者,你知道什麼是LOGO嗎? LOGO是:外來語到對標誌擁有公司的識別和推廣的作用,透過形象的logo可以讓消費者記住公司主體和品牌文化。 標誌特徵與特性: 延展性:企業logo是應用最為廣泛,出現頻率最高的視覺傳達要素,必須在各種傳播媒體上廣泛應用。logo圖形要針對印刷
Thumbnail
《經濟日報》日前於台北國際會議中心盛大舉辦「2023生技論壇」,邀請衛福部長薛瑞元、生策會副會長楊泮池、長佳智能董座陳明豐在內的多位官、商、學界專家、學者參與盛會,深入研討新冠肺炎疫情後的經濟重組;瞄準再生醫療、精準醫療、大健康領域等生技產業範疇,藉由共同發聲、齊心努力,對此應有推波助瀾之效。
Thumbnail
剛好前陣子在求職平台/人力銀行服務,一直在思考整個產品要如何進行迭代優化,以及要如何根據使用者需求來制定產品路線圖、開發優先順序,這篇會介紹求職平台的產品特點、使用者路徑、以及從產品優化的角度如何拆解。
Thumbnail
購買網站:https://shopee.tw/【樂意創客官方店】 使用方式 擴展網址:https://github.com/lzty634158/GHBit 在擴展頁面輸入“https://github.com/lzty634158/GHBit” 按下Enter 搜尋,就可以發現GHBit
Thumbnail
這篇我們來講一下還蠻重要也蠻常用到的一個自定義型別,叫:struct struct是來自於C/C++的結構,目的是把不同資料型態的參數串在一起,成為一個自定義的資料型態,我們也稱它是一個自定義的結構體。
此篇我們也來介紹另外一個也是蠻常用又蠻重要的Mapping,它和陣列有點像,但比較不同的是:它不能用迴圈的方式取出裡面所有的資料,但陣列可以,Mapping比較像是一個查詢系統,用key值可以取出裡面的value值。
Thumbnail
這篇我們來看一個在程式開發很常見也很常用的一個東西:Array 陣列 Array在所有的程式開發中還蠻常見的,也一定會出現,因為有很多的資料都會是一長串的,需要有一個物件來去做集中管理。
在寫程式裡面,錯誤的檢查和處理是一定要有的,也是相對重要的,但Solidity裡面並沒有ErrorMessage這種東西,有的是Require()、Revert()、Assert()這三個函數,作用大概也跟ErrorMessage差不多,這裡介紹這三種函數的用法
我們知道function除了四種可見度 (visibility) 之外,還有三種比較常見的函式修飾詞(view、pure、payable),這篇就也來認識一下這三種函式修飾詞是做什麼用的吧。
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
台股收在21858點,然後就端午節了。有好幾年都很怕端午變盤,沒想到做股票久了就也不怕了。 端午節前發現開發金有漲,查了一下,原來是改名+二王子要回來了,目前股價15元。
Thumbnail
親愛的讀者,你知道什麼是LOGO嗎? LOGO是:外來語到對標誌擁有公司的識別和推廣的作用,透過形象的logo可以讓消費者記住公司主體和品牌文化。 標誌特徵與特性: 延展性:企業logo是應用最為廣泛,出現頻率最高的視覺傳達要素,必須在各種傳播媒體上廣泛應用。logo圖形要針對印刷
Thumbnail
《經濟日報》日前於台北國際會議中心盛大舉辦「2023生技論壇」,邀請衛福部長薛瑞元、生策會副會長楊泮池、長佳智能董座陳明豐在內的多位官、商、學界專家、學者參與盛會,深入研討新冠肺炎疫情後的經濟重組;瞄準再生醫療、精準醫療、大健康領域等生技產業範疇,藉由共同發聲、齊心努力,對此應有推波助瀾之效。
Thumbnail
剛好前陣子在求職平台/人力銀行服務,一直在思考整個產品要如何進行迭代優化,以及要如何根據使用者需求來制定產品路線圖、開發優先順序,這篇會介紹求職平台的產品特點、使用者路徑、以及從產品優化的角度如何拆解。
Thumbnail
購買網站:https://shopee.tw/【樂意創客官方店】 使用方式 擴展網址:https://github.com/lzty634158/GHBit 在擴展頁面輸入“https://github.com/lzty634158/GHBit” 按下Enter 搜尋,就可以發現GHBit
Thumbnail
這篇我們來講一下還蠻重要也蠻常用到的一個自定義型別,叫:struct struct是來自於C/C++的結構,目的是把不同資料型態的參數串在一起,成為一個自定義的資料型態,我們也稱它是一個自定義的結構體。
此篇我們也來介紹另外一個也是蠻常用又蠻重要的Mapping,它和陣列有點像,但比較不同的是:它不能用迴圈的方式取出裡面所有的資料,但陣列可以,Mapping比較像是一個查詢系統,用key值可以取出裡面的value值。
Thumbnail
這篇我們來看一個在程式開發很常見也很常用的一個東西:Array 陣列 Array在所有的程式開發中還蠻常見的,也一定會出現,因為有很多的資料都會是一長串的,需要有一個物件來去做集中管理。
在寫程式裡面,錯誤的檢查和處理是一定要有的,也是相對重要的,但Solidity裡面並沒有ErrorMessage這種東西,有的是Require()、Revert()、Assert()這三個函數,作用大概也跟ErrorMessage差不多,這裡介紹這三種函數的用法
我們知道function除了四種可見度 (visibility) 之外,還有三種比較常見的函式修飾詞(view、pure、payable),這篇就也來認識一下這三種函式修飾詞是做什麼用的吧。