XDAG同步节点部署

系统环境要求

JDK : v17
Maven : v3.9.1-v3.9.5
MySQL : v8.0系列

1、MySQL8.0安装

1)docker-compose安装详情
MySQL安装

2)配置数据库账号密码及键表

bash 复制代码
# docker exec -it mysql8 /bin/bash
# root@0286a1fd60e6:/# mysql -uroot -p
Enter password:
mysql> CREATE DATABASE xdagj;
Query OK, 0 rows affected (0.00 sec)
mysql> use xdagj;
mysql> CREATE TABLE `t_transaction_history` (
  `fid` int(11) NOT NULL AUTO_INCREMENT,
  `faddress` varchar(64) NOT NULL,
  `faddresstype` tinyint(4) NOT NULL,
  `fhash` varchar(64) NOT NULL,
  `famount` decimal(20,9) unsigned zerofill NOT NULL,
  `ftype` tinyint(4) NOT NULL,
  `fremark` varchar(64) DEFAULT NULL,
  `ftime` datetime(3) NOT NULL,
  PRIMARY KEY (`fid`),
  UNIQUE KEY `id_UNIQUE` (`fid`),
  KEY `faddress_index` (`faddress`)
) ENGINE=InnoDB AUTO_INCREMENT=17392050 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE USER 'xdagj'@'%' IDENTIFIED BY 'xdagj';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'xdagj'@'%' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

2、准备java编译环境,编译代码

1)安装jdk17

bash 复制代码
# apt-get install openjdk-17-jdk

2)安装过maven3.9.5

bash 复制代码
# wget https://dlcdn.apache.org/maven/maven-3/3.9.5/binaries/apache-maven-3.9.5-bin.tar.gz
# tar -xf apache-maven-3.9.5-bin.tar.gz -C /usr/local/
# vim /etc/profile
`
MAVEN_HOME=/usr/local/apache-maven-3.9.5/bin/
export PATH=$PATH:$MAVEN_HOME
`
# source /etc/profile

3)拉取代码并编译代码

bash 复制代码
# git clone https://github.com/XDagger/xdagj.git
# cd xdagj
# mvn clean package -Dmaven.test.skip=true
# ls dist
xdag.bat  xdagj-linux.zip  xdagj-macos.zip  xdagj-windows.zip  xdag.sh
# mkdir bin
# unzip dist/xdagj-linux.zip -d bin/
# cd bin
ls
druid.properties  log4j2.xml  logs  mainnet  rpc_modules.conf  xdag-devnet.conf  xdagj-0.6.5-shaded.jar  xdag-mainnet.conf  xdag.sh  xdag-testnet.conf

3、下载数据快照

快照地址

bash 复制代码
# cd bin
# wget https://storage.xdagpool.com/snapshot-2722283-193b2380000.tar.gz
# mkdir -p mainnet/rocksdb/xdagdb/
# tar -xf snapshot-2722283-193b2380000.tar.gz -d mainnet/rocksdb/xdagdb/

4、编辑配置文件启动节点

编辑xdag-mainnet.conf文件

bash 复制代码
# cat xdag-mainnet.conf
# Admin Config
admin.telnet.ip = 127.0.0.1
admin.telnet.port = 6001
admin.telnet.password = root

# Pool Config
pool.ip = 0.0.0.0
pool.port = 7001
pool.tag = XdagJ

# Pool-Reward Config
pool.poolRation = 5
pool.rewardRation = 5
pool.fundRation = 5
pool.directRation = 5
pool.fundAddress = FQglVQtb60vQv2DOWEUL7yh3smtj7g1s

# Node config
node.ip = 0.0.0.0
node.port = 8001
node.maxInboundConnectionsPerIp = 8
# 公共节点IP,要找供应商添加白名单
node.whiteIPs = ["152.32.219.239:8001"]
# 同步节点不挖矿,关闭出块
node.generate.block.enable = false 

# Node transaction history config
node.transaction.history.enable = true

