[ad_1]

Organisez des collections NFT à partir d’un DAO de frappe avec de petits contrats de procuration

Une vue grossissante du composant de bloc, avec une interface alternative.
Vue proxy conceptuelle dans un contrat intelligent tiers existant. Photo gracieuseté de Geralt de Pixabay.com.

Le Immutable Ecosystem DAO (ou Immutable DAO) est une petite collection de contrats intelligents créés par ImmuableSoft, une organisation à but non lucratif d’utilité publique ouverte 501(c)(3). Les membres qui rejoignent ce DAO ouvert peuvent sécuriser leur propriété numérique et concéder aux utilisateurs les droits d’utilisateur final de leurs créations.

En enregistrant la somme de contrôle du fichier de leur création numérique (SHA256) dans un NFT frappé en chaîne, un enregistrement de transaction horodaté et immuable signé par le portefeuille du créateur numérique démontre la première provenance, une étape essentielle pour prouver la propriété.

Conçu à l’origine pour sécuriser les versions de fichiers/logiciels accessibles au public, la falsification et la fraude ont attiré les créateurs NFT traditionnels vers notre DAO. Voir Provenance du créateur dans les NFT pour en savoir plus sur ce mouvement. Cet article poursuit le voyage de notre DAO, décrivant les détails de la façon dont nos membres peuvent déployer leur propre proxy de contrat intelligent pour distinguer des collections spécifiques de leurs NFT.

Pour les collections NFT, le problème se pose lors de la visualisation d’art NFT créés avec le DAO immuable en dehors de notre dApp (c’est-à-dire les téléspectateurs NFT et les échanges tiers). Pour des raisons historiques (norme Métadonnées) le name() la fonction smart contract ERC721 devient le nom « collection ». Chaque membre de notre DAO frappe ses propres NFT uniques – l’identifiant de membre est intégré dans chaque frappe tokenId (voir Sérialisation de données dans de grands nombres entiers).

Cependant, comme tous les NFT de tous les membres DAO sont créés par le même contrat intelligent, ils apparaissent tous dans la même « collection » sur les échanges tiers (OpenSea, Rarible, etc.). Cela peut créer une expérience moins que premium (c’est le moins qu’on puisse dire) pour les enchères d’art NFT haut de gamme, etc.

Bien qu’il serait bien d’ajouter une option tokenId paramètre à ERC721 name() fonction, ou une nouvelle fonction collectionName(tokenId) Cela n’arrivera probablement pas à tout moment pour soutenir l’émergence des DAO de frappe NFT. En tant que problème immédiat nécessitant une solution, nous avons abordé le problème en permettant aux membres du DAO immuable de déployer un petit contrat intelligent qui remplace le « nom » de la collection tout en assurant la procuration de tous les autres appels de contrat intelligent ERC721 au contrat intelligent DAO associé (dans ce cas CreatorTokenCreatorToken).

Ensuite, les tiers qui visualisent la « collection » via l’adresse du contrat intelligent proxy verront le nom unique de la collection et uniquement les NFT spécifiques à cette collection. D’autres parties de l’implémentation du jeton peuvent également être remplacées. Ce proxy pourrait être la base pour déplacer complètement les NFT hors du DAO si vous le souhaitez (un proxy avec une clause d’échappement).

Beaucoup a été discuté concernant les procurations et les contrats intelligents évolutifs ; cependant, ce type de proxy est moins complexe car les données de base résident toujours sur les contrats intelligents DAO, pas sur le proxy. Cela signifie que, contrairement aux proxys évolutifs, delegateCall() N’est pas utilisé.

Au lieu de cela, initialiser le proxy avec l’adresse du contrat maître DAO (voir CreatorTokenCreatorToken sur Polygonscan) permet à chaque fonction d’interface de jeton ERC721 de proxy l’appel dans le contrat intelligent DAO immuable. Il s’agit le plus souvent d’une relation un à un.

Une initialisation unique est requise pour configurer le proxy avec les contrats intelligents DAO immuables et l’identifiant d’entité et de produit (tel que défini dans le DAO) afin de limiter la collection de proxy. Voici un extrait de l’étape d’initialisation :

L’ERC721 et l’interface énumérable associée, telle que totalSupply(), tokenByIndex(), balanceOf() et tokenOfOwnerByIndex() ne sont pas traduisibles un à un. Ces fonctions standard ERC721 doivent renvoyer uniquement le sous-ensemble de NFT dans le DAO immuable correspondant au produit spécifique du créateur (c’est-à-dire cette collection). Pour accomplir cela pour les quatre (4) fonctions principales ci-dessus, nous avons créé une fonction interne pour prendre en charge toutes les variantes, en comptant le nombre de jetons auxquels l’index correspond à quel jeton.

Ce contrat intelligent proxy est petit et peu coûteux à déployer. Pour l’extensibilité, le proxy lui-même peut être un contrat intelligent évolutif. Ce double proxy est préféré pour les collections NFT qui peuvent se transformer, changer ou autrement être ouvertes à un développement ultérieur. Le proxy DAO ci-dessus pour les collections NFT nécessiterait des modifications d’initialisation pour hériter OpenZeppelinévolutivité basée.

