Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multichain Info
N/A
Latest 7 from a total of 7 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer Ownersh... | 6010134 | 258 days ago | IN | 0 ETH | 0.0001359 | ||||
Update Protocol ... | 6010132 | 258 days ago | IN | 0 ETH | 0.00014196 | ||||
Update Glue Fee | 6010131 | 258 days ago | IN | 0 ETH | 0.00012506 | ||||
Set Glue Fee Add... | 6010130 | 258 days ago | IN | 0 ETH | 0.00012829 | ||||
Set Team Address | 6010128 | 258 days ago | IN | 0 ETH | 0.00012667 | ||||
Set Team Address | 6010128 | 258 days ago | IN | 0 ETH | 0.00010032 | ||||
Transfer Ownersh... | 6010128 | 258 days ago | IN | 0 ETH | 0.00010032 |
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x4d45ef4d...04D9421c9 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
GluedSettings
Compiler Version
v0.8.25+commit.b61c2a91
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: BUSL-1.1 /** ██████ ▓█████▄▄▄█████▓▄▄▄█████▓ ██▓ ███▄ █ ▄████ ██████ ▒██ ▒ ▓█ ▀▓ ██▒ ▓▒▓ ██▒ ▓▒▓██▒ ██ ▀█ █ ██▒ ▀█▒▒██ ▒ ░ ▓██▄ ▒███ ▒ ▓██░ ▒░▒ ▓██░ ▒░▒██▒▓██ ▀█ ██▒▒██░▄▄▄░░ ▓██▄ ▒ ██▒▒▓█ ▄░ ▓██▓ ░ ░ ▓██▓ ░ ░██░▓██▒ ▐▌██▒░▓█ ██▓ ▒ ██▒ ▒██████▒▒░▒████▒ ▒██▒ ░ ▒██▒ ░ ░██░▒██░ ▓██░░▒▓███▀▒▒██████▒▒ ▒ ▒▓▒ ▒ ░░░ ▒░ ░ ▒ ░░ ▒ ░░ ░▓ ░ ▒░ ▒ ▒ ░▒ ▒ ▒ ▒▓▒ ▒ ░ ░ ░▒ ░ ░ ░ ░ ░ ░ ░ ▒ ░░ ░░ ░ ▒░ ░ ░ ░ ░▒ ░ ░ ░ ░ ░ ░ ░ ░ ▒ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ @title GluedSettings @author BasedToschi.eth @notice A contract for managing the ownership settings and fees in the glue ecosystem. */ pragma solidity ^0.8.25; import {IGluedSettings} from './interfaces/IGluedSettings.sol'; /** * @title GluedSettings * @notice A contract for managing the ownership settings of the glue ecosystem. */ contract GluedSettings is IGluedSettings { address public owner; uint256 public protocolFee; uint256 public glueFee; address public glueFeeAddress; address public teamAddress; uint256 constant MaxProtocolFee = 2e16; // 2% (2 * 1e16) uint256 constant MinProtocolFee = 5e14; // 0.05% (5 * 1e14) uint256 constant MinGlueFee = 5e17; // 50% (5 * 1e17) /** * @notice Constructor function to initialize the contract settings. */ constructor() { owner = msg.sender; protocolFee = 1e16; // 1% Initialization (1 * 1e16) glueFee = 5e17; // 50% Initialization (5 * 1e17) glueFeeAddress = msg.sender; teamAddress = msg.sender; } /** * @notice Modifier to restrict access to the contract owner only. */ modifier onlyOwner() { require(msg.sender == owner, "Ownable: caller is not the owner"); _; } /** * @notice Transfers ownership of the contract to a new owner. * @param newOwner The address of the new contract owner. */ function transferOwnership(address newOwner) external onlyOwner { require(newOwner != address(0), "Zero address not allowed"); address previousOwner = owner; owner = newOwner; emit OwnershipTransferred(previousOwner, newOwner); } /** * @notice Updates the protocol fee percentage. * @param newProtocolFee The new protocol fee percentage. */ function updateProtocolFee(uint256 newProtocolFee) external onlyOwner { require(newProtocolFee <= MaxProtocolFee, "Fee exceeds maximum limit"); require(newProtocolFee >= MinProtocolFee, "Fee is less than minimum fee"); protocolFee = newProtocolFee; emit ProtocolFeeUpdated(newProtocolFee); } /** * @notice Updates the main glue fee percentage. * @param newGlueFee The new main glue fee percentage. */ function updateGlueFee(uint256 newGlueFee) external onlyOwner { require(newGlueFee <= 1e18, "Fee exceeds maximum limit"); require(newGlueFee >= MinGlueFee, "Fee exceeds minimum limit"); glueFee = newGlueFee; emit GlueFeeUpdated(newGlueFee); } /** * @notice Sets the main glue fee address (only callable by the current main glue fee address). * @param newGlueFeeAddress The new main glue fee address. */ function setGlueFeeAddress(address newGlueFeeAddress) external { if (msg.sender != glueFeeAddress) revert("Only the glue fee address can set a new glue fee address"); if (newGlueFeeAddress == address(0)) revert("Invalid glue fee address"); address previousGlueFeeAddress = glueFeeAddress; glueFeeAddress = newGlueFeeAddress; emit GlueFeeAddressUpdated(previousGlueFeeAddress, newGlueFeeAddress); } /** * @notice Sets the team address (only callable by the current team address). * @param newTeamAddress The new team address. */ function setTeamAddress(address newTeamAddress) external { if (msg.sender != teamAddress) revert("Only the team address can set a new team address"); if (newTeamAddress == address(0)) revert("Invalid team address"); address previousTeamAddress = teamAddress; teamAddress = newTeamAddress; emit TeamAddressUpdated(previousTeamAddress, newTeamAddress); } /** * @notice Gets the current team address. * @return The current team address. */ function getTeamAddress() public view returns (address) { return teamAddress; } /** * @notice Gets the current glue fee address. * @return The current glue fee address. */ function getGlueFeeAddress() public view returns (address) { return glueFeeAddress; } /** * @notice Gets the current protocol fee percentage. * @return The current protocol fee percentage. */ function getProtocolFee() public view returns (uint256) { return protocolFee; } /** * @notice Gets the current glue fee percentage. * @return The current glue fee percentage. */ function getGlueFee() public view returns (uint256) { return glueFee; } /** * @notice Gets the protocol fee information. * @return The protocol fee, glue fee, glue fee address, and team address. */ function getProtocolFeeInfo() external view returns (uint256, uint256, address, address) { return (protocolFee, glueFee, glueFeeAddress, teamAddress); } /** * @notice Renounces ownership of the contract, setting the owner to the zero address. * @dev Once ownership is renounced, it cannot be transferred again. */ function renounceOwnership() external onlyOwner { address previousOwner = owner; owner = address(0); emit OwnershipTransferred(previousOwner, address(0)); } }
// SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.25; interface IGluedSettings { function updateProtocolFee(uint256 newProtocolFee) external; function getProtocolFee() external view returns (uint256); function updateGlueFee(uint256 newGlueFee) external; function getGlueFee() external view returns (uint256); function setGlueFeeAddress(address newGlueFeeAddress) external; function setTeamAddress(address newTeamAddress) external; function getGlueFeeAddress() external view returns (address); function getTeamAddress() external view returns (address); function owner() external view returns (address); function transferOwnership(address newOwner) external; function renounceOwnership() external; function getProtocolFeeInfo() external view returns (uint256, uint256, address, address); event ProtocolFeeUpdated(uint256 newProtocolFee); event GlueFeeUpdated(uint256 newGlueFee); event GlueFeeAddressUpdated(address previousGlueFeeAddress, address newGlueFeeAddress); event TeamAddressUpdated(address previousTeamAddress, address newTeamAddress); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); }
{ "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "paris", "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousGlueFeeAddress","type":"address"},{"indexed":false,"internalType":"address","name":"newGlueFeeAddress","type":"address"}],"name":"GlueFeeAddressUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newGlueFee","type":"uint256"}],"name":"GlueFeeUpdated","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newProtocolFee","type":"uint256"}],"name":"ProtocolFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousTeamAddress","type":"address"},{"indexed":false,"internalType":"address","name":"newTeamAddress","type":"address"}],"name":"TeamAddressUpdated","type":"event"},{"inputs":[],"name":"getGlueFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGlueFeeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProtocolFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProtocolFeeInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTeamAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"glueFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"glueFeeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newGlueFeeAddress","type":"address"}],"name":"setGlueFeeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTeamAddress","type":"address"}],"name":"setTeamAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"teamAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newGlueFee","type":"uint256"}],"name":"updateGlueFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newProtocolFee","type":"uint256"}],"name":"updateProtocolFee","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101005760003560e01c80638da5cb5b11610097578063c90b509911610066578063c90b50991461020e578063e495932c1461021f578063f2fde38b14610232578063fce1fe771461024557600080fd5b80638da5cb5b146101d7578063a5a41031146101ea578063afc3461c146101f2578063b0e21e8a1461020557600080fd5b80635e3b24c0116100d35780635e3b24c01461016a5780636690864e14610181578063695639b714610194578063715018a6146101cf57600080fd5b8063182d326e146101055780631c75f0851461012f5780634256dd78146101425780634a0df6a114610157575b600080fd5b6004546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b600454610112906001600160a01b031681565b610155610150366004610808565b61024d565b005b600354610112906001600160a01b031681565b61017360025481565b604051908152602001610126565b61015561018f366004610821565b610366565b6001546002546003546004546040805194855260208501939093526001600160a01b0391821692840192909252166060820152608001610126565b610155610488565b600054610112906001600160a01b031681565b600154610173565b610155610200366004610808565b6104fd565b61017360015481565b6003546001600160a01b0316610112565b61015561022d366004610821565b610608565b610155610240366004610821565b610738565b600254610173565b6000546001600160a01b031633146102805760405162461bcd60e51b815260040161027790610851565b60405180910390fd5b66470de4df8200008111156102d35760405162461bcd60e51b815260206004820152601960248201527811995948195e18d959591cc81b585e1a5b5d5b481b1a5b5a5d603a1b6044820152606401610277565b6601c6bf5263400081101561032a5760405162461bcd60e51b815260206004820152601c60248201527f466565206973206c657373207468616e206d696e696d756d20666565000000006044820152606401610277565b60018190556040518181527fd10d75876659a287a59a6ccfa2e3fff42f84d94b542837acd30bc184d562de40906020015b60405180910390a150565b6004546001600160a01b031633146103d95760405162461bcd60e51b815260206004820152603060248201527f4f6e6c7920746865207465616d20616464726573732063616e2073657420612060448201526f6e6577207465616d206164647265737360801b6064820152608401610277565b6001600160a01b0381166104265760405162461bcd60e51b8152602060048201526014602482015273496e76616c6964207465616d206164647265737360601b6044820152606401610277565b600480546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f1080123bfca356f02c07c7c4a86bbf7fec3ad4f8aa2698a4ca62c88ed6a4f6ac91015b60405180910390a15050565b6000546001600160a01b031633146104b25760405162461bcd60e51b815260040161027790610851565b600080546001600160a01b0319811682556040516001600160a01b03909116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6000546001600160a01b031633146105275760405162461bcd60e51b815260040161027790610851565b670de0b6b3a764000081111561057b5760405162461bcd60e51b815260206004820152601960248201527811995948195e18d959591cc81b585e1a5b5d5b481b1a5b5a5d603a1b6044820152606401610277565b6706f05b59d3b200008110156105d35760405162461bcd60e51b815260206004820152601960248201527f4665652065786365656473206d696e696d756d206c696d6974000000000000006044820152606401610277565b60028190556040518181527f88b2e50ffb1bef92e532b88dd7c3e7f84fc25bb9a1c2a6ba982b2ed4233a6d979060200161035b565b6003546001600160a01b031633146106885760405162461bcd60e51b815260206004820152603860248201527f4f6e6c792074686520676c75652066656520616464726573732063616e20736560448201527f742061206e657720676c756520666565206164647265737300000000000000006064820152608401610277565b6001600160a01b0381166106de5760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420676c756520666565206164647265737300000000000000006044820152606401610277565b600380546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f654968337a58d8b2f66d341d19303fafcecde240617e50af5f4f9a5bebbb1085910161047c565b6000546001600160a01b031633146107625760405162461bcd60e51b815260040161027790610851565b6001600160a01b0381166107b85760405162461bcd60e51b815260206004820152601860248201527f5a65726f2061646472657373206e6f7420616c6c6f77656400000000000000006044820152606401610277565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561081a57600080fd5b5035919050565b60006020828403121561083357600080fd5b81356001600160a01b038116811461084a57600080fd5b9392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260408201526060019056fea2646970667358221220a3da1c41a8987b78a456024e5438ac623d1015f16020bbae9815062dcbd3c5e364736f6c63430008190033
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.