上文 Web3 在Truffle項目中編寫出自己的第一個solidity智能合約我們演示了 在Truffle環(huán)境下寫一個智能合約并編譯的功能
編譯出的文件夾中的這個JSON就非常重要了 我們就可以通過 它這個ABI鏈接到需要的智能合約程序上去
但這也僅僅是編譯完了 我們的智能合約還沒有部署到我們的區(qū)塊鏈上
然后 我們在根目錄下的 migrations 目錄下創(chuàng)建一個 1_contract.js 注意 這里的文件 一定要以數(shù)字開頭
就我們在這個目錄創(chuàng)建文件時 就 1 什么什么 2 什么什么 3什么什么 以此類推 不然 我們在部署時 就會報錯
因為 如果你不遵循它的規(guī)范 它找不到 它只認(rèn)識以數(shù)字開頭的
我們編寫1_contract.js代碼如下
const Contacts = artifacts.require("StudentStorage.sol")
module.exports = function(deployer) {
deployer.deploy(Contacts)
}
這里 我們artifacts.require中的路徑 你只需要寫合約文件的名字 因為 他會自動幫你在contracts目錄下去找
然后 我們這里 如果你有多個只能合約
那就
const 合約1名稱 = artifacts.require("文件路徑")
const 合約2名稱 = artifacts.require("文件路徑")
const 合約3名稱 = artifacts.require("文件路徑")
module.exports = function(deployer) {
deployer.deploy(合約1名稱)
deployer.deploy(合約2名稱)
deployer.deploy(合約3名稱)
}
這樣就可以了
然后 我們在終端執(zhí)行
truffle migrate
這個命令的話 是先編譯 再執(zhí)行 所以 其實 他也包含了之前我們用的truffle compile 的功能
執(zhí)行之前 我們先通過 MetaMask 查看一下ganache環(huán)境中第一個用戶的ETH
然后 我們執(zhí)行命令
通過控制臺 我們可以看到 這個確實是先編譯 再部署
再回來看 MetaMask 我們第一個用戶的數(shù)據(jù)確實是變化了
那么 我們web3調(diào)用肯定現(xiàn)在是做不了 但是 我們?nèi)绻鳛橐粋€后端開發(fā)人員 我們開發(fā)一個程序 自己也肯定要測試啊
我們先在終端執(zhí)行
truffle console
進(jìn)入truffle控制臺
然后 我們輸入
const obj = await StudentStorage.deployed()
注意 StudentStorage是智能合約的名字 如果你的命名和我不一樣 就要根據(jù)自己合約的名字去改
這個命令執(zhí)行之后 我們就能拿到智能合約的一個對象了
執(zhí)行完之后 我們在終端輸入
obj
進(jìn)行對象訪問
可以看到 是一個非常大的對象
將來Web3 連接智能合約 拿到的一個對象 就是這樣的
我們可以在終端通過 合約對象.address
例如我這里
obj.address
看到他在鏈上的地址
那么 我們還是試試 調(diào)用我們的方法吧
終端輸入
obj.setData(33,"小貓貓")
這里就輸出了對應(yīng)內(nèi)容
這其實就是輸出了 你這個數(shù)據(jù)上鏈 消耗的燃料等信息
存都存了
那么 我們獲取一下吧
obj.getData()
我們的數(shù)據(jù)就回來了
通過年齡的返回 我們可以看到 uint 的處理相對特殊一點 但這個不用擔(dān)心 之后我們用web3 還是能將他處理成正常的數(shù)值類型文章來源:http://www.zghlxwxcb.cn/news/detail-540782.html
那么 我們合約中有一個 name 和 age 我們能不能直接通過合約對象去拿呢?
顯然拿不到
如果你想讓他也能直接訪問 那就還是public設(shè)置一下文章來源地址http://www.zghlxwxcb.cn/news/detail-540782.html
到了這里,關(guān)于Web3 處理智能合約部署到本地區(qū)塊鏈,并在本地進(jìn)行測試的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!