EOS區(qū)塊鏈上EOSJS和scatter開發(fā)dApp

由于我一直在深入研究EOS dApp的開發(fā)安皱,我看了不少好文章艇炎。在這里,我匯總了下做一些研究后得到的所有知識缀踪。在本文中虹脯,我將解釋如何使用EOSJS和scatter奏候。我假設(shè)你對智能合約以及如何在EOS區(qū)塊鏈上部署它們有基本的了解,因?yàn)槲覍⒃诒疚闹刑^該部分鼻由。

我們在構(gòu)建什么厚棵?

我們正在構(gòu)建一個(gè)簡單的todo dApp蕉世。我們將為CRUD(創(chuàng)建婆硬,讀取,更新和刪除)操作編寫智能合約彬犯,并將使用EOSJS和scatter與已部署的合同進(jìn)行交互。CRUD操作包括創(chuàng)建湖蜕,完成,刪除和獲取待辦事項(xiàng)昭抒。我們將使用Jungle Testnet來部署我們的智能合約。

必備知識

  • EOS
  • EOSJS
  • Scatter

Scatter設(shè)置

Scatter用于為區(qū)塊鏈簽署交易炼杖,并在不泄露密鑰的情況下向應(yīng)用程序提供個(gè)人信息。要設(shè)置Scatter錢包熙含,請關(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)在通過輸入密鑰對部分然后單擊新建將你的私鑰導(dǎo)入錢包员帮。根據(jù)下圖所示的表格填寫關(guān)鍵信息。

image

現(xiàn)在捞高,您應(yīng)該使用密鑰對添加標(biāo)識渣锦。如果沒有用氢哮,請轉(zhuǎn)到“身份”部分并添加或編輯現(xiàn)有身份。在身份部分冗尤,選擇網(wǎng)絡(luò),然后選擇密鑰對裂七,它會(huì)要求您在鏈網(wǎng)上添加與該密鑰相關(guān)聯(lián)的帳戶。 您應(yīng)該添加具有活動(dòng)權(quán)限的帳戶腰吟。

你的scatter已全部設(shè)置好并可以在我們的dApp中使用。

image

智能合約

要部署todo智能合約毛雇,請按照本文將其部署到Jungle Testnet上。確保能夠從文章中提到的命令行與Testnet進(jìn)行交互侦镇。

與Testnet交互

我正在使用ReactJS作為前端部分。完整的邏輯和流程位于src文件夾中名為index.jsx的單個(gè)文件中壳繁。以下是配置對象:

// 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è)對象中氮趋,我們有兩個(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);
});
}

要獲取帳戶,請使用scatter對象的getIdentity()

const { accounts } = await scatter.getIdentity({
accounts: [config.EOS_CONFIG.network]
});

這樣就ok灼擂。

總結(jié)

其中一個(gè)最大的優(yōu)點(diǎn)是你無需在機(jī)器上維護(hù)錢包,scatter為我們管理一切觉至。還有其他方法來托管錢包,但scatter對最終用戶負(fù)責(zé),開發(fā)人員不需要處理任何私人信息峻贮。github庫

分享一個(gè)交互式的在線編程實(shí)戰(zhàn),EOS智能合約與DApp開發(fā)入門

EOS教程

本課程幫助你快速入門EOS區(qū)塊鏈去中心化應(yīng)用的開發(fā)挂捻,內(nèi)容涵蓋EOS工具鏈船万、賬戶與錢包、發(fā)行代幣耿导、智能合約開發(fā)與部署、使用代碼與智能合約交互等核心知識點(diǎn)碎节,最后綜合運(yùn)用各知識點(diǎn)完成一個(gè)便簽DApp的開發(fā)。

這里是原文

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市介粘,隨后出現(xiàn)的幾起案子殖氏,更是在濱河造成了極大的恐慌雅采,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件婚瓜,死亡現(xiàn)場離奇詭異刑棵,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蛉签,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門胡陪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來柠座,“玉大人,你說我怎么就攤上這事妈经。” “怎么了吹泡?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長荞胡。 經(jīng)常有香客問我妈踊,道長,這世上最難降的妖魔是什么泪漂? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任廊营,我火速辦了婚禮,結(jié)果婚禮上萝勤,老公的妹妹穿的比我還像新娘露筒。我一直安慰自己,他們只是感情好敌卓,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布慎式。 她就那樣靜靜地躺著,像睡著了一般趟径。 火紅的嫁衣襯著肌膚如雪瘪吏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天蜗巧,我揣著相機(jī)與錄音掌眠,去河邊找鬼。 笑死幕屹,一個(gè)胖子當(dāng)著我的面吹牛蓝丙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播望拖,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼渺尘,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了说敏?” 一聲冷哼從身側(cè)響起鸥跟,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎像云,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腋逆,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡等脂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年上遥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了粉楚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,646評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖饮潦,靈堂內(nèi)的尸體忽然破棺而出继蜡,到底是詐尸還是另有隱情稀并,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布灵莲,位于F島的核電站,受9級特大地震影響线欲,放射性物質(zhì)發(fā)生泄漏汽摹。R本人自食惡果不足惜逼泣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一嗜憔、第九天 我趴在偏房一處隱蔽的房頂上張望氏仗。 院中可真熱鬧,春花似錦币励、人聲如沸珊拼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽莱革。三九已至,卻和暖如春盅视,著一層夾襖步出監(jiān)牢的瞬間闹击,已是汗流浹背成艘。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工断箫, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留秋冰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像虽另,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子鸳惯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 說到中文系,想到最多的就是看書辅鲸,古代的独悴、現(xiàn)代的、近代的决采、國內(nèi)的坟奥、國外的爱谁。而我就是這苦逼的孩子每天在老師的摧殘...
    湯圓村土著閱讀 417評論 0 1
  • 人都會(huì)有自私的時(shí)候凉敲,當(dāng)你覺得別人在你面前很自私的時(shí)候爷抓,你有沒有想過自己對別人是怎樣的態(tài)度 我一向認(rèn)為脾氣大就是沒教...
    天啊我才是七七閱讀 141評論 0 0
  • 今天6點(diǎn)就出去跑步,因?yàn)楹徒憬慵s好的。 整個(gè)村都沒有蘇醒据悔,天黑黑,很冷?_?朱盐,我沒有一絲困意的爬起來兵琳,來回跑了8公...
    Ada彩英閱讀 197評論 0 0
  • 你們知道今天是什么日子嗎者春?今天是正月初一清女,也就是春節(jié)嫡丙!你們老師有沒有讓你們寫一篇關(guān)于春節(jié)的作文曙博?如果有的話...
    萌萌噠寶貝_1c97閱讀 205評論 0 1