Una guida non ufficiale per scrivere contratti intelligenti Qubic
Questa guida non ufficiale fornisce una panoramica sullo sviluppo di contratti intelligenti Qubic, dettagliando le funzioni chiave, l'allocazione della memoria e le procedure di test per garantire un'implementazione robusta ed efficiente.
Qsilver · 27 giugno 2024.
Introduzione
Benvenuti alla guida non ufficiale per scrivere contratti intelligenti Qubic (SC). Questa guida mira a fornire una panoramica chiara e concisa su come sviluppare e implementare contratti intelligenti all'interno dell'ecosistema Qubic, attingendo dalla documentazione principale di QPI.
Panoramica sui contratti intelligenti Qubic
Attualmente, la documentazione principale per scrivere SC è il file QPI su GitHub. QPI sta per Qubic Programming Interface, analogo a un API (Application Programming Interface) ma specifico per Qubic.
Il file QPI include:
- Caratteri proibiti: Nessun operatore di moltiplicazione o divisione, nessuna direttiva di preprocessore.
- Struttura del codice principale:
- 5000 righe di codice: Definisce ogni tipo di dimensione variabile da singoli bit a array con milioni di elementi.
- 1000 righe di codice: Gestisce varie code e tipi di dati correlati per una gestione efficiente dei dati.
- Le ultime centinaia di righe: Consentono l'accesso allo stato della rete Qubic.
Funzioni chiave nel QPI
Ecco alcune delle funzioni essenziali fornite nel QPI:
id arbitrator() const;
id computor(uint16 computorIndex) const; // [0..675]
uint8 day() const; // [1..31]
uint8 dayOfWeek() const; // [0..6]
uint16 epoch() const; // [0..9'999]
bit getEntity() const; // Restituisce "true" se l'entità è stata trovata, "false" altrimenti
uint8 hour() const; // [0..23]
sint64 invocationReward() const;
id invocator() const; // Restituisce l'id dell'utente/contratto che ha attivato questo contratto; restituisce NULL_ID se nessuno
template <typename T> id K12(const T& data) const;
uint16 millisecond() const; // [0..999]
uint8 minute() const; // [0..59]
uint8 month() const; // [1..12]
id nextId(const id& currentId) const;
sint64 numberOfPossessedShares() const;
id originator() const; // Restituisce l'id dell'utente che ha attivato l'intera catena di invocazioni; restituisce NULL_ID se nessuno
uint8 second() const; // [0..59]
bit signatureValidity() const;
uint32 tick() const; // [0..999'999'999]
uint8 year() const; // [0..99] (0 = 2000, 1 = 2001, …, 99 = 2099)
Cosa significa?
I contratti intelligenti Qubic sono Turing completi, il che significa che è possibile implementare praticamente qualsiasi logica computazionale. Tuttavia, alcune restrizioni garantiscono che i SC operino in un ambiente altamente compartimentato e sicuro.
Allocazione della memoria
I SC utilizzano un modello di allocazione della memoria statica in cui tutta la memoria deve essere preallocata. Questo design è cruciale per gestire le strutture di dati in modo efficiente entro un limite di 1GB di RAM. Sebbene questo limite sia destinato a raddoppiare in futuro, rimane un'allocazione fissa, richiedendo un'attenta pianificazione dell'uso della memoria.
Uso delle librerie
Attualmente, non è possibile utilizzare librerie esterne nei SC; tutto il codice necessario deve essere incluso direttamente nel sorgente. Col tempo, man mano che più SC incorporano varie librerie, queste potrebbero diventare disponibili per l'uso pubblico all'interno di altri SC.
Transazioni e messaggi di rete RCF
Ogni SC ha un indirizzo unico derivato da una chiave pubblica, con l'ID del contratto che corrisponde ai 64 bit più bassi. I SC vengono invocati tramite transazioni inviate a questo indirizzo, con inputData
che specifica l'operazione. Inoltre, lo stato di un SC può essere interrogato utilizzando i messaggi di rete RCF.
Esempio: SC di airdrop
Un SC di airdrop potrebbe iterare attraverso un dataset e distribuire QU o token a ciascun indirizzo in un tick per transazione SC. Con un limite attuale di 1024 transazioni per tick, ciò potrebbe comportare fino a 500 milioni di trasferimenti per tick. La reale capacità dipende dalla complessità del SC.
Come testare il tuo SC
- Sviluppa il tuo SC: Scrivi e debugga il codice del tuo contratto intelligente.
- Aggiorna qubic-cli: Assicurati che le tue transazioni SC e funzioni RCF siano integrate.
- Crea un aggiornamento del core Testnet: Integra il tuo SC in un ambiente testnet.
- Esegui i test: Usa qubic-cli per interrogare il tuo nodo testnet e validare le prestazioni del SC.
- Test di stress: Esegui test di carico e test automatizzati per garantire la stabilità.
- Invia per approvazione: Una volta completato il debug, invia il tuo SC per l'approvazione del quorum e poi procedi all'IPO.
Seguendo questi passaggi, puoi garantire che i tuoi contratti intelligenti siano solidi, efficienti e pronti per il deployment nella rete Qubic. Buona programmazione!
Leggi la serie “Non Ufficiale” di Qsilver
- Un Whitepaper Interino Non Ufficiale su Qubic
- Dettagli su Qubic Crypto
- Una guida non ufficiale all'integrazione dei servizi Qubic
- Una guida non ufficiale per scrivere contratti intelligenti Qubic
Per gli ultimi aggiornamenti, unisciti al Discord di Valis, seguici su X e aggiungi il nostro blog ai preferiti.
← Precedente
Successivo →
In questa pagina
- Una guida non ufficiale per scrivere contratti intelligenti Qubic
- Introduzione
- Panoramica sui contratti intelligenti Qubic
- Funzioni chiave nel QPI
- Cosa significa?
- Allocazione della memoria
- Uso delle librerie
- Transazioni e messaggi di rete RCF
- Esempio: SC di airdrop
- Come testare il tuo SC
- Leggi la serie “Non Ufficiale” di Qsilver