簡介 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) 本質上是一組程式碼的集合,包含兩個東西:

  1. 函數 : 用來執行動作,例如存資料、取資料
  2. 資料 : 儲存在區塊鏈上的變數與資訊

當我們把智能合約部署(Deploy)到以太坊區塊鏈上,它就會被分配一個唯一的區塊鏈位址。

任何人都可以透過這個位址來與合約互動。

撰寫智能合約

簡介變數

這邊先上一個範例

1
2
3
4
5
6
7
8
9

contract simpleTest {

uint number = 123;
bool testGood = true;
string data = "it is a data";

}

上述的 contract simpleTest 他是代表我說這是一個合約,並給他名字 simpleTest

simpleTest 可以是任何你想要給的合約名字

語法就是: contract 任何名字,之後就是把程式碼寫在 { } 裡面


sodility 有主要的 3 個變數型別

  1. uint (整數)
  2. bool (布林值)
  3. string (字串)

就是如上述範例所示範

字串必須加引號: ""'' ,不能混用

簡介函數

函數是一個可以重複使用的程式碼,用以執行特定任務,宣告要用 function

底下為範例

1
2
3
4
5
6
7
8
9
10
11
12
contract simpleTest {


function setData(uint x) {
uint num = x;
}


}



上述的 setData 就是函數名稱,可以自由命名


底下範例是設定回傳值

1
2
3
4
5
6
7
8
9
10
11
12
13
14

contract simpleTest {


function getData(uint x) view returns (uint){
uint num = 5 + x;
return num;
}


}



上述程式碼中

  • returns (uint) : 表示用該函數要回傳一個 uint 的資料
  • view: 告訴編譯器這個函數不會修改區塊鏈上的狀態(只讀)

函數也能設定要回傳多個值,底下是 example

1
2
3
4
5
6

function f() public pure returns (uint, bool, string memory){
return (3, true, 'test');
}


public

可以幫 function 添加一個關鍵字: public ,這代表它可以被其他合約給呼叫 (可以被外部呼叫)

範例如下

1
2
3
4
5
6
7
8
9
10
contract simpleTest {


function setData(uint x) public {
uint num = x;
}


}

REMIX - 部署

這邊用一個範例程式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
contract simpleTest {

uint data = 123;

function getData() public view returns (uint) {
return data;
}

function addData(uint x) public {
data = data + x;
}


}

先在 file explorer 那邊新建檔案,把上述貼上去,我這裡命名檔案叫做 test.sol

之後如下圖點編譯的部分,參數都不用動,就單純編譯程式

intoruction remix


最後要部署

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

deploy sodility

解釋一些左邊部署的參數:

  • 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: 交易手續費

deploy sodility