Ce guide non officiel fournit un aperçu du développement des contrats intelligents Qubic, détaillant les fonctions clés, l'allocation de mémoire et les procédures de test pour assurer un déploiement robuste et efficace.
Qsilver · Jun 27, 2024.
Introduction
Bienvenue dans le guide non officiel pour écrire des contrats intelligents Qubic (SC). Ce guide vise à fournir une vue claire et concise sur la manière de développer et d'implémenter des contrats intelligents au sein de l'écosystème Qubic, en s'appuyant sur la documentation principale de QPI.
Aperçu des contrats intelligents Qubic
Actuellement, la documentation principale pour rédiger des SC est le fichier QPI sur GitHub. QPI signifie Interface de Programmation Qubic, analogue à une API (Interface de Programmation d'Applications) mais spécifique à Qubic.
Le fichier QPI inclut :
- Caractères Interdits : Pas d'opérateurs de multiplication ou de division, pas de directives de préprocesseur.
- Structure de Code Principale :
- 5000 lignes de code : Définit chaque type de taille de variable, des bits uniques aux tableaux avec des millions d'éléments.
- 1000 lignes de code : Gère diverses files d'attente et types de données associés pour un traitement efficace des données.
- Les quelques centaines de lignes finales : Permettent l'accès à l'état du réseau Qubic.
Fonctions clés dans QPI
Voici quelques-unes des fonctions essentielles fournies dans le 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; // Retourne “true” si l'entité a été trouvée, “false” sinon
uint8 hour() const; // [0..23]
sint64 invocationReward() const;
id invocator() const; // Retourne l'id de l'utilisateur/contrat ayant déclenché ce contrat ; retourne NULL_ID si aucun
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; // Retourne l'id de l'utilisateur ayant déclenché toute la chaîne d'invocations ; retourne NULL_ID si aucun
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)
Qu'est-ce que cela veut dire ?
Les contrats intelligents Qubic sont Turing complets, ce qui signifie que vous pouvez implémenter pratiquement toute logique computationnelle. Cependant, certaines restrictions garantissent que les SC fonctionnent dans un environnement hautement compartimenté et sécurisé.
Allocation de mémoire
Les SC utilisent un modèle d'allocation de mémoire statique où toute la mémoire doit être préallouée. Ce design est crucial pour gérer les structures de données efficacement dans une limite de RAM de 1GB. Bien que cette limite soit prévue pour doubler à l'avenir, elle reste une allocation fixe, nécessitant une planification minutieuse de l'utilisation de la mémoire.
Utilisation de bibliothèques
Actuellement, vous ne pouvez pas utiliser de bibliothèques externes dans les SC ; tout le code nécessaire doit être inclus directement dans la source. Au fil du temps, à mesure que de plus en plus de SC intègrent diverses bibliothèques, celles-ci pourraient devenir disponibles pour un usage public au sein d'autres SC.
Transactions et messages réseau RCF
Chaque SC possède une adresse unique dérivée d'une clé publique, avec l'ID de contrat étant les 64 bits les plus bas. Les SC sont invoqués via des transactions envoyées à cette adresse, avec inputData
spécifiant l'opération. De plus, l'état d'un SC peut être interrogé à l'aide de messages réseau RCF.
Exemple : SC de largage
Un SC de largage pourrait parcourir un ensemble de données et distribuer des QU ou des tokens à chaque adresse en un seul tick par transaction SC. Avec une limite actuelle de 1024 transactions par tick, cela pourrait aboutir à jusqu'à 500 millions de transferts par tick. Le débit réel dépend de la complexité du SC.
Comment tester votre SC
- Développez votre SC : Écrivez et déboguez votre code de contrat intelligent.
- Mettez à jour qubic-cli : Assurez-vous que vos transactions SC et fonctions RCF sont intégrées.
- Créez une mise à jour du noyau Testnet : Intégrez votre SC dans un environnement de testnet.
- Exécutez les tests : Utilisez qubic-cli pour interroger votre nœud de testnet et valider la performance du SC.
- Tests de charge : Effectuez des tests de charge et des tests automatisés pour assurer la stabilité.
- Soumettez pour approbation : Une fois le débogage terminé, soumettez votre SC pour approbation de quorum puis passez à l'IPO.
En suivant ces étapes, vous pouvez vous assurer que vos contrats intelligents sont robustes, efficaces et prêts à être déployés dans le réseau Qubic. Bonne programmation !
Lisez la série “Non Officielle” de Qsilver
- Un livre blanc intérimaire non officiel sur Qubic
- Détails sur Qubic Crypto
- Un guide non officiel sur l'intégration des services Qubic
- Un guide non officiel pour écrire des contrats intelligents Qubic
Pour les dernières mises à jour, rejoignez le Discord de Valis, suivez-nous sur X, et ajoutez notre blog à vos favoris.
Suivant →