Source Code
Latest 6 from a total of 6 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Change Protocol ... | 21425030 | 227 days ago | IN | 0 FRAX | 0.00038718 | ||||
| Whitelist Token | 21425030 | 227 days ago | IN | 0 FRAX | 0.0003872 | ||||
| Whitelist Token | 21425030 | 227 days ago | IN | 0 FRAX | 0.0003872 | ||||
| Whitelist Token | 21425030 | 227 days ago | IN | 0 FRAX | 0.0003872 | ||||
| Whitelist Token | 21425030 | 227 days ago | IN | 0 FRAX | 0.0003872 | ||||
| 0x60806040 | 21425030 | 227 days ago | IN | 0 FRAX | 0.02107273 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Cross-Chain Transactions
Loading...
Loading
Contract Name:
EchoAdministration
Compiler Version
v0.8.30+commit.73712a01
Optimization Enabled:
Yes with 200 runs
Other Settings:
prague EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity 0.8.30;
// ███████╗ ██████╗██╗ ██╗ ██████╗ ███╗ ███╗ █████╗ ██████╗ ██╗ ██╗███████╗████████╗
// ██╔════╝██╔════╝██║ ██║██╔═══██╗ ████╗ ████║██╔══██╗██╔══██╗██║ ██╔╝██╔════╝╚══██╔══╝
// █████╗ ██║ ███████║██║ ██║ ██╔████╔██║███████║██████╔╝█████╔╝ █████╗ ██║
// ██╔══╝ ██║ ██╔══██║██║ ██║ ██║╚██╔╝██║██╔══██║██╔══██╗██╔═██╗ ██╔══╝ ██║
// ███████╗╚██████╗██║ ██║╚██████╔╝ ██║ ╚═╝ ██║██║ ██║██║ ██║██║ ██╗███████╗ ██║
// ╚══════╝ ╚═════╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝ ╚═╝
// =========================== EchoAdministration V1 =================================
// =================================== Spring 2025 ===================================
import {ActionStatus, ActionAndKind, ModelData, IEchoAdministration} from "./interfaces/IEchoAdministration.sol";
/// @title Echo Administration contract
/// @author Dynabits.org
contract EchoAdministration is IEchoAdministration {
/********************************\
|-*-*-*-*-* STATES *-*-*-*-*-|
\********************************/
uint24 public campaignFeeRate; // 0 < x < 1e5
uint72 public maxCampaignTime;
address public protocolAdmin;
mapping(address => bool) public whitelistedToken; // address => true
mapping(address => bool) public disallowedOracle; // address => true
mapping(string => uint256) public totalKindMethods; // "X" => 6
mapping(bytes32 => string) public hashToActionKind; // 0xba...ab => "X: Like"
mapping(address => mapping(bytes32 => ModelData)) public modelData;
// e.g:
// address(0) => keccak("X: Like") => { fee: uint256, actionStatus: ActionStatus.KPI, socialKPIratio: uint256, oracle: address }
// address(1) => keccak("CONFIG: AuthorWallet") => { fee: uint256, actionStatus: ActionStatus.Config, socialKPIratio: uint256(0), oracle: address }
// address => keccak("QA-AI: Accuracy And Credibility") => { fee: uint256, actionStatus: ActionStatus.QA, socialKPIratio: 0, oracle: address(0) }
// address => keccak("QA-C: Accuracy And Credibility") => { fee: uint256, actionStatus: ActionStatus.QA, socialKPIratio: 0, oracle: address(0) }
// address => keccak("QA-V: Accuracy And Credibility") => { fee: uint256, actionStatus: ActionStatus.QA, socialKPIratio: 0, oracle: address(0) }
/********************************\
|-*-*-*-*-* EVENTS *-*-*-*-*-|
\********************************/
event ProtocolAdminChanged(
address indexed lastImplementation,
address indexed newImplementation
);
event maxCampaignTimeChanged(
uint256 indexed lastMaxCampaignTime,
uint256 indexed maxCampaignTime
);
event CampaignFeeRateChanged(
uint256 indexed lastCampaignFeeRate,
uint256 indexed CampaignFeeRate
);
event TokenWhitelisted(address indexed token);
event TokenRemoved(address indexed token);
event OracleFullAccessChanged(
address indexed oracle,
bool isFullAccessRestricted
);
event ModelSettled(
ActionAndKind actionKind,
bytes32 hashedActionKind,
ModelData model
);
event ModelRemoved(
ActionAndKind actionKind,
bytes32 hashedActionKind,
ModelData model
);
/********************************\
|-*-*-*-*-* ERRORS *-*-*-*-*-|
\********************************/
error ONLY_PROTOCOL_ADMIN();
error ZERO_ADDRESS_PROVIDED();
error TOKEN_WHITELISTED_BEFORE();
error TOKEN_DOESNT_EXIST();
error EMPTY_ACTION_OR_KIND_PROVIDED();
error NA_ACTION_STATUS();
error NOT_RELATIVE_ACTION(string action, ActionStatus actionStatus);
error UNDEFINED_PROCESS();
error ZERO_FEE_PROVIDED(ActionStatus actionStatus);
error FEE_RATE_MUST_BE_BETWEEN_0_TO_1E5(uint256 givenFee);
error ZERO_SOCIAL_KPI_PROVIDED();
/*******************************\
|-*-*-*-* MODIFIERS *-*-*-*-|
\*******************************/
modifier onlyProtocolAdmin() {
if (msg.sender != protocolAdmin) revert ONLY_PROTOCOL_ADMIN();
_;
}
/******************************\
|-*-*-*-* BUILT-IN *-*-*-*-|
\******************************/
constructor(
address protocolAdmin_,
address echoOracle,
uint248[8] memory oracleFees,
uint8[6] memory xKPIsRatio
) {
_revertZeroAddress(protocolAdmin_);
_revertZeroAddress(echoOracle);
protocolAdmin = protocolAdmin_;
bytes32[] memory actionToKind = new bytes32[](11);
totalKindMethods["CONFIG"] = 3;
actionToKind[0] = keccak256(abi.encodePacked("CONFIG: AuthorWallet"));
actionToKind[1] = keccak256(abi.encodePacked("CONFIG: AuthorXID"));
actionToKind[2] = keccak256(abi.encodePacked("CONFIG: Finalizer"));
modelData[address(1)][actionToKind[0]] = ModelData(
ActionStatus.Config,
0,
0,
echoOracle
);
modelData[address(1)][actionToKind[1]] = ModelData(
ActionStatus.Config,
0,
0,
echoOracle
);
modelData[address(1)][actionToKind[2]] = ModelData(
ActionStatus.Config,
0,
0,
echoOracle
);
totalKindMethods["QA-AI"] = 2;
actionToKind[3] = keccak256(
abi.encodePacked("QA-AI: Relevance And Alignment")
);
actionToKind[4] = keccak256(
abi.encodePacked("QA-AI: Accuracy And Credibility")
);
modelData[echoOracle][actionToKind[3]] = ModelData(
ActionStatus.QA,
0,
oracleFees[0],
address(0)
);
modelData[echoOracle][actionToKind[4]] = ModelData(
ActionStatus.QA,
0,
oracleFees[1],
address(0)
);
totalKindMethods["X"] = 6;
actionToKind[5] = keccak256(abi.encodePacked("X: Like"));
actionToKind[6] = keccak256(abi.encodePacked("X: Quote"));
actionToKind[7] = keccak256(abi.encodePacked("X: Reply"));
actionToKind[8] = keccak256(abi.encodePacked("X: Retweet"));
actionToKind[9] = keccak256(abi.encodePacked("X: Bookmark"));
actionToKind[10] = keccak256(abi.encodePacked("X: Impression"));
modelData[address(0)][actionToKind[5]] = ModelData(
ActionStatus.KPI,
xKPIsRatio[0],
oracleFees[2],
echoOracle
);
modelData[address(0)][actionToKind[6]] = ModelData(
ActionStatus.KPI,
xKPIsRatio[1],
oracleFees[3],
echoOracle
);
modelData[address(0)][actionToKind[7]] = ModelData(
ActionStatus.KPI,
xKPIsRatio[2],
oracleFees[4],
echoOracle
);
modelData[address(0)][actionToKind[8]] = ModelData(
ActionStatus.KPI,
xKPIsRatio[3],
oracleFees[5],
echoOracle
);
modelData[address(0)][actionToKind[9]] = ModelData(
ActionStatus.KPI,
xKPIsRatio[4],
oracleFees[6],
echoOracle
);
modelData[address(0)][actionToKind[10]] = ModelData(
ActionStatus.KPI,
xKPIsRatio[5],
oracleFees[7],
echoOracle
);
maxCampaignTime = 30 days;
emit maxCampaignTimeChanged(0, 30 days);
emit ProtocolAdminChanged(address(0), protocolAdmin_);
}
/********************************\
|-*-*-* ADMINISTRATION *-*-*-|
\********************************/
/// @inheritdoc IEchoAdministration
function changeProtocolAdmin(
address newProtocolAdmin
) external onlyProtocolAdmin {
_revertZeroAddress(newProtocolAdmin);
emit ProtocolAdminChanged(protocolAdmin, newProtocolAdmin);
protocolAdmin = newProtocolAdmin;
}
/// @inheritdoc IEchoAdministration
function changeCampaignFeeRate(
uint24 newCampaignFeeRate
) external onlyProtocolAdmin {
if (newCampaignFeeRate == 0 || newCampaignFeeRate >= 1e5)
revert FEE_RATE_MUST_BE_BETWEEN_0_TO_1E5(newCampaignFeeRate);
emit CampaignFeeRateChanged(campaignFeeRate, newCampaignFeeRate);
campaignFeeRate = newCampaignFeeRate;
}
/// @inheritdoc IEchoAdministration
function setMaxCampaignTime(
uint72 newMaxCampaignTime
) external onlyProtocolAdmin {
emit maxCampaignTimeChanged(maxCampaignTime, newMaxCampaignTime);
if (newMaxCampaignTime == 0) delete maxCampaignTime;
maxCampaignTime = newMaxCampaignTime;
}
/// @inheritdoc IEchoAdministration
function whitelistToken(address token) external onlyProtocolAdmin {
_revertZeroAddress(token);
if (whitelistedToken[token]) revert TOKEN_WHITELISTED_BEFORE();
whitelistedToken[token] = true;
emit TokenWhitelisted(token);
}
/// @inheritdoc IEchoAdministration
function removeWhitelistedToken(address token) external onlyProtocolAdmin {
_revertZeroAddress(token);
if (!whitelistedToken[token]) revert TOKEN_DOESNT_EXIST();
delete whitelistedToken[token];
emit TokenRemoved(token);
}
/// @inheritdoc IEchoAdministration
function toggleOracleFullAccess(address oracle) external onlyProtocolAdmin {
_revertZeroAddress(oracle);
disallowedOracle[oracle] = !disallowedOracle[oracle];
emit OracleFullAccessChanged(oracle, disallowedOracle[oracle]);
}
/// @inheritdoc IEchoAdministration
function setModel(
ActionAndKind calldata actionAndKind,
ModelData memory model
) external onlyProtocolAdmin {
// Ensure that neither action nor kind is empty
if (
bytes(actionAndKind.action).length == 0 ||
bytes(actionAndKind.kind).length == 0
) revert EMPTY_ACTION_OR_KIND_PROVIDED();
// Validate that the actionStatus is not NA (must be QA, KPI, or CONFIG)
if (model.actionStatus == ActionStatus.NA) revert NA_ACTION_STATUS();
// Generate a unique hash for the action and kind combination
bytes32 hashedActionKind = keccak256(
abi.encodePacked(actionAndKind.action, ": ", actionAndKind.kind)
);
bool increaseTotalKinds;
// Assign the provided actionStatus to the corresponding model data
modelData[model.oracle][hashedActionKind].actionStatus = model
.actionStatus;
if (model.actionStatus == ActionStatus.QA) {
// Validate that the action is a recognized QA type
if (
keccak256(abi.encodePacked(actionAndKind.action)) !=
keccak256(abi.encodePacked("QA-AI")) &&
keccak256(abi.encodePacked(actionAndKind.action)) !=
keccak256(abi.encodePacked("QA-C")) &&
keccak256(abi.encodePacked(actionAndKind.action)) !=
keccak256(abi.encodePacked("QA-V"))
) revert NOT_RELATIVE_ACTION(actionAndKind.action, ActionStatus.QA);
// Ensure a valid oracle fee: either both fee and oracle must be set, or neither
if (model.fee != 0 && model.oracle == address(0))
revert UNDEFINED_PROCESS();
if (model.fee == 0 && model.oracle != address(0))
revert ZERO_FEE_PROVIDED(ActionStatus.QA);
// Update fee for the QA oracle or remove the QA access if fee is zero
if (model.fee != 0) {
if (modelData[model.oracle][hashedActionKind].fee == 0)
increaseTotalKinds = true;
modelData[model.oracle][hashedActionKind].fee = model.fee;
} else delete modelData[model.oracle][hashedActionKind];
} else if (model.actionStatus == ActionStatus.KPI) {
// Validate that the action corresponds to KPI
if (
keccak256(abi.encodePacked(actionAndKind.action)) !=
keccak256(abi.encodePacked("KPI"))
)
revert NOT_RELATIVE_ACTION(
actionAndKind.action,
ActionStatus.KPI
);
// If oracle address is zero, remove the KPI mapping; otherwise, update the KPI model
if (model.oracle == address(0)) {
delete modelData[address(0)][hashedActionKind];
} else {
// Ensure that social KPI ratio and fee are valid (non-zero)
if (model.socialKPIratio == 0)
revert ZERO_SOCIAL_KPI_PROVIDED();
if (model.fee == 0) revert ZERO_FEE_PROVIDED(ActionStatus.KPI);
if (modelData[address(0)][hashedActionKind].fee == 0)
increaseTotalKinds = true;
modelData[address(0)][hashedActionKind].socialKPIratio = model
.socialKPIratio;
modelData[address(0)][hashedActionKind].fee = model.fee;
modelData[address(0)][hashedActionKind].oracle = model.oracle;
}
} else {
// Validate that the action corresponds to CONFIG
if (
keccak256(abi.encodePacked(actionAndKind.action)) !=
keccak256(abi.encodePacked("CONFIG"))
)
revert NOT_RELATIVE_ACTION(
actionAndKind.action,
ActionStatus.Config
);
// If oracle address is zero, remove the CONFIG mapping; otherwise, update the oracle
if (model.oracle == address(0))
delete modelData[address(1)][hashedActionKind];
else {
if (
modelData[address(1)][hashedActionKind].oracle == address(0)
) increaseTotalKinds = true;
modelData[address(1)][hashedActionKind].oracle = model.oracle;
}
}
// Emit appropriate events based on whether an oracle is provided
if (model.oracle != address(0)) {
if (increaseTotalKinds) totalKindMethods[actionAndKind.action]++;
hashToActionKind[hashedActionKind] = string.concat(
actionAndKind.action,
": ",
actionAndKind.kind
);
emit ModelSettled(actionAndKind, hashedActionKind, model);
} else {
if (bytes(hashToActionKind[hashedActionKind]).length != 0) {
totalKindMethods[actionAndKind.action]--;
delete hashToActionKind[hashedActionKind];
emit ModelRemoved(actionAndKind, hashedActionKind, model);
}
}
}
/*****************************\
|-*-*-*-* GETTERS *-*-*-*-|
\*****************************/
/// @inheritdoc IEchoAdministration
function allowedActionKind(
address oracle,
bytes32[] calldata hashedActionsKind
) external view returns (bool) {
uint256 length = hashedActionsKind.length;
ActionStatus actionStatus;
/*
* Determine the expected ActionStatus based on the provided oracle address:
* - If oracle is address(0), check KPI access.
* - If oracle is address(1), check CONFIG access.
* - Otherwise, check QA access for the given oracle.
*/
if (oracle == address(0)) actionStatus = ActionStatus.KPI;
else if (oracle == address(1)) actionStatus = ActionStatus.Config;
else actionStatus = ActionStatus.QA;
/*
* Iterate through the provided hashed action-kind values:
* - If any action-kind entry does not match the expected ActionStatus, return false.
* - Otherwise, continue checking.
*/
for (uint256 i; i < length; ) {
if (
modelData[oracle][hashedActionsKind[i]].actionStatus !=
actionStatus
) return false;
unchecked {
i++;
}
}
// If all hashedActionsKind entries match the expected ActionStatus, return true
return true;
}
/*****************************\
|-*-*-*-* PRIVATE *-*-*-*-|
\*****************************/
function _revertZeroAddress(address addr) private pure {
if (addr == address(0)) revert ZERO_ADDRESS_PROVIDED();
}
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.30;
/***************************\
|*-*-*-* TYPES *-*-*-*|
\***************************/
enum ActionStatus {
NA,
Config,
QA,
KPI
}
struct ActionAndKind {
ActionStatus actionStatus;
string action;
string kind;
}
struct ModelData {
ActionStatus actionStatus;
uint8 socialKPIratio;
uint248 fee;
address oracle;
}
/// @title Echo Administration Interface
/// @notice Defines administrative functions for managing campaign settings, token whitelisting, and oracle permissions.
/// @author Dynabits.org
interface IEchoAdministration {
/*******************************\
|*-*-*-* EXTERNALS *-*-*-*-*|
\*******************************/
/// @notice Transfers protocol admin rights to a new address.
/// @dev Only the current protocol admin can call this function. The new admin address cannot be the zero address.
/// @param newProtocolAdmin The address of the new protocol admin.
function changeProtocolAdmin(address newProtocolAdmin) external;
/// @notice Sets the campaign fee rate as a percentage of the allocated token at creation.
/// @dev The value must be between 0 and 1e5.
/// @param newCampaignFeeRate The new campaign creation fee rate.
function changeCampaignFeeRate(uint24 newCampaignFeeRate) external;
/// @notice Sets the maximum campaign duration.
/// @dev A value of zero means there is no maximum campaign duration.
/// @param newMaxCampaignTime The maximum campaign duration in seconds.
function setMaxCampaignTime(uint72 newMaxCampaignTime) external;
/// @notice Whitelists a new ERC20 token for use in campaigns.
/// @dev A token cannot be whitelisted more than once. The whitelist status is checked during campaign creation.
/// @param token The ERC20 token address.
function whitelistToken(address token) external;
/// @notice Removes an ERC20 token from the whitelist, preventing its selection as a campaign budget token.
/// @param token The ERC20 token address.
function removeWhitelistedToken(address token) external;
/// @notice Toggles full access permissions for an oracle.
/// @dev This function can be used to temporarily or permanently disable an oracle’s access to campaign-related functionalities.
/// @param oracle The address of the oracle.
function toggleOracleFullAccess(address oracle) external;
/**
* @notice Sets or updates the model data for a given action and kind.
* @dev Configures an action-kind mapping with an associated oracle, fee, and status.
* @param actionAndKind The struct containing the action and kind identifiers.
* @param model The struct containing model details such as the oracle, fee, status, and social KPI ratio.
*
* Requirements:
* - `actionAndKind.action` and `actionAndKind.kind` must not be empty.
* - `model.actionStatus` must be one of `QA`, `KPI`, or `CONFIG`.
* - Actions must match their respective `actionStatus`:
* - `QA` actions: `QA-AI`, `QA-C`, `QA-V`
* - `KPI` actions: `KPI`
* - `CONFIG` actions: `CONFIG`
* - QA oracles must have a nonzero fee.
* - KPI oracles must have both a nonzero fee and a nonzero social KPI ratio.
* - CONFIG actions always have a zero fee.
*
* Effects:
* - Adds or updates an action-kind mapping.
* - Removes model data if `model.oracle` is zero.
*
* Emits:
* - `ModelSettled` if a model is set or updated.
* - `ModelRemoved` if a model is removed.
*
* Reverts:
* - `EMPTY_ACTION_OR_KIND_PROVIDED` if either action or kind is empty.
* - `NA_ACTION_STATUS` if the provided action status is `NA`.
* - `NOT_RELATIVE_ACTION` if the action does not match its required type.
* - `UNDEFINED_PROCESS` if a QA oracle has a fee but no valid address.
* - `ZERO_FEE_PROVIDED` if a required fee is zero.
* - `ZERO_SOCIAL_KPI_PROVIDED` if a required social KPI ratio is zero.
*/
function setModel(
ActionAndKind calldata actionAndKind,
ModelData memory model
) external;
/*****************************\
|-*-*-*-* GETTERS *-*-*-*-|
\*****************************/
/// @notice Returns the campaign creation fee rate as a percentage.
/// @dev This value is deducted from the allocated budget immediately upon campaign creation.
/// @return The campaign creation fee rate.
function campaignFeeRate() external view returns (uint24);
/// @notice Returns the maximum allowed duration for campaigns.
/// @dev A campaign’s duration (end time - start time) must be less than or equal to this value at creation.
/// @return The maximum campaign duration in seconds.
function maxCampaignTime() external view returns (uint72);
/// @notice Returns the protocol admin address.
/// @dev The protocol admin has full access to infrastructural modifications.
/// @return The address of the protocol admin.
function protocolAdmin() external view returns (address);
/// @notice Checks if a given ERC20 token is whitelisted for campaign use.
/// @param token The ERC20 token address.
/// @return A boolean indicating whether the token is whitelisted.
function whitelistedToken(address token) external view returns (bool);
/**
* @notice Checks if an oracle has been banned.
* @dev A banned oracle loses all permissions to interact with EchoContents and campaign contracts.
* @param oracle The address of the oracle.
* @return A boolean indicating whether the oracle is banned.
*/
function disallowedOracle(address oracle) external view returns (bool);
/**
* @notice Returns the number of available methods and parameters for a given action.
* @dev Examples:
* - KPI actions (e.g., `X`) can have parameters like `Like` and `Retweet`.
* - Qualification actions (`QA-V`) can have parameters like `Accuracy` and `Originality`.
* @param action The action type, such as `X`, `QA-V`, or `Config`.
* @return The number of available methods for the action.
*/
function totalKindMethods(string calldata action)
external
view
returns (uint256);
/**
* @notice Retrieves the original action and kind from a given hashed identifier.
* @dev Useful for reducing gas costs and simplifying comparisons.
* @param hashedActionKind The hash of the concatenated action and kind.
* @return The decoded action and kind as a string.
*/
function hashToActionKind(bytes32 hashedActionKind)
external
view
returns (string memory);
/**
* @notice Returns model data associated with an oracle and a hashed action-kind.
* @param oracle_ The address of the oracle.
* @param hashedActionKind The hashed action-kind identifier.
* @return actionStatus The action status of the model.
* @return socialKPIratio The social KPI ratio.
* @return fee The associated fee for the action.
* @return oracle The address of the oracle managing the action.
*/
function modelData(address oracle_, bytes32 hashedActionKind)
external
view
returns (
ActionStatus actionStatus,
uint8 socialKPIratio,
uint248 fee,
address oracle
);
/**
* @notice Checks if an oracle has the required permissions for given action-kind hashes.
* @dev Access is determined based on the oracle's address:
* - `address(0)`: Checks if the hashed action-kind exists for KPI.
* - `address(1)`: Checks if the hashed action-kind exists for CONFIG.
* - Any other address: Checks if the oracle has QA access.
* @param oracle The oracle’s address.
* @param hashedActionsKind An array of hashed action-kind values to verify.
* @return A boolean indicating whether the oracle is authorized.
*/
function allowedActionKind(
address oracle,
bytes32[] calldata hashedActionsKind
) external view returns (bool);
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"remappings": [
"forge-std/=lib/forge-std/src/",
"@prb/math/=lib/prb-math/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/",
"@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/",
"@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/"
],
"evmVersion": "prague"
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"protocolAdmin_","type":"address"},{"internalType":"address","name":"echoOracle","type":"address"},{"internalType":"uint248[8]","name":"oracleFees","type":"uint248[8]"},{"internalType":"uint8[6]","name":"xKPIsRatio","type":"uint8[6]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"EMPTY_ACTION_OR_KIND_PROVIDED","type":"error"},{"inputs":[{"internalType":"uint256","name":"givenFee","type":"uint256"}],"name":"FEE_RATE_MUST_BE_BETWEEN_0_TO_1E5","type":"error"},{"inputs":[],"name":"NA_ACTION_STATUS","type":"error"},{"inputs":[{"internalType":"string","name":"action","type":"string"},{"internalType":"enum ActionStatus","name":"actionStatus","type":"uint8"}],"name":"NOT_RELATIVE_ACTION","type":"error"},{"inputs":[],"name":"ONLY_PROTOCOL_ADMIN","type":"error"},{"inputs":[],"name":"TOKEN_DOESNT_EXIST","type":"error"},{"inputs":[],"name":"TOKEN_WHITELISTED_BEFORE","type":"error"},{"inputs":[],"name":"UNDEFINED_PROCESS","type":"error"},{"inputs":[],"name":"ZERO_ADDRESS_PROVIDED","type":"error"},{"inputs":[{"internalType":"enum ActionStatus","name":"actionStatus","type":"uint8"}],"name":"ZERO_FEE_PROVIDED","type":"error"},{"inputs":[],"name":"ZERO_SOCIAL_KPI_PROVIDED","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"lastCampaignFeeRate","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"CampaignFeeRate","type":"uint256"}],"name":"CampaignFeeRateChanged","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"enum ActionStatus","name":"actionStatus","type":"uint8"},{"internalType":"string","name":"action","type":"string"},{"internalType":"string","name":"kind","type":"string"}],"indexed":false,"internalType":"struct ActionAndKind","name":"actionKind","type":"tuple"},{"indexed":false,"internalType":"bytes32","name":"hashedActionKind","type":"bytes32"},{"components":[{"internalType":"enum ActionStatus","name":"actionStatus","type":"uint8"},{"internalType":"uint8","name":"socialKPIratio","type":"uint8"},{"internalType":"uint248","name":"fee","type":"uint248"},{"internalType":"address","name":"oracle","type":"address"}],"indexed":false,"internalType":"struct ModelData","name":"model","type":"tuple"}],"name":"ModelRemoved","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"enum ActionStatus","name":"actionStatus","type":"uint8"},{"internalType":"string","name":"action","type":"string"},{"internalType":"string","name":"kind","type":"string"}],"indexed":false,"internalType":"struct ActionAndKind","name":"actionKind","type":"tuple"},{"indexed":false,"internalType":"bytes32","name":"hashedActionKind","type":"bytes32"},{"components":[{"internalType":"enum ActionStatus","name":"actionStatus","type":"uint8"},{"internalType":"uint8","name":"socialKPIratio","type":"uint8"},{"internalType":"uint248","name":"fee","type":"uint248"},{"internalType":"address","name":"oracle","type":"address"}],"indexed":false,"internalType":"struct ModelData","name":"model","type":"tuple"}],"name":"ModelSettled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oracle","type":"address"},{"indexed":false,"internalType":"bool","name":"isFullAccessRestricted","type":"bool"}],"name":"OracleFullAccessChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"lastImplementation","type":"address"},{"indexed":true,"internalType":"address","name":"newImplementation","type":"address"}],"name":"ProtocolAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"}],"name":"TokenRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"}],"name":"TokenWhitelisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"lastMaxCampaignTime","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"maxCampaignTime","type":"uint256"}],"name":"maxCampaignTimeChanged","type":"event"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"},{"internalType":"bytes32[]","name":"hashedActionsKind","type":"bytes32[]"}],"name":"allowedActionKind","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"campaignFeeRate","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint24","name":"newCampaignFeeRate","type":"uint24"}],"name":"changeCampaignFeeRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newProtocolAdmin","type":"address"}],"name":"changeProtocolAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"disallowedOracle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"hashToActionKind","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxCampaignTime","outputs":[{"internalType":"uint72","name":"","type":"uint72"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"modelData","outputs":[{"internalType":"enum ActionStatus","name":"actionStatus","type":"uint8"},{"internalType":"uint8","name":"socialKPIratio","type":"uint8"},{"internalType":"uint248","name":"fee","type":"uint248"},{"internalType":"address","name":"oracle","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"removeWhitelistedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint72","name":"newMaxCampaignTime","type":"uint72"}],"name":"setMaxCampaignTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum ActionStatus","name":"actionStatus","type":"uint8"},{"internalType":"string","name":"action","type":"string"},{"internalType":"string","name":"kind","type":"string"}],"internalType":"struct ActionAndKind","name":"actionAndKind","type":"tuple"},{"components":[{"internalType":"enum ActionStatus","name":"actionStatus","type":"uint8"},{"internalType":"uint8","name":"socialKPIratio","type":"uint8"},{"internalType":"uint248","name":"fee","type":"uint248"},{"internalType":"address","name":"oracle","type":"address"}],"internalType":"struct ModelData","name":"model","type":"tuple"}],"name":"setModel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"}],"name":"toggleOracleFullAccess","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"totalKindMethods","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"whitelistToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistedToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]Contract Creation Code
608060405234801561000f575f5ffd5b50604051612da0380380612da083398101604081905261002e91611208565b6100378461112a565b6100408361112a565b5f80546001600160601b03166c010000000000000000000000006001600160a01b0387160217815560408051600b80825261018082019092529060208201610160803683370190505090506003806040516100a79065434f4e46494760d01b815260060190565b9081526020016040518091039020819055506040516020016100ec907f434f4e4649473a20417574686f7257616c6c6574000000000000000000000000815260140190565b60405160208183030381529060405280519060200120815f81518110610114576101146112b0565b602002602001018181525050604051602001610147907010d3d3919251ce88105d5d1a1bdc961251607a1b815260110190565b6040516020818303038152906040528051906020012081600181518110610170576101706112b0565b6020026020010181815250506040516020016101a3907021a7a72324a39d102334b730b634bd32b960791b815260110190565b60405160208183030381529060405280519060200120816002815181106101cc576101cc6112b0565b6020908102919091018101919091526040805160808101825260018082525f8285018190529282018390526001600160a01b03881660608301528252600590925282515f516020612d605f395f51905f5291908490829061022f5761022f6112b0565b60209081029190910181015182528101919091526040015f2081518154829060ff19166001836003811115610266576102666112c4565b0217905550602082810151825461ff00191661010060ff90921691909102178255604080840151600180850180546001600160f81b0319166001600160f81b0390931692909217909155606094850151600290940180546001600160a01b0319166001600160a01b0395861617905581516080810183528181525f818501819052928101839052938916948401949094528381526005909152835191925f516020612d605f395f51905f52928591908110610323576103236112b0565b60209081029190910181015182528101919091526040015f2081518154829060ff1916600183600381111561035a5761035a6112c4565b0217905550602082810151825461ff00191661010060ff90921691909102178255604080840151600180850180546001600160f81b0319166001600160f81b0390931692909217909155606094850151600294850180546001600160a01b0319166001600160a01b0392831617905582516080810184528281525f818601819052938101849052908a16958101959095528152600590915283515f516020612d605f395f51905f529285918110610413576104136112b0565b60209081029190910181015182528101919091526040015f2081518154829060ff1916600183600381111561044a5761044a6112c4565b0217905550602082810151825460ff9091166101000261ff00199091161782556040808401516001840180546001600160f81b039092166001600160f81b0319909216919091179055606090930151600292830180546001600160a01b039092166001600160a01b031990921691909117905582516451412d414960d81b8152600360058201529251928390036025018320919091557f51412d41493a2052656c6576616e636520416e6420416c69676e6d656e74000090820152603e016040516020818303038152906040528051906020012081600381518110610531576105316112b0565b602002602001018181525050604051602001610570907f51412d41493a20416363757261637920416e6420437265646962696c697479008152601f0190565b6040516020818303038152906040528051906020012081600481518110610599576105996112b0565b6020908102919091010152604080516080810190915280600281526020015f60ff168152602001845f600881106105d2576105d26112b0565b60200201516001600160f81b031681526020015f6001600160a01b031681525060055f866001600160a01b03166001600160a01b031681526020019081526020015f205f83600381518110610629576106296112b0565b60209081029190910181015182528101919091526040015f2081518154829060ff19166001836003811115610660576106606112c4565b0217905550602082810151825461ff00191661010060ff909216919091021782556040808401516001840180546001600160f81b0319166001600160f81b03928316179055606094850151600294850180546001600160a01b0319166001600160a01b0392831617905582516080810184529485525f858501819052898501519092168584015294840181905293881684526005909152822083519192909184906004908110610712576107126112b0565b60209081029190910181015182528101919091526040015f2081518154829060ff19166001836003811115610749576107496112c4565b02179055506020820151815461ff00191661010060ff90921691909102178155604080830151600180840180546001600160f81b0319166001600160f81b0390931692909217909155606090930151600290920180546001600160a01b0319166001600160a01b039093169290921790915551600b60fb1b8152600691600391019081526020016040518091039020819055506040516020016107f99066583a204c696b6560c81b815260070190565b6040516020818303038152906040528051906020012081600581518110610822576108226112b0565b60200260200101818152505060405160200161084c9067583a2051756f746560c01b815260080190565b6040516020818303038152906040528051906020012081600681518110610875576108756112b0565b60200260200101818152505060405160200161089f9067583a205265706c7960c01b815260080190565b60405160208183030381529060405280519060200120816007815181106108c8576108c86112b0565b6020026020010181815250506040516020016108f49069160e8814995d1dd9595d60b21b8152600a0190565b604051602081830303815290604052805190602001208160088151811061091d5761091d6112b0565b60200260200101818152505060405160200161094a906a583a20426f6f6b6d61726b60a81b8152600b0190565b6040516020818303038152906040528051906020012081600981518110610973576109736112b0565b6020026020010181815250506040516020016109a2906c2c1d1024b6b83932b9b9b4b7b760991b8152600d0190565b6040516020818303038152906040528051906020012081600a815181106109cb576109cb6112b0565b6020908102919091018101919091526040805160808101825260038152845160ff1681840152858201516001600160f81b0316918101919091526001600160a01b03861660608201525f808052600592839052835191925f516020612d805f395f51905f52928591908110610a4257610a426112b0565b60209081029190910181015182528101919091526040015f2081518154829060ff19166001836003811115610a7957610a796112c4565b02179055506020820151815461ff00191661010060ff909216919091021781556040808301516001830180546001600160f81b0319166001600160f81b03909216919091179055606090920151600290910180546001600160a01b0319166001600160a01b039092169190911790558051608081019091528060038152602001836001602002015160ff16815260200184600360088110610b1c57610b1c6112b0565b60200201516001600160f81b03168152602001856001600160a01b031681525060055f5f6001600160a01b03166001600160a01b031681526020019081526020015f205f83600681518110610b7357610b736112b0565b60209081029190910181015182528101919091526040015f2081518154829060ff19166001836003811115610baa57610baa6112c4565b02179055506020820151815461ff00191661010060ff909216919091021781556040808301516001830180546001600160f81b0319166001600160f81b03909216919091179055606090920151600290910180546001600160a01b0319166001600160a01b039092169190911790558051608081019091528060038152602001836002602002015160ff16815260200184600460088110610c4d57610c4d6112b0565b60200201516001600160f81b03168152602001856001600160a01b031681525060055f5f6001600160a01b03166001600160a01b031681526020019081526020015f205f83600781518110610ca457610ca46112b0565b60209081029190910181015182528101919091526040015f2081518154829060ff19166001836003811115610cdb57610cdb6112c4565b0217905550602082810151825461ff00191661010060ff928316021783556040808501516001850180546001600160f81b0319166001600160f81b03928316179055606095860151600290950180546001600160a01b0319166001600160a01b03968716179055815160808101835260038152888701519093168385015260a08901511690820152918716928201929092525f8080526005909252825190915f516020612d805f395f51905f529184906008908110610d9c57610d9c6112b0565b60209081029190910181015182528101919091526040015f2081518154829060ff19166001836003811115610dd357610dd36112c4565b02179055506020820151815461ff00191661010060ff909216919091021781556040808301516001830180546001600160f81b0319166001600160f81b03909216919091179055606090920151600290910180546001600160a01b0319166001600160a01b039092169190911790558051608081019091528060038152602001836004602002015160ff16815260200184600660088110610e7657610e766112b0565b60200201516001600160f81b03168152602001856001600160a01b031681525060055f5f6001600160a01b03166001600160a01b031681526020019081526020015f205f83600981518110610ecd57610ecd6112b0565b60209081029190910181015182528101919091526040015f2081518154829060ff19166001836003811115610f0457610f046112c4565b02179055506020820151815461ff00191661010060ff909216919091021781556040808301516001830180546001600160f81b0319166001600160f81b03909216919091179055606090920151600290910180546001600160a01b0319166001600160a01b039092169190911790558051608081019091528060038152602001836005602002015160ff16815260200184600760088110610fa757610fa76112b0565b60200201516001600160f81b03168152602001856001600160a01b031681525060055f5f6001600160a01b03166001600160a01b031681526020019081526020015f205f83600a81518110610ffe57610ffe6112b0565b60209081029190910181015182528101919091526040015f2081518154829060ff19166001836003811115611035576110356112c4565b02179055506020820151815461ff00191661010060ff909216919091021781556040808301516001830180546001600160f81b0319166001600160f81b03909216919091179055606090920151600290910180546001600160a01b0319166001600160a01b039092169190911790555f80546301000000600160601b03191665278d00000000178155905162278d0091907fa7c1bd327e8be88867bc448d3515e6ed0e18d8e45e6916470fe3154fc21efa88908290a36040516001600160a01b038616905f907fc9e04b1ee54ac63d006722bdd59e0528d42e84263db6a5171b1cfe1bf6cd10d7908290a350505050506112d8565b6001600160a01b0381166111515760405163140efc4d60e21b815260040160405180910390fd5b50565b80516001600160a01b038116811461116a575f5ffd5b919050565b604051601f8201601f191681016001600160401b03811182821017156111a357634e487b7160e01b5f52604160045260245ffd5b604052919050565b5f82601f8301126111ba575f5ffd5b6111c460c061116f565b8060c08401858111156111d5575f5ffd5b845b818110156111fd57805160ff811681146111ef575f5ffd5b8452602093840193016111d7565b509095945050505050565b5f5f5f5f610200858703121561121c575f5ffd5b61122585611154565b935061123360208601611154565b925085605f860112611243575f5ffd5b61010061124f8161116f565b905080610140870188811115611263575f5ffd5b604088015b818110156112945780516001600160f81b0381168114611286575f5ffd5b845260209384019301611268565b508194506112a289826111ab565b935050505092959194509250565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b611a7b806112e55f395ff3fe608060405234801561000f575f5ffd5b50600436106100fb575f3560e01c8063911cf01411610093578063bec4d54e11610063578063bec4d54e146102b0578063e2cc5f3c146102e5578063e6e2be1614610307578063f33bd5be1461031a575f5ffd5b8063911cf014146101ea578063aa79b74114610223578063b6001e2414610236578063b82f038e1461029d575f5ffd5b8063531280c1116100ce578063531280c11461018f5780636247f6f2146101a25780636c8709ab146101b55780638ddc321f146101c8575f5ffd5b80631c88705d146100ff5780632ac1326b14610114578063420f68611461014b57806344c43a7d1461017c575b5f5ffd5b61011261010d36600461133c565b61033a565b005b61013661012236600461133c565b60026020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b5f5461016490600160601b90046001600160a01b031681565b6040516001600160a01b039091168152602001610142565b61011261018a36600461133c565b6103f4565b61011261019d366004611355565b610499565b6101126101b036600461133c565b61055b565b6101126101c3366004611377565b61061c565b5f546101d69062ffffff1681565b60405162ffffff9091168152602001610142565b6102156101f836600461140d565b805160208183018101805160038252928201919093012091525481565b604051908152602001610142565b61011261023136600461133c565b6106e4565b61028d6102443660046114a1565b600560209081525f928352604080842090915290825290208054600182015460029092015460ff8083169361010090930416916001600160f81b0316906001600160a01b031684565b60405161014294939291906114fd565b6101126102ab366004611549565b610788565b5f546102cb906301000000900468ffffffffffffffffff1681565b60405168ffffffffffffffffff9091168152602001610142565b6101366102f336600461133c565b60016020525f908152604090205460ff1681565b6101366103153660046115fe565b611146565b61032d61032836600461167f565b611216565b6040516101429190611696565b5f54600160601b90046001600160a01b0316331461036b576040516315cead3960e31b815260040160405180910390fd5b610374816112ad565b6001600160a01b0381165f9081526001602052604090205460ff166103ac57604051631f0f181560e21b815260040160405180910390fd5b6001600160a01b0381165f81815260016020526040808220805460ff19169055517f4c910b69fe65a61f7531b9c5042b2329ca7179c77290aa7e2eb3afa3c8511fd39190a250565b5f54600160601b90046001600160a01b03163314610425576040516315cead3960e31b815260040160405180910390fd5b61042e816112ad565b5f80546040516001600160a01b0380851693600160601b90930416917fc9e04b1ee54ac63d006722bdd59e0528d42e84263db6a5171b1cfe1bf6cd10d791a35f80546001600160a01b03909216600160601b026bffffffffffffffffffffffff909216919091179055565b5f54600160601b90046001600160a01b031633146104ca576040516315cead3960e31b815260040160405180910390fd5b62ffffff811615806104e45750620186a08162ffffff1610155b1561050e5760405163284b4c2f60e21b815262ffffff821660048201526024015b60405180910390fd5b5f805460405162ffffff808516939216917f493b9175b319f03f13b1025a4b52f390ab35b9d6f59b4f143f5967800961128e91a35f805462ffffff191662ffffff92909216919091179055565b5f54600160601b90046001600160a01b0316331461058c576040516315cead3960e31b815260040160405180910390fd5b610595816112ad565b6001600160a01b0381165f9081526001602052604090205460ff16156105ce57604051631a36501760e11b815260040160405180910390fd5b6001600160a01b0381165f818152600160208190526040808320805460ff1916909217909155517f6a65f90b1a644d2faac467a21e07e50e3f8fa5846e26231d30ae79a417d3d2629190a250565b5f54600160601b90046001600160a01b0316331461064d576040516315cead3960e31b815260040160405180910390fd5b5f805460405168ffffffffffffffffff80851693630100000090930416917fa7c1bd327e8be88867bc448d3515e6ed0e18d8e45e6916470fe3154fc21efa8891a38068ffffffffffffffffff165f036106b5575f80546bffffffffffffffffff000000191690555b5f805468ffffffffffffffffff9092166301000000026bffffffffffffffffff00000019909216919091179055565b5f54600160601b90046001600160a01b03163314610715576040516315cead3960e31b815260040160405180910390fd5b61071e816112ad565b6001600160a01b0381165f8181526002602052604090819020805460ff19811660ff9182161590811790925591517f3f7458521a03f141ff7274c8443bb095d3a975ed688d1a980f8a58510c29a0c79261077d92161515815260200190565b60405180910390a250565b5f54600160601b90046001600160a01b031633146107b9576040516315cead3960e31b815260040160405180910390fd5b6107c660208301836116cb565b159050806107e057506107dc60408301836116cb565b1590505b156107fe57604051630a8bf2b760e11b815260040160405180910390fd5b5f81516003811115610812576108126114c9565b0361083057604051631e719f3360e01b815260040160405180910390fd5b5f61083e60208401846116cb565b61084b60408601866116cb565b60405160200161085e9493929190611715565b60408051601f198184030181529181528151602092830120845160608601516001600160a01b03165f9081526005855283812083825290945291832080549194509060ff191660018360038111156108b8576108b86114c9565b02179055506002835160038111156108d2576108d26114c9565b03610bc2576040516451412d414960d81b60208201526025016040516020818303038152906040528051906020012084806020019061091191906116cb565b60405160200161092292919061173f565b60405160208183030381529060405280519060200120141580156109a457506040516351412d4360e01b60208201526024016040516020818303038152906040528051906020012084806020019061097a91906116cb565b60405160200161098b92919061173f565b6040516020818303038152906040528051906020012014155b8015610a0e57506040516328a096ab60e11b6020820152602401604051602081830303815290604052805190602001208480602001906109e491906116cb565b6040516020016109f592919061173f565b6040516020818303038152906040528051906020012014155b15610a3e57610a2060208501856116cb565b600260405163222a151760e11b815260040161050593929190611776565b60408301516001600160f81b031615801590610a65575060608301516001600160a01b0316155b15610a8357604051630e84ae9360e21b815260040160405180910390fd5b60408301516001600160f81b0316158015610aaa575060608301516001600160a01b031615155b15610acb57600260405163d5ff172960e01b815260040161050591906117a0565b60408301516001600160f81b031615610b6b5760608301516001600160a01b03165f9081526005602090815260408083208584529091528120600101546001600160f81b03169003610b1b575060015b60408381015160608501516001600160a01b03165f9081526005602090815283822086835290529190912060010180546001600160f81b0319166001600160f81b03909216919091179055610fa6565b60608301516001600160a01b03165f9081526005602090815260408083208584529091529020805461ffff191681556001810180546001600160f81b031916905560020180546001600160a01b0319169055610fa6565b600383516003811115610bd757610bd76114c9565b03610e1257604051624b504960e81b602082015260230160405160208183030381529060405280519060200120848060200190610c1491906116cb565b604051602001610c2592919061173f565b6040516020818303038152906040528051906020012014610c6b57610c4d60208501856116cb565b600360405163222a151760e11b815260040161050593929190611776565b60608301516001600160a01b0316610cda575f8281527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc60205260409020805461ffff191681556001810180546001600160f81b031916905560020180546001600160a01b0319169055610fa6565b826020015160ff165f03610d0157604051636ab3f8d560e11b815260040160405180910390fd5b82604001516001600160f81b03165f03610d3157600360405163d5ff172960e01b815260040161050591906117a0565b5f8281527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc60205260408120600101546001600160f81b03169003610d74575060015b6020838101515f8481527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc909252604091829020805461ff00191661010060ff90931692909202919091178155908401516001820180546001600160f81b0319166001600160f81b039092169190911790556060840151600290910180546001600160a01b0319166001600160a01b03909216919091179055610fa6565b60405165434f4e46494760d01b602082015260260160405160208183030381529060405280519060200120848060200190610e4d91906116cb565b604051602001610e5e92919061173f565b6040516020818303038152906040528051906020012014610ea457610e8660208501856116cb565b600160405163222a151760e11b815260040161050593929190611776565b60608301516001600160a01b0316610f13575f8281527f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b60205260409020805461ffff191681556001810180546001600160f81b031916905560020180546001600160a01b0319169055610fa6565b5f8281527f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b60205260409020600201546001600160a01b0316610f54575060015b60608301515f8381527f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b6020526040902060020180546001600160a01b0319166001600160a01b039092169190911790555b60608301516001600160a01b031615611091578015610ffe576003610fce60208601866116cb565b604051610fdc92919061173f565b9081526040519081900360200190208054905f610ff8836117c8565b91905055505b61100b60208501856116cb565b61101860408701876116cb565b60405160200161102b9493929190611715565b60408051601f198184030181529181525f848152600460205220906110509082611864565b507f308f9f55d3eeef9e8267285607d3dde765f53e18a5cdd7ed77e21e5633a6791b84838560405161108493929190611961565b60405180910390a1611140565b5f82815260046020526040902080546110a9906117e0565b1590506111405760036110bf60208601866116cb565b6040516110cd92919061173f565b9081526040519081900360200190208054905f6110e983611a1c565b90915550505f828152600460205260408120611104916112d7565b7f454f1484777e93d9fd2ad4a7fd63f5fa7a9edd73f994a2be242a7fae02c121c184838560405161113793929190611961565b60405180910390a15b50505050565b5f81816001600160a01b03861661115f5750600361117c565b5f196001600160a01b038716016111785750600161117c565b5060025b5f5b8281101561120757816003811115611198576111986114c9565b6001600160a01b0388165f908152600560205260408120908888858181106111c2576111c2611a31565b602090810292909201358352508101919091526040015f205460ff1660038111156111ef576111ef6114c9565b146111ff575f935050505061120f565b60010161117e565b506001925050505b9392505050565b60046020525f90815260409020805461122e906117e0565b80601f016020809104026020016040519081016040528092919081815260200182805461125a906117e0565b80156112a55780601f1061127c576101008083540402835291602001916112a5565b820191905f5260205f20905b81548152906001019060200180831161128857829003601f168201915b505050505081565b6001600160a01b0381166112d45760405163140efc4d60e21b815260040160405180910390fd5b50565b5080546112e3906117e0565b5f825580601f106112f2575050565b601f0160209004905f5260205f20908101906112d491905b8082111561131d575f815560010161130a565b5090565b80356001600160a01b0381168114611337575f5ffd5b919050565b5f6020828403121561134c575f5ffd5b61120f82611321565b5f60208284031215611365575f5ffd5b813562ffffff8116811461120f575f5ffd5b5f60208284031215611387575f5ffd5b813568ffffffffffffffffff8116811461120f575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516080810167ffffffffffffffff811182821017156113d6576113d661139f565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156114055761140561139f565b604052919050565b5f6020828403121561141d575f5ffd5b813567ffffffffffffffff811115611433575f5ffd5b8201601f81018413611443575f5ffd5b803567ffffffffffffffff81111561145d5761145d61139f565b611470601f8201601f19166020016113dc565b818152856020838501011115611484575f5ffd5b816020840160208301375f91810160200191909152949350505050565b5f5f604083850312156114b2575f5ffd5b6114bb83611321565b946020939093013593505050565b634e487b7160e01b5f52602160045260245ffd5b600481106114f957634e487b7160e01b5f52602160045260245ffd5b9052565b6080810161150b82876114dd565b60ff9490941660208201526001600160f81b039290921660408301526001600160a01b0316606090910152919050565b803560048110611337575f5ffd5b5f5f82840360a081121561155b575f5ffd5b833567ffffffffffffffff811115611571575f5ffd5b840160608187031215611582575f5ffd5b92506080601f1982011215611595575f5ffd5b5061159e6113b3565b6115aa6020850161153b565b8152604084013560ff811681146115bf575f5ffd5b602082015260608401356001600160f81b03811681146115dd575f5ffd5b60408201526115ee60808501611321565b6060820152809150509250929050565b5f5f5f60408486031215611610575f5ffd5b61161984611321565b9250602084013567ffffffffffffffff811115611634575f5ffd5b8401601f81018613611644575f5ffd5b803567ffffffffffffffff81111561165a575f5ffd5b8660208260051b840101111561166e575f5ffd5b939660209190910195509293505050565b5f6020828403121561168f575f5ffd5b5035919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f8335601e198436030181126116e0575f5ffd5b83018035915067ffffffffffffffff8211156116fa575f5ffd5b60200191503681900382131561170e575f5ffd5b9250929050565b838582375f8482016101d160f51b8152838560028301375f93016002019283525090949350505050565b818382375f9101908152919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b604081525f61178960408301858761174e565b905061179860208301846114dd565b949350505050565b602081016117ae82846114dd565b92915050565b634e487b7160e01b5f52601160045260245ffd5b5f600182016117d9576117d96117b4565b5060010190565b600181811c908216806117f457607f821691505b60208210810361181257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561185f57805f5260205f20601f840160051c8101602085101561183d5750805b601f840160051c820191505b8181101561185c575f8155600101611849565b50505b505050565b815167ffffffffffffffff81111561187e5761187e61139f565b6118928161188c84546117e0565b84611818565b6020601f8211600181146118c4575f83156118ad5750848201515b5f19600385901b1c1916600184901b17845561185c565b5f84815260208120601f198516915b828110156118f357878501518255602094850194600190920191016118d3565b508482101561191057868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f8335601e19843603018112611934575f5ffd5b830160208101925035905067ffffffffffffffff811115611953575f5ffd5b80360382131561170e575f5ffd5b60c0815261197a60c082016119758661153b565b6114dd565b5f611988602086018661191f565b606060e085015261199e6101208501828461174e565b9150506119ae604087018761191f565b84830360bf19016101008601526119c683828461174e565b93505050508360208301526119df6040830184516114dd565b602083015160ff1660608381019190915260408401516001600160f81b03166080840152909201516001600160a01b031660a09091015292915050565b5f81611a2a57611a2a6117b4565b505f190190565b634e487b7160e01b5f52603260045260245ffdfea2646970667358221220bbd13e299624d41ffda2bce0ba16c1372fd7c104fb546b34743a5dfaa8a012af64736f6c634300081e00331471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc000000000000000000000000c2f8d4b61e078160630b6c93c5c51ec6f8304e26000000000000000000000000ec051bb8876e78ba6a24e03cb07fbe1259e44c4700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000001
Deployed Bytecode
0x608060405234801561000f575f5ffd5b50600436106100fb575f3560e01c8063911cf01411610093578063bec4d54e11610063578063bec4d54e146102b0578063e2cc5f3c146102e5578063e6e2be1614610307578063f33bd5be1461031a575f5ffd5b8063911cf014146101ea578063aa79b74114610223578063b6001e2414610236578063b82f038e1461029d575f5ffd5b8063531280c1116100ce578063531280c11461018f5780636247f6f2146101a25780636c8709ab146101b55780638ddc321f146101c8575f5ffd5b80631c88705d146100ff5780632ac1326b14610114578063420f68611461014b57806344c43a7d1461017c575b5f5ffd5b61011261010d36600461133c565b61033a565b005b61013661012236600461133c565b60026020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b5f5461016490600160601b90046001600160a01b031681565b6040516001600160a01b039091168152602001610142565b61011261018a36600461133c565b6103f4565b61011261019d366004611355565b610499565b6101126101b036600461133c565b61055b565b6101126101c3366004611377565b61061c565b5f546101d69062ffffff1681565b60405162ffffff9091168152602001610142565b6102156101f836600461140d565b805160208183018101805160038252928201919093012091525481565b604051908152602001610142565b61011261023136600461133c565b6106e4565b61028d6102443660046114a1565b600560209081525f928352604080842090915290825290208054600182015460029092015460ff8083169361010090930416916001600160f81b0316906001600160a01b031684565b60405161014294939291906114fd565b6101126102ab366004611549565b610788565b5f546102cb906301000000900468ffffffffffffffffff1681565b60405168ffffffffffffffffff9091168152602001610142565b6101366102f336600461133c565b60016020525f908152604090205460ff1681565b6101366103153660046115fe565b611146565b61032d61032836600461167f565b611216565b6040516101429190611696565b5f54600160601b90046001600160a01b0316331461036b576040516315cead3960e31b815260040160405180910390fd5b610374816112ad565b6001600160a01b0381165f9081526001602052604090205460ff166103ac57604051631f0f181560e21b815260040160405180910390fd5b6001600160a01b0381165f81815260016020526040808220805460ff19169055517f4c910b69fe65a61f7531b9c5042b2329ca7179c77290aa7e2eb3afa3c8511fd39190a250565b5f54600160601b90046001600160a01b03163314610425576040516315cead3960e31b815260040160405180910390fd5b61042e816112ad565b5f80546040516001600160a01b0380851693600160601b90930416917fc9e04b1ee54ac63d006722bdd59e0528d42e84263db6a5171b1cfe1bf6cd10d791a35f80546001600160a01b03909216600160601b026bffffffffffffffffffffffff909216919091179055565b5f54600160601b90046001600160a01b031633146104ca576040516315cead3960e31b815260040160405180910390fd5b62ffffff811615806104e45750620186a08162ffffff1610155b1561050e5760405163284b4c2f60e21b815262ffffff821660048201526024015b60405180910390fd5b5f805460405162ffffff808516939216917f493b9175b319f03f13b1025a4b52f390ab35b9d6f59b4f143f5967800961128e91a35f805462ffffff191662ffffff92909216919091179055565b5f54600160601b90046001600160a01b0316331461058c576040516315cead3960e31b815260040160405180910390fd5b610595816112ad565b6001600160a01b0381165f9081526001602052604090205460ff16156105ce57604051631a36501760e11b815260040160405180910390fd5b6001600160a01b0381165f818152600160208190526040808320805460ff1916909217909155517f6a65f90b1a644d2faac467a21e07e50e3f8fa5846e26231d30ae79a417d3d2629190a250565b5f54600160601b90046001600160a01b0316331461064d576040516315cead3960e31b815260040160405180910390fd5b5f805460405168ffffffffffffffffff80851693630100000090930416917fa7c1bd327e8be88867bc448d3515e6ed0e18d8e45e6916470fe3154fc21efa8891a38068ffffffffffffffffff165f036106b5575f80546bffffffffffffffffff000000191690555b5f805468ffffffffffffffffff9092166301000000026bffffffffffffffffff00000019909216919091179055565b5f54600160601b90046001600160a01b03163314610715576040516315cead3960e31b815260040160405180910390fd5b61071e816112ad565b6001600160a01b0381165f8181526002602052604090819020805460ff19811660ff9182161590811790925591517f3f7458521a03f141ff7274c8443bb095d3a975ed688d1a980f8a58510c29a0c79261077d92161515815260200190565b60405180910390a250565b5f54600160601b90046001600160a01b031633146107b9576040516315cead3960e31b815260040160405180910390fd5b6107c660208301836116cb565b159050806107e057506107dc60408301836116cb565b1590505b156107fe57604051630a8bf2b760e11b815260040160405180910390fd5b5f81516003811115610812576108126114c9565b0361083057604051631e719f3360e01b815260040160405180910390fd5b5f61083e60208401846116cb565b61084b60408601866116cb565b60405160200161085e9493929190611715565b60408051601f198184030181529181528151602092830120845160608601516001600160a01b03165f9081526005855283812083825290945291832080549194509060ff191660018360038111156108b8576108b86114c9565b02179055506002835160038111156108d2576108d26114c9565b03610bc2576040516451412d414960d81b60208201526025016040516020818303038152906040528051906020012084806020019061091191906116cb565b60405160200161092292919061173f565b60405160208183030381529060405280519060200120141580156109a457506040516351412d4360e01b60208201526024016040516020818303038152906040528051906020012084806020019061097a91906116cb565b60405160200161098b92919061173f565b6040516020818303038152906040528051906020012014155b8015610a0e57506040516328a096ab60e11b6020820152602401604051602081830303815290604052805190602001208480602001906109e491906116cb565b6040516020016109f592919061173f565b6040516020818303038152906040528051906020012014155b15610a3e57610a2060208501856116cb565b600260405163222a151760e11b815260040161050593929190611776565b60408301516001600160f81b031615801590610a65575060608301516001600160a01b0316155b15610a8357604051630e84ae9360e21b815260040160405180910390fd5b60408301516001600160f81b0316158015610aaa575060608301516001600160a01b031615155b15610acb57600260405163d5ff172960e01b815260040161050591906117a0565b60408301516001600160f81b031615610b6b5760608301516001600160a01b03165f9081526005602090815260408083208584529091528120600101546001600160f81b03169003610b1b575060015b60408381015160608501516001600160a01b03165f9081526005602090815283822086835290529190912060010180546001600160f81b0319166001600160f81b03909216919091179055610fa6565b60608301516001600160a01b03165f9081526005602090815260408083208584529091529020805461ffff191681556001810180546001600160f81b031916905560020180546001600160a01b0319169055610fa6565b600383516003811115610bd757610bd76114c9565b03610e1257604051624b504960e81b602082015260230160405160208183030381529060405280519060200120848060200190610c1491906116cb565b604051602001610c2592919061173f565b6040516020818303038152906040528051906020012014610c6b57610c4d60208501856116cb565b600360405163222a151760e11b815260040161050593929190611776565b60608301516001600160a01b0316610cda575f8281527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc60205260409020805461ffff191681556001810180546001600160f81b031916905560020180546001600160a01b0319169055610fa6565b826020015160ff165f03610d0157604051636ab3f8d560e11b815260040160405180910390fd5b82604001516001600160f81b03165f03610d3157600360405163d5ff172960e01b815260040161050591906117a0565b5f8281527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc60205260408120600101546001600160f81b03169003610d74575060015b6020838101515f8481527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc909252604091829020805461ff00191661010060ff90931692909202919091178155908401516001820180546001600160f81b0319166001600160f81b039092169190911790556060840151600290910180546001600160a01b0319166001600160a01b03909216919091179055610fa6565b60405165434f4e46494760d01b602082015260260160405160208183030381529060405280519060200120848060200190610e4d91906116cb565b604051602001610e5e92919061173f565b6040516020818303038152906040528051906020012014610ea457610e8660208501856116cb565b600160405163222a151760e11b815260040161050593929190611776565b60608301516001600160a01b0316610f13575f8281527f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b60205260409020805461ffff191681556001810180546001600160f81b031916905560020180546001600160a01b0319169055610fa6565b5f8281527f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b60205260409020600201546001600160a01b0316610f54575060015b60608301515f8381527f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b6020526040902060020180546001600160a01b0319166001600160a01b039092169190911790555b60608301516001600160a01b031615611091578015610ffe576003610fce60208601866116cb565b604051610fdc92919061173f565b9081526040519081900360200190208054905f610ff8836117c8565b91905055505b61100b60208501856116cb565b61101860408701876116cb565b60405160200161102b9493929190611715565b60408051601f198184030181529181525f848152600460205220906110509082611864565b507f308f9f55d3eeef9e8267285607d3dde765f53e18a5cdd7ed77e21e5633a6791b84838560405161108493929190611961565b60405180910390a1611140565b5f82815260046020526040902080546110a9906117e0565b1590506111405760036110bf60208601866116cb565b6040516110cd92919061173f565b9081526040519081900360200190208054905f6110e983611a1c565b90915550505f828152600460205260408120611104916112d7565b7f454f1484777e93d9fd2ad4a7fd63f5fa7a9edd73f994a2be242a7fae02c121c184838560405161113793929190611961565b60405180910390a15b50505050565b5f81816001600160a01b03861661115f5750600361117c565b5f196001600160a01b038716016111785750600161117c565b5060025b5f5b8281101561120757816003811115611198576111986114c9565b6001600160a01b0388165f908152600560205260408120908888858181106111c2576111c2611a31565b602090810292909201358352508101919091526040015f205460ff1660038111156111ef576111ef6114c9565b146111ff575f935050505061120f565b60010161117e565b506001925050505b9392505050565b60046020525f90815260409020805461122e906117e0565b80601f016020809104026020016040519081016040528092919081815260200182805461125a906117e0565b80156112a55780601f1061127c576101008083540402835291602001916112a5565b820191905f5260205f20905b81548152906001019060200180831161128857829003601f168201915b505050505081565b6001600160a01b0381166112d45760405163140efc4d60e21b815260040160405180910390fd5b50565b5080546112e3906117e0565b5f825580601f106112f2575050565b601f0160209004905f5260205f20908101906112d491905b8082111561131d575f815560010161130a565b5090565b80356001600160a01b0381168114611337575f5ffd5b919050565b5f6020828403121561134c575f5ffd5b61120f82611321565b5f60208284031215611365575f5ffd5b813562ffffff8116811461120f575f5ffd5b5f60208284031215611387575f5ffd5b813568ffffffffffffffffff8116811461120f575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516080810167ffffffffffffffff811182821017156113d6576113d661139f565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156114055761140561139f565b604052919050565b5f6020828403121561141d575f5ffd5b813567ffffffffffffffff811115611433575f5ffd5b8201601f81018413611443575f5ffd5b803567ffffffffffffffff81111561145d5761145d61139f565b611470601f8201601f19166020016113dc565b818152856020838501011115611484575f5ffd5b816020840160208301375f91810160200191909152949350505050565b5f5f604083850312156114b2575f5ffd5b6114bb83611321565b946020939093013593505050565b634e487b7160e01b5f52602160045260245ffd5b600481106114f957634e487b7160e01b5f52602160045260245ffd5b9052565b6080810161150b82876114dd565b60ff9490941660208201526001600160f81b039290921660408301526001600160a01b0316606090910152919050565b803560048110611337575f5ffd5b5f5f82840360a081121561155b575f5ffd5b833567ffffffffffffffff811115611571575f5ffd5b840160608187031215611582575f5ffd5b92506080601f1982011215611595575f5ffd5b5061159e6113b3565b6115aa6020850161153b565b8152604084013560ff811681146115bf575f5ffd5b602082015260608401356001600160f81b03811681146115dd575f5ffd5b60408201526115ee60808501611321565b6060820152809150509250929050565b5f5f5f60408486031215611610575f5ffd5b61161984611321565b9250602084013567ffffffffffffffff811115611634575f5ffd5b8401601f81018613611644575f5ffd5b803567ffffffffffffffff81111561165a575f5ffd5b8660208260051b840101111561166e575f5ffd5b939660209190910195509293505050565b5f6020828403121561168f575f5ffd5b5035919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f8335601e198436030181126116e0575f5ffd5b83018035915067ffffffffffffffff8211156116fa575f5ffd5b60200191503681900382131561170e575f5ffd5b9250929050565b838582375f8482016101d160f51b8152838560028301375f93016002019283525090949350505050565b818382375f9101908152919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b604081525f61178960408301858761174e565b905061179860208301846114dd565b949350505050565b602081016117ae82846114dd565b92915050565b634e487b7160e01b5f52601160045260245ffd5b5f600182016117d9576117d96117b4565b5060010190565b600181811c908216806117f457607f821691505b60208210810361181257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561185f57805f5260205f20601f840160051c8101602085101561183d5750805b601f840160051c820191505b8181101561185c575f8155600101611849565b50505b505050565b815167ffffffffffffffff81111561187e5761187e61139f565b6118928161188c84546117e0565b84611818565b6020601f8211600181146118c4575f83156118ad5750848201515b5f19600385901b1c1916600184901b17845561185c565b5f84815260208120601f198516915b828110156118f357878501518255602094850194600190920191016118d3565b508482101561191057868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f8335601e19843603018112611934575f5ffd5b830160208101925035905067ffffffffffffffff811115611953575f5ffd5b80360382131561170e575f5ffd5b60c0815261197a60c082016119758661153b565b6114dd565b5f611988602086018661191f565b606060e085015261199e6101208501828461174e565b9150506119ae604087018761191f565b84830360bf19016101008601526119c683828461174e565b93505050508360208301526119df6040830184516114dd565b602083015160ff1660608381019190915260408401516001600160f81b03166080840152909201516001600160a01b031660a09091015292915050565b5f81611a2a57611a2a6117b4565b505f190190565b634e487b7160e01b5f52603260045260245ffdfea2646970667358221220bbd13e299624d41ffda2bce0ba16c1372fd7c104fb546b34743a5dfaa8a012af64736f6c634300081e0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c2f8d4b61e078160630b6c93c5c51ec6f8304e26000000000000000000000000ec051bb8876e78ba6a24e03cb07fbe1259e44c4700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000001
-----Decoded View---------------
Arg [0] : protocolAdmin_ (address): 0xc2f8D4B61E078160630b6C93c5C51EC6F8304e26
Arg [1] : echoOracle (address): 0xEC051Bb8876E78bA6a24E03cb07FBe1259E44C47
Arg [2] : oracleFees (uint248[8]): 0,0,0,0,0,0,0,0
Arg [3] : xKPIsRatio (uint8[6]): 5,20,50,10,5,1
-----Encoded View---------------
16 Constructor Arguments found :
Arg [0] : 000000000000000000000000c2f8d4b61e078160630b6c93c5c51ec6f8304e26
Arg [1] : 000000000000000000000000ec051bb8876e78ba6a24e03cb07fbe1259e44c47
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] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000014
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000032
Arg [13] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [14] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000001
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in FRAX
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.