# Node libp2p Config
node.libp2p.port = 9001
node.libp2p.isbootnode = true
node.libp2p.privkey = 0x0802122074ca7d1380b2c407be6878669ebb5c7a2ee751bb18198f1a0f214bcb93b894b5
node.libp2p.bootnode = ["enr:-Iu4QPY6bYDC0PaafEwhgg_6yTcx0GAGbSARYqehJKEkyOmxX6SNZMyMMdkmDw9bAvYN9m2LrqIsPSd-bUqff0tsHYABgmlkgnY0gmlwhH8AAAGJc2VjcDI1NmsxoQJ2EWgMpl6PtyFKMbbOb82Ob-al9NeE3GYB3-K7n4yWwoN0Y3CCJxGDdWRwgicR"]

# Node RPC Config
rpc.enabled = true
rpc.http.host = 0.0.0.0
rpc.http.port = 10001
rpc.ws.port = 10002

# Miner Config
miner.globalMinerLimit = 8192
miner.globalMinerChannelLimit = 8192
miner.maxConnectPerIp = 256
miner.maxMinerPerAccount = 256

# Randomx Config
randomx.flags.fullmem = false

编辑druid.properties文件

bash 复制代码
# cat druid.properties 
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/xdagj?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&&serverTimezone=UTC
username=xdagj
password=xdagj
minIdle=5
initialSize=5
maxActive=10
maxWait=100
testOnBorrow=true
testOnReturn=true
testWhileIdle=true
validationQuery=select 1
validationQueryTimeout=1
timeBetweenEvictionRunsMillis=480000
ConnectionErrorRetryAttempts=3
NotFullTimeoutRetryCount=3
#removeAbandonedTimeoutMillis=480000
#removeAbandoned=true
numTestsPerEvictionRun=3
minEvictableIdleTimeMillis=480000
maxEvictableIdleTimeMillis=600000
keepAliveBetweenTimeMillis=540000

启动节点

bash 复制代码
sh xdag.sh --enablesnapshot true 2722283 193b2380000
enable snapshot:true
Create New Wallet...
EnterNewPassword:
ReEnterNewPassword:
HdWallet Initializing...
HdWallet Mnemonic: avcd hfbf host aegterg ajfgh lojfob aeogn aedg aegrg sefge jkne adomm
HdWallet Mnemonic Repeat:avcd hfbf host aegterg ajfgh lojfob aeogn aedg aegrg sefge jkne adomm quote
HdWallet Initialized Successfully!
New Address:2a3e4c487lkd2238a2e7a9ec33767852c9ohgfri
init snapshot...
init snapshotJ done
time:371582ms
Our balance: 0.000000000
All amount: 1219994175.999999023
telnetd is running on 127.0.0.1:6001
Nov 20, 2023 8:21:47 PM org.jline.builtins.telnet.PortListener run
INFO: Listening to Port 6,001 with a connectivity queue size of 10.

5、查询操作节点

bash 复制代码
:~# telnet 127.0.0.1 6001
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
Enter Admin password>**** (mainnet配置文件中有)
xdag> state
Connected to the main network. Synchronizing from low to high.
xdag> balance 
Balance: 0.000000000 XDAG
xdag> account
4rN1bDkkv3oXKF8PUpUZjVxi6wNdCTZ3T 0.000000000 XDAG

