Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x60a06040 | 15364036 | 832 days ago | IN | 0 ETH | 0.00748014 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
RollupHandler
Compiler Version
v0.8.11+commit.d7f03943
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: LGPL-3.0-only pragma solidity ^0.8.0; import "./HandlerHelpers.sol"; import "../interfaces/IDepositExecute.sol"; import "../utils/rollup/RollupTypes.sol"; contract RollupHandler is IDepositExecute, HandlerHelpers { constructor(address bridgeAddress) HandlerHelpers(bridgeAddress) {} mapping(uint72 => Metadata) public rollupMetadata; // slither-disable-next-line locked-ether function deposit( bytes32, address, bytes calldata ) external payable override onlyBridge returns (bytes memory) { revert("not supported"); } struct Metadata { uint8 domainID; bytes32 resourceID; uint64 nonce; bytes32 stateChangeHash; bytes32 rootHash; uint64 totalBatches; // bytes state; unused } /// @notice Proposal execution should be initiated when a proposal is finalized in the Bridge contract. /// /// @notice Requirements: /// - It must be called by only bridge. /// - {resourceID} must exist. /// - {contractAddress} must be allowed. /// - {resourceID} must be equal to the resource ID from metadata /// - Sender resource ID must exist. /// - Sender contract address must be allowed. /// /// @param data Consists of {resourceID}, {lenMetaData}, and {metaData}. /// /// @notice Data passed into the function should be constructed as follows: /// len(data) uint256 bytes 0 - 32 /// data bytes bytes 32 - END /// /// @notice If {_contractAddressToExecuteFunctionSignature}[{contractAddress}] is set, /// {metaData} is expected to consist of needed function arguments. function executeProposal(bytes32 resourceID, bytes calldata data) external override onlyBridge { address contractAddress = _resourceIDToTokenContractAddress[resourceID]; require(contractAddress != address(0), "invalid resource ID"); require( _contractWhitelist[contractAddress], "not an allowed contract address" ); Metadata memory md = abi.decode(data, (Metadata)); require(md.resourceID == resourceID, "different resource IDs"); uint72 nonceAndID = (uint72(md.nonce) << 8) | uint72(md.domainID); rollupMetadata[nonceAndID] = md; } /// @notice Returns rollup info by original domain ID, resource ID and nonce. /// /// @notice Requirements: /// - {resourceID} must exist. /// - {resourceID} must be equal to the resource ID from metadata function getRollupInfo( uint8 originDomainID, bytes32 resourceID, uint64 nonce ) external view returns ( address, bytes32, uint64 ) { address settleableAddress = _resourceIDToTokenContractAddress[ resourceID ]; require(settleableAddress != address(0), "invalid resource ID"); uint72 nonceAndID = (uint72(nonce) << 8) | uint72(originDomainID); Metadata memory md = rollupMetadata[nonceAndID]; require(md.resourceID == resourceID, "different resource IDs"); return (settleableAddress, md.rootHash, md.totalBatches); } }
// SPDX-License-Identifier: LGPL-3.0-only pragma solidity ^0.8.0; import "../interfaces/IERCHandler.sol"; /// @notice This contract is intended to be used with the Bridge contract. contract HandlerHelpers is IERCHandler { address public immutable _bridgeAddress; // resourceID => token contract address mapping(bytes32 => address) public _resourceIDToTokenContractAddress; // token contract address => resourceID mapping(address => bytes32) public _tokenContractAddressToResourceID; // token contract address => is whitelisted mapping(address => bool) public _contractWhitelist; // token contract address => is burnable mapping(address => bool) public _burnList; modifier onlyBridge() { _onlyBridge(); _; } /// @param bridgeAddress Contract address of previously deployed Bridge. constructor(address bridgeAddress) { _bridgeAddress = bridgeAddress; } function _onlyBridge() private view { require(msg.sender == _bridgeAddress, "sender must be bridge contract"); } /// @notice First verifies {_resourceIDToContractAddress}[{resourceID}] and /// {_contractAddressToResourceID}[{contractAddress}] are not already set, /// then sets {_resourceIDToContractAddress} with {contractAddress}, /// {_contractAddressToResourceID} with {resourceID}, /// and {_contractWhitelist} to true for {contractAddress}. /// /// @param resourceID ResourceID to be used when making deposits. /// @param contractAddress Address of contract to be called when a deposit is made and a deposited is executed. function setResource(bytes32 resourceID, address contractAddress) external override onlyBridge { _setResource(resourceID, contractAddress); } /// @notice First verifies {contractAddress} is whitelisted, then sets {_burnList}[{contractAddress}] /// to true. /// /// @param contractAddress Address of contract to be used when making or executing deposits. function setBurnable(address contractAddress) external override onlyBridge { _setBurnable(contractAddress); } function withdraw(bytes memory data) external virtual override {} function _setResource(bytes32 resourceID, address contractAddress) internal { _resourceIDToTokenContractAddress[resourceID] = contractAddress; _tokenContractAddressToResourceID[contractAddress] = resourceID; _contractWhitelist[contractAddress] = true; } function _setBurnable(address contractAddress) internal { require( _contractWhitelist[contractAddress], "not an allowed token address" ); _burnList[contractAddress] = true; } }
// SPDX-License-Identifier: LGPL-3.0-only pragma solidity ^0.8.0; interface IDepositExecute { /// @notice It is intended that deposit are made using the Bridge contract. /// @param resourceID ResourceID to be used. /// @param depositer Address of account making the deposit in the Bridge contract. /// @param data Consists of additional data needed for a specific deposit. function deposit( bytes32 resourceID, address depositer, bytes calldata data ) external payable returns (bytes memory); /// @notice It is intended that proposals are executed by the Bridge contract. /// @param resourceID ResourceID to be used. /// @param data Consists of additional data needed for a specific deposit execution. function executeProposal(bytes32 resourceID, bytes calldata data) external; }
// SPDX-License-Identifier: LGPL-3.0-only pragma solidity ^0.8.0; struct StateContext { bool _writable; bytes32 _hash; // writable uint256 _startBlock; // writable // readable uint8 _epoch; } struct KeyValuePair { bytes key; bytes value; }
// SPDX-License-Identifier: LGPL-3.0-only pragma solidity ^0.8.0; interface IERCHandler { /// @notice Correlates {resourceID} with {contractAddress}. /// @param resourceID ResourceID to be used when making deposits. /// @param contractAddress Address of contract to be called when a deposit is made and a deposited is executed. function setResource(bytes32 resourceID, address contractAddress) external; /// @notice Marks {contractAddress} as mintable/burnable. /// @param contractAddress Address of contract to be used when making or executing deposits. function setBurnable(address contractAddress) external; /// @notice Withdraw funds from ERC safes. /// @param data ABI-encoded withdrawal params relevant to the handler. function withdraw(bytes memory data) external; }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"bridgeAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"_bridgeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_burnList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_contractWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"_resourceIDToTokenContractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_tokenContractAddressToResourceID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"deposit","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"resourceID","type":"bytes32"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"executeProposal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"originDomainID","type":"uint8"},{"internalType":"bytes32","name":"resourceID","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"name":"getRollupInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint72","name":"","type":"uint72"}],"name":"rollupMetadata","outputs":[{"internalType":"uint8","name":"domainID","type":"uint8"},{"internalType":"bytes32","name":"resourceID","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"bytes32","name":"stateChangeHash","type":"bytes32"},{"internalType":"bytes32","name":"rootHash","type":"bytes32"},{"internalType":"uint64","name":"totalBatches","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"setBurnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"resourceID","type":"bytes32"},{"internalType":"address","name":"contractAddress","type":"address"}],"name":"setResource","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a060405234801561001057600080fd5b50604051610c9a380380610c9a83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610c0861009260003960008181610151015261072f0152610c086000f3fe6080604052600436106100a75760003560e01c80637f79bea8116100645780637f79bea814610256578063b07e54bb14610286578063b8fa3736146102a6578063c261694c146102c6578063c8ba6c8714610315578063e248cff21461035057600080fd5b806307b7ed99146100ac5780630968f264146100ce5780630a6d55d8146100ec578063318c136e1461013f57806340fbb12e146101735780636a70d08114610216575b600080fd5b3480156100b857600080fd5b506100cc6100c7366004610846565b610370565b005b3480156100da57600080fd5b506100cc6100e936600461087e565b50565b3480156100f857600080fd5b5061012261010736600461092f565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561014b57600080fd5b506101227f000000000000000000000000000000000000000000000000000000000000000081565b34801561017f57600080fd5b506101d561018e366004610948565b600460208190526000918252604090912080546001820154600283015460038401549484015460059094015460ff90931694919367ffffffffffffffff9182169390911686565b6040805160ff9097168752602087019590955267ffffffffffffffff93841694860194909452606085019190915260808401521660a082015260c001610136565b34801561022257600080fd5b50610246610231366004610846565b60036020526000908152604090205460ff1681565b6040519015158152602001610136565b34801561026257600080fd5b50610246610271366004610846565b60026020526000908152604090205460ff1681565b6102996102943660046109bc565b610381565b6040516101369190610a16565b3480156102b257600080fd5b506100cc6102c1366004610a6b565b6103c8565b3480156102d257600080fd5b506102e66102e1366004610ac0565b61041d565b604080516001600160a01b039094168452602084019290925267ffffffffffffffff1690820152606001610136565b34801561032157600080fd5b50610342610330366004610846565b60016020526000908152604090205481565b604051908152602001610136565b34801561035c57600080fd5b506100cc61036b366004610afc565b61055d565b610378610724565b6100e98161079e565b606061038b610724565b60405162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5c1c1bdc9d1959609a1b60448201526064015b60405180910390fd5b6103d0610724565b60008281526020818152604080832080546001600160a01b0319166001600160a01b039590951694851790559282526001808252838320949094556002905220805460ff19169091179055565b600082815260208190526040812054819081906001600160a01b03168061047c5760405162461bcd60e51b81526020600482015260136024820152721a5b9d985b1a59081c995cdbdd5c98d9481251606a1b60448201526064016103bf565b60ff878116600887901b68ffffffffffffffff001617600081815260046020818152604092839020835160c081018552815490961686526001810154918601829052600281015467ffffffffffffffff908116948701949094526003810154606087015291820154608086015260059091015490911660a084015290919088146105415760405162461bcd60e51b8152602060048201526016602482015275646966666572656e74207265736f757263652049447360501b60448201526064016103bf565b608081015160a090910151929990985091965090945050505050565b610565610724565b6000838152602081905260409020546001600160a01b0316806105c05760405162461bcd60e51b81526020600482015260136024820152721a5b9d985b1a59081c995cdbdd5c98d9481251606a1b60448201526064016103bf565b6001600160a01b03811660009081526002602052604090205460ff166106285760405162461bcd60e51b815260206004820152601f60248201527f6e6f7420616e20616c6c6f77656420636f6e747261637420616464726573730060448201526064016103bf565b600061063683850185610b48565b9050848160200151146106845760405162461bcd60e51b8152602060048201526016602482015275646966666572656e74207265736f757263652049447360501b60448201526064016103bf565b80516040808301805160ff93841660089190911b68ffffffffffffffff001617600090815260046020818152939091208551815460ff191695169490941784559184015160018401555160028301805467ffffffffffffffff1990811667ffffffffffffffff938416179091556060850151600385015560808501519284019290925560a090930151600590920180549091169190921617905550505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461079c5760405162461bcd60e51b815260206004820152601e60248201527f73656e646572206d7573742062652062726964676520636f6e7472616374000060448201526064016103bf565b565b6001600160a01b03811660009081526002602052604090205460ff166108065760405162461bcd60e51b815260206004820152601c60248201527f6e6f7420616e20616c6c6f77656420746f6b656e20616464726573730000000060448201526064016103bf565b6001600160a01b03166000908152600360205260409020805460ff19166001179055565b80356001600160a01b038116811461084157600080fd5b919050565b60006020828403121561085857600080fd5b6108618261082a565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561089057600080fd5b813567ffffffffffffffff808211156108a857600080fd5b818401915084601f8301126108bc57600080fd5b8135818111156108ce576108ce610868565b604051601f8201601f19908116603f011681019083821181831017156108f6576108f6610868565b8160405282815287602084870101111561090f57600080fd5b826020860160208301376000928101602001929092525095945050505050565b60006020828403121561094157600080fd5b5035919050565b60006020828403121561095a57600080fd5b813568ffffffffffffffffff8116811461086157600080fd5b60008083601f84011261098557600080fd5b50813567ffffffffffffffff81111561099d57600080fd5b6020830191508360208285010111156109b557600080fd5b9250929050565b600080600080606085870312156109d257600080fd5b843593506109e26020860161082a565b9250604085013567ffffffffffffffff8111156109fe57600080fd5b610a0a87828801610973565b95989497509550505050565b600060208083528351808285015260005b81811015610a4357858101830151858201604001528201610a27565b81811115610a55576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215610a7e57600080fd5b82359150610a8e6020840161082a565b90509250929050565b803560ff8116811461084157600080fd5b803567ffffffffffffffff8116811461084157600080fd5b600080600060608486031215610ad557600080fd5b610ade84610a97565b925060208401359150610af360408501610aa8565b90509250925092565b600080600060408486031215610b1157600080fd5b83359250602084013567ffffffffffffffff811115610b2f57600080fd5b610b3b86828701610973565b9497909650939450505050565b600060c08284031215610b5a57600080fd5b60405160c0810181811067ffffffffffffffff82111715610b7d57610b7d610868565b604052610b8983610a97565b815260208301356020820152610ba160408401610aa8565b60408201526060830135606082015260808301356080820152610bc660a08401610aa8565b60a0820152939250505056fea2646970667358221220abd8e3847c6b96976dd59a0856a0fd519bf19a220731166e121f527ccecf09c064736f6c634300080b00330000000000000000000000002998627933a9d0ddb3069d0523eff128ed4f760c
Deployed Bytecode
0x6080604052600436106100a75760003560e01c80637f79bea8116100645780637f79bea814610256578063b07e54bb14610286578063b8fa3736146102a6578063c261694c146102c6578063c8ba6c8714610315578063e248cff21461035057600080fd5b806307b7ed99146100ac5780630968f264146100ce5780630a6d55d8146100ec578063318c136e1461013f57806340fbb12e146101735780636a70d08114610216575b600080fd5b3480156100b857600080fd5b506100cc6100c7366004610846565b610370565b005b3480156100da57600080fd5b506100cc6100e936600461087e565b50565b3480156100f857600080fd5b5061012261010736600461092f565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561014b57600080fd5b506101227f0000000000000000000000002998627933a9d0ddb3069d0523eff128ed4f760c81565b34801561017f57600080fd5b506101d561018e366004610948565b600460208190526000918252604090912080546001820154600283015460038401549484015460059094015460ff90931694919367ffffffffffffffff9182169390911686565b6040805160ff9097168752602087019590955267ffffffffffffffff93841694860194909452606085019190915260808401521660a082015260c001610136565b34801561022257600080fd5b50610246610231366004610846565b60036020526000908152604090205460ff1681565b6040519015158152602001610136565b34801561026257600080fd5b50610246610271366004610846565b60026020526000908152604090205460ff1681565b6102996102943660046109bc565b610381565b6040516101369190610a16565b3480156102b257600080fd5b506100cc6102c1366004610a6b565b6103c8565b3480156102d257600080fd5b506102e66102e1366004610ac0565b61041d565b604080516001600160a01b039094168452602084019290925267ffffffffffffffff1690820152606001610136565b34801561032157600080fd5b50610342610330366004610846565b60016020526000908152604090205481565b604051908152602001610136565b34801561035c57600080fd5b506100cc61036b366004610afc565b61055d565b610378610724565b6100e98161079e565b606061038b610724565b60405162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5c1c1bdc9d1959609a1b60448201526064015b60405180910390fd5b6103d0610724565b60008281526020818152604080832080546001600160a01b0319166001600160a01b039590951694851790559282526001808252838320949094556002905220805460ff19169091179055565b600082815260208190526040812054819081906001600160a01b03168061047c5760405162461bcd60e51b81526020600482015260136024820152721a5b9d985b1a59081c995cdbdd5c98d9481251606a1b60448201526064016103bf565b60ff878116600887901b68ffffffffffffffff001617600081815260046020818152604092839020835160c081018552815490961686526001810154918601829052600281015467ffffffffffffffff908116948701949094526003810154606087015291820154608086015260059091015490911660a084015290919088146105415760405162461bcd60e51b8152602060048201526016602482015275646966666572656e74207265736f757263652049447360501b60448201526064016103bf565b608081015160a090910151929990985091965090945050505050565b610565610724565b6000838152602081905260409020546001600160a01b0316806105c05760405162461bcd60e51b81526020600482015260136024820152721a5b9d985b1a59081c995cdbdd5c98d9481251606a1b60448201526064016103bf565b6001600160a01b03811660009081526002602052604090205460ff166106285760405162461bcd60e51b815260206004820152601f60248201527f6e6f7420616e20616c6c6f77656420636f6e747261637420616464726573730060448201526064016103bf565b600061063683850185610b48565b9050848160200151146106845760405162461bcd60e51b8152602060048201526016602482015275646966666572656e74207265736f757263652049447360501b60448201526064016103bf565b80516040808301805160ff93841660089190911b68ffffffffffffffff001617600090815260046020818152939091208551815460ff191695169490941784559184015160018401555160028301805467ffffffffffffffff1990811667ffffffffffffffff938416179091556060850151600385015560808501519284019290925560a090930151600590920180549091169190921617905550505050565b336001600160a01b037f0000000000000000000000002998627933a9d0ddb3069d0523eff128ed4f760c161461079c5760405162461bcd60e51b815260206004820152601e60248201527f73656e646572206d7573742062652062726964676520636f6e7472616374000060448201526064016103bf565b565b6001600160a01b03811660009081526002602052604090205460ff166108065760405162461bcd60e51b815260206004820152601c60248201527f6e6f7420616e20616c6c6f77656420746f6b656e20616464726573730000000060448201526064016103bf565b6001600160a01b03166000908152600360205260409020805460ff19166001179055565b80356001600160a01b038116811461084157600080fd5b919050565b60006020828403121561085857600080fd5b6108618261082a565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561089057600080fd5b813567ffffffffffffffff808211156108a857600080fd5b818401915084601f8301126108bc57600080fd5b8135818111156108ce576108ce610868565b604051601f8201601f19908116603f011681019083821181831017156108f6576108f6610868565b8160405282815287602084870101111561090f57600080fd5b826020860160208301376000928101602001929092525095945050505050565b60006020828403121561094157600080fd5b5035919050565b60006020828403121561095a57600080fd5b813568ffffffffffffffffff8116811461086157600080fd5b60008083601f84011261098557600080fd5b50813567ffffffffffffffff81111561099d57600080fd5b6020830191508360208285010111156109b557600080fd5b9250929050565b600080600080606085870312156109d257600080fd5b843593506109e26020860161082a565b9250604085013567ffffffffffffffff8111156109fe57600080fd5b610a0a87828801610973565b95989497509550505050565b600060208083528351808285015260005b81811015610a4357858101830151858201604001528201610a27565b81811115610a55576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215610a7e57600080fd5b82359150610a8e6020840161082a565b90509250929050565b803560ff8116811461084157600080fd5b803567ffffffffffffffff8116811461084157600080fd5b600080600060608486031215610ad557600080fd5b610ade84610a97565b925060208401359150610af360408501610aa8565b90509250925092565b600080600060408486031215610b1157600080fd5b83359250602084013567ffffffffffffffff811115610b2f57600080fd5b610b3b86828701610973565b9497909650939450505050565b600060c08284031215610b5a57600080fd5b60405160c0810181811067ffffffffffffffff82111715610b7d57610b7d610868565b604052610b8983610a97565b815260208301356020820152610ba160408401610aa8565b60408201526060830135606082015260808301356080820152610bc660a08401610aa8565b60a0820152939250505056fea2646970667358221220abd8e3847c6b96976dd59a0856a0fd519bf19a220731166e121f527ccecf09c064736f6c634300080b0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000002998627933a9d0ddb3069d0523eff128ed4f760c
-----Decoded View---------------
Arg [0] : bridgeAddress (address): 0x2998627933A9d0Ddb3069D0523EfF128ED4F760C
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000002998627933a9d0ddb3069d0523eff128ed4f760c
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.