主页 > 苹果版imtoken > 从零开始的以太坊区块链开发指南 II

从零开始的以太坊区块链开发指南 II

苹果版imtoken 2023-03-11 05:47:13

前言

上一篇我们介绍了Geth的安装,今天介绍一下如何部署智能合约。 如果你还没有看过前面介绍的内容以太坊区块链技术,建议你看一下之前的文章《以太坊区块链开发指南从零开始1》。部署智能合约首先需要一个用solidity编写的合约文件和开发以太坊的框架Truffle

安装Solc

solc 是用于编译智能合约文件的编译器。

npm install -g solc

安装完成后,查看是否安装成功。

$solcjs --version
0.4.19+commit.c4cbbb05.Emscripten.clang

输出版本号表示安装成功。

安装松露

npm install -g truffle

安装 Truffle 后,我们运行命令。

truffle version

输出

Truffle v4.0.3 (core: 4.0.3)
Solidity v0.4.18 (solc-js)

这意味着我们的 Truffle 安装成功。

创建一个 solidity 项目

truffle init

以太坊区块链技术_以太坊区块链数据下载_sitechainfor.com 以太坊区块链浏览器

创建一个 solidity 项目

该命令会自动创建一个项目和相关文件。 并为我们创建了一个内置的合约文件Migrations.sol

以太坊区块链技术_以太坊区块链数据下载_sitechainfor.com 以太坊区块链浏览器

truffle 创建的项目目录

pragma solidity ^0.4.2;
contract Voting{
    //voter struct
    struct Voter{
        bytes32 name;
        bool voted;//is voted or not
        uint vote;//vote who
        uint givenRightTime;//aurth  time
        uint votetime;//vote time
    }
    struct Proposal{
        bytes32 name;
        uint voteCount;
    }
    address public chairperson;//vote initiator
    
    mapping(address=>Voter)public voters;//voters
    Proposal[] public proposals;//can vote to who
    
    //constructor
    function  Voting(bytes32[] proposalNames) public{
        chairperson = msg.sender;
        //init proposals
        for(uint i = 0;i winningVoteCount){
                winningVoteCount = proposals[p].voteCount;
                winningProposalIndex = p ;
            }
        }
    }
    
    function winnerName()public constant returns(bytes32 winnerName){
        winnerName = proposals[winningProposalIndex()].name;
    }
}

module.exports = {
  // See 
  // to customize your Truffle configuration!
  networks: {
    development: {
      host: "localhost",
      port: 8081,
      network_id: "*", // Match any network id
      gas: 1000000
    }
  }
};

host和port是你本地以太坊节点的IP地址和端口以太坊区块链技术,gas是部署需要的coin,然后打开项目文件migrations文件夹下的1_initial_migration.js,把你要部署的文件改成Voting.sol

// var Migrations = artifacts.require("./Migrations.sol");
var Voting = artifacts.require("./Voting.sol");
module.exports = function(deployer) {
  deployer.deploy(Voting,['hexo','tfboys']);
};

truffle compile

以太坊区块链技术_以太坊区块链数据下载_sitechainfor.com 以太坊区块链浏览器

编译成功

运行松露迁移

truffle migrate

以太坊区块链技术_以太坊区块链数据下载_sitechainfor.com 以太坊区块链浏览器

部署

在相应的以太坊节点上可以看到相应的输出

以太坊区块链技术_以太坊区块链数据下载_sitechainfor.com 以太坊区块链浏览器

以太坊节点输出

这证明我们的合约已经部署到我们的私有链上了。

运行命令

txpool.status

以太坊区块链技术_以太坊区块链数据下载_sitechainfor.com 以太坊区块链浏览器

打包好的合约可以部署了

我们跑

miner.start()

之后松露会出现

以太坊区块链技术_以太坊区块链数据下载_sitechainfor.com 以太坊区块链浏览器

部署成功

从表面上看,我们的合约部署是成功的。

好了,我们已经成功部署了一个合约,下一章我们会讲解如何调用这个合约。