ETH Price: $3,392.37 (+5.80%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Magister NFT156252372022-09-27 14:18:11849 days ago1664288291IN
X7 Finance: X7R Discount Authority
0 ETH0.0009069718.96687423
Set Liquidity Ma...156252362022-09-27 14:17:59849 days ago1664288279IN
X7 Finance: X7R Discount Authority
0 ETH0.0008394517.55127112
Set Ecosystem Ma...156252342022-09-27 14:17:35849 days ago1664288255IN
X7 Finance: X7R Discount Authority
0 ETH0.0007910616.55474438

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

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *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

Contract ABI

[{"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"}]

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

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

The X7R Discount Authority determines if any discount applies to the X7DAO token fee collection.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.