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
Latest 13 from a total of 13 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Network Fee ... | 18419739 | 273 days ago | IN | 0 ETH | 0.00074467 | ||||
Set Network Fee | 15136079 | 740 days ago | IN | 0 ETH | 0.00134474 | ||||
Set Network Fee | 15094920 | 747 days ago | IN | 0 ETH | 0.00046023 | ||||
Set Network Fee | 15051998 | 753 days ago | IN | 0 ETH | 0.00133205 | ||||
Set Network Fee | 15051614 | 753 days ago | IN | 0 ETH | 0.00200205 | ||||
Accept Ownership | 14687921 | 814 days ago | IN | 0 ETH | 0.00106236 | ||||
Transfer Ownersh... | 14687844 | 814 days ago | IN | 0 ETH | 0.00158972 | ||||
Set Network Fee | 13459971 | 1006 days ago | IN | 0 ETH | 0.00205298 | ||||
Set Network Fee | 12563202 | 1145 days ago | IN | 0 ETH | 0.00144916 | ||||
Set Network Fee | 12174531 | 1205 days ago | IN | 0 ETH | 0.00349358 | ||||
Accept Ownership | 12174520 | 1205 days ago | IN | 0 ETH | 0.00234865 | ||||
Transfer Ownersh... | 12174510 | 1205 days ago | IN | 0 ETH | 0.00474117 | ||||
0x60806040 | 12174436 | 1205 days ago | IN | Create: NetworkSettings | 0 ETH | 0.04307222 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
NetworkSettings
Compiler Version
v0.6.12+commit.27d51765
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-04-04 */ // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File: solidity/contracts/utility/interfaces/IOwned.sol pragma solidity 0.6.12; /* Owned contract interface */ interface IOwned { // this function isn't since the compiler emits automatically generated getter functions as external function owner() external view returns (address); function transferOwnership(address _newOwner) external; function acceptOwnership() external; } // File: solidity/contracts/utility/interfaces/ITokenHolder.sol pragma solidity 0.6.12; /* Token Holder interface */ interface ITokenHolder is IOwned { receive() external payable; function withdrawTokens( IERC20 token, address payable to, uint256 amount ) external; function withdrawTokensMultiple( IERC20[] calldata tokens, address payable to, uint256[] calldata amounts ) external; } // File: solidity/contracts/INetworkSettings.sol pragma solidity 0.6.12; interface INetworkSettings { function networkFeeParams() external view returns (ITokenHolder, uint32); function networkFeeWallet() external view returns (ITokenHolder); function networkFee() external view returns (uint32); } // File: solidity/contracts/utility/Owned.sol pragma solidity 0.6.12; /** * @dev This contract provides support and utilities for contract ownership. */ contract Owned is IOwned { address public override owner; address public newOwner; /** * @dev triggered when the owner is updated * * @param _prevOwner previous owner * @param _newOwner new owner */ event OwnerUpdate(address indexed _prevOwner, address indexed _newOwner); /** * @dev initializes a new Owned instance */ constructor() public { owner = msg.sender; } // allows execution by the owner only modifier ownerOnly { _ownerOnly(); _; } // error message binary size optimization function _ownerOnly() internal view { require(msg.sender == owner, "ERR_ACCESS_DENIED"); } /** * @dev allows transferring the contract ownership * the new owner still needs to accept the transfer * can only be called by the contract owner * * @param _newOwner new contract owner */ function transferOwnership(address _newOwner) public override ownerOnly { require(_newOwner != owner, "ERR_SAME_OWNER"); newOwner = _newOwner; } /** * @dev used by a new owner to accept an ownership transfer */ function acceptOwnership() public override { require(msg.sender == newOwner, "ERR_ACCESS_DENIED"); emit OwnerUpdate(owner, newOwner); owner = newOwner; newOwner = address(0); } } // File: solidity/contracts/utility/Utils.sol pragma solidity 0.6.12; /** * @dev Utilities & Common Modifiers */ contract Utils { uint32 internal constant PPM_RESOLUTION = 1000000; IERC20 internal constant NATIVE_TOKEN_ADDRESS = IERC20(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE); // verifies that a value is greater than zero modifier greaterThanZero(uint256 _value) { _greaterThanZero(_value); _; } // error message binary size optimization function _greaterThanZero(uint256 _value) internal pure { require(_value > 0, "ERR_ZERO_VALUE"); } // validates an address - currently only checks that it isn't null modifier validAddress(address _address) { _validAddress(_address); _; } // error message binary size optimization function _validAddress(address _address) internal pure { require(_address != address(0), "ERR_INVALID_ADDRESS"); } // ensures that the portion is valid modifier validPortion(uint32 _portion) { _validPortion(_portion); _; } // error message binary size optimization function _validPortion(uint32 _portion) internal pure { require(_portion > 0 && _portion <= PPM_RESOLUTION, "ERR_INVALID_PORTION"); } // validates an external address - currently only checks that it isn't null or this modifier validExternalAddress(address _address) { _validExternalAddress(_address); _; } // error message binary size optimization function _validExternalAddress(address _address) internal view { require(_address != address(0) && _address != address(this), "ERR_INVALID_EXTERNAL_ADDRESS"); } // ensures that the fee is valid modifier validFee(uint32 fee) { _validFee(fee); _; } // error message binary size optimization function _validFee(uint32 fee) internal pure { require(fee <= PPM_RESOLUTION, "ERR_INVALID_FEE"); } } // File: solidity/contracts/NetworkSettings.sol pragma solidity 0.6.12; /** * @dev This contract maintains the network settings. * */ contract NetworkSettings is INetworkSettings, Owned, Utils { ITokenHolder private _networkFeeWallet; uint32 private _networkFee; /** * @dev triggered when the network fee wallet is updated * * @param prevNetworkFeeWallet previous network fee wallet * @param newNetworkFeeWallet new network fee wallet */ event NetworkFeeWalletUpdated(ITokenHolder prevNetworkFeeWallet, ITokenHolder newNetworkFeeWallet); /** * @dev triggered when the network fee is updated * * @param prevNetworkFee previous network fee * @param newNetworkFee new network fee */ event NetworkFeeUpdated(uint32 prevNetworkFee, uint32 newNetworkFee); /** * @dev initializes a new NetworkSettings contract * * @param initialNetworkFeeWallet initial network fee wallet * @param initialNetworkFee initial network fee in ppm units */ constructor(ITokenHolder initialNetworkFeeWallet, uint32 initialNetworkFee) public validAddress(address(initialNetworkFeeWallet)) validFee(initialNetworkFee) { _networkFeeWallet = initialNetworkFeeWallet; _networkFee = initialNetworkFee; } /** * @dev returns the network fee parameters * * @return network fee wallet * @return network fee in ppm units */ function networkFeeParams() external view override returns (ITokenHolder, uint32) { return (_networkFeeWallet, _networkFee); } /** * @dev returns the wallet that receives the global network fees * * @return network fee wallet */ function networkFeeWallet() external view override returns (ITokenHolder) { return _networkFeeWallet; } /** * @dev returns the global network fee * the network fee is a portion of the total fees from each pool * * @return network fee in ppm units */ function networkFee() external view override returns (uint32) { return _networkFee; } /** * @dev sets the network fee wallet * can be executed only by the owner * * @param newNetworkFeeWallet new network fee wallet */ function setNetworkFeeWallet(ITokenHolder newNetworkFeeWallet) external ownerOnly validAddress(address(newNetworkFeeWallet)) { emit NetworkFeeWalletUpdated(_networkFeeWallet, newNetworkFeeWallet); _networkFeeWallet = newNetworkFeeWallet; } /** * @dev sets the network fee * can be executed only by the owner * * @param newNetworkFee new network fee in ppm units */ function setNetworkFee(uint32 newNetworkFee) external ownerOnly validFee(newNetworkFee) { emit NetworkFeeUpdated(_networkFee, newNetworkFee); _networkFee = newNetworkFee; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract ITokenHolder","name":"initialNetworkFeeWallet","type":"address"},{"internalType":"uint32","name":"initialNetworkFee","type":"uint32"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"prevNetworkFee","type":"uint32"},{"indexed":false,"internalType":"uint32","name":"newNetworkFee","type":"uint32"}],"name":"NetworkFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract ITokenHolder","name":"prevNetworkFeeWallet","type":"address"},{"indexed":false,"internalType":"contract ITokenHolder","name":"newNetworkFeeWallet","type":"address"}],"name":"NetworkFeeWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_prevOwner","type":"address"},{"indexed":true,"internalType":"address","name":"_newOwner","type":"address"}],"name":"OwnerUpdate","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"networkFee","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"networkFeeParams","outputs":[{"internalType":"contract ITokenHolder","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"networkFeeWallet","outputs":[{"internalType":"contract ITokenHolder","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"newOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"newNetworkFee","type":"uint32"}],"name":"setNetworkFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ITokenHolder","name":"newNetworkFeeWallet","type":"address"}],"name":"setNetworkFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b506040516106be3803806106be8339818101604052604081101561003357600080fd5b508051602090910151600080546001600160a01b0319163317905581610058816100a6565b8161006281610104565b50506002805463ffffffff909216600160a01b0263ffffffff60a01b196001600160a01b039094166001600160a01b03199093169290921792909216179055610154565b6001600160a01b038116610101576040805162461bcd60e51b815260206004820152601360248201527f4552525f494e56414c49445f4144445245535300000000000000000000000000604482015290519081900360640190fd5b50565b620f424063ffffffff82161115610101576040805162461bcd60e51b815260206004820152600f60248201526e4552525f494e56414c49445f46454560881b604482015290519081900360640190fd5b61055b806101636000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80638da5cb5b116100665780638da5cb5b1461010f5780639db9e18b14610117578063d4ee1d9014610138578063e33b5f5f14610140578063f2fde38b1461017057610093565b8063155bb726146100985780633e456504146100bd578063551e9a6f146100e157806379ba509714610107575b600080fd5b6100bb600480360360208110156100ae57600080fd5b503563ffffffff16610196565b005b6100c561021b565b604080516001600160a01b039092168252519081900360200190f35b6100bb600480360360208110156100f757600080fd5b50356001600160a01b031661022a565b6100bb6102a7565b6100c561035e565b61011f61036d565b6040805163ffffffff9092168252519081900360200190f35b6100c5610380565b61014861038f565b604080516001600160a01b03909316835263ffffffff90911660208301528051918290030190f35b6100bb6004803603602081101561018657600080fd5b50356001600160a01b03166103ae565b61019e61042c565b806101a881610481565b6002546040805163ffffffff600160a01b90930483168152918416602083015280517f3f421a4eb9000b7b5fd6b0947132c94b9d04fa31e65a2f4843261c186bb3bec69281900390910190a1506002805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6002546001600160a01b031690565b61023261042c565b8061023c816104d4565b600254604080516001600160a01b039283168152918416602083015280517f70c95ab75c8116dcc974957f01a8ff5e6c23a3413e7c94c5a31de9779b2cdbb89281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031633146102fa576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000546001600160a01b031681565b600254600160a01b900463ffffffff1690565b6001546001600160a01b031681565b6002546001600160a01b03811691600160a01b90910463ffffffff1690565b6103b661042c565b6000546001600160a01b038281169116141561040a576040805162461bcd60e51b815260206004820152600e60248201526d22a9292fa9a0a6a2afa7aba722a960911b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461047f576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b565b620f424063ffffffff821611156104d1576040805162461bcd60e51b815260206004820152600f60248201526e4552525f494e56414c49445f46454560881b604482015290519081900360640190fd5b50565b6001600160a01b0381166104d1576040805162461bcd60e51b81526020600482015260136024820152724552525f494e56414c49445f4144445245535360681b604482015290519081900360640190fdfea2646970667358221220e2a2ddad0ab648b4bae4c32c37f57d2978fae0fe417a0b4235db606acc598b1664736f6c634300060c0033000000000000000000000000ebcc959479634eec5a4d7162e36f8b8cc763f4910000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100935760003560e01c80638da5cb5b116100665780638da5cb5b1461010f5780639db9e18b14610117578063d4ee1d9014610138578063e33b5f5f14610140578063f2fde38b1461017057610093565b8063155bb726146100985780633e456504146100bd578063551e9a6f146100e157806379ba509714610107575b600080fd5b6100bb600480360360208110156100ae57600080fd5b503563ffffffff16610196565b005b6100c561021b565b604080516001600160a01b039092168252519081900360200190f35b6100bb600480360360208110156100f757600080fd5b50356001600160a01b031661022a565b6100bb6102a7565b6100c561035e565b61011f61036d565b6040805163ffffffff9092168252519081900360200190f35b6100c5610380565b61014861038f565b604080516001600160a01b03909316835263ffffffff90911660208301528051918290030190f35b6100bb6004803603602081101561018657600080fd5b50356001600160a01b03166103ae565b61019e61042c565b806101a881610481565b6002546040805163ffffffff600160a01b90930483168152918416602083015280517f3f421a4eb9000b7b5fd6b0947132c94b9d04fa31e65a2f4843261c186bb3bec69281900390910190a1506002805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6002546001600160a01b031690565b61023261042c565b8061023c816104d4565b600254604080516001600160a01b039283168152918416602083015280517f70c95ab75c8116dcc974957f01a8ff5e6c23a3413e7c94c5a31de9779b2cdbb89281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031633146102fa576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000546001600160a01b031681565b600254600160a01b900463ffffffff1690565b6001546001600160a01b031681565b6002546001600160a01b03811691600160a01b90910463ffffffff1690565b6103b661042c565b6000546001600160a01b038281169116141561040a576040805162461bcd60e51b815260206004820152600e60248201526d22a9292fa9a0a6a2afa7aba722a960911b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461047f576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b565b620f424063ffffffff821611156104d1576040805162461bcd60e51b815260206004820152600f60248201526e4552525f494e56414c49445f46454560881b604482015290519081900360640190fd5b50565b6001600160a01b0381166104d1576040805162461bcd60e51b81526020600482015260136024820152724552525f494e56414c49445f4144445245535360681b604482015290519081900360640190fdfea2646970667358221220e2a2ddad0ab648b4bae4c32c37f57d2978fae0fe417a0b4235db606acc598b1664736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000ebcc959479634eec5a4d7162e36f8b8cc763f4910000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : initialNetworkFeeWallet (address): 0xeBcC959479634EEC5A4d7162e36f8B8cc763f491
Arg [1] : initialNetworkFee (uint32): 0
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000ebcc959479634eec5a4d7162e36f8b8cc763f491
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 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.