{ "$schema": "https://libauth.org/schemas/wallet-template-v0.schema.json", "name": "Wallet (P2PKH)", "description": "A standard single-factor wallet template that uses Pay-to-Public-Key-Hash (P2PKH) locking scripts.", "icon": "wallet", "version": 0, "supported": ["BCH_2023_05", "BCH_2024_05", "BCH_2025_05", "BCH_2026_05"], "roles": { "owner": { "name": "Wallet Owner", "description": "The party who can spend from this wallet.", "icon": "owner" }, "receiver": { "name": "Receiver", "description": "A party that is receiving value.", "icon": "receiver" }, "sender": { "name": "Sender", "description": "A party that is sending value.", "icon": "sender" } }, "start": [ { "action": "receive", "role": "receiver" }, { "action": "requestSatoshis", "role": "receiver" }, { "action": "requestFungibleTokens", "role": "receiver" }, { "action": "requestNonfungibleTokens", "role": "receiver" } ], "actions": { "receive": { "name": "Receive", "description": "Receive an unspecified amount of cash and/or tokens from one or more senders.", "icon": "receive", "roles": { "receiver": { "name": "Receive", "description": "Receive an unspecified amount of cash and/or tokens from one or more senders.", "icon": "receive", "requirements": { "generate": ["ownerKey"] } }, "sender": { "name": "Send", "description": "Send an unspecified amount of cash and/or tokens to the provided receiver.", "icon": "send" } }, "requirements": { "roles": [ { "role": "receiver", "slots": { "min": 1, "max": 1 } }, { "role": "sender", "slots": { "min": 1 } } ], "variables": ["requestedSatoshis"] }, "transaction": "receiveTransaction" }, "requestSatoshis": { "name": "Request Satoshis", "description": "Requests a specific amount of Bitcoin Cash from one or more senders.", "icon": "request", "roles": { "receiver": { "name": "Request Satoshis", "description": "Requests a specific amount of Bitcoin Cash from one or more senders.", "icon": "request", "requirements": { "generate": ["ownerKey"], "variables": ["requestedSatoshis"] } }, "sender": { "name": "Send", "description": "Send a specific amount of Bitcoin Cash to the provided receiver.", "icon": "send" } }, "requirements": { "roles": [ { "role": "receiver", "slots": { "min": 1, "max": 1 } }, { "role": "sender", "slots": { "min": 1 } } ] }, "transaction": "requestSatoshisTransaction" }, "requestFungibleTokens": { "name": "Request Fungible Tokens", "description": "Requests a specific amount of a fungible tokens from one or more senders.", "icon": "request", "roles": { "receiver": { "name": "Request Fungible Tokens", "description": "Requests a specific amount of a fungible tokens from one or more senders.", "icon": "request", "requirements": { "generate": ["ownerKey"], "variables": ["requestedTokenCategory", "requestedTokenAmount"] } }, "sender": { "name": "Send", "description": "Send a specific amount of fungible tokens to the provided receiver.", "icon": "send" } }, "requirements": { "roles": [ { "role": "receiver", "slots": { "min": 1, "max": 1 } }, { "role": "sender", "slots": { "min": 1 } } ] }, "transaction": "requestFungibleTokensTransaction" }, "requestNonfungibleTokens": { "name": "Request a Non-fungible Token", "description": "Requests a non-fungible token from one or more senders.", "icon": "request", "roles": { "receiver": { "name": "Request a Non-fungible Token", "description": "Requests a non-fungible token from one or more senders.", "icon": "request", "requirements": { "generate": ["ownerKey"], "variables": [ "requestedTokenCategory", "requestedTokenCapability", "requestedTokenCommitment" ] } }, "sender": { "name": "Send", "description": "Send a non-fungible token to the provided receiver.", "icon": "send" } }, "requirements": { "roles": [ { "role": "receiver", "slots": { "min": 1, "max": 1 } }, { "role": "sender", "slots": { "min": 1 } } ] }, "transaction": "requestNonfungibleTokensTransaction" }, "sendSatoshis": { "name": "Send Satoshis", "description": "Sends a specific amount of Bitcoin Cash to a given recipient.", "icon": "send", "roles": { "sender": { "requirements": { "variables": ["transferredSatoshis", "recipientLockingscript"], "secrets": ["ownerKey"] } } }, "requirements": { "roles": [{ "role": "sender", "slots": { "min": 1, "max": 1 } }] }, "condition": "$(OP_INPUTINDEX OP_UTXOVALUE OP_GREATERTHAN)", "transaction": "transferSatoshisTransaction" }, "sendFungibleTokens": { "name": "Send Fungible Tokens", "description": "Send a specific amount of a fungible token to a given recipient.", "icon": "send", "roles": { "sender": { "requirements": { "variables": [ "transferredTokenCategory", "transferredTokenAmount", "recipientLockingscript" ], "secrets": ["ownerKey"] } } }, "requirements": { "roles": [{ "role": "sender", "slots": { "min": 1, "max": 1 } }] }, "condition": "$(OP_INPUTINDEX OP_UTXOTOKENAMOUNT <0> OP_GREATERTHAN)", "transaction": "transferFungibleTokensTransaction" }, "sendNonfungibleTokens": { "name": "Send a Non-fungible Token", "description": "Send a non-fungible token to a given recipient.", "icon": "send", "roles": { "sender": { "requirements": { "variables": [ "transferredTokenCategory", "transferredTokenCapability", "transferredTokenCommitment", "recipientLockingscript" ], "secrets": ["ownerKey"] } } }, "requirements": { "roles": [{ "role": "sender", "slots": { "min": 1, "max": 1 } }] }, "condition": "$(OP_INPUTINDEX OP_UTXOTOKENCATEGORY OP_SIZE OP_NIP <32> OP_GREATERTHAN)", "transaction": "transferNonfungibleTokensTransaction" }, "burnFungibleTokens": { "name": "Delete Fungible Tokens", "description": "Permanently and irreversibly deletes one or more fungible tokens.", "icon": "burn", "roles": { "owner": { "requirements": { "variables": ["burnedTokenCategory", "burnedTokenAmount"], "secrets": ["ownerKey"] } } }, "requirements": { "roles": [{ "role": "owner", "slots": { "min": 1, "max": 1 } }] }, "condition": "$(OP_INPUTINDEX OP_UTXOTOKENAMOUNT <0> OP_GREATERTHAN)", "transaction": "burnFungibleTokensTransaction" }, "burnNonfungibleTokens": { "name": "Delete a Non-fungible Token", "description": "Permanently and irreversibly deletes one non-fungible token.", "icon": "burn", "roles": { "owner": { "requirements": { "variables": [ "burnedTokenCategory", "burnedTokenCapability", "burnedTokenCommitment" ], "secrets": ["ownerKey"] } } }, "requirements": { "roles": [{ "role": "owner", "slots": { "min": 1, "max": 1 } }] }, "condition": "$(OP_INPUTINDEX OP_UTXOTOKENCATEGORY OP_SIZE OP_NIP <32> OP_GREATERTHAN)", "transaction": "burnNonfungibleTokenTransaction" }, "sign": { "name": "Sign Message", "description": "Signs a provided message using the Bitcoin message signing protocol.", "icon": "sign", "roles": { "owner": { "requirements": { "variables": ["messageToSign"], "secrets": ["ownerKey"] } } }, "requirements": { "roles": [{ "role": "owner", "slots": { "min": 1, "max": 1 } }] }, "data": ["messageSignature"] }, "verify": { "name": "Verify Message Signature", "description": "Verifies a provided message signature according to the Bitcoin message signing protocol.", "icon": "verify", "roles": { "owner": { "requirements": { "variables": ["messageSignature", "messageToVerify"], "secrets": ["ownerKey"] } } }, "requirements": { "roles": [{ "role": "owner", "slots": { "min": 1, "max": 1 } }] }, "data": ["messageSignatureValidity"] } }, "data": { "messageSignature": { "value": "$( OP_CAT )", "type": "bytes", "hint": "signature" }, "messageSignatureValidity": { "value": "$( OP_CAT OP_CHECKDATASIG)", "type": "integer", "hint": "script_boolean" } }, "transactions": { "receiveTransaction": { "name": "Transfer request", "description": "Transfer request for an unspecified amount of cash and/or tokens.", "icon": "request", "roles": { "receiver": { "name": "Received", "description": "Received an unspecified amount of cash and/or tokens.", "icon": "receive" }, "sender": { "name": "Sent", "description": "Sent an unspecified amount of cash and/or tokens.", "icon": "send" } }, "inputs": [], "outputs": [{ "output": "receiveOutput" }], "version": 2, "locktime": 0, "composable": true }, "requestSatoshisTransaction": { "name": "Transfer request", "description": "Transfer request for $() satoshis.", "icon": "request", "roles": { "receiver": { "name": "Received", "description": "Received $() satoshis.", "icon": "receive" }, "sender": { "name": "Sent", "description": "Sent $() satoshis.", "icon": "send" } }, "inputs": [], "outputs": [{ "output": "requestSatoshisOutput" }], "version": 2, "locktime": 0, "composable": true }, "requestFungibleTokensTransaction": { "name": "Transfer request", "description": "Transfer request for $( OP_DIV).$( OP_MOD) $() tokens.", "icon": "request", "roles": { "receiver": { "name": "Received", "description": "Received $( OP_DIV).$( OP_MOD) $() tokens.", "icon": "receive" }, "sender": { "name": "Sent", "description": "Sent $( OP_DIV).$( OP_MOD) $() tokens.", "icon": "send" } }, "inputs": [], "outputs": [{ "output": "requestFungibleTokensOutput" }], "version": 2, "locktime": 0, "composable": true }, "requestNonfungibleTokensTransaction": { "name": "Transfer request", "description": "Transfer request for one non-fungible $( <0x02> OP_EQUAL OP_IF <\"minting\"> OP_ELSE <0x01> OP_EQUAL OP_IF <\"mutable\"> OP_ELSE <\"immutable\"> OP_ENDIF OP_ENDIF) () token, with $() commitment.", "icon": "request", "roles": { "receiver": { "name": "Received", "description": "Received one non-fungible $( <0x02> OP_EQUAL OP_IF <\"minting\"> OP_ELSE <0x01> OP_EQUAL OP_IF <\"mutable\"> OP_ELSE <\"immutable\"> OP_ENDIF OP_ENDIF) () token, with $() commitment.", "icon": "receive" }, "sender": { "name": "Sent", "description": "Sent the requested non-fungible $( <0x02> OP_EQUAL OP_IF <\"minting\"> OP_ELSE <0x01> OP_EQUAL OP_IF <\"mutable\"> OP_ELSE <\"immutable\"> OP_ENDIF OP_ENDIF) () token, with $() commitment.", "icon": "send" } }, "inputs": [], "outputs": [{ "output": "requestNonfungibleTokensOutput" }], "version": 2, "locktime": 0, "composable": true }, "transferSatoshisTransaction": { "name": "Satoshis Transferred", "description": "$() satoshis were transferred to a recipient.", "icon": "send", "roles": { "receiver": { "name": "Received", "description": "Received $() satoshis.", "icon": "receive" }, "sender": { "name": "Sent", "description": "Sent $() satoshis.", "icon": "send" } }, "inputs": [], "outputs": [{ "output": "transferSatoshisOutput" }], "version": 2, "locktime": 0, "composable": true }, "transferFungibleTokensTransaction": { "name": "Fungible Tokens Transferred", "description": "$( OP_DIV).$( OP_MOD) $() tokens were transferred to a recipient.", "icon": "send", "roles": { "receiver": { "name": "Received", "description": "Received $( OP_DIV).$( OP_MOD) $() tokens.", "icon": "receive" }, "sender": { "name": "Sent", "description": "Sent $( OP_DIV).$( OP_MOD) $() tokens.", "icon": "send" } }, "inputs": [], "outputs": [{ "output": "transferFungibleTokensOutput" }], "version": 2, "locktime": 0, "composable": true }, "transferNonfungibleTokensTransaction": { "name": "Non-fungible Token Transferred", "description": "One non-fungible $( <0x02> OP_EQUAL OP_IF <\"minting\"> OP_ELSE <0x01> OP_EQUAL OP_IF <\"mutable\"> OP_ELSE <\"immutable\"> OP_ENDIF OP_ENDIF) $() token was transferred to a recipient, with $() commitment.", "icon": "send", "roles": { "receiver": { "name": "Received", "description": "Received one non-fungible $( <0x02> OP_EQUAL OP_IF <\"minting\"> OP_ELSE <0x01> OP_EQUAL OP_IF <\"mutable\"> OP_ELSE <\"immutable\"> OP_ENDIF OP_ENDIF) () token, with $() commitment.", "icon": "receive" }, "sender": { "name": "Sent", "description": "Sent one non-fungible $( <0x02> OP_EQUAL OP_IF <\"minting\"> OP_ELSE <0x01> OP_EQUAL OP_IF <\"mutable\"> OP_ELSE <\"immutable\"> OP_ENDIF OP_ENDIF) () token, with $() commitment.", "icon": "send" } }, "inputs": [], "outputs": [{ "output": "transferNonfungibleTokenOutput" }], "version": 2, "locktime": 0, "composable": true }, "burnFungibleTokensTransaction": { "name": "Deleted fungible tokens", "description": "Permanently and irreversibly deleted $( OP_DIV).$( OP_MOD) $() tokens.", "icon": "burn", "inputs": [{ "input": "burnFungibleTokensInput" }], "outputs": [], "version": 2, "locktime": 0, "composable": true }, "burnNonfungibleTokenTransaction": { "name": "Deleted non fungible token", "description": "Permanently and irreversibly deleted a non-fungible $( <0x02> OP_EQUAL OP_IF <\"minting\"> OP_ELSE <0x01> OP_EQUAL OP_IF <\"mutable\"> OP_ELSE <\"immutable\"> OP_ENDIF OP_ENDIF) () token, with $() commitment.", "icon": "burn", "inputs": [{ "input": "burnNonfungibleTokenInput" }], "outputs": [], "version": 2, "locktime": 0, "composable": true } }, "outputs": { "receiveOutput": { "name": "Recipient output", "description": "Transferred an unspecified amount of cash and/or tokens to a recipient.", "icon": "receive", "roles": { "receiver": { "name": "Received", "description": "Received an unspecified amount of cash and/or tokens." }, "sender": { "name": "Sent", "description": "Sent an unspecified amount of cash and/or tokens." } }, "lockscript": "receivingLockingScript" }, "requestSatoshisOutput": { "name": "Recipient output", "description": "Transferred $() satoshis to a recipient.", "icon": "request", "roles": { "receiver": { "name": "Received", "description": "Received $() satoshis." }, "sender": { "name": "Sent", "description": "Sent $() satoshis." } }, "lockscript": "receivingLockingScript", "valueSatoshis": "$()", "token": null }, "requestFungibleTokensOutput": { "name": "Recipient output", "description": "Transferred $( OP_DIV).$( OP_MOD) $() tokens to a recipient.", "icon": "request", "roles": { "receiver": { "name": "Received", "description": "Received $( OP_DIV).$( OP_MOD) $() tokens." }, "sender": { "name": "Sent", "description": "Sent $( OP_DIV).$( OP_MOD) $() tokens." } }, "lockscript": "receivingLockingScript", "valueSatoshis": "1000", "token": { "category": "$()", "amount": "$()", "nft": null } }, "requestNonfungibleTokensOutput": { "name": "Recipient output", "description": "Transferred one non-fungible $( <0x02> OP_EQUAL OP_IF <\"minting\"> OP_ELSE <0x01> OP_EQUAL OP_IF <\"mutable\"> OP_ELSE <\"immutable\"> OP_ENDIF OP_ENDIF) $() token to a recipient, with $() commitment.", "icon": "request", "roles": { "receiver": { "name": "Received", "description": "Received one non-fungible $( <0x02> OP_EQUAL OP_IF <\"minting\"> OP_ELSE <0x01> OP_EQUAL OP_IF <\"mutable\"> OP_ELSE <\"immutable\"> OP_ENDIF OP_ENDIF) $() token, with $() commitment." }, "sender": { "name": "Sent", "description": "Sent the requested non-fungible $( <0x02> OP_EQUAL OP_IF <\"minting\"> OP_ELSE <0x01> OP_EQUAL OP_IF <\"mutable\"> OP_ELSE <\"immutable\"> OP_ENDIF OP_ENDIF) $() token, with $() commitment." } }, "lockscript": "receivingLockingScript", "valueSatoshis": "1000", "token": { "category": "$()", "amount": null, "nft": { "capability": "$()", "commitment": "$()" } } }, "transferSatoshisOutput": { "name": "Recipient output", "description": "Transferred $() satoshis to a recipient.", "icon": "send", "roles": { "receiver": { "name": "Received", "description": "Received $() satoshis." }, "sender": { "name": "Sent", "description": "Sent $() satoshis." } }, "lockscript": "sendingLockingscript", "valueSatoshis": "$()" }, "transferFungibleTokensOutput": { "name": "Recipient output", "description": "Transferred $( OP_DIV).$( OP_MOD) $() tokens to a recipient.", "icon": "send", "roles": { "receiver": { "name": "Received", "description": "Received $( OP_DIV).$( OP_MOD) $() tokens." }, "sender": { "name": "Sent", "description": "Sent $( OP_DIV).$( OP_MOD) $() tokens." } }, "lockscript": "sendingLockingscript", "token": { "category": "$()", "amount": "$()" } }, "transferNonfungibleTokenOutput": { "name": "Recipient output", "description": "Transferred one non-fungible $( <0x02> OP_EQUAL OP_IF <\"minting\"> OP_ELSE <0x01> OP_EQUAL OP_IF <\"mutable\"> OP_ELSE <\"immutable\"> OP_ENDIF OP_ENDIF) $() token to a recipient, with $() commitment.", "icon": "send", "roles": { "receiver": { "name": "Received", "description": "Received one non-fungible $( <0x02> OP_EQUAL OP_IF <\"minting\"> OP_ELSE <0x01> OP_EQUAL OP_IF <\"mutable\"> OP_ELSE <\"immutable\"> OP_ENDIF OP_ENDIF) $() token, with $() commitment." }, "sender": { "name": "Sent", "description": "Sent one non-fungible $( <0x02> OP_EQUAL OP_IF <\"minting\"> OP_ELSE <0x01> OP_EQUAL OP_IF <\"mutable\"> OP_ELSE <\"immutable\"> OP_ENDIF OP_ENDIF) $() token, with $() commitment." } }, "lockscript": "sendingLockingscript", "token": { "category": "$()", "nft": { "capability": "$()", "commitment": "$()" } } } }, "inputs": { "burnFungibleTokensInput": { "name": "Deleted fungible tokens", "description": "Permanently and irreversibly deleted $() $().", "icon": "burn", "unlockingScript": "unlockP2PKH", "token": { "category": "$()", "amount": "$( OP_GREATERTHANOREQUAL OP_IF OP_ENDIF)" }, "omitChangeAmounts": { "fungibleTokens": "${}" } }, "burnNonfungibleTokenInput": { "name": "Deleted non-fungible token", "description": "Permanently and irreversibly burned one non-fungible $( <0x02> OP_EQUAL OP_IF <\"minting\"> OP_ELSE <0x01> OP_EQUAL OP_IF <\"mutable\"> OP_ELSE <\"immutable\"> OP_ENDIF OP_ENDIF) token of category $(), with a $() commitment.", "icon": "burn", "unlockingScript": "unlockP2PKH", "token": { "category": "$()", "nft": { "capability": "$()", "commitment": "$()" } }, "omitChangeAmounts": { "nonfungibleTokens": 1 } } }, "lockingScripts": { "sendingLockingscript": { "name": "Sent", "description": "Funds sent to an external recipient", "icon": "address", "lockingType": "standard", "lockingScript": "lockToRecipient", "actions": [], "state": [], "secrets": [], "balance": false, "selectable": false, "privacy": false }, "receivingLockingScript": { "name": "Received", "description": "Funds received without wallet coordination.", "icon": "address", "lockingType": "standard", "lockingScript": "lockP2PKH", "unlockingScript": "unlockP2PKH", "roles": { "receiver": { "state": { "variables": [], "secrets": ["ownerKey"] }, "actions": [ { "action": "sign", "role": "owner", "secrets": ["ownerKey"] }, { "action": "verify", "role": "owner", "secrets": ["ownerKey"] }, { "action": "sendSatoshis", "role": "sender", "secrets": ["ownerKey"] }, { "action": "sendFungibleTokens", "role": "sender", "secrets": ["ownerKey"] }, { "action": "sendNonfungibleTokens", "role": "sender", "secrets": ["ownerKey"] }, { "action": "burnFungibleTokens", "role": "sender", "secrets": ["ownerKey"] }, { "action": "burnNonfungibleTokens", "role": "sender", "secrets": ["ownerKey"] } ], "balance": { "satoshis": true, "fungibleTokens": true }, "selectable": true, "privacy": false } } } }, "scripts": { "lockP2PKH": "OP_DUP OP_HASH160 <$( OP_HASH160)> OP_EQUALVERIFY OP_CHECKSIG", "unlockP2PKH": " ", "lockToRecipient": "" }, "constants": { "dustLimit": { "name": "Dust Limit", "description": "Standard required minimum satoshis for Pay to Public Key Hash outputs.", "type": "integer", "value": 546 }, "messagePrefix": { "name": "Message Prefix", "description": "Standard message prefix used in the bitcoin signed message protocol.", "type": "bytes", "value": "0x18426974636f696e205369676e6564204d6573736167653a0a" } }, "variables": { "ownerKey": { "name": "Owners Private Key", "description": "The private key used to authorize spending of received funds.", "type": "bytes", "hint": "private_key" }, "messageToSign": { "name": "Message", "description": "The text message to sign.", "type": "string" }, "messageToVerify": { "name": "Message", "description": "The text message to verify.", "type": "string" }, "messageSignature": { "name": "Message Signature", "description": "The signature for the message.", "type": "bytes", "hint": "signature" }, "requestedSatoshis": { "name": "Requested Amount", "description": "The Bitcoin Cash amount requested", "type": "integer", "hint": "satoshis" }, "requestedTokenCategory": { "name": "Requested Token Category", "description": "The token category requested", "type": "bytes", "hint": "token_category" }, "requestedTokenAmount": { "name": "Requested Token Amount", "description": "The fungible token amount requested", "type": "integer", "hint": "token_amount" }, "requestedTokenCapability": { "name": "Requested Token Capability", "description": "The non-fungible token capability requested", "type": "bytes", "hint": "token_capability" }, "requestedTokenCommitment": { "name": "Requested Token Commitment", "description": "The non-fungible token commitment requested", "type": "bytes", "hint": "token_commitment" }, "transferredTokenCategory": { "name": "Sending Token Category", "description": "The token category of the token(s) to send", "type": "bytes", "hint": "token_category" }, "transferredTokenAmount": { "name": "Sending Token Amount", "description": "The fungible token amount to send", "type": "integer", "hint": "token_amount" }, "transferredTokenCapability": { "name": "Sending Token Capability", "description": "The token capability for the non-fungible token to send", "type": "bytes", "hint": "token_capability" }, "transferredTokenCommitment": { "name": "Sending Token Commitment", "description": "The token commitment for the non-fungible token to send", "type": "bytes", "hint": "token_commitment" }, "burnedTokenCategory": { "name": "Deleted Token Category", "description": "The token category of the token(s) to delete", "type": "bytes", "hint": "token_category" }, "burnedTokenAmount": { "name": "Deleted Token Amount", "description": "The fungible token amount to delete", "type": "integer", "hint": "token_amount" }, "burnedTokenCapability": { "name": "Deleted Token Capability", "description": "The token capability for the non-fungible token to delete", "type": "bytes", "hint": "token_capability" }, "burnedTokenCommitment": { "name": "Deleted Token Commitment", "description": "The token commitment for the non-fungible token to delete", "type": "bytes", "hint": "token_commitment" } }, "icons": [ { "name": "wallet", "hash": "0000000000000000000000" }, { "name": "owner", "hash": "0000000000000000000000" }, { "name": "sender", "hash": "0000000000000000000000" }, { "name": "address", "hash": "0000000000000000000000" }, { "name": "receive", "hash": "0000000000000000000000" }, { "name": "request", "hash": "0000000000000000000000" }, { "name": "send", "hash": "0000000000000000000000" }, { "name": "burn", "hash": "0000000000000000000000" }, { "name": "sign", "hash": "0000000000000000000000" }, { "name": "verify", "hash": "0000000000000000000000" } ], "scenarios": [ { "name": "requesting satoshis", "description": "happy-path evaluation for requesting satoshis.", "action": "requestSatoshis", "roles": [ { "role": "receiver", "values": { "generated": { "ownerKey": "KyRQa5pEXuzVcDwnXRLpYAascjchQW5DoxVRMbj4DTxS83573mz8" }, "variables": { "requestedSatoshis": 2000 }, "secrets": {}, "inputs": [], "outputs": [ { "lockingBytecode": "76a91475c715ecb74178fe87933e57e947e5e92d904b8188ac", "valueSatoshis": 2000 } ] } }, { "role": "sender", "values": { "generated": {}, "variables": {}, "secrets": {}, "inputs": [ { "outpointTransactionHash": "4ef28553a31a266719e66ba97fee3aeecd6d1788f7ff6ab12f8ebceda49660c0", "outpointIndex": 0, "sequenceNumber": 0, "unlockingBytecode": "41226b2be7c2890c8bbde2f79e79640e56d866843f2e822ec51c469019d13db04a422c9ee49f5eefd26fee24e91910edbbb032b90cc54c34da80a61e69b0ee3d22412103e7ab26c36a7c7f45b2c26f33c08b0fa43a633268700f47216646d4cb37ae5696" } ], "outputs": [ { "lockingBytecode": "76a91475c715ecb74178fe87933e57e947e5e92d904b8188ac", "valueSatoshis": 2000 } ] } } ], "values": { "generated": {}, "variables": {}, "secrets": {} }, "outcome": { "roles": { "receiver": { "name": "Request", "description": "Requested a specific amount of satoshis from one or more senders.", "icon": "request" }, "sender": { "name": "Send", "description": "Sent a specific amount of satoshis to the provided receiver.", "icon": "send" } }, "transactions": [ { "transaction": "0200000001c06096a4edbc8e2fb16afff788176dcdee3aee7fa96be61967261aa35385f24e000000006441226b2be7c2890c8bbde2f79e79640e56d866843f2e822ec51c469019d13db04a422c9ee49f5eefd26fee24e91910edbbb032b90cc54c34da80a61e69b0ee3d22412103e7ab26c36a7c7f45b2c26f33c08b0fa43a633268700f47216646d4cb37ae5696000000000267530300000000001976a91475c715ecb74178fe87933e57e947e5e92d904b8188acd0070000000000001976a91475c715ecb74178fe87933e57e947e5e92d904b8188ac00000000", "value": "" } ] } } ] }