Programmable Smart Assets
Programmable Smart Asset Ownership and Fractional Smart Object Asset Ownership with the SagaChain’s SagaOS an Extensible Blockchain Object Model
Overview
The SagaChain introduces a new concept to blockchain solutions: SagaOS and Programmable Smart Assets (“SagaPSA”).
Using the SagaChain Extensible Blockchain Object Model, SagaOS [1], virtually any reference to an asset whether a virtual or physical asset, may be owned by, and stored in a SagaChain account. Further it may be transferred (i.e. sold) to any other SagaChain account. As is described below this innovation enables a wide variety of asset ownership concepts including, but not limited to:
· Asset ownership and transfer
· Fractional asset ownership
· Asset ownership cash-flows
· Voting rights
· Use and access rights
Examples of Assets
An asset may be a single physical item such as a boat, car, house. It may also be an entity such as a business, or financial instrument.
An Extensible Smart Object Asset instance represents the asset on the SagaChain in a one-to-one correspondence.
Asset Creation
An account holder creates a new asset by creating an object instance of ClassAsset or a subclass. The new smart object asset is created with the description information of the asset providing proof of ownership of the asset. The description information and proof of ownership of the asset that the asset object represents are specific to the asset, and as such are determined by sub-classes of the Class Asset.
The newly created asset object instance is stored in the asset list in the creating account.
Asset Object Reference
Once an asset object has been created, if the creating account wants to enable transfer of ownership of the asset, the account holder creates a reference object to the asset object by creating an instance of ClassReferenceAsset. A ClassReferenceAsset object instance contains the object identifier of the asset object instance. These object instances act as proxies to the asset objects, and are used to show ownership of the asset object.
Specifically, owning an asset object means by definition an account that contains an instance of a ClassReferenceAsset object that contains a reference to the asset object.
Implementation note: ClassReferenceAsset objects are passed between accounts for transfer of ownership. The underlying asset object is permanently stored in the creating account’s state space, even if the creating account no longer owns the asset. As a result, the object identifier stored in the ClassReferenceAsset object is itself immutable.
The following depicts the fundamental asset ownership concepts:
Each rounded rectangle represents an account on the SagaChain. The Asset Creator Account contains the asset objects that it instantiated. As is shown an account may create any number of asset objects. Two accounts are shown that own some of the assets created by the Asset Creator Account. Each owning account contains an Asset Reference Object instance with the object identifier of the owned asset.
Fractionalization of Assets
The term fractional asset ownership refers to the general concept of owning a fraction of an asset. The most common use of fractional asset ownership is shares in a corporation. Each share represents a fraction of ownership in the corporation. Other types of assets may be fractionally owned such as a yacht, corporate jet, vacation timeshare, etc. The SagaChain classes support fractional asset ownership similarly to general asset ownership. The difference is that a fractionalization reference object is used to create the fractional ownership. This is depicted below:
A fractional asset reference object can be traded in a transaction just like an asset reference object and behave functionally identically. For example, cash-flows for a fractionalize asset would flow to the owners based on the fractions they own.
Multi-tiered Fractionalization of Assets
In this model, a fractional asset reference object is used as the asset object by a second fractionalization object. This new fractionalized asset can now be referenced by a new fractional asset reference object which can be transferred to new account. All ownership rights and cash-flows would flow through the references.
Creation of Baskets of Assets
Assets may be grouped together into a “basket” and fractionalized. A fractionalization object may contain multiple asset object references from multiple accounts. This is depicted below with 2 create accounts.
As with the multi-tiered fractionalization of assets above, a basket of assets could consist of fractional assets as well as asset objects. All of the flow-through would behave identically.
Example Use Case
Business Shares As Assets
Given the above fractional asset model, a business might do the following:
· create an account on the SagaChain
· create an instance of asset object to represent the business
· create an instance of a fractionalization object, initialized with N fractions
The business could then sell the fractions of ownership to any other account, with the new account containing a fraction asset reference object. The new account owner may sell the reference object to other accounts including back to the original business account.
If/when the business declares a cash-flow (i.e. dividend), the account holder of the fraction asset reference object sends a transaction to the fraction asset reference object to collect its cash-flow from the fractionalization object, which in turn collects the cash-flow from the underlying business asset object.
Brief Comparison of Programmable Smart Assets to Smart Contracts
A programmable smart asset, and the associated asset object references as described above differ from the smart contract model significantly and enable new ways of working with assets on blockchains.
Smart contracts are implemented as a single account, with associated code (e.g. Solidity code), and a single data space. If a Smart contract implements a token, such as an “altcoin” or a “security token”, any account that owns a token is recorded as an account address in an array list in the smart contract account. Each new token is a new smart contract, with separate code and a separate single account data space.
The smart object asset model stores the asset reference objects in each individual owner accounts data space. This in sharp contract to the smart contract approach where the account address (which functions as a reference) is stored in the single smart contract. As described above, the smart object asset concept implicitly supports multiple relationships without adding or changing any code. All that is required is creation of the relevant objects as standard transactions. This flexibility enables near limitless relationship structures between asset owning accounts without introducing the opportunity for programming mistakes.
Brief Comment on Sharding and Scalability with Programmable Smart Assets
The account ownership of the programmable smart assets model has a fortuitous side effect with respect to scalability. The transfer of ownership of a smart object reference asset between two or more accounts is a local matter between the accounts. That is, if multiple smart object reference assets are being transferred between unrelated disjoint accounts, all of the transfers may happen simultaneously on separate blockchain shards. For example, if account A is transferring to account B, and account C is transferring to account D, both transfers may happen simultaneously on separate shards.
In comparison, a smart contract account must process transactions serially, which implies the state transition must take place on a main blockchain or a single shard. Therefore, in the above example only one of the two transactions can take place at a given time. Sharding does not provide any scalability in the smart contract situation.
Conclusion
The Programmable Smart Asset model introduces the concept of ownership of arbitrary objects to the blockchain and cryptocurrency model. Since an SagaPSA can represent virtually anything and be traded with any account, many blockchain applications that are currently implemented as separate smart contracts and individual tokens may be far more naturally implemented as SagaPSAs. Using classes defined with the SagaOS, transactions for all SagaPSAs may be handled uniformly. This extends naturally to wallets containing smart object assets as well as buying and selling of assets. The above diagrams and descriptions are not meant to be exhaustive. The SagaPSA model can be readily extended to support arbitrarily complex relationships between accounts and types of assets.
References
“Fractional Ownership”, https://en.wikipedia.org/wiki/Fractional_ownership
“Fractional Ownership”, https://www.investopedia.com/terms/f/fractionalownership.asp
[1] “Programmable Smart Assets, Programmable Smart Asset Ownership and Fractional Programmable Smart Asset Ownership” and “Extensible Blockchain Object Model (SagaOS) Foundation Classes and Objects and Supporting Data Structures” combines exciting new technologies from PraSaga Foundation that defines and implements the smart class and smart object model in place of the smart contract model.