En uofficiel guide til at skrive Qubic Smart Contracts
Denne uofficielle vejledning giver et overblik over udviklingen af Qubic Smart Contracts og beskriver nøglefunktioner, hukommelsesallokering og testprocedurer for at sikre en robust og effektiv implementering.
Qsilver - 27. juni 2024.
Introduktion til Qsilver
Velkommen til den uofficielle vejledning i at skrive Qubic Smart Contracts (SC). Denne vejledning har til formål at give et klart og kortfattet overblik over, hvordan man udvikler og implementerer smartkontrakter i Qubic-økosystemet, med udgangspunkt i den centrale QPI-dokumentation.
Oversigt over Qubic Smart Contracts
I øjeblikket er den primære dokumentation til at skrive SC'er QPI-filen på GitHub. QPI står for Qubic Programming Interface, som svarer til et API (Application Programming Interface), men som er specifikt for Qubic.
QPI-filen indeholder:
- Forbudte tegn: Ingen multiplikations- eller divisionsoperatorer, ingen præprocessordirektiver.
- Kernekodens struktur:
- 5000 linjer kode: Definerer alle typer variable størrelser fra enkelte bits til arrays med millioner af elementer.
- 1000 linjer kode: Håndterer forskellige køer og relaterede datatyper til effektiv datahåndtering.
- De sidste par hundrede linjer: Giver adgang til Qubic-netværkets tilstand.
Nøglefunktioner i QPI
Her er nogle af de vigtigste funktioner 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)
Hvad betyder det?
Qubic Smart Contracts er Turing-komplette, hvilket betyder, at du kan implementere stort set enhver beregningslogik. Visse begrænsninger sikrer dog, at SC'er kører i et meget afgrænset og sikkert miljø.
Allokering af hukommelse
SC'er bruger en statisk hukommelsesallokeringsmodel, hvor al hukommelse skal være allokeret på forhånd. Dette design er afgørende for at kunne styre datastrukturer effektivt inden for en RAM-grænse på 1 GB. Selvom denne grænse vil blive fordoblet i fremtiden, er det stadig en fast allokering, som kræver omhyggelig planlægning af hukommelsesforbruget.
Brug af biblioteker
I øjeblikket kan man ikke bruge eksterne biblioteker i SC'er; al nødvendig kode skal inkluderes direkte i kilden. Med tiden, når flere SC'er inkorporerer forskellige biblioteker, kan disse blive tilgængelige for offentlig brug i andre SC'er.
Transaktioner og RCF-netværksmeddelelser
Hver SC har en unik adresse, der stammer fra en offentlig nøgle, hvor kontrakt-ID'et er de laveste 64 bit. SC'er påkaldes via transaktioner, der sendes til denne adresse, med inputData
, der specificerer operationen. Derudover kan en SC's tilstand forespørges ved hjælp af RCF-netværksmeddelelser.
Et eksempel: Airdrop SC
En airdrop-SC kan gennemgå et datasæt og distribuere QU eller tokens til hver adresse i ét kryds pr. SC-transaktion. Med en nuværende grænse på 1024 transaktioner pr. tick kan det resultere i op til 500 millioner overførsler pr. tick. Den faktiske gennemstrømning afhænger af SC'ens kompleksitet.
Sådan tester du din SC
- Udvikl din SC: Skriv og fejlsøg din smarte kontraktkode.
- Opdater qubic-cli: Sørg for, at dine SC-transaktioner og RCF-funktioner er integreret.
- Opret en testnet-kerneopdatering: Integrer din SC i et testnet-miljø.
- Kør tests: Brug qubic-cli til at forespørge din testnet-node og validere SC's ydeevne.
- Stress-testning: Udfør belastningstest og automatiserede test for at sikre stabilitet.
- Indsend til godkendelse: Når fejlsøgningen er afsluttet, skal du indsende din SC til quorum-godkendelse og derefter gå videre til IPO.
Ved at følge disse trin kan du sikre, at dine smart contracts er robuste, effektive og klar til at blive implementeret i Qubic-netværket. God fornøjelse med kodningen!
Læs Qsilvers "Uofficielle" serie
- Qubic Crypto Detaljer
- En uofficiel guide til at skrive Qubic Smart Contracts
- En uofficiel Qubic foreløbig hvidbog
- En uofficiel guide til Qubic Services Integration
For de seneste opdateringer, slut dig til Valis Discord, følg os på X, og bogmærk vores blog.
← Forrige
På denne side
- En uofficiel guide til at skrive Qubic Smart Contracts
- Introduktion til Qsilver
- Oversigt over Qubic Smart Contracts
- Nøglefunktioner i QPI
- Hvad betyder det?
- Allokering af hukommelse
- Brug af biblioteker
- Transaktioner og RCF-netværksmeddelelser
- Et eksempel: Airdrop SC
- Sådan tester du din SC
- Læs Qsilvers "Uofficielle" serie
Relaterede opslag