Table of Contents

我們在上一篇 開發你的第一個DApp (二) 中,準備好了Loaclhost與metamask測試錢包及ETH測試幣。如此一來我們就可以在這個環境下,試著產生一個智能合約。

智能合約的概念

智能合約內存放了若干規則,寫明了日後當使用這份合約的時候,應該要如何在blockchain上讀取與寫入資料,而資料需以字串 (string) 的方式儲存。所以我們可以根據這份合約內的規則,寫入 (write) 一些字串到blockchain上,也能從blockchain上取回 (retrieve) 已放上去的字串資料。

在 project 的所在的位置下,可以找到 contracts/Gretter.sol ,這是我們在 開發你的第一個DApp (一) 創建的sample project當中的一個檔案,裡面是一個簡易的智能合約示例:

打開檔案後會看見一份有點像是javascript,又不完全像的內容

這是一份 Solidity 檔案,由以下的部分組成,詳細文件可以參考官方說明

• 指定編譯器版本
• import 所需的套件
• 為contract命名
• 在contract內撰寫所需的functions,通常會包含字串的寫入與取回,而在這份檔案內是用js撰寫的

將內容加上附註說明後,就比較清楚了

Compile your smart contract

接下來我們需要compile這份合約,以便我們之後與合約、區塊鏈進行互動。(原理可以參考ABI)

npx hardhat compile

完成後,在這裡會產生兩份新檔案:
• src/artifacts/contracts/Greeter.sol/Greeter.json
• src/artifacts/contracts/Greeter.sol/Greeter.dbg.json

其中 Greeter.json 打開就是json形式的智能合約,裡面也自動產生了bytecode與deployedBytecode等參數。