OIP-12
Listing-Account
We propose the OIP12, which suggests a more scalable solution compared to OIP10. By combining OIP5 and UTXO, performing an inscribe action will result in spending the existing account inscription. However, this approach can lead to double-spend attack issues for Partially Signed Bitcoin Transactions (PSBTs). The OIP12 employs a Dual-Account Enhanced version, which identifies the accounts as "cash account" and "listing account". These two accounts perform different functions during transactions. By having this dual-account mechanism, the protocol will be more scalable, cost-efficient and secure.
Key | Required | Description |
---|---|---|
p | yes | Protocol: orc-20 or orc20 case-insensitive. (OIP-1) For wider adoption, any ordinal tokens supporting ORC-20 implementation (like src-20, xrc-20, including wrapped BRC-20) can be included. |
tick | yes | Ticker: symbol of ORC-20 in any size, eg. ORC = orc |
id | yes | Identifier: inscription number. **Subsequent operations must use inscription number (OIP-3).**eg. initial ORC-20 deployment doesn't require id; but you must specify inscription number of the deployment for subsequent mint, send, migration, and upgrade. |
op | yes | Operation: send event Type of event: eg. deploy, mint, send, cancel. |
n | yes | Nonce: keep track of each partial transaction |
acct | optional | Listing for PSBTs: When the inscription of send event includes "acct": "listing", the balance will go to the listing account. However, without this part of the key included in the inscription, all inscriptions will go to the cash account. |
amt | yes, when sender is not receiver | Send Amount: always set amount If sender is not the receiver; default to the remaining balance when sending back to sender. |
msg | no | Message: custom text, message, manifesto in any size |
Example
Alice has 1,000 $ORC tokens. She plans to list 500 for sale as Partially Signed Bitcoin Transactions (PSBTs).
Step 1: Alice sends an "inscribe-send-listing" inscription with a balance of 500 $ORC to her listing account.
{
"p": "orc-20",
"tick": "orc",
"id": "2504160",
"op": "send",
"n": "5",
"acct": "listing",
"amt": "500"
}
Step 2: Alice inscribes the "send remaining balance" back to her. As a result, Alice has 500 $ORC under "cash account" and 500 $ORC under "listing account".
{
"p": "orc-20",
"tick": "orc",
"id": "2504160",
"op": "send",
"n": "6"
}
Step 3: List Step 1 "inscribe-send-listing" for Partially Signed Bitcoin Transactions (PSBTs), as a result Bob bought 500 $ORC from Alice. The "inscribe-send-listing" will be under Bob' cash account with balance of 500 $ORC.
Redundancies
If Bob did not buy Alice's listing on PSBT and Alice has no further need to sell, she can transfer the "inscribe-send-listing" inscription back to her address. As a result, her listing account balance will be transferred back to her cash account.
Reuse
"Incribe-send-listing" contains the balance while transferring and listing. However, when it was inscribed in the listing account, it can only be listed once. Later, when the "incribe-send-listing" has been transferred to another cash account, either it is to your own account or other people's account, it will be transferred as a valid "incribe-send-listing" in the sense that now the cash account would contain the balance from the "incribe-send-listing" inscription. Under which circumstance, this "incribe-send-listing" inscription can also be reused carrying the balance when it needs to be transferred again. However, to note, the "incribe-send-listing" inscription cannot be listed again once it has been ever transferred to a cash account.