Wallet functionalities to create raw transaction, to sing on unsigned transaction, to send signed transaction for BTC, BCH, ETH, XRP and so on.
- Bitcoin
- Bitcoin Cash
- Ethereum
- ERC-20 Token
- Ripple
- This project is under refactoring
- based on
Clean Code
,Clean Architecture
,Refactoring
- based on
- Bitcoin Core version 22.0 is released. Signet environment is ongoing.
- Pubkey addresses are given to our users first.
- Users would want to deposit coins on our system.
- After users sent coins to their given addresses, these all amount of coins are sent to our safe addresses managed offline by cold wallet
- Users would want to withdraw their coins to specific addresses.
- Transaction is created and sent after payment is requested by users.
- Internal use. Each accounts can transfer coins among internal accounts.
This is explained for BTC/BCH for now.
There are mainly 3 wallets separately and these wallets are expected to be installed in each different devices.
- Only this wallet run online to access to BTC/BCH Nodes.
- Only pubkey address is stored. Private key is NOT stored for security reason. That's why this is called
watch only wallet
. - Major functionalities are
- creating unsigned transaction
- sending signed transaction
- monitoring transaction status.
- Key management functionalities for accounts.
- This wallet is expected to work offline.
- Major functionalities are
- generating seed for accounts
- generating keys based on
HD Wallet
- generating multisig addressed according to account setting
- exporting pubkey addresses as csv file which is imported from
Watch only wallet
- signing on unsigned transaction as first sign. However, multisig addresses could not be completed by only this wallet.
- The internal authorization operators would use this wallet to sign on unsigned transaction for multisig addresses.
- Each of operators would be given own authorization account and Sing wallet apps.
- This wallet is expected to work offline.
- Major functionalities are
- generating seed for accounts for own auth account
- generating keys based on
HD Wallet
for own auth account - exporting full-pubkey addresses as csv file which is imported from
Keygen wallet
to generate multisig address - signing on unsigned transaction as second or more signs for multisig addresses.
- Golang 1.16+
- golangci-lint 1.44.2+ (for development)
- direnv
- Docker
- MySQL 5.7
- Node Server
cmd
... app directories includingmain.go
keygen
... keygen walletsign
... sign walletwatch
... watch wallet
data
address
... generated files by this CLIcerts
... for docker volume directory used bydocker-compose.xrp.yml
config
... config toml filescontract
... generated token abi filedump
... BTC wallet file generated byapi dumpwallet
command. See Makefile.fullpubkey
... generated files by this CLIgaiad
... genesis.json for cosmos gaiadkeystore
... keystore for Ethereumproto
... proto files for ripple gRPC communication
docker
... docker resourcesdocs
... documentsimages
... for only docspkg
... go filesscripts
... shell scriptstemplates
... template file for sqlboiler Go ORMweb
erc20-token
... erc20 token contractripple-lib-server
... Ripple gRPC server
Note, explained only well modified packages
wallet/api/btcgrp
... Bitcoin RPC APIs. API Referenceswallet/api/ethgrp
... Ethereum RPC APIs. API Referenceswallet/api/xrpgrp
... Ripple gRPC client to communicate with ripple-lib-serverwallet/key
... address/seed generation logicwallet/service/btc
... Bitcoin business logicwallet/service/eth
... Ethereum business logicwallet/service/xrp
... Ripple business logicwallet/service/coldsrv
... Cold Wallet common business logicwallet/service/watchsrv
... Watch Wallet common business logic
- ripple-lib-server
- ./web/ripple-lib-server
- erc20-token
- ./web/erc20-token
- Makefile
- Makefile for watch wallet operation
- Makefile for keygen wallet operation
- Makefile for sign wallet operation
- Remove github.com/cpacia/bchutil due to outdated code. Try to replace to github.com/gcash/bchd
- Fix UnitTest. And Separate dependent test as Integration Test using tag
- Add ATOM tokens on Cosmos Hub
- Add Polkadot
- Various monitoring patterns to detect suspicious operations.
- Add Github Action as CI
- Generate mnemonic instead of seed. bip-0039
- Setup Signet environment for development use
- Fix
overpaying fee issue
on Signet. It says 725% overpaying. - native SegWit-Bech32
- Multisig-address is used only once because of security reason, so after tx is sent, related receiver addresses should be updated by is_allocated=true.
- Sent tx is not proceeded in bitcoin network if fee is not enough comparatively. So re-sending tx functionality is required adding more fee.
- Add any useful APIs using contract equivalent to ETH APIs
- Monitoring for ERC20 token
- Make sure that
quantity-tag
is used properly. e.g. when getting balance, which quantity-tag should be used, latest or pending. - Handling secret of private key properly. Password could be passed from command line argument.
- Handling secret of private key properly. Password could be passed from command line argument.
- The
pkg
layout pattern, refer to the linked URLs for details.