以太坊 solidity 众筹合约——让你离你的梦想更近一步

    如果你有一个好的想法,苦于没有资金,怎么办呢?去找投资人?用自己的钱? ???俗话说人多力量大,众人拾柴火焰高,团结就是力量。在区块链的世界你需要的只是一个合约,有了这个合约,你就会得到很多人的支持。今天我们写一个关于众筹的合约。让你离你的梦想更近一步。

    第一部分,捐款,任何人在规定时间之内,都可以对你进行捐款,捐款的数量也是随意的。

    function donate() payable public{
        require(now < endtime);
        require(total < goal);
        require(msg.value > 0);
        gift[msg.sender] += msg.value;
        total += msg.value;
    }

endtime表示这个众筹项目什么时候结束,所以在规定的时间内都可以进行捐款;并对捐款人进行记录,方便以后取回捐款。

第二部分,取众筹款;当在规定时间内达到了预定数量的众筹款,则合约发布人可以取出众筹款;

    function draw() public{
        require(msg.sender == owner);
        require(total > goal);
        owner.transfer(address(this).balance);
    }

这段就比较简单了,需要的只是一个好的梦想;

第三部分,捐款人取回自己的捐款;当到达规定时间还么没有达到预定的众筹款,则捐款人可以取回自己的捐款了;

    function withdraw() public{
        require(now > endtime);
        require(total < goal);
        uint amount = gift[msg.sender];
        total -= amount;
        gift[msg.sender] = 0;
        address(msg.sender).transfer(amount);
    }

这段也很简单了,梦想要破灭了。

合约比较简单,希望能给大家带来帮助。

github:https://github.com/XuHugo/solidityproject/tree/master/crowdfunding

猜你喜欢

转载自blog.csdn.net/xq723310/article/details/82356291