由于我一直在深入研究EOS dApp的开发,我看了不少好文章。在这里,我汇总了下做一些研究后得到的所有知识。在本文中,我将解释如何使用EOSJS和scatter。我假设你对智能合约以及如何在EOS区块链上部署它们有基本的了解,因为我将在本文中跳过该部分。

我们在构建什么?
我们正在构建一个简单的todo dApp。我们将为CRUD(创建,读取,更新和删除)操作编写智能合约,并将使用EOSJS和scatter与已部署的合同进行交互。CRUD操作包括创建,完成,删除和获取待办事项。我们将使用Jungle Testnet来部署我们的智能合约。

必备知识
EOS
EOSJS
Scatter
Scatter设置
Scatter用于为区块链签署交易,并在不泄露密钥的情况下向应用程序提供个人信息。要设置Scatter钱包,请关注这个视频。在Scatter设置中,必须在网络中添加Jungle testnet,其中包含以下详细信息:

Name: Jungle Testnet
Domain or IP: dev.cryptolions.io // It might be changed, so check for the latest one
Port: 38888
chainId:038f4b0fc8ff18a4f0842a8f0564611f6e96e8535901dd45e43ac8691a1c4dca

添加网络配置后,现在通过输入密钥对部分然后单击新建将你的私钥导入钱包。根据下图所示的表格填写关键信息。

11831773-f1551f531eefa064.png

image

现在,您应该使用密钥对添加标识。如果没有用,请转到“身份”部分并添加或编辑现有身份。在身份部分,选择网络,然后选择密钥对,它会要求您在链网上添加与该密钥相关联的帐户。 您应该添加具有活动权限的帐户。

你的scatter已全部设置好并可以在我们的dApp中使用。

11831773-2d7f6a65f38dc2f4.png

image

智能合约
要部署todo智能合约,请按照本文将其部署到Jungle Testnet上。确保能够从文章中提到的命令行与Testnet进行交互。

与Testnet交互
我正在使用ReactJS作为前端部分。完整的逻辑和流程位于src文件夹中名为index.jsx的单个文件中。以下是配置对象:

// 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();
};

现在,在这个对象中,我们有两个引用EOSClient和scatter,我们将分别用它们与EOS区块链和钱包进行交互。

