IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> 在Substrate链上跑evm智能合约(Frontier) -> 正文阅读

[区块链]在Substrate链上跑evm智能合约(Frontier)

简介

Frontier 是 Substrate 的以太坊兼容层。它允许您运行未经修改以太坊 dapp。
以太坊兼容层的目标是能够:

  • 通过兼容层运行一个普通的 web3 应用程序,使用本地节点,其中额外的网桥二进制文件是可以接受的。
  • 能够从以太坊主网导入状态

部署

  1. clone代码
git clone https://github.com/paritytech/frontier.git
cd template
  1. 构建(比较耗时)
cargo build --release
  1. 添加账户(已导入到metamask)
    修改template/node/src/chain_spec.rs,这里最后一个账号5763e8fea803CAa7b2D6C18709Ef36b1b54fc1Cf是我们新添加的
evm: EVMConfig {
			accounts: {
				let mut map = BTreeMap::new();
				......
				......
				map.insert(
					H160::from_str("5763e8fea803CAa7b2D6C18709Ef36b1b54fc1Cf")
						.expect("internal H160 is valid; qed"),
					pallet_evm::GenesisAccount {
						balance: U256::from_str("0xffffffffffffffffffffffffffffffff")
							.expect("internal U256 is valid; qed"),
						code: Default::default(),
						nonce: Default::default(),
						storage: Default::default(),
					},
				);
				map
			},
		}
  1. 启动
./target/release/frontier-template-node --dev --tmp --ws-external
2021-10-20 12:28:44 Running in --dev mode, RPC CORS has been disabled.
2021-10-20 12:28:44 Frontier Node
2021-10-20 12:28:44 ??  version 0.0.0-8b34fb3-x86_64-linux-gnu
2021-10-20 12:28:44 ??  by Substrate DevHub <https://github.com/substrate-developer-hub>, 2021-2021
2021-10-20 12:28:44 📋 Chain specification: Development
2021-10-20 12:28:44 🏷 Node name: regular-smash-8365
2021-10-20 12:28:44 👤 Role: AUTHORITY
2021-10-20 12:28:44 💾 Database: RocksDb at /tmp/substrateThe7EF/chains/dev/db/full
2021-10-20 12:28:44 ?  Native runtime: node-frontier-template-1 (node-frontier-template-1.tx1.au1)
2021-10-20 12:28:44 🔨 Initializing Genesis block/state (state: 0x68e5…2119, header-hash: 0xaf46…4ef5)
2021-10-20 12:28:44 👴 Loading GRANDPA authority set from genesis on what appears to be first startup.
2021-10-20 12:28:45 ?  Loaded block-time = 6s from block 0xaf467f5c8683e1317ff3e426253f5d53f15adc9227c67f2ea483cca6db964ef5
2021-10-20 12:28:45 Using default protocol ID "sup" because none is configured in the chain specs
2021-10-20 12:28:45 🏷 Local node identity is: 12D3KooWRmxzyA7K1mDvemBTW2GuqS3GeW2XcVkjenmjygw9fLD6
2021-10-20 12:28:45 📦 Highest known block at #0
2021-10-20 12:28:45 ?? Prometheus exporter started at 127.0.0.1:9615
2021-10-20 12:28:45 Listening for new connections on 0.0.0.0:9944.
2021-10-20 12:28:48 🙌 Starting consensus session on top of parent 0xaf467f5c8683e1317ff3e426253f5d53f15adc9227c67f2ea483cca6db964ef5
2021-10-20 12:28:48 🎁 Prepared block for proposing at 1 [hash: 0xcd08fddbf3574f5207548efa138bb8f303b58b08f803f6c8a01d70ff4bb78dca; parent_hash: 0xaf46…4ef5; extrinsics (2): [0x8542…22c3, 0x549b…7957]]
2021-10-20 12:28:48 🔖 Pre-sealed block for proposal at 1. Hash now 0xfe92b68fb7ce5ffe92d0cbf74ca3b5efe07638a8ea6d79cc5ff3e82cce73a7d3, previously 0xcd08fddbf3574f5207548efa138bb8f303b58b08f803f6c8a01d70ff4bb78dca.
2021-10-20 12:28:48 ? Imported #1 (0xfe92…a7d3)
2021-10-20 12:28:48 Accepted a new tcp connection from 119.123.221.119:52362.
2021-10-20 12:28:50 💤 Idle (0 peers), best: #1 (0xfe92…a7d3), finalized #0 (0xaf46…4ef5), ? 0 ? 0
2021-10-20 12:28:54 🙌 Starting consensus session on top of parent 0xfe92b68fb7ce5ffe92d0cbf74ca3b5efe07638a8ea6d79cc5ff3e82cce73a7d3

使用rpc接口查看账户余额

在这里插入图片描述

连接metamask

设置网络,网络id为42
在这里插入图片描述
可以看到余额不能正常显示,这样remix等工具就不能使用了
在这里插入图片描述

连接polkadot-js

可以本地启动一个,也可以直接使用https://polkadot.js.org/apps/#/explorer

docker run --rm -it --name polkadot-ui -e WS_URL=ws://yourip:9944 -p 80:80 jacogr/polkadot-js-apps:latest

打开浏览器访问,可以正常使用
在这里插入图片描述

使用polkadot-js查看账户余额

进入设置,开发者,配置以下json

{
	"Address": "MultiAddress",
	"LookupSource": "MultiAddress",
	"Account": {
		"nonce": "U256",
		"balance": "U256"
	},
	"Transaction": {
		"nonce": "U256",
		"action": "String",
		"gas_price": "u64",
		"gas_limit": "u64",
		"value": "U256",
		"input": "Vec<u8>",
		"signature": "Signature"
	},
	"Signature": {
		"v": "u64",
		"r": "H256",
		"s": "H256"
	}
}

在这里插入图片描述
RPC calls选项卡查询 eth > getBalance(address, number) 查看账户余额
在这里插入图片描述

使用polkadot-js部署智能合约

打开polkadot-js,进入超级管理
在这里插入图片描述
选择evm,再选择create
在这里插入图片描述
填入参数
bytecode来自这里

source: 0xd43593c715fdd31c61141abd04a99fd6822c8558
init: <raw contract bytecode, a very long hex value>
value: 0
gas_limit: 4294967295
gas_price: 1
nonce: <empty> {None}

在这里插入图片描述

点击提交sudo
在这里插入图片描述

打开f12 查看console。点击签名并提交
失败!返回badOrigin 目前最新代码还有问题??
在这里插入图片描述

根据blockId查看
在这里插入图片描述

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2021-10-22 10:59:20  更:2021-10-22 10:59:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 21:46:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码