Whitepaper
Abstract
Una rete decentralizzata basata su blockchain a uso generale, che consente applicazioni gratuite tramite un meccanismo "Mana" che prezza dinamicamente le risorse di rete in costo-opportunità (non in token) e consente dApp gratuite tramite la "delegazione" del Mana.
Il Proof-of-Burn è implementato come algoritmo di consenso per massimizzare l'efficienza, la decentralizzazione e l'egualitarismo dimostrabile, contrastando l'attacco degli exchange e mitigando lo spam. I blocchi vengono prodotti eseguendo l'hashing di una chiave privata e del numero casuale di una funzione casuale verificabile (VRF), quindi dividendo per la quantità di token bruciati. Come nel proof-of-work, la catena più lunga funge da registro immutabile delle transazioni, sostenuto dal più ampio pool di capitale sacrificato.
Il Koinos blockchain framework consente aggiornamenti senza fork grazie alla sua struttura modulare. Questo crea una blockchain veramente decentralizzata e gratuita, con un'esperienza utente mainstream, che massimizza l'accessibilità per utenti finali, sviluppatori e operatori di nodi.
Lavori Precedenti
Satoshi Nakamoto ha creato la prima valuta digitale decentralizzata peer-to-peer con Bitcoin, progettando un'architettura di database (la blockchain) che utilizzava commissioni per regolare l'uso della rete e proof-of-work per regolare le transizioni di stato. Ethereum ha mantenuto questi elementi base e il database blockchain, ma ha creato una maggiore utilità consentendo agli utenti di includere codice Turing-completo nelle loro transazioni, rendendo così possibili le applicazioni decentralizzate (dApp).
Prima di sviluppare Koinos, eravamo il team di sviluppo principale di Steem (la prima blockchain social e senza commissioni) fino a una scalata ostile e un attacco da parte di un exchange. Dopo aver lasciato quel progetto, il nostro obiettivo era costruire una società che avrebbe permesso agli sviluppatori di creare dApp come Steem e Hive, ma su una blockchain veramente decentralizzata e senza commissioni che resistesse agli attacchi degli exchange. Sfortunatamente, nessuna delle blockchain esistenti aveva le caratteristiche di cui avevamo bisogno. Le blockchain "senza commissioni" non erano davvero prive di commissioni, richiedevano agli utenti di pagare per la RAM e/o gli account, né erano veramente decentralizzate a causa del loro lancio (ICO) o del loro algoritmo di consenso, spesso entrambi.
Volevamo portare l'accessibilità della blockchain all'estremo, consentendo, per la prima volta, dApp completamente gratuite che avrebbero richiesto non solo transazioni prive di commissioni, ma anche account gratuiti, esecuzione gratuita degli smart contract e delegazione delle risorse di rete. Fornire queste capacità richiedeva la costruzione di una nuova blockchain da zero e l'esecuzione di un lancio decentralizzato e dimostrabilmente equo. Il risultato finale è una blockchain a uso generale che non è solo un altro competitor di Ethereum, ma la prima vera alternativa a Ethereum.
$KOIN
Prima di KOIN, la maggior parte delle criptovalute aveva progetti tokenomici relativamente semplici; erano il token utilizzato per pagare le commissioni necessarie a sostenere le operazioni della rete decentralizzata. Controintuitivamente, rimuovere le commissioni è ciò che consente la creazione di un sistema più dinamico, flessibile e performante, che supporta una valuta digitale che finalmente realizza la visione futuristica di una moneta digitale egalitaria e decentralizzata iniziata con Bitcoin.
Offerta di Token & Distribuzione
Per massimizzare la decentralizzazione e l'equità dimostrabile sin dall'inizio, il token KOIN è stato lanciato come Bitcoin, attraverso il mining proof-of-work (su Ethereum). La fornitura massima minabile era di 100 milioni di KOIN. Quando la mainnet di Koinos è stata avviata, i saldi dei token sono stati inizializzati usando uno snapshot dell'ERC-20 KOIN e il tasso iniziale target di nuova creazione di token era del 2%, ma può essere modificato in-band dalla governance (vedi le sezioni Upgradeabilità senza Fork e Governance Decentralizzata). La componente di burn dell'algoritmo di consenso può portare a un tasso di inflazione reale molto più basso e persino a periodi temporanei di deflazione.
Grazie al nuovo sistema "Mana" (vedi la sezione Mana), i token della mainnet possono essere trasferiti senza pagare alcuna commissione, poiché il Mana contenuto in essi permette al titolare di utilizzare la rete senza spendere alcun KOIN. Il sistema Mana rende Koinos la prima blockchain veramente gratuita da usare, poiché gli utenti non devono acquistare account, pagare per eseguire smart contract o persino acquisire token KOIN per utilizzare la blockchain.
Inflazionaria & Deflazionaria
Essendo la prima blockchain a uso generale ad implementare il proof-of-burn come algoritmo di consenso, l'offerta di KOIN si espanderà e contrarrà in base alle condizioni di mercato, fornendo i tipi di "leve" economiche presenti nelle valute globali più avanzate, ma amministrate in modo completamente decentralizzato e algoritmico (vedi la sezione sul proof-of-burn).
Veloce & Gratuita
Poiché il proof-of-burn elimina la necessità di lavoro computazionale inutile, i blocchi di Koinos possono essere prodotti rapidamente, rendendo il token KOIN sia privo di commissioni che veloce. L'incredibile upgradeabilità di Koinos consente di ridurre continuamente i tempi di creazione dei blocchi, riducendo la latenza, limitata solo dalla stabilità della rete e dalla crescita dello stato. Con queste caratteristiche, il token KOIN può consentire alle persone di scambiare valore illimitato in pochi secondi senza perdere nulla in commissioni, aprendo la strada a modelli di business completamente nuovi – e attualmente inimmaginabili – per imprenditori e sviluppatori.
Upgradeabilità senza Fork
Durante lo sviluppo di Steem, abbiamo visto in prima persona come i fork rappresentino un ostacolo per l'adozione della blockchain, creando un notevole collo di bottiglia nel processo di aggiornamento. La mainnet risolve questo problema attraverso l'uso del Koinos blockchain framework, che consente di aggiungere qualsiasi funzionalità alla blockchain come smart contract. Il presupposto fondamentale di questo framework è che qualsiasi smart contract possa essere aggiornato da una parte autorizzata. Nel caso della logica di sistema, il contratto di governance del sistema ha l'autorità di trasformare un "user smart contract" in un "system smart contract" in-band (senza hard fork) che sovrascrive un'implementazione di base nativa. In questo modo, gli aggiornamenti della logica di business della blockchain possono essere distribuiti alla rete p2p in modo simile a una patch di sistema operativo, con un impatto minimo sulla rete.
Il Koinos blockchain framework è in pratica la blockchain a uso generale, completamente funzionale, più semplice al mondo, contenuta all'interno di un'architettura a microservizi. La blockchain (cioè il microservizio chain) presenta system call implementate nativamente che contengono solo le funzioni crittografiche necessarie per costruire una vera blockchain, insieme alla logica per far passare un nodo tra le system call native e quelle implementate come smart contract (WASM) in esecuzione nella macchina virtuale. Questa combinazione di implementazioni native e "system smart contract" forma un "kernel" (il framework) ad alte prestazioni, verticalmente scalabile e aggiornabile, che consente di aggiungere qualsiasi funzionalità alla blockchain senza richiedere un hard fork.
Supporto Universale ai Linguaggi
Ethereum ha ampliato radicalmente lo spazio creativo a disposizione degli sviluppatori consentendo loro di utilizzare un unico linguaggio Turing-completo appositamente costruito: Solidity. Koinos amplia nuovamente quello spazio creativo permettendo agli sviluppatori di lavorare con tutti i linguaggi Turing-completi più utilizzati, a partire da C++ e TypeScript (usando AssemblyScript), ma con altri linguaggi in arrivo. Koinos raggiunge questo risultato grazie alla combinazione di tre tecnologie open source, costruite e mantenute dai migliori team al mondo, tutte con un supporto linguistico in costante espansione: (1) WebAssembly, (2) Protocol Buffers, e (3) l'Advanced Message Queuing Protocol.
WebAssembly è utilizzato per gli smart contract. Protobuf è utilizzato per la serializzazione all'interno del nodo, e AMQP gestisce le comunicazioni tra i microservizi, che utilizzano messaggi broadcast per implementare un paradigma event-driven. Queste tecnologie rendono molto più semplice implementare un SDK per qualsiasi linguaggio di programmazione supportato da tutte e tre, ovvero praticamente tutti i linguaggi Turing-completi più diffusi.
Mana
Il nostro obiettivo con Koinos è supportare applicazioni decentralizzate ("Web3") che offrano un'esperienza utente da Web2. In breve, le dApp devono offrire un'esperienza utente piacevole e le persone devono poter iniziare a usarle senza prima dover acquistare token, una grande barriera all'ingresso. Il sistema Mana è come lo raggiungiamo. Lo chiamiamo "Mana" perché l'esperienza utente replica quella dei giochi di ruolo (RPG) con cui molte persone hanno già familiarità.
Il concetto di base del sistema Mana è che ogni token KOIN "nasce" con 1 Mana che può essere consumato quando un utente consuma risorse di rete. Il Mana è una proprietà del token KOIN, non è un token a sé. Non può quindi essere comprato o venduto e non può avere un prezzo distinto dal token KOIN. Gli utenti possono, tuttavia, delegare il proprio Mana ad altri utenti, consentendo a chi non possiede token di iniziare a utilizzare la blockchain, continuando però a mitigare efficacemente lo spam. Quel Mana rimane legato ai KOIN del delegante, garantendo la sostenibilità economica del sistema e massimizzando la liquidità per il delegante, che può revocare la delega a volontà.
Dettagli di Implementazione
Come il gas di Ethereum, ogni istruzione della VM avrà un costo specifico in Mana. Poiché solo un numero limitato di istruzioni può essere incluso in un blocco, il Mana è strettamente collegato alle risorse di rete disponibili per gli utenti. Mentre Ethereum richiede all'utente di acquistare gas dai minatori, che poi viene consumato dalla transazione, il sistema Mana consuma autonomamente la quantità appropriata di Mana dal saldo di un utente in base alle risorse consumate dalla sua transazione.
"Pagare" in Tempo
Una volta consumato parte del Mana in un dato token, quel token è bloccato per 5 giorni, permettendo agli utenti di sviluppare un "ritmo" settimanale nell'uso della blockchain (e delle dApp). Ciò crea un costo-opportunità in luogo di un costo monetario immediato, disincentivando l'invio di transazioni prive di valore. Questo periodo di tempo fisso funziona come un "tempo di rigenerazione" che crea l'esperienza che il Mana "si rigeneri nel tempo". È un'esperienza quasi ludica.
Il tempo di rigenerazione si basa su quanto tempo serve per rigenerare un satoshi di Mana, con la rigenerazione che avviene su tutti i token di un utente contemporaneamente. Poiché questo meccanismo è distribuito, il tempo di rigenerazione appare dinamico all'utente. In altre parole, il Mana dell'utente si rigenererà costantemente, quindi non dovrà attendere tutti i 5 giorni per riprendere a usare la blockchain.
Gratuito da Usare
Per risolvere il problema di consentire alle persone di utilizzare le dApp senza prima dover acquisire alcun token, Koinos consente agli sviluppatori di smart contract di specificare chi "paga" il Mana quando lo smart contract viene eseguito ("Payer/Payee Semantics"). Ogni transazione deve specificare esplicitamente l'indirizzo di un pagatore per la transazione e, facoltativamente, un beneficiario. Il Mana del pagatore viene speso e il nonce dell'account del beneficiario viene aggiornato. Se non viene impostato alcun beneficiario, il pagatore funge da entrambe le parti. La combinazione di queste funzionalità consente a uno smart contract di specificare un pagatore per i costi in Mana.
Queste semplici ma potenti semantiche non solo permetteranno alle persone di iniziare a usare la blockchain senza dover acquistare alcun KOIN, ma forniranno anche ai grandi detentori di KOIN uno strumento potente per supportare dApp di valore senza sacrificare i loro token.
Multidimensionalità
Come Vitalik Buterin ha spiegato, i calcoli del gas di Ethereum sono monodimensionali, valutando risorse molto diverse (ad es. storage e calcolo) come fossero uguali, il che è inefficiente. Con il modello di risorse Mana, le risorse vengono tracciate separatamente per massimizzare l'efficienza, ma l'utente paga sempre in Mana. Le risorse vengono raggruppate ogni blocco, con un limite a quante di esse possono essere consumate per blocco, e un market maker XYK viene utilizzato per stabilire un prezzo per ciascuna risorsa in quel blocco.
Questa multidimensionalità permette agli sviluppatori di ottimizzare i loro contratti per sfruttare le risorse di rete sotto-utilizzate. Gli utenti finali preferiranno quelle dApp che effettuano tali ottimizzazioni, poiché così otterranno più "valore per il loro Mana", creando un circolo virtuoso di autoregolamentazione decentralizzata. Questo sistema aumenta gradualmente e continuamente il costo in Mana man mano che gli utenti consumano risorse più contese e lo riduce per le risorse sotto-utilizzate. Il risultato finale è un sistema semplice, efficiente e dinamico per determinare i costi delle risorse in base al comportamento degli utenti, garantendo il costo più basso possibile e proteggendo la rete. Il Mana addebitato è semplicemente la combinazione lineare di ogni risorsa e costo (ad es. `bandwidth_cost * bandwidth_used + storage_cost * storage_used + compute_cost * compute_used`).
Proof-of-Burn
Oltre a essere veloce e senza commissioni, il token KOIN è pensato per realizzare la visione originale di Satoshi di un vero contante elettronico peer-to-peer che utilizza risorse computazionali inutilizzate e non richiede hardware dedicato. In altre parole, è provabilmente egalitario. Iain Stewart propose il proof-of-burn nel 2012, un anno dopo la proposta del proof-of-stake, e riteniamo che questo rappresenti la prossima fase evolutiva degli algoritmi di consenso. Il Proof-of-burn ci consente di ottenere un egalitarismo dimostrabile offrendo l'economia del proof-of-work con un'efficienza ancora superiore rispetto al proof-of-stake. Il risultato finale è un sistema di consenso che dovrebbe essere più decentralizzato del proof-of-work e più efficiente del proof-of-stake.
L'Attacco degli Exchange
Il Proof-of-burn come algoritmo di consenso è straordinariamente semplice e il suo valore unico è facile da capire. Come il proof-of-work, richiede che il costo dell'attacco alla rete sia pagato "in anticipo". Come il proof-of-stake, non è necessario acquistare né eseguire hardware dedicato, a parte l'hardware per produrre blocchi. Come il proof-of-work, l'attacco degli exchange è sventato perché il produttore di blocchi ha già perso i suoi soldi, e sta cercando solo di recuperarli mantenendo un registro corretto. Qualsiasi exchange che cerchi di sfruttare i fondi degli utenti per influenzare la governance a causa di avidità, coercizione o inganno (vedi l<link>incidente Steem/Tron</link>) dovrebbe prima distruggere i fondi degli utenti, cosa che non farebbe mai. Ciò riduce anche la necessità di condizioni di slashing complicate richieste nelle implementazioni proof-of-stake, poiché i produttori di blocchi stanno di fatto "auto-slashando" il loro capitale prima di guadagnare i reward del blocco, come nel proof-of-work.
Mining Virtuale
Un utente che desidera guadagnare block reward brucia i propri KOIN, riducendo l'offerta totale di KOIN. La blockchain distribuisce token fungibili di "virtual hash power" (VHP) al produttore di blocchi, che possono essere utilizzati per minare un blocco senza la necessità di eseguire hardware costoso. Man mano che il produttore di blocchi mina blocchi, il suo saldo VHP diminuisce nel tempo, richiedendo di bruciare altri token per continuare la produzione. In questo modo, bruciare i token equivale ad acquistare hardware da mining che si degrada nel tempo e l'elettricità necessaria per eseguire il proof-of-work.
Inflazione
VHP è sempre trattato con un rapporto 1:1 con KOIN. Per ogni unità di KOIN bruciata, un account specificato riceve altrettante unità di VHP. Quando un account con VHP riceve unità di KOIN come ricompensa di blocco, il suo saldo VHP si riduce della stessa quantità. In questo modo, il VHP funge da proxy per KOIN e la somma dell'offerta totale di VHP e KOIN può essere utilizzata per stabilire l'"offerta virtuale di token" al fine di impostare un tasso massimo di creazione di nuovi token. Per garantire che vi sia sempre un incentivo a produrre blocchi, ci deve essere un tasso di creazione netta positivo di nuovi token. Inizialmente, il tasso di creazione di nuovi token sulla mainnet sarà del 2%.
Deflazione
A causa della componente di burn, l'offerta totale di token può aumentare (inflazione) o diminuire (deflazione) a seconda del livello di competizione per la produzione di blocchi. Se la domanda di block reward aumenta linearmente, a un certo punto il tasso a cui si brucia KOIN supererà il tasso di nuova creazione di KOIN. Il risultato sarà una diminuzione dell'offerta di token nonostante la creazione di nuovi token (cioè "deflazione").
Casualità
Il Proof-of-burn mantiene il meccanismo di consenso base del proof-of-work, ma sostituisce l'energia con il tempo utilizzando una verifiable random function (VRF). Ogni blocco conterrà quanta (talvolta chiamate "slot"), di durata millisecondi, su cui i produttori di blocchi competono per produrre. Per recuperare la loro bruciatura, il produttore di blocchi deve tentare di produrre a ogni quantum. Questo tentativo implica l'uso, da parte del produttore di blocchi, della sua chiave privata, di un timestamp e dell'uscita casuale precedente della VRF per generare un hash che viene poi diviso per il suo VHP (cioè la sua bruciatura). Se l'hash è sufficientemente basso, allora produce (simile al proof-of-work), altrimenti deve riprovare al quantum successivo.
Efficienza & Coerenza
L'incentivo del produttore di blocchi non è eseguire quanta più potenza di calcolo possibile, ma eseguire il minor lavoro necessario per tentare di produrre su ogni quantum. Da qui, il proof-of-burn si comporta come il proof-of-work, tranne per il fatto che il produttore di blocchi deve eseguire un hash una sola volta per quantum. Poiché i produttori di blocchi competono per produrre in uno dei tanti quantum all'interno di un blocco, il risultato finale è una produzione di blocchi continua. Dividendo l'hash per la dimensione della bruciatura del produttore si garantisce che il fattore determinante nella scelta del produttore di blocchi sia la dimensione della bruciatura e non il lavoro computazionale eseguito (che sarà praticamente nullo), offrendo così l'efficienza promessa.
Mining Pool
A differenza delle blockchain proof-of-work, le mining pool su Koinos possono aumentare la decentralizzazione e la partecipazione alla governance, in quanto permetterebbero agli utenti non tecnici di allocare il proprio capitale a utenti più tecnici che possono garantire maggiore uptime e votare in linea con i desideri dei loro contribuenti. Gli utenti parteciperebbero a una mining pool semplicemente trasferendo il proprio VHP a un altro account Koinos, già aggiornato con un contratto di mining che distribuisce autonomamente le ricompense ai suoi contributori.
Maggiore Liquidità
Se in qualsiasi momento il produttore di blocchi o il partecipante alla mining pool desidera abbandonare la produzione di blocchi, deve semplicemente ritirare il proprio VHP dall'indirizzo e venderlo come farebbe con qualsiasi token fungibile. Questo massimizza la liquidità e consente agli utenti di uscire dalla produzione di blocchi a volontà con un minimo svantaggio economico.
Resistente alla Centralizzazione & Provabilmente Egalitaria
Con il proof-of-burn non ci sono macchinari da mining, solo account che detengono VHP, quindi il tasso al quale vengono pagate le ricompense di blocco è completamente algoritmico. Ciò lo rende non solo infinitamente personalizzabile, ma anche totalmente resistente alla centralizzazione dell'hardware. Tutto ciò fa del proof-of-burn il primo algoritmo di consenso a offrire l'economia del proof-of-work ed essere provabilmente egalitario; finalmente realizzando la visione originale di Satoshi di un vero contante elettronico peer-to-peer che utilizza risorse computazionali inutilizzate e non richiede hardware dedicato.
Governance Decentralizzata
L'elevato grado di upgradeabilità abilitato dal Koinos blockchain framework rende la governance il collo di bottiglia invece del processo di hard fork. Come ogni altro comportamento di sistema, la governance è "solo" un altro smart contract su Koinos, sebbene con privilegi a livello di sistema e un'importanza speciale nel processo di upgrade. Il contratto di governance è modellato sul modo in cui la rete Bitcoin gestisce gli upgrade (es. SegWit) e può essere considerato come la DAO (Decentralized Autonomous Organization) più semplice al mondo. Permette alle persone di: (1) Proporre aggiornamenti, (2) Rivedere gli aggiornamenti durante un "periodo di revisione", (3) Votare sugli aggiornamenti durante un "periodo di voto" e (4) alla fine del periodo di voto, la proposta deve passare o fallire. I voti vengono espressi producendo un blocco, quindi l'influenza sulla governance si basa su quanti token un utente ha bruciato, non su quanti ne detiene (stake).
L'applicazione dell'aggiornamento è ritardata di 1 settimana per garantire che gli sviluppatori e le imprese abbiano il tempo di adattare i propri sistemi all'aggiornamento. Per impedire lo spam di proposte, gli utenti devono bruciare KOIN ogni volta che presentano una proposta. Per garantire che questa commissione possa essere calcolata in modo decentralizzato e autonomo, la commissione di bruciatura è uguale all'offerta totale divisa per 1.000.000. Poiché tutte le azioni sulla blockchain devono anche pagare una commissione in Mana, il "limite di risorse" per presentare una proposta è un decimo della commissione di bruciatura, o 10 Mana nell'esempio precedente.
Aggiornare la Governance
Poiché il sistema di governance è esso stesso uno smart contract di Koinos, tutti questi parametri possono essere modificati senza un hard fork. In realtà, è proprio questo a distinguere Koinos come l'unica blockchain veramente in grado di evolversi; la governance può aggiornare sé stessa! Ma poiché è la componente più importante del sistema, dovrebbe essere molto più difficile modificare la governance rispetto a qualsiasi altra parte del sistema. Per questo motivo, è richiesta una supermaggioranza del 75% per gli aggiornamenti della governance, mentre è sufficiente una maggioranza del 60% per gli aggiornamenti di sistema non relativi alla governance (override delle system call e promozione dei system contract). Ma anche questi numeri possono essere modificati dalla governance (con una maggioranza del 75%).
Conclusione
In questo documento abbiamo delineato la logica di business innovativa aggiunta al Koinos blockchain framework per rendere la mainnet di Koinos la blockchain più accessibile al mondo. Il sistema Mana consente un uso più efficiente delle risorse di rete, creando al contempo esperienze utente fluide (e persino divertenti) a cui le persone sono già abituate. Le deleghe di Mana consentono a chi non possiede token di utilizzare le dApp senza dover acquisire token, completando l'esperienza Web2 su una piattaforma decentralizzata. Il token KOIN consente alla mainnet di essere lanciata in modo completamente decentralizzato grazie al suo lancio proof-of-work aperto ed equo su Ethereum. Sulla mainnet, il token KOIN regolerà l'uso gratuito di tutto l'ecosistema Koinos, inflazionandosi e deflazionandosi adeguatamente tramite l'algoritmo di consenso proof-of-burn, mentre la governance decentralizzata introdurrà miglioramenti continui tramite upgrade senza fork, sviluppati grazie al supporto universale per i linguaggi.