我试图在rinkeby上部署我的智能合同,但得到了以下错误。任何洞察力都是非常感谢的。
(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.合同
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;
}
}部署脚本
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();发布于 2018-03-12 16:29:09
你提供了1,000,000股汽油,但正如错误说的,“检查你的汽油限额。”
看起来你需要更接近200万的汽油。
https://ethereum.stackexchange.com/questions/42509
复制相似问题