S Price: $0.478567 (+6.10%)

Contract

0xAA00cB17fB89F38b79ee1B8EC3F04913B0921a04

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Update Trader Re...134084102025-03-13 8:00:093 hrs ago1741852809IN
0xAA00cB17...3B0921a04
0 S0.0034556555
Set Admin131949962025-03-12 6:35:4628 hrs ago1741761346IN
0xAA00cB17...3B0921a04
0 S0.0015379155
Set Operator131947072025-03-12 6:33:0228 hrs ago1741761182IN
0xAA00cB17...3B0921a04
0 S0.0028074255
Set Implementati...131947022025-03-12 6:33:0028 hrs ago1741761180IN
0xAA00cB17...3B0921a04
0 S0.0025902255

Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TradeReward

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion
File 1 of 4 : TradeReward.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.8.0 <0.9.0;

import './TradeRewardStorage.sol';

contract TradeReward is TradeRewardStorage {

    fallback() external payable {
        address imp = implementation;
        assembly {
            calldatacopy(0, 0, calldatasize())
            let result := delegatecall(gas(), imp, 0, calldatasize(), 0, 0)
            returndatacopy(0, 0, returndatasize())
            switch result
            case 0 { revert(0, returndatasize()) }
            default { return(0, returndatasize()) }
        }
    }

    receive() external payable {}

}

File 2 of 4 : TradeRewardStorage.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.8.0 <0.9.0;

import '../utils/Admin.sol';
import '../utils/Implementation.sol';

abstract contract TradeRewardStorage is Admin, Implementation {

    address internal operator;

    struct RewardInfo {
        uint256 cumulativeReward;
        uint256 cumulativeClaimed;
    }

    // smart account => reward info
    mapping (address => RewardInfo) internal _traderRewards;

    // smart account => reward info
    mapping (address => RewardInfo) internal _refererRewards;

}

File 3 of 4 : Admin.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.8.0 <0.9.0;

abstract contract Admin {

    error OnlyAdmin();

    event NewAdmin(address newAdmin);

    address public admin;

    modifier _onlyAdmin_() {
        if (msg.sender != admin) {
            revert OnlyAdmin();
        }
        _;
    }

    constructor () {
        admin = msg.sender;
        emit NewAdmin(admin);
    }

    /**
     * @notice Set a new admin for the contract.
     * @dev This function allows the current admin to assign a new admin address without performing any explicit verification.
     *      It's the current admin's responsibility to ensure that the 'newAdmin' address is correct and secure.
     * @param newAdmin The address of the new admin.
     */
    function setAdmin(address newAdmin) external _onlyAdmin_ {
        admin = newAdmin;
        emit NewAdmin(newAdmin);
    }

}

File 4 of 4 : Implementation.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.8.0 <0.9.0;

import './Admin.sol';

abstract contract Implementation is Admin {

    event NewImplementation(address newImplementation);

    address public implementation;

    // @notice Set a new implementation address for the contract
    function setImplementation(address newImplementation) external _onlyAdmin_ {
        implementation = newImplementation;
        emit NewImplementation(newImplementation);
    }

}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "evmVersion": "paris",
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"name":"OnlyAdmin","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"NewAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newImplementation","type":"address"}],"name":"NewImplementation","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"setImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b50600080546001600160a01b031916339081179091556040519081527f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c9060200160405180910390a1610277806100686000396000f3fe6080604052600436106100435760003560e01c80635c60da1b1461007c578063704b6c02146100b8578063d784d426146100d8578063f851a440146100f85761004a565b3661004a57005b6001546001600160a01b03163660008037600080366000845af43d6000803e808015610075573d6000f35b3d6000fd5b005b34801561008857600080fd5b5060015461009c906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c457600080fd5b5061007a6100d3366004610211565b610118565b3480156100e457600080fd5b5061007a6100f3366004610211565b610198565b34801561010457600080fd5b5060005461009c906001600160a01b031681565b6000546001600160a01b0316331461014357604051634755657960e01b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c906020015b60405180910390a150565b6000546001600160a01b031633146101c357604051634755657960e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f6b70829fcbe4891157f7a7496f9870927de3c8237adbe9cd39bae09b7382c4099060200161018d565b60006020828403121561022357600080fd5b81356001600160a01b038116811461023a57600080fd5b939250505056fea2646970667358221220abf9fef10853d86489265e37b40a674645ad2eb9696ee061dd426907ebffb01f64736f6c63430008140033

Deployed Bytecode

0x6080604052600436106100435760003560e01c80635c60da1b1461007c578063704b6c02146100b8578063d784d426146100d8578063f851a440146100f85761004a565b3661004a57005b6001546001600160a01b03163660008037600080366000845af43d6000803e808015610075573d6000f35b3d6000fd5b005b34801561008857600080fd5b5060015461009c906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c457600080fd5b5061007a6100d3366004610211565b610118565b3480156100e457600080fd5b5061007a6100f3366004610211565b610198565b34801561010457600080fd5b5060005461009c906001600160a01b031681565b6000546001600160a01b0316331461014357604051634755657960e01b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c906020015b60405180910390a150565b6000546001600160a01b031633146101c357604051634755657960e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f6b70829fcbe4891157f7a7496f9870927de3c8237adbe9cd39bae09b7382c4099060200161018d565b60006020828403121561022357600080fd5b81356001600160a01b038116811461023a57600080fd5b939250505056fea2646970667358221220abf9fef10853d86489265e37b40a674645ad2eb9696ee061dd426907ebffb01f64736f6c63430008140033

Block Transaction Gas Used Reward
view all blocks ##produced##

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

Validator Index Block Amount
View All Withdrawals

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