xdag> xfer
Lost some param
xdag> net -l
/152.32.219.239:8001 2023-11-20 20:58:33 31424 in/16092 out
/152.32.219.239:34044 2023-11-20 20:59:26 76 in/3 out
xdag> mainblocks
---------------------------------------------------------------------------------------------------------
height        address                            time                      state     mined by            
---------------------------------------------------------------------------------------------------------
02724441   xUjl48zOvF/52Zb2L5VR0cMWkWg66XtD   2023-08-30 11:49:19.999   Main      HTTPS://XDAG.ORG EQUAL
02724440   zIUVbTK3mOcA2QAT6TX3TZ1uLkz/8jn8   2023-08-30 11:48:15.999   Main      HTTPS://XDAG.ORG SOLO
02724439   1oo0o4A5MW302xBvMwD6wQ95O8IwHaJh   2023-08-30 11:47:11.999   Main      https://equal.xdagmine.com
02724438   HSAFCKZD2Veb1tESbpC+8OnqQ1XRd8dC   2023-08-30 11:46:07.999   Main      HTTPS://XDAG.ORG SOLO
02724437   x25cLeypUR0+ZWcTJTHD9RYcqjfca1WX   2023-08-30 11:45:03.999   Main      HTTPS://XDAG.ORG SOLO 2
02724436   rTa41sp/0PKCEHq71X0mRrBv3jHaqejL   2023-08-30 11:43:59.999   Main      HTTPS://XDAG.ORG SOLO
02724435   oM8wBE3GDnk8SvyDacm+MNc3G2ZvDnwA   2023-08-30 11:42:55.999   Main      HTTPS://XDAG.ORG SOLO
02724434   4+tE8yaqNWLsnPjCDcR2zBn+GI+YU5MO   2023-08-30 11:41:51.999   Main      https://equal.xdagmine.com
02724433   XQypGeg0kw0o2N12i/qrqAMBVGnCM187   2023-08-30 11:40:47.999   Main      HTTPS://XDAG.ORG EQUAL 2
02724432   AoHJ26AHu7uZB/IO8KRhChkiimfEBom6   2023-08-30 11:39:43.999   Main      HTTPS://XDAG.ORG EQUAL
02724431   nRTHG0EAu0+PA8ebzKPmYG3r7330G/BN   2023-08-30 11:38:39.999   Main      HTTPS://XDAG.ORG SOLO
02724430   wP/n48EiAPgi6lVgZJPDJeWz8FKei8ds   2023-08-30 11:37:35.999   Main      HTTPS://XDAG.ORG SOLO 2
02724429   pvGiDjz1y3/+msNhvd+ItuOxz9ljZNwJ   2023-08-30 11:36:31.999   Main      HTTPS://XDAG.ORG SOLO 2
02724428   YQb2L97G2cfrw3fUFatI0bIVFBqUvgBb   2023-08-30 11:35:27.999   Main      HTTPS://XDAG.ORG EQUAL 2
02724427   0mYGOhNI9HoaQkSnzNqi1toIH5FIY6PD   2023-08-30 11:34:23.999   Main      HTTPS://XDAG.ORG EQUAL
02724426   htiEatRcljLQz+5TpkJom8wAWpDUluD4   2023-08-30 11:33:19.999   Main      HTTPS://XDAG.ORG EQUAL
02724425   +5C/PJnsgX4HPf+hArteuuapj9NYkzDD   2023-08-30 11:32:15.999   Main      HTTPS://XDAG.ORG EQUAL
02724424   CZGrJgrQz5DAUIcaOcFr/nbH93LGwQvs   2023-08-30 11:31:11.999   Main      HTTPS://XDAG.ORG EQUAL
02724423   0LD7tYPM/YFvn5bGZrHXb0pQCLWkjs/k   2023-08-30 11:30:07.999   Main      HTTPS://XDAG.ORG EQUAL
02724422   YLssHNicvfGB7smQSgJR9b99+lJHi86N   2023-08-30 11:29:03.999   Main      HTTPS://XDAG.ORG SOLO 2
xdag> state
Connected to the main network. Synchronizing from low to high.(没有同步完)
xdag> account
4rN1bDkkv3oXKF8PUpUZjVxi6wNdCTZ3T 20.000000000 XDAG
xdag> help
    account     print first [SIZE] (20 by default) our addresses with their amounts
    address     address-  print extended info for the account corresponding to the address, page size 100
    balance     print balance of the address [ADDRESS] or total balance for all our addresses
    block       print extended info for the block corresponding to the address or hash [A]
    disconnect  disconnect all connections or specified miners
    exit        exit from app/script
    help        command help
    keygen      generate new private/public key pair and set it by default
    lastblocks  print latest [SIZE] (20 by default, max limit 100) main blocks
    mainblocks  print latest [SIZE] (20 by default, max limit 100) main blocks
    minedblocks print list of [SIZE] (20 by default) main blocks mined by current pool
    miners      for pool, print list of recent connected miners
    net         run transport layer command, try 'net --help'
    oldbalance  print max balance we can transfer
    state       print the program state
    stats       print statistics for loaded and all known blocks
    terminate   terminate both daemon and this program
    ttop        display and update sorted information about threads
    xfer        transfer [AMOUNT] XDAG to the address [ADDRESS]
    xfertonew   transfer the old balance to new address
