Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
X7RDiscountAuthority
Compiler Version
v0.8.15+commit.e14f2714
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-09-19 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.15; /* /$$ /$$ /$$$$$$$$ /$$$$$$$$ /$$ | $$ / $$|_____ $$/ | $$_____/|__/ | $$/ $$/ /$$/ | $$ /$$ /$$$$$$$ /$$$$$$ /$$$$$$$ /$$$$$$$ /$$$$$$ \ $$$$/ /$$/ | $$$$$ | $$| $$__ $$ |____ $$| $$__ $$ /$$_____/ /$$__ $$ >$$ $$ /$$/ | $$__/ | $$| $$ \ $$ /$$$$$$$| $$ \ $$| $$ | $$$$$$$$ /$$/\ $$ /$$/ | $$ | $$| $$ | $$ /$$__ $$| $$ | $$| $$ | $$_____/ | $$ \ $$ /$$/ | $$ | $$| $$ | $$| $$$$$$$| $$ | $$| $$$$$$$| $$$$$$$ |__/ |__/|__/ |__/ |__/|__/ |__/ \_______/|__/ |__/ \_______/ \_______/ Contract: Smart Contract for X7R fee discounts This contract will NOT be renounced. The following are the only functions that can be called on the contract that affect the contract: function setEcosystemMaxiNFT(address tokenAddress) external onlyOwner { require(address(ecoMaxiNFT) != tokenAddress); address oldTokenAddress = address(ecoMaxiNFT); ecoMaxiNFT = IERC721(tokenAddress); emit EcosystemMaxiNFTSet(oldTokenAddress, tokenAddress); } function setLiquidityMaxiNFT(address tokenAddress) external onlyOwner { require(address(liqMaxiNFT) != tokenAddress); address oldTokenAddress = address(liqMaxiNFT); liqMaxiNFT = IERC721(tokenAddress); emit LiquidityMaxiNFTSet(oldTokenAddress, tokenAddress); } function setMagisterNFT(address tokenAddress) external onlyOwner { require(address(magisterNFT) != tokenAddress); address oldTokenAddress = address(magisterNFT); magisterNFT = IERC721(tokenAddress); emit MagisterNFTSet(oldTokenAddress, tokenAddress); } These functions will be passed to DAO governance once the ecosystem stabilizes. */ abstract contract Ownable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor(address owner_) { _transferOwnership(owner_); } modifier onlyOwner() { _checkOwner(); _; } function owner() public view virtual returns (address) { return _owner; } function _checkOwner() internal view virtual { require(owner() == msg.sender, "Ownable: caller is not the owner"); } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IERC721 { function balanceOf(address owner) external view returns (uint256); } interface IDiscountAuthority { function discountRatio(address) external view returns (uint256, uint256); } contract X7RDiscountAuthority is Ownable { IERC721 public ecoMaxiNFT; IERC721 public liqMaxiNFT; IERC721 public magisterNFT; event EcosystemMaxiNFTSet(address indexed oldTokenAddress, address indexed newTokenAddress); event LiquidityMaxiNFTSet(address indexed oldTokenAddress, address indexed newTokenAddress); event MagisterNFTSet(address indexed oldTokenAddress, address indexed newTokenAddress); constructor() Ownable(address(0x7000a09c425ABf5173FF458dF1370C25d1C58105)) {} function setEcosystemMaxiNFT(address tokenAddress) external onlyOwner { require(address(ecoMaxiNFT) != tokenAddress); address oldTokenAddress = address(ecoMaxiNFT); ecoMaxiNFT = IERC721(tokenAddress); emit EcosystemMaxiNFTSet(oldTokenAddress, tokenAddress); } function setLiquidityMaxiNFT(address tokenAddress) external onlyOwner { require(address(liqMaxiNFT) != tokenAddress); address oldTokenAddress = address(liqMaxiNFT); liqMaxiNFT = IERC721(tokenAddress); emit LiquidityMaxiNFTSet(oldTokenAddress, tokenAddress); } function setMagisterNFT(address tokenAddress) external onlyOwner { require(address(magisterNFT) != tokenAddress); address oldTokenAddress = address(magisterNFT); magisterNFT = IERC721(tokenAddress); emit MagisterNFTSet(oldTokenAddress, tokenAddress); } function discountRatio(address swapper) external view returns (uint256 numerator, uint256 denominator) { numerator = 1; denominator = 1; if (liqMaxiNFT.balanceOf(swapper) > 0 || magisterNFT.balanceOf(swapper) > 0) { // 25% discount numerator = 75; denominator = 100; } else if (ecoMaxiNFT.balanceOf(swapper) > 0) { // 10% discount numerator = 90; denominator = 100; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldTokenAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newTokenAddress","type":"address"}],"name":"EcosystemMaxiNFTSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldTokenAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newTokenAddress","type":"address"}],"name":"LiquidityMaxiNFTSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldTokenAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newTokenAddress","type":"address"}],"name":"MagisterNFTSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"swapper","type":"address"}],"name":"discountRatio","outputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ecoMaxiNFT","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqMaxiNFT","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"magisterNFT","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"setEcosystemMaxiNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"setLiquidityMaxiNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"setMagisterNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50737000a09c425abf5173ff458df1370c25d1c5810561002f81610035565b50610085565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61062f806100946000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063715018a611610066578063715018a6146101365780638da5cb5b1461013e578063a56b70101461014f578063e34093ff14610162578063f2fde38b1461017557600080fd5b806307b6fb0f146100a35780630accd75a146100d35780631571a568146100fb578063425022c214610110578063532b5cf914610123575b600080fd5b6002546100b6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100e66100e13660046105b0565b610188565b604080519283526020830191909152016100ca565b61010e6101093660046105b0565b610309565b005b61010e61011e3660046105b0565b61037d565b61010e6101313660046105b0565b6103f1565b61010e610465565b6000546001600160a01b03166100b6565b6001546100b6906001600160a01b031681565b6003546100b6906001600160a01b031681565b61010e6101833660046105b0565b610479565b6002546040516370a0823160e01b81526001600160a01b0383811660048301526001928392600092909116906370a0823190602401602060405180830381865afa1580156101da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101fe91906105e0565b118061027657506003546040516370a0823160e01b81526001600160a01b03858116600483015260009216906370a0823190602401602060405180830381865afa158015610250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027491906105e0565b115b156102875750604b90506064915091565b6001546040516370a0823160e01b81526001600160a01b03858116600483015260009216906370a0823190602401602060405180830381865afa1580156102d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f691906105e0565b11156103045750605a905060645b915091565b6103116104f7565b6001546001600160a01b0380831691160361032b57600080fd5b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f5b3d3e51ada14ef3f4ce0d8cdc1270cb619f4ac67f18cdb136b48b19cc21e14f90600090a35050565b6103856104f7565b6003546001600160a01b0380831691160361039f57600080fd5b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907fb429279723b0bba412a6f71ac72f48a48bce76bb8dfba75777d49a38102f941690600090a35050565b6103f96104f7565b6002546001600160a01b0380831691160361041357600080fd5b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f1713c58f9958e815e8db9bf06dafd5fc344e86296422f52157aab84005f2c89d90600090a35050565b61046d6104f7565b6104776000610560565b565b6104816104f7565b6001600160a01b0381166104eb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6104f481610560565b50565b3361050a6000546001600160a01b031690565b6001600160a01b0316146104775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104e2565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156105c257600080fd5b81356001600160a01b03811681146105d957600080fd5b9392505050565b6000602082840312156105f257600080fd5b505191905056fea2646970667358221220d08bdce7b10baea1ab1bacd2765bf084c387f6bb0ce693729d2efef0c098db3464736f6c634300080f0033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061009e5760003560e01c8063715018a611610066578063715018a6146101365780638da5cb5b1461013e578063a56b70101461014f578063e34093ff14610162578063f2fde38b1461017557600080fd5b806307b6fb0f146100a35780630accd75a146100d35780631571a568146100fb578063425022c214610110578063532b5cf914610123575b600080fd5b6002546100b6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100e66100e13660046105b0565b610188565b604080519283526020830191909152016100ca565b61010e6101093660046105b0565b610309565b005b61010e61011e3660046105b0565b61037d565b61010e6101313660046105b0565b6103f1565b61010e610465565b6000546001600160a01b03166100b6565b6001546100b6906001600160a01b031681565b6003546100b6906001600160a01b031681565b61010e6101833660046105b0565b610479565b6002546040516370a0823160e01b81526001600160a01b0383811660048301526001928392600092909116906370a0823190602401602060405180830381865afa1580156101da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101fe91906105e0565b118061027657506003546040516370a0823160e01b81526001600160a01b03858116600483015260009216906370a0823190602401602060405180830381865afa158015610250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027491906105e0565b115b156102875750604b90506064915091565b6001546040516370a0823160e01b81526001600160a01b03858116600483015260009216906370a0823190602401602060405180830381865afa1580156102d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f691906105e0565b11156103045750605a905060645b915091565b6103116104f7565b6001546001600160a01b0380831691160361032b57600080fd5b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f5b3d3e51ada14ef3f4ce0d8cdc1270cb619f4ac67f18cdb136b48b19cc21e14f90600090a35050565b6103856104f7565b6003546001600160a01b0380831691160361039f57600080fd5b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907fb429279723b0bba412a6f71ac72f48a48bce76bb8dfba75777d49a38102f941690600090a35050565b6103f96104f7565b6002546001600160a01b0380831691160361041357600080fd5b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f1713c58f9958e815e8db9bf06dafd5fc344e86296422f52157aab84005f2c89d90600090a35050565b61046d6104f7565b6104776000610560565b565b6104816104f7565b6001600160a01b0381166104eb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6104f481610560565b50565b3361050a6000546001600160a01b031690565b6001600160a01b0316146104775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104e2565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156105c257600080fd5b81356001600160a01b03811681146105d957600080fd5b9392505050565b6000602082840312156105f257600080fd5b505191905056fea2646970667358221220d08bdce7b10baea1ab1bacd2765bf084c387f6bb0ce693729d2efef0c098db3464736f6c634300080f0033
Deployed Bytecode Sourcemap
3176:1944:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3258:25;;;;;-1:-1:-1;;;;;3258:25:0;;;;;;-1:-1:-1;;;;;193:32:1;;;175:51;;163:2;148:18;3258:25:0;;;;;;;;4618:499;;;;;;:::i;:::-;;:::i;:::-;;;;702:25:1;;;758:2;743:18;;736:34;;;;675:18;4618:499:0;528:248:1;3701:300:0;;;;;;:::i;:::-;;:::i;:::-;;4317:293;;;;;;:::i;:::-;;:::i;4009:300::-;;;;;;:::i;:::-;;:::i;2444:103::-;;;:::i;2211:87::-;2257:7;2284:6;-1:-1:-1;;;;;2284:6:0;2211:87;;3226:25;;;;;-1:-1:-1;;;;;3226:25:0;;;3290:26;;;;;-1:-1:-1;;;;;3290:26:0;;;2555:201;;;;;;:::i;:::-;;:::i;4618:499::-;4788:10;;:29;;-1:-1:-1;;;4788:29:0;;-1:-1:-1;;;;;193:32:1;;;4788:29:0;;;175:51:1;4744:1:0;;;;4681:17;;4788:10;;;;:20;;148:18:1;;4788:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:33;:71;;;-1:-1:-1;4825:11:0;;:30;;-1:-1:-1;;;4825:30:0;;-1:-1:-1;;;;;193:32:1;;;4825:30:0;;;175:51:1;4858:1:0;;4825:11;;:21;;148:18:1;;4825:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:34;4788:71;4784:326;;;-1:-1:-1;4917:2:0;;-1:-1:-1;4948:3:0;4618:499;;;:::o;4784:326::-;4973:10;;:29;;-1:-1:-1;;;4973:29:0;;-1:-1:-1;;;;;193:32:1;;;4973:29:0;;;175:51:1;5005:1:0;;4973:10;;:20;;148:18:1;;4973:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:33;4969:141;;;-1:-1:-1;5064:2:0;;-1:-1:-1;5095:3:0;4969:141;4618:499;;;:::o;3701:300::-;2170:13;:11;:13::i;:::-;3798:10:::1;::::0;-1:-1:-1;;;;;3790:35:0;;::::1;3798:10:::0;::::1;3790:35:::0;3782:44:::1;;;::::0;::::1;;3871:10;::::0;;-1:-1:-1;;;;;3893:34:0;;::::1;-1:-1:-1::0;;;;;;3893:34:0;::::1;::::0;::::1;::::0;;;3943:50:::1;::::0;3871:10;::::1;::::0;3893:34;3871:10;;3943:50:::1;::::0;3837:23:::1;::::0;3943:50:::1;3771:230;3701:300:::0;:::o;4317:293::-;2170:13;:11;:13::i;:::-;4409:11:::1;::::0;-1:-1:-1;;;;;4401:36:0;;::::1;4409:11:::0;::::1;4401:36:::0;4393:45:::1;;;::::0;::::1;;4483:11;::::0;;-1:-1:-1;;;;;4506:35:0;;::::1;-1:-1:-1::0;;;;;;4506:35:0;::::1;::::0;::::1;::::0;;;4557:45:::1;::::0;4483:11;::::1;::::0;4506:35;4483:11;;4557:45:::1;::::0;4449:23:::1;::::0;4557:45:::1;4382:228;4317:293:::0;:::o;4009:300::-;2170:13;:11;:13::i;:::-;4106:10:::1;::::0;-1:-1:-1;;;;;4098:35:0;;::::1;4106:10:::0;::::1;4098:35:::0;4090:44:::1;;;::::0;::::1;;4179:10;::::0;;-1:-1:-1;;;;;4201:34:0;;::::1;-1:-1:-1::0;;;;;;4201:34:0;::::1;::::0;::::1;::::0;;;4251:50:::1;::::0;4179:10;::::1;::::0;4201:34;4179:10;;4251:50:::1;::::0;4145:23:::1;::::0;4251:50:::1;4079:230;4009:300:::0;:::o;2444:103::-;2170:13;:11;:13::i;:::-;2509:30:::1;2536:1;2509:18;:30::i;:::-;2444:103::o:0;2555:201::-;2170:13;:11;:13::i;:::-;-1:-1:-1;;;;;2644:22:0;::::1;2636:73;;;::::0;-1:-1:-1;;;2636:73:0;;1380:2:1;2636:73:0::1;::::0;::::1;1362:21:1::0;1419:2;1399:18;;;1392:30;1458:34;1438:18;;;1431:62;-1:-1:-1;;;1509:18:1;;;1502:36;1555:19;;2636:73:0::1;;;;;;;;;2720:28;2739:8;2720:18;:28::i;:::-;2555:201:::0;:::o;2306:130::-;2381:10;2370:7;2257;2284:6;-1:-1:-1;;;;;2284:6:0;;2211:87;2370:7;-1:-1:-1;;;;;2370:21:0;;2362:66;;;;-1:-1:-1;;;2362:66:0;;1787:2:1;2362:66:0;;;1769:21:1;;;1806:18;;;1799:30;1865:34;1845:18;;;1838:62;1917:18;;2362:66:0;1585:356:1;2764:191:0;2838:16;2857:6;;-1:-1:-1;;;;;2874:17:0;;;-1:-1:-1;;;;;;2874:17:0;;;;;;2907:40;;2857:6;;;;;;;2907:40;;2838:16;2907:40;2827:128;2764:191;:::o;237:286:1:-;296:6;349:2;337:9;328:7;324:23;320:32;317:52;;;365:1;362;355:12;317:52;391:23;;-1:-1:-1;;;;;443:31:1;;433:42;;423:70;;489:1;486;479:12;423:70;512:5;237:286;-1:-1:-1;;;237:286:1:o;989:184::-;1059:6;1112:2;1100:9;1091:7;1087:23;1083:32;1080:52;;;1128:1;1125;1118:12;1080:52;-1:-1:-1;1151:16:1;;989:184;-1:-1:-1;989:184:1:o
Swarm Source
ipfs://d08bdce7b10baea1ab1bacd2765bf084c387f6bb0ce693729d2efef0c098db34
Loading...
Loading
Loading...
Loading
OVERVIEW
The X7R Discount Authority determines if any discount applies to the X7DAO token fee collection.Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.