Ghi chép Handshake
Cài đặt fullnode blockchain Handshake
Sử dụng Docker
-
Có thể dụng dụng docker image do skywirex build sẵn ở Docker Hub
-
Tự build
### Clone source code
# git clone https://github.com/handshake-org/hsd.git
# cd hsd
### Thiết lập tham số cho image và build
# VERSION=$(cat package.json | grep version | sed 's/.*"\([0-9]*\.[0-9]*\.[0-9]*\)".*/\1/')
# COMMIT=$(git rev-parse --short HEAD)
# ARC=$(uname -m)
# docker build -t skywirex/hsd:$VERSION-$COMMIT-$ARC .
##### Đẩy image lên docker hub
# docker push skywirex/hsd:$VERSION-$COMMIT-$ARC
Truy cập domain handshake
Để truy cập website sử dụng domain handshake, có 2 cách:
-
Sử dụng những thứ có sẵn
- Trình duyệt Beacon (khuyên dùng cách này) có thể truy cập trực tiếp domain trên Handshake
- Cài đặt fingertip trên máy tính và sử dụng các trình duyệt ưa thích để truy cập bình thường
-
Tự cài đặt và cấu hình DNS resolver sử dụng fullnode hoặc lightnode.
light DNS resolver on Ubuntu 20 LTS
sudo apt update && sudo apt upgrade -y
sudo apt-get install build-essential
sudo apt install git
sudo apt install autotools-dev
sudo apt install automake
sudo apt install autoconf
sudo apt install libunbound-dev
sudo apt install libuv1-dev
git clone https://github.com/handshake-org/hnsd.git
./hnsd -r 127.0.0.1:5353
light DNS resolver on Alpine
apk update \
&& apk --no-cache --update add build-base automake autoconf
apk add git libtool unbound-dev bind-tools screen
git clone git://github.com/handshake-org/hnsd.git
cd hnsd
./autogen.sh && ./configure && make
screen
./hnsd
dig @127.0.0.1 -p 5350 proofofconcept
./hnsd -p 5 -r 10.0.0.17:53
dig @10.0.0.17 -p 53 proofofconcept
screen -r
history
./hnsd -r 10.0.0.17:5350
Một số trang web có thể truy cập được bằng với Domain Handshake có thể tham khảo tại dns.live
http://hnssearch./
http://nb./
http://gregosuri./
http://me.turbomaze./
Chạy regtest hoặc mainnet
docker create \
--name hsd-regtest \
--net=host \
-v ~/.hsd:/root/.hsd \
--restart=unless-stopped \
skywirex/hsd:<tag> --network regtest --http-host 0.0.0.0 --api-key=api-cua-ban
curl http://x:[email protected]:14037/
$ hsd --network=regtest
$ hsw-rpc --network=regtest getnewaddress
$ hsd-rpc --network=regtest generatetoaddress 100 $ADDRESS
docker create \
--name hsd \
--net=host \
-v ~/.hsd:/root/.hsd \
--restart=unless-stopped \
skywirex/hsd:<tag> --network main --http-host 0.0.0.0 --api-key=api-cua-ban
Test endpoint
curl http://x:[email protected]:12037/
lấy seed phrase
curl $walleturl/$id/master
{
"encrypted": false,
"key": {
"xprivkey": "rprvKE8qsHtkmUxUSPm69K2HLjAnjsEecv7BModHuarmVk9gbnRwYkYufvhv2XiNVxuz7wTMW3LsVKSoVUzz5TKmaYUyHHicQp3XB1gBHfXeDzbb"
},
"mnemonic": {
"bits": 256,
"language": "english",
"entropy": "63fff07dca91ff627a83abfedf3703834925d7bef7670c02b6c4eec63deda4e8",
"phrase": "glue zebra buyer news cable raise tube remove yard blue science alley sky type wink undo army hottest raise say glow walnut neck aspect"
}
}
newPass='pass-cua-ban'
curl $walleturl/$id/passphrase \
-X POST \
--data '{"passphrase":"'$newPass'"}'
numblocks=2;
address='rs1qkjttpwuxsj2nfflt4ak7slz8zla4q2ug8jgnff';
curl $url \
-X POST \
--data '{
"method": "generatetoaddress",
"params": [ '$numblocks', "'$address'" ]
}'
example:
$ hsd-rpc getnameresource coolness
{
"records": [
{
"type": "GLUE4",
"ns": "ns1.coolness.",
"address": "23.239.11.203"
},
{
"type": "GLUE4",
"ns": "ns2.coolness.",
"address": "66.175.216.232"
},
{
"type": "GLUE4",
"ns": "ns3.coolness.",
"address": "139.162.52.201"
}
]
}
dig @127.0.0.1 -p 5350 proofofconcept
dig @127.0.0.1 -p 5350 proofofconcept TXT +short
Import ví sử dụng seed phrase
Tạo ví với id, pass và seed
id='<newwalletname>'
passphrase='<abcxyz>'
mnemonic='<words words words...>'
curl http://x:[email protected]:12039/wallet/$id \
-X PUT \
--data '{"passphrase":"'$passphrase'", "mnemonic":"'$mnemonic'"}'
Kiểm tra ví sau khi import
curl http://x:[email protected]:12039/wallet/$id
Số dư ví
curl http://x:[email protected]:12039/wallet/$id/account/$account
Lúc này bạn sẽ không thấy số dư ví (nếu có số dư trên Bob)
Scan lại blockchain
height=50
curl http://x:[email protected]:12039/rescan \
-X POST \
--data '{"height": '$height'}'
Send coin
Thiết lập
id="primary"
passphrase="pass-cua-ban"
account='default'
rate=10000
value=1000000000
address="hs1qx8wkg90qmqls4zlcgksaw78uhvxn6y4k57kptz"
curl http://x:[email protected]:12039/wallet/$id/send \
-X POST \
--data '{
"passphrase":"'$passphrase'",
"rate":'$rate',
"outputs":[
{"address":"'$address'", "value":'$value'}
]
}'
REGISTER
curl http://x:[email protected]:12039/wallet/bob/update \
-X POST \
--data '{
"passphrase":"mypassword",
"name":"myname",
"broadcast":true,
"sign":true,
"data": {"records": []}
}'
Sao lưu và khôi phục ví
Ngoài việc backup seed bạn còn có thể nén thư mục ví được tạo ra trong lúc chạy hsd để có thể khôi phục lại trong trường hợp cần thiết. Ví này cần phải có password mới mở được.
Để thực hiện việc sao lưu ban di chuyển đến thư mục chứa ví (thông thường là .hsd
) và nén lại bằng lệnh tar
cd /root/.hsd/
tar -cvf wallet.tar ./wallet
Để khôi phục lại ví hoặc copy ví sang máy khác cần tạo tạo docker container bằng lệnh create sau đó tạo thư mục chứa blockchain và copy ví vào thư mục đó, hoặc có thể chạy và sync blochain như bình thường sau đó copy ví đè lên thư mục wallet
được tạo ra khi chạy daemon hsd.
mkdir ~/.hsd
cd ~/.hsd
tar -xvf wallet.tar
Ngoài ra, bạn còn có thể backup ví theo cách như cách hướng dẫn chính thức. Ví được backup sẽ nằm ở thư mục /root/.hsd/walletdb-backup.ldb
trong container hsd
path='/root/.hsd/walletdb-backup.ldb'
curl http://x:[email protected]:12039/backup?path=$path \
-X POST
Login vào docker và kiểm tra
docker exec -ti hsd /bin/sh