xdag> state
Synchronized with the main network. Normal operation.(同步完成)

curl命令

bash 复制代码
# 获取最新高度
curl http://127.0.0.1:10001/ -s -X POST -H "Content-Type: application/json" --data "{\"jsonrpc\":\"2.0\",\"method\":\"xdag_blockNumber\",\"params\":[],\"id\":1}"
{"jsonrpc":"2.0","id":1,"result":"2836571"}
# 获取钱包地址余额
curl http://127.0.0.1:10001/ -s -X POST -H "Content-Type: application/json" --data "{\"jsonrpc\":\"2.0\",\"method\":\"xdag_getBalance\",\"params\":[\"4rN1bDkkv3oXKF8PUpUZjVxi6wNdCTZ3T\"],\"id\":1}"
{"jsonrpc":"2.0","id":1,"result":"20.000000000"}
# curl判断是否同步完成
curl http://127.0.0.1:10001/ -s -X POST -H "Content-Type: application/json" --data "{\"jsonrpc\":\"2.0\",\"method\":\"xdag_syncing\",\"params\":[],\"id\":1}"
# 同步没完成
{"jsonrpc":"2.0","id":1,"result":{"currentBlock":null,"highestBlock":null,"isSyncDone":false}}
# 同步完成
{"jsonrpc":"2.0","id":1,"result":{"currentBlock":"2837021","highestBlock":"2837021","isSyncDone":true}}
# 向钱包地址3uSDNgTbe78VjLtCnD1syFA1ffr883q76转5个币,result返回DAG值
# curl http://127.0.0.1:10001/ -s -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"xdag_personal_sendTransaction","params":[{"to":"3uSDNgTbe78VjLtCnD1syFA1ffr883q76","value": "5","remark":"test_shen"},"asdfefd"],"id":1}'
{"jsonrpc":"2.0","id":1,"result":["XMZgnN+Cw/hM3KIj/pv7wnDxlZEQOWzG"]}

更多文档详情

一键创建多钱包地址

密码直接写在脚本中
bash 复制代码
# cd bin
# vim account_create.sh
# chmod +x account_create.sh
# ./account_create.sh
spawn sh ./xdag.sh --account create
Please Enter Wallet Password: 
New Address:6b39bc7cf7329648185eaef0e5b44fd19933e42f
PublicKey:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
spawn sh ./xdag.sh --account create
Please Enter Wallet Password: 
New Address:1a3817890587cd7900e905e79a6050414d15c8d9
PublicKey:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
spawn sh ./xdag.sh --account create
Please Enter Wallet Password: 
New Address:d41f08c17e645d2632d91d2e101d2ab2612d697c
PublicKey:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
spawn sh ./xdag.sh --account create
Please Enter Wallet Password: 
New Address:f4e91ba3ef273e6a8003ab9611b403e063da6aca
PublicKey:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
spawn sh ./xdag.sh --account create
Please Enter Wallet Password: 
New Address:f5b56deb89f79223b26e084ac9de6114735236c8
PublicKey:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

脚本内容

powershell 复制代码
#!/usr/bin/expect

set password "adevdaf" ; # 设置密码

set max_iterations 5 ; # 设置循环次数

set i 0

