Logo
  • Hjem
  • Blogg
  • Kontakt
Help us build Valis
🇳🇴

En uoffisiell guide til å skrive Qubic Smart Contracts

image

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:

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

  1. Utvikle din SC: Skriv og feilsøk smartkontraktkoden din.
  2. Oppdater qubic-cli: Sørg for at SC-transaksjonene og RCF-funksjonene er integrert.
  3. Oppretten Testnet Core Update: Integrer SC-en din i et testnettmiljø.
  4. Kjør tester: Bruk qubic-cli til å spørre testnettnoden din og validere SC-ytelsen.
  5. Stresstesting: Utfør belastningstesting og automatiserte tester for å sikre stabilitet.
  6. 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.

← Forrige

🇳🇴QWALLET og QPOOL folkefinansiering 🎉

Neste →

🇳🇴Qearn: Risikofri Avkastning ved å Låse QU

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

Logo

Execution

|

Transparency

XRSSDiscordGitHub
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)