智能合约测试例子

javascript 复制代码
// SPDX-License-Identifier: MIT
pragma solidity >=0.4.11 <0.9.0;
contract CrowdFunding {
    // 定义的新类型包含两个属性。
    struct Funder {
        address addr;
        uint amount;
    }

    struct Campaign {
        address payable  beneficiary;
        uint fundingGoal;
        uint numFunders;
        uint amount;
        mapping (uint => Funder) funders;
    }

    uint numCampaigns;
    mapping (uint => Campaign)   campaigns;

    function newCampaign(address beneficiary, uint goal) public  returns (uint ) {
       uint campaignID = numCampaigns++; 

         Campaign storage c = campaigns[campaignID];
       c.beneficiary=payable(beneficiary);
       c.fundingGoal=goal;
       c.amount=0;
       c.numFunders=0;
       return campaignID;
    }

    function contribute(uint campaignID) public payable   {

        
        Campaign storage c = campaigns[campaignID];
       
        c.funders[c.numFunders++] = Funder({addr: msg.sender, amount: msg.value});
        c.amount += msg.value;

    }

    function checkGoalReached(uint campaignID) public    returns (bool reached) {
        Campaign storage c = campaigns[campaignID];
        if (c.amount < c.fundingGoal)
            return false;
        uint amount = c.amount;
        c.amount = 0;
        c.beneficiary.transfer(amount);
        return true;
    }
    function info(uint campaignID) public view returns(uint){
        Campaign storage c = campaigns[campaignID];
         uint amount = c.amount;
         return amount;
    }
}

Remix - Ethereum IDE

相关推荐
半桶水专家4 分钟前
npm run 的工作原理和工作流程
前端·npm·node.js
北辰浮光7 分钟前
npm install core-js不成功
前端·javascript·npm
东华帝君35 分钟前
React源码解读
前端
Mintopia42 分钟前
🌱 AIGC 技术的轻量化趋势:Web 端“小而美”模型的崛起
前端·javascript·aigc
开发者小天1 小时前
React中的useRef的用法
开发语言·前端·javascript·react.js
im_AMBER1 小时前
React 11 登录页项目框架搭建
前端·学习·react.js·前端框架
Live&&learn1 小时前
nvm切换node版本时,npm不跟着切换解决
前端·npm·node.js
xixixin_1 小时前
【React】检测元素是否出现在用户视窗内
开发语言·前端·javascript·react.js
谢彦超oooo2 小时前
HTML5 与前端开发要点
前端·html·html5
IT_陈寒2 小时前
Vue 3响应式原理深度拆解:5个90%开发者不知道的Ref与Reactive底层实现差异
前端·人工智能·后端