工具安裝及啟動(dòng)
ganache-cli
npm install -g ganache-cli
這里有個(gè)屬性很重要allowUnlimitedContractSize(Allows unlimited contract sizes while debugging)
ganache-cli -l 20000000000 --allowUnlimitedContractSize
remix(建議用remix-ide)
npm install -g remix-ide
remix-ide
合約地址
FoMo3DWorld(精簡版)
FoMo3DWorld:
https://etherscan.io/address/0xf1ae594cefee0bf519f227f3262ee2a851b14b9a#code
PlayerBook:
https://etherscan.io/address/0x789C537cE585595596D3905f401235f5A85B11d7#code
FoMo3Dlong(原版)
https://etherscan.io/address/0xa62142888aba8370742be823c1782d17a0389da1#code
為了方便,筆者這里使用精簡版(原版需要進(jìn)行合約拆分以及閉源合約的實(shí)現(xiàn))
合約編譯和部署
remix-ide配置
- 打開remix-ide, 勾選Compile下的Autocompile
- 將Run一欄下的Environment設(shè)置為Injected Web3(配合metamask使用)
拷貝合約
合約部署
- 首先部署PlayerBook合約
- 將FoMo3DWorld中的PlayerBookInterface的合約地址替換為PlayerBook合約地址
- 部署FoMo3DWorld合約
游戲激活
- 首先調(diào)用PlayerBook合約下的addGame方法,形如:
{
"address _gameAddress": "3b2970ebeF19d241965744115396ca01EeA811da",
"string _gameNameStr": "f3dw"
}
==注意==
_gameAddress不能以0x開頭,所以這里改用去掉0x的FoMo3dWorld合約地址字符串
調(diào)用的時(shí)候適度增加gas可以提高成功率喲.
- 激活合約
調(diào)用FoMo3DWorld的active方法
到這里我們的合約就部署完成了
前端頁面
- 直接ctrl+s下載原版頁面
- 替換合約地址
- 修改provider地址
項(xiàng)目啟動(dòng)
直接npm run dev
常見問題及解答
- out of gas 、Exceeds block gas limit和oversized data
這是由于合約太大,建議拆解合約、設(shè)置optimize(測試網(wǎng)的話,比如ganache-cli 可以設(shè)置allowUnlimitedContractSize屬性)
- remix調(diào)試合約,經(jīng)常報(bào)錯(cuò)revert(特別是這個(gè)引用外部合約的合約,debugger難以定位準(zhǔn)確)
這種情況建立將Remix-Run-Environment設(shè)置為JavaScript vm(相信我,這絕對是個(gè)調(diào)試神器)