From 7c40346355346fb59a86d11cdbef1a7da00e8da8 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Thu, 5 Feb 2026 09:34:17 -0800 Subject: microsats --- scripts/ark-send.ts | 21 ++++++++++++++ scripts/tb.sh | 82 ++++++++++++++++++++++++++++++++--------------------- 2 files changed, 70 insertions(+), 33 deletions(-) create mode 100644 scripts/ark-send.ts (limited to 'scripts') diff --git a/scripts/ark-send.ts b/scripts/ark-send.ts new file mode 100644 index 00000000..c6b3140d --- /dev/null +++ b/scripts/ark-send.ts @@ -0,0 +1,21 @@ +import { sendArk } from "../lib/ark"; + +const address = process.argv[2]; +const amount = parseInt(process.argv[3]); + +if (!address || !amount) { + console.log("Usage: bun scripts/ark-send.ts "); + process.exit(1); +} + +console.log(`Sending ${amount} sats to ${address}...`); + +sendArk(address, amount) + .then((result) => { + console.log("Success!"); + console.log("Result:", JSON.stringify(result, null, 2)); + }) + .catch((e) => { + console.error("Error:", e.message); + process.exit(1); + }); diff --git a/scripts/tb.sh b/scripts/tb.sh index 03daead8..c9450b54 100755 --- a/scripts/tb.sh +++ b/scripts/tb.sh @@ -16,7 +16,8 @@ _user_id() { # Query TB accounts via bun in app container # Args: space-separated list of bigint IDs (as decimal strings) -# Returns: id credits_posted debits_posted balance (one line per account) +# Returns: id credits_posted debits_posted balance_micro balance_sats (one line per account) +# Note: balances stored in microsats (1 sat = 1,000,000 microsats) _tb_lookup() { local ids="$1" docker exec app bun -e " @@ -31,10 +32,11 @@ _tb_lookup() { for (const id of ids) { const a = found.get(id.toString()); if (a) { - const bal = a.credits_posted - a.debits_posted; - console.log(id.toString() + ' ' + a.credits_posted.toString() + ' ' + a.debits_posted.toString() + ' ' + bal.toString()); + const micro = a.credits_posted - a.debits_posted; + const sats = Number(micro / 1000000n); + console.log(id.toString() + ' ' + a.credits_posted.toString() + ' ' + a.debits_posted.toString() + ' ' + micro.toString() + ' ' + sats.toString()); } else { - console.log(id.toString() + ' 0 0 0'); + console.log(id.toString() + ' 0 0 0 0'); } } c.destroy(); @@ -67,8 +69,9 @@ tb-balance() { if [ -z "$uid" ]; then echo "User not found: $1"; return 1; fi local account_id=$(_uuid2int "$uid") local result=$(_tb_lookup "$account_id") - local bal=$(echo "$result" | awk '{print $4}') - echo "$1: $bal sats" + local micro=$(echo "$result" | awk '{print $4}') + local sats=$(echo "$result" | awk '{print $5}') + echo "$1: $sats sats ($micro μsats)" } # Get pending balance for a username @@ -78,8 +81,9 @@ tb-pending() { if [ -z "$uid" ]; then echo "User not found: $1"; return 1; fi local pending_id=$(python3 -c "print(int('${uid//-/}', 16) ^ (5 << 64))") local result=$(_tb_lookup "$pending_id") - local bal=$(echo "$result" | awk '{print $4}') - echo "$1: $bal sats pending" + local micro=$(echo "$result" | awk '{print $4}') + local sats=$(echo "$result" | awk '{print $5}') + echo "$1: $sats sats pending ($micro μsats)" } # Get fee credits for a username @@ -90,13 +94,16 @@ tb-credits() { local ids IFS=$'\n' read -d '' -ra ids < <(_derive_ids "$uid") local result=$(_tb_lookup "${ids[2]},${ids[3]},${ids[4]}") - local btc=$(echo "$result" | sed -n '1p' | awk '{print $4}') - local ln=$(echo "$result" | sed -n '2p' | awk '{print $4}') - local lq=$(echo "$result" | sed -n '3p' | awk '{print $4}') + local btc_micro=$(echo "$result" | sed -n '1p' | awk '{print $4}') + local btc_sats=$(echo "$result" | sed -n '1p' | awk '{print $5}') + local ln_micro=$(echo "$result" | sed -n '2p' | awk '{print $4}') + local ln_sats=$(echo "$result" | sed -n '2p' | awk '{print $5}') + local lq_micro=$(echo "$result" | sed -n '3p' | awk '{print $4}') + local lq_sats=$(echo "$result" | sed -n '3p' | awk '{print $5}') echo "$1 credits:" - echo " bitcoin: $btc" - echo " lightning: $ln" - echo " liquid: $lq" + echo " bitcoin: $btc_sats sats ($btc_micro μsats)" + echo " lightning: $ln_sats sats ($ln_micro μsats)" + echo " liquid: $lq_sats sats ($lq_micro μsats)" } # Full summary for a username @@ -107,32 +114,41 @@ tb-user() { local ids IFS=$'\n' read -d '' -ra ids < <(_derive_ids "$uid") local result=$(_tb_lookup "${ids[0]},${ids[1]},${ids[2]},${ids[3]},${ids[4]}") - local bal=$(echo "$result" | sed -n '1p' | awk '{print $4}') - local pending=$(echo "$result" | sed -n '2p' | awk '{print $4}') - local btc=$(echo "$result" | sed -n '3p' | awk '{print $4}') - local ln=$(echo "$result" | sed -n '4p' | awk '{print $4}') - local lq=$(echo "$result" | sed -n '5p' | awk '{print $4}') + local bal_micro=$(echo "$result" | sed -n '1p' | awk '{print $4}') + local bal_sats=$(echo "$result" | sed -n '1p' | awk '{print $5}') + local pend_micro=$(echo "$result" | sed -n '2p' | awk '{print $4}') + local pend_sats=$(echo "$result" | sed -n '2p' | awk '{print $5}') + local btc_micro=$(echo "$result" | sed -n '3p' | awk '{print $4}') + local btc_sats=$(echo "$result" | sed -n '3p' | awk '{print $5}') + local ln_micro=$(echo "$result" | sed -n '4p' | awk '{print $4}') + local ln_sats=$(echo "$result" | sed -n '4p' | awk '{print $5}') + local lq_micro=$(echo "$result" | sed -n '5p' | awk '{print $4}') + local lq_sats=$(echo "$result" | sed -n '5p' | awk '{print $5}') echo "$1 ($uid)" - echo " balance: $bal sats" - echo " pending: $pending sats" + echo " balance: $bal_sats sats ($bal_micro μsats)" + echo " pending: $pend_sats sats ($pend_micro μsats)" echo " credits:" - echo " bitcoin: $btc" - echo " lightning: $ln" - echo " liquid: $lq" + echo " bitcoin: $btc_sats sats ($btc_micro μsats)" + echo " lightning: $ln_sats sats ($ln_micro μsats)" + echo " liquid: $lq_sats sats ($lq_micro μsats)" } # Show house account balances tb-house() { local result=$(_tb_lookup "1,2,3,4") - local sats=$(echo "$result" | sed -n '1p' | awk '{print $4}') - local btc=$(echo "$result" | sed -n '2p' | awk '{print $4}') - local ln=$(echo "$result" | sed -n '3p' | awk '{print $4}') - local lq=$(echo "$result" | sed -n '4p' | awk '{print $4}') - echo "House accounts:" - echo " sats (1): $sats" - echo " btc credit (2): $btc" - echo " ln credit (3): $ln" - echo " lq credit (4): $lq" + local sats_micro=$(echo "$result" | sed -n '1p' | awk '{print $4}') + local sats=$(echo "$result" | sed -n '1p' | awk '{print $5}') + local btc_micro=$(echo "$result" | sed -n '2p' | awk '{print $4}') + local btc=$(echo "$result" | sed -n '2p' | awk '{print $5}') + local ln_micro=$(echo "$result" | sed -n '3p' | awk '{print $4}') + local ln=$(echo "$result" | sed -n '3p' | awk '{print $5}') + local lq_micro=$(echo "$result" | sed -n '4p' | awk '{print $4}') + local lq=$(echo "$result" | sed -n '4p' | awk '{print $5}') + echo "House accounts (in microsats, 1 sat = 1,000,000 μsats):" + echo " sats (1): $sats sats ($sats_micro μsats)" + echo " btc credit (2): $btc sats ($btc_micro μsats)" + echo " ln credit (3): $ln sats ($ln_micro μsats)" + echo " lq credit (4): $lq sats ($lq_micro μsats)" } # Raw TB account lookup by numeric ID(s), comma-separated -- cgit v1.2.3