0x915e4a5a…1ba8sent to0x00000000…ace7·#18,966,657·0x36e7303e…b1b55e
data:application/vnd.facet.tx+json;rule=esip6,{"op":"create","data":{"init_code_hash":"0xb1b0ed1e4a8c9c9b0210f267137e368f782453e41f622fa8cf68296d04c84c88","args":{"name":"🐿️","symbol":"🐿️","maxSupply":"21000000000000000000000000","perMintLimit":"1000000000000000000000","decimals":"18"},"source_code":"pragma(:rubidity, \"1.0.0\")\ncontract(:ERC20, abstract: true) {\n event(:Transfer, { from: :address, to: :address, amount: :uint256 })\n event(:Approval, { owner: :address, spender: :address, amount: :uint256 })\n string(:public, :name)\n string(:public, :symbol)\n uint8(:public, :decimals)\n uint256(:public, :totalSupply)\n mapping(({ address: :uint256 }), :public, :balanceOf)\n mapping(({ address: mapping(address: :uint256) }), :public, :allowance)\n constructor(name: :string, symbol: :string, decimals: :uint8) {\n s.name=name\n s.symbol=symbol\n s.decimals=decimals\n }\n function(:approve, { spender: :address, amount: :uint256 }, :public, :virtual, returns: :bool) {\n s.allowance[msg.sender][spender] = amount\n emit(:Approval, owner: msg.sender, spender: spender, amount: amount)\n return true\n }\n function(:transfer, { to: :address, amount: :uint256 }, :public, :virtual, returns: :bool) {\n require(s.balanceOf[msg.sender] >= amount, \"Insufficient balance\")\n s.balanceOf[msg.sender] -= amount\n s.balanceOf[to] += amount\n emit(:Transfer, from: msg.sender, to: to, amount: amount)\n return true\n }\n function(:transferFrom, { from: :address, to: :address, amount: :uint256 }, :public, :virtual, returns: :bool) {\n allowed = s.allowance[from][msg.sender]\n require(s.balanceOf[from] >= amount, \"Insufficient balance\")\n require(allowed >= amount, \"Insufficient allowance\")\n s.allowance[from][msg.sender] = allowed - amount\n s.balanceOf[from] -= amount\n s.balanceOf[to] += amount\n emit(:Transfer, from: from, to: to, amount: amount)\n return true\n }\n function(:_mint, { to: :address, amount: :uint256 }, :internal, :virtual) {\n s.totalSupply += amount\n s.balanceOf[to] += amount\n emit(:Transfer, from: address(0), to: to, amount: amount)\n }\n function(:_burn, { from: :address, amount: :uint256 }, :internal, :virtual) {\n require(s.balanceOf[from] >= amount, \"Insufficient balance\")\n s.balanceOf[from] -= amount\n s.totalSupply -= amount\n emit(:Transfer, from: from, to: address(0), amount: amount)\n }\n}\ncontract(:PublicMintERC20, is: :ERC20) {\n uint256(:public, :maxSupply)\n uint256(:public, :perMintLimit)\n constructor(name: :string, symbol: :string, maxSupply: :uint256, perMintLimit: :uint256, decimals: :uint8) {\n self.ERC20.constructor(name: name, symbol: symbol, decimals: decimals)\n s.maxSupply=maxSupply\n s.perMintLimit=perMintLimit\n }\n function(:mint, { amount: :uint256 }, :public) {\n require(amount > 0, \"Amount must be positive\")\n require(amount <= s.perMintLimit, \"Exceeded mint limit\")\n require(s.totalSupply + amount <= s.maxSupply, \"Exceeded max supply\")\n _mint(to: msg.sender, amount: amount)\n }\n function(:airdrop, { to: :address, amount: :uint256 }, :public) {\n require(amount > 0, \"Amount must be positive\")\n require(amount <= s.perMintLimit, \"Exceeded mint limit\")\n require(s.totalSupply + amount <= s.maxSupply, \"Exceeded max supply\")\n _mint(to: to, amount: amount)\n }\n}\n"}}