while {$i < $max_iterations} {
    spawn sh ./xdag.sh --account create

    expect "Please Enter Wallet Password:"
    send "$password\r"
    
    expect eof; # 等待命令执行完毕
    incr i
}
控制台输入密码并不显示密码

脚本内容

powershell 复制代码
#!/usr/bin/expect

#set password "jm^CfKrKRvLSbQp@jdE#" ; # 设置密码

# 隐藏密码输入
stty -echo

send_user "Please enter your wallet password: "
expect_user -re "(.*)\n"
set password $expect_out(1,string)

# 恢复密码显示
stty echo

set max_iterations 2 ; # 设置循环次数

set i 0

while {$i < $max_iterations} {
    spawn sh ./xdag.sh --account create

    expect "Please Enter Wallet Password:"
    send "$password\r"
    
    expect eof; # 等待命令执行完毕
    incr i
}

执行过程

bash 复制代码
# expect account_create_passwd.sh 
Please enter your wallet password: spawn sh ./xdag.sh --account create
Please Enter Wallet Password: 
New Address:35c1608edc93bc6a98eb2b6011bc917d61abc6a6
PublicKey:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
spawn sh ./xdag.sh --account create
Please Enter Wallet Password: 
New Address:c083a359cf6af6eb3352a99868f5fb6100e6cbf6
PublicKey:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

一键查询钱包地址

密码直接写死在脚本
bash 复制代码
# vim account_list.expect
# chmod +x account_list.expect
 # ./account_list.expect 
spawn sh ./xdag.sh --account list
Please Enter Wallet Password: 
Address:0 2a3e4c425e0e2238a2e7a9ec33767852ca88ad96
Address:1 1fdaedb9e96e39dfbbfc7e417ba6d4a7af3eb63e
Address:2 b383b3b400faba04496976e4df5464ccea3f1b31
Address:3 bfbf27d7e046dad268cf3c0c080679f242c1116a
Address:4 6b39bc7cf7329648185eaef0e5b44fd19933e42f
Address:5 1a3817890587cd7900e905e79a6050414d15c8d9
Address:6 d41f08c17e645d2632d91d2e101d2ab2612d697c
Address:7 f4e91ba3ef273e6a8003ab9611b403e063da6aca
Address:8 f5b56deb89f79223b26e084ac9de6114735236c8

脚本内容

powershell 复制代码
#!/usr/bin/expect

set password "agehjyk" ; # 设置密码

spawn sh ./xdag.sh --account list 

expect "Please Enter Wallet Password:"
send "$password\r"
expect eof;
控制台输入密码并不显示密码
powershell 复制代码
#!/usr/bin/expect

# 隐藏密码输入
stty -echo

send_user "Please enter your wallet password: "
expect_user -re "(.*)\n"
set password $expect_out(1,string)

# 恢复密码显示
stty echo

spawn sh ./xdag.sh --account list 

expect "Please Enter Wallet Password:"
send "$password\r"
expect eof;

执行结果

bash 复制代码
# expect account_list_passwd.sh 
Please enter your wallet password: spawn sh ./xdag.sh --account list
Please Enter Wallet Password: (此处输入密码)
Address:0 2a3e4c425e0e2238a2e7a9ec33767852ca88ad96
Address:1 1fdaedb9e96e39dfbbfc7e417ba6d4a7af3eb63e
Address:2 b383b3b400faba04496976e4df5464ccea3f1b31
Address:3 bfbf27d7e046dad268cf3c0c080679f242c1116a
Address:4 6b39bc7cf7329648185eaef0e5b44fd19933e42f
Address:5 1a3817890587cd7900e905e79a6050414d15c8d9
Address:6 d41f08c17e645d2632d91d2e101d2ab2612d697c
Address:7 f4e91ba3ef273e6a8003ab9611b403e063da6aca
Address:8 f5b56deb89f79223b26e084ac9de6114735236c8

一键导出所有钱包地址的私钥

