Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 492 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Update Oracle Da... | 24527655 | 14 mins ago | IN | 0 ETH | 0.00010855 | ||||
| Update Oracle Da... | 24526656 | 3 hrs ago | IN | 0 ETH | 0.00001664 | ||||
| Update Oracle Da... | 24525458 | 7 hrs ago | IN | 0 ETH | 0.00001612 | ||||
| Update Oracle Da... | 24524261 | 11 hrs ago | IN | 0 ETH | 0.00001707 | ||||
| Update Oracle Da... | 24523960 | 12 hrs ago | IN | 0 ETH | 0.00001533 | ||||
| Update Oracle Da... | 24523058 | 15 hrs ago | IN | 0 ETH | 0.00001814 | ||||
| Update Oracle Da... | 24522178 | 18 hrs ago | IN | 0 ETH | 0.00001725 | ||||
| Update Oracle Da... | 24520307 | 24 hrs ago | IN | 0 ETH | 0.00002997 | ||||
| Update Oracle Da... | 24518432 | 31 hrs ago | IN | 0 ETH | 0.00001299 | ||||
| Update Oracle Da... | 24504061 | 3 days ago | IN | 0 ETH | 0.0000149 | ||||
| Update Oracle Da... | 24502186 | 3 days ago | IN | 0 ETH | 0.00001517 | ||||
| Update Oracle Da... | 24495352 | 4 days ago | IN | 0 ETH | 0.00001075 | ||||
| Update Oracle Da... | 24493480 | 4 days ago | IN | 0 ETH | 0.00001638 | ||||
| Update Oracle Da... | 24491611 | 5 days ago | IN | 0 ETH | 0.00009508 | ||||
| Update Oracle Da... | 24489738 | 5 days ago | IN | 0 ETH | 0.00002613 | ||||
| Update Oracle Da... | 24482060 | 6 days ago | IN | 0 ETH | 0.00001147 | ||||
| Update Oracle Da... | 24480189 | 6 days ago | IN | 0 ETH | 0.00001112 | ||||
| Update Oracle Da... | 24478319 | 6 days ago | IN | 0 ETH | 0.00004116 | ||||
| Update Oracle Da... | 24476447 | 7 days ago | IN | 0 ETH | 0.00001335 | ||||
| Update Oracle Da... | 24474524 | 7 days ago | IN | 0 ETH | 0.00001114 | ||||
| Update Oracle Da... | 24472650 | 7 days ago | IN | 0 ETH | 0.00000995 | ||||
| Update Oracle Da... | 24470777 | 7 days ago | IN | 0 ETH | 0.00001407 | ||||
| Update Oracle Da... | 24468900 | 8 days ago | IN | 0 ETH | 0.00001194 | ||||
| Update Oracle Da... | 24466969 | 8 days ago | IN | 0 ETH | 0.00001052 | ||||
| Update Oracle Da... | 24465095 | 8 days ago | IN | 0 ETH | 0.00001322 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
TellorDataBank
Compiler Version
v0.8.19+commit.7dd6d404
Optimization Enabled:
Yes with 300 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;
import "usingtellorlayer/contracts/interfaces/ITellorDataBridge.sol";
import {ITellorDataBank} from "./interfaces/ITellorDataBank.sol";
/**
@author Tellor Inc.
@title TellorDataBank
@dev this contract is used to store data for multiple data feeds. It prioritizes consensus data,
and falls back to optimistic data if consensus data is not available. It has hardcoded preferences
for max data age, max attestation age, optimistic delay, and optimistic power threshold.
*/
contract TellorDataBank is ITellorDataBank {
// Storage
ITellorDataBridge public immutable dataBridge; // interface to the Tellor data bridge
mapping(bytes32 => AggregateData[]) public data; // queryId -> aggregate data array
uint256 public constant MAX_DATA_AGE = 24 hours; // the max age of relayed data
uint256 public constant MAX_ATTESTATION_AGE = 10 minutes; // the max age of an attestation
uint256 public constant MS_PER_SECOND = 1000; // the number of milliseconds in a second
uint256 public constant OPTIMISTIC_DELAY = 12 hours; // the min time from report to attestation for nonconsensus data
// Events
event OracleUpdated(bytes32 indexed queryId, OracleAttestationData attestData);
// Functions
/**
* @dev initializes the TellorDataBank with a data bridge
* @param _dataBridge address of the Tellor data bridge contract
*/
constructor(address _dataBridge) {
dataBridge = ITellorDataBridge(_dataBridge);
}
/**
* @dev updates oracle data with new attestation data after verification
* @param _attestData the oracle attestation data to be stored
* @param _currentValidatorSet array of current validators
* @param _sigs array of validator signatures
*/
function updateOracleData(
OracleAttestationData calldata _attestData,
Validator[] calldata _currentValidatorSet,
Signature[] calldata _sigs
) external {
_verifyOracleData(
_attestData,
_currentValidatorSet,
_sigs
);
data[_attestData.queryId].push(AggregateData(
_attestData.report.value,
_attestData.report.aggregatePower,
_attestData.report.timestamp,
_attestData.attestationTimestamp,
block.timestamp
));
emit OracleUpdated(_attestData.queryId, _attestData);
}
// Getter functions
/**
* @dev returns the aggregate data for a given query ID and index
* @param _queryId the query ID to get the aggregate data for
* @param _index the index of the aggregate data to get
* @return _aggregateData the aggregate data
*/
function getAggregateByIndex(bytes32 _queryId, uint256 _index) external view returns (AggregateData memory _aggregateData) {
return data[_queryId][_index];
}
/**
* @dev returns the total number of aggregate values
* @param _queryId the query ID to get the aggregate value count for
* @return number of aggregate values stored
*/
function getAggregateValueCount(bytes32 _queryId) external view returns (uint256) {
return data[_queryId].length;
}
/**
* @dev returns the current aggregate data for a given query ID
* @param _queryId the query ID to get the current aggregate data for
* @return _aggregateData the current aggregate data
*/
function getCurrentAggregateData(bytes32 _queryId) external view returns (AggregateData memory _aggregateData) {
return _getCurrentAggregateData(_queryId);
}
// Internal functions
/**
* @dev internal function to get the current aggregate data for a query ID
* @param _queryId the query ID to get the current aggregate data for
* @return _aggregateData the current aggregate data
*/
function _getCurrentAggregateData(bytes32 _queryId) internal view returns (AggregateData memory _aggregateData) {
if (data[_queryId].length == 0) {
return (AggregateData(bytes(""), 0, 0, 0, 0));
}
_aggregateData = data[_queryId][data[_queryId].length - 1];
return _aggregateData;
}
/**
* @dev internal function to verify oracle data meets all requirements before storage
* @param _attestData the oracle attestation data to verify
* @param _currentValidatorSet array of current validators
* @param _sigs array of validator signatures
*/
function _verifyOracleData(
OracleAttestationData calldata _attestData,
Validator[] calldata _currentValidatorSet,
Signature[] calldata _sigs
) internal view {
// check that the data is not too old
require(block.timestamp - (_attestData.report.timestamp / MS_PER_SECOND) < MAX_DATA_AGE, "TellorDataBank: Data too old");
// check that the attestation is not too old
require(block.timestamp - (_attestData.attestationTimestamp / MS_PER_SECOND) < MAX_ATTESTATION_AGE, "TellorDataBank: Attestation too old");
// check that timestamps are monotonically increasing
AggregateData memory _previousData = _getCurrentAggregateData(_attestData.queryId);
if (_previousData.aggregateTimestamp > 0) {
require(_attestData.report.timestamp > _previousData.aggregateTimestamp, "TellorDataBank: Report timestamp must increase");
}
// check that the current block timestamp is greater than or equal to the report timestamp
require(block.timestamp >= (_attestData.report.timestamp / MS_PER_SECOND), "TellorDataBank: Report timestamp is in the future");
// check if there's a more recent optimistic report available
if (_attestData.report.nextTimestamp != 0) {
require(block.timestamp - (_attestData.report.nextTimestamp / MS_PER_SECOND) < OPTIMISTIC_DELAY, "TellorDataBank: More recent optimistic report available");
}
// handle optimistic vs consensus data verification
if (_attestData.report.timestamp != _attestData.report.lastConsensusTimestamp) {
// using optimistic data - additional checks required
require(_attestData.report.lastConsensusTimestamp < _attestData.report.timestamp, "TellorDataBank: Newer consensus data available");
require((_attestData.attestationTimestamp - _attestData.report.timestamp) / MS_PER_SECOND >= OPTIMISTIC_DELAY, "TellorDataBank: Dispute period not passed");
require(_attestData.report.aggregatePower > dataBridge.powerThreshold() / 2, "TellorDataBank: Insufficient optimistic report power");
}
// verify signatures and data integrity through the data bridge
dataBridge.verifyOracleData(_attestData, _currentValidatorSet, _sigs);
}
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;
/**
* @title ITellorDataBank
* @notice Interface for TellorDataBank contract
*/
interface ITellorDataBank {
struct AggregateData {
bytes value;
uint256 power;
uint256 aggregateTimestamp;
uint256 attestationTimestamp;
uint256 relayTimestamp;
}
/**
* @dev returns the current aggregate data for a given query ID
* @param _queryId the query ID to get the current aggregate data for
* @return _aggregateData the current aggregate data
*/
function getCurrentAggregateData(bytes32 _queryId) external view returns (AggregateData memory _aggregateData);
/**
* @dev returns the aggregate data for a given query ID and index
* @param _queryId the query ID to get the aggregate data for
* @param _index the index of the aggregate data to get
* @return _aggregateData the aggregate data
*/
function getAggregateByIndex(bytes32 _queryId, uint256 _index) external view returns (AggregateData memory _aggregateData);
/**
* @dev returns the total number of aggregate values
* @param _queryId the query ID to get the aggregate value count for
* @return number of aggregate values stored
*/
function getAggregateValueCount(bytes32 _queryId) external view returns (uint256);
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
struct OracleAttestationData {
bytes32 queryId;
ReportData report;
uint256 attestationTimestamp; //timestamp of validatorSignatures on report
}
struct ReportData {
bytes value;
uint256 timestamp; //timestamp of reporter signature aggregation
uint256 aggregatePower;
uint256 previousTimestamp;
uint256 nextTimestamp;
uint256 lastConsensusTimestamp;
}
struct Signature {
uint8 v;
bytes32 r;
bytes32 s;
}
struct Validator {
address addr;
uint256 power;
}
interface ITellorDataBridge {
function guardian() external view returns (address);
function powerThreshold() external view returns (uint256);
function unbondingPeriod() external view returns (uint256);
function validatorTimestamp() external view returns (uint256);
function verifyOracleData(
OracleAttestationData calldata _attestData,
Validator[] calldata _currentValidatorSet,
Signature[] calldata _sigs
) external view;
}{
"optimizer": {
"enabled": true,
"runs": 300
},
"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":"_dataBridge","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"queryId","type":"bytes32"},{"components":[{"internalType":"bytes32","name":"queryId","type":"bytes32"},{"components":[{"internalType":"bytes","name":"value","type":"bytes"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"uint256","name":"aggregatePower","type":"uint256"},{"internalType":"uint256","name":"previousTimestamp","type":"uint256"},{"internalType":"uint256","name":"nextTimestamp","type":"uint256"},{"internalType":"uint256","name":"lastConsensusTimestamp","type":"uint256"}],"internalType":"struct ReportData","name":"report","type":"tuple"},{"internalType":"uint256","name":"attestationTimestamp","type":"uint256"}],"indexed":false,"internalType":"struct OracleAttestationData","name":"attestData","type":"tuple"}],"name":"OracleUpdated","type":"event"},{"inputs":[],"name":"MAX_ATTESTATION_AGE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_DATA_AGE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MS_PER_SECOND","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OPTIMISTIC_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"data","outputs":[{"internalType":"bytes","name":"value","type":"bytes"},{"internalType":"uint256","name":"power","type":"uint256"},{"internalType":"uint256","name":"aggregateTimestamp","type":"uint256"},{"internalType":"uint256","name":"attestationTimestamp","type":"uint256"},{"internalType":"uint256","name":"relayTimestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dataBridge","outputs":[{"internalType":"contract ITellorDataBridge","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"getAggregateByIndex","outputs":[{"components":[{"internalType":"bytes","name":"value","type":"bytes"},{"internalType":"uint256","name":"power","type":"uint256"},{"internalType":"uint256","name":"aggregateTimestamp","type":"uint256"},{"internalType":"uint256","name":"attestationTimestamp","type":"uint256"},{"internalType":"uint256","name":"relayTimestamp","type":"uint256"}],"internalType":"struct ITellorDataBank.AggregateData","name":"_aggregateData","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"}],"name":"getAggregateValueCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"}],"name":"getCurrentAggregateData","outputs":[{"components":[{"internalType":"bytes","name":"value","type":"bytes"},{"internalType":"uint256","name":"power","type":"uint256"},{"internalType":"uint256","name":"aggregateTimestamp","type":"uint256"},{"internalType":"uint256","name":"attestationTimestamp","type":"uint256"},{"internalType":"uint256","name":"relayTimestamp","type":"uint256"}],"internalType":"struct ITellorDataBank.AggregateData","name":"_aggregateData","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"queryId","type":"bytes32"},{"components":[{"internalType":"bytes","name":"value","type":"bytes"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"uint256","name":"aggregatePower","type":"uint256"},{"internalType":"uint256","name":"previousTimestamp","type":"uint256"},{"internalType":"uint256","name":"nextTimestamp","type":"uint256"},{"internalType":"uint256","name":"lastConsensusTimestamp","type":"uint256"}],"internalType":"struct ReportData","name":"report","type":"tuple"},{"internalType":"uint256","name":"attestationTimestamp","type":"uint256"}],"internalType":"struct OracleAttestationData","name":"_attestData","type":"tuple"},{"components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"power","type":"uint256"}],"internalType":"struct Validator[]","name":"_currentValidatorSet","type":"tuple[]"},{"components":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct Signature[]","name":"_sigs","type":"tuple[]"}],"name":"updateOracleData","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60a060405234801561001057600080fd5b5060405161135a38038061135a83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516112c26100986000396000818160ce0152818161093e0152610a6301526112c26000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638d12c426116100665780638d12c4261461013d578063b9f7bb8d14610161578063cb9567111461016a578063e3ac7e111461017d578063e6314a971461019d57600080fd5b80631a8bcd34146100a35780635321f047146100bf578063578855b2146100c95780636180801014610108578063717681c61461011d575b600080fd5b6100ac6103e881565b6040519081526020015b60405180910390f35b6100ac6201518081565b6100f07f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100b6565b61011b610116366004610ca7565b6101a6565b005b61013061012b366004610d75565b6102f5565b6040516100b69190610ddd565b61015061014b366004610d75565b610423565b6040516100b6959493929190610e2d565b6100ac61025881565b610130610178366004610e64565b6104fe565b6100ac61018b366004610e64565b60009081526020819052604090205490565b6100ac61a8c081565b6101b38585858585610539565b843560009081526020818152604091829020825160a08101909352919081906101de90890189610e7d565b6101e89080610e9d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060209081019061023190890189610e7d565b60400135815260200187806020019061024a9190610e7d565b60209081013582526040808a0135838301524292019190915282546001810184556000938452922081519192600502019081906102879082610f83565b5060208201518160010155604082015181600201556060820151816003015560808201518160040155505084600001357f32569c122e0d7a43079203df1373675696c8ccd8ca67de60dc2238b6bb226214866040516102e69190611134565b60405180910390a25050505050565b6103276040518060a0016040528060608152602001600081526020016000815260200160008152602001600081525090565b60008381526020819052604090208054839081106103475761034761114e565b90600052602060002090600502016040518060a001604052908160008201805461037090610efa565b80601f016020809104026020016040519081016040528092919081815260200182805461039c90610efa565b80156103e95780601f106103be576101008083540402835291602001916103e9565b820191906000526020600020905b8154815290600101906020018083116103cc57829003601f168201915b5050505050815260200160018201548152602001600282015481526020016003820154815260200160048201548152505090505b92915050565b6000602052816000526040600020818154811061043f57600080fd5b90600052602060002090600502016000915091505080600001805461046390610efa565b80601f016020809104026020016040519081016040528092919081815260200182805461048f90610efa565b80156104dc5780601f106104b1576101008083540402835291602001916104dc565b820191906000526020600020905b8154815290600101906020018083116104bf57829003601f168201915b5050505050908060010154908060020154908060030154908060040154905085565b6105306040518060a0016040528060608152602001600081526020016000815260200160008152602001600081525090565b61041d82610ad8565b620151806103e861054d6020880188610e7d565b6020013561055b9190611164565b6105659042611186565b106105b75760405162461bcd60e51b815260206004820152601c60248201527f54656c6c6f724461746142616e6b3a204461746120746f6f206f6c640000000060448201526064015b60405180910390fd5b6102586105ca6103e86040880135611164565b6105d49042611186565b1061062d5760405162461bcd60e51b815260206004820152602360248201527f54656c6c6f724461746142616e6b3a204174746573746174696f6e20746f6f206044820152621bdb1960ea1b60648201526084016105ae565b60006106398635610ad8565b6040810151909150156106c05760408101516106586020880188610e7d565b60200135116106c05760405162461bcd60e51b815260206004820152602e60248201527f54656c6c6f724461746142616e6b3a205265706f72742074696d657374616d7060448201526d206d75737420696e63726561736560901b60648201526084016105ae565b6103e86106d06020880188610e7d565b602001356106de9190611164565b4210156107475760405162461bcd60e51b815260206004820152603160248201527f54656c6c6f724461746142616e6b3a205265706f72742074696d657374616d7060448201527020697320696e207468652066757475726560781b60648201526084016105ae565b6107546020870187610e7d565b60800135156107fb5761a8c06103e86107706020890189610e7d565b6080013561077e9190611164565b6107889042611186565b106107fb5760405162461bcd60e51b815260206004820152603760248201527f54656c6c6f724461746142616e6b3a204d6f726520726563656e74206f70746960448201527f6d6973746963207265706f727420617661696c61626c6500000000000000000060648201526084016105ae565b6108086020870187610e7d565b60a001356108196020880188610e7d565b6020013514610a4c5761082f6020870187610e7d565b602001358680602001906108439190610e7d565b60a00135106108ab5760405162461bcd60e51b815260206004820152602e60248201527f54656c6c6f724461746142616e6b3a204e6577657220636f6e73656e7375732060448201526d6461746120617661696c61626c6560901b60648201526084016105ae565b61a8c06103e86108be6020890189610e7d565b6108d0906020013560408a0135611186565b6108da9190611164565b101561093a5760405162461bcd60e51b815260206004820152602960248201527f54656c6c6f724461746142616e6b3a204469737075746520706572696f64206e6044820152681bdd081c185cdcd95960ba1b60648201526084016105ae565b60027f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ba95ec276040518163ffffffff1660e01b8152600401602060405180830381865afa15801561099a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109be91906111a7565b6109c89190611164565b6109d56020880188610e7d565b6040013511610a4c5760405162461bcd60e51b815260206004820152603460248201527f54656c6c6f724461746142616e6b3a20496e73756666696369656e74206f707460448201527f696d6973746963207265706f727420706f77657200000000000000000000000060648201526084016105ae565b604051635e0d3b0f60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635e0d3b0f90610aa090899089908990899089906004016111c0565b60006040518083038186803b158015610ab857600080fd5b505afa158015610acc573d6000803e3d6000fd5b50505050505050505050565b610b0a6040518060a0016040528060608152602001600081526020016000815260200160008152602001600081525090565b6000828152602081905260408120549003610b555750506040805160c081018252600060a0820181815282526020820181905291810182905260608101829052608081019190915290565b60008281526020819052604090208054610b7190600190611186565b81548110610b8157610b8161114e565b90600052602060002090600502016040518060a0016040529081600082018054610baa90610efa565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd690610efa565b8015610c235780601f10610bf857610100808354040283529160200191610c23565b820191906000526020600020905b815481529060010190602001808311610c0657829003601f168201915b505050505081526020016001820154815260200160028201548152602001600382015481526020016004820154815250509050919050565b60008083601f840112610c6d57600080fd5b50813567ffffffffffffffff811115610c8557600080fd5b602083019150836020606083028501011115610ca057600080fd5b9250929050565b600080600080600060608688031215610cbf57600080fd5b853567ffffffffffffffff80821115610cd757600080fd5b908701906060828a031215610ceb57600080fd5b90955060208701359080821115610d0157600080fd5b818801915088601f830112610d1557600080fd5b813581811115610d2457600080fd5b8960208260061b8501011115610d3957600080fd5b602083019650809550506040880135915080821115610d5757600080fd5b50610d6488828901610c5b565b969995985093965092949392505050565b60008060408385031215610d8857600080fd5b50508035926020909101359150565b6000815180845260005b81811015610dbd57602081850181015186830182015201610da1565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000825160a06020840152610df960c0840182610d97565b9050602084015160408401526040840151606084015260608401516080840152608084015160a08401528091505092915050565b60a081526000610e4060a0830188610d97565b90508560208301528460408301528360608301528260808301529695505050505050565b600060208284031215610e7657600080fd5b5035919050565b6000823560be19833603018112610e9357600080fd5b9190910192915050565b6000808335601e19843603018112610eb457600080fd5b83018035915067ffffffffffffffff821115610ecf57600080fd5b602001915036819003821315610ca057600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c90821680610f0e57607f821691505b602082108103610f2e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610f7e57600081815260208120601f850160051c81016020861015610f5b5750805b601f850160051c820191505b81811015610f7a57828155600101610f67565b5050505b505050565b815167ffffffffffffffff811115610f9d57610f9d610ee4565b610fb181610fab8454610efa565b84610f34565b602080601f831160018114610fe65760008415610fce5750858301515b600019600386901b1c1916600185901b178555610f7a565b600085815260208120601f198616915b8281101561101557888601518255948401946001909101908401610ff6565b50858210156110335787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b803582526000602082013560be1983360301811261108957600080fd5b606060208501528201803536829003601e190181126110a757600080fd5b810160208101903567ffffffffffffffff8111156110c457600080fd5b8036038213156110d357600080fd5b60c060608701526110e961012087018284611043565b91505060208201356080860152604082013560a0860152606082013560c0860152608082013560e086015260a082013561010086015260408401356040860152809250505092915050565b602081526000611147602083018461106c565b9392505050565b634e487b7160e01b600052603260045260246000fd5b60008261118157634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561041d57634e487b7160e01b600052601160045260246000fd5b6000602082840312156111b957600080fd5b5051919050565b600060608083526111d38184018961106c565b8381036020858101919091528782528891810160005b898110156112265783356001600160a01b03811680821461120957600080fd5b8352508383013583830152604093840193909101906001016111e9565b5085810360408781019190915287825292508790820160005b8881101561127c57823560ff811680821461125957600080fd5b83525082840135848301528483013585830152918501919085019060010161123f565b509b9a505050505050505050505056fea2646970667358221220dfb70f848813444581e6188aae78335d04e4887e2d79be3b0ba7bbed891b496a64736f6c63430008130033000000000000000000000000ffa3393be1e4b442fff6cd0df0794b0031e9cf65
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061009e5760003560e01c80638d12c426116100665780638d12c4261461013d578063b9f7bb8d14610161578063cb9567111461016a578063e3ac7e111461017d578063e6314a971461019d57600080fd5b80631a8bcd34146100a35780635321f047146100bf578063578855b2146100c95780636180801014610108578063717681c61461011d575b600080fd5b6100ac6103e881565b6040519081526020015b60405180910390f35b6100ac6201518081565b6100f07f000000000000000000000000ffa3393be1e4b442fff6cd0df0794b0031e9cf6581565b6040516001600160a01b0390911681526020016100b6565b61011b610116366004610ca7565b6101a6565b005b61013061012b366004610d75565b6102f5565b6040516100b69190610ddd565b61015061014b366004610d75565b610423565b6040516100b6959493929190610e2d565b6100ac61025881565b610130610178366004610e64565b6104fe565b6100ac61018b366004610e64565b60009081526020819052604090205490565b6100ac61a8c081565b6101b38585858585610539565b843560009081526020818152604091829020825160a08101909352919081906101de90890189610e7d565b6101e89080610e9d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060209081019061023190890189610e7d565b60400135815260200187806020019061024a9190610e7d565b60209081013582526040808a0135838301524292019190915282546001810184556000938452922081519192600502019081906102879082610f83565b5060208201518160010155604082015181600201556060820151816003015560808201518160040155505084600001357f32569c122e0d7a43079203df1373675696c8ccd8ca67de60dc2238b6bb226214866040516102e69190611134565b60405180910390a25050505050565b6103276040518060a0016040528060608152602001600081526020016000815260200160008152602001600081525090565b60008381526020819052604090208054839081106103475761034761114e565b90600052602060002090600502016040518060a001604052908160008201805461037090610efa565b80601f016020809104026020016040519081016040528092919081815260200182805461039c90610efa565b80156103e95780601f106103be576101008083540402835291602001916103e9565b820191906000526020600020905b8154815290600101906020018083116103cc57829003601f168201915b5050505050815260200160018201548152602001600282015481526020016003820154815260200160048201548152505090505b92915050565b6000602052816000526040600020818154811061043f57600080fd5b90600052602060002090600502016000915091505080600001805461046390610efa565b80601f016020809104026020016040519081016040528092919081815260200182805461048f90610efa565b80156104dc5780601f106104b1576101008083540402835291602001916104dc565b820191906000526020600020905b8154815290600101906020018083116104bf57829003601f168201915b5050505050908060010154908060020154908060030154908060040154905085565b6105306040518060a0016040528060608152602001600081526020016000815260200160008152602001600081525090565b61041d82610ad8565b620151806103e861054d6020880188610e7d565b6020013561055b9190611164565b6105659042611186565b106105b75760405162461bcd60e51b815260206004820152601c60248201527f54656c6c6f724461746142616e6b3a204461746120746f6f206f6c640000000060448201526064015b60405180910390fd5b6102586105ca6103e86040880135611164565b6105d49042611186565b1061062d5760405162461bcd60e51b815260206004820152602360248201527f54656c6c6f724461746142616e6b3a204174746573746174696f6e20746f6f206044820152621bdb1960ea1b60648201526084016105ae565b60006106398635610ad8565b6040810151909150156106c05760408101516106586020880188610e7d565b60200135116106c05760405162461bcd60e51b815260206004820152602e60248201527f54656c6c6f724461746142616e6b3a205265706f72742074696d657374616d7060448201526d206d75737420696e63726561736560901b60648201526084016105ae565b6103e86106d06020880188610e7d565b602001356106de9190611164565b4210156107475760405162461bcd60e51b815260206004820152603160248201527f54656c6c6f724461746142616e6b3a205265706f72742074696d657374616d7060448201527020697320696e207468652066757475726560781b60648201526084016105ae565b6107546020870187610e7d565b60800135156107fb5761a8c06103e86107706020890189610e7d565b6080013561077e9190611164565b6107889042611186565b106107fb5760405162461bcd60e51b815260206004820152603760248201527f54656c6c6f724461746142616e6b3a204d6f726520726563656e74206f70746960448201527f6d6973746963207265706f727420617661696c61626c6500000000000000000060648201526084016105ae565b6108086020870187610e7d565b60a001356108196020880188610e7d565b6020013514610a4c5761082f6020870187610e7d565b602001358680602001906108439190610e7d565b60a00135106108ab5760405162461bcd60e51b815260206004820152602e60248201527f54656c6c6f724461746142616e6b3a204e6577657220636f6e73656e7375732060448201526d6461746120617661696c61626c6560901b60648201526084016105ae565b61a8c06103e86108be6020890189610e7d565b6108d0906020013560408a0135611186565b6108da9190611164565b101561093a5760405162461bcd60e51b815260206004820152602960248201527f54656c6c6f724461746142616e6b3a204469737075746520706572696f64206e6044820152681bdd081c185cdcd95960ba1b60648201526084016105ae565b60027f000000000000000000000000ffa3393be1e4b442fff6cd0df0794b0031e9cf656001600160a01b031663ba95ec276040518163ffffffff1660e01b8152600401602060405180830381865afa15801561099a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109be91906111a7565b6109c89190611164565b6109d56020880188610e7d565b6040013511610a4c5760405162461bcd60e51b815260206004820152603460248201527f54656c6c6f724461746142616e6b3a20496e73756666696369656e74206f707460448201527f696d6973746963207265706f727420706f77657200000000000000000000000060648201526084016105ae565b604051635e0d3b0f60e01b81526001600160a01b037f000000000000000000000000ffa3393be1e4b442fff6cd0df0794b0031e9cf651690635e0d3b0f90610aa090899089908990899089906004016111c0565b60006040518083038186803b158015610ab857600080fd5b505afa158015610acc573d6000803e3d6000fd5b50505050505050505050565b610b0a6040518060a0016040528060608152602001600081526020016000815260200160008152602001600081525090565b6000828152602081905260408120549003610b555750506040805160c081018252600060a0820181815282526020820181905291810182905260608101829052608081019190915290565b60008281526020819052604090208054610b7190600190611186565b81548110610b8157610b8161114e565b90600052602060002090600502016040518060a0016040529081600082018054610baa90610efa565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd690610efa565b8015610c235780601f10610bf857610100808354040283529160200191610c23565b820191906000526020600020905b815481529060010190602001808311610c0657829003601f168201915b505050505081526020016001820154815260200160028201548152602001600382015481526020016004820154815250509050919050565b60008083601f840112610c6d57600080fd5b50813567ffffffffffffffff811115610c8557600080fd5b602083019150836020606083028501011115610ca057600080fd5b9250929050565b600080600080600060608688031215610cbf57600080fd5b853567ffffffffffffffff80821115610cd757600080fd5b908701906060828a031215610ceb57600080fd5b90955060208701359080821115610d0157600080fd5b818801915088601f830112610d1557600080fd5b813581811115610d2457600080fd5b8960208260061b8501011115610d3957600080fd5b602083019650809550506040880135915080821115610d5757600080fd5b50610d6488828901610c5b565b969995985093965092949392505050565b60008060408385031215610d8857600080fd5b50508035926020909101359150565b6000815180845260005b81811015610dbd57602081850181015186830182015201610da1565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000825160a06020840152610df960c0840182610d97565b9050602084015160408401526040840151606084015260608401516080840152608084015160a08401528091505092915050565b60a081526000610e4060a0830188610d97565b90508560208301528460408301528360608301528260808301529695505050505050565b600060208284031215610e7657600080fd5b5035919050565b6000823560be19833603018112610e9357600080fd5b9190910192915050565b6000808335601e19843603018112610eb457600080fd5b83018035915067ffffffffffffffff821115610ecf57600080fd5b602001915036819003821315610ca057600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c90821680610f0e57607f821691505b602082108103610f2e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610f7e57600081815260208120601f850160051c81016020861015610f5b5750805b601f850160051c820191505b81811015610f7a57828155600101610f67565b5050505b505050565b815167ffffffffffffffff811115610f9d57610f9d610ee4565b610fb181610fab8454610efa565b84610f34565b602080601f831160018114610fe65760008415610fce5750858301515b600019600386901b1c1916600185901b178555610f7a565b600085815260208120601f198616915b8281101561101557888601518255948401946001909101908401610ff6565b50858210156110335787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b803582526000602082013560be1983360301811261108957600080fd5b606060208501528201803536829003601e190181126110a757600080fd5b810160208101903567ffffffffffffffff8111156110c457600080fd5b8036038213156110d357600080fd5b60c060608701526110e961012087018284611043565b91505060208201356080860152604082013560a0860152606082013560c0860152608082013560e086015260a082013561010086015260408401356040860152809250505092915050565b602081526000611147602083018461106c565b9392505050565b634e487b7160e01b600052603260045260246000fd5b60008261118157634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561041d57634e487b7160e01b600052601160045260246000fd5b6000602082840312156111b957600080fd5b5051919050565b600060608083526111d38184018961106c565b8381036020858101919091528782528891810160005b898110156112265783356001600160a01b03811680821461120957600080fd5b8352508383013583830152604093840193909101906001016111e9565b5085810360408781019190915287825292508790820160005b8881101561127c57823560ff811680821461125957600080fd5b83525082840135848301528483013585830152918501919085019060010161123f565b509b9a505050505050505050505056fea2646970667358221220dfb70f848813444581e6188aae78335d04e4887e2d79be3b0ba7bbed891b496a64736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000ffa3393be1e4b442fff6cd0df0794b0031e9cf65
-----Decoded View---------------
Arg [0] : _dataBridge (address): 0xFfa3393BE1E4b442fff6cD0df0794B0031e9CF65
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000ffa3393be1e4b442fff6cd0df0794b0031e9cf65
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.