Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
DIAStroomAdapter
Compiler Version
v0.8.29+commit.ab55807c
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0
pragma solidity 0.8.29;
import "@openzeppelin/contracts/access/Ownable.sol";
import { IERC20Metadata } from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
import "./IDIAOracleV2.sol";
contract DIAStroomAdapter is Ownable(msg.sender) {
// Assumption: DECIMALS is the number of decimals used by the oracle feeder at diaOracleAddress
address[] public reserveWalletRegistry;
mapping (address => address) public reserveWalletAsset;
uint256 public DECIMALS = 18;
address public diaOracleAddress;
string public diaOracleQueryString;
constructor(address _diaOracleAddress, string memory _diaOracleQueryString) {
diaOracleAddress = _diaOracleAddress;
diaOracleQueryString = _diaOracleQueryString;
}
function addReserveWalletToRegistry(address _reserveWallet, address _reserveWalletAsset) external onlyOwner {
reserveWalletRegistry.push(_reserveWallet);
reserveWalletAsset[_reserveWallet] = _reserveWalletAsset;
}
function removeReserveWalletFromRegistry(address _reserveWallet) external onlyOwner {
for (uint i = 0; i < reserveWalletRegistry.length; i++) {
if (reserveWalletRegistry[i] == _reserveWallet) {
reserveWalletRegistry[i] = reserveWalletRegistry[reserveWalletRegistry.length - 1];
reserveWalletRegistry.pop();
}
}
delete reserveWalletAsset[_reserveWallet];
}
function updateContractDecimals(uint256 _decimals) external onlyOwner {
DECIMALS = _decimals;
}
function updateDiaOracleAddress(address _diaOracleAddress) external onlyOwner {
diaOracleAddress = _diaOracleAddress;
}
function getOnchainReserve() public view returns (uint256) {
uint256 balanceAccumulator = 0;
for(uint i = 0; i < reserveWalletRegistry.length; i++) {
address currWallet = reserveWalletRegistry[i];
address currAsset = reserveWalletAsset[currWallet];
// Retrieve asset decimals and balanceOf
uint8 currAssetDecimals = IERC20Metadata(currAsset).decimals();
uint256 currAssetBalance = IERC20Metadata(currAsset).balanceOf(currWallet);
// Perform decimal scaling
if (currAssetDecimals < DECIMALS) {
uint256 currDecimalDelta = DECIMALS - currAssetDecimals;
currAssetBalance = currAssetBalance * (10 ** currDecimalDelta);
} else if (currAssetDecimals > DECIMALS) {
uint256 currDecimalDelta = currAssetDecimals - DECIMALS;
currAssetBalance = currAssetBalance / (10 ** currDecimalDelta);
}
balanceAccumulator += currAssetBalance;
}
return balanceAccumulator;
}
function getOffchainReserve() public view returns (uint256) {
IDIAOracleV2 oracleInstance = IDIAOracleV2(diaOracleAddress);
// Retrieve asset from oracle
(uint128 offchainReserveValue,) = oracleInstance.getValue(diaOracleQueryString);
return offchainReserveValue;
}
function getCombinedReserveValue() public view returns (uint256) {
return getOnchainReserve() + getOffchainReserve();
}
}// SPDX-License-Identifier: GPL-3.0
pragma solidity 0.8.29;
interface IDIAOracleV2 {
function setValue(
string memory key,
uint128 value,
uint128 timestamp
) external;
function getValue(
string memory key
) external view returns (uint128, uint128);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/extensions/IERC20Metadata.sol)
pragma solidity >=0.6.2;
import {IERC20} from "../IERC20.sol";
/**
* @dev Interface for the optional metadata functions from the ERC-20 standard.
*/
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
pragma solidity ^0.8.20;
import {Context} from "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* The initial owner is set to the address provided by the deployer. This can
* later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
/**
* @dev The caller account is not authorized to perform an operation.
*/
error OwnableUnauthorizedAccount(address account);
/**
* @dev The owner is not a valid owner account. (eg. `address(0)`)
*/
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the address provided by the deployer as the initial owner.
*/
constructor(address initialOwner) {
if (initialOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(initialOwner);
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
if (owner() != _msgSender()) {
revert OwnableUnauthorizedAccount(_msgSender());
}
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
if (newOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/IERC20.sol)
pragma solidity >=0.4.16;
/**
* @dev Interface of the ERC-20 standard as defined in the ERC.
*/
interface IERC20 {
/**
* @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);
/**
* @dev Returns the value of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the value of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves a `value` amount of tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 value) 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 a `value` amount of tokens as the allowance of `spender` over the
* caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: 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 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the
* allowance mechanism. `value` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 value) external returns (bool);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)
pragma solidity ^0.8.20;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}{
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"remappings": []
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_diaOracleAddress","type":"address"},{"internalType":"string","name":"_diaOracleQueryString","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"DECIMALS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_reserveWallet","type":"address"},{"internalType":"address","name":"_reserveWalletAsset","type":"address"}],"name":"addReserveWalletToRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"diaOracleAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"diaOracleQueryString","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCombinedReserveValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOffchainReserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOnchainReserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_reserveWallet","type":"address"}],"name":"removeReserveWalletFromRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"reserveWalletAsset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"reserveWalletRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_decimals","type":"uint256"}],"name":"updateContractDecimals","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_diaOracleAddress","type":"address"}],"name":"updateDiaOracleAddress","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60806040526012600355348015610014575f5ffd5b50604051611a8c380380611a8c83398181016040528101906100369190610376565b335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100a7575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161009e91906103df565b60405180910390fd5b6100b68161010e60201b60201c565b508160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600590816101069190610608565b5050506106d7565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610209826101e0565b9050919050565b610219816101ff565b8114610223575f5ffd5b50565b5f8151905061023481610210565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61028882610242565b810181811067ffffffffffffffff821117156102a7576102a6610252565b5b80604052505050565b5f6102b96101cf565b90506102c5828261027f565b919050565b5f67ffffffffffffffff8211156102e4576102e3610252565b5b6102ed82610242565b9050602081019050919050565b8281835e5f83830152505050565b5f61031a610315846102ca565b6102b0565b9050828152602081018484840111156103365761033561023e565b5b6103418482856102fa565b509392505050565b5f82601f83011261035d5761035c61023a565b5b815161036d848260208601610308565b91505092915050565b5f5f6040838503121561038c5761038b6101d8565b5b5f61039985828601610226565b925050602083015167ffffffffffffffff8111156103ba576103b96101dc565b5b6103c685828601610349565b9150509250929050565b6103d9816101ff565b82525050565b5f6020820190506103f25f8301846103d0565b92915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061044657607f821691505b60208210810361045957610458610402565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026104bb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610480565b6104c58683610480565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6105096105046104ff846104dd565b6104e6565b6104dd565b9050919050565b5f819050919050565b610522836104ef565b61053661052e82610510565b84845461048c565b825550505050565b5f5f905090565b61054d61053e565b610558818484610519565b505050565b5b8181101561057b576105705f82610545565b60018101905061055e565b5050565b601f8211156105c0576105918161045f565b61059a84610471565b810160208510156105a9578190505b6105bd6105b585610471565b83018261055d565b50505b505050565b5f82821c905092915050565b5f6105e05f19846008026105c5565b1980831691505092915050565b5f6105f883836105d1565b9150826002028217905092915050565b610611826103f8565b67ffffffffffffffff81111561062a57610629610252565b5b610634825461042f565b61063f82828561057f565b5f60209050601f831160018114610670575f841561065e578287015190505b61066885826105ed565b8655506106cf565b601f19841661067e8661045f565b5f5b828110156106a557848901518255600182019150602085019450602081019050610680565b868310156106c257848901516106be601f8916826105d1565b8355505b6001600288020188555050505b505050505050565b6113a8806106e45f395ff3fe608060405234801561000f575f5ffd5b50600436106100f3575f3560e01c80637d07db3c11610095578063b0b96a3d11610064578063b0b96a3d1461024f578063ca9b2ca51461026b578063f2fde38b14610287578063f9eb3d84146102a3576100f3565b80637d07db3c146101d75780638aba202c146101f55780638da5cb5b146102135780639cac783814610231576100f3565b80632e0f2625116100d15780632e0f2625146101755780634e151f8214610193578063715018a6146101af57806372a9f148146101b9576100f3565b8063021d0406146100f75780631f4af36a1461011557806322e6db9e14610145575b5f5ffd5b6100ff6102bf565b60405161010c9190610c4e565b60405180910390f35b61012f600480360381019061012a9190610c95565b610506565b60405161013c9190610cff565b60405180910390f35b61015f600480360381019061015a9190610d42565b610541565b60405161016c9190610cff565b60405180910390f35b61017d610571565b60405161018a9190610c4e565b60405180910390f35b6101ad60048036038101906101a89190610d6d565b610577565b005b6101b761065e565b005b6101c1610671565b6040516101ce9190610c4e565b60405180910390f35b6101df61072d565b6040516101ec9190610cff565b60405180910390f35b6101fd610752565b60405161020a9190610e1b565b60405180910390f35b61021b6107de565b6040516102289190610cff565b60405180910390f35b610239610805565b6040516102469190610c4e565b60405180910390f35b61026960048036038101906102649190610d42565b610825565b005b61028560048036038101906102809190610c95565b610870565b005b6102a1600480360381019061029c9190610d42565b610882565b005b6102bd60048036038101906102b89190610d42565b610906565b005b5f5f5f90505f5f90505b6001805490508110156104fe575f600182815481106102eb576102ea610e3b565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f8173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103bf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103e39190610e9e565b90505f8273ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b815260040161041f9190610cff565b602060405180830381865afa15801561043a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045e9190610edd565b90506003548260ff1610156104a1575f8260ff1660035461047f9190610f35565b905080600a61048e9190611097565b8261049991906110e1565b9150506104df565b6003548260ff1611156104de575f6003548360ff166104c09190610f35565b905080600a6104cf9190611097565b826104da919061114f565b9150505b5b80866104eb919061117f565b95505050505080806001019150506102c9565b508091505090565b60018181548110610515575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b61057f610ae7565b600182908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b610666610ae7565b61066f5f610b6e565b565b5f5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f8173ffffffffffffffffffffffffffffffffffffffff1663960384a060056040518263ffffffff1660e01b81526004016106d291906112a2565b6040805180830381865afa1580156106ec573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107109190611307565b509050806fffffffffffffffffffffffffffffffff169250505090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6005805461075f906111df565b80601f016020809104026020016040519081016040528092919081815260200182805461078b906111df565b80156107d65780601f106107ad576101008083540402835291602001916107d6565b820191905f5260205f20905b8154815290600101906020018083116107b957829003601f168201915b505050505081565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f61080e610671565b6108166102bf565b610820919061117f565b905090565b61082d610ae7565b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610878610ae7565b8060038190555050565b61088a610ae7565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036108fa575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016108f19190610cff565b60405180910390fd5b61090381610b6e565b50565b61090e610ae7565b5f5f90505b600180549050811015610a84578173ffffffffffffffffffffffffffffffffffffffff166001828154811061094b5761094a610e3b565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610a775760018080805490506109a09190610f35565b815481106109b1576109b0610e3b565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600182815481106109ed576109ec610e3b565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001805480610a4457610a43611345565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555b8080600101915050610913565b5060025f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550565b610aef610c2f565b73ffffffffffffffffffffffffffffffffffffffff16610b0d6107de565b73ffffffffffffffffffffffffffffffffffffffff1614610b6c57610b30610c2f565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610b639190610cff565b60405180910390fd5b565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f819050919050565b610c4881610c36565b82525050565b5f602082019050610c615f830184610c3f565b92915050565b5f5ffd5b610c7481610c36565b8114610c7e575f5ffd5b50565b5f81359050610c8f81610c6b565b92915050565b5f60208284031215610caa57610ca9610c67565b5b5f610cb784828501610c81565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610ce982610cc0565b9050919050565b610cf981610cdf565b82525050565b5f602082019050610d125f830184610cf0565b92915050565b610d2181610cdf565b8114610d2b575f5ffd5b50565b5f81359050610d3c81610d18565b92915050565b5f60208284031215610d5757610d56610c67565b5b5f610d6484828501610d2e565b91505092915050565b5f5f60408385031215610d8357610d82610c67565b5b5f610d9085828601610d2e565b9250506020610da185828601610d2e565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610ded82610dab565b610df78185610db5565b9350610e07818560208601610dc5565b610e1081610dd3565b840191505092915050565b5f6020820190508181035f830152610e338184610de3565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60ff82169050919050565b610e7d81610e68565b8114610e87575f5ffd5b50565b5f81519050610e9881610e74565b92915050565b5f60208284031215610eb357610eb2610c67565b5b5f610ec084828501610e8a565b91505092915050565b5f81519050610ed781610c6b565b92915050565b5f60208284031215610ef257610ef1610c67565b5b5f610eff84828501610ec9565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610f3f82610c36565b9150610f4a83610c36565b9250828203905081811115610f6257610f61610f08565b5b92915050565b5f8160011c9050919050565b5f5f8291508390505b6001851115610fbd57808604811115610f9957610f98610f08565b5b6001851615610fa85780820291505b8081029050610fb685610f68565b9450610f7d565b94509492505050565b5f82610fd55760019050611090565b81610fe2575f9050611090565b8160018114610ff8576002811461100257611031565b6001915050611090565b60ff84111561101457611013610f08565b5b8360020a91508482111561102b5761102a610f08565b5b50611090565b5060208310610133831016604e8410600b84101617156110665782820a90508381111561106157611060610f08565b5b611090565b6110738484846001610f74565b9250905081840481111561108a57611089610f08565b5b81810290505b9392505050565b5f6110a182610c36565b91506110ac83610c36565b92506110d97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610fc6565b905092915050565b5f6110eb82610c36565b91506110f683610c36565b925082820261110481610c36565b9150828204841483151761111b5761111a610f08565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61115982610c36565b915061116483610c36565b92508261117457611173611122565b5b828204905092915050565b5f61118982610c36565b915061119483610c36565b92508282019050808211156111ac576111ab610f08565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806111f657607f821691505b602082108103611209576112086111b2565b5b50919050565b5f819050815f5260205f209050919050565b5f815461122d816111df565b6112378186610db5565b9450600182165f8114611251576001811461126757611299565b60ff198316865281151560200286019350611299565b6112708561120f565b5f5b8381101561129157815481890152600182019150602081019050611272565b808801955050505b50505092915050565b5f6020820190508181035f8301526112ba8184611221565b905092915050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b6112e6816112c2565b81146112f0575f5ffd5b50565b5f81519050611301816112dd565b92915050565b5f5f6040838503121561131d5761131c610c67565b5b5f61132a858286016112f3565b925050602061133b858286016112f3565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea2646970667358221220cbd7298f58ca2f948490df54e013313eb9ed0ab2f6561f0ad5125d557e307d3764736f6c634300081d0033000000000000000000000000fe0593fa61c7cf3d2cd17b8b53ef844a33b0463d0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000f5354524f4f4d2d52657365727665730000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561000f575f5ffd5b50600436106100f3575f3560e01c80637d07db3c11610095578063b0b96a3d11610064578063b0b96a3d1461024f578063ca9b2ca51461026b578063f2fde38b14610287578063f9eb3d84146102a3576100f3565b80637d07db3c146101d75780638aba202c146101f55780638da5cb5b146102135780639cac783814610231576100f3565b80632e0f2625116100d15780632e0f2625146101755780634e151f8214610193578063715018a6146101af57806372a9f148146101b9576100f3565b8063021d0406146100f75780631f4af36a1461011557806322e6db9e14610145575b5f5ffd5b6100ff6102bf565b60405161010c9190610c4e565b60405180910390f35b61012f600480360381019061012a9190610c95565b610506565b60405161013c9190610cff565b60405180910390f35b61015f600480360381019061015a9190610d42565b610541565b60405161016c9190610cff565b60405180910390f35b61017d610571565b60405161018a9190610c4e565b60405180910390f35b6101ad60048036038101906101a89190610d6d565b610577565b005b6101b761065e565b005b6101c1610671565b6040516101ce9190610c4e565b60405180910390f35b6101df61072d565b6040516101ec9190610cff565b60405180910390f35b6101fd610752565b60405161020a9190610e1b565b60405180910390f35b61021b6107de565b6040516102289190610cff565b60405180910390f35b610239610805565b6040516102469190610c4e565b60405180910390f35b61026960048036038101906102649190610d42565b610825565b005b61028560048036038101906102809190610c95565b610870565b005b6102a1600480360381019061029c9190610d42565b610882565b005b6102bd60048036038101906102b89190610d42565b610906565b005b5f5f5f90505f5f90505b6001805490508110156104fe575f600182815481106102eb576102ea610e3b565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f8173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103bf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103e39190610e9e565b90505f8273ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b815260040161041f9190610cff565b602060405180830381865afa15801561043a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045e9190610edd565b90506003548260ff1610156104a1575f8260ff1660035461047f9190610f35565b905080600a61048e9190611097565b8261049991906110e1565b9150506104df565b6003548260ff1611156104de575f6003548360ff166104c09190610f35565b905080600a6104cf9190611097565b826104da919061114f565b9150505b5b80866104eb919061117f565b95505050505080806001019150506102c9565b508091505090565b60018181548110610515575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b61057f610ae7565b600182908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b610666610ae7565b61066f5f610b6e565b565b5f5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f8173ffffffffffffffffffffffffffffffffffffffff1663960384a060056040518263ffffffff1660e01b81526004016106d291906112a2565b6040805180830381865afa1580156106ec573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107109190611307565b509050806fffffffffffffffffffffffffffffffff169250505090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6005805461075f906111df565b80601f016020809104026020016040519081016040528092919081815260200182805461078b906111df565b80156107d65780601f106107ad576101008083540402835291602001916107d6565b820191905f5260205f20905b8154815290600101906020018083116107b957829003601f168201915b505050505081565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f61080e610671565b6108166102bf565b610820919061117f565b905090565b61082d610ae7565b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610878610ae7565b8060038190555050565b61088a610ae7565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036108fa575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016108f19190610cff565b60405180910390fd5b61090381610b6e565b50565b61090e610ae7565b5f5f90505b600180549050811015610a84578173ffffffffffffffffffffffffffffffffffffffff166001828154811061094b5761094a610e3b565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610a775760018080805490506109a09190610f35565b815481106109b1576109b0610e3b565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600182815481106109ed576109ec610e3b565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001805480610a4457610a43611345565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555b8080600101915050610913565b5060025f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550565b610aef610c2f565b73ffffffffffffffffffffffffffffffffffffffff16610b0d6107de565b73ffffffffffffffffffffffffffffffffffffffff1614610b6c57610b30610c2f565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610b639190610cff565b60405180910390fd5b565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f819050919050565b610c4881610c36565b82525050565b5f602082019050610c615f830184610c3f565b92915050565b5f5ffd5b610c7481610c36565b8114610c7e575f5ffd5b50565b5f81359050610c8f81610c6b565b92915050565b5f60208284031215610caa57610ca9610c67565b5b5f610cb784828501610c81565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610ce982610cc0565b9050919050565b610cf981610cdf565b82525050565b5f602082019050610d125f830184610cf0565b92915050565b610d2181610cdf565b8114610d2b575f5ffd5b50565b5f81359050610d3c81610d18565b92915050565b5f60208284031215610d5757610d56610c67565b5b5f610d6484828501610d2e565b91505092915050565b5f5f60408385031215610d8357610d82610c67565b5b5f610d9085828601610d2e565b9250506020610da185828601610d2e565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610ded82610dab565b610df78185610db5565b9350610e07818560208601610dc5565b610e1081610dd3565b840191505092915050565b5f6020820190508181035f830152610e338184610de3565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60ff82169050919050565b610e7d81610e68565b8114610e87575f5ffd5b50565b5f81519050610e9881610e74565b92915050565b5f60208284031215610eb357610eb2610c67565b5b5f610ec084828501610e8a565b91505092915050565b5f81519050610ed781610c6b565b92915050565b5f60208284031215610ef257610ef1610c67565b5b5f610eff84828501610ec9565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610f3f82610c36565b9150610f4a83610c36565b9250828203905081811115610f6257610f61610f08565b5b92915050565b5f8160011c9050919050565b5f5f8291508390505b6001851115610fbd57808604811115610f9957610f98610f08565b5b6001851615610fa85780820291505b8081029050610fb685610f68565b9450610f7d565b94509492505050565b5f82610fd55760019050611090565b81610fe2575f9050611090565b8160018114610ff8576002811461100257611031565b6001915050611090565b60ff84111561101457611013610f08565b5b8360020a91508482111561102b5761102a610f08565b5b50611090565b5060208310610133831016604e8410600b84101617156110665782820a90508381111561106157611060610f08565b5b611090565b6110738484846001610f74565b9250905081840481111561108a57611089610f08565b5b81810290505b9392505050565b5f6110a182610c36565b91506110ac83610c36565b92506110d97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610fc6565b905092915050565b5f6110eb82610c36565b91506110f683610c36565b925082820261110481610c36565b9150828204841483151761111b5761111a610f08565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61115982610c36565b915061116483610c36565b92508261117457611173611122565b5b828204905092915050565b5f61118982610c36565b915061119483610c36565b92508282019050808211156111ac576111ab610f08565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806111f657607f821691505b602082108103611209576112086111b2565b5b50919050565b5f819050815f5260205f209050919050565b5f815461122d816111df565b6112378186610db5565b9450600182165f8114611251576001811461126757611299565b60ff198316865281151560200286019350611299565b6112708561120f565b5f5b8381101561129157815481890152600182019150602081019050611272565b808801955050505b50505092915050565b5f6020820190508181035f8301526112ba8184611221565b905092915050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b6112e6816112c2565b81146112f0575f5ffd5b50565b5f81519050611301816112dd565b92915050565b5f5f6040838503121561131d5761131c610c67565b5b5f61132a858286016112f3565b925050602061133b858286016112f3565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea2646970667358221220cbd7298f58ca2f948490df54e013313eb9ed0ab2f6561f0ad5125d557e307d3764736f6c634300081d0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000fe0593fa61c7cf3d2cd17b8b53ef844a33b0463d0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000f5354524f4f4d2d52657365727665730000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _diaOracleAddress (address): 0xFe0593fA61c7Cf3D2CD17b8B53Ef844A33b0463d
Arg [1] : _diaOracleQueryString (string): STROOM-Reserves
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000fe0593fa61c7cf3d2cd17b8b53ef844a33b0463d
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [2] : 000000000000000000000000000000000000000000000000000000000000000f
Arg [3] : 5354524f4f4d2d52657365727665730000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 35 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.