Solution Architecture
Last updated
Last updated
The solution architecture focuses on the implementation of the proposed incentive model (section 2), token economy (section 3) and governance model (section 4) through a decentralized autonomous program, the ovr-program. We propose the implementation of the ovr-program on the Solana network. Therefore, a Solana program written in the Rust language is introduced. However, the ALLOVR concept is technology agnostic and could be implemented on other programmable decentralized infrastructures that fulfill the technical requirements in terms of verifiability and performance.
The ovr-program uses the Solana Program Library (SPL) Token, Associated Token Account, and Governance programs to provide all aforementioned functionality. With the exception of the initialization function, invocation of all ovr-program functions does not require signing by keys held by the ALLOVR DAO; they can be invoked by anyone. This is achieved with the use of Program Derived Addresses (PDA), which allow the ovr-program to sign transactions.
Transaction fees charged by the Solana network are paid by the invoker e.g. the create-artist function is invoked by a wallet held by the artist and will only succeed if said wallet holds sufficient lamports.
The ovr-program provides the following key functions:
init: Create the ALLOVR State account (data storage) and initialize the ALLOVR mint account. A PDA is set as the mint authority such that future minting can only be done by the ovr-program. This function can only be executed once as the ALLOVR State address is a known address and the account can only be created once. The ovr-program authority key pair must be present as a signer.
mint: Mint ALLOVR token to treasury and core contributors. Using the ALLOVR State account the ovr-program ensures that this function can only be executed once.
create-artist: Register new artist. This will create a new artist token mint and send the full supply to the artist's wallet. Additionally, an Artist Metadata data account is created, with its address being a PDA unique to the artist wallet address. Only the ovr-program can write to said data account.
create-artwork: Creates a new artwork token and sends it to the artist’s wallet. Additionally, an Artwork Metadata data account is created, with its address being a PDA unique to the artwork symbol (a short name) and artist wallet address. Only the ovr-program can write to said data account. The artwork token mint account authority is a PDA, hence only the ovr-program can mint artwork tokens.
sell-artwork: Initializes artwork token sale. This involves depositing the artwork token into an ovr-program controlled escrow account. The seller specifies the price, accepted currency, and payment recipient address and buyer address. The sale can be canceled as long as the offer has not been accepted by the buyer and the seller is present as signer.
cancel-artwork-sale: Cancels initialized artwork token sale. The artwork token is returned to the sale initializer and the escrow account is drained (rent Lamports returned to seller).
accept-artwork-sale: Accepts initialized artwork token sale. Payment is processed by the ovr program. The buyer must be present as signer and must match the buyer address specified by the seller. The buyer must hold enough funds in the currency and price specified by the seller. The ovr-program transfers 85% of the funds to the payment recipient address, and transfers the artwork token to the buyer. The remaining 15% of the fee is transferred to the artist token staking pool for profit sharing. Scenario 1: The artist has not distributed their artist tokens (holds 100%) and is executing the primary sale. They receive 85% of the selling fee directly and 15% through the artist token staking pool. Scenario 2: The artist has distributed 50% of their artist tokens (holds 10%). The artist does not hold the artwork being sold. The seller executes the secondary sale. The seller receives 85% of the selling fee directly. The artist received 7.5% through the artist token staking pool (if tokens are staked). All other artist token holders that are staking their artist tokens receive the remaining 7.5%.
stake-aovr: Stake AOVR tokens to a dedicated staking account and receive a share in weekly artwork profit participations and weekly share in AOVR staking pool.
stake-artist: Stake artist tokens to a dedicated staking account and receive share in artist profit participation
aovr-inflation: Weekly inflation function that creates 96.150 additional AOVR tokens and distributes to the AOVR staking pool and treasury.
DAO specific functionality is provided by the SPL governance program. This includes proposal creation, voting and (upon a yes vote) execution of arbitrary programs. Proposals may be created and voted on by members of the ALLOVR community that hold a specific amount of ALL tokens or by council members that hold a council token. In each case, tokens must be deposited to the governance program ALLOVR DAO realm for the duration of the proposal vote. Furthermore, the ALLOVR treasury will be a multisig account managed by the governance program where a threshold of council members will be required to vote in favor of moving funds out of the ALLOVR treasury.
Within the ALLOVR ecosystem various other decentralized and centralized software solutions are conceivable to foster further program development and development of value added services and applications. Most notably, mobile frontend applications to interact with the ovr-program seem necessary. These frontend applications have to rely on a wallet solution that allows private key management and transaction signing.
ALLOVR Labs has developed an easy-to-use mobile app for iOS & Android using the cross-platform React Native framework. However, the ovr-program is open-source and fully decentralized, allowing anyone to develop corresponding applications for ALLOVR. To simplify application development ALLOVR Labs will develop and publish npm (JavaScript) and Nuget (C#) SDK packages for the ovr-program to make development atop the ovr-program easier for other developers.
______________________________________________________________________________
The Solana-program-library is open source and provided and maintained by the Solana Foundation. The Solana-program-library documentation can be found at https://github.com/solana-labs/solana-program-library
Lamports are the smallest unit of the Solana framework native currency SOL https://docs.solana.com/terminology#lamport