开发一个区块链项目的流程是什么 以太坊智能合约开发DApp的方法是什么

入门知识 2周前 (06-22) 14次浏览 0个评论

以太坊智能合约开发DApp的方法是什么

本文主要介绍《以太坊智能合约开发DApp的方法是什么》,希望能解决大家遇到的相关问题。我们来看看这篇《以太坊智能合约开发DApp的方法是什么》一文。

1. 搭建开发环境

我们正在使用模拟的内存区块链(ganache)而不是真正的区块链进行开发。在本教程的第 2 章中,我们将与真实的区块链进行交互。下面是安装ganache、web3js,然后在linux上启动测试链的步骤。macOS 上的安装过程相同。

你可以看到 ganache-cli 自动创建了 10 个测试账户,每个账户都预先分配了 100 个(虚构的)以太币

如果需要更详细的开发环境安装教程,可以参考以下文章:

2.简单的投票合约

我们将使用一种编程语言来编写我们的合约。如果您熟悉面向对象的编程,学习编写合约应该是轻而易举的事。我们将编写一个带有构造函数的合约对象来初始化一个候选数组。合约对象有两种方法:

返回候选人获得的总票数

增加候选人的票数。

注意:当您将合约部署到区块链时,构造函数只会被调用一次。与在网络世界中每次部署代码都会覆盖旧代码不同,部署的代码在区块链上是不可变的。例如,如果你更新你的合约并再次部署,旧的合约仍然会在区块链上,它存储的数据不会受到影响,新的部署会创建一个新的合约实例。

这是投票合约的代码:

pragma solidity ^0.4.18;  // We have to specify what version of compiler this code will compile with   
    contract Voting {  
      /* mapping field below is equivalent to an associative array or hash. The key of the mapping is candidate name stored as type bytes32 and value is an unsigned integer to store the vote count */  
        
      mapping (bytes32 => uint8) public votesReceived;  
        
      /* Solidity doesn't let you pass in an array of strings in the constructor (yet). We will use an array of bytes32 instead to store the list of candidates */  

        
      bytes32[] public candidateList;  
      
      /* This is the constructor which will be called once when you deploy the contract to the blockchain. When we deploy the contract, we will pass an array of candidates who will be contesting in the election */  
      function Voting(bytes32[] candidateNames) public {  
        candidateList = candidateNames;  
      }  
      
      // This function returns the total votes a candidate has received so far   function totalVotesFor(bytes32 candidate) view public returns (uint8) {  require(validCandidate(candidate));  return votesReceived[candidate];  
      }  

区块链开发应用公有链_开发一个区块链项目的流程是什么_sitebitkan.com 区块链公链开发

             // This function increments the vote count for the specified candidate. This   // is equivalent to casting a vote   function voteForCandidate(bytes32 candidate) public {  require(validCandidate(candidate));           votesReceived[candidate] += 1;         }                function validCandidate(bytes32 candidate) view public returns (bool) {  for(uint i = 0; i      }

复制上面的代码,在目录中创建一个 Voting.sol 文件。现在让我们编译代码并将其部署在 ganache 的区块链上。

为了编译代码,我们需要安装名为 solc 的 npm 模块

~/hello_world_voting$ npm install solc

我们将在节点控制台中使用这个库来编译我们的合约。在上一篇文章中我们提到 web3js 是一个库,它允许我们通过 rpc 访问区块链。我们将使用这个库来部署我们的应用程序并与之交互。

首先,在命令行打断正在运行的node命令开发一个区块链项目的流程是什么,进入node控制台开发一个区块链项目的流程是什么,初始化solc和text对象。下面的所有代码片段都需要在节点控制台中输入

~/hello_world_voting$ node  
> Web3 = require('web3')  
> web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));

为确保 web3 对象已初始化且区块链可访问,让我们尝试查询区块链上的所有帐户。您应该会看到如下结果:

> web3.eth.accounts  
    ['0x9c02f5c68e02390a3ab81f63341edc1ba5dbb39e',  '0x7d920be073e92a590dc47e4ccea2f28db3f218cc',  '0xf8a9c7c65c4d1c0c21b06c06ee5da80bd8f074a9',  '0x9d8ee8c3d4f8b1e08803da274bdaff80c2204fc6',  '0x26bb5d139aa7bdb1380af0e1e8f98147ef4c406a',  '0x622e557aad13c36459fac83240f25ae91882127c',  '0xbf8b1630d5640e272f33653e83092ce33d302fd2',  '0xe37a3157cb3081ea7a96ba9f9e942c72cf7ad87b',  '0x175dae81345f36775db285d368f0b1d49f61b2f8',  '0xc26bda5f3370bdd46e7c84bdb909aead4d8f35f3']

从voting.sol 加载代码,将其保存在字符串变量中,然后开始编译

> code = fs.readFileSync('Voting.sol').toString()  
> solc = require('solc')  
> compiledCode = solc.compile(code)

当您的代码成功编译并打印合约对象的内容(节点控制台中输出的内容)时,有 2 个字段需要理解:

这是《以太坊智能合约开发DApp的方法是什么》的介绍。希望大家多多支持编程宝库。

下一节:web3.eth。如何使用编程技术和编程

网络3.eth。乙。如何使用》文章。返回链上指定地址的账户…

挖矿网Ethos中文站简单易用的挖矿系统,为挖矿产业提供教程软件以及矿机测评交易信息等,挖矿网各种数字货币挖矿收益对比计算,挖矿网介绍挖矿的工具,以及矿场的最新消息等。http://www.ethospool.com/

喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址