首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >部署到rinkeby时出错

部署到rinkeby时出错
EN

Ethereum用户
提问于 2018-03-12 16:12:28
回答 1查看 225关注 0票数 0

我试图在rinkeby上部署我的智能合同,但得到了以下错误。任何洞察力都是非常感谢的。

代码语言:javascript
复制
(node:3817) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: The contract code couldn't be stored, please check your gas limit.
(node:3817) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

合同

代码语言:javascript
复制
pragma solidity ^0.4.17;

contract CampaignFactory {

    address[] public deployedCampaigns;

    function createCampaign(string description, uint minimumContribution, string campaignCategory, string endDate) public {
        address newlyCreatedCampaign = new Campaign(description, minimumContribution, campaignCategory, endDate, msg.sender);
        deployedCampaigns.push(newlyCreatedCampaign);
    }

    function getDeployedCampaigns() public view returns (address[]) {
        return deployedCampaigns;
    }
}

contract Campaign {

    struct NewCampaignType {
        string description;
        uint minimumContribution;
        string campaignCategory;
        string endDate;
        address managerAddress;
    }

    struct Request {
        string description;
        uint value;
        address recipient;
        bool complete;
        uint approvalCount;
        mapping(address => bool) approvals;
    }

    mapping(address => NewCampaignType) public campaigns;
    Request[] public requests;
    mapping(address => bool) public approvers;
    uint public approversCount;
    address public currentManagerAddress;

    modifier restricted() {
        require(msg.sender == campaigns[currentManagerAddress].managerAddress);
        _;
    }

    function Campaign(string description, uint minimumContribution, string campaignCategory, string endDate, address managerAddress) public {
        NewCampaignType memory createCampaign = NewCampaignType({
            description: description,
            minimumContribution: minimumContribution,
            campaignCategory: campaignCategory,
            endDate: endDate,
            managerAddress: managerAddress
        });
        campaigns[managerAddress] = createCampaign;
    }

    function contribute() public payable {
        require(msg.value > campaigns[currentManagerAddress].minimumContribution);
        approvers[msg.sender] = true;
        approversCount++;
    }

    function createRequest(string description, uint value, address recipient) public restricted {
        Request memory newRequest = Request({
           description: description,
           value: value,
           recipient: recipient,
           complete: false,
           approvalCount: 0
        });

        requests.push(newRequest);
    }

    function approveRequest(uint index) public {
        Request storage request = requests[index];

        require(approvers[msg.sender]);
        require(!request.approvals[msg.sender]);

        request.approvals[msg.sender] = true;
        request.approvalCount++;
    }

    function finalizeRequest(uint index) public restricted {
        Request storage request = requests[index];

        require(request.approvalCount > (approversCount / 2));
        require(!request.complete);

        request.recipient.transfer(request.value);
        request.complete = true;
    }

    function setCurrentManager(address managerAddress) public {
        currentManagerAddress = managerAddress;
    }

    function getSummary() public view returns (
      uint, uint, uint, uint, address
      ) {
        return (
          campaigns[currentManagerAddress].minimumContribution,
          this.balance,
          requests.length,
          approversCount,
          campaigns[currentManagerAddress].managerAddress
        );
    }

    function getRequestsCount() public view returns (uint) {
        return requests.length;
    }
}

部署脚本

代码语言:javascript
复制
const HDWalletProvider = require('truffle-hdwallet-provider');
const Web3 = require('web3');
const compiledFactory = require('./build/CampaignFactory.json');

const provider = new HDWalletProvider(
  '(metamask 12 word seed phrase)',
  'https://rinkeby.infura.io/4PHzobtaMWvurQjWma6j'
);
const web3 = new Web3(provider);

const deploy = async () => {
  const accounts = await web3.eth.getAccounts();

  console.log('Attempting to deploy from account', accounts[0]);

  const result = await new web3.eth.Contract(
    JSON.parse(compiledFactory.interface)
  )
    .deploy({ data: compiledFactory.bytecode })
    .send({ gas: '1000000', from: accounts[0] });

  console.log('Contract deployed to', result.options.address);
};
deploy();
EN

回答 1

Ethereum用户

回答已采纳

发布于 2018-03-12 16:29:09

你提供了1,000,000股汽油,但正如错误说的,“检查你的汽油限额。”

看起来你需要更接近200万的汽油。

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/42509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档