主页 > 华为无法更新imtoken > 火币科普系列:兼容以太坊开发环境的开发者如何参与Heco的开发?
火币科普系列:兼容以太坊开发环境的开发者如何参与Heco的开发?
读取超时 = 30000000000
写超时 = 30000000000
空闲超时 = 120000000000
在配置中使用快速同步,如果需要完全同步,请删除此行:
同步模式 = "快速"
开始狂欢
· 配置.toml
#!/usr/bin/env 庆典
/数据/heco/geth-linux-amd64\
--config /data/heco/config.toml\
--logpath /data/heco/logs\
--verbosity 3 >> /data/heco/logs/systemd_chain_console.out 2>&1
如果需要作为存档节点使用,添加:
--同步模式满\
--gcmode 存档 \
所以:
#!/usr/bin/env 庆典
/数据/heco/geth-linux-amd64\
--config /data/heco/config.toml \
--logpath /data/heco/logs \
--同步模式满\
--gcmode 存档 \
--verbosity 3 >> /data/heco/logs/systemd_chain_console.out 2>&1
系统配置
[单元]
Description=huobismart链服务
[服务]
类型=简单
ExecStart=/bin/sh /data/heco/run.sh
重启=失败
RestartSec=5s
限制NOFILE=65536
[安装]
链上交互
Heco兼容以太坊的生态,支持以太坊所有的RPC API和DK
远程过程调用
RPC方法列表
例如:
curl -s -H 'content-type:application/json' -d '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}' :8545
开发套件
使用 web3j 和 web3js 等以太坊 SDK 库进行开发。
const Web3 = require('web3')
异步函数 getChainId() {
const web3 = new Web3('https://http-mainnet.hecochain.com')
让 chainId = await web3.eth.getChainId()
console.log(`chain id: ${chainId}`)
返回链号
}
const Web3Accounts = require('web3-eth-accounts')
让帐户 = new Web3Accounts().create()
//不要在prd env上这样做
console.log(`账户生成。地址:${account.address},私钥:${account.privateKey}`)
const Web3 = require('web3')
异步函数传输(fromAccount,to,value){
const web3 = new Web3('https://http-mainnet.hecochain.com')
让 chainId = await web3.eth.getChainId()
让 nonce = await web3.eth.getTransactionCount(fromAccount.address)
让 gasPrice = await web3.eth.getGasPrice()
让无符号= {
发件人:发件人地址,
到,
值:web3.utils.numberToHex(web3.utils.toWei(value, 'ether')),
汽油价格,
随机数,
链号,
}
unsigned.gas = await web3.eth.estimateGas(unsigned)
让 signed = await fromAccount. signTransaction(未签名)
回签
}
合同
Heco 使用 EVM 来执行合约。
混音
Remix IDE 是一个开源的 Web 和桌面应用程序。 它促进了快速的开发周期,并具有丰富的插件集和直观的图形用户界面。 Remix用于合约开发的全过程,也是学习和教授合约开发的小天地。
在文件资源管理器中创建一个新文件。 右侧编辑合约信息。
编译合约
1.点击编译器按钮切换界面
2.选择要编译的合约
3.设置编译标志
4.点击编译按钮
通过 MetaMask 等钱包将合约部署到区块链。
1、在MetaMask中设置网络信息:
2. 返回混音。
合约可以通过MetaMask部署在链上
使用 truffle 编译和部署合约。
·
· 安装节点。
· 安装松露
npm 安装 -g 松露
安装 truffle 版本后运行。 如果命令行显示如下信息,则安装成功。
松露 v5.1.36(核心:5.1.36)
Solidity v0.5.16 (solc-js)
节点 v10.22.1
Web3.js v1.2.1
· 创建项目
首先,为项目创建一个文件夹。
mkdir 示例
例子
然后以太坊的开发价格,通过truffle初始化项目
松露初始化
初始化完成后,工程中会生成如下文件结构。
|-- contracts//合同文件夹
|-- migrations//部署脚本文件夹
|-- test//测试脚本文件夹
|--truffle-config.js //松露配置文件
· 配置truffle信息
const HDWalletProvider = require('@truffle/hdwallet-provider');
const fs = require('fs');
const mnemonic = fs.readFileSync(".secret").toString().trim();
模块.exports = {
网络:{
测试网:{
provider: () => new HDWalletProvider(mnemonic, 'https://http-testnet.hecochain.com'),
网络 ID:256
},
主网:{
provider: () => new HDWalletProvider(mnemonic, 'https://http-mainnet.hecochain.com'),
网络编号:128
}
},
// 在这里设置默认的 mocha 选项,使用特殊的记者等。
摩卡:{
//超时:100000
},
// 配置你的编译器
编译器:{
解决方案:{
// version: "0.5.1", // 从 solc-bin 中获取准确的版本(默认:truffle 的版本)
// docker: true, // 使用你在本地安装的“0.5.1”(默认值:false)
// 设置:{// 有关优化和 evmVersion 的建议,请参阅 solidity 文档
// 优化器:{
//启用:假,
// 运行:200
// },
// evmVersion: "拜占庭"
// }
},
},
};
C 创建合约 将自定义合约放入contracts文件夹,修改文件夹下的部署脚本migrations。
· 部署合约
松露迁移——网络测试网
输出如下。
2_example_migration.js
========================
部署“ExampleToken”
----------------------
> 交易哈希:0x91e50594a63bc6f4c299f3f445868571678be306b835bddce6dff5c7a5ddf9dc
> 块:2秒:4
> 合约地址:0x54D2049715FC8De1361D7350de90eb05F0f6CA84
> 块号:375304
> 区块时间戳:1608016637
> 帐户:0x03D32B774295D740ffEe43b20fcC0a53acC576e6
> 余额:878.909609236165318643
> 使用的气体:1056044 (0x101d2c)
> 汽油价格:20 gwei
> 发送的值:0 ETH
> 总成本:0.02112088 ETH
> 保存迁移到链。
> 保存工件
--------------------------------------
> 总费用:0.02112088 ETH
概括
=======
> 总部署:1
> 最终费用:0.02112088 ETH
最后,合约部署完成。
图节点
Graph Node 是一种使用 GraphQL 在以太坊和 IPFS 上快速构建分布式应用程序 (DAPP) 的协议。
接下来的操作仅供参考,作为简单的设置教程。
为了方便起见以太坊的开发价格,我们使用官方的 docker compose 进行节点、数据库和 IPFS 的部署。
请注意docker-compose.yml中ethereum字段的值被HECO的节点连接信息替换。
图节点:
图片:图形协议/图形节点
端口:
- '8000:8000'
- '8001:8001'
-'8020:8020'
-'8030:8030'
- '8040:8040'
取决于:
- IPFS
-postgres
环境:
postgres_host: postgres
postgres_user:图节点
postgres_pass: 让我进来
postgres_db:图节点
ipfs: 'ipfs:5001'
ethereum: 'mainnet::8545' #replaced with heco rpc info
RUST_LOG:信息
注意:连接到graph-node的节点必须是archive模式(启动节点时加上flags --syncmode full --gcmode archive),建议每个用户搭建自己的RPC节点。
各位网友根据自己的情况来写,以下内容可以作为参考:
将写好的子图打包构建成wasm文件,然后部署到图节点上。 具体命令可以在上面的示例项目代码中找到。
部署后,可以使用 GraphQL 请求数据