a bitcoin and monero payment processing server/wallet with a built in REST API to query transactions, wallets and addresses
this can be run on the clearnet or optionally as an onion service to ensure total anonymity between the server and the API caller
with this 17mb binary, you can accept payments for btc/xmr without paying any fees to services like bitpay, meanwhile staying anonymous and in total control of your coin
- "secure enclave" system using memguard that stores sensitive information encrypted in memory without writing to the disk, such as private keys
- full support for multi-signature and time-locked bitcoin transactions
- REST API with an http server using gin (the most performant server you'll find on the internet, which is useful for the next point)
- ability to run the API as a hidden service on the Tor network
- API keys with optional permissions that can be remotely managed
- ability to lock the wallet and effectively turn it into cold storage
check out the docker
directory to see example setups for each service required and the docker-compose.yml
in the root which can tie them all together (this is the optimal setup for Tor)
the docker files are built for debian/ubuntu linux but the compiled binary is compatible with any windows or unix system
the binary acts as an interface between bitcoind, monerod and the respective wallets for each coin then exposes a REST API for interacting with them
this allows you to create new wallets, addresses, invoices for receiving transactions or sending coin without any RPC interaction, meanwhile logging everything to a database
plutus then handles everything in the meantime and makes sure the database matches what is held in each wallet. querying this database is lightning fast compared to querying the nodes or wallet instances themselves, which can take up to 3 minutes to return a full balance report
an http API is exposed and the routes are below (more information in router.go
and the routes
folder):
POST /revoke
- revoke an API key
GET /health
- return the server health status
GET /btc/balance
- get the total balance of all accounts
POST /btc/createaccount
- create a new account
POST /btc/listtransactions
- list all txs or txs from a certain address/account
POST /btc/sendtoaddress
- send coin to an address using the optimal coin inputs
POST /btc/sendfrom
- send coin from a certain address/account
POST /btc/sendmany
- send multiple transactions
POST /btc/move
- move coin between an internal address/account
POST /btc/getaccountaddress
- get a new address for the wallet or a given account
POST /btc/addmultisig
- add a multisig setup to a transaction before broadcasting
POST /btc/submit_pubkey
- add a new public key to sign a transaction with
POST /btc/unlock
- unlock the wallet from cold storage
GET /xmr/notify/:txid
POST /xmr/createaccount
POST /xmr/createaddress
POST /xmr/getbalance
POST /xmr/transfer
golang
to compile the server into a single binarybtcd
for a full bitcoin node (more lightweight than bitcoind)monerod
to run the standard monero serverpostgresql
to store the wallets/accounts, addresses and transaction history
more coming soon...