方伟的博客
j2ee技术、网络、web等,同名的人真多,我的QQ是20025404
posts - 21,comments - 14,trackbacks - 0
java源码示例,bitcoin解析助记词(或私钥):
1.BIP44,P2PKH,xpub
即1开头的地址。

2.BIP49,P2SH-P2WPKH,ypub
即3开头的地址。

3.BIP84,P2WPKH,zpub
即bc1开头的地址。

网上代码大都只能正常获取1开头和bc1开头的地址,但3开头的地址大部分参考算法都是错的。
这个示例是跟tokenpocket和imtoken对比过都一致的。

https://download.csdn.net/download/henry14760002630/61932972
posted @ 2021-12-13 17:32 方伟的博客 阅读(591) | 评论 (0)编辑 收藏

 1.服务器

需要300G SSD(建议NVMe)硬盘,最好是裸硬盘,不建议用机械盘。

2.带宽

建议国外服务器,10M以上,不需要cn2线路

3.操作系统

建议centos7/8,或ubuntu,这里均以centos为例

4.准备环境:

yum update -y

yum install screen iftop iotop -y

4.1.安装golang

yum install golang -y

或编译安装


*注意:如果使用的 Go 版本是 1.13 及以上 (推荐),如果不设置以下命令编译源码时可能会出错
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io,direct
 

5.创建一个screen

screen -S heco

*注意1:最后退出时用ctrl+ad(顺序按a和d字母即可),不要用exit或ctrl+d退出会话。

*注意2:退出会话后,可以用screen -x heco重新连接到会话。

6.安装heco客户端

#这里我的数据目录,可以根据需要自行更改

mkdir -p /data/heco/data

#下载最新版本并编译

cd /root
wget -O heco-chain-1.2.1.tar.gz https://github.com/stars-labs/heco-chain/archive/refs/tags/v1.2.1.tar.gz
tar -xvf heco-chain-1.2.1.tar.gz
rm -fr heco-chain-1.2.1.tar.gz
cd heco-chain-1.2.1
make all


7.检查安装是否成功

/root/heco-chain-1.2.1/build/bin/geth  console


8.设置防火墙
firewall-cmd --permanent --zone=public --add-port=32668/tcp
firewall-cmd --permanent --zone=public --add-port=8545/tcp
firewall-cmd --reload
不懂防火墙配置的,可以先禁用防火墙,关于firewalld的使用技巧,之后会单独写一篇教程

 

9.启动节点

ulimit -n 65535

/root/heco-chain-1.2.1/build/bin/geth --datadir /data/heco/data --syncmode "fast" --cache=8096 --maxpeers 50 --http --http.addr=0.0.0.0 --http.port=8545 --http.api "web3,debug,personal,net,admin,eth" --http.corsdomain "*" --allow-insecure-unlock
 

*然后按ctrl+ad回到主会话即可


10.测试验证

curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' http://127.0.0.1:8545

(如果已经追上最新高度,result会返回false)

curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' http://127.0.0.1:8545

(节点未同步完成可能会返回0)

11.停止节点

方式1:(建议,毕竟停止后还要启动不是)

screen -r heco

按ctrl+c,等待一会即可看到节点停止

 

12.接口文档参考(HECO的文档与以太坊基本相同)

RPC接口文档,如:

以太坊JSON RPC手册 / eth_call - 汇智网


其它参考:

HECO链github地址:GitHub - stars-labs/heco-chain: Huobi Eco Chain client based on the go-ethereum fork

主网浏览器:HecoInfo (HT) Blockchain Explorer


13.注意事项

*同步到最高区块所需时间:

需要看网络带宽和磁盘io性能,用NVMe的硬盘,读写1000到2000左右,100M的国外非cn2带宽,从0开始同步,大概需要小半天左右。

*如果2天还没有追上,或者最后100个块始终追不上,极有可能是服务器磁盘io存在瓶颈,不建议用机械盘,不建议用虚拟机(磁盘不建议做虚拟化),否则io速度不够用。

