DAPP互助公排矩陣模式系統開發丨智慧合約技術介紹

Lyr96246466發表於2023-04-03

Web3使用區塊鏈技術來實現去中心化。開發+18I鏈上合約-259l開發系統3365-/區塊鏈技術是一種去中心化的分散式賬本技

術,每個節點都可以參與到賬本的維護中,沒有單一點的控制。這種技術可以防止資料被篡改,因為每個節點都有一份完整的

賬本,所有的交易都需要透過節點的共識來驗證。這種技術為Web3帶來了更高的安全性和透明性。


//SPDX-License-Identifier: SimPL-2.0

pragma solidity >=0.7.0 <0.8.9;


contract zhongchou{

    //投資者投資記錄:投資目標,投資金額

    struct toMoney{

        address payable addressReceiptor;

        uint money;

    }

    //投資者基本資訊:地址,是否被啟用,總投資金額,投資次數,對映記錄投資記錄

    struct funder{

        address payable addressfunder;

        bool isActive;

        uint totalMoney;

        uint numberGive;

        mapping(uint=>toMoney)expMap;

    }

    //眾籌合約:合約建立者,是否被啟用,金額總需求,已投資金額,投資人數量,對映記錄投資人

    struct needMoneyContract{

        address payable addressNeeder;

        // payable address addressContract;

        bool isActive;

        uint totalMoney;

        uint giveMoney;

        uint amountFunder;

        mapping (uint=>funder)mapFunder;

    }

    //眾籌發起者:地址,啟用狀態,需求總金額,已經被投資的金額,發起的眾籌的數量,對映記錄投資合約

    struct needer{

        address addressNeeder;

        bool isActive;

        uint amountMoneyNeed;

        uint amountHasFunded;

        uint numberContract;

        mapping(uint=>needMoneyContract)expMap;

    }

    //記錄眾籌合約總數,合約地址(資金池地址)

    uint amountContract;

    address payable public addressFinance; 

    //三方陣列

    mapping(address=>funder)funderMap;

    mapping(uint=>needMoneyContract)contractMap;

    mapping(address=>needer)neederMap;

    

    constructor(){

        addressFinance=payable(msg.sender);

    }

    //建立一個眾籌發起者

    function createNeeder()public returns(bool){

        //需要判定是否已經被啟用

        if(neederMap[msg.sender].isActive){

            return false;

        }

        else{

            address _addressNeeder=msg.sender;

            //0.8.0後不允許直接建立一個包含對映的結構體。需要透過引用的方式,先建立一個storage型別的結構體(與目標是引用關係),再對新變數進行操作即可。

            needer storage tmp1=neederMap[_addressNeeder];

            tmp1.addressNeeder=_addressNeeder;

            tmp1.isActive=true;

            tmp1.amountMoneyNeed=0;

            tmp1.amountHasFunded=0;

            tmp1.numberContract=0;

            return true;

        }

    }


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70012429/viewspace-2943640/,如需轉載,請註明出處,否則將追究法律責任。

相關文章