Source Code
Overview
ETH Balance
0 ETH
ETH Value
$0.00Multichain Info
N/A
Latest 11 from a total of 11 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Create Blade Per... | 5519743 | 99 days ago | IN | 0 ETH | 0 | ||||
Create Blade Ver... | 5519696 | 99 days ago | IN | 0 ETH | 0.00000002 | ||||
Create Blade Ver... | 5519623 | 99 days ago | IN | 0 ETH | 0.00000002 | ||||
Create Blade Ver... | 4509964 | 111 days ago | IN | 0 ETH | 0 | ||||
Create Blade Per... | 4509827 | 111 days ago | IN | 0 ETH | 0 | ||||
Create Blade Ver... | 4509782 | 111 days ago | IN | 0 ETH | 0 | ||||
Create Blade Per... | 4509719 | 111 days ago | IN | 0 ETH | 0 | ||||
Create Blade Per... | 4509633 | 111 days ago | IN | 0 ETH | 0 | ||||
Create Blade Ver... | 4509596 | 111 days ago | IN | 0 ETH | 0 | ||||
Create Blade Per... | 4473896 | 111 days ago | IN | 0 ETH | 0 | ||||
Create Blade Ver... | 4473858 | 111 days ago | IN | 0 ETH | 0 |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
BladePoolRegister
Compiler Version
v0.8.28+commit.7893614a
Optimization Enabled:
Yes with 800 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.20; import "@openzeppelin/contracts/access/Ownable.sol"; contract BladePoolRegister is Ownable { // placeholder for future factory contract address public bladeVerifiedImplementation; address public permitRouterImplementation; address public lpTransferImplementation; // Mapping to track registered contracts mapping(address => bool) public isRegistered; event BladeVerifiedExchangeCreated( address indexed exchangeAddress, address[] tokens, address[] oracles ); event BladePermitRouterCreated( address indexed permitRouterAddress, address indexed exchangeAddress ); event BladeLPTransferCreated( address indexed oldExchange, address indexed newExchange, address indexed lpTransferAddress ); constructor(address initialOwner) Ownable(initialOwner) {} function setVerifiedImplementation(address newImpl) external onlyOwner { bladeVerifiedImplementation = newImpl; } function setPermitRouterImplementation(address newImpl) external onlyOwner { permitRouterImplementation = newImpl; } function setLPTransferImplementation(address newImpl) external onlyOwner { lpTransferImplementation = newImpl; } // parameters left as placeholder for next factory integration function createBladeVerifiedExchange( address theSigner, address theWrapper, address[] calldata tokens, address[] calldata oracles, uint256[] calldata minTimeTolerances, address initialOwner, address exchangeAddress ) external onlyOwner returns (address) { require(theSigner != address(0), "Signer cannot be zero"); require(theWrapper != address(0), "Wrapper cannot be zero"); require(initialOwner != address(0), "Owner cannot be zero"); require(tokens.length > 0, "Tokens required"); require(!isRegistered[exchangeAddress], "exchangeAddress already registered"); isRegistered[exchangeAddress] = true; emit BladeVerifiedExchangeCreated(exchangeAddress, tokens, oracles); return exchangeAddress; } function createBladePermitRouter( address bladeExchange, address permitRouterAddress ) external onlyOwner returns (address) { require(!isRegistered[permitRouterAddress], "permitRouterAddress already registered"); isRegistered[permitRouterAddress] = true; emit BladePermitRouterCreated(permitRouterAddress, bladeExchange); return permitRouterAddress; } function createLPTransfer( address oldExchange, address newExchange, address lpTransferAddress ) external onlyOwner returns (address) { require(!isRegistered[lpTransferAddress], "lpTransferAddress already registered"); isRegistered[lpTransferAddress] = true; emit BladeLPTransferCreated(oldExchange, newExchange, lpTransferAddress); return lpTransferAddress; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; import {Context} from "../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. * * The initial owner is set to the address provided by the deployer. 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; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(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 { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @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; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } }
{ "evmVersion": "paris", "libraries": {}, "metadata": { "useLiteralContent": true }, "optimizer": { "enabled": true, "runs": 800 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldExchange","type":"address"},{"indexed":true,"internalType":"address","name":"newExchange","type":"address"},{"indexed":true,"internalType":"address","name":"lpTransferAddress","type":"address"}],"name":"BladeLPTransferCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"permitRouterAddress","type":"address"},{"indexed":true,"internalType":"address","name":"exchangeAddress","type":"address"}],"name":"BladePermitRouterCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"exchangeAddress","type":"address"},{"indexed":false,"internalType":"address[]","name":"tokens","type":"address[]"},{"indexed":false,"internalType":"address[]","name":"oracles","type":"address[]"}],"name":"BladeVerifiedExchangeCreated","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"},{"inputs":[],"name":"bladeVerifiedImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"bladeExchange","type":"address"},{"internalType":"address","name":"permitRouterAddress","type":"address"}],"name":"createBladePermitRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"theSigner","type":"address"},{"internalType":"address","name":"theWrapper","type":"address"},{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"address[]","name":"oracles","type":"address[]"},{"internalType":"uint256[]","name":"minTimeTolerances","type":"uint256[]"},{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"address","name":"exchangeAddress","type":"address"}],"name":"createBladeVerifiedExchange","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"oldExchange","type":"address"},{"internalType":"address","name":"newExchange","type":"address"},{"internalType":"address","name":"lpTransferAddress","type":"address"}],"name":"createLPTransfer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpTransferImplementation","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":"permitRouterImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImpl","type":"address"}],"name":"setLPTransferImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImpl","type":"address"}],"name":"setPermitRouterImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImpl","type":"address"}],"name":"setVerifiedImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50604051610af6380380610af683398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b6109f9806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80638c6eca8f1161008c578063c3c5a54711610066578063c3c5a547146101a1578063c7c76380146101d4578063d63ae61a146101e7578063f2fde38b146101fa57600080fd5b80638c6eca8f1461016a5780638da5cb5b1461017d578063a9f43c591461018e57600080fd5b806347061483116100bd578063470614831461013c578063715018a61461014f57806381d758781461015757600080fd5b806313f487c4146100e457806333256b091461011457806334d5cf8e14610129575b600080fd5b6003546100f7906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61012761012236600461077d565b61020d565b005b6002546100f7906001600160a01b031681565b6001546100f7906001600160a01b031681565b610127610237565b6100f761016536600461079f565b61024b565b61012761017836600461077d565b61033d565b6000546001600160a01b03166100f7565b61012761019c36600461077d565b610367565b6101c46101af36600461077d565b60046020526000908152604090205460ff1681565b604051901515815260200161010b565b6100f76101e23660046107d2565b610391565b6100f76101f5366004610861565b61046a565b61012761020836600461077d565b6106a6565b6102156106e4565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b61023f6106e4565b6102496000610711565b565b60006102556106e4565b6001600160a01b03821660009081526004602052604090205460ff16156102e95760405162461bcd60e51b815260206004820152602660248201527f7065726d6974526f757465724164647265737320616c7265616479207265676960448201527f737465726564000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6001600160a01b03808316600081815260046020526040808220805460ff1916600117905551928616927fedb0827abc7b0b94cbc50e1bca83088d90519ee23bbbd4cee7ea87badf933f1d9190a350919050565b6103456106e4565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b61036f6106e4565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600061039b6106e4565b6001600160a01b03821660009081526004602052604090205460ff16156104105760405162461bcd60e51b8152602060048201526024808201527f6c705472616e736665724164647265737320616c726561647920726567697374604482015263195c995960e21b60648201526084016102e0565b6001600160a01b03808316600081815260046020526040808220805460ff1916600117905551919286811692908816917f61afae9c85b661ce6db6ff69bdf77a7d8f9bd184e4430e98dc098417c1a2b2a191a45092915050565b60006104746106e4565b6001600160a01b038b166104ca5760405162461bcd60e51b815260206004820152601560248201527f5369676e65722063616e6e6f74206265207a65726f000000000000000000000060448201526064016102e0565b6001600160a01b038a166105205760405162461bcd60e51b815260206004820152601660248201527f577261707065722063616e6e6f74206265207a65726f0000000000000000000060448201526064016102e0565b6001600160a01b0383166105765760405162461bcd60e51b815260206004820152601460248201527f4f776e65722063616e6e6f74206265207a65726f00000000000000000000000060448201526064016102e0565b876105c35760405162461bcd60e51b815260206004820152600f60248201527f546f6b656e73207265717569726564000000000000000000000000000000000060448201526064016102e0565b6001600160a01b03821660009081526004602052604090205460ff16156106375760405162461bcd60e51b815260206004820152602260248201527f65786368616e67654164647265737320616c7265616479207265676973746572604482015261195960f21b60648201526084016102e0565b6001600160a01b03821660008181526004602052604090819020805460ff19166001179055517f05e4e9bb85e6e11e3eaf7af94319f88fbc00146204bb99198577cbd97a197a7b90610690908c908c908c908c90610991565b60405180910390a2509998505050505050505050565b6106ae6106e4565b6001600160a01b0381166106d857604051631e4fbdf760e01b8152600060048201526024016102e0565b6106e181610711565b50565b6000546001600160a01b031633146102495760405163118cdaa760e01b81523360048201526024016102e0565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b038116811461077857600080fd5b919050565b60006020828403121561078f57600080fd5b61079882610761565b9392505050565b600080604083850312156107b257600080fd5b6107bb83610761565b91506107c960208401610761565b90509250929050565b6000806000606084860312156107e757600080fd5b6107f084610761565b92506107fe60208501610761565b915061080c60408501610761565b90509250925092565b60008083601f84011261082757600080fd5b50813567ffffffffffffffff81111561083f57600080fd5b6020830191508360208260051b850101111561085a57600080fd5b9250929050565b60008060008060008060008060008060e08b8d03121561088057600080fd5b6108898b610761565b995061089760208c01610761565b985060408b013567ffffffffffffffff8111156108b357600080fd5b6108bf8d828e01610815565b90995097505060608b013567ffffffffffffffff8111156108df57600080fd5b6108eb8d828e01610815565b90975095505060808b013567ffffffffffffffff81111561090b57600080fd5b6109178d828e01610815565b909550935061092a905060a08c01610761565b915061093860c08c01610761565b90509295989b9194979a5092959850565b81835260208301925060008160005b84811015610987576001600160a01b0361097183610761565b1686526020958601959190910190600101610958565b5093949350505050565b6040815260006109a5604083018688610949565b82810360208401526109b8818587610949565b97965050505050505056fea264697066735822122058b69dad407fa5da6007f4b018631fcf10e1688b6ed2b0feb018e7c70c5f5ab764736f6c634300081c0033000000000000000000000000f26b045f8e8e5c9a9d9830016c8644c6f45a0fb2
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100df5760003560e01c80638c6eca8f1161008c578063c3c5a54711610066578063c3c5a547146101a1578063c7c76380146101d4578063d63ae61a146101e7578063f2fde38b146101fa57600080fd5b80638c6eca8f1461016a5780638da5cb5b1461017d578063a9f43c591461018e57600080fd5b806347061483116100bd578063470614831461013c578063715018a61461014f57806381d758781461015757600080fd5b806313f487c4146100e457806333256b091461011457806334d5cf8e14610129575b600080fd5b6003546100f7906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61012761012236600461077d565b61020d565b005b6002546100f7906001600160a01b031681565b6001546100f7906001600160a01b031681565b610127610237565b6100f761016536600461079f565b61024b565b61012761017836600461077d565b61033d565b6000546001600160a01b03166100f7565b61012761019c36600461077d565b610367565b6101c46101af36600461077d565b60046020526000908152604090205460ff1681565b604051901515815260200161010b565b6100f76101e23660046107d2565b610391565b6100f76101f5366004610861565b61046a565b61012761020836600461077d565b6106a6565b6102156106e4565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b61023f6106e4565b6102496000610711565b565b60006102556106e4565b6001600160a01b03821660009081526004602052604090205460ff16156102e95760405162461bcd60e51b815260206004820152602660248201527f7065726d6974526f757465724164647265737320616c7265616479207265676960448201527f737465726564000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6001600160a01b03808316600081815260046020526040808220805460ff1916600117905551928616927fedb0827abc7b0b94cbc50e1bca83088d90519ee23bbbd4cee7ea87badf933f1d9190a350919050565b6103456106e4565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b61036f6106e4565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600061039b6106e4565b6001600160a01b03821660009081526004602052604090205460ff16156104105760405162461bcd60e51b8152602060048201526024808201527f6c705472616e736665724164647265737320616c726561647920726567697374604482015263195c995960e21b60648201526084016102e0565b6001600160a01b03808316600081815260046020526040808220805460ff1916600117905551919286811692908816917f61afae9c85b661ce6db6ff69bdf77a7d8f9bd184e4430e98dc098417c1a2b2a191a45092915050565b60006104746106e4565b6001600160a01b038b166104ca5760405162461bcd60e51b815260206004820152601560248201527f5369676e65722063616e6e6f74206265207a65726f000000000000000000000060448201526064016102e0565b6001600160a01b038a166105205760405162461bcd60e51b815260206004820152601660248201527f577261707065722063616e6e6f74206265207a65726f0000000000000000000060448201526064016102e0565b6001600160a01b0383166105765760405162461bcd60e51b815260206004820152601460248201527f4f776e65722063616e6e6f74206265207a65726f00000000000000000000000060448201526064016102e0565b876105c35760405162461bcd60e51b815260206004820152600f60248201527f546f6b656e73207265717569726564000000000000000000000000000000000060448201526064016102e0565b6001600160a01b03821660009081526004602052604090205460ff16156106375760405162461bcd60e51b815260206004820152602260248201527f65786368616e67654164647265737320616c7265616479207265676973746572604482015261195960f21b60648201526084016102e0565b6001600160a01b03821660008181526004602052604090819020805460ff19166001179055517f05e4e9bb85e6e11e3eaf7af94319f88fbc00146204bb99198577cbd97a197a7b90610690908c908c908c908c90610991565b60405180910390a2509998505050505050505050565b6106ae6106e4565b6001600160a01b0381166106d857604051631e4fbdf760e01b8152600060048201526024016102e0565b6106e181610711565b50565b6000546001600160a01b031633146102495760405163118cdaa760e01b81523360048201526024016102e0565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b038116811461077857600080fd5b919050565b60006020828403121561078f57600080fd5b61079882610761565b9392505050565b600080604083850312156107b257600080fd5b6107bb83610761565b91506107c960208401610761565b90509250929050565b6000806000606084860312156107e757600080fd5b6107f084610761565b92506107fe60208501610761565b915061080c60408501610761565b90509250925092565b60008083601f84011261082757600080fd5b50813567ffffffffffffffff81111561083f57600080fd5b6020830191508360208260051b850101111561085a57600080fd5b9250929050565b60008060008060008060008060008060e08b8d03121561088057600080fd5b6108898b610761565b995061089760208c01610761565b985060408b013567ffffffffffffffff8111156108b357600080fd5b6108bf8d828e01610815565b90995097505060608b013567ffffffffffffffff8111156108df57600080fd5b6108eb8d828e01610815565b90975095505060808b013567ffffffffffffffff81111561090b57600080fd5b6109178d828e01610815565b909550935061092a905060a08c01610761565b915061093860c08c01610761565b90509295989b9194979a5092959850565b81835260208301925060008160005b84811015610987576001600160a01b0361097183610761565b1686526020958601959190910190600101610958565b5093949350505050565b6040815260006109a5604083018688610949565b82810360208401526109b8818587610949565b97965050505050505056fea264697066735822122058b69dad407fa5da6007f4b018631fcf10e1688b6ed2b0feb018e7c70c5f5ab764736f6c634300081c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f26b045f8e8e5c9a9d9830016c8644c6f45a0fb2
-----Decoded View---------------
Arg [0] : initialOwner (address): 0xf26B045f8E8E5C9a9D9830016c8644C6F45A0Fb2
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000f26b045f8e8e5c9a9d9830016c8644c6f45a0fb2
Loading...
Loading
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.