*硬盘目前实际会占用211G左右。

*相比eth,bsc,heco的资源消耗和空间占用非常低,一般可以与eth节点部署在同一台,以节省成本。

posted @ 2021-11-14 23:37 方伟的博客 阅读(936) | 评论 (0)编辑 收藏

前言:zilliqa开发用的RPC节点只需要启动个seed节点即可,非常方便,40多G空间,几十分钟就可以同步完,资源占用极小。否则如果部署full节点就不是这么简单了。

 

1.服务器

zilliqa的seed节点 需要100G SSD(建议NVMe)硬盘,实际数据占用40多G,docker占用1.3G多。cpu内存均不需要太高,4核8G足够。

2.带宽

建议国外服务器,10M以上,不需要cn2线路

3.操作系统

建议centos7/8,或ubuntu,这里均以centos为例

4.准备环境:

yum update -y

yum install screen iftop iotop -y

4.1.安装docker

略,不会的可以搜索或参考:

CentOS Docker 安装 | 菜鸟教程

5.创建一个screen

screen -S zil

*注意1:最后退出时用ctrl+ad(顺序按a和d字母即可),不要用exit或ctrl+d退出会话。

*注意2:退出会话后,可以用screen -x heco重新连接到会话。

6.docker模式安装

mkdir /root/seed
cd /root/seed
wget https://mainnet-join.zilliqa.com/seed-configuration.tar.gz
tar -xvf seed-configuration.tar.gz

7.设置防火墙
firewall-cmd --permanent --zone=public --add-port=33133/tcp
firewall-cmd --permanent --zone=public --add-port=4201/tcp
firewall-cmd --reload
不懂防火墙配置的,可以先禁用防火墙,关于firewalld的使用技巧,之后会单独写一篇教程

8.启动seed节点(docker模式)

cd /root/seed
sh /root/seed/launch_docker.sh

按提示输入,注意ip要填写下(尽量服务器本机具备ipv4的公网ip)

成功后,会提示:

Use 'docker ps' to check the status of the docker
Use 'docker stop zilliqa' to terminate the container
Use 'tail -f zilliqa-00001-log.txt' to see the runtime log

If you have successfully completed the above steps, 
you should have a functioning seed node that exposes an RPC API on localhost:4201. 
You may further check the logs at zilliqa-00001-log.txt.

注意,默认4201端口暂时没有打开,这里翻译为人话,就是必须等同步完所有区块数据,才会开放4201端口。

9.查看日志

tail -f /root/seed/zilliqa-00001-log.txt

tail -f /root/seed/py_download_incr_DB.log

这里可以看到下载的日志


10.测试验证

curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"GetNetworkId","params":[],"id":1}' http://127.0.0.1:4201

curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"GetBlockchainInfo","params":[],"id":1}' http://127.0.0.1:4201

curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"GetLatestDsBlock","params":[],"id":1}' http://127.0.0.1:4201

 

11.停止节点

docker stop zilliqa

注意,重启docker可能不会自动启动zilliqa的服务,可以通过:

docker exec -it zilliqa /bin/bash

进入docker的shell,执行:

ps -ef

查看是否有zilliqa的进程,如果重启服务器后,端口一直没有侦听,要注意下是否真的有启动起来zilliqa进程。

 

12.接口文档参考

RPC接口文档,如:

Introduction | Zilliqa Developer Portal

Introduction | Zilliqa Developer Portal

Introduction | Zilliqa Developer Portal

其它参考:

Zilliqa链github地址:

GitHub - Zilliqa/Zilliqa: Zilliqa is the world's first high-throughput public blockchain platform - designed to scale to thousands ​of transactions per second.主网浏览器:

https://viewblock.io/zilliqa
https://devex.zilliqa.com/
https://explorer.zilliqa.com/

ZilLab Explorer -- Mainnet

