Demo 1, a run¶
The tutorial's steps as they ran on a private chain, with the result under each command. The target release is v1.1.0, kit v1.1.0-2. Commands and results come from the supplied transcript. Local filesystem paths are shown as
Before you start: three wallets and a private chain¶
. ../stepper.sh
. ../stepper.sh
. ../stepper.sh
. ./stepper.sh
alice
alice_addr=$(singular wallet create --vault alice.vault --network-magic 42 | tee alice.address)
bob
bob_addr=$(singular wallet create --vault bob.vault --network-magic 42 | tee bob.address)
carol
carol_addr=$(singular wallet create --vault carol.vault --network-magic 42 | tee carol.address)
chain
devnet --fund-address "$(cat alice/alice.address):6:2000000000" --fund-address "$(cat bob/bob.address):6:2000000000" --fund-address "$(cat carol/carol.address):6:2000000000" > devnet.out 2> devnet.err &
devnet_pid=$!
trap 'kill -TERM -- -"$devnet_pid" 2>/dev/null' EXIT
Result:
[1] 193386
devnet_gone=0
until jq -e .providerUrl devnet.out >/dev/null 2>&1; do
kill -0 "$devnet_pid" 2>/dev/null || { devnet_gone=1; break; }
sleep 1
done
if [ "$devnet_gone" = 1 ]; then echo "the devnet died before its settings line appeared; its messages:"; cat devnet.err; false; else jq . devnet.out; fi
Result:
[1;39m{[0m
[1;34m"independentSourceDirectory"[0m[1;39m:[0m [0;32m"<local>"[0m[1;39m,[0m
[1;34m"networkMagic"[0m[1;39m:[0m [0;39m42[0m[1;39m,[0m
[1;34m"networkTimeDirectory"[0m[1;39m:[0m [0;32m"<local>"[0m[1;39m,[0m
[1;34m"privateProbeSocket"[0m[1;39m:[0m [0;32m"<local>"[0m[1;39m,[0m
[1;34m"providerUrl"[0m[1;39m:[0m [0;32m"http://127.0.0.1:43561/api/v1"[0m
[1;39m}[0m
Step 1: Carol creates the registry¶
carol
jq --arg blueprint "$blueprint" '{"koios-url": .providerUrl, "network-time": .networkTimeDirectory, "network-magic": 42, "blueprint": $blueprint, "state-dir": "carol-journal"}' ../devnet.out > carol.json
process_ms=${PROCESS_TIME_MS:-180000}; retract_ms=${RETRACT_TIME_MS:-60000}
open-datum create --process-time "$process_ms" --reclaim-time "$retract_ms" --booking-width 60000 --vault carol.vault > receipts/01-create.json
Result:
create success ......................................................... 15.1s
jq '{outcome, registry, stateToken, root, submissions}' receipts/01-create.json
jq -er .stateToken receipts/01-create.json > ../registry.token
Result:
[1;39m{[0m
[1;34m"outcome"[0m[1;39m:[0m [0;32m"success"[0m[1;39m,[0m
[1;34m"registry"[0m[1;39m:[0m [0;32m"singular_devnet1fxffrk7807uykkgwfukh9pug4grpj9385tzujkmtcnt8n96t2g03e7vn0mxjywfcfz8uzqxnu5zcwt5t74mjuqupfd4ffjwk48j9zl"[0m[1;39m,[0m
[1;34m"stateToken"[0m[1;39m:[0m [0;32m"499291dbc77fb84b590e4f2d728788aa06191627a2c5c95b6bc4d679.974b521f1cf9937ecd223938488fc100d3e505872e8bf5772e03814b6a94c9d6"[0m[1;39m,[0m
[1;34m"root"[0m[1;39m:[0m [0;32m"0000000000000000000000000000000000000000000000000000000000000000"[0m[1;39m,[0m
[1;34m"submissions"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"chainPoint"[0m[1;39m:[0m [1;39m{[0m
[1;34m"blockHash"[0m[1;39m:[0m [0;32m"a95c4c1fa774f1f608c5392ac6c751e221a99f78b53e7af37316b33fc7fd8d03"[0m[1;39m,[0m
[1;34m"slot"[0m[1;39m:[0m [0;39m136[0m
[1;39m}[0m[1;39m,[0m
[1;34m"claims"[0m[1;39m:[0m [1;39m[[0m
[0;32m"the first output is live carrying its reference script"[0m
[1;39m][0m[1;39m,[0m
[1;34m"confirmations"[0m[1;39m:[0m [0;39m35[0m[1;39m,[0m
[1;34m"how"[0m[1;39m:[0m [0;32m"sent"[0m[1;39m,[0m
[1;34m"identity"[0m[1;39m:[0m [0;32m"3287ec5864e399a3351ff12293caabe147ff7c8b82615b78f815fde069283dd3"[0m[1;39m,[0m
[1;34m"outputs"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"address"[0m[1;39m:[0m [0;32m"addr_test1vqz9jwamg483r075h4skrudpmcfsdvq85r4zzavrwdps5ugxsdr83"[0m[1;39m,[0m
[1;34m"assets"[0m[1;39m:[0m [1;39m[][0m[1;39m,[0m
[1;34m"lovelace"[0m[1;39m:[0m [0;39m34454140[0m[1;39m,[0m
[1;34m"output"[0m[1;39m:[0m [0;32m"3287ec5864e399a3351ff12293caabe147ff7c8b82615b78f815fde069283dd3#0"[0m[1;39m,[0m
[1;34m"unspent"[0m[1;39m:[0m [0;39mtrue[0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"address"[0m[1;39m:[0m [0;32m"addr_test1vqz9jwamg483r075h4skrudpmcfsdvq85r4zzavrwdps5ugxsdr83"[0m[1;39m,[0m
[1;34m"assets"[0m[1;39m:[0m [1;39m[][0m[1;39m,[0m
[1;34m"lovelace"[0m[1;39m:[0m [0;39m1965036983[0m[1;39m,[0m
[1;34m"output"[0m[1;39m:[0m [0;32m"3287ec5864e399a3351ff12293caabe147ff7c8b82615b78f815fde069283dd3#1"[0m[1;39m,[0m
[1;34m"unspent"[0m[1;39m:[0m [0;39mtrue[0m
[1;39m}[0m
[1;39m][0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"chainPoint"[0m[1;39m:[0m [1;39m{[0m
[1;34m"blockHash"[0m[1;39m:[0m [0;32m"79e1acec3321f74cf6052b6f36120a65790813e75ca219abd931b0e8a64fdb05"[0m[1;39m,[0m
[1;34m"slot"[0m[1;39m:[0m [0;39m148[0m
[1;39m}[0m[1;39m,[0m
[1;34m"claims"[0m[1;39m:[0m [1;39m[[0m
[0;32m"the first output is live carrying its reference script"[0m
[1;39m][0m[1;39m,[0m
[1;34m"confirmations"[0m[1;39m:[0m [0;39m23[0m[1;39m,[0m
[1;34m"how"[0m[1;39m:[0m [0;32m"sent"[0m[1;39m,[0m
[1;34m"identity"[0m[1;39m:[0m [0;32m"4a2171e00752049161989e130215c2e795d16155a08a9a187a6d71b3da38693b"[0m[1;39m,[0m
[1;34m"outputs"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"address"[0m[1;39m:[0m [0;32m"addr_test1vqz9jwamg483r075h4skrudpmcfsdvq85r4zzavrwdps5ugxsdr83"[0m[1;39m,[0m
[1;34m"assets"[0m[1;39m:[0m [1;39m[][0m[1;39m,[0m
[1;34m"lovelace"[0m[1;39m:[0m [0;39m43319810[0m[1;39m,[0m
[1;34m"output"[0m[1;39m:[0m [0;32m"4a2171e00752049161989e130215c2e795d16155a08a9a187a6d71b3da38693b#0"[0m[1;39m,[0m
[1;34m"unspent"[0m[1;39m:[0m [0;39mtrue[0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"address"[0m[1;39m:[0m [0;32m"addr_test1vqz9jwamg483r075h4skrudpmcfsdvq85r4zzavrwdps5ugxsdr83"[0m[1;39m,[0m
[1;34m"assets"[0m[1;39m:[0m [1;39m[][0m[1;39m,[0m
[1;34m"lovelace"[0m[1;39m:[0m [0;39m1956080805[0m[1;39m,[0m
[1;34m"output"[0m[1;39m:[0m [0;32m"4a2171e00752049161989e130215c2e795d16155a08a9a187a6d71b3da38693b#1"[0m[1;39m,[0m
[1;34m"unspent"[0m[1;39m:[0m [0;39mtrue[0m
[1;39m}[0m
[1;39m][0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"chainPoint"[0m[1;39m:[0m [1;39m{[0m
[1;34m"blockHash"[0m[1;39m:[0m [0;32m"e34b7f13d3eb266019ddeacefc29674a4f23f6e163b178b30d49fedce28da5df"[0m[1;39m,[0m
[1;34m"slot"[0m[1;39m:[0m [0;39m159[0m
[1;39m}[0m[1;39m,[0m
[1;34m"claims"[0m[1;39m:[0m [1;39m[[0m
[0;32m"the first output is live holding the token alone"[0m
[1;39m][0m[1;39m,[0m
[1;34m"confirmations"[0m[1;39m:[0m [0;39m12[0m[1;39m,[0m
[1;34m"how"[0m[1;39m:[0m [0;32m"sent"[0m[1;39m,[0m
[1;34m"identity"[0m[1;39m:[0m [0;32m"15213be31274d1197d41ca511bb3c78e68ce4285d9c68f6475e9607c92fd9a62"[0m[1;39m,[0m
[1;34m"outputs"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"address"[0m[1;39m:[0m [0;32m"addr_test1wpye9ywmcalmsj6epe8j6u583z4qvxgky73vtj2md0zdv7gcmvhhn"[0m[1;39m,[0m
[1;34m"assets"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"name"[0m[1;39m:[0m [0;32m"974b521f1cf9937ecd223938488fc100d3e505872e8bf5772e03814b6a94c9d6"[0m[1;39m,[0m
[1;34m"policy"[0m[1;39m:[0m [0;32m"499291dbc77fb84b590e4f2d728788aa06191627a2c5c95b6bc4d679"[0m[1;39m,[0m
[1;34m"quantity"[0m[1;39m:[0m [0;39m1[0m
[1;39m}[0m
[1;39m][0m[1;39m,[0m
[1;34m"lovelace"[0m[1;39m:[0m [0;39m1344720[0m[1;39m,[0m
[1;34m"output"[0m[1;39m:[0m [0;32m"15213be31274d1197d41ca511bb3c78e68ce4285d9c68f6475e9607c92fd9a62#0"[0m[1;39m,[0m
[1;34m"unspent"[0m[1;39m:[0m [0;39mtrue[0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"address"[0m[1;39m:[0m [0;32m"addr_test1wpnmk58942m83wv4tcwcnqg9pg2wp7fa4yft82955utpefcck6tk9"[0m[1;39m,[0m
[1;34m"assets"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"name"[0m[1;39m:[0m [0;32m"8361397268518921168b02a1253373aa22fa3d1e488bcdf77a0dc7c36f30d60b"[0m[1;39m,[0m
[1;34m"policy"[0m[1;39m:[0m [0;32m"67bb50e5aab678b9955e1d8981050a14e0f93da912b3a8b4a7161ca7"[0m[1;39m,[0m
[1;34m"quantity"[0m[1;39m:[0m [0;39m1[0m
[1;39m}[0m
[1;39m][0m[1;39m,[0m
[1;34m"lovelace"[0m[1;39m:[0m [0;39m1267140[0m[1;39m,[0m
[1;34m"output"[0m[1;39m:[0m [0;32m"15213be31274d1197d41ca511bb3c78e68ce4285d9c68f6475e9607c92fd9a62#1"[0m[1;39m,[0m
[1;34m"unspent"[0m[1;39m:[0m [0;39mtrue[0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"address"[0m[1;39m:[0m [0;32m"addr_test1vqz9jwamg483r075h4skrudpmcfsdvq85r4zzavrwdps5ugxsdr83"[0m[1;39m,[0m
[1;34m"assets"[0m[1;39m:[0m [1;39m[][0m[1;39m,[0m
[1;34m"lovelace"[0m[1;39m:[0m [0;39m1996359409[0m[1;39m,[0m
[1;34m"output"[0m[1;39m:[0m [0;32m"15213be31274d1197d41ca511bb3c78e68ce4285d9c68f6475e9607c92fd9a62#2"[0m[1;39m,[0m
[1;34m"unspent"[0m[1;39m:[0m [0;39mtrue[0m
[1;39m}[0m
[1;39m][0m
[1;39m}[0m
[1;39m][0m
[1;39m}[0m
Step 2: join using the public token¶
alice
jq --arg blueprint "$blueprint" --arg token "$(cat ../registry.token)" '{"koios-url": .providerUrl, "network-time": .networkTimeDirectory, "network-magic": 42, "blueprint": $blueprint, "state-dir": "alice-journal", "state-token": $token}' ../devnet.out > alice.json
jq . alice.json
Result:
[1;39m{[0m
[1;34m"koios-url"[0m[1;39m:[0m [0;32m"http://127.0.0.1:43561/api/v1"[0m[1;39m,[0m
[1;34m"network-time"[0m[1;39m:[0m [0;32m"<local>"[0m[1;39m,[0m
[1;34m"network-magic"[0m[1;39m:[0m [0;39m42[0m[1;39m,[0m
[1;34m"blueprint"[0m[1;39m:[0m [0;32m"<local>"[0m[1;39m,[0m
[1;34m"state-dir"[0m[1;39m:[0m [0;32m"alice-journal"[0m[1;39m,[0m
[1;34m"state-token"[0m[1;39m:[0m [0;32m"499291dbc77fb84b590e4f2d728788aa06191627a2c5c95b6bc4d679.974b521f1cf9937ecd223938488fc100d3e505872e8bf5772e03814b6a94c9d6"[0m
[1;39m}[0m
bob
jq --arg blueprint "$blueprint" --arg token "$(cat ../registry.token)" '{"koios-url": .providerUrl, "network-time": .networkTimeDirectory, "network-magic": 42, "blueprint": $blueprint, "state-dir": "bob-journal", "state-token": $token}' ../devnet.out > bob.json
jq . bob.json
Result:
[1;39m{[0m
[1;34m"koios-url"[0m[1;39m:[0m [0;32m"http://127.0.0.1:43561/api/v1"[0m[1;39m,[0m
[1;34m"network-time"[0m[1;39m:[0m [0;32m"<local>"[0m[1;39m,[0m
[1;34m"network-magic"[0m[1;39m:[0m [0;39m42[0m[1;39m,[0m
[1;34m"blueprint"[0m[1;39m:[0m [0;32m"<local>"[0m[1;39m,[0m
[1;34m"state-dir"[0m[1;39m:[0m [0;32m"bob-journal"[0m[1;39m,[0m
[1;34m"state-token"[0m[1;39m:[0m [0;32m"499291dbc77fb84b590e4f2d728788aa06191627a2c5c95b6bc4d679.974b521f1cf9937ecd223938488fc100d3e505872e8bf5772e03814b6a94c9d6"[0m
[1;39m}[0m
Step 3: Alice books her key¶
alice
printf '{"answer":42}\n' > payload.json
open-datum insert --key alice --payload payload.json --deposit 3000000 --vault alice.vault > receipts/03-insert-alice.json
Result:
insert success .......................................................... 5.4s
jq '{outcome, pending, deposit, processDeadline, reclaimEnd}' receipts/03-insert-alice.json
Result:
[1;39m{[0m
[1;34m"outcome"[0m[1;39m:[0m [0;32m"success"[0m[1;39m,[0m
[1;34m"pending"[0m[1;39m:[0m [0;32m"902f615c16fce9b562c4033b9bd23df12292b609e9f42b513d6f7f2f8b98b971#0"[0m[1;39m,[0m
[1;34m"deposit"[0m[1;39m:[0m [0;39m3000000[0m[1;39m,[0m
[1;34m"processDeadline"[0m[1;39m:[0m [0;39m1794049742200[0m[1;39m,[0m
[1;34m"reclaimEnd"[0m[1;39m:[0m [0;39m1794049802200[0m
[1;39m}[0m
Step 4: Bob folds Alice's booking¶
bob
open-datum fold --vault bob.vault > receipts/04-fold-insert.json
Result:
fold success ............................................................ 5.6s
jq '{outcome, folded, skipped, left, root, stateOutput}' receipts/04-fold-insert.json
Result:
[1;39m{[0m
[1;34m"outcome"[0m[1;39m:[0m [0;32m"success"[0m[1;39m,[0m
[1;34m"folded"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"key"[0m[1;39m:[0m [0;32m"616c696365"[0m[1;39m,[0m
[1;34m"kind"[0m[1;39m:[0m [0;32m"registration"[0m[1;39m,[0m
[1;34m"pending"[0m[1;39m:[0m [0;32m"902f615c16fce9b562c4033b9bd23df12292b609e9f42b513d6f7f2f8b98b971#0"[0m
[1;39m}[0m
[1;39m][0m[1;39m,[0m
[1;34m"skipped"[0m[1;39m:[0m [1;39m[][0m[1;39m,[0m
[1;34m"left"[0m[1;39m:[0m [0;39m0[0m[1;39m,[0m
[1;34m"root"[0m[1;39m:[0m [0;32m"c35baac1ae86c6a791e4de21d571b5eddedd2cc9cf6ac4a34cefe807a13b088f"[0m[1;39m,[0m
[1;34m"stateOutput"[0m[1;39m:[0m [0;32m"46aa68223dd20e55c4beb3cdb7bdb7a07f52da38b549aaf496f74c0579291886#0"[0m
[1;39m}[0m
Step 5: Alice reads her key¶
alice
open-datum inspect --key alice --json > receipts/05-read-alice.json
jq '{answer, payload, deposit, holding: .outputRef}' receipts/05-read-alice.json
jq -er .outputRef receipts/05-read-alice.json > holding.ref
Result:
inspect live ............................................................ 0.0s
[1;39m{[0m
[1;34m"answer"[0m[1;39m:[0m [0;32m"live"[0m[1;39m,[0m
[1;34m"payload"[0m[1;39m:[0m [1;39m{[0m
[1;34m"answer"[0m[1;39m:[0m [0;39m42[0m
[1;39m}[0m[1;39m,[0m
[1;34m"deposit"[0m[1;39m:[0m [0;39m3000000[0m[1;39m,[0m
[1;34m"holding"[0m[1;39m:[0m [0;32m"46aa68223dd20e55c4beb3cdb7bdb7a07f52da38b549aaf496f74c0579291886#1"[0m
[1;39m}[0m
Step 6: Alice changes the payload¶
alice
printf '{"answer":43}\n' > payload-new.json
open-datum update --holding "$(cat holding.ref)" --payload payload-new.json --vault alice.vault > receipts/06-update.json
Result:
update success .......................................................... 4.8s
jq '{outcome, holding, treasuryDonation, submissions}' receipts/06-update.json
jq -er .holding receipts/06-update.json > holding.new && mv holding.new holding.ref
Result:
[1;39m{[0m
[1;34m"outcome"[0m[1;39m:[0m [0;32m"success"[0m[1;39m,[0m
[1;34m"holding"[0m[1;39m:[0m [0;32m"c0b6757ccab89a858195b8a455a1d62d07d859ac01bd11b64c9d8c6b6fbdc01b#0"[0m[1;39m,[0m
[1;34m"treasuryDonation"[0m[1;39m:[0m [0;39m0[0m[1;39m,[0m
[1;34m"submissions"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"chainPoint"[0m[1;39m:[0m [1;39m{[0m
[1;34m"blockHash"[0m[1;39m:[0m [0;32m"f014ad665f56a54891713b5016ea5141a07dba3ef9cfa53c4e0bcf70dad35b5f"[0m[1;39m,[0m
[1;34m"slot"[0m[1;39m:[0m [0;39m328[0m
[1;39m}[0m[1;39m,[0m
[1;34m"claims"[0m[1;39m:[0m [1;39m[[0m
[0;32m"the first output matches the complete output prepared by the command"[0m
[1;39m][0m[1;39m,[0m
[1;34m"confirmations"[0m[1;39m:[0m [0;39m12[0m[1;39m,[0m
[1;34m"how"[0m[1;39m:[0m [0;32m"sent"[0m[1;39m,[0m
[1;34m"identity"[0m[1;39m:[0m [0;32m"c0b6757ccab89a858195b8a455a1d62d07d859ac01bd11b64c9d8c6b6fbdc01b"[0m[1;39m,[0m
[1;34m"outputs"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"address"[0m[1;39m:[0m [0;32m"addr_test1wpnmk58942m83wv4tcwcnqg9pg2wp7fa4yft82955utpefcck6tk9"[0m[1;39m,[0m
[1;34m"assets"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"name"[0m[1;39m:[0m [0;32m"bd29bbbd73c3cbb987561de82b3792415af35be2adb084f33b841b4a5d9f3664"[0m[1;39m,[0m
[1;34m"policy"[0m[1;39m:[0m [0;32m"499291dbc77fb84b590e4f2d728788aa06191627a2c5c95b6bc4d679"[0m[1;39m,[0m
[1;34m"quantity"[0m[1;39m:[0m [0;39m1[0m
[1;39m}[0m
[1;39m][0m[1;39m,[0m
[1;34m"lovelace"[0m[1;39m:[0m [0;39m3000000[0m[1;39m,[0m
[1;34m"output"[0m[1;39m:[0m [0;32m"c0b6757ccab89a858195b8a455a1d62d07d859ac01bd11b64c9d8c6b6fbdc01b#0"[0m[1;39m,[0m
[1;34m"unspent"[0m[1;39m:[0m [0;39mtrue[0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"address"[0m[1;39m:[0m [0;32m"addr_test1vpnjz2lpycscpps0wnfmx4evr5snlx7q3lncys5jss6lrrqnt3cxg"[0m[1;39m,[0m
[1;34m"assets"[0m[1;39m:[0m [1;39m[][0m[1;39m,[0m
[1;34m"lovelace"[0m[1;39m:[0m [0;39m1999345957[0m[1;39m,[0m
[1;34m"output"[0m[1;39m:[0m [0;32m"c0b6757ccab89a858195b8a455a1d62d07d859ac01bd11b64c9d8c6b6fbdc01b#1"[0m[1;39m,[0m
[1;34m"unspent"[0m[1;39m:[0m [0;39mtrue[0m
[1;39m}[0m
[1;39m][0m
[1;39m}[0m
[1;39m][0m
[1;39m}[0m
Step 7: read the key again¶
alice
open-datum inspect --key alice --json > receipts/07-read-alice.json
jq '{answer, payload, deposit, holding: .outputRef}' receipts/07-read-alice.json
Result:
inspect live ............................................................ 0.0s
[1;39m{[0m
[1;34m"answer"[0m[1;39m:[0m [0;32m"live"[0m[1;39m,[0m
[1;34m"payload"[0m[1;39m:[0m [1;39m{[0m
[1;34m"answer"[0m[1;39m:[0m [0;39m43[0m
[1;39m}[0m[1;39m,[0m
[1;34m"deposit"[0m[1;39m:[0m [0;39m3000000[0m[1;39m,[0m
[1;34m"holding"[0m[1;39m:[0m [0;32m"c0b6757ccab89a858195b8a455a1d62d07d859ac01bd11b64c9d8c6b6fbdc01b#0"[0m
[1;39m}[0m
Step 8: Alice books permanent termination¶
alice
open-datum terminate --holding "$(cat holding.ref)" --vault alice.vault > receipts/08-terminate.json
Result:
terminate success ....................................................... 5.0s
jq '{outcome, pending, treasuryDonation, submissions}' receipts/08-terminate.json
Result:
[1;39m{[0m
[1;34m"outcome"[0m[1;39m:[0m [0;32m"success"[0m[1;39m,[0m
[1;34m"pending"[0m[1;39m:[0m [0;32m"993221e8358b3d2932b00e553b134c9805edf2ec006b4356b5730214b1195742#0"[0m[1;39m,[0m
[1;34m"treasuryDonation"[0m[1;39m:[0m [0;39m3000000[0m[1;39m,[0m
[1;34m"submissions"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"chainPoint"[0m[1;39m:[0m [1;39m{[0m
[1;34m"blockHash"[0m[1;39m:[0m [0;32m"82a0dc490640401fd86c5030a86762164c776c4b6c425fa360561c1e35bae854"[0m[1;39m,[0m
[1;34m"slot"[0m[1;39m:[0m [0;39m382[0m
[1;39m}[0m[1;39m,[0m
[1;34m"claims"[0m[1;39m:[0m [1;39m[[0m
[0;32m"the first output matches the complete output prepared by the command"[0m
[1;39m][0m[1;39m,[0m
[1;34m"confirmations"[0m[1;39m:[0m [0;39m11[0m[1;39m,[0m
[1;34m"how"[0m[1;39m:[0m [0;32m"sent"[0m[1;39m,[0m
[1;34m"identity"[0m[1;39m:[0m [0;32m"993221e8358b3d2932b00e553b134c9805edf2ec006b4356b5730214b1195742"[0m[1;39m,[0m
[1;34m"outputs"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"address"[0m[1;39m:[0m [0;32m"addr_test1wpnmk58942m83wv4tcwcnqg9pg2wp7fa4yft82955utpefcck6tk9"[0m[1;39m,[0m
[1;34m"assets"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"name"[0m[1;39m:[0m [0;32m"bd29bbbd73c3cbb987561de82b3792415af35be2adb084f33b841b4a5d9f3664"[0m[1;39m,[0m
[1;34m"policy"[0m[1;39m:[0m [0;32m"499291dbc77fb84b590e4f2d728788aa06191627a2c5c95b6bc4d679"[0m[1;39m,[0m
[1;34m"quantity"[0m[1;39m:[0m [0;39m1[0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"name"[0m[1;39m:[0m [0;32m"00920a5a7f018bf535ceb513f9802ba536b73942ba6615f6c26c4360083f9d4c"[0m[1;39m,[0m
[1;34m"policy"[0m[1;39m:[0m [0;32m"67bb50e5aab678b9955e1d8981050a14e0f93da912b3a8b4a7161ca7"[0m[1;39m,[0m
[1;34m"quantity"[0m[1;39m:[0m [0;39m1[0m
[1;39m}[0m
[1;39m][0m[1;39m,[0m
[1;34m"lovelace"[0m[1;39m:[0m [0;39m1426610[0m[1;39m,[0m
[1;34m"output"[0m[1;39m:[0m [0;32m"993221e8358b3d2932b00e553b134c9805edf2ec006b4356b5730214b1195742#0"[0m[1;39m,[0m
[1;34m"unspent"[0m[1;39m:[0m [0;39mtrue[0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"address"[0m[1;39m:[0m [0;32m"addr_test1vpnjz2lpycscpps0wnfmx4evr5snlx7q3lncys5jss6lrrqnt3cxg"[0m[1;39m,[0m
[1;34m"assets"[0m[1;39m:[0m [1;39m[][0m[1;39m,[0m
[1;34m"lovelace"[0m[1;39m:[0m [0;39m1997851455[0m[1;39m,[0m
[1;34m"output"[0m[1;39m:[0m [0;32m"993221e8358b3d2932b00e553b134c9805edf2ec006b4356b5730214b1195742#1"[0m[1;39m,[0m
[1;34m"unspent"[0m[1;39m:[0m [0;39mtrue[0m
[1;39m}[0m
[1;39m][0m
[1;39m}[0m
[1;39m][0m
[1;39m}[0m
Step 9: Bob folds the termination¶
bob
open-datum inspect --key alice --json > receipts/09-read-alice.json
jq '{answer, request: .outputRef}' receipts/09-read-alice.json
Result:
inspect pending-termination ............................................. 0.0s
[1;39m{[0m
[1;34m"answer"[0m[1;39m:[0m [0;32m"pending-termination"[0m[1;39m,[0m
[1;34m"request"[0m[1;39m:[0m [0;32m"993221e8358b3d2932b00e553b134c9805edf2ec006b4356b5730214b1195742#0"[0m
[1;39m}[0m
open-datum fold --vault bob.vault > receipts/09-fold-terminate.json
Result:
fold success ............................................................ 5.9s
jq '{outcome, folded, skipped, left, root, stateOutput}' receipts/09-fold-terminate.json
Result:
[1;39m{[0m
[1;34m"outcome"[0m[1;39m:[0m [0;32m"success"[0m[1;39m,[0m
[1;34m"folded"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"key"[0m[1;39m:[0m [0;32m"616c696365"[0m[1;39m,[0m
[1;34m"kind"[0m[1;39m:[0m [0;32m"termination"[0m[1;39m,[0m
[1;34m"pending"[0m[1;39m:[0m [0;32m"993221e8358b3d2932b00e553b134c9805edf2ec006b4356b5730214b1195742#0"[0m
[1;39m}[0m
[1;39m][0m[1;39m,[0m
[1;34m"skipped"[0m[1;39m:[0m [1;39m[][0m[1;39m,[0m
[1;34m"left"[0m[1;39m:[0m [0;39m0[0m[1;39m,[0m
[1;34m"root"[0m[1;39m:[0m [0;32m"8aa350349a4964fe0ee54c03cac2d5b33db04e0c98a302cf21861dcdaa7f4452"[0m[1;39m,[0m
[1;34m"stateOutput"[0m[1;39m:[0m [0;32m"1b2eca3c422c20c0194727cbf05adbf24e47cc928cdf93eb4851d938dfdc0549#0"[0m
[1;39m}[0m
Step 10: read the terminated key¶
alice
singular registry inspect --key alice --json > receipts/10-read-alice.json
jq '{answer, stateOutput, root}' receipts/10-read-alice.json
Result:
registry inspect terminal ............................................... 0.2s
[1;39m{[0m
[1;34m"answer"[0m[1;39m:[0m [0;32m"terminal"[0m[1;39m,[0m
[1;34m"stateOutput"[0m[1;39m:[0m [0;32m"1b2eca3c422c20c0194727cbf05adbf24e47cc928cdf93eb4851d938dfdc0549#0"[0m[1;39m,[0m
[1;34m"root"[0m[1;39m:[0m [0;32m"8aa350349a4964fe0ee54c03cac2d5b33db04e0c98a302cf21861dcdaa7f4452"[0m
[1;39m}[0m
singular registry inspect --key nobody --json > receipts/10-read-nobody.json
jq '{answer, stateOutput, root}' receipts/10-read-nobody.json
Result:
registry inspect never-registered ....................................... 0.2s
[1;39m{[0m
[1;34m"answer"[0m[1;39m:[0m [0;32m"never-registered"[0m[1;39m,[0m
[1;34m"stateOutput"[0m[1;39m:[0m [0;32m"1b2eca3c422c20c0194727cbf05adbf24e47cc928cdf93eb4851d938dfdc0549#0"[0m[1;39m,[0m
[1;34m"root"[0m[1;39m:[0m [0;32m"8aa350349a4964fe0ee54c03cac2d5b33db04e0c98a302cf21861dcdaa7f4452"[0m
[1;39m}[0m
Step 11: clean up an expired registration¶
alice
open-datum insert --deposit 3000000 --key late --payload payload.json --vault alice.vault > receipts/11a-insert-late.json
Result:
insert success .......................................................... 5.6s
jq -er .pending receipts/11a-insert-late.json > ../late.pending
jq -er .reclaimEnd receipts/11a-insert-late.json > ../late.expires
bob
wait_until_ms "$(cat ../late.expires)"
open-datum cleanup --pending "$(cat ../late.pending)" --vault bob.vault > receipts/11d-cleanup.json
Result:
cleanup success ......................................................... 5.2s
jq '{outcome, pending, returned, locked, submissions}' receipts/11d-cleanup.json
Result:
[1;39m{[0m
[1;34m"outcome"[0m[1;39m:[0m [0;32m"success"[0m[1;39m,[0m
[1;34m"pending"[0m[1;39m:[0m [0;32m"5bbebbe36d27ece4a574a230016035706db5dfdef52bb4f6dd13bb1c98b89b18#0"[0m[1;39m,[0m
[1;34m"returned"[0m[1;39m:[0m [1;39m{[0m
[1;34m"lovelace"[0m[1;39m:[0m [0;39m3000000[0m[1;39m,[0m
[1;34m"output"[0m[1;39m:[0m [0;32m"324032ab04e36abe09da849481c00c20f9405169f375df9dd77c54ce93cc72df#0"[0m[1;39m,[0m
[1;34m"recipient"[0m[1;39m:[0m [0;32m"addr_test1vpnjz2lpycscpps0wnfmx4evr5snlx7q3lncys5jss6lrrqnt3cxg"[0m
[1;39m}[0m[1;39m,[0m
[1;34m"locked"[0m[1;39m:[0m [0;39m3000000[0m[1;39m,[0m
[1;34m"submissions"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"chainPoint"[0m[1;39m:[0m [1;39m{[0m
[1;34m"blockHash"[0m[1;39m:[0m [0;32m"85dd872955a0586d3c82985665288d0cc7b25faa7155788096c1a0c649b02ec6"[0m[1;39m,[0m
[1;34m"slot"[0m[1;39m:[0m [0;39m3575[0m
[1;39m}[0m[1;39m,[0m
[1;34m"claims"[0m[1;39m:[0m [1;39m[[0m
[0;32m"the first output is live, ada only, at the address it was paid to"[0m
[1;39m][0m[1;39m,[0m
[1;34m"confirmations"[0m[1;39m:[0m [0;39m12[0m[1;39m,[0m
[1;34m"how"[0m[1;39m:[0m [0;32m"sent"[0m[1;39m,[0m
[1;34m"identity"[0m[1;39m:[0m [0;32m"324032ab04e36abe09da849481c00c20f9405169f375df9dd77c54ce93cc72df"[0m[1;39m,[0m
[1;34m"outputs"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"address"[0m[1;39m:[0m [0;32m"addr_test1vpnjz2lpycscpps0wnfmx4evr5snlx7q3lncys5jss6lrrqnt3cxg"[0m[1;39m,[0m
[1;34m"assets"[0m[1;39m:[0m [1;39m[][0m[1;39m,[0m
[1;34m"lovelace"[0m[1;39m:[0m [0;39m3000000[0m[1;39m,[0m
[1;34m"output"[0m[1;39m:[0m [0;32m"324032ab04e36abe09da849481c00c20f9405169f375df9dd77c54ce93cc72df#0"[0m[1;39m,[0m
[1;34m"unspent"[0m[1;39m:[0m [0;39mtrue[0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"address"[0m[1;39m:[0m [0;32m"addr_test1vqqqkvg6v3klww72msu3mg76vwg8fcnrqn90v0sm04n99kgzj3fce"[0m[1;39m,[0m
[1;34m"assets"[0m[1;39m:[0m [1;39m[][0m[1;39m,[0m
[1;34m"lovelace"[0m[1;39m:[0m [0;39m1999637594[0m[1;39m,[0m
[1;34m"output"[0m[1;39m:[0m [0;32m"324032ab04e36abe09da849481c00c20f9405169f375df9dd77c54ce93cc72df#1"[0m[1;39m,[0m
[1;34m"unspent"[0m[1;39m:[0m [0;39mtrue[0m
[1;39m}[0m
[1;39m][0m
[1;39m}[0m
[1;39m][0m
[1;39m}[0m
Step 12: Bob books his own key with external signing¶
bob
printf '{"answer":42}\n' > payload.json
jq 'del(.["state-token"])' bob.json > wallet.json
open-datum insert --deposit 3000000 --key bob --payload payload.json --wallet-address "$bob_addr" --bundle bundles/insert-bob.bundle > receipts/12-insert-bob.json
Result:
insert waiting-for-signatures ........................................... 3.3s
singular wallet sign --config wallet.json --vault bob.vault --out witnesses/insert-bob bundles/insert-bob.bundle
Result:
witnesses/insert-bob/f4442a45f79c618fbfe5abde2b8943e1a01a1e41b004e01b1a4d0b9a6b301a8e.witness
signed f4442a45f79c618fbfe5abde2b8943e1a01a1e41b004e01b1a4d0b9a6b301a8e, deadline 4202, among 1 signer addresses
effect: the first output is live holding the token alone
singular submit --config wallet.json --witnesses witnesses/insert-bob --receipt receipts/12-insert-bob.submitted.json bundles/insert-bob.bundle
Result:
submit success .......................................................... 1.8s
{
"bundleHash": "c0a95b16b2bd24fa2f654a71595b5c2f0f6202ca7c0a39a98464d880d813de64",
"command": "submit",
"outcome": "success",
"submissions": [
{
"chainPoint": {
"blockHash": "6b26c2082c64f6e8497e9bd1f9cebd05c8977bdc1f1cf115728824583afa0716",
"slot": 3641
},
"claims": [
"the first output is live holding the token alone"
],
"confirmations": 11,
"how": "sent",
"identity": "f4442a45f79c618fbfe5abde2b8943e1a01a1e41b004e01b1a4d0b9a6b301a8e",
"outputs": [
{
"address": "addr_test1wpnmk58942m83wv4tcwcnqg9pg2wp7fa4yft82955utpefcck6tk9",
"assets": [
{
"name": "b93129b439030317f0b335f623f664ba0ba205ea05224b562ca708e2d5c86195",
"policy": "67bb50e5aab678b9955e1d8981050a14e0f93da912b3a8b4a7161ca7",
"quantity": 1
}
],
"lovelace": 3000000,
"output": "f4442a45f79c618fbfe5abde2b8943e1a01a1e41b004e01b1a4d0b9a6b301a8e#0",
"unspent": true
},
{
"address": "addr_test1vqqqkvg6v3klww72msu3mg76vwg8fcnrqn90v0sm04n99kgzj3fce",
"assets": [],
"lovelace": 1996293309,
"output": "f4442a45f79c618fbfe5abde2b8943e1a01a1e41b004e01b1a4d0b9a6b301a8e#1",
"unspent": true
}
]
}
]
}
jq '{outcome, submissions}' receipts/12-insert-bob.submitted.json
Result:
[1;39m{[0m
[1;34m"outcome"[0m[1;39m:[0m [0;32m"success"[0m[1;39m,[0m
[1;34m"submissions"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"chainPoint"[0m[1;39m:[0m [1;39m{[0m
[1;34m"blockHash"[0m[1;39m:[0m [0;32m"6b26c2082c64f6e8497e9bd1f9cebd05c8977bdc1f1cf115728824583afa0716"[0m[1;39m,[0m
[1;34m"slot"[0m[1;39m:[0m [0;39m3641[0m
[1;39m}[0m[1;39m,[0m
[1;34m"claims"[0m[1;39m:[0m [1;39m[[0m
[0;32m"the first output is live holding the token alone"[0m
[1;39m][0m[1;39m,[0m
[1;34m"confirmations"[0m[1;39m:[0m [0;39m11[0m[1;39m,[0m
[1;34m"how"[0m[1;39m:[0m [0;32m"sent"[0m[1;39m,[0m
[1;34m"identity"[0m[1;39m:[0m [0;32m"f4442a45f79c618fbfe5abde2b8943e1a01a1e41b004e01b1a4d0b9a6b301a8e"[0m[1;39m,[0m
[1;34m"outputs"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"address"[0m[1;39m:[0m [0;32m"addr_test1wpnmk58942m83wv4tcwcnqg9pg2wp7fa4yft82955utpefcck6tk9"[0m[1;39m,[0m
[1;34m"assets"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"name"[0m[1;39m:[0m [0;32m"b93129b439030317f0b335f623f664ba0ba205ea05224b562ca708e2d5c86195"[0m[1;39m,[0m
[1;34m"policy"[0m[1;39m:[0m [0;32m"67bb50e5aab678b9955e1d8981050a14e0f93da912b3a8b4a7161ca7"[0m[1;39m,[0m
[1;34m"quantity"[0m[1;39m:[0m [0;39m1[0m
[1;39m}[0m
[1;39m][0m[1;39m,[0m
[1;34m"lovelace"[0m[1;39m:[0m [0;39m3000000[0m[1;39m,[0m
[1;34m"output"[0m[1;39m:[0m [0;32m"f4442a45f79c618fbfe5abde2b8943e1a01a1e41b004e01b1a4d0b9a6b301a8e#0"[0m[1;39m,[0m
[1;34m"unspent"[0m[1;39m:[0m [0;39mtrue[0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"address"[0m[1;39m:[0m [0;32m"addr_test1vqqqkvg6v3klww72msu3mg76vwg8fcnrqn90v0sm04n99kgzj3fce"[0m[1;39m,[0m
[1;34m"assets"[0m[1;39m:[0m [1;39m[][0m[1;39m,[0m
[1;34m"lovelace"[0m[1;39m:[0m [0;39m1996293309[0m[1;39m,[0m
[1;34m"output"[0m[1;39m:[0m [0;32m"f4442a45f79c618fbfe5abde2b8943e1a01a1e41b004e01b1a4d0b9a6b301a8e#1"[0m[1;39m,[0m
[1;34m"unspent"[0m[1;39m:[0m [0;39mtrue[0m
[1;39m}[0m
[1;39m][0m
[1;39m}[0m
[1;39m][0m
[1;39m}[0m
Step 13: Alice folds Bob's booking¶
alice
open-datum fold --vault alice.vault > receipts/13-fold-bob.json
Result:
fold success ............................................................ 6.3s
jq '{outcome, folded, skipped, left, root}' receipts/13-fold-bob.json
Result:
[1;39m{[0m
[1;34m"outcome"[0m[1;39m:[0m [0;32m"success"[0m[1;39m,[0m
[1;34m"folded"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"key"[0m[1;39m:[0m [0;32m"626f62"[0m[1;39m,[0m
[1;34m"kind"[0m[1;39m:[0m [0;32m"registration"[0m[1;39m,[0m
[1;34m"pending"[0m[1;39m:[0m [0;32m"f4442a45f79c618fbfe5abde2b8943e1a01a1e41b004e01b1a4d0b9a6b301a8e#0"[0m
[1;39m}[0m
[1;39m][0m[1;39m,[0m
[1;34m"skipped"[0m[1;39m:[0m [1;39m[][0m[1;39m,[0m
[1;34m"left"[0m[1;39m:[0m [0;39m0[0m[1;39m,[0m
[1;34m"root"[0m[1;39m:[0m [0;32m"028af26f1990bee3ac3cd34cfc42e21d7d37356a8e0cdf5e368e9fbaa3a68375"[0m
[1;39m}[0m
Step 14: Alice takes back an unprocessed registration¶
alice
open-datum insert --deposit 3000000 --key unfolded --payload payload.json --vault alice.vault > receipts/14a-insert-unfolded.json
Result:
insert success .......................................................... 6.0s
wait_until_ms "$(jq -er .processDeadline receipts/14a-insert-unfolded.json)"
open-datum reclaim --pending "$(jq -er .pending receipts/14a-insert-unfolded.json)" --vault alice.vault > receipts/14c-reclaim.json
Result:
reclaim success ......................................................... 5.2s
jq '{outcome, pending, returned, locked, submissions}' receipts/14c-reclaim.json
Result:
[1;39m{[0m
[1;34m"outcome"[0m[1;39m:[0m [0;32m"success"[0m[1;39m,[0m
[1;34m"pending"[0m[1;39m:[0m [0;32m"39c953a906678cdd183e488a1b0c62055e5ea00ad7f197d6988cc731fdf6854a#0"[0m[1;39m,[0m
[1;34m"returned"[0m[1;39m:[0m [1;39m{[0m
[1;34m"lovelace"[0m[1;39m:[0m [0;39m3025620[0m[1;39m,[0m
[1;34m"output"[0m[1;39m:[0m [0;32m"a4a0852c727ec0460bfa69dedbb5f05eabf35a615ebf6a31fe73fe1da53058fb#0"[0m[1;39m,[0m
[1;34m"recipient"[0m[1;39m:[0m [0;32m"addr_test1vpnjz2lpycscpps0wnfmx4evr5snlx7q3lncys5jss6lrrqnt3cxg"[0m
[1;39m}[0m[1;39m,[0m
[1;34m"locked"[0m[1;39m:[0m [0;39m3025620[0m[1;39m,[0m
[1;34m"submissions"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"chainPoint"[0m[1;39m:[0m [1;39m{[0m
[1;34m"blockHash"[0m[1;39m:[0m [0;32m"5e785943cbd2718d8f2a8d2a817e3029c92b0e3af6b2f62c0e162c6377de0c6c"[0m[1;39m,[0m
[1;34m"slot"[0m[1;39m:[0m [0;39m6224[0m
[1;39m}[0m[1;39m,[0m
[1;34m"claims"[0m[1;39m:[0m [1;39m[[0m
[0;32m"the first output is live, ada only, at the address it was paid to"[0m
[1;39m][0m[1;39m,[0m
[1;34m"confirmations"[0m[1;39m:[0m [0;39m12[0m[1;39m,[0m
[1;34m"how"[0m[1;39m:[0m [0;32m"sent"[0m[1;39m,[0m
[1;34m"identity"[0m[1;39m:[0m [0;32m"a4a0852c727ec0460bfa69dedbb5f05eabf35a615ebf6a31fe73fe1da53058fb"[0m[1;39m,[0m
[1;34m"outputs"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"address"[0m[1;39m:[0m [0;32m"addr_test1vpnjz2lpycscpps0wnfmx4evr5snlx7q3lncys5jss6lrrqnt3cxg"[0m[1;39m,[0m
[1;34m"assets"[0m[1;39m:[0m [1;39m[][0m[1;39m,[0m
[1;34m"lovelace"[0m[1;39m:[0m [0;39m3025620[0m[1;39m,[0m
[1;34m"output"[0m[1;39m:[0m [0;32m"a4a0852c727ec0460bfa69dedbb5f05eabf35a615ebf6a31fe73fe1da53058fb#0"[0m[1;39m,[0m
[1;34m"unspent"[0m[1;39m:[0m [0;39mtrue[0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"address"[0m[1;39m:[0m [0;32m"addr_test1vpnjz2lpycscpps0wnfmx4evr5snlx7q3lncys5jss6lrrqnt3cxg"[0m[1;39m,[0m
[1;34m"assets"[0m[1;39m:[0m [1;39m[][0m[1;39m,[0m
[1;34m"lovelace"[0m[1;39m:[0m [0;39m1998658813[0m[1;39m,[0m
[1;34m"output"[0m[1;39m:[0m [0;32m"a4a0852c727ec0460bfa69dedbb5f05eabf35a615ebf6a31fe73fe1da53058fb#1"[0m[1;39m,[0m
[1;34m"unspent"[0m[1;39m:[0m [0;39mtrue[0m
[1;39m}[0m
[1;39m][0m
[1;39m}[0m
[1;39m][0m
[1;39m}[0m
Step 15: book one more key¶
alice
open-datum insert --deposit 3000000 --key dave --payload payload.json --vault alice.vault > receipts/15-insert-dave.json
Result:
insert success .......................................................... 5.8s
Step 16: Bob folds the final registration with external signing¶
bob
open-datum fold --wallet-address "$bob_addr" --bundle bundles/fold-dave.bundle > receipts/16a-fold-dave.json
Result:
fold waiting-for-signatures ............................................. 3.5s
singular wallet sign --config wallet.json --vault bob.vault --out witnesses/fold-dave bundles/fold-dave.bundle
Result:
witnesses/fold-dave/5b4e0b56b222ab51b27f4ee98836bcf602954104ce0ef0e039fe10324110d704.witness
signed 5b4e0b56b222ab51b27f4ee98836bcf602954104ce0ef0e039fe10324110d704, deadline 8658, among 1 signer addresses
effect: the first output is live holding the token alone
singular submit --config wallet.json --witnesses witnesses/fold-dave --receipt receipts/16a-fold-dave.submitted.json bundles/fold-dave.bundle
Result:
submit success .......................................................... 1.9s
{
"bundleHash": "974aa039f3c825e91df676a3cd2ce624355bba7de4d7d8a5821cb1e71b34cdf5",
"command": "submit",
"outcome": "success",
"submissions": [
{
"chainPoint": {
"blockHash": "270764ee7ce67282958f23d70356b6192f3454f14291b5c16d610392059270fd",
"slot": 6353
},
"claims": [
"the first output is live holding the token alone"
],
"confirmations": 11,
"how": "sent",
"identity": "5b4e0b56b222ab51b27f4ee98836bcf602954104ce0ef0e039fe10324110d704",
"outputs": [
{
"address": "addr_test1wpye9ywmcalmsj6epe8j6u583z4qvxgky73vtj2md0zdv7gcmvhhn",
"assets": [
{
"name": "974b521f1cf9937ecd223938488fc100d3e505872e8bf5772e03814b6a94c9d6",
"policy": "499291dbc77fb84b590e4f2d728788aa06191627a2c5c95b6bc4d679",
"quantity": 1
}
],
"lovelace": 1344720,
"output": "5b4e0b56b222ab51b27f4ee98836bcf602954104ce0ef0e039fe10324110d704#0",
"unspent": true
},
{
"address": "addr_test1wpnmk58942m83wv4tcwcnqg9pg2wp7fa4yft82955utpefcck6tk9",
"assets": [
{
"name": "dafb3d3d9278fa0828512756c3068efb2d0a3af95217defec68e3265d28010e7",
"policy": "499291dbc77fb84b590e4f2d728788aa06191627a2c5c95b6bc4d679",
"quantity": 1
}
],
"lovelace": 3000000,
"output": "5b4e0b56b222ab51b27f4ee98836bcf602954104ce0ef0e039fe10324110d704#1",
"unspent": true
},
{
"address": "addr_test1vqqqkvg6v3klww72msu3mg76vwg8fcnrqn90v0sm04n99kgzj3fce",
"assets": [],
"lovelace": 1998804843,
"output": "5b4e0b56b222ab51b27f4ee98836bcf602954104ce0ef0e039fe10324110d704#2",
"unspent": true
}
]
}
]
}
jq '{outcome, expected}' receipts/16a-fold-dave.json
jq '{outcome, submissions}' receipts/16a-fold-dave.submitted.json
Result:
[1;39m{[0m
[1;34m"outcome"[0m[1;39m:[0m [0;32m"waiting-for-signatures"[0m[1;39m,[0m
[1;34m"expected"[0m[1;39m:[0m [1;39m{[0m
[1;34m"fingerprint"[0m[1;39m:[0m [0;32m"asset13t04d4yacw3086klka609sl7wwtzllym0w2xzl"[0m[1;39m,[0m
[1;34m"folded"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"key"[0m[1;39m:[0m [0;32m"64617665"[0m[1;39m,[0m
[1;34m"kind"[0m[1;39m:[0m [0;32m"registration"[0m[1;39m,[0m
[1;34m"pending"[0m[1;39m:[0m [0;32m"87242299f3ed4378c91393c69e6b75bff2ac641bab83a1028c4941192c5aab0a#0"[0m
[1;39m}[0m
[1;39m][0m[1;39m,[0m
[1;34m"left"[0m[1;39m:[0m [0;39m0[0m[1;39m,[0m
[1;34m"lovelace"[0m[1;39m:[0m [0;39m1344720[0m[1;39m,[0m
[1;34m"registry"[0m[1;39m:[0m [0;32m"singular_devnet1fxffrk7807uykkgwfukh9pug4grpj9385tzujkmtcnt8n96t2g03e7vn0mxjywfcfz8uzqxnu5zcwt5t74mjuqupfd4ffjwk48j9zl"[0m[1;39m,[0m
[1;34m"root"[0m[1;39m:[0m [0;32m"568be7f1d7af2e9762a534f2de825417e6810feba46b6041dc32045c409f15ea"[0m[1;39m,[0m
[1;34m"skipped"[0m[1;39m:[0m [1;39m[][0m[1;39m,[0m
[1;34m"stateOutput"[0m[1;39m:[0m [0;32m"5b4e0b56b222ab51b27f4ee98836bcf602954104ce0ef0e039fe10324110d704#0"[0m[1;39m,[0m
[1;34m"stateToken"[0m[1;39m:[0m [0;32m"499291dbc77fb84b590e4f2d728788aa06191627a2c5c95b6bc4d679.974b521f1cf9937ecd223938488fc100d3e505872e8bf5772e03814b6a94c9d6"[0m
[1;39m}[0m
[1;39m}[0m
[1;39m{[0m
[1;34m"outcome"[0m[1;39m:[0m [0;32m"success"[0m[1;39m,[0m
[1;34m"submissions"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"chainPoint"[0m[1;39m:[0m [1;39m{[0m
[1;34m"blockHash"[0m[1;39m:[0m [0;32m"270764ee7ce67282958f23d70356b6192f3454f14291b5c16d610392059270fd"[0m[1;39m,[0m
[1;34m"slot"[0m[1;39m:[0m [0;39m6353[0m
[1;39m}[0m[1;39m,[0m
[1;34m"claims"[0m[1;39m:[0m [1;39m[[0m
[0;32m"the first output is live holding the token alone"[0m
[1;39m][0m[1;39m,[0m
[1;34m"confirmations"[0m[1;39m:[0m [0;39m11[0m[1;39m,[0m
[1;34m"how"[0m[1;39m:[0m [0;32m"sent"[0m[1;39m,[0m
[1;34m"identity"[0m[1;39m:[0m [0;32m"5b4e0b56b222ab51b27f4ee98836bcf602954104ce0ef0e039fe10324110d704"[0m[1;39m,[0m
[1;34m"outputs"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"address"[0m[1;39m:[0m [0;32m"addr_test1wpye9ywmcalmsj6epe8j6u583z4qvxgky73vtj2md0zdv7gcmvhhn"[0m[1;39m,[0m
[1;34m"assets"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"name"[0m[1;39m:[0m [0;32m"974b521f1cf9937ecd223938488fc100d3e505872e8bf5772e03814b6a94c9d6"[0m[1;39m,[0m
[1;34m"policy"[0m[1;39m:[0m [0;32m"499291dbc77fb84b590e4f2d728788aa06191627a2c5c95b6bc4d679"[0m[1;39m,[0m
[1;34m"quantity"[0m[1;39m:[0m [0;39m1[0m
[1;39m}[0m
[1;39m][0m[1;39m,[0m
[1;34m"lovelace"[0m[1;39m:[0m [0;39m1344720[0m[1;39m,[0m
[1;34m"output"[0m[1;39m:[0m [0;32m"5b4e0b56b222ab51b27f4ee98836bcf602954104ce0ef0e039fe10324110d704#0"[0m[1;39m,[0m
[1;34m"unspent"[0m[1;39m:[0m [0;39mtrue[0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"address"[0m[1;39m:[0m [0;32m"addr_test1wpnmk58942m83wv4tcwcnqg9pg2wp7fa4yft82955utpefcck6tk9"[0m[1;39m,[0m
[1;34m"assets"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"name"[0m[1;39m:[0m [0;32m"dafb3d3d9278fa0828512756c3068efb2d0a3af95217defec68e3265d28010e7"[0m[1;39m,[0m
[1;34m"policy"[0m[1;39m:[0m [0;32m"499291dbc77fb84b590e4f2d728788aa06191627a2c5c95b6bc4d679"[0m[1;39m,[0m
[1;34m"quantity"[0m[1;39m:[0m [0;39m1[0m
[1;39m}[0m
[1;39m][0m[1;39m,[0m
[1;34m"lovelace"[0m[1;39m:[0m [0;39m3000000[0m[1;39m,[0m
[1;34m"output"[0m[1;39m:[0m [0;32m"5b4e0b56b222ab51b27f4ee98836bcf602954104ce0ef0e039fe10324110d704#1"[0m[1;39m,[0m
[1;34m"unspent"[0m[1;39m:[0m [0;39mtrue[0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"address"[0m[1;39m:[0m [0;32m"addr_test1vqqqkvg6v3klww72msu3mg76vwg8fcnrqn90v0sm04n99kgzj3fce"[0m[1;39m,[0m
[1;34m"assets"[0m[1;39m:[0m [1;39m[][0m[1;39m,[0m
[1;34m"lovelace"[0m[1;39m:[0m [0;39m1998804843[0m[1;39m,[0m
[1;34m"output"[0m[1;39m:[0m [0;32m"5b4e0b56b222ab51b27f4ee98836bcf602954104ce0ef0e039fe10324110d704#2"[0m[1;39m,[0m
[1;34m"unspent"[0m[1;39m:[0m [0;39mtrue[0m
[1;39m}[0m
[1;39m][0m
[1;39m}[0m
[1;39m][0m
[1;39m}[0m
Extra: look at the wallets¶
alice_addr=$(cat ../alice/alice.address); bob_addr=$(cat ../bob/bob.address)
wallet_show "$alice_addr"
Result:
[1;39m{[0m
[1;34m"outputs"[0m[1;39m:[0m [0;39m8[0m[1;39m,[0m
[1;34m"total_ada"[0m[1;39m:[0m [0;39m11986.494149[0m[1;39m,[0m
[1;34m"utxos"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"tx"[0m[1;39m:[0m [0;32m"324032ab04e3"[0m[1;39m,[0m
[1;34m"ix"[0m[1;39m:[0m [0;39m0[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m3[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[][0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"tx"[0m[1;39m:[0m [0;32m"39c953a90667"[0m[1;39m,[0m
[1;34m"ix"[0m[1;39m:[0m [0;39m1[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m1996.267247[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[][0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"tx"[0m[1;39m:[0m [0;32m"5bbebbe36d27"[0m[1;39m,[0m
[1;34m"ix"[0m[1;39m:[0m [0;39m1[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m1996.293221[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[][0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"tx"[0m[1;39m:[0m [0;32m"87242299f3ed"[0m[1;39m,[0m
[1;34m"ix"[0m[1;39m:[0m [0;39m1[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m1995.104616[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[][0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"tx"[0m[1;39m:[0m [0;32m"902f615c16fc"[0m[1;39m,[0m
[1;34m"ix"[0m[1;39m:[0m [0;39m1[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m1996.293177[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[][0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"tx"[0m[1;39m:[0m [0;32m"993221e8358b"[0m[1;39m,[0m
[1;34m"ix"[0m[1;39m:[0m [0;39m1[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m1997.851455[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[][0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"tx"[0m[1;39m:[0m [0;32m"a4a0852c727e"[0m[1;39m,[0m
[1;34m"ix"[0m[1;39m:[0m [0;39m0[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m3.02562[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[][0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"tx"[0m[1;39m:[0m [0;32m"a4a0852c727e"[0m[1;39m,[0m
[1;34m"ix"[0m[1;39m:[0m [0;39m1[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m1998.658813[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[][0m
[1;39m}[0m
[1;39m][0m
[1;39m}[0m
wallet_show "$bob_addr"
Result:
[1;39m{[0m
[1;34m"outputs"[0m[1;39m:[0m [0;39m6[0m[1;39m,[0m
[1;34m"total_ada"[0m[1;39m:[0m [0;39m11993.558311[0m[1;39m,[0m
[1;34m"utxos"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"tx"[0m[1;39m:[0m [0;32m"324032ab04e3"[0m[1;39m,[0m
[1;34m"ix"[0m[1;39m:[0m [0;39m1[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m1999.637594[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[][0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"tx"[0m[1;39m:[0m [0;32m"46aa68223dd2"[0m[1;39m,[0m
[1;34m"ix"[0m[1;39m:[0m [0;39m2[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m1998.822565[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[][0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"tx"[0m[1;39m:[0m [0;32m"5b4e0b56b222"[0m[1;39m,[0m
[1;34m"ix"[0m[1;39m:[0m [0;39m2[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m1998.804843[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[][0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"tx"[0m[1;39m:[0m [0;32m"72818fb4dc42"[0m[1;39m,[0m
[1;34m"ix"[0m[1;39m:[0m [0;39m4[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m2000[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[][0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"tx"[0m[1;39m:[0m [0;32m"72818fb4dc42"[0m[1;39m,[0m
[1;34m"ix"[0m[1;39m:[0m [0;39m5[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m2000[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[][0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"tx"[0m[1;39m:[0m [0;32m"f4442a45f79c"[0m[1;39m,[0m
[1;34m"ix"[0m[1;39m:[0m [0;39m1[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m1996.293309[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[][0m
[1;39m}[0m
[1;39m][0m
[1;39m}[0m
curl -fsS "$(koios_url)/tip" | jq '.[0] | {abs_slot, block_no}'
Result:
[1;39m{[0m
[1;34m"abs_slot"[0m[1;39m:[0m [0;39m6367[0m[1;39m,[0m
[1;34m"block_no"[0m[1;39m:[0m [0;90mnull[0m
[1;39m}[0m
Extra: look inside the transactions¶
bob
jq '.transactions[] | {effects, deadline}' bundles/fold-dave.bundle
Result:
[1;39m{[0m
[1;34m"effects"[0m[1;39m:[0m [1;39m[[0m
[0;32m"the first output is live holding the token alone"[0m
[1;39m][0m[1;39m,[0m
[1;34m"deadline"[0m[1;39m:[0m [0;39m8658[0m
[1;39m}[0m
jq '.submissions[]? | {transaction: .identity, chainPoint, confirmations, claims}' receipts/16a-fold-dave.submitted.json
Result:
[1;39m{[0m
[1;34m"transaction"[0m[1;39m:[0m [0;32m"5b4e0b56b222ab51b27f4ee98836bcf602954104ce0ef0e039fe10324110d704"[0m[1;39m,[0m
[1;34m"chainPoint"[0m[1;39m:[0m [1;39m{[0m
[1;34m"blockHash"[0m[1;39m:[0m [0;32m"270764ee7ce67282958f23d70356b6192f3454f14291b5c16d610392059270fd"[0m[1;39m,[0m
[1;34m"slot"[0m[1;39m:[0m [0;39m6353[0m
[1;39m}[0m[1;39m,[0m
[1;34m"confirmations"[0m[1;39m:[0m [0;39m11[0m[1;39m,[0m
[1;34m"claims"[0m[1;39m:[0m [1;39m[[0m
[0;32m"the first output is live holding the token alone"[0m
[1;39m][0m
[1;39m}[0m
for f in receipts/*.json; do [ "$f" = receipts/tx-info.json ] && continue; jq -r --arg f "$f" '.submissions[]? | "\($f) \(.identity) confirmations \(.confirmations)"' "$f"; done
Result:
receipts/04-fold-insert.json 46aa68223dd20e55c4beb3cdb7bdb7a07f52da38b549aaf496f74c0579291886 confirmations 12
receipts/09-fold-terminate.json 1b2eca3c422c20c0194727cbf05adbf24e47cc928cdf93eb4851d938dfdc0549 confirmations 11
receipts/11d-cleanup.json 324032ab04e36abe09da849481c00c20f9405169f375df9dd77c54ce93cc72df confirmations 12
receipts/12-insert-bob.submitted.json f4442a45f79c618fbfe5abde2b8943e1a01a1e41b004e01b1a4d0b9a6b301a8e confirmations 11
receipts/16a-fold-dave.submitted.json 5b4e0b56b222ab51b27f4ee98836bcf602954104ce0ef0e039fe10324110d704 confirmations 11
tx=$(jq -r '.submissions[0].identity' receipts/16a-fold-dave.submitted.json)
curl -fsS -X POST "$(koios_url)/tx_info" -H 'content-type: application/json' -d "{\"_tx_hashes\":[\"$tx\"]}" > receipts/tx-info.json
jq '.[0] | {tx_hash, block_height, absolute_slot, inputs: [.inputs[] | {from: .payment_addr.bech32[0:16], ada: ((.value|tonumber)/1000000)}], outputs: [.outputs[] | {to: .payment_addr.bech32[0:16], ada: ((.value|tonumber)/1000000), tokens: [.asset_list[].asset_name[0:8]], has_data: (.inline_datum != null)}]}' receipts/tx-info.json
Result:
[1;39m{[0m
[1;34m"tx_hash"[0m[1;39m:[0m [0;32m"5b4e0b56b222ab51b27f4ee98836bcf602954104ce0ef0e039fe10324110d704"[0m[1;39m,[0m
[1;34m"block_height"[0m[1;39m:[0m [0;39m6353[0m[1;39m,[0m
[1;34m"absolute_slot"[0m[1;39m:[0m [0;39m6353[0m[1;39m,[0m
[1;34m"inputs"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"from"[0m[1;39m:[0m [0;32m"addr_test1vqqqkv"[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m2000[0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"from"[0m[1;39m:[0m [0;32m"addr_test1wpnmk5"[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m3[0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"from"[0m[1;39m:[0m [0;32m"addr_test1wpye9y"[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m1.34472[0m
[1;39m}[0m
[1;39m][0m[1;39m,[0m
[1;34m"outputs"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"to"[0m[1;39m:[0m [0;32m"addr_test1wpye9y"[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m1.34472[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[[0m
[0;32m"974b521f"[0m
[1;39m][0m[1;39m,[0m
[1;34m"has_data"[0m[1;39m:[0m [0;39mtrue[0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"to"[0m[1;39m:[0m [0;32m"addr_test1wpnmk5"[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m3[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[[0m
[0;32m"dafb3d3d"[0m
[1;39m][0m[1;39m,[0m
[1;34m"has_data"[0m[1;39m:[0m [0;39mtrue[0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"to"[0m[1;39m:[0m [0;32m"addr_test1vqqqkv"[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m1998.804843[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[][0m[1;39m,[0m
[1;34m"has_data"[0m[1;39m:[0m [0;39mfalse[0m
[1;39m}[0m
[1;39m][0m
[1;39m}[0m
Extra: look at the wallets¶
Run again at the end of the path:
wallet_show "$alice_addr"
Result:
[1;39m{[0m
[1;34m"outputs"[0m[1;39m:[0m [0;39m8[0m[1;39m,[0m
[1;34m"total_ada"[0m[1;39m:[0m [0;39m11986.494149[0m[1;39m,[0m
[1;34m"utxos"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"tx"[0m[1;39m:[0m [0;32m"324032ab04e3"[0m[1;39m,[0m
[1;34m"ix"[0m[1;39m:[0m [0;39m0[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m3[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[][0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"tx"[0m[1;39m:[0m [0;32m"39c953a90667"[0m[1;39m,[0m
[1;34m"ix"[0m[1;39m:[0m [0;39m1[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m1996.267247[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[][0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"tx"[0m[1;39m:[0m [0;32m"5bbebbe36d27"[0m[1;39m,[0m
[1;34m"ix"[0m[1;39m:[0m [0;39m1[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m1996.293221[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[][0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"tx"[0m[1;39m:[0m [0;32m"87242299f3ed"[0m[1;39m,[0m
[1;34m"ix"[0m[1;39m:[0m [0;39m1[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m1995.104616[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[][0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"tx"[0m[1;39m:[0m [0;32m"902f615c16fc"[0m[1;39m,[0m
[1;34m"ix"[0m[1;39m:[0m [0;39m1[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m1996.293177[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[][0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"tx"[0m[1;39m:[0m [0;32m"993221e8358b"[0m[1;39m,[0m
[1;34m"ix"[0m[1;39m:[0m [0;39m1[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m1997.851455[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[][0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"tx"[0m[1;39m:[0m [0;32m"a4a0852c727e"[0m[1;39m,[0m
[1;34m"ix"[0m[1;39m:[0m [0;39m0[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m3.02562[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[][0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"tx"[0m[1;39m:[0m [0;32m"a4a0852c727e"[0m[1;39m,[0m
[1;34m"ix"[0m[1;39m:[0m [0;39m1[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m1998.658813[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[][0m
[1;39m}[0m
[1;39m][0m
[1;39m}[0m
Run again at the end of the path:
wallet_show "$bob_addr"
Result:
[1;39m{[0m
[1;34m"outputs"[0m[1;39m:[0m [0;39m6[0m[1;39m,[0m
[1;34m"total_ada"[0m[1;39m:[0m [0;39m11993.558311[0m[1;39m,[0m
[1;34m"utxos"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"tx"[0m[1;39m:[0m [0;32m"324032ab04e3"[0m[1;39m,[0m
[1;34m"ix"[0m[1;39m:[0m [0;39m1[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m1999.637594[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[][0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"tx"[0m[1;39m:[0m [0;32m"46aa68223dd2"[0m[1;39m,[0m
[1;34m"ix"[0m[1;39m:[0m [0;39m2[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m1998.822565[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[][0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"tx"[0m[1;39m:[0m [0;32m"5b4e0b56b222"[0m[1;39m,[0m
[1;34m"ix"[0m[1;39m:[0m [0;39m2[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m1998.804843[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[][0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"tx"[0m[1;39m:[0m [0;32m"72818fb4dc42"[0m[1;39m,[0m
[1;34m"ix"[0m[1;39m:[0m [0;39m4[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m2000[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[][0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"tx"[0m[1;39m:[0m [0;32m"72818fb4dc42"[0m[1;39m,[0m
[1;34m"ix"[0m[1;39m:[0m [0;39m5[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m2000[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[][0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"tx"[0m[1;39m:[0m [0;32m"f4442a45f79c"[0m[1;39m,[0m
[1;34m"ix"[0m[1;39m:[0m [0;39m1[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m1996.293309[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[][0m
[1;39m}[0m
[1;39m][0m
[1;39m}[0m
Run again at the end of the path:
curl -fsS "$(koios_url)/tip" | jq '.[0] | {abs_slot, block_no}'
Result:
[1;39m{[0m
[1;34m"abs_slot"[0m[1;39m:[0m [0;39m6372[0m[1;39m,[0m
[1;34m"block_no"[0m[1;39m:[0m [0;90mnull[0m
[1;39m}[0m
Extra: look inside the transactions¶
Run again at the end of the path:
jq '.transactions[] | {effects, deadline}' bundles/fold-dave.bundle
Result:
[1;39m{[0m
[1;34m"effects"[0m[1;39m:[0m [1;39m[[0m
[0;32m"the first output is live holding the token alone"[0m
[1;39m][0m[1;39m,[0m
[1;34m"deadline"[0m[1;39m:[0m [0;39m8658[0m
[1;39m}[0m
Run again at the end of the path:
jq '.submissions[]? | {transaction: .identity, chainPoint, confirmations, claims}' receipts/16a-fold-dave.submitted.json
Result:
[1;39m{[0m
[1;34m"transaction"[0m[1;39m:[0m [0;32m"5b4e0b56b222ab51b27f4ee98836bcf602954104ce0ef0e039fe10324110d704"[0m[1;39m,[0m
[1;34m"chainPoint"[0m[1;39m:[0m [1;39m{[0m
[1;34m"blockHash"[0m[1;39m:[0m [0;32m"270764ee7ce67282958f23d70356b6192f3454f14291b5c16d610392059270fd"[0m[1;39m,[0m
[1;34m"slot"[0m[1;39m:[0m [0;39m6353[0m
[1;39m}[0m[1;39m,[0m
[1;34m"confirmations"[0m[1;39m:[0m [0;39m11[0m[1;39m,[0m
[1;34m"claims"[0m[1;39m:[0m [1;39m[[0m
[0;32m"the first output is live holding the token alone"[0m
[1;39m][0m
[1;39m}[0m
Run again at the end of the path:
for f in receipts/*.json; do [ "$f" = receipts/tx-info.json ] && continue; jq -r --arg f "$f" '.submissions[]? | "\($f) \(.identity) confirmations \(.confirmations)"' "$f"; done
Result:
receipts/04-fold-insert.json 46aa68223dd20e55c4beb3cdb7bdb7a07f52da38b549aaf496f74c0579291886 confirmations 12
receipts/09-fold-terminate.json 1b2eca3c422c20c0194727cbf05adbf24e47cc928cdf93eb4851d938dfdc0549 confirmations 11
receipts/11d-cleanup.json 324032ab04e36abe09da849481c00c20f9405169f375df9dd77c54ce93cc72df confirmations 12
receipts/12-insert-bob.submitted.json f4442a45f79c618fbfe5abde2b8943e1a01a1e41b004e01b1a4d0b9a6b301a8e confirmations 11
receipts/16a-fold-dave.submitted.json 5b4e0b56b222ab51b27f4ee98836bcf602954104ce0ef0e039fe10324110d704 confirmations 11
Run again at the end of the path:
tx=$(jq -r '.submissions[0].identity' receipts/16a-fold-dave.submitted.json)
curl -fsS -X POST "$(koios_url)/tx_info" -H 'content-type: application/json' -d "{\"_tx_hashes\":[\"$tx\"]}" > receipts/tx-info.json
Run again at the end of the path:
jq '.[0] | {tx_hash, block_height, absolute_slot, inputs: [.inputs[] | {from: .payment_addr.bech32[0:16], ada: ((.value|tonumber)/1000000)}], outputs: [.outputs[] | {to: .payment_addr.bech32[0:16], ada: ((.value|tonumber)/1000000), tokens: [.asset_list[].asset_name[0:8]], has_data: (.inline_datum != null)}]}' receipts/tx-info.json
Result:
[1;39m{[0m
[1;34m"tx_hash"[0m[1;39m:[0m [0;32m"5b4e0b56b222ab51b27f4ee98836bcf602954104ce0ef0e039fe10324110d704"[0m[1;39m,[0m
[1;34m"block_height"[0m[1;39m:[0m [0;39m6353[0m[1;39m,[0m
[1;34m"absolute_slot"[0m[1;39m:[0m [0;39m6353[0m[1;39m,[0m
[1;34m"inputs"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"from"[0m[1;39m:[0m [0;32m"addr_test1vqqqkv"[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m2000[0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"from"[0m[1;39m:[0m [0;32m"addr_test1wpnmk5"[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m3[0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"from"[0m[1;39m:[0m [0;32m"addr_test1wpye9y"[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m1.34472[0m
[1;39m}[0m
[1;39m][0m[1;39m,[0m
[1;34m"outputs"[0m[1;39m:[0m [1;39m[[0m
[1;39m{[0m
[1;34m"to"[0m[1;39m:[0m [0;32m"addr_test1wpye9y"[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m1.34472[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[[0m
[0;32m"974b521f"[0m
[1;39m][0m[1;39m,[0m
[1;34m"has_data"[0m[1;39m:[0m [0;39mtrue[0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"to"[0m[1;39m:[0m [0;32m"addr_test1wpnmk5"[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m3[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[[0m
[0;32m"dafb3d3d"[0m
[1;39m][0m[1;39m,[0m
[1;34m"has_data"[0m[1;39m:[0m [0;39mtrue[0m
[1;39m}[0m[1;39m,[0m
[1;39m{[0m
[1;34m"to"[0m[1;39m:[0m [0;32m"addr_test1vqqqkv"[0m[1;39m,[0m
[1;34m"ada"[0m[1;39m:[0m [0;39m1998.804843[0m[1;39m,[0m
[1;34m"tokens"[0m[1;39m:[0m [1;39m[][0m[1;39m,[0m
[1;34m"has_data"[0m[1;39m:[0m [0;39mfalse[0m
[1;39m}[0m
[1;39m][0m
[1;39m}[0m