Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 50 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Register Brokerb... | 20319948 | 57 days ago | IN | 0 ETH | 0.00586932 | ||||
Register Brokerb... | 19917409 | 113 days ago | IN | 0 ETH | 0.00586932 | ||||
Register Brokerb... | 19886973 | 117 days ago | IN | 0 ETH | 0.00015958 | ||||
Register Brokerb... | 19877165 | 119 days ago | IN | 0 ETH | 0.00026337 | ||||
Register Brokerb... | 19877161 | 119 days ago | IN | 0 ETH | 0.00039378 | ||||
Register Brokerb... | 19875555 | 119 days ago | IN | 0 ETH | 0.00053599 | ||||
Register Brokerb... | 19875534 | 119 days ago | IN | 0 ETH | 0.00045246 | ||||
Register Brokerb... | 18811931 | 268 days ago | IN | 0 ETH | 0.00163664 | ||||
Register Brokerb... | 17891975 | 397 days ago | IN | 0 ETH | 0.00102618 | ||||
Register Brokerb... | 17619411 | 435 days ago | IN | 0 ETH | 0.00078468 | ||||
Register Brokerb... | 17619323 | 435 days ago | IN | 0 ETH | 0.00086785 | ||||
Register Brokerb... | 17541451 | 446 days ago | IN | 0 ETH | 0.0006528 | ||||
Register Brokerb... | 16931857 | 532 days ago | IN | 0 ETH | 0.00146903 | ||||
Register Brokerb... | 16577616 | 582 days ago | IN | 0 ETH | 0.00170885 | ||||
Register Brokerb... | 16519768 | 590 days ago | IN | 0 ETH | 0.00087317 | ||||
Register Brokerb... | 16392894 | 608 days ago | IN | 0 ETH | 0.00058022 | ||||
Register Brokerb... | 16389764 | 608 days ago | IN | 0 ETH | 0.00090213 | ||||
Register Brokerb... | 16283363 | 623 days ago | IN | 0 ETH | 0.00061674 | ||||
Register Brokerb... | 16197342 | 635 days ago | IN | 0 ETH | 0.00079175 | ||||
Register Brokerb... | 16183060 | 637 days ago | IN | 0 ETH | 0.00066864 | ||||
Register Brokerb... | 16175071 | 638 days ago | IN | 0 ETH | 0.00048576 | ||||
Register Brokerb... | 16120081 | 646 days ago | IN | 0 ETH | 0.00090087 | ||||
Register Brokerb... | 16068758 | 653 days ago | IN | 0 ETH | 0.00058614 | ||||
Register Brokerb... | 15796482 | 691 days ago | IN | 0 ETH | 0.0011415 | ||||
Register Brokerb... | 15740464 | 699 days ago | IN | 0 ETH | 0.00134148 |
Loading...
Loading
Contract Name:
BrokerbotRegistry
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity Standard Json-Input format)
/** * SPDX-License-Identifier: LicenseRef-Aktionariat * * Proprietary License * * This code cannot be used without an explicit permission from the copyright holder. * If you wish to use the Aktionariat Brokerbot, you can either use the open version * named Brokerbot.sol that can be used under an MIT License with Automated License Fee Payments, * or you can get in touch with use to negotiate a license to use LicensedBrokerbot.sol . * * Copyright (c) 2021 Aktionariat AG (aktionariat.com), All rights reserved. */ pragma solidity ^0.8.0; import "./IBrokerbot.sol"; import "../ERC20/IERC20.sol"; import "../utils/Ownable.sol"; /// @title Brokerbot Registry /// @notice Holds a registry from all deployed active brokerbots contract BrokerbotRegistry is Ownable { /// @notice Returns the brokerbot address for a given pair base and share token, or address 0 if it does not exist /// @dev mapping is [base][token] = brokerbotAddress /// @return brokerbot The brokerbot address mapping(IERC20 => mapping(IERC20 => IBrokerbot)) public getBrokerbot; /// @notice Emitted when brokerbot is registered. /// @param brokerbot The address of the brokerbot /// @param base The address of the base currency /// @param token The address of the share token event RegisterBrokerbot(IBrokerbot brokerbot, IERC20 indexed base, IERC20 indexed token); /// @notice Emmitted when calling syncBrokerbot function /// @param brokerbot The brokerbot address that is synced event SyncBrokerbot(IBrokerbot indexed brokerbot); constructor(address _owner) Ownable(_owner) {} /// @notice Per network only one active brokerbot should exist per base/share pair /// @param _brokerbot The brokerbot contract that should be registered. /// @param _base The contract of the base currency of the brokerbot. /// @param _token The contract of the share token of the brokerbot. function registerBrokerbot(IBrokerbot _brokerbot, IERC20 _base, IERC20 _token ) external onlyOwner() { getBrokerbot[_base][_token] = _brokerbot; emit RegisterBrokerbot(_brokerbot, _base, _token); } /// @notice This event is usful for indexers/subgraphs to update token balances which are not tracked with other events /// @param _brokerbot The brokerbot that should be synced function syncBrokerbot(IBrokerbot _brokerbot) external { emit SyncBrokerbot(_brokerbot); } }
/** * SPDX-License-Identifier: MIT * * Copyright (c) 2016-2019 zOS Global Limited * */ pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see `ERC20Detailed`. */ interface IERC20 { // Optional functions function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); /** * @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. * * > 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); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../ERC20/IERC20.sol"; interface IBrokerbot { function base() external view returns (IERC20); function settings() external view returns (uint256); // @return The amount of shares bought on buying or how much in the base currency is transfered on selling function processIncoming(IERC20 token_, address from, uint256 amount, bytes calldata ref) external payable returns (uint256); }
// SPDX-License-Identifier: MIT // // From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol // // Modifications: // - Replaced Context._msgSender() with msg.sender // - Made leaner // - Extracted interface pragma solidity ^0.8.0; /** * @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. */ contract Ownable { address public owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor (address initialOwner) { owner = initialOwner; emit OwnershipTransferred(address(0), owner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) external onlyOwner { emit OwnershipTransferred(owner, newOwner); owner = newOwner; } modifier onlyOwner() { require(owner == msg.sender, "not owner"); _; } }
{ "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
[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"contract IBrokerbot","name":"brokerbot","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"base","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"}],"name":"RegisterBrokerbot","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IBrokerbot","name":"brokerbot","type":"address"}],"name":"SyncBrokerbot","type":"event"},{"inputs":[{"internalType":"contract IERC20","name":"","type":"address"},{"internalType":"contract IERC20","name":"","type":"address"}],"name":"getBrokerbot","outputs":[{"internalType":"contract IBrokerbot","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IBrokerbot","name":"_brokerbot","type":"address"},{"internalType":"contract IERC20","name":"_base","type":"address"},{"internalType":"contract IERC20","name":"_token","type":"address"}],"name":"registerBrokerbot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IBrokerbot","name":"_brokerbot","type":"address"}],"name":"syncBrokerbot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5060405161044338038061044383398101604081905261002f9161007e565b600080546001600160a01b0319166001600160a01b03831690811782556040518392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506100ae565b60006020828403121561009057600080fd5b81516001600160a01b03811681146100a757600080fd5b9392505050565b610386806100bd6000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806309f793711461005c57806376abbf0a146100715780638da5cb5b146100c15780639abad75e146100d4578063f2fde38b146100e7575b600080fd5b61006f61006a3660046102b4565b6100fa565b005b6100a561007f3660046102ff565b60016020908152600092835260408084209091529082529020546001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b6000546100a5906001600160a01b031681565b61006f6100e2366004610290565b6101b8565b61006f6100f5366004610290565b6101ef565b6000546001600160a01b031633146101455760405162461bcd60e51b81526020600482015260096024820152683737ba1037bbb732b960b91b60448201526064015b60405180910390fd5b6001600160a01b0382811660008181526001602090815260408083208686168085529083529281902080546001600160a01b03191695891695861790555193845290927f3cc22fa2b08c920913fb7245fcc72114373ad796b1be5d44ee1ff6ad60b3a65a910160405180910390a3505050565b6040516001600160a01b038216907f8709efa7ee1ccd26c55d0d4770969d05389572dec0bc4e3b34acfdf89f1b64f990600090a250565b6000546001600160a01b031633146102355760405162461bcd60e51b81526020600482015260096024820152683737ba1037bbb732b960b91b604482015260640161013c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000602082840312156102a257600080fd5b81356102ad81610338565b9392505050565b6000806000606084860312156102c957600080fd5b83356102d481610338565b925060208401356102e481610338565b915060408401356102f481610338565b809150509250925092565b6000806040838503121561031257600080fd5b823561031d81610338565b9150602083013561032d81610338565b809150509250929050565b6001600160a01b038116811461034d57600080fd5b5056fea2646970667358221220cb7bce4f4a94a8575b1073bb240b5524579a27117e5346afdd2a25f0bc960f4c64736f6c6343000807003300000000000000000000000039e5351e6ce3c4b19b8b0a2f5c82c511782457be
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100575760003560e01c806309f793711461005c57806376abbf0a146100715780638da5cb5b146100c15780639abad75e146100d4578063f2fde38b146100e7575b600080fd5b61006f61006a3660046102b4565b6100fa565b005b6100a561007f3660046102ff565b60016020908152600092835260408084209091529082529020546001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b6000546100a5906001600160a01b031681565b61006f6100e2366004610290565b6101b8565b61006f6100f5366004610290565b6101ef565b6000546001600160a01b031633146101455760405162461bcd60e51b81526020600482015260096024820152683737ba1037bbb732b960b91b60448201526064015b60405180910390fd5b6001600160a01b0382811660008181526001602090815260408083208686168085529083529281902080546001600160a01b03191695891695861790555193845290927f3cc22fa2b08c920913fb7245fcc72114373ad796b1be5d44ee1ff6ad60b3a65a910160405180910390a3505050565b6040516001600160a01b038216907f8709efa7ee1ccd26c55d0d4770969d05389572dec0bc4e3b34acfdf89f1b64f990600090a250565b6000546001600160a01b031633146102355760405162461bcd60e51b81526020600482015260096024820152683737ba1037bbb732b960b91b604482015260640161013c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000602082840312156102a257600080fd5b81356102ad81610338565b9392505050565b6000806000606084860312156102c957600080fd5b83356102d481610338565b925060208401356102e481610338565b915060408401356102f481610338565b809150509250925092565b6000806040838503121561031257600080fd5b823561031d81610338565b9150602083013561032d81610338565b809150509250929050565b6001600160a01b038116811461034d57600080fd5b5056fea2646970667358221220cb7bce4f4a94a8575b1073bb240b5524579a27117e5346afdd2a25f0bc960f4c64736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000039e5351e6ce3c4b19b8b0a2f5c82c511782457be
-----Decoded View---------------
Arg [0] : _owner (address): 0x39E5351E6CE3c4B19B8b0a2F5C82c511782457BE
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000039e5351e6ce3c4b19b8b0a2f5c82c511782457be
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.