Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
BotRegistry
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-09-09 */ pragma solidity ^0.6.0; interface ERC20 { function totalSupply() external view returns (uint256 supply); function balanceOf(address _owner) external view returns (uint256 balance); function transfer(address _to, uint256 _value) external returns (bool success); function transferFrom(address _from, address _to, uint256 _value) external returns (bool success); function approve(address _spender, uint256 _value) external returns (bool success); function allowance(address _owner, address _spender) external view returns (uint256 remaining); function decimals() external view returns (uint256 digits); event Approval(address indexed _owner, address indexed _spender, uint256 _value); } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer(ERC20 token, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(ERC20 token, address from, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. */ function safeApprove(ERC20 token, address spender, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(ERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(ERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero"); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function _callOptionalReturn(ERC20 token, bytes memory data) private { bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } contract AdminAuth { using SafeERC20 for ERC20; address public owner; address public admin; modifier onlyOwner() { require(owner == msg.sender); _; } constructor() public { owner = msg.sender; } /// @notice Admin is set by owner first time, after that admin is super role and has permission to change owner /// @param _admin Address of multisig that becomes admin function setAdminByOwner(address _admin) public { require(msg.sender == owner); require(admin == address(0)); admin = _admin; } /// @notice Admin is able to set new admin /// @param _admin Address of multisig that becomes new admin function setAdminByAdmin(address _admin) public { require(msg.sender == admin); admin = _admin; } /// @notice Admin is able to change owner /// @param _owner Address of new owner function setOwnerByAdmin(address _owner) public { require(msg.sender == admin); owner = _owner; } /// @notice Destroy the contract function kill() public onlyOwner { selfdestruct(payable(owner)); } /// @notice withdraw stuck funds function withdrawStuckFunds(address _token, uint _amount) public onlyOwner { if (_token == 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE) { payable(owner).transfer(_amount); } else { ERC20(_token).safeTransfer(owner, _amount); } } } contract BotRegistry is AdminAuth { mapping (address => bool) public botList; constructor() public { botList[0x776B4a13093e30B05781F97F6A4565B6aa8BE330] = true; botList[0xAED662abcC4FA3314985E67Ea993CAD064a7F5cF] = true; botList[0xa5d330F6619d6bF892A5B87D80272e1607b3e34D] = true; botList[0x5feB4DeE5150B589a7f567EA7CADa2759794A90A] = true; botList[0x7ca06417c1d6f480d3bB195B80692F95A6B66158] = true; } function setBot(address _botAddr, bool _state) public onlyOwner { botList[_botAddr] = _state; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"botList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"kill","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_admin","type":"address"}],"name":"setAdminByAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_admin","type":"address"}],"name":"setAdminByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_botAddr","type":"address"},{"internalType":"bool","name":"_state","type":"bool"}],"name":"setBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"setOwnerByAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawStuckFunds","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50600080546001600160a01b0319163317815560026020527ff2484e57a3295a9ffbd34f6b618e4b1e1438813e6bc45491bcc0c8435866f79c805460ff1990811660019081179092557f423b68181481263508ff564c1236c54433589300ddd555caef29b7748f3c85ee80548216831790557f5a7f2874605c13559997e383adebedc37a0bf16cc8466b9c9f727a6de4d1d30380548216831790557fc925c685b67623d3a07cdaf469e218a338d588fba95bfb8284aa4527dbae3e638054821683179055737ca06417c1d6f480d3bb195b80692f95a6b661589092527ff120fa7ad7a75cc404e2248b9e8dbc7db1da68015a1a20b9e0374a97e75284f68054909216179055610709806101246000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c806341d6e7da1161006657806341d6e7da146101225780638da5cb5b1461015c578063a7304bf714610180578063deca5f88146101a6578063f851a440146101cc57610093565b80631e48907b14610098578063342aa8b5146100c05780633a128322146100ee57806341c0e1b51461011a575b600080fd5b6100be600480360360208110156100ae57600080fd5b50356001600160a01b03166101d4565b005b6100be600480360360408110156100d657600080fd5b506001600160a01b038135169060200135151561020d565b6100be6004803603604081101561010457600080fd5b506001600160a01b03813516906020013561024f565b6100be6102e8565b6101486004803603602081101561013857600080fd5b50356001600160a01b031661030d565b604080519115158252519081900360200190f35b610164610322565b604080516001600160a01b039092168252519081900360200190f35b6100be6004803603602081101561019657600080fd5b50356001600160a01b0316610331565b6100be600480360360208110156101bc57600080fd5b50356001600160a01b031661036a565b610164610397565b6001546001600160a01b031633146101eb57600080fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461022457600080fd5b6001600160a01b03919091166000908152600260205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461026657600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03831614156102ca57600080546040516001600160a01b039091169183156108fc02918491818181858888f193505050501580156102c4573d6000803e3d6000fd5b506102e4565b6000546102e4906001600160a01b038481169116836103a6565b5050565b6000546001600160a01b031633146102ff57600080fd5b6000546001600160a01b0316ff5b60026020526000908152604090205460ff1681565b6000546001600160a01b031681565b6001546001600160a01b0316331461034857600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461038157600080fd5b6001546001600160a01b03161561034857600080fd5b6001546001600160a01b031681565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526103f89084906103fd565b505050565b6060610452826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166104ae9092919063ffffffff16565b8051909150156103f85780806020019051602081101561047157600080fd5b50516103f85760405162461bcd60e51b815260040180806020018281038252602a8152602001806106aa602a913960400191505060405180910390fd5b60606104bd84846000856104c5565b949350505050565b60606104d085610670565b610521576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106105605780518252601f199092019160209182019101610541565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146105c2576040519150601f19603f3d011682016040523d82523d6000602084013e6105c7565b606091505b509150915081156105db5791506104bd9050565b8051156105eb5780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561063557818101518382015260200161061d565b50505050905090810190601f1680156106625780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906104bd57505015159291505056fe5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220d76e246a89be500283658b2fe242be1a8eb6f95886e6e85b0b50929623c8f4e264736f6c634300060c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100935760003560e01c806341d6e7da1161006657806341d6e7da146101225780638da5cb5b1461015c578063a7304bf714610180578063deca5f88146101a6578063f851a440146101cc57610093565b80631e48907b14610098578063342aa8b5146100c05780633a128322146100ee57806341c0e1b51461011a575b600080fd5b6100be600480360360208110156100ae57600080fd5b50356001600160a01b03166101d4565b005b6100be600480360360408110156100d657600080fd5b506001600160a01b038135169060200135151561020d565b6100be6004803603604081101561010457600080fd5b506001600160a01b03813516906020013561024f565b6100be6102e8565b6101486004803603602081101561013857600080fd5b50356001600160a01b031661030d565b604080519115158252519081900360200190f35b610164610322565b604080516001600160a01b039092168252519081900360200190f35b6100be6004803603602081101561019657600080fd5b50356001600160a01b0316610331565b6100be600480360360208110156101bc57600080fd5b50356001600160a01b031661036a565b610164610397565b6001546001600160a01b031633146101eb57600080fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461022457600080fd5b6001600160a01b03919091166000908152600260205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461026657600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03831614156102ca57600080546040516001600160a01b039091169183156108fc02918491818181858888f193505050501580156102c4573d6000803e3d6000fd5b506102e4565b6000546102e4906001600160a01b038481169116836103a6565b5050565b6000546001600160a01b031633146102ff57600080fd5b6000546001600160a01b0316ff5b60026020526000908152604090205460ff1681565b6000546001600160a01b031681565b6001546001600160a01b0316331461034857600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461038157600080fd5b6001546001600160a01b03161561034857600080fd5b6001546001600160a01b031681565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526103f89084906103fd565b505050565b6060610452826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166104ae9092919063ffffffff16565b8051909150156103f85780806020019051602081101561047157600080fd5b50516103f85760405162461bcd60e51b815260040180806020018281038252602a8152602001806106aa602a913960400191505060405180910390fd5b60606104bd84846000856104c5565b949350505050565b60606104d085610670565b610521576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106105605780518252601f199092019160209182019101610541565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146105c2576040519150601f19603f3d011682016040523d82523d6000602084013e6105c7565b606091505b509150915081156105db5791506104bd9050565b8051156105eb5780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561063557818101518382015260200161061d565b50505050905090810190601f1680156106625780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906104bd57505015159291505056fe5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220d76e246a89be500283658b2fe242be1a8eb6f95886e6e85b0b50929623c8f4e264736f6c634300060c0033
Deployed Bytecode Sourcemap
8934:590:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8350:122;;;;;;;;;;;;;;;;-1:-1:-1;8350:122:0;-1:-1:-1;;;;;8350:122:0;;:::i;:::-;;9410:109;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9410:109:0;;;;;;;;;;:::i;8645:285::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8645:285:0;;;;;;;;:::i;8518:80::-;;;:::i;8977:40::-;;;;;;;;;;;;;;;;-1:-1:-1;8977:40:0;-1:-1:-1;;;;;8977:40:0;;:::i;:::-;;;;;;;;;;;;;;;;;;7457:20;;;:::i;:::-;;;;-1:-1:-1;;;;;7457:20:0;;;;;;;;;;;;;;8129:122;;;;;;;;;;;;;;;;-1:-1:-1;8129:122:0;-1:-1:-1;;;;;8129:122:0;;:::i;7846:161::-;;;;;;;;;;;;;;;;-1:-1:-1;7846:161:0;-1:-1:-1;;;;;7846:161:0;;:::i;7484:20::-;;;:::i;8350:122::-;8431:5;;-1:-1:-1;;;;;8431:5:0;8417:10;:19;8409:28;;;;;;8450:5;:14;;-1:-1:-1;;;;;;8450:14:0;-1:-1:-1;;;;;8450:14:0;;;;;;;;;;8350:122::o;9410:109::-;7553:5;;-1:-1:-1;;;;;7553:5:0;7562:10;7553:19;7545:28;;;;;;-1:-1:-1;;;;;9485:17:0;;;::::1;;::::0;;;:7:::1;:17;::::0;;;;:26;;-1:-1:-1;;9485:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9410:109::o;8645:285::-;7553:5;;-1:-1:-1;;;;;7553:5:0;7562:10;7553:19;7545:28;;;;;;8745:42:::1;-1:-1:-1::0;;;;;8735:52:0;::::1;;8731:192;;;8812:5;::::0;;8804:32:::1;::::0;-1:-1:-1;;;;;8812:5:0;;::::1;::::0;8804:32;::::1;;;::::0;8828:7;;8804:32;8812:5;8804:32;8828:7;8812:5;8804:32;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;8731:192;;;8896:5;::::0;8869:42:::1;::::0;-1:-1:-1;;;;;8869:26:0;;::::1;::::0;8896:5:::1;8903:7:::0;8869:26:::1;:42::i;:::-;8645:285:::0;;:::o;8518:80::-;7553:5;;-1:-1:-1;;;;;7553:5:0;7562:10;7553:19;7545:28;;;;;;8583:5:::1;::::0;-1:-1:-1;;;;;8583:5:0::1;8562:28;8977:40:::0;;;;;;;;;;;;;;;:::o;7457:20::-;;;-1:-1:-1;;;;;7457:20:0;;:::o;8129:122::-;8210:5;;-1:-1:-1;;;;;8210:5:0;8196:10;:19;8188:28;;;;;;8229:5;:14;;-1:-1:-1;;;;;;8229:14:0;-1:-1:-1;;;;;8229:14:0;;;;;;;;;;8129:122::o;7846:161::-;7927:5;;-1:-1:-1;;;;;7927:5:0;7913:10;:19;7905:28;;;;;;7952:5;;-1:-1:-1;;;;;7952:5:0;:19;7944:28;;;;;7484:20;;;-1:-1:-1;;;;;7484:20:0;;:::o;5600:176::-;5709:58;;;-1:-1:-1;;;;;5709:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5709:58:0;-1:-1:-1;;;5709:58:0;;;5682:86;;5702:5;;5682:19;:86::i;:::-;5600:176;;;:::o;6972:419::-;7054:23;7080:69;7108:4;7080:69;;;;;;;;;;;;;;;;;7088:5;-1:-1:-1;;;;;7080:27:0;;;:69;;;;;:::i;:::-;7164:17;;7054:95;;-1:-1:-1;7164:21:0;7160:224;;7306:10;7295:30;;;;;;;;;;;;;;;-1:-1:-1;7295:30:0;7287:85;;;;-1:-1:-1;;;7287:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1993:196;2096:12;2128:53;2151:6;2159:4;2165:1;2168:12;2128:22;:53::i;:::-;2121:60;1993:196;-1:-1:-1;;;;1993:196:0:o;2755:979::-;2885:12;2918:18;2929:6;2918:10;:18::i;:::-;2910:60;;;;;-1:-1:-1;;;2910:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3044:12;3058:23;3085:6;-1:-1:-1;;;;;3085:11:0;3105:8;3116:4;3085:36;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3085:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3043:78;;;;3136:7;3132:595;;;3167:10;-1:-1:-1;3160:17:0;;-1:-1:-1;3160:17:0;3132:595;3281:17;;:21;3277:439;;3544:10;3538:17;3605:15;3592:10;3588:2;3584:19;3577:44;3492:148;3687:12;3680:20;;-1:-1:-1;;;3680:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;780:619;840:4;1308:20;;1151:66;1348:23;;;;;;:42;;-1:-1:-1;;1375:15:0;;;1340:51;-1:-1:-1;;780:619:0:o
Swarm Source
ipfs://d76e246a89be500283658b2fe242be1a8eb6f95886e6e85b0b50929623c8f4e2
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 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.