Web3 基礎知識 - Sodility 教學 (1)
簡介 sodility
程式碼開頭用
1 | pragma solidity ^0.8.0; |
pragma是一個宣告語句,用來告訴編譯器這份程式碼所使用的 Solidity 版本^這個代表「這個版本以及之後的版本都可以」
其他範例
1 | pragma solidity >=0.7.0 <0.9.0; |
- 這是代表適用的版本是包含 0.7.0 以上,且支援版本是 0.9.0 之下,但不包含有 0.9.0
回顧智能合約 - 簡介
智能合約 (Smart Contract) 本質上是一組程式碼的集合,包含兩個東西:
- 函數 : 用來執行動作,例如存資料、取資料
- 資料 : 儲存在區塊鏈上的變數與資訊
當我們把智能合約部署(Deploy)到以太坊區塊鏈上,它就會被分配一個唯一的區塊鏈位址。
任何人都可以透過這個位址來與合約互動。
撰寫智能合約
簡介變數
這邊先上一個範例
1 |
|
上述的 contract simpleTest 他是代表我說這是一個合約,並給他名字 simpleTest
simpleTest 可以是任何你想要給的合約名字
語法就是: contract 任何名字,之後就是把程式碼寫在 { } 裡面
sodility 有主要的 3 個變數型別
- uint (整數)
- bool (布林值)
- string (字串)
就是如上述範例所示範
字串必須加引號: "" 或 '' ,不能混用
簡介函數
函數是一個可以重複使用的程式碼,用以執行特定任務,宣告要用 function
底下為範例
1 | contract simpleTest { |
上述的 setData 就是函數名稱,可以自由命名
底下範例是設定回傳值
1 |
|
上述程式碼中
returns (uint): 表示用該函數要回傳一個uint的資料view: 告訴編譯器這個函數不會修改區塊鏈上的狀態(只讀)
函數也能設定要回傳多個值,底下是 example
1 |
|
public
可以幫 function 添加一個關鍵字: public ,這代表它可以被其他合約給呼叫 (可以被外部呼叫)
範例如下
1 | contract simpleTest { |
REMIX - 部署
這邊用一個範例程式
1 | contract simpleTest { |
先在 file explorer 那邊新建檔案,把上述貼上去,我這裡命名檔案叫做 test.sol
之後如下圖點編譯的部分,參數都不用動,就單純編譯程式

最後要部署
如下圖單純點 deploy ,然後基本上就成功完成

解釋一些左邊部署的參數:
- Account(帳號) → 系統會提供一些測試帳號,每個帳號都有測試用的 Ether,可以隨意操作
- Gas Limit → 設定交易的最大 Gas 消耗上限,保持預設值即可
- Value → 預設為 0,因為我們目前不需要傳送 Ether
- Contract → 選擇我們剛剛編譯好的合約,應該會看到
simpleTest
解釋 deploy 後,下方的 console 顯示的訊息
- From → 部署的帳戶地址(例如 0x5B3…)
- Transaction Cost(交易成本) → 使用了一些測試 Ether 作為 Gas 費
- Gas Used(實際消耗的 Gas) → 小於設定的 Gas Limit
- Value → 0,因為我們沒有傳送 Ether
- Transaction Hash(交易雜湊值) → 每筆交易的唯一編號,可以複製下來
最後對 deploy 後的合約進行測試
如下圖可以看到左邊是我們設定的函數,每次執行就可以看到下面的 console 會有訊息出來,就是我們的交易資訊
- FROM: 交易來源帳號 (就是平台給的測試帳號)
- TO: 我們合約地址
- GAS: 交易手續費

All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
