En uoffisiell guide til å skrive Qubic Smart Contracts
Denne uoffisielle veiledningen gir en oversikt over utviklingen av Qubic Smart Contracts, og beskriver nøkkelfunksjoner, minneallokering og testprosedyrer for å sikre robust og effektiv distribusjon.
Qsilver - 27. juni 2024.
Introduksjon
Velkommen til den uoffisielle veiledningen for å skrive Qubic Smart Contracts (SC). Denne veiledningen har som mål å gi en klar og konsis oversikt over hvordan man utvikler og implementerer smartkontrakter i Qubic-økosystemet, med utgangspunkt i QPI-kjernedokumentasjonen.
Oversikt over Qubic Smart Contracts
For øyeblikket er QPI-filen på GitHub den primære dokumentasjonen for å skrive SC-er. QPI står for Qubic Programming Interface, som kan sammenlignes med et API (Application Programming Interface), men som er spesifikt for Qubic.
QPI-filen inneholder følgende:
- Forbudte tegn: Ingen multiplikasjons- eller divisjonsoperatorer, ingen preprosessordirektiver.
- Kjernekodens struktur:
- 5000 linjer med kode: Definerer alle typer variabelstørrelser, fra enkeltbiter til matriser med millioner av elementer.
- 1000 linjer med kode: Håndterer ulike køer og relaterte datatyper for effektiv datahåndtering.
- De siste par hundre linjene: Aktiverer tilgang til Qubic-nettverkets tilstand.
Nøkkelfunksjoner i QPI
Her er noen av de viktigste funksjonene 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)
Hva betyr dette?
Qubic Smart Contracts er Turing-komplette, noe som betyr at du kan implementere praktisk talt hvilken som helst beregningslogikk. Det er imidlertid visse begrensninger som sikrer at SC-er kjører i et svært avgrenset og sikkert miljø.
Allokering av minne
SCs bruker en statisk minneallokeringsmodell der alt minne må være forhåndsallokert. Denne modellen er avgjørende for å kunne håndtere datastrukturer effektivt innenfor en RAM-grense på 1 GB. Selv om denne grensen skal dobles i fremtiden, er det fortsatt en fast allokering, noe som krever nøye planlegging av minnebruken.
Bruk av bibliotek
For øyeblikket kan du ikke bruke eksterne biblioteker i SC-er; all nødvendig kode må inkluderes direkte i kildekoden. Etter hvert som flere SC-er inkorporerer ulike biblioteker, kan disse bli tilgjengelige for offentlig bruk i andre SC-er.
Transaksjoner og RCF-nettverksmeldinger
Hver SC har en unik adresse som er avledet fra en offentlig nøkkel, der kontrakt-ID-en er de laveste 64 bitene. SC-er påkalles via transaksjoner som sendes til denne adressen, med inputData
som spesifiserer operasjonen. I tillegg kan statusen til en SC spørres ut ved hjelp av RCF-nettverksmeldinger.
Eksempel: Airdrop SC
En airdrop-SC kan iterere gjennom et datasett og distribuere QU eller tokens til hver adresse i ett tikk per SC-transaksjon. Med en gjeldende grense på 1 024 transaksjoner per tick kan dette resultere i opptil 500 millioner overføringer per tick. Den faktiske gjennomstrømningen avhenger av kompleksiteten til SC.
Slik tester du SC
- Utvikle din SC: Skriv og feilsøk smartkontraktkoden din.
- Oppdater qubic-cli: Sørg for at SC-transaksjonene og RCF-funksjonene er integrert.
- Oppretten Testnet Core Update: Integrer SC-en din i et testnettmiljø.
- Kjør tester: Bruk qubic-cli til å spørre testnettnoden din og validere SC-ytelsen.
- Stresstesting: Utfør belastningstesting og automatiserte tester for å sikre stabilitet.
- Send inn for godkjenning: Når feilsøkingen er fullført, kan du sende inn SC-en for godkjenning av beslutningsdyktig styre og deretter gå videre til IPO.
Ved å følge disse trinnene kan du sikre at smartkontraktene dine er robuste, effektive og klare for distribusjon i Qubic-nettverket. God fornøyelse med kodingen!
Les Qsilvers "Uoffisielle" serie
- Qubic Crypto Detaljer
- En uoffisiell Qubic Midlertidig hvitbok
- En uoffisiell guide til å skrive Qubic Smart Contracts
- En uofficiel guide til Qubic Services Integration
For de siste oppdateringene, bli med i Valis Discord, følg oss på X, og bokmerk bloggen vår.
På denne siden
- En uoffisiell guide til å skrive Qubic Smart Contracts
- Introduksjon
- Oversikt over Qubic Smart Contracts
- Nøkkelfunksjoner i QPI
- Hva betyr dette?
- Allokering av minne
- Bruk av bibliotek
- Transaksjoner og RCF-nettverksmeldinger
- Eksempel: Airdrop SC
- Slik tester du SC
- Les Qsilvers "Uoffisielle" serie
Relaterte innlegg