OrdControl
OrdControl copied to clipboard
A one-click AWS deployment to run a Bitcoin full-node and Ord instance with a client-controller. The client currently facilitates creating an ord wallet, viewing balance/address info and uploading / i...
NOTE: this project is no longer supported
OrdControl
This is a one-click AWS deployment to run a Bitcoin full-node and Ord instance with a client-controller. The client currently facilitates creating an ord wallet, viewing balance/address info and uploading / inscribing files.

Quickstart
- Have an AWS account set up with the cli : https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html
git clone [email protected]:kvnn/OrdControl.gitcd OrdControlterraform initterraform apply- open the visibility / control client by opening
index.htmlin the browser (for me its atfile:///Users/kevin/Projects/OrdControl/client/index.html) - visit your server [OPTIONAL]:
- copy / paste the
ssh_connection_string(printed once #5 is complete) to connect to your instance - in instance, run
tail -f /var/log/cloud-init-output.logto see status of the post-deploy script - wait until you see "ord-server init.tpl finished" in the above before taking any actions (the client will update you as well)
- you can manually run ord commands via
/home/ubuntu/ord/target/release/ord --bitcoin-data-dir=/mnt/bitcoin-ord-data/bitcoin --data-dir=/mnt/bitcoin-ord-data/ord {CMD e.g. "info"}
- copy / paste the
Details
- if you restart the instance, you need to make modifications to the public dns in
env.js. - its taking me 5-10 minutes from
terraform applyuntil Ord is successfully indexing. A docker container might help. - it sets up a volume at
/mnt/bitcoin-ord-datawith bitcoin and ord data dirs synced up to April 1 2023 - as of March 6 2023, this setup is costing me about $13 / day, which is almost entirely EC2 costs. I'll sometimes run
terraform --auto-approve destroywhen I know I won't be using it - you can change regions, availability zones and instance types in
variables.tf. Note that the data drive mount may fail for instances that usenvmetype drives, and it may fail for other regions. If you have a use-case you need help with, feel free to create an Issue. - the AMI used is a standard AWS AMI
- see
init.tplfor the scripting done to your server (e.g. to make sure there are no backdoors here)
TODO
-
[x] Rename to
OrdControland have Dall-e generate something dope -
[x] Add UI screenshot or loop to README
-
server
- [ ] wallet control
- [x] create wallet
- [x] delete wallet (note: see https://github.com/casey/ord/issues/1649)
- [x] instead of saving seed phrase to Dynamo table, save to a flate file on server and allow retrieval
- [ ] allow seed-phrase delete
- [x] generate receive addresses
- [ ] send funds
- [ ] view txs
- [ ] implement Inscription functionality
- [x] basic functionality
- [ ] resilient queueing
- [ ] smart queue consumer
- [ ] light database for managing queued Inscriptions
- [x] alert UI if ec2/boto credentials error occurs, allow server restart
- [ ] allow server restart regardless of the above
- [x] show journalctl alerts / errors in UI
- [x] verify that
bitcoin-cliwork, play with it - [x] include controller websocket server
- [x] add authentication token via terraform
- [x] actually use the auth token
- [x] add "Name: OrdControl" tag to all aws resources
- [x] add Dynamo table
- [x] get fine-grained ord-index status (via strace?)
- [ ] split controller.py into a module, split out the ord-indexing watcher / logger
- [ ] wallet control
-
client
- [x] release MVP
- [x] clean up js / css
- [ ] show ssh connection string
- [ ] add feedback / hold mechanism for e.g. create-wallet, create-address
- [ ] wallet UI
- [x] create wallet
- [x] disable wallet (note: see https://github.com/casey/ord/issues/1649)
- [x] show seed phrase
- [x] clean up initial state (when wallet doesn't exist)
- [x] add address
- [x] view addresses
- [ ] implement Inscription functionality
- [x] basic functionality
- [ ] custom parameters (e..g fee_rate)
- [ ] queue visbility
- [ ] Inscription status
- [ ] internal info
- [ ] on-chain info
- [ ] Inscription status
- [ ] queue controls
- [ ] cancel
- [ ] prioritize / replace tx
- [ ] include
bitcoin-clicontrols?
ImageMagick tricks
reduce gif size
convert repage-orig.gif -coalesce -fuzz 2% +dither -layers Optimize +map repage.gif
controller.py: example outputs
lets make this better
inscribe output={
"commit": "7ed2f88a8c27e67e2721c454a045505b47c2741532fbd5306e865cc10f4a0f53",
"inscription": "452a3e9b08a7c0d1919fe4b7a9a8d08ebc8dc58ebd1fd56de745a2cbbddfafc5i0",
"reveal": "452a3e9b08a7c0d1919fe4b7a9a8d08ebc8dc58ebd1fd56de745a2cbbddfafc5",
"fees": 7965
}
, error=
_put_dynamo_item inscribed ∂ßååå.txt: {
"commit": "7ed2f88a8c27e67e2721c454a045505b47c2741532fbd5306e865cc10f4a0f53",
"inscription": "452a3e9b08a7c0d1919fe4b7a9a8d08ebc8dc58ebd1fd56de745a2cbbddfafc5i0",
"reveal": "452a3e9b08a7c0d1919fe4b7a9a8d08ebc8dc58ebd1fd56de745a2cbbddfafc5",
"fees": 7965
}