En inofficiell guide till att skriva Qubic Smart Contracts
Den här inofficiella guiden ger en översikt över utvecklingen av Qubic Smart Contracts och beskriver nyckelfunktioner, minnesallokering och testprocedurer för att säkerställa en robust och effektiv driftsättning.
Qsilver - 27 juni 2024.
Introduktion
Välkommen till den inofficiella guiden för att skriva Qubic Smart Contracts (SC). Denna guide syftar till att ge en tydlig och kortfattad översikt över hur man utvecklar och implementerar smarta kontrakt inom Qubic-ekosystemet, med utgångspunkt från QPI:s kärndokumentation.
Översikt över Qubic Smart Contracts
För närvarande är den primära dokumentationen för att skriva SCs QPI-filen på GitHub. QPI står för Qubic Programming Interface, analogt med ett API (Application Programming Interface) men specifikt för Qubic.
QPI-filen innehåller:
- Förbjudna tecken: Inga multiplikations- eller divisionsoperatorer, inga preprocessordirektiv.
- Struktur för kärnkod:
- 5000 rader kod: Definierar alla typer av variabelstorlekar från enstaka bitar till matriser med miljontals element.
- 1000 rader kod: Hanterar olika köer och relaterade datatyper för effektiv datahantering.
- Sista några hundra raderna: Möjliggör åtkomst till Qubic-nätverkets tillstånd.
Viktiga funktioner i QPI
Här är några av de viktigaste funktionerna som tillhandahålls i 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; // Returns “true” if the entity has been found, “false” otherwise
uint8 hour() const; // [0..23]
sint64 invocationReward() const;
id invocator() const; // Returns the id of the user/contract that triggered this contract; returns NULL_ID if none
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; // Returns the id of the user who triggered the entire chain of invocations; returns NULL_ID if none
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)
Vad innebär detta?
Qubic Smart Contracts är Turing-kompletta, vilket innebär att du kan implementera praktiskt taget vilken beräkningslogik som helst. Vissa begränsningar säkerställer dock att SCs körs i en mycket avskild och säker miljö.
Allokering av minne
SCs använder en statisk minnesallokeringsmodell där allt minne måste vara förallokerat. Denna design är avgörande för att datastrukturer ska kunna hanteras effektivt inom en RAM-minnesgräns på 1 GB. Även om denna gräns kommer att fördubblas i framtiden är det fortfarande en fast tilldelning, vilket kräver noggrann planering av minnesanvändningen.
Användning av bibliotek
För närvarande kan du inte använda externa bibliotek i SCs; all nödvändig kod måste inkluderas direkt i källkoden. Med tiden, när fler SC:er innehåller olika bibliotek, kan dessa bli tillgängliga för allmän användning inom andra SC:er.
Transaktioner och meddelanden i RCF-nätverket
Varje SC har en unik adress som härrör från en publik nyckel, där kontrakts-ID är de lägsta 64 bitarna. SC anropas via transaktioner som skickas till denna adress, med inputData
som specificerar operationen. Dessutom kan statusen för en SC efterfrågas med hjälp av RCF-nätverksmeddelanden.
Exempel på SC: Airdrop SC
En airdrop SC kan iterera genom en datauppsättning och distribuera QU eller tokens till varje adress i en tick per SC-transaktion. Med en nuvarande gräns på 1024 transaktioner per tick kan detta resultera i upp till 500 miljoner överföringar per tick. Den faktiska genomströmningen beror på SC:s komplexitet.
Så här testar du din SC
- Utveckla din SC: Skriv och felsök din smarta kontraktskod.
- Uppdatera qubic-cli: Se till att dina SC-transaktioner och RCF-funktioner är integrerade.
- Skapa en Testnet Core Update: Integrera din SC i en testnetmiljö.
- Kör tester: Använd qubic-cli för att fråga din testnet-nod och validera SC-prestanda.
- Stresstester: Utför belastningstestning och automatiserade tester för att säkerställa stabilitet.
- Skicka inför godkännande: När felsökningen är klar skickar du in din SC för kvorumgodkännande och går sedan vidare till börsintroduktion.
Genom att följa dessa steg kan du se till att dina smarta kontrakt är robusta, effektiva och redo att distribueras i Qubic-nätverket. Trevlig kodning!
Läs Qsilvers "Inofficiella" serie
- Qubic Crypto Detaljer
- Ett inofficiellt interimistiskt Qubic Whitepaper
- En inofficiell guide till att skriva Qubic Smart Contracts
- En inofficiell guide för Qubic Tjänsteintegration
För de senaste uppdateringarna, gå med i Valis Discord, följ oss på X och bokmärk vår blogg.
På denna sida
- En inofficiell guide till att skriva Qubic Smart Contracts
- Introduktion
- Översikt över Qubic Smart Contracts
- Viktiga funktioner i QPI
- Vad innebär detta?
- Allokering av minne
- Användning av bibliotek
- Transaktioner och meddelanden i RCF-nätverket
- Exempel på SC: Airdrop SC
- Så här testar du din SC
- Läs Qsilvers "Inofficiella" serie
Relaterade inlägg