今天就跟大家聊聊有關(guān)在EOS區(qū)塊鏈上使用EOSJS和scatter開發(fā)dApp,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
創(chuàng)新互聯(lián)建站2013年至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元凌云做網(wǎng)站,已為上家服務(wù),為凌云各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575
我匯總了下做一些研究后得到的所有知識(shí)。我將解釋如何使用EOSJS和scatter。
我們正在構(gòu)建一個(gè)簡(jiǎn)單的todo dApp。我們將為CRUD(創(chuàng)建,讀取,更新和刪除)操作編寫智能合約,并將使用EOSJS和scatter與已部署的合同進(jìn)行交互。CRUD操作包括創(chuàng)建,完成,刪除和獲取待辦事項(xiàng)。我們將使用Jungle Testnet來(lái)部署我們的智能合約。
EOS
EOSJS
Scatter
Scatter用于為區(qū)塊鏈簽署交易,并在不泄露密鑰的情況下向應(yīng)用程序提供個(gè)人信息。要設(shè)置Scatter錢包,請(qǐng)關(guān)注這個(gè)視頻。在Scatter設(shè)置中,必須在網(wǎng)絡(luò)中添加Jungle testnet,其中包含以下詳細(xì)信息:
Name: Jungle Testnet Domain or IP: dev.cryptolions.io // It might be changed, so check for the latest one Port: 38888 chainId:038f4b0fc8ff18a4f0842a8f0564611f6e96e8535901dd45e43ac8691a1c4dca
添加網(wǎng)絡(luò)配置后,現(xiàn)在通過(guò)輸入密鑰對(duì)部分然后單擊新建將你的私鑰導(dǎo)入錢包。根據(jù)下圖所示的表格填寫關(guān)鍵信息。
現(xiàn)在,您應(yīng)該使用密鑰對(duì)添加標(biāo)識(shí)。如果沒(méi)有用,請(qǐng)轉(zhuǎn)到“身份”部分并添加或編輯現(xiàn)有身份。在身份部分,選擇網(wǎng)絡(luò),然后選擇密鑰對(duì),它會(huì)要求您在鏈網(wǎng)上添加與該密鑰相關(guān)聯(lián)的帳戶。 您應(yīng)該添加具有活動(dòng)權(quán)限的帳戶。
你的scatter已全部設(shè)置好并可以在我們的dApp中使用。
要部署todo智能合約,請(qǐng)按照本文將其部署到Jungle Testnet上。確保能夠從文章中提到的命令行與Testnet進(jìn)行交互。
我正在使用ReactJS作為前端部分。完整的邏輯和流程位于src文件夾中名為index.jsx的單個(gè)文件中。以下是配置對(duì)象:
// Config for scatter and eosjs const EOS_CONFIG = { contractName: “xyz”, // Contract name contractSender: “xyz”, // User executing the contract (should be paired with private key) network: { protocol: “http”, blockchain: “eos”, host: “dev.cryptolions.io”, port: 38888, chainId: “038f4b0fc8ff18a4f0842a8f0564611f6e96e8535901dd45e43ac8691a1c4dca” // get this using http://dev.cryptolions.io:38888/v1/chain/get_info }, eosOptions: {} };
與scatter交互:
import EOS from ‘eosjs’; document.addEventListener(`scatterLoaded`, this.onScatterLoad); onScatterLoad = () => { const scatter = window.scatter; window.scatter = null; // Here, we are connecting scatter with eosjs so that the transactions can be signed using keys present in scatter this.eosClient = scatter.eos( EOS_CONFIG.network, EOS, EOS_CONFIG.eosOptions, EOS_CONFIG.network.protocol ); // scatter object to collect the information present in wallet like accounts or public key this.scatter = scatter; // to load the data present in our table this.loadTodos(); };
現(xiàn)在,在這個(gè)對(duì)象中,我們有兩個(gè)引用EOSClient和scatter,我們將分別用它們與EOS區(qū)塊鏈和錢包進(jìn)行交互。
我正在添加一個(gè)功能的代碼,以使用EOSClient獲取存儲(chǔ)的數(shù)據(jù)(所有todos),你可以在src/index.jsx
中檢查其余功能:
loadTodos() { this.eosClient.getTableRows({ code: EOS_CONFIG.contractName, scope: EOS_CONFIG.contractName, table: “todos”, json: true }).then(data => { this.setState({ todos: data.rows }); }).catch(e => { console.error(e); }); }
要獲取帳戶,請(qǐng)使用scatter對(duì)象的getIdentity()
:
const { accounts } = await scatter.getIdentity({ accounts: [config.EOS_CONFIG.network] });
這樣就ok。
看完上述內(nèi)容,你們對(duì)在EOS區(qū)塊鏈上使用EOSJS和scatter開發(fā)dApp有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。