2024-02-27 solidity寫一個眾籌合約

眾籌合約示例代碼如下:

// SPDX-License-Identifier: GPL-3.0

pragma solidity ^0.8.0;

contract CrowFund {
    //首先定義一個變量用來專門統(tǒng)計 多少個人 需要 捐款
    uint256 public neederAmount = 0; //用來統(tǒng)計多少人的
    //這里肯定有一個鍵值對map用來存粹 a b  c  d等收款地址
    mapping(address => Needer) public neederMap; //a的收款地址  有哪些人捐款 分別捐款多少錢
    address public owner;
  //定義一個結(jié)構(gòu)體
    struct Needer {
        address neederUserAddress; // 需要接受捐款的收款地址
        uint256 goalMoney; //目標(biāo)本個人 需要捐款多少錢 計劃需要別人捐款多少錢
        uint256 alreadyMoney; //本格收款地址下已經(jīng)捐款多少錢
        uint256 funderAcount; // 這個收款地址有多少人捐款
    }

    constructor() {
        owner = msg.sender;
    }

    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }
  
    //傳入用戶地址  統(tǒng)計數(shù)據(jù) +1 目標(biāo)要捐款多少錢
    function newNeeder(address _neederUserAddress, uint256 _goalMoney) external onlyOwner {
        //每產(chǎn)生一個需要捐款的地址工程
        Needer memory neederStruct = Needer({
            neederUserAddress: _neederUserAddress,
            goalMoney: _goalMoney,
            alreadyMoney: 0,
            funderAcount: 0
        });
        neederMap[_neederUserAddress] = neederStruct;
        neederAmount++;
    }
    //開始捐款
    function startHelpMoney(address _to) external payable {
          //payable(_to).transfer(msg.value);
          // send all Ether to owner
          (bool success, ) = _to.call{value: msg.value}("");
          require(success, "Failed to send Ether");
          //msg.sender捐款給誰捐款多少
           neederMap[_to].alreadyMoney+=msg.value;
    } 
}

捐款邏輯如下:
1.合約的部署者才可以調(diào)用newNeeder方法構(gòu)建 需要捐款的地址
2.每個用戶可以發(fā)起捐款到目標(biāo)地址.
實(shí)例效果如下:
部署的賬號地址:0x1D99d05a9616973Ba67751e7DD3600aBB29d9698
部署合約的合約地:0x86277FbD8403B1907269775e01100FbE198319c8
第一步調(diào)用newNeeder方法 只有合約的部署者可以調(diào)用該方法,效果如下


構(gòu)建需要捐款者跟目標(biāo)金額.png

查詢map數(shù)據(jù)結(jié)構(gòu).png

發(fā)起捐款給誰這里是給0x1D99d05a9616973Ba67751e7DD3600aBB29d9698這個地址捐款
效果如下:


發(fā)起捐款.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容