共计 2464 个字符,预计需要花费 7 分钟才能阅读完成。
由于我一直在深入研究 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
添加网络配置后,现在通过输入密钥对部分然后单击新建将你的私钥导入钱包。根据下图所示的表格填写关键信息。
现在,您应该使用密钥对添加标识。如果没有用,请转到“身份”部分并添加或编辑现有身份。在身份部分,选择网络,然后选择密钥对,它会要求您在链网上添加与该密钥相关联的帐户。您应该添加具有活动权限的帐户。
你的 scatter 已全部设置好并可以在我们的 dApp 中使用。
智能合约
要部署 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 的开发。
这里是原文