Installation
This installation expects MacOS environment.
Requirements
- Golang 1.25+
- Docker
Common Setup
- install Golang, Docker
- build
watch,keygen,authwallets
- only each sign wallet includes corresponding account name as
authNameinto binary
sh
make build
or
go build -v -o ${GOPATH}/bin/watch ./cmd/watch/
go build -v -o ${GOPATH}/bin/keygen ./cmd/keygen/
go build -ldflags "-X main.authName=auth1" -v -o ${GOPATH}/bin/sign1 ./cmd/sign/
go build -ldflags "-X main.authName=auth2" -v -o ${GOPATH}/bin/sign2 ./cmd/sign/- configure config files in ./config/wallet/*.toml
- run Database containers
docker compose up wallet-mysqlBitcoind Setup
At least, one bitcoin core server and 1 database (with 3 schemas: watch, keygen, sign) are required.
- copy
bitcoin.conffrom ./config/blockchain/bitcoind/ to ./docker/nodes/btc/watch, keygen, sign1 directory respectively.
- I recommend signet network.
- run bitcoind node containers
docker compose -f compose.btc.yaml up btc-watch btc-keygen btc-signsetup
bitcoin-cliusing docker- after running
btc-watchcontainer, set alias on shell
zshalias bitcoin-cli-watch='docker exec -it btc-watch bitcoin-cli' alias bitcoin-cli-keygen='docker exec -it btc-keygen bitcoin-cli' alias bitcoin-cli-sign='docker exec -it btc-sign bitcoin-cli'- after running
create wallets on bitcoind respectively
./scripts/operation/create-bitcoind-wallet.sh or bitcoin-cli-watch createwallet watch bitcoin-cli-keygen createwallet keygen bitcoin-cli-sign createwallet sign1 bitcoin-cli-sign createwallet sign2 bitcoin-cli-sign createwallet sign3 bitcoin-cli-sign createwallet sign4 bitcoin-cli-sign createwallet sign5load wallet (required if btc containers restarted)
./scripts/operation/load-bitcoind-wallet.sh or bitcoin-cli-watch loadwallet watch bitcoin-cli-keygen loadwallet keygen bitcoin-cli-sign loadwallet sign1 bitcoin-cli-sign loadwallet sign2 bitcoin-cli-sign loadwallet sign3 bitcoin-cli-sign loadwallet sign4 bitcoin-cli-sign loadwallet sign5operation
Bitcoind Setup without container
- install
bitcoindon macOS directly if needed
run bitcoind
$ bitcoindcreate wallets separately (if only one node used)
$ bitcoin-cli createwallet watch $ bitcoin-cli createwallet keygen $ bitcoin-cli createwallet sign1 $ bitcoin-cli createwallet sign2 $ bitcoin-cli createwallet sign3 $ bitcoin-cli createwallet sign4 $ bitcoin-cli createwallet sign5 $ bitcoin-cli listwallets [ "", "watch", "keygen", "sign1", "sign2", "sign3", "sign4", "sign5" ]
Ethereum Setup
It depends on which node you choose
A. go-ethereum
- run node by docker compose
make up-docker-geth
or
docker compose -f compose.eth.yaml up geth- If you have exported data, run
make import-geth-dataafter tweaking parameters before runningmake up-docker-geth.
[WIP] Call API => move to operation example
watch -coin eth api clientversion
client version: Geth/v1.10.15-stable-8be800ff/linux-amd64/go1.17.5watch -coin eth api nodeinfowatch -coin eth api syncingwatch -coin eth api netversion
B. Ganache
- run node by docker compose
docker compose -f compose.eth.yaml up ganache- prepare sql file if you choose Ganache. But, first account(index[0]) must not be used. See more instruction here
ERC20 Token Setup
- deploy ERC-20 token contract if needed
- Original ERC-20 token is here. See
scripts/operation/deploy-token.sh
cd ./web/erc20-token
yarn install
# deploy contract to current network
yarn run deploy # using 7545 port
or
yarn run deploy-dev2 # using 8545 port- copy
contract addressin console and modifycontract_addressatethereum.erc20s.hytsection in ./config/eth_watch.toml - copy
accountin console and modifymaster_addressatethereum.erc20s.hytsection in ./config/eth_watch.toml
# check balance
yarn ts-node src/web3.ts --mode balance --address 0xXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# transfer to specific address
yarn ts-node src/web3.ts --mode transfer --address 0xXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX --amount 100