Moonbeam入门开发|第7课:介绍和使用web3.js与Moonbeam交互(下)
Moonbeam社区
编辑于 2021年11月17日 13:52

Moonbeam是Polkadot网络上的以太坊兼容智能合约平台,为原生互操作应用程序的开发提供便利。通过其以太坊兼容性,开发者能够以最低程度的代码调整在Moonbeam上部署现有的Solidity智能合约和Dapp前端。

作为在Polkadot网络上的平行链,Moonbeam也将受益于Polkadot中继链的共享安全性以及与其它Polkadot相关链的连接性。

为了使更多对Moonbeam技术充满热情和好奇的开发者能够参与进来,OneBlock+与Moonbeam共同推出了《Moonbeam入门 - 轻松开始跨链Solidity开发》课程,已于8月26日正式开课。上次我们介绍什么是Moonbeam平台跟它的一些特性,这节课就让我们来动手学习Moonbeam入门开发。以下是第七课文字版内容回顾。

本节课课程内容: 

1. 上期内容回顾

2. 使用web3.js与已部署的合约进行交互

3. 使用web3.js监听事件

4. 计算以太坊事件topic哈希值

上期回顾

- 用web3.js在Moonbeam上发送交易和部署智能合约

- 这期会继续使用Incrementor.sol示例智能合约

- 可以使用上期的部署,或重新部署

- 需要部署好的智能合约地址

本期程序文件和脚本地址

https://github.com/hyd628/OneBlockCourseScripts/tree/main/Week7

使用web3.js 读取智能合约数据

  • 先用vscode在上期的目录下创建文件:get.js用这个程序在智能合约上读取数据。 

  • 把providerRPC指向我们的部署(moonbase)

  • 首先要给一个abi跟一个智能合约地址,拿到后它会创立一个智能合约的实例,通过实例可以调用智能合约里的方法,这个方法叫number.

  • incrementer=5 

  • 运行get.js, 输入node get.js 

使用web3.js写入智能合约数据

  • 在项目目录下创建一个新的文件:increment.js

  • 填发送交易的私钥。

  • 设定数值:这个数值是要增加到incrementer智能合约里的数值。

  • 执行increment.js

使用web3.js 监听事件

  • 事件监听实例:blockheader.js

  • 创建web3的对象

  • 通过web3 来订阅事件:newBlockheaders

监听智能合约事件

  1. 在项目目录里面创建一个javascript 文件:contract-event.js

  2. 先创建一个web3对象,然后用web socket的端点

  3. 用web3.eth.subscribe 来订阅这个事件,事件的类型是’logs’

    1. 地址参数:为刚刚部署的incrementer智能合约的地址

    2. topics: 我们监听的事件主题。括号为空时即为监听所以事件,如要监听某个事件需输入事件哈希

Remix部署总结

计算以太坊Event Topic哈希值

1. 获得事件签名:

示例:

event Increment(address who, uint256 value, uint256 updated_number); 

事件签名为:

Increment(address,uint256,uint256) 

2. 计算事件签名的Keccak-256哈希:

 keccak-256(“Increment(address,uint256,uint256)”) = 

 “64f50d594c2a739c7088f9fc6785e1934030e17b52f1a894baec61b98633a59f”

 

ETH事件data数据字段解析

1.data: ‘0x00000000000000000000000044236223ab4291b93eed10e4b511b37a398dee55000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000005f’

2. 事件定义:    

event Increment(address who, uint256 value, uint256 updated_number);

3. 发送人地址:

44236223ab4291b93eed10e4b511b37a398dee55

  value:a(16进制的“10“)

  updated_number: 5f () (16进制的“95”)

相关资料

第七课课程视频链接:

shorturl.at/cqNO7

第七课课程作业链接:

https://wj.qq.com/s2/9075984/ccb2/

GitHubFAQ:

https://github.com/hyd628/OneBlockCourseScripts

Moonbeam网站:moonbeam.network

MoonbeamGitHub:github.com/PureStake/moonbeam

Moonbeam中文开发者文档:

https://docs.moonbeam.network/cn/

MoonbeamDiscord:https://discord.gg/PfpUATX

关于Moonbeam

Moonbeam是波卡(Polkadot)网络上的以太坊兼容智能合约平台,为原生互操作应用程序的开发提供便利。通过其以太坊兼容性,开发者能够以最低程度的代码调整在Moonbeam上部署现有的Solidity智能合约和Dapp前端。作为在波卡(Polkadot)网络上的平行链,Moonbeam也将受益于波卡(Polkadot)中继链的共享安全性以及与其它波卡(Polkadot)相关链的连接性。Moonbeam由PureStake团队开发,目前正在预上线阶段,主网计划于2021年第四季度上线。

如需了解更多信息,请访问:https://moonbeam.network/

关于Moonriver

Moonriver是Moonbeam的同行网络,旨在为激励实验提供永久性的测试环境。新上线项目的代码将优先部署到Moonriver,在其真实的经济环境下经历一系列的测试与实验验证。当验证完成并通过测试之后,项目代码才可正式部署至波卡上的Moonbeam。

如需了解更多信息,请访问:https://moonbeam.network/networks/moonriver/

更多 Moonbeam 信息

官网:https://moonbeam.network

微博:https://weibo.com/u/7606061434

Twitter:https://Twitter.com/MoonbeamNetwork

Telegram:https://t.me/moonbeam_CN

Discord:https://discord.gg/skPfXvJWG7

中文电报群助手:@MoonbeamSister

微信公众号:Moonbeam Community