在一些應用中,我們需要一種結構來幫我們儲存 Key 對應 Value。比如說政府用 身分證字號(Key) 來對應 個人(Value)。那就讓我們來看看怎麼在 contract 裡面使用這種資料結構吧!
本日合約:
pragma solidity ^0.4.25;
contract Donation {
mapping(address => uint) public ledger;
mapping(address => bool) public donors;
address[] public donorList;
function isDonor(address pAddr) internal view returns (bool) {
return donors[pAddr];
}
function donate() public payable {
if (msg.value >= 1 ether) {
if (!isDonor(msg.sender)) {
donors[msg.sender] = true;
donorList.push(msg.sender);
}
ledger[msg.sender] += msg.value;
} else {
revert("< 1 ether");
}
}
}
本日影片:
https://youtu.be/2umVhPUumU8
Smart Contract 實戰教學播放清單:
https://www.youtube.com/playlist?list=PLHmOMPRfmOxSJcrlwyandWYiuP9ZAMYoF