火币生态链火币生态链是一个去中心化高效节能公链,也是火币开放平台推出的首个产品,在支撑高性能交易的基础上,实现智能合约的兼容。Heco的原生数字资产为HT,采用HPoS共识机制。
Heco也是以太坊友好的开发平台,兼容以太坊开发环境和工具,有以太坊智能合约开发经验的开发者可以轻松上手。
为帮助开发者更好地使用Heco进行开发,本文将Heco的开发流程大致阐述。
首先要完成源码下载,通过git下载源码。
gitclonehttps://github.com/HuobiGroup/huobi-eco-chain.git
在拿到源码后,需要把源代码转换成机器可以识别的二进制语言,组合成为一个系统可以执行的可执行文件,即完成编译过程。编译支持Go语言。区块链开发较为复杂,而Go语言具有更好的便捷性,对开发者更为友好。
编译:
cd/path/to/hecochain
makegeth
如果希望进行跨平台编译,某些在Mac上编译Linux平台的二进制文件,可以使用makegeth-linux相关命令操作。编译完成后,生成的二进制文件在build/bin目录下。
运行:
通过./build/bin/geth--help查看所有的option选项,根据情况自行设置相关配置参数。
网络接入
程序启动替换接入mainnet,如需接入公共测试网,可添加option?--testnet。
部署:引入系统管理配置
链节点
·?config.toml
SyncMode="fast"
DiscoveryURLs=
TrieCleanCacheRejournal=300000000000
GasFloor=8000000
GasCeil=8000000
GasPrice=0
Recommit=3000000000
Noverify=false
CacheDir="ethash"
CachesInMem=2
CachesOnDisk=3
CachesLockMmap=false
DatasetDir="/data/heco/data/.ethash"
以太坊网络当前已销毁3,519,920.28枚ETH:金色财经报道,据Ultrasound数据显示,截止目前,以太坊网络总共销毁3,519,920.28枚ETH。其中,OpenSea销毁230,050.67枚ETH,ETHtransfers销毁296,756.85枚ETH,UniswapV2销毁197,378.05枚。注:自以太坊伦敦升级引入EIP-1559后,以太坊网络会根据交易需求和区块大小动态调整每笔交易的BaseFee,而这部分的费用将直接燃烧销毁。[2023/8/7 21:28:34]
DatasetsInMem=1
DatasetsOnDisk=2
DatasetsLockMmap=false
PowMode=0
Locals=
NoLocals=false
Journal="transactions.rlp"
Rejournal=3600000000000
PriceLimit=1
PriceBump=10
AccountSlots=16
GlobalSlots=4096
AccountQueue=64
GlobalQueue=1024
Lifetime=10800000000000
DataDir="/data/heco/data"
InsecureUnlockAllowed=true
NoUSB=true
IPCPath="geth.ipc"
HTTPHost="0.0.0.0"
HTTPPort=8545
HTTPCors=
HTTPVirtualHosts=
HTTPModules=
WSHost="0.0.0.0"
WSPort=8546
WSModules=
GraphQLVirtualHosts=
MaxPeers=50
NoDiscovery=false
ListenAddr=":32668"
EnableMsgEvents=false
ReadTimeout=30000000000
NFT项目mfers创始人宣布将回归加密社区:12月13日消息,NFT项目mfers创始人sartoshi在社交媒体上发文《sartoshi_rip》,宣布将重新回归加密社区并将从2023年1月1日启用新的社交媒体账户@sartoshi_RIP,同时将作为匿名NFT收藏家重新入场,而其此前退圈作品End Of Sartoshi NFT将会被作为社区通行证,该项目继续作为一个无领导的组织,智能合约也将继续保留给社区所有。
此前报道,NFT项目mfers创始人于6月份宣布隐退,智能合约将移交社区。[2022/12/14 21:42:25]
WriteTimeout=30000000000
IdleTimeout=120000000000
在配置中使用快速同步,如果需要完全同步,请删除此行:
SyncMode="fast"
启动bash
·?config.toml
#!/usr/bin/envbash
/data/heco/geth-linux-amd64
--config/data/heco/config.toml?
--logpath/data/heco/logs
--verbosity3?>>/data/heco/logs/systemd_chain_console.out2>&1
如果需要将其用作存档节点,请添加:
--syncmodefull
--gcmodearchive
因此:
#!/usr/bin/envbash
/data/heco/geth-linux-amd64
--config/data/heco/config.toml?
--logpath/data/heco/logs
--syncmodefull
--gcmodearchive
--verbosity3?>>/data/heco/logs/systemd_chain_console.out2>&1
系统配置
Description=huobismartchainservice
Type=simple
ExecStart=/bin/sh/data/heco/run.sh
持有31.7万枚BTC的432个地址与GBTC托管有关,约占报告总量的一半:11月21日消息,链上观察员Ergo发推表示,由于灰度(Grayscale)拒绝提供加密资产储备证明,通过使用公共数据和链上取证,已将持有317705 BTC的432个地址归因于可能的GBTC托管活动,总数约为GBTC报告的当前持有量的50%,或需要额外的工作来识别剩余的地址。[2022/11/21 7:51:59]
Restart=on-failure
RestartSec=5s
LimitNOFILE=65536
链上互动
Heco与以太坊的生态系统兼容,支持所有以太坊的RPCAPI和DK
RPC
RPC方法列表
例如:
?curl-s-H'content-type:application/json'-d'{"jsonrpc":"2.0","method":"web3_clientVersion","params":,"id":67}'http://localhost:8545
开发包
使用诸如web3j、web3js等以太坊SDK库进行开发。
获取链上信息
constWeb3=require('web3')
asyncfunctiongetChainId(){
????constweb3=newWeb3('https://http-mainnet.hecochain.com')
????letchainId=awaitweb3.eth.getChainId()
????console.log(`chainid:${chainId}`)
????returnchainId
}
生成帐户
constWeb3Accounts=require('web3-eth-accounts')
letaccount=newWeb3Accounts().create()
//donotdothisonprdenv
console.log(`accountgenerated.address:${account.address},privatekey:${account.privateKey}`)
生成事务
constWeb3=require('web3')
USDD出现脱锚,孙宇晨回应或因Alameda抛售导致:11月10日消息,据UTXO Management高级分析师Dylan LeClair透露,USDD出现脱锚,当前价格跌至0.985美元,过去24小时跌幅达到1.6%。孙宇晨回应称,他认为可能是Alemeda(或为Alameda笔误)出售了持有的USDD来弥补FTX交易所流动性导致,目前USDD流动性池目前正在以健康的速度恢复。[2022/11/10 12:40:29]
asyncfunctiontransfer(fromAccount,to,value){
????constweb3=newWeb3('https://http-mainnet.hecochain.com')
????letchainId=awaitweb3.eth.getChainId()
????letnonce=awaitweb3.eth.getTransactionCount(fromAccount.address)
????letgasPrice=awaitweb3.eth.getGasPrice()
????letunsigned={
????????from:fromAccount.address,
????????to,
????????value:web3.utils.numberToHex(web3.utils.toWei(value,'ether')),
????????gasPrice,
????????nonce,
????????chainId,
????}
????unsigned.gas=awaitweb3.eth.estimateGas(unsigned)
????letsigned=awaitfromAccount.signTransaction(unsigned)
????returnsigned
}
合约
Heco使用EVM执行合约。
Remix
RemixIDE是一个开源的web和桌面应用程序。它促进了一个快速的开发周期,并且有一组具有直观gui的丰富插件。Remix用于合约开发的整个过程,同时也是学习和教授合约开发的小天地。
在文件资源管理器中创建新文件。在右侧编辑合约信息。
编译合约
加密平台NAGAX运营商NAGA Group AG4月盈利创新高:金色财经报道,NAGA Group AG是新经纪公司NAGA、加密货币平台NAGAX和新银行应用NAGAPay的运营商。该公司发布了4月份的初步交易更新,并报告了迄今为止最强劲的月度盈利能力。4月份,公司初步经纪收入为700万欧元,而初步EBITDA为360万欧元。到目前为止,已经产生了超过270万笔交易,同时活跃的客户基础和注册人数继续增长。(DGAP)[2022/6/5 4:02:35]
1.点击编译器按钮,切换界面
2.选择要编译的合约
3.设置编译标志
4.Clieckcompile按钮
通过钱包将合约部署到区块链。
1.在MetaMask中设置网络信息:
2.回到Remix。
开关环境
选择合约
单击部署按钮
通过MetaMask即可将合约部署上链了
Truffle
·?使用truffle编译和部署契约。
·?
·?安装节点。
·?安装truffle
npminstall-gtruffle
truffleversion安装完成后运行。如果命令行显示如下消息,则说明安装成功。
Trufflev5.1.36(core:5.1.36)
Solidityv0.5.16(solc-js)
Nodev10.22.1
Web3.jsv1.2.1
·?创建项目
首先,为项目创建文件夹。
mkdirExample
cdExample
然后,通过truffle初始化项目
truffleinit
初始化完成后,将在项目中生成以下文件结构。
|--contracts????????//folderforcontracts
|--migrations???????//folderfordeploymentscripts
|--test?????????????//folderfortestscripts
|--truffle-config.js//truffleconfigfile
·?配置truffle信息
constHDWalletProvider=require(',
????mainnet:{
??????provider:()=>newHDWalletProvider(mnemonic,'https://http-mainnet.hecochain.com'),
??????network_id:128
????}
??},
??//Setdefaultmochaoptionshere,usespecialreportersetc.
??mocha:{
????//timeout:100000
??},
??//Configureyourcompilers
??compilers:{
????solc:{
??????//version:"0.5.1",???//Fetchexactversionfromsolc-bin(default:truffle'sversion)
??????//docker:true,???????//Use"0.5.1"you'veinstalledlocallywithdocker(default:false)
??????//settings:{?????????//SeethesoliditydocsforadviceaboutoptimizationandevmVersion
??????//?optimizer:{
??????//???enabled:false,
??????//???runs:200
??????//?},
??????//?evmVersion:"byzantium"
??????//}
????},
??},
};
·?C创建合同将自定义合同放入文件夹中,contracts并修改文件夹中的部署脚本migrations。
·?部署合约
trufflemigrate--networktestnet
输出如下.
2_example_migration.js
======================
???Deploying'ExampleToken'
???------------------------
???>transactionhash:???0x91e50594a63bc6f4c299f3f445868571678be306b835bddce6dff5c7a5ddf9dc
???>Blocks:2???????????Seconds:4
???>contractaddress:???0x54D2049715FC8De1361D7350de90eb05F0f6CA84
???>blocknumber:???????375304
???>blocktimestamp:????1608016637
???>account:????????????0x03D32B774295D740ffEe43b20fcC0a53acC576e6
???>balance:????????????878.909609236165318643
???>gasused:???????????1056044(0x101d2c)
???>gasprice:??????????20gwei
???>valuesent:?????????0ETH
???>totalcost:?????????0.02112088ETH
???>Savingmigrationtochain.
???>Savingartifacts
???-------------------------------------
???>Totalcost:?????????0.02112088ETH
Summary
=======
>Totaldeployments:??1
>Finalcost:?????????0.02112088ETH
最后,合约部署完成。
GraphNode
GraphNode是一种使用GraphQL在以太坊和IPFS上快速构建分布式应用程序的协议。
下一个操作仅作为简单的设置教程供参考。
设置图节点
为了方便起见,我们将官方dockercompose用于节点,数据库和IPFS部署。
请注意,其中的ethereum字段的值将docker-compose.yml替换为HECO的节点连接信息。
graph-node:
????image:graphprotocol/graph-node
????ports:
??????-'8000:8000'
??????-'8001:8001'
??????-'8020:8020'
??????-'8030:8030'
??????-'8040:8040'
????depends_on:
??????-ipfs
??????-postgres
????environment:
??????postgres_host:postgres
??????postgres_user:graph-node
??????postgres_pass:let-me-in
??????postgres_db:graph-node
??????ipfs:'ipfs:5001'
??????ethereum:'mainnet:http://127.0.0.1:8545'?#replacedwithhecorpcinfo
??????RUST_LOG:info
注意:连接到graph-node的节点必须处于archive模式,我们建议每个用户都构建自己的RPC节点。
创建子图
每个用户根据自己的情况编写,以下内容可用作参考:
部署子图
将编写的子图打包并构建到wasm文件中,然后部署到graphnode。可以在上面的示例项目代码中找到特定的命令。
GraphQL的用法
一旦部署,就可以使用GraphQL请求数据
来源:金色财经
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。