Source Code
Overview
ETH Balance
0 ETH
ETH Value
$0.00| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
Latest 1 internal transaction
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 9148325 | 142 days ago | Contract Creation | 0 ETH |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
GenericRateProviderWithDecimalScaling
Compiler Version
v0.8.21+commit.d9974bed
Optimization Enabled:
Yes with 200 runs
Other Settings:
london EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: SEL-1.0
// Copyright © 2025 Veda Tech Labs
// Derived from Boring Vault Software © 2025 Veda Tech Labs (TEST ONLY – NO COMMERCIAL USE)
// Licensed under Software Evaluation License, Version 1.0
pragma solidity 0.8.21;
import {GenericRateProvider} from "src/helper/GenericRateProvider.sol";
contract GenericRateProviderWithDecimalScaling is GenericRateProvider {
//============================== STRUCTS ===============================
struct ConstructorArgs {
address target;
bytes4 selector;
bytes32 staticArgument0;
bytes32 staticArgument1;
bytes32 staticArgument2;
bytes32 staticArgument3;
bytes32 staticArgument4;
bytes32 staticArgument5;
bytes32 staticArgument6;
bytes32 staticArgument7;
bool signed;
uint8 inputDecimals;
uint8 outputDecimals;
}
//============================== ERRORS ===============================
error GenericRateProviderWithDecimalScaling__DecimalsCannotBeZero();
//============================== IMMUTABLES ===============================
uint8 public immutable inputDecimals;
uint8 public immutable outputDecimals;
constructor(
ConstructorArgs memory _args
) GenericRateProvider(
_args.target,
_args.selector,
_args.staticArgument0,
_args.staticArgument1,
_args.staticArgument2,
_args.staticArgument3,
_args.staticArgument4,
_args.staticArgument5,
_args.staticArgument6,
_args.staticArgument7,
_args.signed
) {
if (_args.inputDecimals == 0 || _args.outputDecimals == 0) {
revert GenericRateProviderWithDecimalScaling__DecimalsCannotBeZero();
}
inputDecimals = _args.inputDecimals;
outputDecimals = _args.outputDecimals;
}
function getRate() public override view returns (uint256) {
uint256 rate = super.getRate();
if (inputDecimals > outputDecimals) {
return rate / 10 ** (inputDecimals - outputDecimals);
} else if (inputDecimals < outputDecimals) {
return rate * 10 ** (outputDecimals - inputDecimals);
} else {
return rate;
}
}
}// SPDX-License-Identifier: SEL-1.0
// Copyright © 2025 Veda Tech Labs
// Derived from Boring Vault Software © 2025 Veda Tech Labs (TEST ONLY – NO COMMERCIAL USE)
// Licensed under Software Evaluation License, Version 1.0
pragma solidity 0.8.21;
import {IRateProvider} from "src/interfaces/IRateProvider.sol";
import {Address} from "@openzeppelin/contracts/utils/Address.sol";
contract GenericRateProvider is IRateProvider {
using Address for address;
//============================== ERRORS ===============================
error GenericRateProvider__PriceCannotBeLtZero();
//============================== IMMUTABLES ===============================
/**
* @notice The address to make rate calls to.
*/
address public immutable target;
/**
* @notice The selector to call on the target.
*/
bytes4 public immutable selector;
/**
* @notice boolean indicating if we need to check for a signed return value.
* @dev if true, this indicates an int256 return value or similar signed number
*/
bool public immutable signed;
/**
* @notice Static arguments to pass to the target.
*/
bytes32 public immutable staticArgument0;
bytes32 public immutable staticArgument1;
bytes32 public immutable staticArgument2;
bytes32 public immutable staticArgument3;
bytes32 public immutable staticArgument4;
bytes32 public immutable staticArgument5;
bytes32 public immutable staticArgument6;
bytes32 public immutable staticArgument7;
constructor(
address _target,
bytes4 _selector,
bytes32 _staticArgument0,
bytes32 _staticArgument1,
bytes32 _staticArgument2,
bytes32 _staticArgument3,
bytes32 _staticArgument4,
bytes32 _staticArgument5,
bytes32 _staticArgument6,
bytes32 _staticArgument7,
bool _signed
) {
target = _target;
selector = _selector;
staticArgument0 = _staticArgument0;
staticArgument1 = _staticArgument1;
staticArgument2 = _staticArgument2;
staticArgument3 = _staticArgument3;
staticArgument4 = _staticArgument4;
staticArgument5 = _staticArgument5;
staticArgument6 = _staticArgument6;
staticArgument7 = _staticArgument7;
signed = _signed;
// Make sure getRate succeeds.
getRate();
}
// ========================================= RATE FUNCTION =========================================
/**
* @notice Get the rate of some generic asset.
* @dev This function only supports selectors that only contain static arguments, dynamic arguments will not be encoded correctly,
* and calls will likely fail.
* @dev If staticArgumentN is not used, it can be left as 0.
*/
function getRate() public virtual view returns (uint256) {
bytes memory callData = abi.encodeWithSelector(
selector,
staticArgument0,
staticArgument1,
staticArgument2,
staticArgument3,
staticArgument4,
staticArgument5,
staticArgument6,
staticArgument7
);
bytes memory result = target.functionStaticCall(callData);
if (signed) {
//if target func() returns an int, we get the result and then cast it to a uint256
int256 res = abi.decode(result, (int256));
if (res < 0) revert GenericRateProvider__PriceCannotBeLtZero();
return uint256(res);
} else {
return abi.decode(result, (uint256));
}
}
}// SPDX-License-Identifier: SEL-1.0
// Copyright © 2025 Veda Tech Labs
// Derived from Boring Vault Software © 2025 Veda Tech Labs (TEST ONLY – NO COMMERCIAL USE)
// Licensed under Software Evaluation License, Version 1.0
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
pragma solidity ^0.8.0;
interface IRateProvider {
function getRate() external view returns (uint256);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)
pragma solidity ^0.8.20;
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev The ETH balance of the account is not enough to perform the operation.
*/
error AddressInsufficientBalance(address account);
/**
* @dev There's no code at `target` (it is not a contract).
*/
error AddressEmptyCode(address target);
/**
* @dev A call to an address target failed. The target may have reverted.
*/
error FailedInnerCall();
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
function sendValue(address payable recipient, uint256 amount) internal {
if (address(this).balance < amount) {
revert AddressInsufficientBalance(address(this));
}
(bool success, ) = recipient.call{value: amount}("");
if (!success) {
revert FailedInnerCall();
}
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain `call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason or custom error, it is bubbled
* up by this function (like regular Solidity function calls). However, if
* the call reverted with no returned reason, this function reverts with a
* {FailedInnerCall} error.
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*/
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
if (address(this).balance < value) {
revert AddressInsufficientBalance(address(this));
}
(bool success, bytes memory returndata) = target.call{value: value}(data);
return verifyCallResultFromTarget(target, success, returndata);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*/
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
(bool success, bytes memory returndata) = target.staticcall(data);
return verifyCallResultFromTarget(target, success, returndata);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*/
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResultFromTarget(target, success, returndata);
}
/**
* @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target
* was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an
* unsuccessful call.
*/
function verifyCallResultFromTarget(
address target,
bool success,
bytes memory returndata
) internal view returns (bytes memory) {
if (!success) {
_revert(returndata);
} else {
// only check if target is a contract if the call was successful and the return data is empty
// otherwise we already know that it was a contract
if (returndata.length == 0 && target.code.length == 0) {
revert AddressEmptyCode(target);
}
return returndata;
}
}
/**
* @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the
* revert reason or with a default {FailedInnerCall} error.
*/
function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {
if (!success) {
_revert(returndata);
} else {
return returndata;
}
}
/**
* @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.
*/
function _revert(bytes memory returndata) private pure {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
/// @solidity memory-safe-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert FailedInnerCall();
}
}
}{
"remappings": [
"@solmate/=lib/solmate/src/",
"@forge-std/=lib/forge-std/src/",
"@ds-test/=lib/forge-std/lib/ds-test/src/",
"ds-test/=lib/forge-std/lib/ds-test/src/",
"@openzeppelin/=lib/openzeppelin-contracts/",
"@ccip/=lib/ccip/",
"@oapp-auth/=lib/OAppAuth/src/",
"@devtools-oapp-evm/=lib/OAppAuth/lib/devtools/packages/oapp-evm/contracts/oapp/",
"@layerzerolabs/lz-evm-messagelib-v2/=lib/OAppAuth/node_modules/@layerzerolabs/lz-evm-messagelib-v2/",
"@layerzerolabs/lz-evm-protocol-v2/=lib/OAppAuth/lib/LayerZero-V2/packages/layerzero-v2/evm/protocol/",
"@layerzerolabs/oapp-evm/=lib/OAppAuth/lib/devtools/packages/oapp-evm/",
"@lz-oapp-evm/=lib/OAppAuth/lib/LayerZero-V2/packages/layerzero-v2/evm/oapp/contracts/oapp/",
"@sbu/=lib/OAppAuth/lib/solidity-bytes-utils/",
"LayerZero-V2/=lib/OAppAuth/lib/",
"OAppAuth/=lib/OAppAuth/",
"ccip/=lib/ccip/contracts/",
"erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
"forge-std/=lib/forge-std/src/",
"halmos-cheatcodes/=lib/OAppAuth/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/",
"solidity-bytes-utils/=lib/OAppAuth/node_modules/solidity-bytes-utils/",
"solmate/=lib/solmate/src/"
],
"optimizer": {
"enabled": true,
"runs": 200
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "london",
"viaIR": false
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes4","name":"selector","type":"bytes4"},{"internalType":"bytes32","name":"staticArgument0","type":"bytes32"},{"internalType":"bytes32","name":"staticArgument1","type":"bytes32"},{"internalType":"bytes32","name":"staticArgument2","type":"bytes32"},{"internalType":"bytes32","name":"staticArgument3","type":"bytes32"},{"internalType":"bytes32","name":"staticArgument4","type":"bytes32"},{"internalType":"bytes32","name":"staticArgument5","type":"bytes32"},{"internalType":"bytes32","name":"staticArgument6","type":"bytes32"},{"internalType":"bytes32","name":"staticArgument7","type":"bytes32"},{"internalType":"bool","name":"signed","type":"bool"},{"internalType":"uint8","name":"inputDecimals","type":"uint8"},{"internalType":"uint8","name":"outputDecimals","type":"uint8"}],"internalType":"struct GenericRateProviderWithDecimalScaling.ConstructorArgs","name":"_args","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"GenericRateProviderWithDecimalScaling__DecimalsCannotBeZero","type":"error"},{"inputs":[],"name":"GenericRateProvider__PriceCannotBeLtZero","type":"error"},{"inputs":[],"name":"getRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inputDecimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"outputDecimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"selector","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"signed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"staticArgument0","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"staticArgument1","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"staticArgument2","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"staticArgument3","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"staticArgument4","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"staticArgument5","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"staticArgument6","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"staticArgument7","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"target","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]Contract Creation Code
6102206040523480156200001257600080fd5b5060405162001272380380620012728339810160408190526200003591620004cc565b806000015181602001518260400151836060015184608001518560a001518660c001518760e001518861010001518961012001518a61014001518a6001600160a01b03166080816001600160a01b031681525050896001600160e01b03191660a0816001600160e01b031916815250508860e08181525050876101008181525050866101208181525050856101408181525050846101608181525050836101808181525050826101a08181525050816101c0818152505080151560c081151581525050620001086200017260201b60201c565b50505050505050505050505080610160015160ff166000148062000132575061018081015160ff16155b15620001515760405163183c64f760e01b815260040160405180910390fd5b61016081015160ff9081166101e05261018090910151166102005262000769565b6000806200017f62000210565b90506102005160ff166101e05160ff161115620001c957610200516101e051620001aa9190620005b7565b620001b790600a620006d0565b620001c39082620006e1565b91505090565b6102005160ff166101e05160ff1610156200020b576101e05161020051620001f29190620005b7565b620001ff90600a620006d0565b620001c3908262000704565b919050565b60a05160e05161010051610120516101405161016051610180516101a0516101c051604051602481019890985260448801969096526064870194909452608486019290925260a485015260c484015260e483015261010482015260009182916101240160408051808303601f190181529190526020810180516001600160e01b0319939093166001600160e01b03938416179052608051909250600091620002c5916001600160a01b03169084906200033116565b905060c051156200031457600081806020019051810190620002e891906200071e565b905060008112156200030d57604051630c67ca6960e31b815260040160405180910390fd5b9392505050565b808060200190518101906200032a91906200071e565b9250505090565b6060600080846001600160a01b03168460405162000350919062000738565b600060405180830381855afa9150503d80600081146200038d576040519150601f19603f3d011682016040523d82523d6000602084013e62000392565b606091505b509092509050620003a5858383620003b0565b925050505b92915050565b606082620003c957620003c38262000416565b6200030d565b8151158015620003e157506001600160a01b0384163b155b156200040f57604051639996b31560e01b81526001600160a01b038516600482015260240160405180910390fd5b5092915050565b805115620004275780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6040516101a081016001600160401b03811182821017156200047257634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b03811681146200020b57600080fd5b80516001600160e01b0319811681146200020b57600080fd5b805180151581146200020b57600080fd5b805160ff811681146200020b57600080fd5b60006101a08284031215620004e057600080fd5b620004ea62000440565b620004f58362000478565b8152620005056020840162000490565b602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152506101208084015181830152506101406200056e818501620004a9565b9082015261016062000582848201620004ba565b9082015261018062000596848201620004ba565b908201529392505050565b634e487b7160e01b600052601160045260246000fd5b60ff8281168282160390811115620003aa57620003aa620005a1565b600181815b8085111562000614578160001904821115620005f857620005f8620005a1565b808516156200060657918102915b93841c9390800290620005d8565b509250929050565b6000826200062d57506001620003aa565b816200063c57506000620003aa565b8160018114620006555760028114620006605762000680565b6001915050620003aa565b60ff841115620006745762000674620005a1565b50506001821b620003aa565b5060208310610133831016604e8410600b8410161715620006a5575081810a620003aa565b620006b18383620005d3565b8060001904821115620006c857620006c8620005a1565b029392505050565b60006200030d60ff8416836200061c565b600082620006ff57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417620003aa57620003aa620005a1565b6000602082840312156200073157600080fd5b5051919050565b6000825160005b818110156200075b57602081860181015185830152016200073f565b506000920191825250919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e051610200516109e86200088a6000396000818161026901528181610367015281816103b80152818161041a015261048c0152600081816102300152818161038b015281816103d90152818161043e015261046b01526000818161020901526105da01526000818161033601526105b4015260008181610130015261058e01526000818161029001526105680152600081816101bb0152610542015260008181610165015261051c01526000818161018c01526104f60152600081816101e201526104d001526000818160f4015261068e0152600081816102f601526106270152600081816102b7015261066401526109e86000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063a9f31af51161008c578063c2a69a9811610066578063c2a69a981461028b578063d4b83992146102b2578063ea3d508a146102f1578063ef060d4f1461033157600080fd5b8063a9f31af514610204578063ba8bdb031461022b578063bf560ad81461026457600080fd5b806361efe54d116100c857806361efe54d14610187578063679aefce146101ae57806392be0620146101b65780639cc5661d146101dd57600080fd5b8063232a6b9d146100ef578063333075671461012b5780634d8aefa214610160575b600080fd5b6101167f000000000000000000000000000000000000000000000000000000000000000081565b60405190151581526020015b60405180910390f35b6101527f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610122565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b610152610358565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b6102527f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610122565b6102527f000000000000000000000000000000000000000000000000000000000000000081565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b6102d97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610122565b6103187f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160e01b03199091168152602001610122565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b6000806103636104ca565b90507f000000000000000000000000000000000000000000000000000000000000000060ff167f000000000000000000000000000000000000000000000000000000000000000060ff161115610418576103fd7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610825565b61040890600a610922565b6104129082610931565b91505090565b7f000000000000000000000000000000000000000000000000000000000000000060ff167f000000000000000000000000000000000000000000000000000000000000000060ff1610156104c5576104b07f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610825565b6104bb90600a610922565b6104129082610953565b919050565b604080517f000000000000000000000000000000000000000000000000000000000000000060248201527f000000000000000000000000000000000000000000000000000000000000000060448201527f000000000000000000000000000000000000000000000000000000000000000060648201527f000000000000000000000000000000000000000000000000000000000000000060848201527f000000000000000000000000000000000000000000000000000000000000000060a48201527f000000000000000000000000000000000000000000000000000000000000000060c48201527f000000000000000000000000000000000000000000000000000000000000000060e48201527f000000000000000000000000000000000000000000000000000000000000000061010480830191909152825180830390910181526101249091019091526020810180516001600160e01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160e01b0319161790526000908161068a6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168361070e565b90507f0000000000000000000000000000000000000000000000000000000000000000156106f3576000818060200190518101906106c8919061096a565b905060008112156106ec57604051630c67ca6960e31b815260040160405180910390fd5b9392505050565b80806020019051810190610707919061096a565b9250505090565b6060600080846001600160a01b03168460405161072b9190610983565b600060405180830381855afa9150503d8060008114610766576040519150601f19603f3d011682016040523d82523d6000602084013e61076b565b606091505b509150915061077b858383610786565b925050505b92915050565b60608261079b57610796826107e6565b6106ec565b81511580156107b257506001600160a01b0384163b155b156107df57604051639996b31560e01b81526001600160a01b038516600482015260240160405180910390fd5b5092915050565b8051156107f65780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052601160045260246000fd5b60ff82811682821603908111156107805761078061080f565b600181815b8085111561087957816000190482111561085f5761085f61080f565b8085161561086c57918102915b93841c9390800290610843565b509250929050565b60008261089057506001610780565b8161089d57506000610780565b81600181146108b357600281146108bd576108d9565b6001915050610780565b60ff8411156108ce576108ce61080f565b50506001821b610780565b5060208310610133831016604e8410600b84101617156108fc575081810a610780565b610906838361083e565b806000190482111561091a5761091a61080f565b029392505050565b60006106ec60ff841683610881565b60008261094e57634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176107805761078061080f565b60006020828403121561097c57600080fd5b5051919050565b6000825160005b818110156109a4576020818601810151858301520161098a565b50600092019182525091905056fea264697066735822122098e136e8c5e0ca753c68b9da9b5a3f789c44640fcc821a21277efb0911b761b064736f6c63430008150033000000000000000000000000cb568c33ea2b0b81852655d722e3a52d9d44e7de50d25bcd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000012
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063a9f31af51161008c578063c2a69a9811610066578063c2a69a981461028b578063d4b83992146102b2578063ea3d508a146102f1578063ef060d4f1461033157600080fd5b8063a9f31af514610204578063ba8bdb031461022b578063bf560ad81461026457600080fd5b806361efe54d116100c857806361efe54d14610187578063679aefce146101ae57806392be0620146101b65780639cc5661d146101dd57600080fd5b8063232a6b9d146100ef578063333075671461012b5780634d8aefa214610160575b600080fd5b6101167f000000000000000000000000000000000000000000000000000000000000000181565b60405190151581526020015b60405180910390f35b6101527f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610122565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b610152610358565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b6102527f000000000000000000000000000000000000000000000000000000000000000881565b60405160ff9091168152602001610122565b6102527f000000000000000000000000000000000000000000000000000000000000001281565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b6102d97f000000000000000000000000cb568c33ea2b0b81852655d722e3a52d9d44e7de81565b6040516001600160a01b039091168152602001610122565b6103187f50d25bcd0000000000000000000000000000000000000000000000000000000081565b6040516001600160e01b03199091168152602001610122565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b6000806103636104ca565b90507f000000000000000000000000000000000000000000000000000000000000001260ff167f000000000000000000000000000000000000000000000000000000000000000860ff161115610418576103fd7f00000000000000000000000000000000000000000000000000000000000000127f0000000000000000000000000000000000000000000000000000000000000008610825565b61040890600a610922565b6104129082610931565b91505090565b7f000000000000000000000000000000000000000000000000000000000000001260ff167f000000000000000000000000000000000000000000000000000000000000000860ff1610156104c5576104b07f00000000000000000000000000000000000000000000000000000000000000087f0000000000000000000000000000000000000000000000000000000000000012610825565b6104bb90600a610922565b6104129082610953565b919050565b604080517f000000000000000000000000000000000000000000000000000000000000000060248201527f000000000000000000000000000000000000000000000000000000000000000060448201527f000000000000000000000000000000000000000000000000000000000000000060648201527f000000000000000000000000000000000000000000000000000000000000000060848201527f000000000000000000000000000000000000000000000000000000000000000060a48201527f000000000000000000000000000000000000000000000000000000000000000060c48201527f000000000000000000000000000000000000000000000000000000000000000060e48201527f000000000000000000000000000000000000000000000000000000000000000061010480830191909152825180830390910181526101249091019091526020810180516001600160e01b03167f50d25bcd000000000000000000000000000000000000000000000000000000006001600160e01b0319161790526000908161068a6001600160a01b037f000000000000000000000000cb568c33ea2b0b81852655d722e3a52d9d44e7de168361070e565b90507f0000000000000000000000000000000000000000000000000000000000000001156106f3576000818060200190518101906106c8919061096a565b905060008112156106ec57604051630c67ca6960e31b815260040160405180910390fd5b9392505050565b80806020019051810190610707919061096a565b9250505090565b6060600080846001600160a01b03168460405161072b9190610983565b600060405180830381855afa9150503d8060008114610766576040519150601f19603f3d011682016040523d82523d6000602084013e61076b565b606091505b509150915061077b858383610786565b925050505b92915050565b60608261079b57610796826107e6565b6106ec565b81511580156107b257506001600160a01b0384163b155b156107df57604051639996b31560e01b81526001600160a01b038516600482015260240160405180910390fd5b5092915050565b8051156107f65780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052601160045260246000fd5b60ff82811682821603908111156107805761078061080f565b600181815b8085111561087957816000190482111561085f5761085f61080f565b8085161561086c57918102915b93841c9390800290610843565b509250929050565b60008261089057506001610780565b8161089d57506000610780565b81600181146108b357600281146108bd576108d9565b6001915050610780565b60ff8411156108ce576108ce61080f565b50506001821b610780565b5060208310610133831016604e8410600b84101617156108fc575081810a610780565b610906838361083e565b806000190482111561091a5761091a61080f565b029392505050565b60006106ec60ff841683610881565b60008261094e57634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176107805761078061080f565b60006020828403121561097c57600080fd5b5051919050565b6000825160005b818110156109a4576020818601810151858301520161098a565b50600092019182525091905056fea264697066735822122098e136e8c5e0ca753c68b9da9b5a3f789c44640fcc821a21277efb0911b761b064736f6c63430008150033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000cb568c33ea2b0b81852655d722e3a52d9d44e7de50d25bcd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000012
-----Decoded View---------------
Arg [0] : _args (tuple):
Arg [1] : target (address): 0xCB568C33EA2B0B81852655d722E3a52d9D44e7De
Arg [2] : selector (bytes4): 0x50d25bcd
Arg [3] : staticArgument0 (bytes32): 0x0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : staticArgument1 (bytes32): 0x0000000000000000000000000000000000000000000000000000000000000000
Arg [5] : staticArgument2 (bytes32): 0x0000000000000000000000000000000000000000000000000000000000000000
Arg [6] : staticArgument3 (bytes32): 0x0000000000000000000000000000000000000000000000000000000000000000
Arg [7] : staticArgument4 (bytes32): 0x0000000000000000000000000000000000000000000000000000000000000000
Arg [8] : staticArgument5 (bytes32): 0x0000000000000000000000000000000000000000000000000000000000000000
Arg [9] : staticArgument6 (bytes32): 0x0000000000000000000000000000000000000000000000000000000000000000
Arg [10] : staticArgument7 (bytes32): 0x0000000000000000000000000000000000000000000000000000000000000000
Arg [11] : signed (bool): True
Arg [12] : inputDecimals (uint8): 8
Arg [13] : outputDecimals (uint8): 18
-----Encoded View---------------
13 Constructor Arguments found :
Arg [0] : 000000000000000000000000cb568c33ea2b0b81852655d722e3a52d9d44e7de
Arg [1] : 50d25bcd00000000000000000000000000000000000000000000000000000000
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000012
Loading...
Loading
Loading...
Loading
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.