摘要:首先我們需要要記住,以太坊是由共享同一份數(shù)據(jù)的相同拷貝的節(jié)點構(gòu)成的。你可以運行你自己的以太坊節(jié)點來作為。在你部署智能合約以后,它將獲得一個以太坊上的永久地址。如果你還記得第二課,在以太坊上的地址是。
通過前邊的學(xué)習(xí),DApp 的 Solidity 合約部分就完成了?,F(xiàn)在我們來做一個基本的網(wǎng)頁好讓你的用戶能玩它。 要做到這一點,我們將使用以太坊基金發(fā)布的 JavaScript 庫 —— Web3.js.一、Web3.js簡介 什么是 Web3.js?
還記得么?以太坊網(wǎng)絡(luò)是由節(jié)點組成的,每一個節(jié)點都包含了區(qū)塊鏈的一份拷貝。當(dāng)你想要調(diào)用一份智能合約的一個方法,你需要從其中一個節(jié)點中查找并告訴它:
1、智能合約的地址
2、你想調(diào)用的方法,以及
3、你想傳入那個方法的參數(shù)
以太坊節(jié)點只能識別一種叫做 JSON-RPC 的語言。這種語言直接讀起來并不好懂。當(dāng)你你想調(diào)用一個合約的方法的時候,需要發(fā)送的查詢語句將會是這樣的:
// 哈……祝你寫所有這樣的函數(shù)調(diào)用的時候都一次通過 // 往右邊拉…… ==> {"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{"from":"0xb60e8dd61c5d32be8058bb8eb970870f07233155","to":"0xd46e8dd67c5d32be8058bb8eb970870f07244567","gas":"0x76c0","gasPrice":"0x9184e72a000","value":"0x9184e72a","data":"0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"}],"id":1}
幸運的是 Web3.js 把這些令人討厭的查詢語句都隱藏起來了, 所以你只需要與方便易懂的 JavaScript 界面進行交互即可。
你不需要構(gòu)建上面的查詢語句,在你的代碼中調(diào)用一個函數(shù)看起來將是這樣:
CryptoZombies.methods.createRandomZombie("Vitalik Nakamoto") .send({ from: "0xb60e8dd61c5d32be8058bb8eb970870f07233155", gas: "3000000" })
我們將在接下來的幾章詳細解釋這些語句,不過首先我們來把 Web3.js 環(huán)境搭建起來
準備工作取決于你的項目工作流程和你的愛好,你可以用一些常用工具把 Web3.js 添加進來:
// 用 NPM npm install web3 // 用 Yarn yarn add web3 // 用 Bower bower install web3 // ...或者其他。
甚至,你可以從 github直接下載壓縮后的 .js 文件 然后包含到你的項目文件中: