Skip to content

Installation

This installation expects MacOS environment.

Requirements

Common Setup

  1. install Golang, Docker
  2. build watch, keygen, auth wallets
  • only each sign wallet includes corresponding account name as authName into 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/
  1. configure config files in ./config/wallet/*.toml
  2. run Database containers
docker compose up wallet-mysql

Bitcoind Setup

At least, one bitcoin core server and 1 database (with 3 schemas: watch, keygen, sign) are required.

  1. copy bitcoin.conf from ./config/blockchain/bitcoind/ to ./docker/nodes/btc/watch, keygen, sign1 directory respectively.
  • I recommend signet network.
  1. run bitcoind node containers
docker compose -f compose.btc.yaml up btc-watch btc-keygen btc-sign
  1. setup bitcoin-cli using docker

    • after running btc-watch container, set alias on shell
    zsh
    alias 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'
  2. 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 sign5
  3. load 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 sign5
  4. operation

Bitcoind Setup without container

  1. install bitcoind on macOS directly if needed
  1. run bitcoind $ bitcoind

  2. create 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-data after tweaking parameters before running make up-docker-geth.

[WIP] Call API => move to operation example

  1. watch -coin eth api clientversion
client version: Geth/v1.10.15-stable-8be800ff/linux-amd64/go1.17.5
  1. watch -coin eth api nodeinfo
  2. watch -coin eth api syncing
  3. watch -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

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 address in console and modify contract_address at ethereum.erc20s.hyt section in ./config/eth_watch.toml
  • copy account in console and modify master_address at ethereum.erc20s.hyt section 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

Ripple Setup