Contract Overview
Balance:
0 ETH
ETH Value:
$0.00
My Name Tag:
Not Available
[ Download CSV Export ]
Latest 25 internal transaction
[ Download CSV Export ]
Contract Name:
Aquarium
Compiler Version
v0.8.11+commit.d7f03943
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.11; interface IRealm { function ownerOf(uint256 _realmId) external view returns (address owner); function isApprovedForAll(address owner, address operator) external returns (bool); } interface IManager { function isAdmin(address _addr) external view returns (bool); function isManager(address _addr, uint256 _type) external view returns (bool); } interface IData { function add( uint256 _realmId, uint256 _type, uint256 _amount ) external; function addToBuildQueue( uint256 realmId, uint256 queueSlot, uint256 _hours ) external; } interface IResource { function add( uint256 _realmId, uint256 _resourceId, uint256 _amount ) external; } contract Aquarium { IRealm public immutable REALM; IManager public immutable MANAGER; IData public immutable DATA; IResource public immutable RESOURCE; uint256 public constant BUILD_TIME = 24 hours; string[11] public resourceNames = [ "None", "Goldfish", "Clownfish", "Sea Otter", "Emperor Penguin", "Sea Turtle", "Lion's Mane Jellyfish", "Great White Shark", "Orca", "Manta Ray", "Giant Squid" ]; uint256[] public resourceProbability = [ 40, 52, 62, 72, 77, 82, 87, 91, 94, 97, 100 ]; uint256[] public resourceIds = [0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]; uint256[] public metricProbability = [40, 85, 95, 100]; mapping(uint256 => uint256) public count; //======================================= // EVENTS //======================================= event Built( uint256 realmId, uint256 aquariumId, uint256 resourceId, string resourceName, uint256 resourceAdded, uint256 count ); //======================================= // Constructor //======================================= constructor( address realm, address manager, address data, address resource ) { REALM = IRealm(realm); MANAGER = IManager(manager); DATA = IData(data); RESOURCE = IResource(resource); } //======================================= // MODIFIER //======================================= modifier onlyAdmins() { require(MANAGER.isAdmin(msg.sender), "Manager: Not an Admin"); _; } //======================================= // EXTERNAL //======================================= function build(uint256 _realmId, uint256 _queueSlot) external { address owner = REALM.ownerOf(_realmId); require(owner == msg.sender || REALM.isApprovedForAll(owner, msg.sender)); DATA.addToBuildQueue(_realmId, _queueSlot, BUILD_TIME); _updateData(_realmId); } //======================================= // INTERNAL //======================================= function _updateData(uint256 _realmId) internal { uint256 id = count[_realmId]; uint256 rarity = _rarity(_realmId, resourceProbability); uint256 resourceId = resourceIds[rarity]; uint256 metricAdded = _rarity(_realmId, metricProbability) + 1; uint256 resourceAdded; if (rarity > 0) { if (rarity > 8) { metricAdded = metricAdded + 1; } RESOURCE.add(_realmId, resourceId, metricAdded); resourceAdded = metricAdded; } DATA.add(_realmId, 3, metricAdded); count[_realmId]++; emit Built( _realmId, id, resourceId, resourceNames[rarity], resourceAdded, count[_realmId] ); } function _rarity(uint256 _salt, uint256[] memory probability) internal view returns (uint256) { uint256 rand = uint256( keccak256(abi.encodePacked(block.number, block.timestamp, _salt)) ) % 100; uint256 j = 0; for (; j < probability.length; j++) { if (rand <= probability[j]) { break; } } return j; } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "libraries": {} }
[{"inputs":[{"internalType":"address","name":"realm","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"data","type":"address"},{"internalType":"address","name":"resource","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"realmId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"aquariumId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"resourceId","type":"uint256"},{"indexed":false,"internalType":"string","name":"resourceName","type":"string"},{"indexed":false,"internalType":"uint256","name":"resourceAdded","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"count","type":"uint256"}],"name":"Built","type":"event"},{"inputs":[],"name":"BUILD_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DATA","outputs":[{"internalType":"contract IData","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MANAGER","outputs":[{"internalType":"contract IManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REALM","outputs":[{"internalType":"contract IRealm","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESOURCE","outputs":[{"internalType":"contract IResource","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_realmId","type":"uint256"},{"internalType":"uint256","name":"_queueSlot","type":"uint256"}],"name":"build","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"count","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"metricProbability","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"resourceIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"resourceNames","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"resourceProbability","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6004610260818152634e6f6e6560e01b6102805261010090815260086102a09081526708eded8c8ccd2e6d60c31b6102c0526101205260096102e081815268086d8deeedcccd2e6d60bb1b61030052610140526103208181526829b2b09027ba3a32b960b91b6103405261016052600f6103609081526e22b6b832b937b9102832b733bab4b760891b6103805261018052600a6103a09081526953656120547572746c6560b01b6103c0526101a05260156103e09081527f4c696f6e2773204d616e65204a656c6c79666973680000000000000000000000610400526101c052601161042090815270477265617420576869746520536861726b60781b610440526101e052610460928352634f72636160e01b61048052610200929092526104a0918252684d616e74612052617960b81b6104c05261022091909152610520604052600b6104e08181526a11da585b9d0814dc5d5a5960aa1b61050052610240526200016e91600091620002ce565b5060408051610160810182526028815260346020820152603e9181019190915260486060820152604d6080820152605260a0820152605760c0820152605b60e0820152605e61010082015260616101208201526064610140820152620001d890600b908162000325565b5060408051610160810182526000815260086020820152600991810191909152600a6060820152600b60808201819052600c60a08301819052600d60c0840152600e60e0840152600f610100840152601061012084015260116101408401526200024492909162000325565b50604080516080810182526028815260556020820152605f91810191909152606460608201526200027a90600d90600462000325565b503480156200028857600080fd5b506040516200102d3803806200102d833981016040819052620002ab916200048a565b6001600160a01b0393841660805291831660a052821660c0521660e05262000524565b82600b810192821562000313579160200282015b828111156200031357825180516200030291849160209091019062000376565b5091602001919060010190620002e2565b5062000321929150620003f3565b5090565b82805482825590600052602060002090810192821562000368579160200282015b8281111562000368578251829060ff1690559160200191906001019062000346565b506200032192915062000414565b8280546200038490620004e7565b90600052602060002090601f016020900481019282620003a8576000855562000368565b82601f10620003c357805160ff191683800117855562000368565b8280016001018555821562000368579182015b8281111562000368578251825591602001919060010190620003d6565b80821115620003215760006200040a82826200042b565b50600101620003f3565b5b8082111562000321576000815560010162000415565b5080546200043990620004e7565b6000825580601f106200044a575050565b601f0160209004906000526020600020908101906200046a919062000414565b50565b80516001600160a01b03811681146200048557600080fd5b919050565b60008060008060808587031215620004a157600080fd5b620004ac856200046d565b9350620004bc602086016200046d565b9250620004cc604086016200046d565b9150620004dc606086016200046d565b905092959194509250565b600181811c90821680620004fc57607f821691505b602082108114156200051e57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e051610aae6200057f6000396000818161013301526105f901526000818160b30152818161036e01526106850152600060f70152600081816101bb0152818161022601526102d20152610aae6000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80634528fa51116100715780634528fa51146101835780634a195d381461019657806379604a17146101b657806387e561a1146101dd578063b028d9bd146101f0578063df08b2db1461020357600080fd5b80630c0fd886146100ae5780631b2df850146100f2578063271acaf3146101195780632b3ed84e1461012e5780633b3546c814610155575b600080fd5b6100d57f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100d57f000000000000000000000000000000000000000000000000000000000000000081565b61012c61012736600461080c565b61020d565b005b6100d57f000000000000000000000000000000000000000000000000000000000000000081565b61017561016336600461082e565b600e6020526000908152604090205481565b6040519081526020016100e9565b61017561019136600461082e565b6103e0565b6101a96101a436600461082e565b610401565b6040516100e99190610847565b6100d57f000000000000000000000000000000000000000000000000000000000000000081565b6101756101eb36600461082e565b6104a1565b6101756101fe36600461082e565b6104b1565b6101756201518081565b6040516331a9108f60e11b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610275573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610299919061089c565b90506001600160a01b03811633148061033f575060405163e985e9c560e01b81526001600160a01b0382811660048301523360248301527f0000000000000000000000000000000000000000000000000000000000000000169063e985e9c5906044016020604051808303816000875af115801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f91906108cc565b61034857600080fd5b60405163a5d1688560e01b815260048101849052602481018390526201518060448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a5d1688590606401600060405180830381600087803b1580156103ba57600080fd5b505af11580156103ce573d6000803e3d6000fd5b505050506103db836104c1565b505050565b600d81815481106103f057600080fd5b600091825260209091200154905081565b600081600b811061041157600080fd5b018054909150610420906108ee565b80601f016020809104026020016040519081016040528092919081815260200182805461044c906108ee565b80156104995780601f1061046e57610100808354040283529160200191610499565b820191906000526020600020905b81548152906001019060200180831161047c57829003601f168201915b505050505081565b600c81815481106103f057600080fd5b600b81815481106103f057600080fd5b6000818152600e6020908152604080832054600b805483518186028101860190945280845291949361052b93879390929183018282801561052157602002820191906000526020600020905b81548152602001906001019080831161050d575b5050505050610778565b90506000600c828154811061054257610542610929565b9060005260206000200154905060006105a985600d805480602002602001604051908101604052809291908181526020018280548015610521576020028201919060005260206000209081548152602001906001019080831161050d575050505050610778565b6105b4906001610955565b9050600083156106615760088411156105d5576105d2826001610955565b91505b604051631417ed1b60e21b81526004810187905260248101849052604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063505fb46c90606401600060405180830381600087803b15801561064557600080fd5b505af1158015610659573d6000803e3d6000fd5b505050508190505b604051631417ed1b60e21b81526004810187905260036024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063505fb46c90606401600060405180830381600087803b1580156106d157600080fd5b505af11580156106e5573d6000803e3d6000fd5b5050506000878152600e6020526040812080549250906107048361096d565b91905055507f12c8c4adfc0d98e95fcc248394695d6723d5df72162d117daa0d8130921225c6868685600088600b811061074057610740610929565b0185600e60008d81526020019081526020016000205460405161076896959493929190610988565b60405180910390a1505050505050565b6040805143602082015242918101919091526060810183905260009081906064906080016040516020818303038152906040528051906020012060001c6107bf9190610a56565b905060005b8351811015610804578381815181106107df576107df610929565b602002602001015182116107f257610804565b806107fc8161096d565b9150506107c4565b949350505050565b6000806040838503121561081f57600080fd5b50508035926020909101359150565b60006020828403121561084057600080fd5b5035919050565b600060208083528351808285015260005b8181101561087457858101830151858201604001528201610858565b81811115610886576000604083870101525b50601f01601f1916929092016040019392505050565b6000602082840312156108ae57600080fd5b81516001600160a01b03811681146108c557600080fd5b9392505050565b6000602082840312156108de57600080fd5b815180151581146108c557600080fd5b600181811c9082168061090257607f821691505b6020821081141561092357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156109685761096861093f565b500190565b60006000198214156109815761098161093f565b5060010190565b86815260006020878184015286604084015260c060608401526000865481600182811c9150808316806109bc57607f831692505b8583108114156109da57634e487b7160e01b85526022600452602485fd5b60c0880183905260e088018180156109f95760018114610a0a57610a35565b60ff19861682528782019650610a35565b60008d81526020902060005b86811015610a2f57815484820152908501908901610a16565b83019750505b5050505050608085019690965260a090930193909352509695505050505050565b600082610a7357634e487b7160e01b600052601260045260246000fd5b50069056fea26469706673582212205783adcebb2d32ebe79923a0a7eab170c0276b25f2e7c55233cdefb5d9b5d45764736f6c634300080b00330000000000000000000000004de95c1e202102e22e801590c51d7b979f167fbb0000000000000000000000004e572433a3bfa336b6396d13afc9f69b58252861000000000000000000000000aae3a78ea8de1b89c64d5c64a26d5b1fc8f9149600000000000000000000000042e9b4353bddf972e7c962f3311f8fb30b08fe27
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80634528fa51116100715780634528fa51146101835780634a195d381461019657806379604a17146101b657806387e561a1146101dd578063b028d9bd146101f0578063df08b2db1461020357600080fd5b80630c0fd886146100ae5780631b2df850146100f2578063271acaf3146101195780632b3ed84e1461012e5780633b3546c814610155575b600080fd5b6100d57f000000000000000000000000aae3a78ea8de1b89c64d5c64a26d5b1fc8f9149681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100d57f0000000000000000000000004e572433a3bfa336b6396d13afc9f69b5825286181565b61012c61012736600461080c565b61020d565b005b6100d57f00000000000000000000000042e9b4353bddf972e7c962f3311f8fb30b08fe2781565b61017561016336600461082e565b600e6020526000908152604090205481565b6040519081526020016100e9565b61017561019136600461082e565b6103e0565b6101a96101a436600461082e565b610401565b6040516100e99190610847565b6100d57f0000000000000000000000004de95c1e202102e22e801590c51d7b979f167fbb81565b6101756101eb36600461082e565b6104a1565b6101756101fe36600461082e565b6104b1565b6101756201518081565b6040516331a9108f60e11b8152600481018390526000907f0000000000000000000000004de95c1e202102e22e801590c51d7b979f167fbb6001600160a01b031690636352211e90602401602060405180830381865afa158015610275573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610299919061089c565b90506001600160a01b03811633148061033f575060405163e985e9c560e01b81526001600160a01b0382811660048301523360248301527f0000000000000000000000004de95c1e202102e22e801590c51d7b979f167fbb169063e985e9c5906044016020604051808303816000875af115801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f91906108cc565b61034857600080fd5b60405163a5d1688560e01b815260048101849052602481018390526201518060448201527f000000000000000000000000aae3a78ea8de1b89c64d5c64a26d5b1fc8f914966001600160a01b03169063a5d1688590606401600060405180830381600087803b1580156103ba57600080fd5b505af11580156103ce573d6000803e3d6000fd5b505050506103db836104c1565b505050565b600d81815481106103f057600080fd5b600091825260209091200154905081565b600081600b811061041157600080fd5b018054909150610420906108ee565b80601f016020809104026020016040519081016040528092919081815260200182805461044c906108ee565b80156104995780601f1061046e57610100808354040283529160200191610499565b820191906000526020600020905b81548152906001019060200180831161047c57829003601f168201915b505050505081565b600c81815481106103f057600080fd5b600b81815481106103f057600080fd5b6000818152600e6020908152604080832054600b805483518186028101860190945280845291949361052b93879390929183018282801561052157602002820191906000526020600020905b81548152602001906001019080831161050d575b5050505050610778565b90506000600c828154811061054257610542610929565b9060005260206000200154905060006105a985600d805480602002602001604051908101604052809291908181526020018280548015610521576020028201919060005260206000209081548152602001906001019080831161050d575050505050610778565b6105b4906001610955565b9050600083156106615760088411156105d5576105d2826001610955565b91505b604051631417ed1b60e21b81526004810187905260248101849052604481018390527f00000000000000000000000042e9b4353bddf972e7c962f3311f8fb30b08fe276001600160a01b03169063505fb46c90606401600060405180830381600087803b15801561064557600080fd5b505af1158015610659573d6000803e3d6000fd5b505050508190505b604051631417ed1b60e21b81526004810187905260036024820152604481018390527f000000000000000000000000aae3a78ea8de1b89c64d5c64a26d5b1fc8f914966001600160a01b03169063505fb46c90606401600060405180830381600087803b1580156106d157600080fd5b505af11580156106e5573d6000803e3d6000fd5b5050506000878152600e6020526040812080549250906107048361096d565b91905055507f12c8c4adfc0d98e95fcc248394695d6723d5df72162d117daa0d8130921225c6868685600088600b811061074057610740610929565b0185600e60008d81526020019081526020016000205460405161076896959493929190610988565b60405180910390a1505050505050565b6040805143602082015242918101919091526060810183905260009081906064906080016040516020818303038152906040528051906020012060001c6107bf9190610a56565b905060005b8351811015610804578381815181106107df576107df610929565b602002602001015182116107f257610804565b806107fc8161096d565b9150506107c4565b949350505050565b6000806040838503121561081f57600080fd5b50508035926020909101359150565b60006020828403121561084057600080fd5b5035919050565b600060208083528351808285015260005b8181101561087457858101830151858201604001528201610858565b81811115610886576000604083870101525b50601f01601f1916929092016040019392505050565b6000602082840312156108ae57600080fd5b81516001600160a01b03811681146108c557600080fd5b9392505050565b6000602082840312156108de57600080fd5b815180151581146108c557600080fd5b600181811c9082168061090257607f821691505b6020821081141561092357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156109685761096861093f565b500190565b60006000198214156109815761098161093f565b5060010190565b86815260006020878184015286604084015260c060608401526000865481600182811c9150808316806109bc57607f831692505b8583108114156109da57634e487b7160e01b85526022600452602485fd5b60c0880183905260e088018180156109f95760018114610a0a57610a35565b60ff19861682528782019650610a35565b60008d81526020902060005b86811015610a2f57815484820152908501908901610a16565b83019750505b5050505050608085019690965260a090930193909352509695505050505050565b600082610a7357634e487b7160e01b600052601260045260246000fd5b50069056fea26469706673582212205783adcebb2d32ebe79923a0a7eab170c0276b25f2e7c55233cdefb5d9b5d45764736f6c634300080b0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000004de95c1e202102e22e801590c51d7b979f167fbb0000000000000000000000004e572433a3bfa336b6396d13afc9f69b58252861000000000000000000000000aae3a78ea8de1b89c64d5c64a26d5b1fc8f9149600000000000000000000000042e9b4353bddf972e7c962f3311f8fb30b08fe27
-----Decoded View---------------
Arg [0] : realm (address): 0x4de95c1E202102E22E801590C51D7B979f167FBB
Arg [1] : manager (address): 0x4E572433A3Bfa336b6396D13AfC9F69b58252861
Arg [2] : data (address): 0xAae3A78EA8De1b89C64D5c64A26d5b1FC8F91496
Arg [3] : resource (address): 0x42E9b4353BddF972e7c962f3311F8fB30B08fE27
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000004de95c1e202102e22e801590c51d7b979f167fbb
Arg [1] : 0000000000000000000000004e572433a3bfa336b6396d13afc9f69b58252861
Arg [2] : 000000000000000000000000aae3a78ea8de1b89c64d5c64a26d5b1fc8f91496
Arg [3] : 00000000000000000000000042e9b4353bddf972e7c962f3311f8fb30b08fe27
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.