Skip to content
On this page

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.

KeyRequiredDescription
pyesProtocol: 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.
tickyesTicker: symbol of ORC-20 in any size, eg. ORC = orc
idyesIdentifier: 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.
opyesOperation: send event Type of event: eg. deploy, mint, send, cancel.
nyesNonce: keep track of each partial transaction
acctoptionalListing 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.
amtyes, when sender is not receiverSend Amount: always set amount If sender is not the receiver; default to the remaining balance when sending back to sender.
msgnoMessage: 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.