我正在添加一个功能的代码,以使用EOSClient获取存储的数据(所有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。

总结
其中一个最大的优点是你无需在机器上维护钱包,scatter为我们管理一切。还有其他方法来托管钱包,但scatter对最终用户负责,开发人员不需要处理任何私人信息。github库

分享一个交互式的在线编程实战,EOS智能合约与DApp开发入门:

EOS教程

本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。

这里是原文

eos TODO EOS区块链上EOSJS和scatter开发dApp的更多相关文章

  1. 深入解读EOS源代码之——区块链内核

    EOS进入大众视野并且受到热议已经有一段时间了,各种热捧和争议过后,是时候让我们静下来搞清楚EOS到底是一个什么样的产品.本文从技术角度深入的分析EOS底层设计,从源代码入手,一层层揭开EOS区块链底 ...

  2. PPT分享 | 怎么在区块链上保护隐私?

    艾伯特AI人工智能(公众号:aibbtcom)按: (编者按:在12月3日的亚太区以太坊社区培训和交流Meetup深圳站上,Vitalik作了<怎么在区块链上保护隐私>的演讲,谈到了区块链 ...

  3. 在区块链上表白——使用C#将一句话放入比特币的区块链上

    最近在看区块链和比特币的知识,顺便简单研究了一下BitCoin的脚本语言,发现OP_RETURN这个命令可以在后面放入自己想说的内容,很多侧链啊,公证之类就是利用了这个特性,可以把一句话,或者一个哈希 ...

  4. [币严区块链]以太坊(ETH)Dapp开发入门教程之宠物商店领养游戏

    阅读本文前,你应该对以太坊.智能合约有所了解,如果你还不了解,建议你先看以太坊是什么 除此之外,你最好还了解一些HTML及JavaScript知识. 本文通过实例教大家来开发去中心化应用,应用效果如图 ...

  5. todo:区块链????????

    2018年这个春节,人人都在讲btc.ico.区块链. 恶补了几天区块链的知识和文章,一总结就是:一头雾水,没有哪个vc.创业者.技术人员 讲明白区块链到底是什么,技术上如何实现,就是哪些研读过中本聪 ...

  6. 为什么RChain区块链上一定要有REV?

    RChain区块链网络上一定要有REV吗?它的作用是什么?在这篇文章里,RChain创始人Mr. Greg Meredith做了详细解读,便于业界和社区对RChain网络有更深入的认识. 作者:Gre ...

  7. IBM & Howdoo – 区块链上的智能社交

    原文链接:https://www.themsphub.com/ibm-howdoo-smart-social-on-the-blockchain 我们很高兴地宣布,我们成为了一个令人兴奋的新社交网络的 ...

  8. 2019金融科技风往哪儿吹?蚂蚁金服联合20余家金融机构预测新年热点:5G、区块链上榜

    2019年,金融科技的风向标在哪里?哪些板块成新宠,哪些科技成潮流? 1月4日,蚂蚁金服ATEC城市峰会在上海举行.大会上,蚂蚁金服与20余家金融机构一起预测了2019年金融科技的发展. “未来金融会 ...

  9. [区块链] 带你进入Bitcoin开发 - 环境搭建

    学习完区块链枯燥乏味的.高深的.必备的基础知识后,终于可以走上开发之路了!真是迫不及待啦!之后博客更新主要放在区块链的开发上,相信这才是大多数同学更加感兴趣的地方!学习过程从最经典的区块链鼻祖-比特币 ...

随机推荐

  1. Java导包后在测试类中执行正确但在Servlet中执行错误报ClassNotFoundException或者ClassDefNotFoundException解决办法

    将原来导的包remove from build path,并复制到Web-root下的lib目录中,再add to build path,

  2. 通过代码退出IOS程序

    -(void) tapClick:(UITapGestureRecognizer *)tap{ [UIViewbeginAnimations:@"exitApplication"c ...

  3. No active profile set, falling back to default profiles: default

    No active profile set, falling back to default profiles: default 这个错误是由于idea没有设置默认启动环境,设置即可

  4. jquery file upload使用

    <!-- jquery file upload相关js --> <script src="/js/jquery-file-upload/js/jquery.ui.widge ...

  5. Unbnutu下安装Apache,Mysql,php,phpmyadmin

    先写一键部署脚本,肯定是先要知道如何手动安装Apache,Mysql,php,phpmyadmin 一  Apache2的安装 apt install apache2 安装好之后,手动看一下apach ...

  6. 一个博客萌新的C语言之旅(持续更新中....)

    先更新上一次留下的的C语言练习答案,如下: #include <stdio.h> double mj(double r) { return 3.14*r*r; } int main() { ...

  7. python学习笔记(四):pandas基础

    pandas 基础 serise import pandas as pd from pandas import Series, DataFrame obj = Series([4, -7, 5, 3] ...

  8. python习题20190130

    #encoding=utf-8 ''' 一家商场在降价促销.如果购买金额50-100元(包含50元和100元)之间,会给10%的折扣,如果购买金额大于100元会给20%折扣.编写一程序,询问购买价格, ...

  9. cgywin下 hadoop运行 问题

    1 cgywin下安装hadoop需要配置JAVA_home变量 ,  此时使用 window下安装的jdk就可以  ,但是安装路径不要带有空格.否则会不识别. 2  在Window下启动Hadoop ...

  10. CF 96 D. Volleyball

    D. Volleyball http://codeforces.com/contest/96/problem/D 题意: n个路口,m条双向路,每条长度为w.每个路口有一个出租车司机,最多可以乘坐这辆 ...