Last active
March 12, 2022 20:15
-
-
Save a2468834/ccdbfa8e36280263abab1e218ae07ee2 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//SPDX-License-Identifier: MIT | |
pragma solidity >=0.8.0 <0.9.0; // 限定 compiler version 在某一個區間較好 | |
contract donation { | |
// Data | |
struct donorinfo { | |
address[] donors; | |
mapping(address=> uint) ledger; | |
} | |
mapping(address=>donorinfo) donationHistory; | |
// Events | |
event LogDonate ( | |
address youtuber, | |
address donor, | |
string nickname, | |
uint value, | |
string message | |
); | |
event loglistdonorinfo ( | |
address _youtube, | |
address user, | |
uint value | |
); | |
// Functions | |
function donate(address payable _youtuber,string memory _nickname, string memory _message) public payable { | |
require(msg.value > 0); | |
_youtuber.transfer(msg.value); | |
if(donationHistory[_youtuber].ledger[msg.sender]==0){ | |
//donationHistory[_youtuber].ledger[msg.sender] += msg.value; | |
donationHistory[_youtuber].donors.push(msg.sender); | |
} | |
donationHistory[_youtuber].ledger[msg.sender] += msg.value; | |
/* 我不太確定這邊是要幹嘛,所以先註解掉 | |
else{ | |
donationHistory[_youtuber].ledger[msg.sender] += msg.value; | |
}///19到25重複效用程式碼 | |
*/ | |
emit LogDonate(_youtuber, msg.sender, _nickname, msg.value, _message); | |
} | |
function getdonorList() public view returns(address[] memory) { | |
return donationHistory[msg.sender].donors; | |
} | |
function listdonorinfo() public { | |
uint array_length = donationHistory[msg.sender].donors.length; | |
for(uint i = 0; i <= array_length; i++) { | |
address user = donationHistory[msg.sender].donors[i]; | |
emit loglistdonorinfo(msg.sender, user, donationHistory[msg.sender].ledger[user]); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment