Introduction to IL2 Assets

### Features - **IL2 Assets** is a practical implementation of the **IL2 Asset Control Protocol** based on the original proposal found in the original IL2 Whitepaper; - It has been adapted from the original concept to be: - Easier to use; - More suitable to be used as a backend for financial institutions; - Allow user wallets to be under the custody of a parent organization (optional); - Implement techniques to improve performance over a pure P2P implementation;
### What is IL2 Assets - Ability to control multiple assets that may or may not be associated to a given real-world value; - All transaction information is fully auditable and immutable; - Ability to link asset definitions with on-chain documents and references;
### What is IL2 Assets (cont.) - Asset behavior defined by properties instead imperative rules; - Authorization to perform operations are controlled by the ownership of the chains, no need to external controls; - Single organization or multi-organization ecosystem is possible;
### Assets - An asset is a fungible entity that is represents a real-world value or an abstract concept; - Are subdivided in whole units or fractions; - May have expirations associated with them; - Have their definitions registered on-chain to ensure immutability; - May be linked to external references on or off chain to justify its existence; - Are issued by authorized issuers only and may be destroyed (burned) when necessary;
### Asset Types - In this version assets can assume one of those 3 types: - Generic: Currency like assets. Behaves like real world money; - Points: Loyalty points like assets; - Scores: Simple score system;
### Asset Expiration policies - **Policies**: - **Never**: No expiration at all; - **Daily**: Expires after a certain number of days after the issuance; - **Monthly**: Expires after a certain number of months after the issuance; - **Custom**: Expires at an especific date; - **Duration**: Duration of the asset; - **Timezone**: The timezone of the asset;
### Wallets - A wallet is the container of the assets owned by the owner of the chain it is stored in; - There are 4 types of wallets for now, Issuers, Users, Redeemers and Burners; - A wallet can hold any number of assets as long as the assets belong to the same asset definition chain; - Each chain will have a single wallet associated with it thus, the chain ID is also the ID of the wallet; - Only the owner of the chain can perform operations on the associated wallet;
### Issuer Wallets - Issuers are special wallets that can “create” new assets; - They can issue a given asset as long as they are assigned to do so in the asset definition; - Once the asset is issued, it can be transferred to other wallet types beside issuers; - It keeps the records of the current balance and also the balance of all assets already issued; - A given issuer wallet can be the issuer of multiple assets as long as it is allowed to do so by the definition;
### Burner Wallets - Burners are special wallets that receives assets for destruction; - Once an asset is inside this wallet, it is considered destroyed and can no longer be used; - A burner wallet is valid for the given asset if and only if it is listed in the asset definition as one of its burners; - They are mandatory to the system but assets that expires are also destroyed and are not required to be transfered to one of the burners;
### User Wallets - User wallets are the wallets assigned to normal users; - They have no special powers and can only transact and hold non expired assets; - A wallet can hold multiple assets as long as they belong to the same asset defintion of the wallet itself;
### Redeem wallets - Are just like user wallets but can hold and transact with expired assets as long as they are not sent back to user wallets;
### Asset Definitions - Each instance of the IL2 Assets has a single asset definition chain that holds the asset definitions; - It may be controlled by an external entity, such as a regulator; - Wallets and assets are uniquely associated with this asset definition chain; - Assets and wallets from distinct definitions cannot be mixed; - All properties of a given asset (their rules) are stored in this chain and cannot be changed without the permission of the asset definition chain owner;
### Issuing assets - Only the issuer wallets registered as issuers in the asset definition can issue new assets of a given type; - Once a certain amount of assets are issued, they are added to the issuer wallet as a balance that can be transfered to other wallets; - If the asset expires, the expiration date is defined on this moment;
### Transfering assets - In the IL2 Assets, the transfers are asynchronous operations that have 2 steps: - The withdraw from the source wallet by the sender; - The deposit into the destination wallet by the receiver;
### How transfers work - Withdraw - Upon request from the sender to transfer a certain amount of assets to the destination wallet: 1. The system verifies if the wallet has sufficient funds and if the transfer to the destination wallet is allowed; 2. A new record of the wallet is created with the withdraw record in place; 3. A transfer notification is sent to the destination wallet via broadcast; - The address of the withdraw record is the receipt of the transference to the destination wallet;
### How transfers work - Deposit - Upon notification via system messages or by the sender: 1. The withdraw record is loaded and the autenticity of the assets in it are verified (optional); 2. A new record of the wallet is created registering the deposit; - The address of the deposit is contains the new balance of the destination wallet;
### Transfer restrictions - Some asset types imposes restrictions to based on the types of the source and destination wallets; - Issuer and User wallets cannot hold nor transfer expired assets; - Only authorized burners can receive assets of certain types;

Transfer operation example

Here we have 3 wallets.

W1234
W5678
W9012

Transfer operation example

Each with an initial balance of some asset.

WALLET: 10
WALLET: 9
WALLET: 0
W1234
W5678
W9012

Transfer operation example

Let's transfer 5 from W1234 to W5678...

WALLET: 10
WALLET: 9
WALLET: 0
W1234
W5678
W9012

Transfer operation example

A withdraw of 5 in favor of W5678 is registered.

WALLET: 5; W(W5678,5)
WALLET: 10
WALLET: 9
WALLET: 0
W1234
W5678
W9012

Transfer operation example

Once the withdraw is registered a notification is sent to W5678.

WALLET: 5; W(W5678,5)
WALLET: 10
WALLET: 9
WALLET: 0
W1234
W5678
W9012

Transfer operation example

The owner of W5678 receives the notification, verifies if it authentic and registers the deposit based on it.

WALLET: 5; W(W5678,5)
WALLET: 14; D(W1234,5)
WALLET: 10
WALLET: 9
WALLET: 0
W1234
W5678
W9012

Transfer operation example

A transfer from W5678 to W9012 happens in the same way...

WALLET: 0; W(W9012,14)
WALLET: 14; D(W5678,14)
WALLET: 5; W(W5678,5)
WALLET: 14; D(W1234,5)
WALLET: 10
WALLET: 9
WALLET: 0
W1234
W5678
W9012

Transfer operation example

...as a new transfer from W9012 to W1234.

WALLET: 11; D(W9012,6)
WALLET: 8; W(W1234,6)
WALLET: 0; W(W9012,14)
WALLET: 14; D(W5678,14)
WALLET: 5; W(W5678,5)
WALLET: 14; D(W1234,5)
WALLET: 10
WALLET: 9
WALLET: 0
W1234
W5678
W9012

Transfer operation example

This is the final state of the transfers. Wallet W1234 has 11, W5678 has 0 and W9012 ends with 6.

WALLET: 11; D(W9012,6)
WALLET: 8; W(W1234,6)
WALLET: 0; W(W9012,14)
WALLET: 14; D(W5678,14)
WALLET: 5; W(W5678,5)
WALLET: 14; D(W1234,5)
WALLET: 10
WALLET: 9
WALLET: 0
W1234
W5678
W9012

Transfer operation example

It is important to notice that a full tracing of the transfers are registered in the wallets, leaving a full auditing trail of the assets up to the issuer when necessary.

WALLET: 11; D(W9012,6)
WALLET: 8; W(W1234,6)
WALLET: 0; W(W9012,14)
WALLET: 14; D(W5678,14)
WALLET: 5; W(W5678,5)
WALLET: 14; D(W1234,5)
WALLET: 10
WALLET: 9
WALLET: 0
W1234
W5678
W9012
### Conclusion of a transfer operation - The sender considers the operation completed as soon as the withdraw is registered in his/her wallet; - The receiver considers the operation completed when the deposit is registered in his/her wallet based on the withdraw registered in the source wallet; - For anyone else, the state of the transfer operation depends on his/her relationship with the sender or the receiver;
### Burning assets - Assets are burned (destroyed) by transferring them to a burner wallet; - Only burner wallets registered as burners to the given asset can act as a real burner that asset; - Expired assets are considered lost even if they are not moved into a burner wallet;

Architecture

IL2 Assets is intended to provide the asset management functions to applications via REST WebServices.

All the complexity of the asset management and key management is left to the IL2 Assets.

Architecture

### Architecture Components - Use Application: The user's application; - IL2 Assets: The asset control application and protocol. Can be clustered for better performance; - IL2 Chain Dir: The IL2 chain discovery service and IL2 Assets message broker; - IL2 Node: The IL2 nodes. It may have chains owned by it or mirrored from other nodes; - IL2 Network: The IL2 P2P Network used by IL2 nodes to communicate between them;

Architecture - Multiple organizations

### Architecture - Multiple organizations - In this scenario, the communication among organizations is preformed by simple messages between their respective **IL2 Chain Dir** instances and the **IL2 Network** itself. - One organization cannot change the wallets controlled by other organizations; - This includes asset issuance and burning as well; - The asset definition chain can be under the control of yet another organization, such as a regulator;

IL2 Asset Simulator

  • It is a small, easy to deploy simulator of the whole IL2 Assets ecosystem:
    • Easy to deploy and redeploy (stand alone all-in-one program);
    • It works just like the real IL2 Assets without the complexity;
    • Ideal for development environment, study and prototyping;
  • Visit IL2 Assets Simulator for further information
### Future extensions - **NFT** like assets with the ability to store all information about it directly on chain; - Support for **IL2 lightweight** nodes so the application can run directly on user's devices or even IoT devices; - Support to store and run small programs to control the behavior of the asset (**IL2 applets**); - Native mobile device wallets; - Enhance multi-organization experience; - Extension to hold stocks and stock like assets;

Introduction to IL2 Assets

https://interlockledger.network/