13.注意事项

*同步到最高区块大概最快20分钟左右。

*相比来说,seed节点的资源和空间消耗非常低,一般可以与eth等节点部署在同一台,以节省成本。

posted @ 2021-11-14 23:37 方伟的博客 阅读(243) | 评论 (0)编辑 收藏

1.服务器

需要1T NVMe 硬盘,最好是裸硬盘,云盘io性能太差,建议物理机(裸金属主机)+本地SSD。

2.带宽

越高越好,建议国外服务器,1G带宽不限流量

3.操作系统

建议centos7/8,或ubuntu,这里均以centos为例

4.准备环境:

yum update -y

yum install screen iftop iotop -y

5.创建一个screen

screen -S btc

*注意1:最后退出时用ctrl+ad(顺序按a和d字母即可),绝对不要用exit或ctrl+d退出会话。

*注意2:退出会话后,可以用screen -r btc重新连接到会话。这样可以保持在shell下运行,网络中断不会影响。

6.安装bitcoin客户端

#这里我的数据目录,可以根据需要自行更改

mkdir -p /data1/btc/data

#下载最新版本,今天的最新版本是22.0

cd /root
wget -O bitcoin-22.0.tar.gz https://bitcoincore.org/bin/bitcoin-core-22.0/bitcoin-22.0-x86_64-linux-gnu.tar.gz
tar -zxvf bitcoin-22.0.tar.gz

7.编辑并上传配置文件:/data1/btc/bitcoin.conf

datadir=/data1/btc/data
wallet=btc20211107    #随便取个名字,其实用不到这个
testnet=0    # 0 - 主网 1 - 测试网
regtest=0    # 是否以私有链模式运行:0 - 否 1 - 是
#gen=0        # 设置 gen=1 以尝试比特币挖矿
#daemon=1    # 后台执行

#proxy=127.0.0.1:9050 # 是否使用socks5代理,默认关闭
#bind=<addr>   # 注释此行,表示使用默认监听地址
#whitebind=<addr>
#addnode=69.164.218.197  # 可添加多个
#addnode=10.0.0.2:8333
#connect=69.164.218.197
#listen=1
#maxconnections=10    #入站/出站最大连接数

server=1    # 是否启动JSON-RPC接口: 0 - 不启动 1 - 启动
txindex=1
rpcbind=0.0.0.0
rpcport=8432        #端口可以自行修改
rpcuser=admin        #用户名自行修改
rpcpassword=123456    #密码自行修改,但最好不要有特殊字符,像@
rpcallowip=0.0.0.0/0    #可以添加多个
#rpcallowip=0.0.0.0/0    #可以添加多个
#rpcallowip=192.168.0.0/16
#rpcconnect=127.0.0.1

#txconfirmtarget=6    #交易最小确认数,默认值:6
#paytxfee=0.000x    #paytxfee:每次发送比特币时的交易费

#txconfirmtarget=n
#paytxfee=0.000x
#keypool=100
#prune=550

#min=1                #是否启动后最小化
#minimizetotray=1    #是否最小化到系统托盘
8.设置防火墙
firewall-cmd --permanent --zone=public --add-port=8432/tcp
firewall-cmd --permanent --zone=public --add-port=8433/tcp
firewall-cmd --reload
不懂防火墙配置的,可以直接先禁用防火墙,关于firewalld的使用技巧,之后会单独写一篇教程

9.启动客户端

ulimit -n 65535
cd /root/bitcoin-22.0
/root/bitcoin-22.0/bin/bitcoind -port=8433 -conf=/data1/btc/bitcoin.conf

*然后按ctrl+ad回到主会话即可
10.测试验证(以下列出几种方式,可以看自己喜好)

curl --user admin:123456 --data-binary '{"jsonrpc": "1.0", "id": "1", "method": "getindexinfo", "params": []}' -H 'content-type: text/plain;' http://127.0.0.1:8432/

