如何运行 Conflux 开发(local)节点
安装环境
下载依赖
基于开发者文档安装环境https://developer.confluxnetwork.org/conflux-doc/docs/installation/ (推荐使用linux与osx, windows需要安装vs2015及其余包, 过于繁琐)
编译源码
下载conflux源码
$ git clone https://github.com/Conflux-Chain/conflux-rust
$ cd conflux-rust
$ git checkout v2.0.0
构建
$ cargo build --release
运行单节点
进入conflux的run目录
$ cd conflux-rust/run
将主网toml文件复制为dev下的toml文件
$ cp hydra.toml develpoment.toml
修改development.toml
# 删去boostnode字段
# mode = "dev"取消注释
# dev_block_interval_ms = 250 取消注释
根据以下脚本进行本地单节点运行
export RUST_BACKTRACE=1
export RUST_BACKTRACE=full
../target/release/conflux --config development.toml
当看到如下样式, 并稳定出块, 则启动成功
2022-06-13T14:14:37.433135500+08:00 INFO main network::thr - throttling.initialize: min = 10M, max = 64M, cap = 256M
2022-06-13T14:14:37.435180+08:00 INFO main conflux -
:'######:::'#######::'##::: ##:'########:'##:::::::'##::::'##:'##::::'##:
'##... ##:'##.... ##: ###:: ##: ##.....:: ##::::::: ##:::: ##:. ##::'##::
##:::..:: ##:::: ##: ####: ##: ##::::::: ##::::::: ##:::: ##::. ##'##:::
##::::::: ##:::: ##: ## ## ##: ######::: ##::::::: ##:::: ##:::. ###::::
##::::::: ##:::: ##: ##. ####: ##...:::: ##::::::: ##:::: ##::: ## ##:::
##::: ##: ##:::: ##: ##:. ###: ##::::::: ##::::::: ##:::: ##:: ##:. ##::
. ######::. #######:: ##::. ##: ##::::::: ########:. #######:: ##:::. ##:
:......::::.......:::..::::..::..::::::::........:::.......:::..:::::..::
Current Version: 2.0.0
获取初始代币
由于sdk中发送交易与部署合约账户中需要有cfx, 上述的环境并未给账户中分发代币, 因此需要给账户增加代币
首先获得keystore文件
# 从github的项目中直接复制内容
https://github.com/conflux-fans/conflux-abigen-example/tree/main/keystore
以go-sdk为例, 调用sdk来创建账户并产生私钥
func main(){
createAcc()
exportPriKeys()
}
func createAcc(){
client, err := conflux.NewClient(local_url, conflux.ClientOption{
KeystorePath: ".keystore"}) //local_url = "http://127.0.0.1:12537"
if err != nil {
panic(err)
}
defer client.Close()
acc1,err := client.AccountManager.Create("test")
if err != nil {
log.Fatalln(err)
}
fmt.Println(acc1.String())
acc2,err := client.AccountManager.Create("test")
if err != nil {
log.Fatalln(err)
}
fmt.Println(acc2.String())
}
func exportPriKeys(){
client, err := conflux.NewClient(local_url, conflux.ClientOption{
KeystorePath: ".keystore"}) //local_url = "http://127.0.0.1:12537"
if err != nil {
panic(err)
}
defer client.Close()
list := client.GetAccountManager().List()
priv1, err := client.GetAccountManager().Export(list[0], "test")
if err != nil {
panic(err)
}
priv2, err := client.GetAccountManager().Export(list[1], "test")
if err != nil {
panic(err)
}
fmt.Println(priv2)
fmt.Println(priv1)
}
记录输出的私钥
在conflux-rust/run目录下创建密钥文件
vim key.txt
# 将输出的私钥去掉前缀0x, 并复制到该文件中, 示例为:
# 931fffc586b7596b3f40bf67f4a38150c54d4cf98a96d25e8e679ba0825545cf
# 628819aeb8c48d044de86706ae17f7a8675af563582aea27502f40bf1ccdd35c
在development.toml文件中加入
genesis_secrets = "key.txt"
清除链上数据, 并重启
sh clear_state.sh
sh test.sh
再次调用sdk查询可以发现账户中有了代币
func queryBalance(){
client, err := conflux.NewClient(local_url, conflux.ClientOption{
KeystorePath: ".keystore"}) //local_url = "http://127.0.0.1:12537"
if err != nil {
panic(err)
}
defer client.Close()
t, err := client.GetAccountManager().GetDefault()
if err != nil {
panic(err)
}
fmt.Println(t.String())
m, err := client.GetBalance(*t)
if err != nil {
panic(err)
}
fmt.Println(m.String())
}
No Comments