密码直接写死在脚本文本中
bash 复制代码
# vim account_keydump.sh
# sh account_keydump.sh
# cat address_privatekey.txt
`
spawn sh -c ./xdag.sh --dumpprivatekey 2a3e4c425e0e2238a2e7a9ec33767852ca88ad96
Please Enter Wallet Password: 
Private:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Dump Successfully!
spawn sh -c ./xdag.sh --dumpprivatekey 1fdaedb9e96e39dfbbfc7e417ba6d4a7af3eb63e
Please Enter Wallet Password: 
Private:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Dump Successfully!
spawn sh -c ./xdag.sh --dumpprivatekey b383b3b400faba04496976e4df5464ccea3f1b31
Please Enter Wallet Password: 
Private:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Dump Successfully!
spawn sh -c ./xdag.sh --dumpprivatekey bfbf27d7e046dad268cf3c0c080679f242c1116a
Please Enter Wallet Password: 
Private:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Dump Successfully!
spawn sh -c ./xdag.sh --dumpprivatekey 6b39bc7cf7329648185eaef0e5b44fd19933e42f
Please Enter Wallet Password: 
Private:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Dump Successfully!
spawn sh -c ./xdag.sh --dumpprivatekey 1a3817890587cd7900e905e79a6050414d15c8d9
Please Enter Wallet Password: 
Private:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Dump Successfully!
spawn sh -c ./xdag.sh --dumpprivatekey d41f08c17e645d2632d91d2e101d2ab2612d697c
Please Enter Wallet Password: 
Private:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Dump Successfully!
spawn sh -c ./xdag.sh --dumpprivatekey f4e91ba3ef273e6a8003ab9611b403e063da6aca
Please Enter Wallet Password: 
Private:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Dump Successfully!
spawn sh -c ./xdag.sh --dumpprivatekey f5b56deb89f79223b26e084ac9de6114735236c8
Please Enter Wallet Password: 
Private:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Dump Successfully!
`

脚本文本内容

powershell 复制代码
#!/bin/bash

password="owjvalekfvae"
addresses=$(/data/docker-compose/xdagj/bin/account_list.expect | awk '/Address/ {print $NF}')

for address in $addresses; do
    /usr/bin/expect -f - << EOF  >> address_privatekey.txt
    set timeout -1
    spawn sh -c "./xdag.sh --dumpprivatekey $address"
    expect "Please Enter Wallet Password:"
    send "$password\r"
    expect eof
EOF
done
密码控制台输出且不显示

执行效果

bash 复制代码
# sh account_keydump_passwd.sh 
Please enter your account_list password: (第一次输入密码)
Please enter your dump walletkey password: (第二次输入密码)
spawn sh -c ./xdag.sh --dumpprivatekey 2a3e4c425e0e2238a2e7a9ec33767852ca88ad96
Please Enter Wallet Password: 
Private:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Dump Successfully!
spawn sh -c ./xdag.sh --dumpprivatekey 1fdaedb9e96e39dfbbfc7e417ba6d4a7af3eb63e
Please Enter Wallet Password: 
Private:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Dump Successfully!
spawn sh -c ./xdag.sh --dumpprivatekey b383b3b400faba04496976e4df5464ccea3f1b31
Please Enter Wallet Password: 
Private:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Dump Successfully!
spawn sh -c ./xdag.sh --dumpprivatekey bfbf27d7e046dad268cf3c0c080679f242c1116a
Please Enter Wallet Password: 
Private:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Dump Successfully!
spawn sh -c ./xdag.sh --dumpprivatekey 6b39bc7cf7329648185eaef0e5b44fd19933e42f
Please Enter Wallet Password: 
Private:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Dump Successfully!
spawn sh -c ./xdag.sh --dumpprivatekey 1a3817890587cd7900e905e79a6050414d15c8d9
Please Enter Wallet Password: 
Private:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Dump Successfully!
spawn sh -c ./xdag.sh --dumpprivatekey d41f08c17e645d2632d91d2e101d2ab2612d697c
Please Enter Wallet Password: 
Private:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Dump Successfully!
spawn sh -c ./xdag.sh --dumpprivatekey f4e91ba3ef273e6a8003ab9611b403e063da6aca
Please Enter Wallet Password: 
Private:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Dump Successfully!
spawn sh -c ./xdag.sh --dumpprivatekey f5b56deb89f79223b26e084ac9de6114735236c8
Please Enter Wallet Password: 
Private:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Dump Successfully!
spawn sh -c ./xdag.sh --dumpprivatekey 35c1608edc93bc6a98eb2b6011bc917d61abc6a6
Please Enter Wallet Password: 
Private:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Dump Successfully!
spawn sh -c ./xdag.sh --dumpprivatekey c083a359cf6af6eb3352a99868f5fb6100e6cbf6
Please Enter Wallet Password: 
Private:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Dump Successfully!

