Fermer

juillet 6, 2018

Règles de l'application et configuration de la blockchain –


Ceci est la première partie d'une série sur la construction d'applications décentralisées utilisant la chaîne de blocs Ethereum

Nous allons construire 3 choses:

  1. un jeton personnalisé
  2. un DAO qui utilise les jetons comme votes
  3. un prototype d'interface Web pour interagir avec les contrats intelligents

Après avoir suivi les instructions de ce cours, vous serez capable de créer votre propre jeton Ethereum personnalisé avec ou sans DAO et application associés.

Ce que nous allons construire

Le projet que nous construisons s'appelle The Neverending Story (TNS). Le projet complet arrive bientôt à story.bitfalls.com . Son code complet est sur GitHub .

L'histoire sans fin est une application web avec des champs de saisie (texte et image) où les utilisateurs qui ont MetaMask installé peuvent envoyer un paragraphe de texte ou une image, en fonction de certaines conditions. (L'image n'apparaît qu'une fois tous les 50 paragraphes et ne peut être qu'une URL.)

L'histoire complète est affichée à côté des champs de saisie. Plus il y a d'entrées dans l'histoire, plus il est coûteux de soumettre une entrée. La soumission d'une entrée est une action disponible pour tous ceux qui payent les droits, sont inclus dans la liste blanche et possèdent au moins un jeton TNS.

Types d'actions:

  1. Soumettre l'entrée : nécessite que l'expéditeur 1 jeton TNS et être dans la liste blanche (voir ci-dessous). Coûts 0,0001 ether * nombre d'entrées dans le chapitre actuel (voir la section "Chapitres" ci-dessous). Cela ne peut être qu'une image par 50 entrées de texte et ne peut être qu'une URL. Sinon, c'est du texte. Pas de code, texte brut uniquement. Dans les deux cas, la limite de taille de champ de texte est de 256 caractères
  2. Propriété de transfert [Owner only]: peut transférer la propriété à une nouvelle adresse.
  3. Réduire les frais [Owner only]: le propriétaire peut payer pour soumettre des entrées (voir la section "Frais" ci-dessous) plus bas sans demander de vote.
  4. Acheter des jetons TNS : envoyer de l'éther au DAO pour obtenir une quantité proportionnelle de jetons TNS automatiquement renvoyés. S'il n'y a pas assez de jetons TNS dans le DAO, vous devez les obtenir à partir d'un échange.
  5. Check balance du jeton : une action en lecture seule qui vérifie le nombre de jetons TNS présents dans le DAO
  6. Whitelist : cette fonction est appelée automatiquement quand ether est envoyé à l'adresse du DAO. Il note l'expéditeur dans un tableau de liste blanche pour référence future afin que les personnes qui acquièrent beaucoup de TNS ne peuvent pas simplement les distribuer à différents comptes.
  7. Fin Chapitre : déclenche le processus de fin de chapitre pour distribuer Ether
  8. Retrait : appelé lorsque les parties prenantes veulent retirer leur dividende.
  9. Propriétaire Retrait [Owner only]: appelé par le propriétaire pour retirer ses gains

Les parties prenantes (détenteurs de jetons TNS) seront en mesure de voter sur les propositions, et toute proposition atteignant plus de votes «OUI» que les votes «NON» sera approuvée. Le nombre de votes n'a pas d'importance; le rapport compte. Les propositions doivent être ouvertes aux votes pour une période donnée, selon le type de proposition

Types de proposition:

  1. Supprimer l'entrée : lorsque confirmé par un vote, l'entrée cible est supprimée. Temps de vote: 48 heures .
  2. Suppression d'urgence entrée [Only Owner]: ne peut être déclenché que par le propriétaire. Lorsqu'elle est confirmée par un vote, l'entrée cible est supprimée. Temps de suffrage: 12 heures .
  3. Urgence remove image [Only Owner]: s'applique uniquement aux entrées d'image. Peut seulement être déclenché par le propriétaire. Lorsqu'elle est confirmée par un vote, l'entrée cible est supprimée. Temps de vote: 4 heures

Plus tard, nous pouvons ajouter d'autres types de propositions en utilisant la même méthode

Les propositions doivent toutes être clairement listées quelque part dans l'interface utilisateur bien sûr, pour que les gens sachent que leurs votes sont nécessaires. Un électeur n'a besoin que d'un jeton TNS pour pouvoir voter, mais plus il y a de jetons, plus son vote vaut la peine.

Important: les jetons d'un utilisateur sont verrouillés lors d'un vote. Cela empêche un détenteur TNS de baleine de maîtriser chaque vote actif. Les électeurs devront répartir leur pouvoir de vote sur les votes qui leur importent

