主页 > 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 请求数据