Contract Transfers
In this section we will be guided through a step by steps RGB Contract Transfer operation, again with the cooperation of our cryptographic couple: Alice and Bob. We will also provide some coding sections of both our characters, which uses the rgb
Command Line Interface Tool which can be installed from the dedicated RGB library.
Let consider the case of Bob, who owns a Bitcoin wallet but has not yet started using RGB technology.
To begin operating with RGB protocol, Bob must install an RGB wallet and add a contract to it. This startup process involves installing the RGB wallet software, which usually, by default, contains no contracts. The RGB wallet software, in addition, require the ability to interact with Bitcoin UTXO through a Bitcoin wallet and a Bitcoin Blockchain node tool (a full node or an Electrum Server). These tools are a mandatory requirement because, as we learned previously, owned states are defined over Bitcoin UTXO and represent a necessary item for state transitions implementing transfer of contract in RGB.
Then, Bob has the task of acquiring the necessary information about the contracts. These data, in RGB ecosystem, can be sourced through various channels, such as specific websites, e-mails, or Telegram messages etc, following the contract issuer's choice. These data are distributed using a contract consignment which is data package containing Genesis, Schema, Interface and Interface Implementation.
Each of these parts, usually, consists of as little as 200 bytes of data, meaning a consignment is typically on the order of a few KiBs. The contract consignment can also be encoded in Base58 format and sent in a format similar to that of a PGP key or as a QR code. These kind of formats In the future will also easily adaptable to censorship-resistant transmission media such as Nostr, through the use of relay servers, or over the Lightning Network.
At this regards, it's useful to point out that the RGB ecosystem fosters innovation and competition among various wallets by allowing the freedom to propose new methods of contract interaction and transfer. This openness to experimentation and the adoption of new technologies, such as decentralized, censorship-resistant networks, promises to further enrich the capabilities offered by RGB.
Once a contract is obtained in consignment format, Bob is able to import it in his RGB wallet and validate the data contained herein. The next thing he can do, is to find someone possessing the contract / asset he is interested to receive in his wallet. In our example, Alice possesses the asset in hes wallet. So, similarly to Bitcoin Transaction they can setup an RGB Transfer. The mechanism for discovering stakeholders who have owned state in the contract, such as Alice, remains up to the receiving party, just as the process for discovering who can pay in Bitcoin.
In order to initiate a transition, Bob must act first. It does so by issuing an invoice which call the specific transfer method encoded in the Schema of the contract and which he will hand over to Alice. This invoice generation, which precede the effective asset transfer, guarantee that the invoice contains all the relevant instruction needed by Alice to make the transfer, containing in particular Bob's UTXO derived from his Bitcoin wallet encoded in blinded form. To generate the Invoice to be handled to Alice, he can use the
rgb
command line tool issuing requesting e.g. over interfaceRGB20
100 USDT, which will be assigned to one of his UTXO identified byTxid
and:vout
using Tapret form, by typing the following code:
Alice, who has both a Bitcoin wallet and an RGB wallet with a stash of client-side validated data, receive the Invoice from Bob, which appears to be a string like this:
rgb:2WBcas9-yjzEvGufY-9GEgnyMj7-beMNMWA8r-sPHtV1nPU-TMsGMQX/RGB20/100 +utxob:egXsFnw-5Eud7WKYn-7DVQvcPbc-rR69YmgmG-veacwmUFo-uMFKFb
, where Bob's UTXO has been blinded automatically in the generation process.
First, Alice prepares a PSBT transaction which spends the UTXO containing the seal definition which assign the ownership of the RGB asset to her. The following represent the generic shell command of a wallet utility in order to construct the transaction which will be modified later:
Alice, through shell command, is now able to generate terminal consignment
consignment.rgb
that contains, according to the instruction of Bob's<invoice>
:The final RGB state transition client-side data.
The history of state transitions since contract genesis and contained in validated form in Alice's stash.
The unsigned version of the witness transaction, elaborated from the
tx.psbt
file, which:Spend Alice's single-use seal related to the asset being transferred.
Contains in some first Opret / Tapret output the DBC commitment related to the state transition to Bob, in addition to necessary "blank" state transitions if some additional assets where defined on the same single-use seal being spent by Alice.
This terminal transfer consignment, obviously larger than a contract consignment because of the inclusion of the entire history of the asset, is then forwarded to Bob, even though the related witness transition has not yet been broadcasted into the Bitcoin P2P Network.
Bob, at this point, using the
rgb accept
command proceed at validating the transfer consignment. If the validation is successful:Adds all the data to his stash.
Produce a signature of the validation process.
After verifying the data contained in the transfer consignment handed over by Alice, Bob may optionally send to Alice the produced signature
sig:
to Alice, in a so called payslip, which confirm her that Bob:Agrees on the validity of the client-side validated data included in the consignment.
Agrees that the witness transaction shall be published.
Alice, by receiving the payslip:
May validate Bob's signature.
Publishes the witness transaction contained in the modified
tx.psbt
file using her wallet tool.
Once published, the witness transaction represent the conclusion of the transfer between Alice and Bob.
The following diagram represent a summary of all the operation just described:
Finally, the following diagram show an example of transfer interaction between the various element of RGB technology stack composed of RGB wallets, RGB nodes and Electrum Server.
Features of RGB Transfers
The approach adopted by RGB in transferring consignments between parties, as illustrated in the Alice and Bob example, underscores the significance of privacy and security.
In the ideal case no one other than Bob and Alice is in possession of the consignment and witness transaction. Nonetheless, Bob has all the elements to verify the validity of the consignment by comparing it with the various anchors on the Bitcoin Blockchain. Bob's stash status is consequently updated through this consignment decomposition and validation procedure. In practical transfer cases, Alice may publish the witness transaction to be included in the blockchain only when some events have occurred, such as, for example, the transfer of some object from Bob.
At this regard, it's useful to point out that the RGB system offers a significant advantage over other digital exchange methods, especially when it comes to complex operations such as atomic swaps. Atomic swaps, commonly used in various cryptocurrency networks, such as the Lightning network, can present complications. Typically, they require two separate transactions and the use of a hash code to ensure that both parties complete the swap almost simultaneously. This process can create a situation where one party has the power to influence the timing of the exchange by revealing or withholding the hash code, which is known as the reverse American call option problem.
RGB simplifies this issue considerably. Instead of requiring two separate transactions, RGB allows the direct exchange of one asset against another (e.g., Bitcoin against an RGB asset or an RGB asset against another RGB asset) within a single transaction. This eliminates the need for a hash code, as both assets can be exchanged directly. If an exchange involves Bitcoin and RGB assets, both can be included in the same witness transaction output, making the process more direct and secure.
In addition, RGB introduces a mechanism that allows both parties to have complete control over the execution of the transaction. If the transaction is not published, both parties have the option to do so, ensuring that neither can take advantage at the expense of the other. If both parties fail to publish, the original inputs can be spent again, rendering the transaction invalid. This approach offers a higher level of security and flexibility than traditional methods, while simplifying the exchange process.
Last updated