坚固:我遇到什么样的编译问题。我可以编译我的SmartContract。我应该在Visual Code Studio上更改哪种设置?

发布于 2025-02-02 19:53:28 字数 3893 浏览 3 评论 0原文

我正在尝试编译这份FundMe合同。我可以打布朗尼编译,但是合同似乎根本没有编译。我应该生成的构建数据没有出现在终端中。...我一直在此处关注帕特里克斯教程:从五个小时和分钟的

// SPDX-License-Identifier: MIT

 // Smart contract that lets anyone deposit ETH into the contract
 // Only the owner of the contract can withdraw the ETH

   pragma solidity ^0.6.6;

   // Get the latest ETH/USD price from chainlink price feed
import "@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol";
import "@chainlink/contracts/src/v0.6/vendor/SafeMathChainlink.sol";

 contract FundMe {
// safe math library check uint256 for integer overflows
using SafeMathChainlink for uint256;

//mapping to store which address depositeded how much ETH
mapping(address => uint256) public addressToAmountFunded;
// array of addresses who deposited
address[] public funders;
//address of the owner (who deployed the contract)
address public owner;

// the first person to deploy the contract is
// the owner
constructor() public {
    owner = msg.sender;
}

function fund() public payable {
    // 18 digit number to be compared with donated amount 
    uint256 minimumUSD = 50 * 10 ** 18;
    //is the donated amount less than 50USD?
    require(getConversionRate(msg.value) >= minimumUSD, "You need to spend more ETH!");
    //if not, add to mapping and funders array
    addressToAmountFunded[msg.sender] += msg.value;
    funders.push(msg.sender);
}

//function to get the version of the chainlink pricefeed
function getVersion() public view returns (uint256){
    AggregatorV3Interface priceFeed = AggregatorV3Interface(0x8A753747A1Fa494EC906cE90E9f37563A8AF630e);
    return priceFeed.version();
}

function getPrice() public view returns(uint256){
    AggregatorV3Interface priceFeed = AggregatorV3Interface(0x8A753747A1Fa494EC906cE90E9f37563A8AF630e);
    (,int256 answer,,,) = priceFeed.latestRoundData();
     // ETH/USD rate in 18 digit 
     return uint256(answer * 10000000000);
}

// 1000000000
function getConversionRate(uint256 ethAmount) public view returns (uint256){
    uint256 ethPrice = getPrice();
    uint256 ethAmountInUsd = (ethPrice * ethAmount) / 1000000000000000000;
    // the actual ETH/USD conversation rate, after adjusting the extra 0s.
    return ethAmountInUsd;
}

//modifier: https://medium.com/coinmonks/solidity-tutorial-all-about-modifiers-a86cf81c14cb
modifier onlyOwner {
    //is the message sender owner of the contract?
    require(msg.sender == owner);
    
    _;
}

// onlyOwner modifer will first check the condition inside it 
// and 
// if true, withdraw function will be executed 
function withdraw() payable onlyOwner public {

    // If you are using version eight (v0.8) of chainlink aggregator interface,
// you will need to change the code below to
// payable(msg.sender).transfer(address(this).balance);
    msg.sender.transfer(address(this).balance);

    
    //iterate through all the mappings and make them 0
    //since all the deposited amount has been withdrawn
    for (uint256 funderIndex=0; funderIndex < funders.length; funderIndex++){
        address funder = funders[funderIndex];
        addressToAmountFunded[funder] = 0;
    }
    //funders array will be initialized to 0
    funders = new address[](0);
}

开始

标记 。文件:

dependencies:
   # - <organization/repo>@<version>
       - smartcontractkit/[email protected]
             compiler:
                    solc:
                   remappings:
                                                 
                        - '@chainlink=smartcontractkit/[email protected]'

I am trying to compile this fundme contract. I am able hit brownie compile, but the contract does not seem to compile at all. The build data I should be generating is not appearing in the terminal.... I have been following Patricks tutorial here: starting at the five hour and minute mark....

.......

// SPDX-License-Identifier: MIT

 // Smart contract that lets anyone deposit ETH into the contract
 // Only the owner of the contract can withdraw the ETH

   pragma solidity ^0.6.6;

   // Get the latest ETH/USD price from chainlink price feed
import "@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol";
import "@chainlink/contracts/src/v0.6/vendor/SafeMathChainlink.sol";

 contract FundMe {
// safe math library check uint256 for integer overflows
using SafeMathChainlink for uint256;

//mapping to store which address depositeded how much ETH
mapping(address => uint256) public addressToAmountFunded;
// array of addresses who deposited
address[] public funders;
//address of the owner (who deployed the contract)
address public owner;

// the first person to deploy the contract is
// the owner
constructor() public {
    owner = msg.sender;
}

function fund() public payable {
    // 18 digit number to be compared with donated amount 
    uint256 minimumUSD = 50 * 10 ** 18;
    //is the donated amount less than 50USD?
    require(getConversionRate(msg.value) >= minimumUSD, "You need to spend more ETH!");
    //if not, add to mapping and funders array
    addressToAmountFunded[msg.sender] += msg.value;
    funders.push(msg.sender);
}

//function to get the version of the chainlink pricefeed
function getVersion() public view returns (uint256){
    AggregatorV3Interface priceFeed = AggregatorV3Interface(0x8A753747A1Fa494EC906cE90E9f37563A8AF630e);
    return priceFeed.version();
}

function getPrice() public view returns(uint256){
    AggregatorV3Interface priceFeed = AggregatorV3Interface(0x8A753747A1Fa494EC906cE90E9f37563A8AF630e);
    (,int256 answer,,,) = priceFeed.latestRoundData();
     // ETH/USD rate in 18 digit 
     return uint256(answer * 10000000000);
}

// 1000000000
function getConversionRate(uint256 ethAmount) public view returns (uint256){
    uint256 ethPrice = getPrice();
    uint256 ethAmountInUsd = (ethPrice * ethAmount) / 1000000000000000000;
    // the actual ETH/USD conversation rate, after adjusting the extra 0s.
    return ethAmountInUsd;
}

//modifier: https://medium.com/coinmonks/solidity-tutorial-all-about-modifiers-a86cf81c14cb
modifier onlyOwner {
    //is the message sender owner of the contract?
    require(msg.sender == owner);
    
    _;
}

// onlyOwner modifer will first check the condition inside it 
// and 
// if true, withdraw function will be executed 
function withdraw() payable onlyOwner public {

    // If you are using version eight (v0.8) of chainlink aggregator interface,
// you will need to change the code below to
// payable(msg.sender).transfer(address(this).balance);
    msg.sender.transfer(address(this).balance);

    
    //iterate through all the mappings and make them 0
    //since all the deposited amount has been withdrawn
    for (uint256 funderIndex=0; funderIndex < funders.length; funderIndex++){
        address funder = funders[funderIndex];
        addressToAmountFunded[funder] = 0;
    }
    //funders array will be initialized to 0
    funders = new address[](0);
}

}

brownie-config.yaml. file:

dependencies:
   # - <organization/repo>@<version>
       - smartcontractkit/[email protected]
             compiler:
                    solc:
                   remappings:
                                                 
                        - '@chainlink=smartcontractkit/[email protected]'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

早乙女 2025-02-09 19:53:31

我重新开始。我想我忘记了文件创建中的一步,并修复了YAML文件中的布朗尼 - 奇异件中的一些格式问题。我都设定了。我在这里解决了问题。

I started over. I guess I forgot a step in the file creation, and fixed some formatting issues in the brownie-config,yaml file. I am all set. I resolved my issues here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文