Skip to content

Instantly share code, notes, and snippets.

@a2468834
Last active March 12, 2022 20:15
Show Gist options
  • Save a2468834/ccdbfa8e36280263abab1e218ae07ee2 to your computer and use it in GitHub Desktop.
Save a2468834/ccdbfa8e36280263abab1e218ae07ee2 to your computer and use it in GitHub Desktop.
//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