More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 26,728 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Sell Keys | 48586964 | 268 days ago | IN | 0 AVAX | 0.00255037 | ||||
Sell Keys | 48586954 | 268 days ago | IN | 0 AVAX | 0.00248826 | ||||
Sell Keys | 48586917 | 268 days ago | IN | 0 AVAX | 0.00268528 | ||||
Sell Keys | 48586902 | 268 days ago | IN | 0 AVAX | 0.00247729 | ||||
Sell Keys | 48586880 | 268 days ago | IN | 0 AVAX | 0.00247729 | ||||
Sell Keys | 48586864 | 268 days ago | IN | 0 AVAX | 0.00247729 | ||||
Sell Keys | 48586853 | 268 days ago | IN | 0 AVAX | 0.00247729 | ||||
Sell Keys | 48586842 | 268 days ago | IN | 0 AVAX | 0.00247729 | ||||
Sell Keys | 48265992 | 275 days ago | IN | 0 AVAX | 0.00247698 | ||||
Sell Keys | 48265961 | 275 days ago | IN | 0 AVAX | 0.00244065 | ||||
Sell Keys | 48265935 | 275 days ago | IN | 0 AVAX | 0.00245108 | ||||
Sell Keys | 48265907 | 275 days ago | IN | 0 AVAX | 0.00251843 | ||||
Sell Keys | 47537215 | 293 days ago | IN | 0 AVAX | 0.00247729 | ||||
Sell Keys | 47537209 | 293 days ago | IN | 0 AVAX | 0.00247729 | ||||
Sell Keys | 47537204 | 293 days ago | IN | 0 AVAX | 0.00247729 | ||||
Sell Keys | 47537198 | 293 days ago | IN | 0 AVAX | 0.00247729 | ||||
Sell Keys | 47537192 | 293 days ago | IN | 0 AVAX | 0.00247729 | ||||
Sell Keys | 47537177 | 293 days ago | IN | 0 AVAX | 0.00247729 | ||||
Sell Keys | 47537168 | 293 days ago | IN | 0 AVAX | 0.00249794 | ||||
Sell Keys | 46797956 | 310 days ago | IN | 0 AVAX | 0.00241104 | ||||
Sell Keys | 46797929 | 310 days ago | IN | 0 AVAX | 0.00251843 | ||||
Sell Keys | 46797808 | 310 days ago | IN | 0 AVAX | 0.00247729 | ||||
Sell Keys | 46797702 | 310 days ago | IN | 0 AVAX | 0.00247729 | ||||
Sell Keys | 46438393 | 319 days ago | IN | 0 AVAX | 0.00247729 | ||||
Sell Keys | 46438387 | 319 days ago | IN | 0 AVAX | 0.00247729 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
48586964 | 268 days ago | 0.03648648 AVAX | ||||
48586964 | 268 days ago | 0.00263513 AVAX | ||||
48586964 | 268 days ago | 0.00129729 AVAX | ||||
48586964 | 268 days ago | 0.00012162 AVAX | ||||
48586954 | 268 days ago | 0.10135135 AVAX | ||||
48586954 | 268 days ago | 0.00731981 AVAX | ||||
48586954 | 268 days ago | 0.0036036 AVAX | ||||
48586954 | 268 days ago | 0.00033783 AVAX | ||||
48586917 | 268 days ago | 0.01621621 AVAX | ||||
48586917 | 268 days ago | 0.00117117 AVAX | ||||
48586917 | 268 days ago | 0.00057657 AVAX | ||||
48586917 | 268 days ago | 0.00005405 AVAX | ||||
48586902 | 268 days ago | 0.03648648 AVAX | ||||
48586902 | 268 days ago | 0.00263513 AVAX | ||||
48586902 | 268 days ago | 0.00129729 AVAX | ||||
48586902 | 268 days ago | 0.00012162 AVAX | ||||
48586880 | 268 days ago | 0.01621621 AVAX | ||||
48586880 | 268 days ago | 0.00117117 AVAX | ||||
48586880 | 268 days ago | 0.00057657 AVAX | ||||
48586880 | 268 days ago | 0.00005405 AVAX | ||||
48586864 | 268 days ago | 0.10135135 AVAX | ||||
48586864 | 268 days ago | 0.00731981 AVAX | ||||
48586864 | 268 days ago | 0.0036036 AVAX | ||||
48586864 | 268 days ago | 0.00033783 AVAX | ||||
48586853 | 268 days ago | 0.14594594 AVAX |
Loading...
Loading
Contract Name:
Access
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 200 runs
Other Settings:
london EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; contract Access is Ownable, ReentrancyGuard { event Trade( address trader, address subject, address application, bool isBuy, uint256 keyAmount, uint256 ethAmount, uint256 protocolEthAmount, uint256 subjectEthAmount, uint256 applicationEthAmount, uint256 supply ); address public protocolFeeDestination; mapping (address => address) public subjectFeeDestination; uint256 public protocolFeePercent; uint256 public subjectFeePercent; uint256 public applicationFeePercent; uint256 public FEE_DENOMINATOR = 10000; constructor(address protocolFeeDestination_) { protocolFeePercent = 30; // 0.3% subjectFeePercent = 650; // 6.5% applicationFeePercent = 320; // 3.2% protocolFeeDestination = protocolFeeDestination_; } // KeysSubject => (Holder => Balance) mapping(address => mapping(address => uint256)) public keysBalance; // KeysSubject => Supply mapping(address => uint256) public keysSupply; function setFeeDestination(address _feeDestination) public onlyOwner { require(_feeDestination != address(0)); protocolFeeDestination = _feeDestination; } function setSubjectFeeDestination(address _feeDestination) public { require(_feeDestination != address(0)); subjectFeeDestination[msg.sender] = _feeDestination; } function setProtocolFeePercent(uint256 _feePercent) public onlyOwner { require(_feePercent <= 50); // max 0.5% (50/10000) protocolFeePercent = _feePercent; } function setSubjectFeePercent(uint256 _feePercent) public onlyOwner { require(_feePercent <= 650); // max 6.5% (650/10000) subjectFeePercent = _feePercent; } function setApplicationFeePercent(uint256 _feePercent) public onlyOwner { require(_feePercent <= 350); // max 3.5% (350/10000) applicationFeePercent = _feePercent; } /* Academic motivation for "222": I hope the next time I move I get a real easy phone number, something that's real easy to remember. Something like 222-2222. I would say, "Sweet." And then people would say, "Mitch, how do I get a hold of you?" I'd say, "Just press 2 for a while. And when I answer, you will know you have pressed 2 enough." - Mitch Hedberg */ function getPrice(uint256 supply, uint256 amount) public pure returns (uint256) { require(!(supply == 0 && amount > 1), "First purchase can only be for 1."); // > 1 causes underflow in sum2 uint256 sum1 = supply == 0 ? 0 : (supply - 1 )* (supply) * (2 * (supply - 1) + 1) / 6; uint256 sum2 = supply == 0 && amount == 1 ? 0 : (supply - 1 + amount) * (supply + amount) * (2 * (supply - 1 + amount) + 1) / 6; uint256 summation = sum2 - sum1; return summation * 1 ether / 222; } function getBuyPrice(address keysSubject, uint256 amount) public view returns (uint256) { return getPrice(keysSupply[keysSubject], amount); } function getSellPrice(address keysSubject, uint256 amount) public view returns (uint256) { return getPrice(keysSupply[keysSubject] - amount, amount); } function getBuyPriceAfterFee(address keysSubject, uint256 amount) public view returns (uint256) { uint256 price = getBuyPrice(keysSubject, amount); uint256 protocolFee = price * protocolFeePercent / FEE_DENOMINATOR; uint256 subjectFee = price * subjectFeePercent / FEE_DENOMINATOR; uint256 applicationFee = price * applicationFeePercent / FEE_DENOMINATOR; return price + protocolFee + subjectFee + applicationFee; } function getSellPriceAfterFee(address keysSubject, uint256 amount) public view returns (uint256) { uint256 price = getSellPrice(keysSubject, amount); uint256 protocolFee = price * protocolFeePercent / FEE_DENOMINATOR; uint256 subjectFee = price * subjectFeePercent / FEE_DENOMINATOR; uint256 applicationFee = price * applicationFeePercent / FEE_DENOMINATOR; return price - protocolFee - subjectFee - applicationFee; } function buyKeys(address application, address keysSubject, uint256 amount) public payable nonReentrant { require(application != address(0), "Application cannot be null."); require(protocolFeeDestination != address(0), "Protocol cannot be null."); require(amount > 0, "Amount cannot be zero."); uint256 supply = keysSupply[keysSubject]; require(supply > 0 || keysSubject == msg.sender, "Only the keys' subject can buy the first key."); uint256 price = getPrice(supply, amount); uint256 protocolFee = price * protocolFeePercent / FEE_DENOMINATOR; uint256 subjectFee = price * subjectFeePercent / FEE_DENOMINATOR; uint256 applicationFee = price * applicationFeePercent / FEE_DENOMINATOR; require(msg.value >= price + protocolFee + subjectFee + applicationFee, "Insufficient payment."); keysBalance[keysSubject][msg.sender] = keysBalance[keysSubject][msg.sender] + amount; keysSupply[keysSubject] = supply + amount; emit Trade( msg.sender, // address trader keysSubject, // address subject application, // address application true, // bool isBuy amount, // uint256 keyAmount price, // uint256 ethAmount protocolFee, // uint256 protocolEthAmount subjectFee, // uint256 subjectEthAmount applicationFee, // uint256 applicationEthAmount supply + amount // uint256 supply ); transferFunds(protocolFeeDestination, protocolFee); transferFunds(application, applicationFee); transferFunds(getSubjectFeeDestination(keysSubject), subjectFee); uint256 remainder = msg.value - (price + protocolFee + subjectFee + applicationFee); if (remainder > 0) { transferFunds(msg.sender, remainder); } } function sellKeys(address application, address keysSubject, uint256 amount) public nonReentrant { uint256 supply = keysSupply[keysSubject]; require(supply > amount, "Cannot sell the last key."); require(application != address(0), "Application cannot be null."); require(protocolFeeDestination != address(0), "Protocol cannot be null."); require(amount > 0, "Amount cannot be zero."); uint256 price = getPrice(supply - amount, amount); uint256 protocolFee = price * protocolFeePercent / FEE_DENOMINATOR; uint256 applicationFee = price * applicationFeePercent / FEE_DENOMINATOR; uint256 subjectFee = price * subjectFeePercent / FEE_DENOMINATOR; require(keysBalance[keysSubject][msg.sender] >= amount, "Insufficient keys."); keysBalance[keysSubject][msg.sender] = keysBalance[keysSubject][msg.sender] - amount; keysSupply[keysSubject] = supply - amount; emit Trade( msg.sender, // address trader keysSubject, // address subject application, // address application false, // bool isBuy amount, // uint256 keyAmount price, // uint256 ethAmount protocolFee, // uint256 protocolEthAmount subjectFee, // uint256 subjectEthAmount applicationFee, // uint256 applicationEthAmount supply - amount // uint256 supply ); transferFunds(protocolFeeDestination, protocolFee); transferFunds(application, applicationFee); transferFunds(getSubjectFeeDestination(keysSubject), subjectFee); transferFunds(msg.sender, price - protocolFee - subjectFee - applicationFee); } function transferFunds(address recipient, uint256 amount) private { (bool success,) = recipient.call{value: amount}(""); require(success, "Failed to transfer funds."); } function getSubjectFeeDestination(address subject) private view returns (address) { address subjectFeeDest = subject; if (subjectFeeDestination[subject] != address(0)) { subjectFeeDest = subjectFeeDestination[subject]; } return subjectFeeDest; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be _NOT_ENTERED require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } /** * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a * `nonReentrant` function in the call stack. */ function _reentrancyGuardEntered() internal view returns (bool) { return _status == _ENTERED; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
{ "remappings": [], "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "london", "libraries": {}, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"protocolFeeDestination_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"trader","type":"address"},{"indexed":false,"internalType":"address","name":"subject","type":"address"},{"indexed":false,"internalType":"address","name":"application","type":"address"},{"indexed":false,"internalType":"bool","name":"isBuy","type":"bool"},{"indexed":false,"internalType":"uint256","name":"keyAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"protocolEthAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"subjectEthAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"applicationEthAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"supply","type":"uint256"}],"name":"Trade","type":"event"},{"inputs":[],"name":"FEE_DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"applicationFeePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"application","type":"address"},{"internalType":"address","name":"keysSubject","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buyKeys","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"keysSubject","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getBuyPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"keysSubject","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getBuyPriceAfterFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"supply","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"keysSubject","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getSellPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"keysSubject","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getSellPriceAfterFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"keysBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"keysSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolFeeDestination","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolFeePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"application","type":"address"},{"internalType":"address","name":"keysSubject","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sellKeys","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feePercent","type":"uint256"}],"name":"setApplicationFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeDestination","type":"address"}],"name":"setFeeDestination","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feePercent","type":"uint256"}],"name":"setProtocolFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeDestination","type":"address"}],"name":"setSubjectFeeDestination","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feePercent","type":"uint256"}],"name":"setSubjectFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"subjectFeeDestination","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"subjectFeePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405261271060075534801561001657600080fd5b506040516114ee3803806114ee833981016040819052610035916100c8565b61003e33610078565b60018055601e60045561028a600555610140600655600280546001600160a01b0319166001600160a01b03929092169190911790556100f8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100da57600080fd5b81516001600160a01b03811681146100f157600080fd5b9392505050565b6113e7806101076000396000f3fe6080604052600436106101405760003560e01c8063773b1255116100b6578063d73792a91161006f578063d73792a91461035a578063d7532d9a14610370578063e575ab96146103a6578063f2fde38b146103d3578063fbe53234146103f3578063fc255d651461041357600080fd5b8063773b1255146102b35780637dd6fc68146102c65780638da5cb5b146102e65780639ae7178114610304578063a498342114610324578063d6e6eb9f1461034457600080fd5b80634ce7957c116101085780634ce7957c146101f05780635a8a764e146102285780635cf4ee91146102485780636608aa17146102685780636de2afc014610288578063715018a61461029e57600080fd5b80630f026f6d146101455780631f5722f8146101785780632267a89c1461019a57806324dc441d146101ba5780634635256e146101d0575b600080fd5b34801561015157600080fd5b506101656101603660046111f7565b61044b565b6040519081526020015b60405180910390f35b34801561018457600080fd5b50610198610193366004611221565b6104e4565b005b3480156101a657600080fd5b506101656101b53660046111f7565b610526565b3480156101c657600080fd5b5061016560055481565b3480156101dc57600080fd5b506101656101eb3660046111f7565b6105b2565b3480156101fc57600080fd5b50600254610210906001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b34801561023457600080fd5b5061019861024336600461123c565b6105dc565b34801561025457600080fd5b50610165610263366004611255565b6105f8565b34801561027457600080fd5b5061019861028336600461123c565b610783565b34801561029457600080fd5b5061016560065481565b3480156102aa57600080fd5b5061019861079f565b6101986102c1366004611277565b6107b3565b3480156102d257600080fd5b506101986102e1366004611277565b610b6f565b3480156102f257600080fd5b506000546001600160a01b0316610210565b34801561031057600080fd5b5061016561031f3660046111f7565b610ef2565b34801561033057600080fd5b5061019861033f36600461123c565b610f20565b34801561035057600080fd5b5061016560045481565b34801561036657600080fd5b5061016560075481565b34801561037c57600080fd5b5061021061038b366004611221565b6003602052600090815260409020546001600160a01b031681565b3480156103b257600080fd5b506101656103c1366004611221565b60096020526000908152604090205481565b3480156103df57600080fd5b506101986103ee366004611221565b610f3b565b3480156103ff57600080fd5b5061019861040e366004611221565b610fb4565b34801561041f57600080fd5b5061016561042e3660046112b3565b600860209081526000928352604080842090915290825290205481565b60008061045884846105b2565b905060006007546004548361046d91906112fc565b6104779190611313565b905060006007546005548461048c91906112fc565b6104969190611313565b90506000600754600654856104ab91906112fc565b6104b59190611313565b905080826104c38587611335565b6104cd9190611335565b6104d79190611335565b9450505050505b92915050565b6001600160a01b0381166104f757600080fd5b33600090815260036020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806105338484610ef2565b905060006007546004548361054891906112fc565b6105529190611313565b905060006007546005548461056791906112fc565b6105719190611313565b905060006007546006548561058691906112fc565b6105909190611313565b9050808261059e8587611348565b6105a89190611348565b6104d79190611348565b6001600160a01b0382166000908152600960205260408120546105d590836105f8565b9392505050565b6105e4610ff1565b61028a8111156105f357600080fd5b600555565b6000821580156106085750600182115b156106645760405162461bcd60e51b815260206004820152602160248201527f46697273742070757263686173652063616e206f6e6c7920626520666f7220316044820152601760f91b60648201526084015b60405180910390fd5b600083156106be576006610679600186611348565b6106849060026112fc565b61068f906001611335565b8561069b600182611348565b6106a591906112fc565b6106af91906112fc565b6106b99190611313565b6106c1565b60005b90506000841580156106d35750836001145b610748576006846106e5600188611348565b6106ef9190611335565b6106fa9060026112fc565b610705906001611335565b61070f8688611335565b8661071b60018a611348565b6107259190611335565b61072f91906112fc565b61073991906112fc565b6107439190611313565b61074b565b60005b905060006107598383611348565b905060de61076f82670de0b6b3a76400006112fc565b6107799190611313565b9695505050505050565b61078b610ff1565b61015e81111561079a57600080fd5b600655565b6107a7610ff1565b6107b1600061104b565b565b6107bb61109b565b6001600160a01b0383166108115760405162461bcd60e51b815260206004820152601b60248201527f4170706c69636174696f6e2063616e6e6f74206265206e756c6c2e0000000000604482015260640161065b565b6002546001600160a01b03166108645760405162461bcd60e51b8152602060048201526018602482015277283937ba37b1b7b61031b0b73737ba10313290373ab6361760411b604482015260640161065b565b600081116108ad5760405162461bcd60e51b815260206004820152601660248201527520b6b7bab73a1031b0b73737ba103132903d32b9379760511b604482015260640161065b565b6001600160a01b038216600090815260096020526040902054801515806108dc57506001600160a01b03831633145b61093e5760405162461bcd60e51b815260206004820152602d60248201527f4f6e6c7920746865206b65797327207375626a6563742063616e20627579207460448201526c3432903334b939ba1035b2bc9760991b606482015260840161065b565b600061094a82846105f8565b905060006007546004548361095f91906112fc565b6109699190611313565b905060006007546005548461097e91906112fc565b6109889190611313565b905060006007546006548561099d91906112fc565b6109a79190611313565b905080826109b58587611335565b6109bf9190611335565b6109c99190611335565b341015610a105760405162461bcd60e51b815260206004820152601560248201527424b739bab33334b1b4b2b73a103830bcb6b2b73a1760591b604482015260640161065b565b6001600160a01b0387166000908152600860209081526040808320338452909152902054610a3f908790611335565b6001600160a01b0388166000908152600860209081526040808320338452909152902055610a6d8686611335565b60096000896001600160a01b03166001600160a01b03168152602001908152602001600020819055507f9ca3528cfea12217d72e62b6215794c9ebb440b1c13f653d5d5f55f32bcd248b33888a60018a898989898f8f610acd9190611335565b604051610ae39a9998979695949392919061135b565b60405180910390a1600254610b01906001600160a01b0316846110f4565b610b0b88826110f4565b610b1d610b1788611197565b836110f4565b60008183610b2b8688611335565b610b359190611335565b610b3f9190611335565b610b499034611348565b90508015610b5b57610b5b33826110f4565b505050505050610b6a60018055565b505050565b610b7761109b565b6001600160a01b038216600090815260096020526040902054818111610bdf5760405162461bcd60e51b815260206004820152601960248201527f43616e6e6f742073656c6c20746865206c617374206b65792e00000000000000604482015260640161065b565b6001600160a01b038416610c355760405162461bcd60e51b815260206004820152601b60248201527f4170706c69636174696f6e2063616e6e6f74206265206e756c6c2e0000000000604482015260640161065b565b6002546001600160a01b0316610c885760405162461bcd60e51b8152602060048201526018602482015277283937ba37b1b7b61031b0b73737ba10313290373ab6361760411b604482015260640161065b565b60008211610cd15760405162461bcd60e51b815260206004820152601660248201527520b6b7bab73a1031b0b73737ba103132903d32b9379760511b604482015260640161065b565b6000610ce6610ce08484611348565b846105f8565b9050600060075460045483610cfb91906112fc565b610d059190611313565b9050600060075460065484610d1a91906112fc565b610d249190611313565b9050600060075460055485610d3991906112fc565b610d439190611313565b6001600160a01b0388166000908152600860209081526040808320338452909152902054909150861115610dae5760405162461bcd60e51b815260206004820152601260248201527124b739bab33334b1b4b2b73a1035b2bcb99760711b604482015260640161065b565b6001600160a01b0387166000908152600860209081526040808320338452909152902054610ddd908790611348565b6001600160a01b0388166000908152600860209081526040808320338452909152902055610e0b8686611348565b60096000896001600160a01b03166001600160a01b03168152602001908152602001600020819055507f9ca3528cfea12217d72e62b6215794c9ebb440b1c13f653d5d5f55f32bcd248b33888a60008a8989888a8f8f610e6b9190611348565b604051610e819a9998979695949392919061135b565b60405180910390a1600254610e9f906001600160a01b0316846110f4565b610ea988836110f4565b610ebb610eb588611197565b826110f4565b610ee4338383610ecb8789611348565b610ed59190611348565b610edf9190611348565b6110f4565b5050505050610b6a60018055565b6001600160a01b0382166000908152600960205260408120546105d590610f1a908490611348565b836105f8565b610f28610ff1565b6032811115610f3657600080fd5b600455565b610f43610ff1565b6001600160a01b038116610fa85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161065b565b610fb18161104b565b50565b610fbc610ff1565b6001600160a01b038116610fcf57600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146107b15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161065b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6002600154036110ed5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161065b565b6002600155565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611141576040519150601f19603f3d011682016040523d82523d6000602084013e611146565b606091505b5050905080610b6a5760405162461bcd60e51b815260206004820152601960248201527f4661696c656420746f207472616e736665722066756e64732e00000000000000604482015260640161065b565b6001600160a01b038082166000908152600360205260408120549091839116156104de5750506001600160a01b039081166000908152600360205260409020541690565b80356001600160a01b03811681146111f257600080fd5b919050565b6000806040838503121561120a57600080fd5b611213836111db565b946020939093013593505050565b60006020828403121561123357600080fd5b6105d5826111db565b60006020828403121561124e57600080fd5b5035919050565b6000806040838503121561126857600080fd5b50508035926020909101359150565b60008060006060848603121561128c57600080fd5b611295846111db565b92506112a3602085016111db565b9150604084013590509250925092565b600080604083850312156112c657600080fd5b6112cf836111db565b91506112dd602084016111db565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176104de576104de6112e6565b60008261133057634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156104de576104de6112e6565b818103818111156104de576104de6112e6565b6001600160a01b039a8b168152988a1660208a01529690981660408801529315156060870152608086019290925260a085015260c084015260e0830152610100820192909252610120810191909152610140019056fea264697066735822122096e3489f3fec89d43ac3673251f4ac2a47adc191095cf40936784d623df6a45264736f6c6343000811003300000000000000000000000091fd9ee7a7947c66dd80eeba403714d81a6930a9
Deployed Bytecode
0x6080604052600436106101405760003560e01c8063773b1255116100b6578063d73792a91161006f578063d73792a91461035a578063d7532d9a14610370578063e575ab96146103a6578063f2fde38b146103d3578063fbe53234146103f3578063fc255d651461041357600080fd5b8063773b1255146102b35780637dd6fc68146102c65780638da5cb5b146102e65780639ae7178114610304578063a498342114610324578063d6e6eb9f1461034457600080fd5b80634ce7957c116101085780634ce7957c146101f05780635a8a764e146102285780635cf4ee91146102485780636608aa17146102685780636de2afc014610288578063715018a61461029e57600080fd5b80630f026f6d146101455780631f5722f8146101785780632267a89c1461019a57806324dc441d146101ba5780634635256e146101d0575b600080fd5b34801561015157600080fd5b506101656101603660046111f7565b61044b565b6040519081526020015b60405180910390f35b34801561018457600080fd5b50610198610193366004611221565b6104e4565b005b3480156101a657600080fd5b506101656101b53660046111f7565b610526565b3480156101c657600080fd5b5061016560055481565b3480156101dc57600080fd5b506101656101eb3660046111f7565b6105b2565b3480156101fc57600080fd5b50600254610210906001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b34801561023457600080fd5b5061019861024336600461123c565b6105dc565b34801561025457600080fd5b50610165610263366004611255565b6105f8565b34801561027457600080fd5b5061019861028336600461123c565b610783565b34801561029457600080fd5b5061016560065481565b3480156102aa57600080fd5b5061019861079f565b6101986102c1366004611277565b6107b3565b3480156102d257600080fd5b506101986102e1366004611277565b610b6f565b3480156102f257600080fd5b506000546001600160a01b0316610210565b34801561031057600080fd5b5061016561031f3660046111f7565b610ef2565b34801561033057600080fd5b5061019861033f36600461123c565b610f20565b34801561035057600080fd5b5061016560045481565b34801561036657600080fd5b5061016560075481565b34801561037c57600080fd5b5061021061038b366004611221565b6003602052600090815260409020546001600160a01b031681565b3480156103b257600080fd5b506101656103c1366004611221565b60096020526000908152604090205481565b3480156103df57600080fd5b506101986103ee366004611221565b610f3b565b3480156103ff57600080fd5b5061019861040e366004611221565b610fb4565b34801561041f57600080fd5b5061016561042e3660046112b3565b600860209081526000928352604080842090915290825290205481565b60008061045884846105b2565b905060006007546004548361046d91906112fc565b6104779190611313565b905060006007546005548461048c91906112fc565b6104969190611313565b90506000600754600654856104ab91906112fc565b6104b59190611313565b905080826104c38587611335565b6104cd9190611335565b6104d79190611335565b9450505050505b92915050565b6001600160a01b0381166104f757600080fd5b33600090815260036020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806105338484610ef2565b905060006007546004548361054891906112fc565b6105529190611313565b905060006007546005548461056791906112fc565b6105719190611313565b905060006007546006548561058691906112fc565b6105909190611313565b9050808261059e8587611348565b6105a89190611348565b6104d79190611348565b6001600160a01b0382166000908152600960205260408120546105d590836105f8565b9392505050565b6105e4610ff1565b61028a8111156105f357600080fd5b600555565b6000821580156106085750600182115b156106645760405162461bcd60e51b815260206004820152602160248201527f46697273742070757263686173652063616e206f6e6c7920626520666f7220316044820152601760f91b60648201526084015b60405180910390fd5b600083156106be576006610679600186611348565b6106849060026112fc565b61068f906001611335565b8561069b600182611348565b6106a591906112fc565b6106af91906112fc565b6106b99190611313565b6106c1565b60005b90506000841580156106d35750836001145b610748576006846106e5600188611348565b6106ef9190611335565b6106fa9060026112fc565b610705906001611335565b61070f8688611335565b8661071b60018a611348565b6107259190611335565b61072f91906112fc565b61073991906112fc565b6107439190611313565b61074b565b60005b905060006107598383611348565b905060de61076f82670de0b6b3a76400006112fc565b6107799190611313565b9695505050505050565b61078b610ff1565b61015e81111561079a57600080fd5b600655565b6107a7610ff1565b6107b1600061104b565b565b6107bb61109b565b6001600160a01b0383166108115760405162461bcd60e51b815260206004820152601b60248201527f4170706c69636174696f6e2063616e6e6f74206265206e756c6c2e0000000000604482015260640161065b565b6002546001600160a01b03166108645760405162461bcd60e51b8152602060048201526018602482015277283937ba37b1b7b61031b0b73737ba10313290373ab6361760411b604482015260640161065b565b600081116108ad5760405162461bcd60e51b815260206004820152601660248201527520b6b7bab73a1031b0b73737ba103132903d32b9379760511b604482015260640161065b565b6001600160a01b038216600090815260096020526040902054801515806108dc57506001600160a01b03831633145b61093e5760405162461bcd60e51b815260206004820152602d60248201527f4f6e6c7920746865206b65797327207375626a6563742063616e20627579207460448201526c3432903334b939ba1035b2bc9760991b606482015260840161065b565b600061094a82846105f8565b905060006007546004548361095f91906112fc565b6109699190611313565b905060006007546005548461097e91906112fc565b6109889190611313565b905060006007546006548561099d91906112fc565b6109a79190611313565b905080826109b58587611335565b6109bf9190611335565b6109c99190611335565b341015610a105760405162461bcd60e51b815260206004820152601560248201527424b739bab33334b1b4b2b73a103830bcb6b2b73a1760591b604482015260640161065b565b6001600160a01b0387166000908152600860209081526040808320338452909152902054610a3f908790611335565b6001600160a01b0388166000908152600860209081526040808320338452909152902055610a6d8686611335565b60096000896001600160a01b03166001600160a01b03168152602001908152602001600020819055507f9ca3528cfea12217d72e62b6215794c9ebb440b1c13f653d5d5f55f32bcd248b33888a60018a898989898f8f610acd9190611335565b604051610ae39a9998979695949392919061135b565b60405180910390a1600254610b01906001600160a01b0316846110f4565b610b0b88826110f4565b610b1d610b1788611197565b836110f4565b60008183610b2b8688611335565b610b359190611335565b610b3f9190611335565b610b499034611348565b90508015610b5b57610b5b33826110f4565b505050505050610b6a60018055565b505050565b610b7761109b565b6001600160a01b038216600090815260096020526040902054818111610bdf5760405162461bcd60e51b815260206004820152601960248201527f43616e6e6f742073656c6c20746865206c617374206b65792e00000000000000604482015260640161065b565b6001600160a01b038416610c355760405162461bcd60e51b815260206004820152601b60248201527f4170706c69636174696f6e2063616e6e6f74206265206e756c6c2e0000000000604482015260640161065b565b6002546001600160a01b0316610c885760405162461bcd60e51b8152602060048201526018602482015277283937ba37b1b7b61031b0b73737ba10313290373ab6361760411b604482015260640161065b565b60008211610cd15760405162461bcd60e51b815260206004820152601660248201527520b6b7bab73a1031b0b73737ba103132903d32b9379760511b604482015260640161065b565b6000610ce6610ce08484611348565b846105f8565b9050600060075460045483610cfb91906112fc565b610d059190611313565b9050600060075460065484610d1a91906112fc565b610d249190611313565b9050600060075460055485610d3991906112fc565b610d439190611313565b6001600160a01b0388166000908152600860209081526040808320338452909152902054909150861115610dae5760405162461bcd60e51b815260206004820152601260248201527124b739bab33334b1b4b2b73a1035b2bcb99760711b604482015260640161065b565b6001600160a01b0387166000908152600860209081526040808320338452909152902054610ddd908790611348565b6001600160a01b0388166000908152600860209081526040808320338452909152902055610e0b8686611348565b60096000896001600160a01b03166001600160a01b03168152602001908152602001600020819055507f9ca3528cfea12217d72e62b6215794c9ebb440b1c13f653d5d5f55f32bcd248b33888a60008a8989888a8f8f610e6b9190611348565b604051610e819a9998979695949392919061135b565b60405180910390a1600254610e9f906001600160a01b0316846110f4565b610ea988836110f4565b610ebb610eb588611197565b826110f4565b610ee4338383610ecb8789611348565b610ed59190611348565b610edf9190611348565b6110f4565b5050505050610b6a60018055565b6001600160a01b0382166000908152600960205260408120546105d590610f1a908490611348565b836105f8565b610f28610ff1565b6032811115610f3657600080fd5b600455565b610f43610ff1565b6001600160a01b038116610fa85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161065b565b610fb18161104b565b50565b610fbc610ff1565b6001600160a01b038116610fcf57600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146107b15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161065b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6002600154036110ed5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161065b565b6002600155565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611141576040519150601f19603f3d011682016040523d82523d6000602084013e611146565b606091505b5050905080610b6a5760405162461bcd60e51b815260206004820152601960248201527f4661696c656420746f207472616e736665722066756e64732e00000000000000604482015260640161065b565b6001600160a01b038082166000908152600360205260408120549091839116156104de5750506001600160a01b039081166000908152600360205260409020541690565b80356001600160a01b03811681146111f257600080fd5b919050565b6000806040838503121561120a57600080fd5b611213836111db565b946020939093013593505050565b60006020828403121561123357600080fd5b6105d5826111db565b60006020828403121561124e57600080fd5b5035919050565b6000806040838503121561126857600080fd5b50508035926020909101359150565b60008060006060848603121561128c57600080fd5b611295846111db565b92506112a3602085016111db565b9150604084013590509250925092565b600080604083850312156112c657600080fd5b6112cf836111db565b91506112dd602084016111db565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176104de576104de6112e6565b60008261133057634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156104de576104de6112e6565b818103818111156104de576104de6112e6565b6001600160a01b039a8b168152988a1660208a01529690981660408801529315156060870152608086019290925260a085015260c084015260e0830152610100820192909252610120810191909152610140019056fea264697066735822122096e3489f3fec89d43ac3673251f4ac2a47adc191095cf40936784d623df6a45264736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000091fd9ee7a7947c66dd80eeba403714d81a6930a9
-----Decoded View---------------
Arg [0] : protocolFeeDestination_ (address): 0x91fD9Ee7a7947c66dd80eebA403714d81A6930a9
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000091fd9ee7a7947c66dd80eeba403714d81a6930a9
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.