Skip to content

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.

Notifications You must be signed in to change notification settings

kvnn/OrdControl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

69 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

OrdControl server-built

Quickstart

  1. Have an AWS account set up with the cli : https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html
  2. git clone git@github.com:kvnn/OrdControl.git
  3. cd OrdControl
  4. terraform init
  5. terraform apply
  6. open the visibility / control client by opening index.html in the browser (for me its at file:///Users/kevin/Projects/OrdControl/client/index.html)
  7. visit your server [OPTIONAL]:
    1. copy / paste the ssh_connection_string (printed once #5 is complete) to connect to your instance
    2. in instance, run tail -f /var/log/cloud-init-output.log to see status of the post-deploy script
    3. wait until you see "ord-server init.tpl finished" in the above before taking any actions (the client will update you as well)
    4. 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"}

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 apply until Ord is successfully indexing. A docker container might help.
  • it sets up a volume at /mnt/bitcoin-ord-data with 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 destroy when 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 use nvme type 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.tpl for the scripting done to your server (e.g. to make sure there are no backdoors here)

TODO

  • Rename to OrdControl and have Dall-e generate something dope

  • Add UI screenshot or loop to README

  • server

    • wallet control
      • create wallet
      • delete wallet (note: see https://github.com/casey/ord/issues/1649)
      • instead of saving seed phrase to Dynamo table, save to a flate file on server and allow retrieval
      • allow seed-phrase delete
      • generate receive addresses
      • send funds
      • view txs
    • implement Inscription functionality
      • basic functionality
      • resilient queueing
      • smart queue consumer
      • light database for managing queued Inscriptions
    • alert UI if ec2/boto credentials error occurs, allow server restart
    • allow server restart regardless of the above
    • show journalctl alerts / errors in UI
    • verify that bitcoin-cli work, play with it
    • include controller websocket server
      • add authentication token via terraform
      • actually use the auth token
    • add "Name: OrdControl" tag to all aws resources
    • add Dynamo table
      • get fine-grained ord-index status (via strace?)
    • split controller.py into a module, split out the ord-indexing watcher / logger
  • client

    • release MVP
    • clean up js / css
    • show ssh connection string
    • add feedback / hold mechanism for e.g. create-wallet, create-address
    • wallet UI
    • implement Inscription functionality
      • basic functionality
      • custom parameters (e..g fee_rate)
      • queue visbility
        • Inscription status
          • internal info
          • on-chain info
      • queue controls
        • cancel
        • prioritize / replace tx
    • include bitcoin-cli controls?

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

  }

About

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.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published