Een onofficiële gids voor het schrijven van Qubic Smart Contracts
Deze onofficiële gids biedt een overzicht van de ontwikkeling van Qubic Smart Contracts, met details over belangrijke functies, geheugentoewijzing en testprocedures om een robuuste en efficiënte implementatie te garanderen.
Qsilver · 27 juni 2024.
Inleiding
Welkom bij de onofficiële gids voor het schrijven van Qubic Smart Contracts (SC). Deze gids heeft tot doel een duidelijk en beknopt overzicht te geven van hoe slimme contracten binnen het Qubic-ecosysteem kunnen worden ontwikkeld en geïmplementeerd, voortbouwend op de kern QPI-documentatie.
Overzicht van Qubic Smart Contracts
Momenteel is de belangrijkste documentatie voor het schrijven van SC's het QPI-bestand op GitHub. QPI staat voor Qubic Programming Interface, analoog aan een API (Application Programming Interface) maar specifiek voor Qubic.
Het QPI-bestand bevat:
- Verboden tekens: Geen vermenigvuldigings- of delingsoperatoren, geen preprocessor-richtlijnen.
- Kerncode-structuur:
- 5000 regels code: Definieert elke variabele grootte van enkele bits tot arrays met miljoenen elementen.
- 1000 regels code: Beheert verschillende wachtrijen en gerelateerde datatypes voor efficiënte gegevensverwerking.
- Laatste paar honderd regels: Biedt toegang tot de Qubic-netwerkstatus.
Belangrijke functies in QPI
Hier zijn enkele van de essentiële functies die worden aangeboden in de 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; // Retourneert “true” als de entiteit is gevonden, “false” anders
uint8 hour() const; // [0..23]
sint64 invocationReward() const;
id invocator() const; // Retourneert de id van de gebruiker/het contract dat dit contract heeft geactiveerd; retourneert NULL_ID indien geen
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; // Retourneert de id van de gebruiker die de gehele keten van aanroepen heeft geactiveerd; retourneert NULL_ID indien geen
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)
Wat betekent dit?
Qubic Smart Contracts zijn Turing compleet, wat betekent dat je vrijwel elke computationele logica kunt implementeren. Bepaalde beperkingen zorgen er echter voor dat SC's in een sterk gescheiden en beveiligde omgeving draaien.
Geheugentoewijzing
SC's gebruiken een statisch geheugenallocatiemodel waarbij al het geheugen vooraf moet worden toegewezen. Dit ontwerp is cruciaal voor het efficiënt beheren van datastructuren binnen een limiet van 1GB RAM. Hoewel deze limiet in de toekomst zal verdubbelen, blijft het een vaste toewijzing, wat een zorgvuldige planning van het geheugengebruik vereist.
Gebruik van bibliotheken
Momenteel kun je geen externe bibliotheken gebruiken in SC's; alle benodigde code moet direct in de bron worden opgenomen. Na verloop van tijd, naarmate meer SC's verschillende bibliotheken integreren, kunnen deze beschikbaar worden voor openbaar gebruik binnen andere SC's.
Transacties en RCF-netwerkberichten
Elk SC heeft een uniek adres afgeleid van een openbare sleutel, waarbij de contract-ID de laagste 64 bits is. SC's worden aangeroepen via transacties die naar dit adres worden verzonden, met inputData
die de bewerking specificeert. Daarnaast kan de status van een SC worden opgevraagd met behulp van RCF-netwerkberichten.
Voorbeeld: Airdrop SC
Een airdrop SC kan door een dataset itereren en QU of tokens naar elk adres distribueren in één tick per SC-transactie. Met een huidige limiet van 1024 transacties per tick, kan dit resulteren in maximaal 500 miljoen overdrachten per tick. De werkelijke doorvoer hangt af van de complexiteit van de SC.
Hoe uw SC te testen
- Ontwikkel uw SC: Schrijf en debug uw smart contract code.
- Update qubic-cli: Zorg ervoor dat uw SC-transacties en RCF-functies zijn geïntegreerd.
- Maak een Testnet Core Update: Integreer uw SC in een testnetomgeving.
- Voer tests uit: Gebruik qubic-cli om uw testnetknooppunt te bevragen en SC-prestaties te valideren.
- Belastingtesten: Voer belastingtesten en geautomatiseerde tests uit om stabiliteit te garanderen.
- Dien in voor goedkeuring: Zodra debugging is voltooid, dien uw SC in voor quorumgoedkeuring en ga vervolgens verder naar IPO.
Door deze stappen te volgen, kunt u ervoor zorgen dat uw slimme contracten robuust, efficiënt en klaar voor implementatie zijn in het Qubic-netwerk. Veel succes met coderen!
Lees Qsilver’s “Onofficiële” Serie
- Een Onofficiële Qubic Interim Whitepaper
- Qubic Crypto Details
- Een Ongeofficiale Gids voor Qubic Services Integratie
- Een onofficiële gids voor het schrijven van Qubic Smart Contracts
Voor de nieuwste updates, word lid van de Valis Discord, volg ons op X, en voeg onze blog toe aan je favorieten.
Volgende →
Op deze pagina
- Een onofficiële gids voor het schrijven van Qubic Smart Contracts
- Inleiding
- Overzicht van Qubic Smart Contracts
- Belangrijke functies in QPI
- Wat betekent dit?
- Geheugentoewijzing
- Gebruik van bibliotheken
- Transacties en RCF-netwerkberichten
- Voorbeeld: Airdrop SC
- Hoe uw SC te testen
- Lees Qsilver’s “Onofficiële” Serie