curl --data-binary '{"jsonrpc":"1.0","id":"1","method":"getindexinfo","params":[]}' -H 'content-type:text/plain;' http://admin:123456@127.0.0.1:8432/

或:

/root/bitcoin-22.0/bin/bitcoin-cli -rpcconnect=127.0.0.1 -rpcuser=admin -rpcpassword=123456 -rpcport=8432 getindexinfo

11.停止节点

方式1:(建议,毕竟停止后还要启动不是)

screen -r btc

按ctrl+c,等待一会即可看到节点停止

方式2:

任意会话中输入命令:

/root/bitcoin-22.0/bin/bitcoin-cli -rpcconnect=127.0.0.1 -rpcuser=admin -rpcpassword=123456 -rpcport=8432 stop

12.接口文档参考

https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list
https://developer.bitcoin.org/reference/rpc/index.html

太多了,大家可以搜下,网上有很多

13.注意事项

同步到最高区块所需时间:

需要看网络带宽和磁盘io性能,我用NVMe的裸盘,读写1500到2000左右,1G的国外带宽,大概同步几个小时即可(没有具体去算,应该5、6个小时,最高不到12个小时)。

带宽最高使用到100MB/s左右。

如果花了一天以上没有同步到最新,有可能是服务器存在瓶颈,还是建议用国外物理机,10M带宽基本上不怎么够用,建议至少100M的带宽,不需要cn2线路,成本并不高。

posted @ 2021-11-14 23:36 方伟的博客 阅读(954) | 评论 (0)编辑 收藏

1.服务器

需要3T(建议4T) NVMe 硬盘,最好是裸硬盘,云盘io性能太差,建议物理机(裸金属主机)+本地SSD。

*注意,bsc节点对硬件要求是我见过的所有链中最高的,强烈建议独立使用一台高配置服务器。

2.带宽

越高越好,建议国外服务器,1G带宽不限流量

3.操作系统

建议centos7/8,或ubuntu,这里均以centos为例

4.准备环境:

yum update -y

yum install screen iftop iotop -y

4.1.安装golang

yum install golang -y

或编译安装:

cd /root/
wget https://storage.googleapis.com/golang/go1.4-bootstrap-20170531.tar.gz
tar zxvf go1.4-bootstrap-20170531.tar.gz
cd /root/go/src/
./all.bash
 

5.创建一个screen

screen -S bsc

*注意1:最后退出时用ctrl+ad(顺序按a和d字母即可),绝对不要用exit或ctrl+d退出会话。

*注意2:退出会话后,可以用screen -r bsc重新连接到会话。这样可以保持在shell下运行,网络中断不会影响。

6.安装bsc客户端

#这里我的数据目录,可以根据需要自行更改

mkdir -p /data/bsc/data

#下载最新版本

cd /root
wget -O binance-chain-v1.1.4.tar.gz https://github.com/binance-chain/bsc/archive/refs/tags/v1.1.4.tar.gz
tar -xvf binance-chain-v1.1.4.tar.gz
rm -fr binance-chain-v1.1.4.tar.gz

编译:

cd /root/bsc-1.1.4
make all
6.1.检查安装是否成功

/root/bsc-1.1.4/build/bin/geth version

 

7.编辑并上传配置文件:

bsc-mainnet配置文件.zip-以太坊文档类资源-CSDN下载

config.toml和genesis.json两个文件放到/data/bsc/目录下。(该目录可以自行修改)


8.设置防火墙
firewall-cmd --permanent --zone=public --add-port=30311/tcp
firewall-cmd --permanent --zone=public --add-port=8575/tcp
firewall-cmd --permanent --zone=public --add-port=8576/tcp
firewall-cmd --reload
不懂防火墙配置的,可以先禁用防火墙,关于firewalld的使用技巧,之后会单独写一篇教程

9.1.下载最新的snapshot数据,以加快同步实际

