Déploiement de la blockchain

1. Installez Node.js
https://nodejs.org/en/
Insérer la description de l'image ici

Une fois l'installation terminée, vérifiez la version installée.
2. Installez Truffle.
Truffle est un cadre de développement de contrats intelligents Solidity qui peut aider les développeurs à développer rapidement une DApp.
Insérer la description de l'image ici

Cela vous invite à mettre à jour npm.

Insérer la description de l'image ici

3. Installez Ganache CLI ou ganache
Ganache CLI est la version en ligne de commande du logiciel d'émulation de nœud Ethereum ganache. Cela peut aider les développeurs à développer rapidement Ethereum Dapp.

Insérer la description de l'image ici
Insérer la description de l'image ici

4. Utilisez Truffle pour créer un projet.
Créez un dossier Voting pour stocker le projet, puis créez le projet.
Insérer la description de l'image ici

Une erreur est signalée et la connexion ne peut pas être établie. Vous pouvez directement aller sur github pour télécharger le projet
https://github.com/truffle-box/react-box

Insérer la description de l'image ici

5. Créez le fichier de contrat Voting.sol dans le répertoire des contrats

Insérer la description de l'image ici

pragma solidity ^0.4.18;
contract Voting {
  /*
  mapping:称为映射或者字典,一种键值对的映射关系存储结构
  mapping的key:存储类型为bytes32,存储的是候选人名字
  mapping的value:存储类型为uint8的无符号整型,
  bytes32类型:能存储32个字节,即32*8=256位的二进制内容
  uint8类型:能存储8个字节,即8*8=64位的二进制内容
  */
  mapping (bytes32 => uint8) public votesReceived;
  /*
  Solidity目前不允许字符串数组,这里使用bytes32类型的数组来存储候选人名字
  */
  bytes32[] public candidateList;
  /*
  构造函数,传入bytes32类型的数组,初始化所有候选人名字
  */
  constructor(bytes32[] candidateNames) public {
    candidateList = candidateNames;
  }
  /*
    查询指定候选人的总票数
  */
  function totalVotesFor(bytes32 candidate) constant public returns (uint8) {
    /*
    require像其他语言中的断言(assert),用于条件检查。
    条件满足时继续执行,条件不满足则抛出异常。
    */
    require(validCandidate(candidate));
    return votesReceived[candidate];
  }
  /*
    对指定候选人进行投票
  */
  function voteForCandidate(bytes32 candidate) public {
    // 投票前判断是否为候选人名字
    require(validCandidate(candidate));
    votesReceived[candidate] += 1;
  }
  /*
    检查投票名字的有效性,即判断投票名字是否在候选人名字里面
  */
  function validCandidate(bytes32 candidate) constant public returns (bool) {
    // 循环遍历候选人列表
    for(uint i = 0; i < candidateList.length; i++) {
      // 判断投票名字是否为候选人
      if (candidateList[i] == candidate) {
        return true;
      }
    }
    return false;
  }
}

6. Écrivez un script de déploiement de contrat intelligent.
Créez un nouveau fichier dans le répertoire migrations avec le nom "3_deploy_voting.js".
Insérer la description de l'image ici

var Voting = artifacts.require("./Voting.sol");
module.exports = function(deployer) {
  deployer.deploy(Voting, ['Jack Chen', 'Andy Lau', 'Stephen Chow', 'Wenzil'], {
    gas: 6700000
  });
};

7. Modifier truffle.js
Insérer la description de l'image ici

Réglez le gaz pour éviter d'oublier l'opération plus tard.
8. Configurez le métamasque, remarque : l'ID de chaîne par défaut est 1337
Insérer la description de l'image ici

Insérer la description de l'image ici

9. Importez le compte via la clé privée.Après l'importation, vous pouvez effectuer des opérations de transfert ETH entre les nœuds.
Insérer la description de l'image ici

10. Terminez la création de blocs par des transferts mutuels. Chaque fois qu'un transfert est effectué, un nouveau bloc sera lié à l'ensemble de la chaîne.

Insérer la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/weixin_46504000/article/details/129426424
conseillé
Classement