Author: Luca Venturini 2017-09-06 19:25:16
Published on: 2017-09-06T19:25:16+00:00
Luca Venturini has proposed a protocol that uses the Bitcoin blockchain to manage tokens. The protocol allows for semantic layering, which means that bitcoin transactions can be read as operations related to tokens. The protocol enables plausible deniability while allowing stateful public auditability on each issued token. Tokens can be managed using any existing Bitcoin wallet and every operation of the protocol is performed with Bitcoin transactions without the use of OP_RETURN. This means that there is no pollution of the blockchain or the UTXO set. The protocol also permits atomic buy and sell transactions between tokens and Bitcoin, as well as between different types of tokens. Tokens of different types can be held by the same address and by the same output. Tokens can be divided indefinitely, thus having any number of decimals, and can be issued automatically on receiving bitcoins. Token type can have multiple names, including an alternative name which is the hash of the first transaction that issued the token. A token can also be identified using only the first characters of the Bitcoin address if the characters are different from every previous Bitcoin address seen in the blockchain.In a basic use case scenario, Alice, Bob, Charlie, and Daniel decide to start a new company where everyone contributes to the company with a percentage of value. They issue tokens, and every shareholder can freely resell their shares to others. The issuance remains open, but it is decided to close it by sending bitcoins from Alice's wallet to addresses of her same wallet, using the change output of the previous transaction as an input. Later, Bob decides to give some shares of the company to his husband Giacomo, and a new transaction is generated that spends the output of the issuance transaction. This transaction gives 8 shares of the company to Giacomo. Daniel wants to sell 3 of his 14 shares to Frank, and they decide to make an atomic transaction, where Frank pays 0.00969600 bitcoins to Daniel and receives three shares. The transaction sends three tokens from Daniel to Frank, along with other outputs.The protocol behavior is explained based on the structure of the sorted outputs of a bitcoin transaction. The number of tokens generated by an issuance transaction is always the sum of the signals of all the outputs, and the power to generate other tokens of the same issuance lies with the last output. Every Bitcoin transaction spends all the tokens' content of the inputs and sends them to the outputs. A transaction can be seen as having one of the three shapes, and tokens are assigned to outputs based on their signal and remaining tokens. The protocol is designed such that a transaction of an issuance chain never issues new tokens to an output that receives the POC of the same type of token.The document describes the transaction format for issuance and transfer of tokens, including those generated from split and join transactions. It explains how the outputs of a transaction determine who receives the tokens and how to assign remaining tokens to a cut output. Furthermore, it outlines the process of token offering issuance transactions, including setting predefined prices and rates and issuing tokens at different prices through multiple issuance transactions. The document also introduces the concept of atomic exchange transactions, where tokens and bitcoins can be exchanged simultaneously in a single transaction.The cross-token atomic transactions allow for the exchange of tokens between two parties, even if they are of different values. The transaction is made through signaling with the first output the number of tokens that should be paid to the other party. The inputs and outputs of the transaction are detailed, with an explanation of how to separate different types of tokens. Guidelines are provided on how to manage tokens using any existing wallet without the need for technical knowledge of the rest of the protocol. These guidelines are based on the use of a "consolidated" wallet, which contains only one output at any given time. The issuance of tokens is explained, including how to generate new tokens, give the power to generate new tokens to another person, and close an issuance. In order to spend bitcoins from the wallet without sending any tokens, the user should spend less than half of the bitcoin value contained in the wallet. To send tokens to another person, the user must consolidate the wallet, then send a value less than half of the content of the wallet while having the number of satoshis where the last five digits are the number of tokens that need to be transferred. There are technical notes on the limitations of a consolidated wallet, such as the need to recharge the wallet by sending some bitcoins to it, leading to more than one UTXO in the wallet and the need to consolidate again. A reference implementation will be included when the protocol is reviewed and accepted by the community.
Updated on: 2023-06-12T18:10:51.824860+00:00