#最新snapshots参加:https://github.com/binance-chain/bsc-snapshots
cd /data/bsc/data
wget -O geth.tar.gz 'https://s3.ap-northeast-1.amazonaws.com/dex-bin.bnbstatic.com/geth-20211031.tar.gz?AWSAccessKeyId=AKIAYINE6SBQPUZDDRRO&Signature=ESK5xmr5f1AIK4Mr6our%2FALXzQk%3D&Expires=1638310885'

tar zxvf geth.tar.gz

*这里要下载很久,所以带宽要尽可能高。
*解压后,注意目录结构可能要调整下,保持chaindata和keystore那一级目录直接在/data/bsc/data/目录下,如果不在的话,自己mv到那个目录下。

 

9.2.启动客户端

#先init,很多人没有执行这一步,导致下面启动节点同步出错

/root/bsc-1.1.4/build/bin/geth --datadir /data/bsc/data --config /data/bsc/config.toml --syncmode "fast" --cache=10240 init /data/bsc/genesis.json
 

#启动节点(上面的init只要执行一次,之后启动节点不要再执行了)

ulimit -n 65535
/root/bsc-1.1.4/build/bin/geth --datadir /data/bsc/data --config /data/bsc/config.toml --syncmode "fast" --cache=8192 --rpc.allow-unprotected-txs --txlookuplimit 0 --allow-insecure-unlock

*然后按ctrl+ad回到主会话即可


10.测试验证

curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' http://127.0.0.1:8575

(如果已经追上最新高度,result会返回false)

curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' http://127.0.0.1:8575

 

11.停止节点

方式1:(建议,毕竟停止后还要启动不是)

screen -r bsc

按ctrl+c,等待一会即可看到节点停止

 

12.接口文档参考

RPC接口文档同eth文档,如:

以太坊JSON RPC手册 / eth_call - 汇智网


其它参考:

BSC链github地址:https://github.com/binance-chain/bsc

主网浏览器:https://bscscan.com/

主网链官方部署文档:https://docs.binance.org/smart-chain/developer/fullnode.html
私有链官方部署文档:https://docs.binance.org/smart-chain/developer/deploy/local.html


13.注意事项

*最大文件打开数必须修改,很多人遇到bsc客户端经常被kill,就是达到了最大文件打开数限制,导致被操作系统自动kill。

*同步到最高区块所需时间:

需要看网络带宽和磁盘io性能,我用NVMe的裸盘,读写1500到2000左右,1G的国外带宽,基于最新snapshot同步,大概需要3天左右。

*带宽需要100M,建议1G,磁盘io越高越好,如果5天还没有追上,或者高度经常落后,极有可能是服务器磁盘io存在瓶颈

*硬盘最好4T空间,否则区块数据都要1.9个T,如果只有2T空间根本不够用。

*虽然用snapshot+fast模式同步,但同步到最新高度后,依然会自动切换为full node模式,这是正常现象,不用疑惑,也不要删除重新同步。

*再次强调bsc非常耗资源,aws和阿里云的云盘性能根本不够,除非使用本地ssd才可以,而且bsc同步到最新高度后,对带宽的使用依然很高,建议网络不要按流量付费的,否则费用会高到无法承受。

*建议服务器先做io测试,可以用dd,或者安装个宝塔面板做跑分测试,磁盘读写低于500MB/s的就别安装了,建议1000MB/s以上,这个非常关键。

posted @ 2021-11-14 23:36 方伟的博客 阅读(3987) | 评论 (0)编辑 收藏

1.服务器

需要1T SSD(建议NVMe)硬盘,最好是裸硬盘,不可以用机械盘,否则会永远无法同步完成。

2.带宽

建议国外服务器,100M非cn2线路即可

3.操作系统

建议centos7/8,或ubuntu,这里均以centos为例

4.准备环境:

yum update -y

yum install screen iftop iotop -y

4.1.安装golang

yum install golang -y

或编译安装