Utiliser ce proxy pour remplacer tokenURI() est également possible. Ceci est utile avec les contrats légaux où le DAO immuable NFT sécurise un fichier privé (contrat signé, etc.) avec un hachage PoE. Pourtant, le contrat intelligent proxy renvoie une image publique NFT Metadata du certificat vérifiant le fichier privé par un tiers. Consultez notre autre article Interopérabilité des contrats Ricardien, pour plus d’informations sur ce scénario de fournisseur de services contractuels.

Un autre cas d’utilisation important concerne les éléments de jeu où un tokenURI() peut être surchargé pour permettre le changement dynamique de l’ensemble de l’URI de base de la collection par exemple. Avec une dérogation en place pour tokenURI()un nouveau setTokenBaseURI() Une fonction pourrait être ajoutée pour que le propriétaire du proxy déplace tous les NFT de son jeu vers un nouveau domaine web2 en un seul appel, empruntant à l’efficacité de la norme ERC1155.

Grâce à un URI de collection de base, l’ID de jeton (ou le nom de fichier de fin du fichier privé DAO immuable) est ajouté à la base de l’URI et généré par tokenURI(). Le propriétaire du proxy est responsable de l’hébergement du point de terminaison URI web2 qui sert les détails des métadonnées JSON utilisées pour afficher ce NFT.

Pour voir la mise en œuvre complète, il peut être trouvé ici, dans notre dépôt principal GitHub. Comme les identifiants d’entité et de produit sont définis lors du déploiement, tout le monde peut utiliser le même contrat intelligent sans modifications. Nous terminons avec un exemple qui montre un client déployant son propre proxy en utilisant le 10_deploy_collection_proxy.js script de déploiement.

Notre exemple de membre a enregistré son nom d’entité et créé un produit sur le marché. L’option Développeurs du produit créé affiche les numéros d’entité et de produit uniques et immuables, respectivement, les valeurs deux (2) et zéro (0). Voir cette image de notre dApp.

L’utilisateur DAO découvre ses identifiants d’entité et de produit dans l’onglet Développeurs de la dApp.

Tout d’abord, nous clonons le référentiel et installons les dépendances avec NPM à l’aide de l’invite de commande (MS Windows dans cet exemple). Cela nécessite NPM, alors assurez-vous que NPM est déjà installé sur votre système de développement ou faites-le maintenant avant de continuer.

D:\>git clone https://github.com/ImmutableSoft/ImmutableEcosystem.git
Cloning into 'ImmutableEcosystem'...
remote: Enumerating objects: 803, done.
remote: Counting objects: 100% (85/85), done.
remote: Compressing objects: 100% (60/60), done.
Receiving objects: 98% (787/803), 10.53 MiB | 10.52 MiB/sremote: Total 803 (delta 44), reused 42 (delta 24), pack-reused 718
Receiving objects: 100% (803/803), 14.72 MiB | 10.65 MiB/s, done.
Resolving deltas: 100% (451/451), done.
D:\>cd ImmutableEcosystemD:\ImmutableEcosystem>npm install
...
D:\ImmutableEcosystem>truffle compile --all
...
D:\>

S’il y a une erreur à la dernière étape, assurez-vous que la truffe est installée globalement pour NPM (npm install -g truffle). Une fois les contrats compilés, nous ouvrons le dossier de déploiement 10_deploy_collection_proxy.js et remplacez les paramètres d’initialisation (en gras ci-dessous) par notre entité unique et l’identifiant produit de cette collection.

Dans ce cas, le nom de la collection est « Systèmes informatiques », le symbole du jeton est « CSI » et l’entité DAO immuable est deux (2) et le produit zéro (0) (de l’image ci-dessus).

Une fois le fichier de déploiement modifié, la dernière étape consiste à exécuter uniquement ce déploiement sur le réseau EVM (Polygon Mainnet dans cet exemple). Vous devrez remplir secrets.json avec vos mots de récupération de portefeuille pour que la transaction de déploiement de contrat intelligent soit signée avec la bonne clé privée.

Assurez-vous de supprimer les mots de récupération de ce fichier après le déploiement – ne les validez jamais dans un référentiel git.

L’utilisation d’un portefeuille sans valeur élevée de crypto (juste du gaz) pour déployer et gérer la propriété de contrats intelligents est recommandée pour éviter que votre système de développement ne soit une cible pour les pirates.

D:\>ImmutableEcosystem>truffle migrate --f 10--to 10--compile-none --skip-dry-run --network polygon_mainnet

Avec la sortie d’adresse de contrat intelligent proxy déployé ci-dessus, parcourez votre échange NFT tiers préféré et ne voyez que les NFT de ce produit sous le nouveau nom de collection. Notez que les versions futures, ou actuelles, selon le moment où vous lisez ceci, nécessiteront que le proxy soit déployé avec la même adresse de portefeuille enregistrée avec le DAO immuable pour cet identifiant d’entité. Cela aidera à sécuriser l’écosystème proxy.

En conclusion, il n’y a pas de limite au nombre de proxys qu’un membre DAO peut déployer. Pourtant, chacun doit être pour un produit unique, et tous doivent être des produits appartenant à l’adresse de l’entité enregistrée pour ce produit (et le nom du produit DAO doit correspondre au nom de la collection !). Carpe partem pour les collections NFT frappées par DAO représentées par un contrat intelligent proxy !

[ad_2]

Télécharger ici

Leave a Reply

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Instagram

Ce message d’erreur n’est visible que pour les administrateurs de WordPress

Erreur. Aucun flux trouvé.

Veuillez aller sur la page de réglages d‘Instagram Feed pour connecter votre compte.