脚本文件内容

powershell 复制代码
#!/bin/bash

echo -n "Please enter your account_list password: "
stty -echo
read list_password
stty echo
echo

addresses=$(/usr/bin/expect -c "spawn /data/docker-compose/xdagj/bin/account_list_passwd.sh; expect \"Password:\"; send \"$list_password\r\"; interact" | awk '/Address/ {print $NF}')

echo -n "Please enter your dump walletkey password: "
stty -echo
read password
stty echo
echo

for address in $addresses; do
    /usr/bin/expect -f - << EOF >> address_dumpkey.txt
    set timeout -1
    spawn sh -c "./xdag.sh --dumpprivatekey $address"
    expect "Please Enter Wallet Password:"
    send "$password\r"
    expect eof
EOF
done

当我们的脚本输出导入到了address_dumpkey.txt文件时,我们就只要查询这个文件就可以

bash 复制代码
# cat address_dumpkey.txt
spawn sh -c ./xdag.sh --dumpprivatekey 2a3e4c425e0e2238a2e7a9ec33767852ca88ad96
Please Enter Wallet Password: 
Private:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Dump Successfully!
spawn sh -c ./xdag.sh --dumpprivatekey 1fdaedb9e96e39dfbbfc7e417ba6d4a7af3eb63e
Please Enter Wallet Password: 
Private:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Dump Successfully!
spawn sh -c ./xdag.sh --dumpprivatekey b383b3b400faba04496976e4df5464ccea3f1b31
Please Enter Wallet Password: 
Private:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Dump Successfully!
spawn sh -c ./xdag.sh --dumpprivatekey bfbf27d7e046dad268cf3c0c080679f242c1116a
Please Enter Wallet Password: 
Private:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Dump Successfully!
spawn sh -c ./xdag.sh --dumpprivatekey 6b39bc7cf7329648185eaef0e5b44fd19933e42f
Please Enter Wallet Password: 
Private:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Dump Successfully!
spawn sh -c ./xdag.sh --dumpprivatekey 1a3817890587cd7900e905e79a6050414d15c8d9
Please Enter Wallet Password: 
Private:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Dump Successfully!
spawn sh -c ./xdag.sh --dumpprivatekey d41f08c17e645d2632d91d2e101d2ab2612d697c
Please Enter Wallet Password: 
Private:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Dump Successfully!
spawn sh -c ./xdag.sh --dumpprivatekey f4e91ba3ef273e6a8003ab9611b403e063da6aca
Please Enter Wallet Password: 
Private:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Dump Successfully!
spawn sh -c ./xdag.sh --dumpprivatekey f5b56deb89f79223b26e084ac9de6114735236c8
Please Enter Wallet Password: 
Private:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Dump Successfully!
spawn sh -c ./xdag.sh --dumpprivatekey 35c1608edc93bc6a98eb2b6011bc917d61abc6a6
Please Enter Wallet Password: 
Private:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Dump Successfully!
spawn sh -c ./xdag.sh --dumpprivatekey c083a359cf6af6eb3352a99868f5fb6100e6cbf6
Please Enter Wallet Password: 
Private:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Dump Successfully!