简介
使用Substrate构建的与Ethereum 兼容的平行链。它引用了frontier的代码。
Moonbeam 是一个面向开发者的区块链,致力于提供与现有以太坊开发者工具链和网络的兼容性。它通过提供完整的 EVM 实现、与 Web3 兼容的 API 以及将 Moonbeam 连接到现有以太坊网络的桥梁来实现这一点。这允许开发人员以最少的更改将现有的 Solidity 智能合约和 DApp 前端部署到 Moonbeam。
Moonbeam 也将成为 Polkadot 网络上的平行链。这意味着它将从 Polkadot 中继链获得共享安全性,并且能够与连接到 Polkadot 的其他链集成。
部署
- clone源码
git clone -b v0.13.2 https://github.com/PureStake/moonbeam
cd moonbeam
- 编译
cargo build --release
3.运行
./target/release/moonbeam --dev
您应该会看到如下所示的输出,显示等待生成块的空闲状态:
2021-10-20 15:33:19 Running in --dev mode, RPC CORS has been disabled.
2021-10-20 15:33:19 Moonbeam Parachain Collator
2021-10-20 15:33:19 ✌️ version 0.13.2-aa753d26d-x86_64-macos
2021-10-20 15:33:19 ❤️ by PureStake, 2019-2021
2021-10-20 15:33:19 📋 Chain specification: Moonbase Development Testnet
2021-10-20 15:33:19 🏷 Node name: sedate-monkey-5935
2021-10-20 15:33:19 👤 Role: AUTHORITY
2021-10-20 15:33:19 💾 Database: RocksDb at /Users/kuangqiling/Library/Application Support/moonbeam/chains/moonbase_dev/db
2021-10-20 15:33:19 ⛓ Native runtime: moonbase-800 (moonbase-0.tx2.au3)
2021-10-20 15:33:19 Using default protocol ID "sup" because none is configured in the chain specs
2021-10-20 15:33:19 🏷 Local node identity is: 12D3KooWH1WRAm4QNKfDEjRWNnqP7Uma95FrCrX4sZy7ncJc3XoR
2021-10-20 15:33:21 📦 Highest known block at #11
2021-10-20 15:33:21 〽️ Prometheus exporter started at 127.0.0.1:9615
2021-10-20 15:33:21 Listening for new connections on 127.0.0.1:9944.
2021-10-20 15:33:21 Development Service Ready
2021-10-20 15:33:26 💤 Idle (0 peers), best: #11 (0xb9a4…0629), finalized #0 (0x2b22…a518),
连接polkadot-js
开发节点是基于 Substrate 的节点,因此您可以使用标准 Substrate 工具与其交互。提供的两个 RPC 端点是:
- HTTP: http://127.0.0.1:9933
- WS: ws://127.0.0.1:9944
首先使用 Polkadot.js 应用程序连接到它。打开浏览器:https://polkadot.js.org/apps/#/explorer。这将打开 Polkadot.js Apps,它会自动连接到 Polkadot MainNet。
单击左上角打开菜单以配置网络,然后向下导航以打开开发子菜单。在那里,您需要切换“本地节点”选项,该选项将 Polkadot.js 应用程序指向ws://127.0.0.1:9944. 接下来,选择 Switch 按钮,站点应该连接到您的 Moonbeam 开发节点。
连接 Polkadot.js 应用程序后,您将看到 Moonbeam 开发节点等待交易到达以开始生成块。
使用metamask查看账户状态
- 配置网络
- 导入密钥
开发节点带有 10 个有资金的开发帐户
助记词:
bottom drive obey lake curtain smoke basket hold race lonely fit walk
Alith:
Public Address: 0xf24FF3a9CF04c71Dbc94D0b566f7A27B94566cac
Private Key: 0x5fb92d6e98884f76de468fa3f6278f8807c48bebc13595d45af5bdc4da702133
Baltathar:
Public Address: 0x3Cd0A705a2DC65e5b1E1205896BaA2be8A07c6e0
Private Key: 0x8075991ce870b93a8870eca0c0f91913d12f47948ca0fd25b49c6fa7cdbeee8b
Charleth:
Public Address: 0x798d4Ba9baf0064Ec19eB4F0a1a45785ae9D6DFc
Private Key: 0x0b6e18cafb6ed99687ec547bd28139cafdd2bffe70e6b688025de6b445aa5c5b
Dorothy:
Public Address: 0x773539d4Ac0e786233D90A233654ccEE26a613D9
Private Key: 0x39539ab1876910bbf3a223d84a29e28f1cb4e2e456503e7e91ed39b2e7223d68
Ethan:
Public Address: 0xFf64d3F6efE2317EE2807d223a0Bdc4c0c49dfDB
Private Key: 0x7dce9bc8babb68fec1409be38c8e1a52650206a7ed90ff956ae8a6d15eeaaef4
Faith:
Public Address: 0xC0F0f4ab324C46e55D02D0033343B4Be8A55532d
Private Key: 0xb9d2ea9a615f3165812e8d44de0d24da9bbd164b65c4f0573e1ce2c8dbd9c8df
Goliath:
Public Address: 0x7BF369283338E12C90514468aa3868A551AB2929
Private Key: 0x96b8a38e12e1a31dee1eab2fffdf9d9990045f5b37e44d8cc27766ef294acf18
Heath:
Public Address: 0x931f3600a299fd9B24cEfB3BfF79388D19804BeA
Private Key: 0x0d6dcaaef49272a5411896be8ad16c01c35d6f8c18873387b71fbc734759b0ab
Ida:
Public Address: 0xC41C5F1123ECCd5ce233578B2e7ebd5693869d73
Private Key: 0x4c42532034540267bf568198ccec4cb822a025da542861fcb146a5fab6433ff8
Judith:
Public Address: 0x2898FE7a42Be376C8BC7AF536A940F7Fd5aDd423
Private Key: 0x94c49300a58d576011096bcb006aa06f5a91b34b4383891e8029c21dc39fbb8b
导入其中某个Private Key到metamask
- 我们可以看到 余额能正常显示
使用remix部署智能合约
- 打开https://remix.ethereum.org/,并打开示例Owner.sol
- 编译
- 却换到部署tab
填写rpc 接口地址
- 打开metamsk 选择连接账户,即可在deploy界面看到账户及余额
5.填写 gas limit 点击部署
- metamask界面会自动打开,点击确认
- console会显示部署状态
- 在polkadot.js打开区块12 查看交易
- evm log会显示合约地址
- 在deploy界面 输入合约地址 并点击 At address
- 点击展开,下面会出来合约的方法,
- 点击getOwner,获取当前Owner
- 在 address newOwner里输入另外一个账户地址,并点击changeOwner
- 这时会打开metamask 再点击确认,即完成了一次合约调用
- 再点击getOwner,此时已经能显示新的地址,说明合约方法调用成功
使用truffle发布一个token
Truffle v5.4.15 (core: 5.4.15)
Solidity - ^0.7.0 (solc-js)
Node v15.12.0
Web3.js v1.5.3
- clone 项目
git clone https://github.com/PureStake/moonbeam-truffle-box
cd moonbeam-truffle-box
- 安装依赖
yarn install
- 修改配置文件truffle-config.js
替换你的私钥
const HDWalletProvider = require('@truffle/hdwallet-provider');
// Moonbeam Development Node Private Key
const privateKeyDev =
'0x5fb92d6e98884f76de468fa3f6278f8807c48bebc13595d45af5bdc4da702133';
//...
module.exports = {
networks: {
dev: {
provider: () => {
...
return new HDWalletProvider(privateKeyDev, 'http://127.0.0.1:9933')
},
network_id: 1281, // 0x501 in hex,
},
//...
},
plugins: ['moonbeam-truffle-plugin']
};
- truffle box里有一个erc-20代币合约
contracts/MyToken.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.7.5;
// Import OpenZeppelin Contract
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
// This ERC-20 contract mints the specified amount of tokens to the contract creator.
contract MyToken is ERC20 {
constructor(uint256 initialSupply) ERC20("MyToken", "MYTOK")
{
_mint(msg.sender, initialSupply);
}
}
- 编译
- 部署
truffle migrate --network dev
Compiling your contracts...
===========================
✔ Fetching solc version list from solc-bin. Attempt #1
> Everything is up to date, there is nothing to compile.
Starting migrations...
======================
> Network name: 'dev'
> Network id: 1281
> Block gas limit: 15000000 (0xe4e1c0)
1_initial_migration.js
======================
Deploying 'Migrations'
----------------------
> transaction hash: 0xeb0b1dca071fa9293a3000a98d2ab54587d00888cc0818c9d21c078e8acd2f7b
> Blocks: 0 Seconds: 0
> contract address: 0xc01Ee7f10EA4aF4673cFff62710E1D7792aBa8f3
> block number: 1
> block timestamp: 1634730056
> account: 0xf24FF3a9CF04c71Dbc94D0b566f7A27B94566cac
> balance: 1207825.819455434174706176
> gas used: 159195 (0x26ddb)
> gas price: 1 gwei
> value sent: 0 ETH
> total cost: 0.000159195 ETH
> Saving migration to chain.
> Saving artifacts
-------------------------------------
> Total cost: 0.000159195 ETH
2_deploy_contracts.js
=====================
Deploying 'MyToken'
-------------------
> transaction hash: 0x0b42ece0d7c1cbbba5d55e77ffa2b520b6092e1ec2e9f0f09c9d461b7a4fc1e7
> Blocks: 0 Seconds: 0
> contract address: 0x3ed62137c5DB927cb137c26455969116BF0c23Cb
> block number: 3
> block timestamp: 1634730057
> account: 0xf24FF3a9CF04c71Dbc94D0b566f7A27B94566cac
> balance: 1207825.818306403174706176
> gas used: 1106693 (0x10e305)
> gas price: 1 gwei
> value sent: 0 ETH
> total cost: 0.001106693 ETH
> Saving migration to chain.
> Saving artifacts
-------------------------------------
> Total cost: 0.001106693 ETH
Summary
=======
> Total deployments: 2
> Final cost: 0.001265888 ETH
-
打开polkadot-js,查看合约交易
-
在metamask导入合约
0x3ed62137c5DB927cb137c26455969116BF0c23Cb
,即可查看到余额
-
转账测试 (不支持?)
转到下面的地址
Public Address: 0x3Cd0A705a2DC65e5b1E1205896BaA2be8A07c6e0
Private Key: 0x8075991ce870b93a8870eca0c0f91913d12f47948ca0fd25b49c6fa7cdbeee8b