Contract
0x4aC58C108f5d932455bE6C4C35a9b8eEd4572F2a
2
Contract Overview
Balance:
0 FTM
FTM Value:
$0.00
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Latest 1 internal transaction
Parent Txn Hash | Block | From | To | Value | |||
---|---|---|---|---|---|---|---|
0x59345ecf39f658ce5913a192b9b2adc5ef19287f9a48207c102e10e35a751a7d | 56852984 | 24 days 15 hrs ago | 0xbcb909975715dc8fde643ee44b89e3fd6a35a259 | Contract Creation | 0 FTM |
[ Download CSV Export ]
Contract Name:
Registry
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.10; import "@openzeppelin/contracts/access/Ownable.sol"; import "./interface/IRegistry.sol"; /// @notice The registry database for Furucombo contract Registry is IRegistry, Ownable { mapping(address => bytes32) public override handlers; mapping(address => bytes32) public override callers; mapping(address => uint256) public override bannedAgents; bool public override fHalt; bytes32 public constant DEPRECATED = bytes10(0x64657072656361746564); event Registered(address indexed registration, bytes32 info); event Unregistered(address indexed registration); event CallerRegistered(address indexed registration, bytes32 info); event CallerUnregistered(address indexed registration); event Banned(address indexed agent); event Unbanned(address indexed agent); event Halted(); event Unhalted(); modifier isNotHalted() { require(fHalt == false, "Halted"); _; } modifier isHalted() { require(fHalt, "Not halted"); _; } modifier isNotBanned(address agent) { require(bannedAgents[agent] == 0, "Banned"); _; } modifier isBanned(address agent) { require(bannedAgents[agent] != 0, "Not banned"); _; } /** * @notice Register a handler with a bytes32 information. * @param registration Handler address. * @param info Info string. */ function register(address registration, bytes32 info) external onlyOwner { require(registration != address(0), "zero address"); require(info != DEPRECATED, "unregistered info"); require(handlers[registration] != DEPRECATED, "unregistered"); handlers[registration] = info; emit Registered(registration, info); } /** * @notice Unregister a handler. The handler will be deprecated. * @param registration The handler to be unregistered. */ function unregister(address registration) external onlyOwner { require(registration != address(0), "zero address"); require(handlers[registration] != bytes32(0), "no registration"); require(handlers[registration] != DEPRECATED, "unregistered"); handlers[registration] = DEPRECATED; emit Unregistered(registration); } /** * @notice Register a caller with a bytes32 information. * @param registration Caller address. * @param info Info string. * @dev Dapps that triggers callback function should be registered. * In this case, registration is the Dapp address and the leading 20 bytes * of info is the handler address. */ function registerCaller( address registration, bytes32 info ) external onlyOwner { require(registration != address(0), "zero address"); require(info != DEPRECATED, "unregistered info"); require(callers[registration] != DEPRECATED, "unregistered"); callers[registration] = info; emit CallerRegistered(registration, info); } /** * @notice Unregister a caller. The caller will be deprecated. * @param registration The caller to be unregistered. */ function unregisterCaller(address registration) external onlyOwner { require(registration != address(0), "zero address"); require(callers[registration] != bytes32(0), "no registration"); require(callers[registration] != DEPRECATED, "unregistered"); callers[registration] = DEPRECATED; emit CallerUnregistered(registration); } /** * @notice Ban agent from query * */ function ban(address agent) external isNotBanned(agent) onlyOwner { bannedAgents[agent] = 1; emit Banned(agent); } /** * @notice Unban agent from query */ function unban(address agent) external isBanned(agent) onlyOwner { bannedAgents[agent] = 0; emit Unbanned(agent); } /** * @notice Check if the handler is valid. * @param handler The handler to be verified. */ function isValidHandler( address handler ) external view override returns (bool) { return handlers[handler] != 0 && handlers[handler] != DEPRECATED; } /** * @notice Check if the caller is valid. * @param caller The caller to be verified. */ function isValidCaller( address caller ) external view override returns (bool) { return callers[caller] != 0 && callers[caller] != DEPRECATED; } function halt() external isNotHalted onlyOwner { fHalt = true; emit Halted(); } function unhalt() external isHalted onlyOwner { fHalt = false; emit Unhalted(); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IRegistry { function handlers(address) external view returns (bytes32); function callers(address) external view returns (bytes32); function bannedAgents(address) external view returns (uint256); function fHalt() external view returns (bool); function isValidHandler(address handler) external view returns (bool); function isValidCaller(address handler) external view returns (bool); }
{ "evmVersion": "london", "libraries": {}, "metadata": { "bytecodeHash": "ipfs", "useLiteralContent": true }, "optimizer": { "enabled": true, "runs": 200 }, "remappings": [], "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"agent","type":"address"}],"name":"Banned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"registration","type":"address"},{"indexed":false,"internalType":"bytes32","name":"info","type":"bytes32"}],"name":"CallerRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"registration","type":"address"}],"name":"CallerUnregistered","type":"event"},{"anonymous":false,"inputs":[],"name":"Halted","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":true,"internalType":"address","name":"registration","type":"address"},{"indexed":false,"internalType":"bytes32","name":"info","type":"bytes32"}],"name":"Registered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"agent","type":"address"}],"name":"Unbanned","type":"event"},{"anonymous":false,"inputs":[],"name":"Unhalted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"registration","type":"address"}],"name":"Unregistered","type":"event"},{"inputs":[],"name":"DEPRECATED","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"agent","type":"address"}],"name":"ban","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bannedAgents","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"callers","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fHalt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"halt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"handlers","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"isValidCaller","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"handler","type":"address"}],"name":"isValidHandler","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"registration","type":"address"},{"internalType":"bytes32","name":"info","type":"bytes32"}],"name":"register","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registration","type":"address"},{"internalType":"bytes32","name":"info","type":"bytes32"}],"name":"registerCaller","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"agent","type":"address"}],"name":"unban","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unhalt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registration","type":"address"}],"name":"unregister","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registration","type":"address"}],"name":"unregisterCaller","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610d348061007e6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80638da5cb5b116100a2578063bb1010e911610071578063bb1010e914610241578063cb3e64fd14610264578063d4c683481461026c578063ea750af61461027f578063f2fde38b1461028c57600080fd5b80638da5cb5b146101ed57806397c3ccd814610208578063afb4bfbd1461021b578063b9f145571461022e57600080fd5b806356ea919f116100e957806356ea919f146101965780635ed7ca5b146101a9578063715018a6146101b15780637bbf4a3f146101b9578063818b47a7146101d957600080fd5b80631903dcaa1461011b5780631a21c0bc1461014e5780631e7a505f1461016e5780632ec2c24614610183575b600080fd5b61013b610129366004610c31565b60036020526000908152604090205481565b6040519081526020015b60405180910390f35b61013b61015c366004610c31565b60016020526000908152604090205481565b61018161017c366004610c53565b61029f565b005b610181610191366004610c31565b6103e7565b6101816101a4366004610c53565b610524565b610181610657565b6101816106f5565b61013b6101c7366004610c31565b60026020526000908152604090205481565b61013b6919195c1c9958d85d195960b21b81565b6000546040516001600160a01b039091168152602001610145565b610181610216366004610c31565b61072b565b610181610229366004610c31565b6107ec565b61018161023c366004610c31565b610929565b61025461024f366004610c31565b6109ec565b6040519015158152602001610145565b610181610a3e565b61025461027a366004610c31565b610adc565b6004546102549060ff1681565b61018161029a366004610c31565b610b2a565b6000546001600160a01b031633146102d25760405162461bcd60e51b81526004016102c990610c7d565b60405180910390fd5b6001600160a01b0382166102f85760405162461bcd60e51b81526004016102c990610cb2565b6919195c1c9958d85d195960b21b8114156103495760405162461bcd60e51b8152602060048201526011602482015270756e7265676973746572656420696e666f60781b60448201526064016102c9565b6001600160a01b0382166000908152600160205260409020546919195c1c9958d85d195960b21b141561038e5760405162461bcd60e51b81526004016102c990610cd8565b6001600160a01b03821660008181526001602052604090819020839055517fb8142d42f05d95abf0a6570799774d59276e49ea32a04d9a4ec316ea4a6886bc906103db9084815260200190565b60405180910390a25050565b6000546001600160a01b031633146104115760405162461bcd60e51b81526004016102c990610c7d565b6001600160a01b0381166104375760405162461bcd60e51b81526004016102c990610cb2565b6001600160a01b03811660009081526001602052604090205461048e5760405162461bcd60e51b815260206004820152600f60248201526e3737903932b3b4b9ba3930ba34b7b760891b60448201526064016102c9565b6001600160a01b0381166000908152600160205260409020546919195c1c9958d85d195960b21b14156104d35760405162461bcd60e51b81526004016102c990610cd8565b6001600160a01b0381166000818152600160205260408082206919195c1c9958d85d195960b21b9055517f75cd6de711483e11488a1cd9b66172abccb9e5c19572f92015a7880f0c8c0edc9190a250565b6000546001600160a01b0316331461054e5760405162461bcd60e51b81526004016102c990610c7d565b6001600160a01b0382166105745760405162461bcd60e51b81526004016102c990610cb2565b6919195c1c9958d85d195960b21b8114156105c55760405162461bcd60e51b8152602060048201526011602482015270756e7265676973746572656420696e666f60781b60448201526064016102c9565b6001600160a01b0382166000908152600260205260409020546919195c1c9958d85d195960b21b141561060a5760405162461bcd60e51b81526004016102c990610cd8565b6001600160a01b03821660008181526002602052604090819020839055517fbcf9675eb3fde058129f75f75f8b7a48bf7bcc37ec73dfd9b45218d551ce483b906103db9084815260200190565b60045460ff16156106935760405162461bcd60e51b815260206004820152600660248201526512185b1d195960d21b60448201526064016102c9565b6000546001600160a01b031633146106bd5760405162461bcd60e51b81526004016102c990610c7d565b6004805460ff191660011790556040517f1ee9080f6b55ca44ce58681c8162e6c1ac1c47e1da791a4a1c1ec6186d8af1f390600090a1565b6000546001600160a01b0316331461071f5760405162461bcd60e51b81526004016102c990610c7d565b6107296000610bc5565b565b6001600160a01b03811660009081526003602052604090205481901561077c5760405162461bcd60e51b815260206004820152600660248201526510985b9b995960d21b60448201526064016102c9565b6000546001600160a01b031633146107a65760405162461bcd60e51b81526004016102c990610c7d565b6001600160a01b03821660008181526003602052604080822060019055517f30d1df1214d91553408ca5384ce29e10e5866af8423c628be22860e41fb810059190a25050565b6000546001600160a01b031633146108165760405162461bcd60e51b81526004016102c990610c7d565b6001600160a01b03811661083c5760405162461bcd60e51b81526004016102c990610cb2565b6001600160a01b0381166000908152600260205260409020546108935760405162461bcd60e51b815260206004820152600f60248201526e3737903932b3b4b9ba3930ba34b7b760891b60448201526064016102c9565b6001600160a01b0381166000908152600260205260409020546919195c1c9958d85d195960b21b14156108d85760405162461bcd60e51b81526004016102c990610cd8565b6001600160a01b0381166000818152600260205260408082206919195c1c9958d85d195960b21b9055517f5b357470d4ba3884887ef785883313bfabff1620ba84b4a140ddc4536cb2e0b69190a250565b6001600160a01b038116600090815260036020526040902054819061097d5760405162461bcd60e51b815260206004820152600a602482015269139bdd0818985b9b995960b21b60448201526064016102c9565b6000546001600160a01b031633146109a75760405162461bcd60e51b81526004016102c990610c7d565b6001600160a01b038216600081815260036020526040808220829055517f2ab91b53354938415bb6962c4322231cd4cb2c84930f1a4b9abbedc2fe8abe729190a25050565b6001600160a01b03811660009081526002602052604081205415801590610a3857506001600160a01b0382166000908152600260205260409020546919195c1c9958d85d195960b21b14155b92915050565b60045460ff16610a7d5760405162461bcd60e51b815260206004820152600a602482015269139bdd081a185b1d195960b21b60448201526064016102c9565b6000546001600160a01b03163314610aa75760405162461bcd60e51b81526004016102c990610c7d565b6004805460ff191690556040517f7c46a5e7a10434913e987d799d659758880ce8e790692e13e66ddfae4cc9afca90600090a1565b6001600160a01b03811660009081526001602052604081205415801590610a385750506001600160a01b03166000908152600160205260409020546919195c1c9958d85d195960b21b141590565b6000546001600160a01b03163314610b545760405162461bcd60e51b81526004016102c990610c7d565b6001600160a01b038116610bb95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102c9565b610bc281610bc5565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b0381168114610c2c57600080fd5b919050565b600060208284031215610c4357600080fd5b610c4c82610c15565b9392505050565b60008060408385031215610c6657600080fd5b610c6f83610c15565b946020939093013593505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600c908201526b7a65726f206164647265737360a01b604082015260600190565b6020808252600c908201526b1d5b9c9959da5cdd195c995960a21b60408201526060019056fea2646970667358221220f55ba3a92e974a714f05eb0cf37ed140f502da0f61f6f6e5dc6d010a3467ca6764736f6c634300080a0033
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Validator ID :
0 FTM
Amount Staked
0
Amount Delegated
0
Staking Total
0
Staking Start Epoch
0
Staking Start Time
0
Proof of Importance
0
Origination Score
0
Validation Score
0
Active
0
Online
0
Downtime
0 s
Address | Amount | claimed Rewards | Created On Epoch | Created On |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.