*注意:如果使用的 Go 版本是 1.13 及以上 (推荐),如果不设置以下命令编译ETH源码时可能会出错
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io,direct
 

5.创建一个screen

screen -S eth

*注意1:最后退出时用ctrl+ad(顺序按a和d字母即可),不要用exit或ctrl+d退出会话。

*注意2:退出会话后,可以用screen -x eth重新连接到会话。

6.安装eth客户端

#这里我的数据目录,可以根据需要自行更改

mkdir -p /data/eth/data

#下载最新版本并编译

cd /root
wget -O go-ethereum-1.10.12.tar.gz https://github.com/ethereum/go-ethereum/archive/refs/tags/v1.10.12.tar.gz
tar -xvf go-ethereum-1.10.12.tar.gz
cd /root/go-ethereum-1.10.12
make all

7.检查安装是否成功

/root/go-ethereum-1.10.12/build/bin/geth version


8.设置防火墙
firewall-cmd --permanent --zone=public --add-port=30303/tcp
firewall-cmd --permanent --zone=public --add-port=8545/tcp
firewall-cmd --reload
不懂防火墙配置的,可以先禁用防火墙,关于firewalld的使用技巧,之后会单独写一篇教程

 

9.启动节点

ulimit -n 65535

/root/go-ethereum-1.10.12/build/bin/geth --datadir /data/eth/data --syncmode "fast" --cache=2048 --maxpeers 200 --http --http.addr=0.0.0.0 --http.port=8545 --http.api "web3,eth,debug,personal,net,admin" --http.corsdomain "*" --allow-insecure-unlock
 

*然后按ctrl+ad回到主会话即可


10.测试验证

curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' http://127.0.0.1:8545

(如果已经追上最新高度,result会返回false,这样以后就不用受infura调用频率的限制了)

curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' http://127.0.0.1:8545

(节点未同步完成会返回0)

11.停止节点

方式1:(建议,毕竟停止后还要启动不是)

screen -r eth

按ctrl+c,等待一会即可看到节点停止

 

12.接口文档参考

RPC接口文档,如:

以太坊JSON RPC手册 / eth_call - 汇智网


其它参考:

ETH链github地址:https://github.com/ethereum/go-ethereum

主网浏览器:https://etherscan.io


13.注意事项

*同步到最高区块所需时间:

需要看网络带宽和磁盘io性能,用NVMe的硬盘,读写1000到2000左右,100M的国外非cn2带宽,从0开始同步,大概需要半天到一天。

*如果2、3天还没有追上,或者最后100个块始终追不上,极有可能是服务器磁盘io存在瓶颈,再次强调,不可以用机械盘,不建议用虚拟机(磁盘不能做虚拟化),否则io速度不够,就永远无法同步完成,因为最后还有一步需要很高的IO速度才可以完成。

*硬盘最好1T空间,目前实际会占用584G左右。

posted @ 2021-11-14 23:36 方伟的博客 阅读(2302) | 评论 (0)编辑 收藏
yum install centos-release-scl -y
yum install llvm-toolset-7 -y
scl enable llvm-toolset-7 bash
clang --version
这样就可以安装最新版本了,记得旧的先删除
posted @ 2021-11-14 23:35 方伟的博客 阅读(259) | 评论 (0)编辑 收藏

编辑/etc/sysctl.conf:

vi /etc/sysctl.conf

增加如下两行:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

:wq保存退出后,执行

sysctl -p

将立即生效。


posted @ 2021-11-14 23:35 方伟的博客 阅读(61) | 评论 (0)编辑 收藏

curl --silent --location https://rpm.nodesource.com/setup_14.x | bash -
yum update -y
yum remove nodejs npm -y
yum install nodejs npm -y

这样就可以安装到14的版本了,需要什么版本可以自己指定。

posted @ 2021-11-14 23:33 方伟的博客 阅读(379) | 评论 (0)编辑 收藏