文件 1 的 5:Context.sol
pragma solidity ^0.8.0;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
文件 2 的 5:ERC20.sol
pragma solidity ^0.8.0;
import "./IERC20.sol";
import "./extensions/IERC20Metadata.sol";
import "../../utils/Context.sol";
contract ERC20 is Context, IERC20, IERC20Metadata {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
function name() public view virtual override returns (string memory) {
return _name;
}
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
function decimals() public view virtual override returns (uint8) {
return 18;
}
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
function transfer(address to, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_transfer(owner, to, amount);
return true;
}
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_approve(owner, spender, amount);
return true;
}
function transferFrom(
address from,
address to,
uint256 amount
) public virtual override returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, amount);
_transfer(from, to, amount);
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
address owner = _msgSender();
_approve(owner, spender, allowance(owner, spender) + addedValue);
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
address owner = _msgSender();
uint256 currentAllowance = allowance(owner, spender);
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
unchecked {
_approve(owner, spender, currentAllowance - subtractedValue);
}
return true;
}
function _transfer(
address from,
address to,
uint256 amount
) internal virtual {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(from, to, amount);
uint256 fromBalance = _balances[from];
require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
unchecked {
_balances[from] = fromBalance - amount;
_balances[to] += amount;
}
emit Transfer(from, to, amount);
_afterTokenTransfer(from, to, amount);
}
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply += amount;
unchecked {
_balances[account] += amount;
}
emit Transfer(address(0), account, amount);
_afterTokenTransfer(address(0), account, amount);
}
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
_beforeTokenTransfer(account, address(0), amount);
uint256 accountBalance = _balances[account];
require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
unchecked {
_balances[account] = accountBalance - amount;
_totalSupply -= amount;
}
emit Transfer(account, address(0), amount);
_afterTokenTransfer(account, address(0), amount);
}
function _approve(
address owner,
address spender,
uint256 amount
) internal virtual {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function _spendAllowance(
address owner,
address spender,
uint256 amount
) internal virtual {
uint256 currentAllowance = allowance(owner, spender);
if (currentAllowance != type(uint256).max) {
require(currentAllowance >= amount, "ERC20: insufficient allowance");
unchecked {
_approve(owner, spender, currentAllowance - amount);
}
}
}
function _beforeTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
function _afterTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
}
文件 3 的 5:IERC20.sol
pragma solidity ^0.8.0;
interface IERC20 {
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address to, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(
address from,
address to,
uint256 amount
) external returns (bool);
}
文件 4 的 5:IERC20Metadata.sol
pragma solidity ^0.8.0;
import "../IERC20.sol";
interface IERC20Metadata is IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
文件 5 的 5:Rillacoins.sol
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract Rillacoins is ERC20 {
constructor() ERC20("Rillacoins", "RIL"){
_mint(0x0595CC0e36AF4D2E11B23cb446ed02eAEa7F87FD, 2000000*10**18);
_mint(0xDf4abd11D93cba45F8bE55E3A41c1c18c6f8e9C1, 1000000*10**18);
_mint(0x4864EE998892F3a1e26aC06AeB07d685829fe82b, 1000000*10**18);
_mint(0xF6f4B3d80884DCf2E602820622cafC1Bcc1F9AFE, 1000000*10**18);
_mint(0x9FB327c433f95c2C78509018FBf0057d21540d36, 1000000*10**18);
_mint(0xf8c9Be2cE5A48014D4686A0871361DDB5E08fC86, 1000000*10**18);
_mint(0xB0D0b6dA40e1B3aBCa12a38F5bD95793De935635, 1000000*10**18);
_mint(0xcA75f9D1f6a5fD53C20BB0899e5f7a44b3a8E811, 1000000*10**18);
_mint(0x62dAD688Ca940162Eb7996c0c5badb7245FcE92F, 1000000*10**18);
_mint(0xE15d0643779F442A7610125990CD550B014035a1, 1000000*10**18);
_mint(0x1AA0C6C17953D253E2B076D06eD5c4a61d7A88Fc, 1000000*10**18);
_mint(0x374534de1Dfd0B0f965600D887f452f7035eA08b, 1000000*10**18);
_mint(0xb2B6B71d3200BD3558A59D7cC29E36c3446187aE, 1000000*10**18);
_mint(0x7D32184150B6F100f3BC8C5B938838BE5435fE3b, 1000000*10**18);
_mint(0xbdD954ebdA44b38CdF3549c6120D4a022b561703, 1000000*10**18);
_mint(0xb48fA58593bA6e8037e955ffE141126e768b40df, 1000000*10**18);
_mint(0xd2a0a018b5C469f4384A3d524d90eaa5d36716D9, 1000000*10**18);
_mint(0x1ACDb2dE8CDa966077E351D2Dc685790DFDE43B5, 1000000*10**18);
_mint(0x21FFB5dE6Ba0DF27958145AEd3cD3288000445b1, 1000000*10**18);
_mint(0x5b45870a9Ff21B46E9B7447463A8217f0D08BaEa, 1000000*10**18);
_mint(0x5e6f2Df4c6EdB90da3B394371ec6da6dE02851B1, 1000000*10**18);
_mint(0xC9b5db189631ED9bB35eb795826d90717b43B56A, 1000000*10**18);
_mint(0x5139C2D023c638A5F5190858b2BA4886873Ed027, 1000000*10**18);
_mint(0x09D4083fFD20D21ACb9118465aD7C52Ac8B548f7, 1000000*10**18);
_mint(0x2bd0B7CF9d6C7C90Eb5A224e1C91d85BD1D21cB9, 1000000*10**18);
_mint(0x28a3182325A294b2f9eb021e70a5F11E9437c4c5, 1000000*10**18);
_mint(0xA73F741A7e68d53bBEEF83187aC08465fc9A4336, 1000000*10**18);
_mint(0x8e8665bE566a0953bBEdACA5D6261F2F33113Ff1, 1000000*10**18);
_mint(0xd7Ca10036C597f01A58369B352da57710943dC46, 1000000*10**18);
_mint(0xC97a46fa2Adb154B84057cb49577Cbf07AE8612C, 1000000*10**18);
_mint(0xeFFAdccD5aFeC65096f18fBee073B7a66d2AFc5f, 1000000*10**18);
_mint(0xd1282134a3481Cb548504073ea31E602228f15b1, 1000000*10**18);
_mint(0xa8DB5cc795F1eCb37333Bf895e4c498871b0AD43, 1000000*10**18);
_mint(0x7Ba11A17d6b3290f2BD8a350d1F1B0887f98DC32, 1000000*10**18);
_mint(0xF703DfE714ce2F071f48B72a6fcF066a2B721a00, 1000000*10**18);
_mint(0xE526F0DD4182A3Abd95e343A68Ca7cD4c7De910E, 1000000*10**18);
_mint(0xa9c57Ed701822F18c83927A29B315Ac27C8551C7, 1000000*10**18);
_mint(0x40D80168B6663700B6AE55d71a8c2Cf61d0C1225, 1000000*10**18);
_mint(0xF339d6B131ffcE3Efd11d97E5A50E14a9C238e0e, 1000000*10**18);
_mint(0x5dFa160e0f96CE631D28649D02bB7738D69FE761, 1000000*10**18);
_mint(0xF98c2cf470F703e9C46D9015Bb4B8Df17c41FAF1, 1000000*10**18);
_mint(0x67eaF77E1F9561c2e21A567754517b137455df56, 1000000*10**18);
_mint(0x0d24951c51d657D6EC04984b82A1036a3A6BC491, 1000000*10**18);
_mint(0x732B486150DB62114b54489bef5520B1ea948877, 1000000*10**18);
_mint(0x216dB7326a333279f6C354FbD7a150319eBA3DAA, 1000000*10**18);
_mint(0x4ECA2786026eFb5959a05984eB26f83b037743aA, 1000000*10**18);
_mint(0x41538872240Ef02D6eD9aC45cf4Ff864349D51ED, 1000000*10**18);
_mint(0xBED2Ed51F71B3d3f9635a3577f5bCb1B425891A8, 1000000*10**18);
_mint(0x2dfb5Dc942280Be73315cbab54b099c2541a0482, 1000000*10**18);
_mint(0xF69B16aa5fdfA2142608932083830C4c49Aa4dE8, 1000000*10**18);
_mint(0x028922106555DD3909F7aF0117062fFb6a16B9d8, 1000000*10**18);
_mint(0x1E68EeD2A0F63F572A336eA101C1F7d26d63e962, 1000000*10**18);
_mint(0x0999ec2f80aaE3df224809b88A13fe589340a672, 1000000*10**18);
_mint(0x421fDe6855BE0BD833C9F70e02fca3a3d0b200C5, 1000000*10**18);
_mint(0x97bac212815DfF849820e34b6F9a58e4C40909De, 1000000*10**18);
_mint(0x5e2889Eb037aEaC4f64fBB9856514F6dfEbaDa63, 1000000*10**18);
_mint(0xf2C653837e495cBf8B7cC9229d6A68a2477bfaa8, 1000000*10**18);
_mint(0x7B3C26e2F2eb7Ff5050bF77C8C0ed435D8E7bcB5, 1000000*10**18);
_mint(0xE6A18D105Bd6f41815E80658508C4Fbd6f608b71, 1000000*10**18);
_mint(0x13C6a19CcD443372c3Ce86BC57887ee06EbAEa70, 1000000*10**18);
_mint(0x3fAd44f892b986263ac69dB971db8Da172185387, 1000000*10**18);
_mint(0x016AB691721a99DA1c1489Ca0AC8b549eB0f7713, 1000000*10**18);
_mint(0x087f2606AC8c88471Ab9b011a5338C1bE0f6f650, 1000000*10**18);
_mint(0xa60400e4B9C5052d536015b5445BCc4a5A29A464, 1000000*10**18);
_mint(0x0F7a1e945b12867E17Cfc077649E584dE032E1d1, 1000000*10**18);
_mint(0xe2289B87a38D32062a93bD94e9F787F448cAdbb3, 1000000*10**18);
_mint(0xb1E1187CF416BEDAE62987343c8c41C5ffb7bb18, 1000000*10**18);
_mint(0xe481e12E6B6e8c1d013874327aEd2B870D6D1413, 1000000*10**18);
_mint(0xCc49A6D063ba72929600D1ED60D863A540b2565a, 1000000*10**18);
_mint(0xf76B00b44F70a377acE77d5C0A4Eeb6AEa1a7671, 1000000*10**18);
_mint(0xc1beBD66dFdE46788c78F38B6F402D2ef17a9f9C, 1000000*10**18);
_mint(0xE05B8E8A829E506a10B0170F2da608171f841eb8, 1000000*10**18);
_mint(0x036f47055cb3161214D776D8b589BA5C287eBb84, 1000000*10**18);
_mint(0xDa9520799a576511e0E5893CC99B85C0f38b50d0, 1000000*10**18);
_mint(0xEce01bf17ECC69d2D88b1a84DB32f9b9c7BF6292, 1000000*10**18);
_mint(0xb1b85193d48cb0fAa3741E4bA3A8EC6bD7287643, 1000000*10**18);
_mint(0xA21b3CD198EC3bA865CE18ECba87cE12f5dea170, 1000000*10**18);
_mint(0xc866b23312b2A14Fd5687C184BeA44Ae69d735E1, 1000000*10**18);
_mint(0x4A8D0Ef4E0FCF7E8E8a5E7DAe69B0de66A760470, 1000000*10**18);
_mint(0x76AF976079A4612a218407C08f01a498ea4b6e25, 1000000*10**18);
_mint(0x4D4b5BF5a24dE13483CFB5F69E1605AE1a7dA549, 1000000*10**18);
_mint(0xC6b797fDe66e42648957aa6107D001A72696A6c2, 1000000*10**18);
_mint(0xE65A506493Bb04C1d20B2fbE01De9dc163C065Bd, 1000000*10**18);
_mint(0xb5c334d5b7eCc8Cad80d70bca474E45f4D63E98b, 1000000*10**18);
_mint(0xEB42BbdBf5016fD5F576F06ecb143990b92ce743, 1000000*10**18);
_mint(0x224da03f2E9ef7b84B6Bd6f62de6F9e399eaC20E, 1000000*10**18);
_mint(0x7405c2328b85a1243be0717aBB4185661ec5f4C2, 1000000*10**18);
_mint(0x1e957a10796552CbD7d5C31439a5e8345dB569A4, 1000000*10**18);
_mint(0x7b8f8eb51a755D381b2FD15aB5a1eDad90C04F1c, 1000000*10**18);
_mint(0x65E5CC34B92e6dfA3c708C7911ab11Ad4F65B54E, 1000000*10**18);
_mint(0xA218d6A3Ad14CFBFc96017d5d7bcEeE1484BD6A5, 1000000*10**18);
_mint(0x72ae8d4B0054be34c86A1f3fcb8Fdd27Be7CC556, 1000000*10**18);
_mint(0xD8cA758383628D406052533E658b97B41114003D, 1000000*10**18);
_mint(0xf70BD5596F83110208db05b413Ff8ED907CF778F, 1000000*10**18);
_mint(0x7096Cc36Ca466932FB3c42a0a179C28B02E77B6d, 1000000*10**18);
_mint(0x2F61050B929e30D33b4feDF70b82edfAE075df05, 1000000*10**18);
_mint(0xD39AA8158E6d493F0d76Ed37BB4b9185Fcc2FB05, 1000000*10**18);
_mint(0xDc1f9C98351858416fE77a546a716EF1291916B3, 1000000*10**18);
_mint(0x59f2459a8d4bcD3a97897D5c2054EE226b10D846, 1000000*10**18);
}
}
{
"compilationTarget": {
"Rillacoins.sol": "Rillacoins"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
}
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]