This service is used in OpenDAX Go HDwallet microservice to generate wallets, sign and broadcast transactions. It is using BIP-32 HD Wallet, which mean all addresses are generated from one master seed
Deposit wallet
blockchain_key: eth blockchain (infura) with right explorer_address, explorer_transaction
gateway: field set as `opendax`
settings:
uri: a link to go-hd microservice (e.g. "https://hdwallet/api/v2/hdwallet")
gateway_url: a url of the infura or private node for broadcast transactions
Example:
Wallet.create!(
blockchain_key: "eth-testnet",
name: "ETH/ERC-20 Deposit Wallet",
address: "changeme",
gateway: "opendax",
kind: "deposit",
settings: {uri: "https://hdwallet/api/v2/hdwallet", gateway_url: "https://infura.io"},
max_balance: 0,
status: "active"
)
Hot wallet
To save Hot wallet you need to generate it see
blockchain_key: eth blockchain (infura) with right explorer_address, explorer_transaction
gateway: field set as `opendax`
address: Hot wallet address
settings:
uri: a link to go-hd microservice (https://hdwallet/api/v2/hdwallet)
gateway_url: a url of the infura or private node for broadcast transactions
wallet_index: should be vault encrypted secret from wallet private key
secret: index provided in the address generation step
Example:
Wallet.create!(
blockchain_key: "eth-testnet",
name: "ETH/ERC-20 HOT Wallet",
address: "hot-wallet-address",
gateway: "opendax",
kind: "hot",
settings: {
uri: "https://hdwallet/api/v2/hdwallet",
gateway_url: "https://infura.io",
wallet_index: 1,
secret: "changeme"
},
max_balance: 1000,
status: "active"
)
To test address creating you need to be sure that:
blockchain_key
should be some fake blockchain with right explorer_address, explorer_transactiongateway
field set as opendax
uri
should be a link to go-hd microservice, default is https://hdwallet/api/v2/hdwallet
;gateway_url
should be a url of the crypto node, infura;passphrase
- should be vault encrypted secret from wallet private key;wallet_index
- index provided in the address generation step# Find deposit wallet and save it to variable
w = Wallet.find(id)
service = WalletService.new(w)
service.create_address!(uid, {})
# response
{
"address":"0x6876447bF1ab4efc09740e242eaED2Ab389509a4",
"passphrase":"2ee7dc93b6581c3ac31f62d32257477e",
"coin-type":"eth",
"wallet-index":20004
}
api/v2/peatio/account/deposit_address/:currency
// response
{
"currencies": ["bigo","cro","eth"],
"address":"0xb06dd7f8ee1852cf3f9e43b9a703a06f8e28d31f",
"state":"active"
}
amqp-daemon-deposit-coin-address
daemon logsTo verify address information has right format
# Find deposit wallet and member configuration
wallet = Wallet.find(id)
member = Member.find_by(email 'your email')
# Find member payment address
payment_address = PaymentAddress.find_by(wallet_id: wallet.id, member_id: member.id)
# In payment address secret should be information about passphrase (encrypted password from private key)
payment_address.secret
"a4ee099cc541dd222dc24ea546dd46c6"
# In payment address details should be information about wallet index, and coin type
payment_address.details
{"wallet_index"=>2, "coin_type"=>"eth"}
To test create transaction you should have all configuration described on create_address
step for all wallets related to your currency (especially deposit, hot wallet)
Be sure that you have blockchain configured before doing transaction and this blockchain-key connected both for currency and wallets!
Blockchain server
param should be the same as url
param in wallet settings (node url, infura url)
daemon-deposit
amqp-daemon-withdraw-coin
about withdraw status from rails console, admin tower or your wallet pageTo test load balance you should have all configuration described on create_address
step for all wallets related to your currency (deposit, hot, warm, cold)
1. Find deposit wallet and save it to variable
w = Wallet.find(id)
w.current_balance
# response
{
"balance":216380800000000000
}
api/v2/peatio/admin/wallets/:id
//response
"id": 1,
"name": "Test wallet",
"kind": "deposit",
"currencies": ["fth","seele"],
"address": "changeme",
"gateway": "parity",
"max_balance": "212.0",
"balance": {
"fth": "2.3",
"seele": "223.3"
},
"blockchain_key": "eth-testnet",
"status": "active",
"created_at": "2020-09-10T17:53:03+02:00","updated_at": "2020-10-20T05:00:49+02:00"