我們在上一篇 開發你的第一個DApp (二) 中,準備好了Loaclhost與metamask測試錢包及ETH測試幣。如此一來我們就可以在這個環境下,試著產生一個智能合約。
智能合約的概念
智能合約內存放了若干規則,寫明了日後當使用這份合約的時候,應該要如何在blockchain上讀取與寫入資料,而資料需以字串 (string) 的方式儲存。所以我們可以根據這份合約內的規則,寫入 (write) 一些字串到blockchain上,也能從blockchain上取回 (retrieve) 已放上去的字串資料。
在 project 的所在的位置下,可以找到 contracts/Gretter.sol ,這是我們在 開發你的第一個DApp (一) 創建的sample project當中的一個檔案,裡面是一個簡易的智能合約示例:
這是一份 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等參數。