Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 14 from a total of 14 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Set Network Fee ... | 20948293 | 510 days ago | IN | 0 ETH | 0.00029109 | ||||
| Set Network Fee ... | 20469473 | 577 days ago | IN | 0 ETH | 0.00010773 | ||||
| Set Network Fee ... | 18419739 | 864 days ago | IN | 0 ETH | 0.00074467 | ||||
| Set Network Fee | 15136079 | 1332 days ago | IN | 0 ETH | 0.00134474 | ||||
| Set Network Fee | 15094920 | 1338 days ago | IN | 0 ETH | 0.00046023 | ||||
| Set Network Fee | 15051998 | 1345 days ago | IN | 0 ETH | 0.00133205 | ||||
| Set Network Fee | 15051614 | 1345 days ago | IN | 0 ETH | 0.00200205 | ||||
| Accept Ownership | 14687921 | 1406 days ago | IN | 0 ETH | 0.00106236 | ||||
| Transfer Ownersh... | 14687844 | 1406 days ago | IN | 0 ETH | 0.00158972 | ||||
| Set Network Fee | 13459971 | 1597 days ago | IN | 0 ETH | 0.00205298 | ||||
| Set Network Fee | 12563202 | 1737 days ago | IN | 0 ETH | 0.00144916 | ||||
| Set Network Fee | 12174531 | 1797 days ago | IN | 0 ETH | 0.00349358 | ||||
| Accept Ownership | 12174520 | 1797 days ago | IN | 0 ETH | 0.00234865 | ||||
| Transfer Ownersh... | 12174510 | 1797 days ago | IN | 0 ETH | 0.00474117 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
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
Contract ABI
API[{"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
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.