Chapitres

Après 1000 entrées ou trois semaines de temps, la fin d'un chapitre peut être appelée par n'importe quel utilisateur. Le DAO distribuera ensuite l'éther collecté à tous les détenteurs de TNS, proportionnellement à leur solde. Un titulaire n'a pas besoin d'être ajouté à la liste blanche dans le DAO pour obtenir un dividende éther. Ils ont seulement besoin de contenir des jetons TNS au moment de la distribution.

La distribution est un mécanisme d'attraction: les détenteurs doivent appeler la fonction retirer du DAO pour obtenir leur éther. Il ne sera pas appelé automatiquement. La fenêtre de retrait est de 72 heures. 50% de l'éther non réclamé va au propriétaire, tandis que 50% va dans le dividende du chapitre suivant.

Honoraires

1% de tous les frais d'inscription soumis va au propriétaire actuel. Le reste est mis dans un pool et distribué à tous les détenteurs de TNS après la fin de chaque chapitre, proportionnellement à leurs avoirs TNS.

Les honoraires du propriétaire entrent dans un solde distinct à partir duquel ils peuvent se retirer périodiquement à volonté

, l'utilisateur doit envoyer 0.01 ether au DAO. Tous les futurs achats de jetons sont à un prix beaucoup plus bas. La taxe d'entrée de 0,01 éther est là pour prévenir les attaques de Sybil . Si l'utilisateur envoie plus de 0,01 dans le premier aller, le 0,01 va vers la liste blanche, tandis que les restes seront utilisés pour calculer combien plus TNS l'utilisateur obtient. En un mot, tous les jetons seront renvoyés à l'utilisateur.

En un mot, imaginez ce projet comme une histoire d'autoparticipation participative avec crowdsourcing et censure communautaire. Une histoire-DAO

Bootstrapping: PdA Private Blockchain

Nous allons faire deux procédures d'amorçage: celle-ci se concentrera sur l'exécution locale de notre propre blockchain Ethereum. Il utilisera Preuve d'autorité comme mécanisme de consensus, et fonctionnera comme n'importe quel vrai testnet d'Ethereum .

Note: l'approche dans cette section pourrait ne pas fonctionner parce que d'un bug dans Puppeth . C'est en train d'être travaillé. Pour l'instant, donnez la priorité à la mise en place de Ganache (voir ci-dessous).

  • Téléchargez et installez Virtualbox .
  • Téléchargez et installez Vagrant . Si vous n'êtes pas sûr de ce que sont les machines virtuelles, veuillez voir cet article .
  • Télécharger Geth de ici . Assurez-vous de faire défiler et télécharger "Geth & Tools", pas seulement "Geth". Si vous êtes sur macOS, vous pouvez aussi utiliser Homebrew et l'installer avec brew install ethereum .
  • Mist peut être téléchargé ici . Assurez-vous de télécharger "Mist" et non "Ethereum Wallet". Mist est le "navigateur" Ethereum qui peut ouvrir plusieurs DApps. Ethereum Wallet est la même chose, mais verrouillé en mode portefeuille, de sorte que vous ne pouvez pas ouvrir d'autres applications avec elle. Ceci est pour empêcher les utilisateurs non techniques de visiter des DApp malveillants.

Si vous êtes curieux, en savoir plus sur Mist et Geth ici .

Nous avons besoin de VirtualBox et Vagrant parce que nous ' J'utiliserai cette approche pour lancer deux machines virtuelles sur lesquelles nos noeuds fonctionneront, simulant deux ordinateurs utilisant un noeud Ethereum.

Ensuite, suivez les instructions de à ce post pour obtenir une chaîne de blocs privée PoA mis en place.

Vous allez vous retrouver avec deux nœuds en cours d'exécution. Chacun sera minage à sa propre adresse. Prenez note de ces adresses. Les miennes étaient:

  • Noeud1: 0x4b61dc81fe382068e459444e8beed1aab9940e3b
  • Noeud2: 0x97e01610f1c4f4367c326ed1e9c41896b4378458

Bootstrapping: Ganache CLI

Le deuxième type de bootstrapping que nous pouvons approcher, et ceci est particulièrement utile pour les tests nos contrats, est Ganache CLI, précédemment connu sous le nom de Testrpc.

Ganache est une simulation de blockchain basée sur JavaScript exécutée localement. Il ré-exécute la blockchain à partir de zéro chaque fois que nous exécutons des tests ou relançons notre application. Cela nous permet de tester rapidement les cas limites mais ne se prête pas bien aux tests à long terme de contrats de longue durée.

Tout d'abord, installez Ganache avec npm install -g ganache-cli




Source link