
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
监听智能合约事件
在项目目录里面创建一个javascript 文件:contract-event.js
先创建一个web3对象,然后用web socket的端点
用web3.eth.subscribe 来订阅这个事件,事件的类型是’logs’
地址参数:为刚刚部署的incrementer智能合约的地址
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
