Isang Di-Awtorisadong Gabay sa Pagsusulat ng Mga Qubic Smart Contract
Ang di-awtorisadong gabay na ito ay nagbibigay ng pangkalahatang-ideya sa pag-develop ng mga Qubic Smart Contract, detalyado ang mga pangunahing function, paglalaan ng memorya, at mga pamamaraan ng pagsubok upang matiyak ang matatag at mahusay na paglulunsad.
Qsilver Β· Hun 27, 2024.
Panimula
Maligayang pagdating sa di-awtorisadong gabay sa pagsusulat ng mga Qubic Smart Contract (SC). Ang gabay na ito ay naglalayong magbigay ng malinaw at maigsi na pangkalahatang-ideya kung paano bumuo at ipatupad ang mga smart contract sa loob ng ekosistema ng Qubic, batay sa pangunahing dokumentasyon ng QPI.
Pangkalahatang-ideya ng Mga Qubic Smart Contract
Sa kasalukuyan, ang pangunahing dokumentasyon para sa pagsusulat ng mga SC ay ang QPI file sa GitHub. Ang QPI ay nangangahulugang Qubic Programming Interface, katulad ng isang API (Application Programming Interface) ngunit tiyak para sa Qubic.
Kasama sa QPI file ang:
- Mga Ipinagbabawal na Karakter: Walang multiplication o division operators, walang preprocessor directives.
- Pangunahing Istruktura ng Code:
- 5000 linya ng code: Tumutukoy sa bawat uri ng variable size mula sa mga single bits hanggang sa mga arrays na may milyun-milyong elemento.
- 1000 linya ng code: Naghahandle ng iba't ibang queues at kaugnay na mga uri ng data para sa mahusay na paghawak ng data.
- Ilang daang linya sa huli: Nagbibigay-daan sa pag-access sa estado ng Qubic network.
Mga Pangunahing Function sa QPI
Narito ang ilan sa mga mahahalagang function na ibinibigay sa 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; // Nagbabalik ng βtotooβ kung ang entity ay natagpuan, βmaliβ kung hindi
uint8 hour() const; // [0..23]
sint64 invocationReward() const;
id invocator() const; // Nagbabalik ng id ng user/kontrata na nag-trigger sa kontratang ito; nagbabalik ng NULL_ID kung wala
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; // Nagbabalik ng id ng user na nag-trigger ng buong chain ng mga invocation; nagbabalik ng NULL_ID kung wala
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)
Ano ang Ibig Sabihin Nito?
Ang mga Qubic Smart Contract ay Turing complete, ibig sabihin maaari kang magpatupad ng halos anumang computational logic. Gayunpaman, may ilang mga paghihigpit upang matiyak na ang mga SC ay tumatakbo sa isang napakahigpit at ligtas na kapaligiran.
Paglalaan ng Memorya
Ang mga SC ay gumagamit ng static na modelo ng paglalaan ng memorya kung saan ang lahat ng memorya ay dapat na preallocated. Ang disenyo na ito ay mahalaga para sa mahusay na pamamahala ng mga istruktura ng data sa loob ng 1GB RAM limit. Bagaman ang limitasyong ito ay itinakdang madoble sa hinaharap, nananatili itong nakapirming paglalaan, na nangangailangan ng maingat na pagpaplano ng paggamit ng memorya.
Paggamit ng Aklatan
Sa kasalukuyan, hindi mo magagamit ang mga panlabas na aklatan sa mga SC; ang lahat ng kinakailangang code ay dapat na direktang isama sa source. Sa paglipas ng panahon, habang ang mas maraming SC ay nagsasama ng iba't ibang aklatan, maaari itong maging available para sa pampublikong paggamit sa loob ng iba pang mga SC.
Mga Transaksyon at Mga Mensahe ng RCF Network
Bawat SC ay may natatanging address na nakuha mula sa isang pampublikong susi, na ang contract ID ay ang pinakamababang 64 bits. Ang mga SC ay na-trigger sa pamamagitan ng mga transaksyon na ipinadala sa address na ito, na may inputData
na tumutukoy sa operasyon. Bukod dito, ang estado ng isang SC ay maaaring kuwestyunin gamit ang mga mensahe ng RCF network.
Halimbawa: Airdrop SC
Ang isang airdrop SC ay maaaring mag-iterate sa pamamagitan ng isang dataset at magpamahagi ng QU o mga token sa bawat address sa isang tick bawat SC transaction. Sa kasalukuyang limitasyon na 1024 transaksyon bawat tick, maaari itong magresulta sa hanggang 500 milyong transfer bawat tick. Ang aktwal na throughput ay nakasalalay sa pagiging kumplikado ng SC.
Paano Subukan ang Iyong SC
- I-develop ang iyong SC: Isulat at i-debug ang iyong smart contract code.
- I-update ang qubic-cli: Tiyakin na ang iyong SC transactions at RCF functions ay naka-integrate.
- Lumikha ng Testnet Core Update: I-integrate ang iyong SC sa isang testnet environment.
- Patakbuhin ang Mga Pagsubok: Gamitin ang qubic-cli para tanungin ang iyong testnet node at i-validate ang SC performance.
- Stress Testing: Magsagawa ng load testing at automated tests upang matiyak ang katatagan.
- Ipasa para sa Pag-apruba: Kapag tapos na ang debugging, ipasa ang iyong SC para sa quorum approval at pagkatapos ay magpatuloy sa IPO.
Sa pagsunod sa mga hakbang na ito, masisiguro mong ang iyong mga smart contract ay matatag, mahusay, at handa para sa pag-deploy sa Qubic network. Masayang pag-coding!
Basahin ang βHindi Opisyalβ na Serye ni Qsilver
- Isang Di-Pampublikong Qubic Interim Whitepaper
- Mga Detalye ng Qubic Crypto
- Isang Hindi Opisyal na Gabay sa Pagsasama ng mga Serbisyo ng Qubic
- Isang Di-Awtorisadong Gabay sa Pagsusulat ng Qubic Smart Contracts
Para sa pinakabagong mga update, sumali sa Valis Discord, sundan kami sa X, at i-bookmark ang aming blog.
Sa pahinang ito
- Isang Di-Awtorisadong Gabay sa Pagsusulat ng Mga Qubic Smart Contract
- Panimula
- Pangkalahatang-ideya ng Mga Qubic Smart Contract
- Mga Pangunahing Function sa QPI
- Ano ang Ibig Sabihin Nito?
- Paglalaan ng Memorya
- Paggamit ng Aklatan
- Mga Transaksyon at Mga Mensahe ng RCF Network
- Halimbawa: Airdrop SC
- Paano Subukan ang Iyong SC
- Basahin ang βHindi Opisyalβ na Serye ni Qsilver