上一篇提到Remix、如何透過區塊鏈瀏覽器查看合約以及BlockChain模擬器來了解為什麼區塊鏈無法竄改,這篇則是教你一些需要先了解的基礎知識!

Solidity入門教學(0),Remix編譯器、如何查看合約
這篇Solidity入門教學,是教你關於開始學習Solidity前需要知道的事項,像是Remix編譯器與如何查看Etherscan上的合約來學習! Solidity Remix介紹 學習Solidity前,先確保你有安裝MetaMask,如果還沒安裝的話可以參考這篇文章,以及到這個網站領取Rinkeby測試網的幣唷,https://faucets.chain.link/。 MetaMask教學,如何建立小狐狸錢包? 在開始介紹Solidity的知識前,會先介紹一下官方的編譯器,以便之後學習時可以在上方測試合約有無問題,如果想下載桌機版本也有附Github連結,但我覺得目前線上的就很夠用囉。 點進去Remix線上編譯器之後會顯示如下,接著會介紹一下基本功能有哪些、如何使用等,首先白線是Workspaces的建立、重新命名、刪除、下載、上傳等。 而藍線是新增檔案、新增資料夾、上傳檔案至GitHub、上傳本機檔案,建議新增合約的檔案可以在contracts中建立,而Solidity合約的副檔名為.sol。 左側第三個是編譯,版本通常會根據你合約寫的內容自動調整版本,Auto

SPDX License 授權宣告

通常智能合約都會透明,但不是每個人都希望自己的合約被複製或是改編,所以常見的有兩種標示,如果你的合約程式碼開源可以在開頭標示如下:

// SPDX-License-Identifier: MIT

若是不希望被改寫或複製使用,則可以標示如下:

// SPDX-License-Identifier: UNLICENSED

不過當然不止這兩種用法,想知道更詳細的SPDX資訊可以參考這篇 SPDX ID,智能合約通常都是第一種為常見的,所以練習時可以先在Contract開頭輸入第一種即可。

如果沒有打的話他會跳出 "Warning:SPDX license identifier not provided in source file.",所以要記得打上會比較好喔!

Solidity 版本宣告

除了授權外還需要標示合約所使用的Solidity版本,下方的範例就是Solidity版本不能低於0.8.0,這裡也提醒記得補上分號";",才不會顯示錯誤!

pragma solidity ^0.8.0;

下方的表示則是可以使用大於等於0.7.0與小於0.8.0的Solidity版本編譯。

pragma solidity >=0.7.0 <0.8.0;

會需要設定版本範圍是因為假如目前的0.7.0版本有什麼Bug,就能調整為0.7.1的版本來修復Bug。

Solidity 合約宣告

這個是命名合約的名稱,假如之後有導入合約的話,使用的是你在這裡命名的合約名稱,而非合約的檔案名稱(.sol結尾)。

contract Geekaz{
}

Solidity 方法函式

先用簡單的函式說明,FunctionName可以自行設定,但不能與裡面的保留字重疊,像是public、uint這類的。

在這之前先建立一個可見的正整數a,之後這個函式的設定我們可以輸入uint(正整數),輸入的數字為x,a會等於x,所以a就會被改變。

uint256 public a;
function FunctionName(uint x) public {
    a = x;
}

Solidity 數值類型

目前常見的數值類型分別有bool(布林值)、string(字串)、int(整數)、uint(正整數),而int/uint有時會看到uint8、uint16、uint32...uint256等等。

舉例來說uint8就是能儲存2的8次方,也就是0~255的數字,超過的話就會顯示Error,因為是從0開始所以到255總共會有256個數字。

總結

今天所提到的如下,可以在Remix試試,下一片會提到public、internal、external、private等等的,以及差別在哪裡!

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract Geekaz{
    uint256 public a;
    function FunctionName(uint x) public {
        a = x;
    }
}

這次的第一篇教學就到這邊,之後就直接從合約來教你如何看懂合約,熊市特別需要學習,所以請大家學習多多分享,也可以到阿高的 Discord 共同討論唷!