主页 > imtoken钱包苹果版手机安装包 > 火币科普系列:兼容以太坊开发环境,开发者如何参与Heco的开发?
火币科普系列:兼容以太坊开发环境,开发者如何参与Heco的开发?
读取超时=30000000000
写超时=30000000000
空闲超时=120000000000
在配置中使用快速同步,如果需要完全同步,请删除此行:
同步模式=快
开始狂欢
配置文件
#!/usr/bin/envbash
/数据/heco/geth-linux-amd64
--config/data/heco/config.toml
--日志路径/数据/heco/日志
--verbosity3>>/data/heco/logs/systemd_chain_console.out2>&1
如果需要作为存档节点使用,添加:
--syncmodefull
--gcmodarchive
所以:
#!/usr/bin/envbash
/数据/heco/geth-linux-amd64
--config/data/heco/config.toml
--日志路径/数据/heco/日志
--syncmodefull
--gcmodarchive
--verbosity3>>/data/heco/logs/systemd_chain_console.out2>&1
系统配置
[单元]
Description=huobismartchainservice
[服务]
类型=简单
ExecStart=/bin/sh/data/heco/run.sh
重启=失败
RestartSec=5s
限制NOFILE=65536
[安装]
链上交互
Heco兼容以太坊的生态,支持以太坊所有的RPCAPI和DK
远程过程调用
RPC方法列表
例如:
curl-s-Hcontent-type:application/json-d{jsonrpc:2.0,method:web3_clientVersion,params:[],id:67}:8545
开发套件
使用 web3j 和 web3js 等以太坊 SDK 库进行开发。
constWeb3 = 要求(web3)
asyncfunction getChainId(){
constweb3 = newWeb3()
letchainId = awaitweb3.eth.getChainId()
console.log(`chainid:${chainId}`)
返回链ID
}
constWeb3Accounts = require(web3-eth-accounts)
letaccount = newWeb3Accounts().create()
//不要这样做
console.log(`accountgenerated.address:${account.address},privatekey:${account.privateKey}`)
constWeb3 = 要求(web3)
asyncfunction transfer(fromAccount,to,value){
constweb3 = newWeb3()
letchainId = awaitweb3.eth.getChainId()
letnonce=awaitweb3.eth.getTransactionCount(fromAccount.address)
letgasPrice = awaitweb3.eth.getGasPrice()
letunsigned={
发件人:发件人地址,
到,
值:web3.utils.numberToHex(web3.utils.toWei(value,ether)),
汽油价格,
随机数,
链号,
}
unsigned.gas = awaitweb3.eth.estimateGas(unsigned)
letsigned=awaitfromAccount.signTransaction(未签名)
回签
}
合约 Heco 使用 EVM 来执行合约。 RemixRemixIDE 是一个开源的 Web 和桌面应用程序。 它促进了快速的开发周期,并具有丰富的插件集和直观的图形用户界面。 Remix用于合约开发的全过程,也是学习和教授合约开发的小天地。
在文件资源管理器中创建一个新文件。 右侧编辑合约信息。
编译合约
1.点击编译器按钮切换界面
2.选择要编译的合约
3.设置编译标志
4.点击编译按钮
通过 MetaMask 等钱包将合约部署到区块链。
1、在MetaMask中设置网络信息:
2. 返回混音。
切换环境
选择合同
单击部署按钮
合约可以通过MetaMask部署在链上
Truffle 使用 truffle 来编译和部署合约。
安装节点。
安装松露
npm 安装 gtruffle
truffleversion 安装完成后运行。 如果命令行显示如下信息,则安装成功。
松露 v5.1.36(核心:5.1.36)
Solidity v0.5.16 (solc-js)
Nodev10.22.1
web3.jsv1.2.1
创建项目
首先,为项目创建文件夹。
mkdir例子
cd范例
然后以太坊发币全流程,通过truffle初始化项目
松露初始化
初始化完成后,工程中会生成如下文件结构。
|--contracts//合同文件夹
|--migrations//folderford deploymentscripts
|--test//测试脚本文件夹
|--truffle-config.js//truffle配置文件
配置松露信息
constHDWalletProvider = require(@truffle/hdwallet-provider);
constfs = 要求(fs);
constmnemonic=fs.readFileSync(.secret).toString().trim();
模块.exports={
网络:{
测试网:{
provider:()=>newHDWalletProvider(助记词,),
网络 ID:256
},
主网:{
provider:()=>newHDWalletProvider(助记词,),
网络编号:128
}
},
//在这里设置默认的mocha选项,使用特殊的reporters等。
摩卡:{
//超时:100000
},
//配置你的编译器
编译器:{
解决方案:{
//version:0.5.1, //从solc-bin中获取exactversion(默认:trufflesversion)
//docker:true,//使用0.5.1youveinstalledlocallywithdocker(default:false)
//设置:{//查看solidity文档以获得关于优化和devmVersion的建议
//优化器:{
//启用:假,
//运行:200
//},
//evm版本:拜占庭
//}
},
},
};
C 创建合约 将自定义合约放入contracts文件夹,修改文件夹下的部署脚本migrations。
部署合约
trufflemigrate --networktestnet
输出如下。
2_example_migration.js
========================
部署示例令牌
----------------------
>交易哈希:0x91e50594a63bc6f4c299f3f445868571678be306b835bddce6dff5c7a5ddf9dc
>块:2秒:4
>合约地址:0x54D2049715FC8De1361D7350de90eb05F0f6CA84
>块号:375304
>区块时间戳:1608016637
>帐户:0x03D32B774295D740ffEe43b20fcC0a53acC576e6
>余额:878.909609236165318643
>gasused:1056044(0x101d2c)
>gas价格:20gwei
>发送值:0ETH
>总成本:0.02112088ETH
>保存迁移到链。
>保存神器
--------------------------------------
>总成本:0.02112088ETH
概括
=======
>总部署:1
>最终成本:0.02112088ETH
最后,合约部署完成。
图节点
GraphNode 是一种使用 GraphQL 在以太坊和 IPFS 上快速构建分布式应用程序 (DAPP) 的协议。
接下来的操作仅供参考,作为简单的设置教程。
设置图形节点 为了方便起见以太坊发币全流程,我们将使用官方的节点、数据库和 IPFS 部署。
请注意,ethereum 字段的值将被 docker-compose.yml 中 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
以太坊:主网:#replacedwithhecorpcinfo
RUST_LOG:信息
注意:连接到graph-node的节点必须是archive模式(启动节点时加上标志--syncmodefull--gcmode archive),建议每个用户搭建自己的RPC节点。
创建子图。 每个用户根据自己的情况来写。 以下内容可以作为参考:
部署子图会将写好的子图打包构建成wasm文件,然后部署到graphnode。 具体命令可以在上面的示例项目代码中找到。
GraphQL 的使用 部署后,可以使用 GraphQL 请求数据