Overview
ETH Balance
0 ETH
ETH Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
125246443 | 86 days ago | 0.002132744415603 ETH | ||||
125246443 | 86 days ago | 0.000021327444156 ETH | ||||
125246443 | 86 days ago | 0.002154071859759 ETH | ||||
125243817 | 86 days ago | 0.002134702292269 ETH | ||||
125243817 | 86 days ago | 0.000021347022922 ETH | ||||
125243817 | 86 days ago | 0.002156049315192 ETH | ||||
125211903 | 86 days ago | 0.002113940212423 ETH | ||||
125211903 | 86 days ago | 0.000029705258329 ETH | ||||
125211903 | 86 days ago | 0.002143645470753 ETH | ||||
125203102 | 87 days ago | 0.002103845830177 ETH | ||||
125203102 | 87 days ago | 0.000017788962952 ETH | ||||
125203102 | 87 days ago | 0.00212163479313 ETH | ||||
125195262 | 87 days ago | 0.002122596212528 ETH | ||||
125195262 | 87 days ago | 0.000027868160025 ETH | ||||
125195262 | 87 days ago | 0.002150464372554 ETH | ||||
125157349 | 88 days ago | 0.002132485707227 ETH | ||||
125157349 | 88 days ago | 0.000021324857072 ETH | ||||
125157349 | 88 days ago | 0.0021538105643 ETH | ||||
125138441 | 88 days ago | 0.002156428758464 ETH | ||||
125138441 | 88 days ago | 0.000021564287584 ETH | ||||
125138441 | 88 days ago | 0.002177993046048 ETH | ||||
125133556 | 88 days ago | 0.004348166378238 ETH | ||||
125133556 | 88 days ago | 0.000043481663782 ETH | ||||
125133556 | 88 days ago | 0.00439164804202 ETH | ||||
125116165 | 89 days ago | 0.002193717736444 ETH |
Loading...
Loading
Contract Name:
StableFeeMiddleware
Compiler Version
v0.8.14+commit.80d49f37
Optimization Enabled:
Yes with 200 runs
Other Settings:
london EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.14; import { AggregatorV3Interface } from "chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol"; import { ReentrancyGuard } from "openzeppelin-contracts/contracts/security/ReentrancyGuard.sol"; import { ICyberIdMiddleware } from "../../interfaces/ICyberIdMiddleware.sol"; import { ITokenReceiver } from "../../interfaces/ITokenReceiver.sol"; import { DataTypes } from "../../libraries/DataTypes.sol"; import { LowerCaseCyberIdMiddleware } from "./base/LowerCaseCyberIdMiddleware.sol"; contract StableFeeMiddleware is LowerCaseCyberIdMiddleware, ReentrancyGuard { /*////////////////////////////////////////////////////////////// STORAGE //////////////////////////////////////////////////////////////*/ /** * @notice ETH/USD Oracle address. */ AggregatorV3Interface public immutable usdOracle; /** * @notice TokenReceiver contract address. */ ITokenReceiver public immutable tokenReceiver; /** * If true, the middleware will charge the fee to token receiver. */ bool public rebateEnabled; /** * @notice The address that receives the fee. */ address public recipient; /** * @notice The price of each letter in USD. */ uint256 public price1Letter; uint256 public price2Letter; uint256 public price3Letter; uint256 public price4Letter; uint256 public price5Letter; uint256 public price6Letter; uint256 public price7To11Letter; uint256 public price12AndMoreLetter; /*////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event RebateChanged(bool rebateEnabled); event RecipientChanged(address recipient); event StableFeeChanged( uint256 price1Letter, uint256 price2Letter, uint256 price3Letter, uint256 price4Letter, uint256 price5Letter, uint256 price6Letter, uint256 price7To11Letter, uint256 price12AndMoreLetter ); /*////////////////////////////////////////////////////////////// CONSTRUCTOR //////////////////////////////////////////////////////////////*/ constructor( address _oracleAddress, address _tokenReceiver, address cyberId ) LowerCaseCyberIdMiddleware(cyberId) { usdOracle = AggregatorV3Interface(_oracleAddress); tokenReceiver = ITokenReceiver(_tokenReceiver); } /*////////////////////////////////////////////////////////////// ICyberIdMiddleware OVERRIDES //////////////////////////////////////////////////////////////*/ /// @inheritdoc ICyberIdMiddleware function setMwData(bytes calldata data) external override onlyNameRegistry { ( bool _rebateEnabled, address _recipient, uint256[8] memory prices ) = abi.decode(data, (bool, address, uint256[8])); rebateEnabled = _rebateEnabled; recipient = _recipient; price1Letter = prices[0]; price2Letter = prices[1]; price3Letter = prices[2]; price4Letter = prices[3]; price5Letter = prices[4]; price6Letter = prices[5]; price7To11Letter = prices[6]; price12AndMoreLetter = prices[7]; emit RebateChanged(_rebateEnabled); emit RecipientChanged(_recipient); emit StableFeeChanged( prices[0], prices[1], prices[2], prices[3], prices[4], prices[5], prices[6], prices[7] ); } /// @inheritdoc ICyberIdMiddleware function preRegister( DataTypes.RegisterCyberIdParams calldata params, bytes calldata ) external payable override onlyNameRegistry nonReentrant returns (uint256) { uint256 cost = getPriceWei(params.cid); _chargeAndRefundOverPayment(cost, params.to, params.msgSender); return cost; } /// @inheritdoc ICyberIdMiddleware function skipCommit() external pure virtual override returns (bool) { return true; } /*////////////////////////////////////////////////////////////// PUBLIC VIEW //////////////////////////////////////////////////////////////*/ function getPriceWei(string calldata cid) public view returns (uint256) { return _attoUSDToWei(_getUSDPrice(cid)); } /*////////////////////////////////////////////////////////////// INTERNAL LOGIC //////////////////////////////////////////////////////////////*/ function _getUSDPrice(string calldata cid) internal view returns (uint256) { // LowerCaseCyberIdMiddleware ensures that each cid character only occupies 1 byte uint256 len = bytes(cid).length; uint256 usdPrice; if (len >= 12) { usdPrice = price12AndMoreLetter; } else if (len >= 7) { usdPrice = price7To11Letter; } else if (len == 6) { usdPrice = price6Letter; } else if (len == 5) { usdPrice = price5Letter; } else if (len == 4) { usdPrice = price4Letter; } else if (len == 3) { usdPrice = price3Letter; } else if (len == 2) { usdPrice = price2Letter; } else { usdPrice = price1Letter; } return usdPrice; } function _getPrice() internal view returns (int256) { // prettier-ignore ( uint80 roundID, int price, /* uint startedAt */, uint updatedAt, /*uint80 answeredInRound*/ ) = usdOracle.latestRoundData(); require(roundID != 0, "INVALID_ORACLE_ROUND_ID"); require(price > 0, "INVALID_ORACLE_PRICE"); require(updatedAt > block.timestamp - 3 hours, "STALE_ORACLE_PRICE"); return price; } function _attoUSDToWei(uint256 amount) internal view returns (uint256) { uint256 ethPrice = uint256(_getPrice()); return (amount * 1e8) / ethPrice; } function _chargeAndRefundOverPayment( uint256 cost, address depositTo, address refundTo ) internal { require(msg.value >= cost, "INSUFFICIENT_FUNDS"); /** * Already checked msg.value >= cost */ uint256 overpayment; unchecked { overpayment = msg.value - cost; } if (overpayment > 0) { (bool refundSuccess, ) = refundTo.call{ value: overpayment }(""); require(refundSuccess, "REFUND_FAILED"); } if (rebateEnabled) { tokenReceiver.depositTo{ value: cost }(depositTo); } else { (bool chargeSuccess, ) = recipient.call{ value: cost }(""); require(chargeSuccess, "CHARGE_FAILED"); } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface AggregatorV3Interface { function decimals() external view returns (uint8); function description() external view returns (string memory); function version() external view returns (uint256); function getRoundData(uint80 _roundId) external view returns ( uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound ); function latestRoundData() external view returns ( uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound ); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be _NOT_ENTERED require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.14; import { DataTypes } from "../libraries/DataTypes.sol"; interface ICyberIdMiddleware { /** * @notice Sets data for middleware. * * @param data Extra data to set. */ function setMwData(bytes calldata data) external; /** * @notice Indicates if commit-reveal should be skipped. */ function skipCommit() external pure returns (bool); /** * @notice Process that runs before the register happens. * * @param params The params for register cid. * @param data Extra data to process. */ function preRegister( DataTypes.RegisterCyberIdParams calldata params, bytes calldata data ) external payable returns (uint256); /** * @notice Validates the name pattern. * * @param name The name to validate. */ function namePatternValid( string calldata name ) external view returns (bool); }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.14; /** * @title TokenReceiver * @author CyberConnect * @notice A contract that receive native token and record the amount. * The deposit only record the cumulative amount and withdraw won't affect * the deposit value. */ interface ITokenReceiver { function depositTo(address to) external payable; function withdraw(address to, uint256 amount) external; }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.14; library DataTypes { struct EIP712Signature { uint8 v; bytes32 r; bytes32 s; uint256 deadline; } struct MetadataPair { string key; string value; } struct RegisterNameParams { address msgSender; string name; bytes32 parentNode; address to; } struct RegisterCyberIdParams { address msgSender; string cid; address to; } struct BatchRegisterCyberIdParams { string cid; address to; address resolver; } }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.14; import { ICyberIdMiddleware } from "../../../interfaces/ICyberIdMiddleware.sol"; abstract contract LowerCaseCyberIdMiddleware is ICyberIdMiddleware { /*////////////////////////////////////////////////////////////// STORAGE //////////////////////////////////////////////////////////////*/ address public immutable NAME_REGISTRY; // solhint-disable-line /*////////////////////////////////////////////////////////////// CONSTRUCTOR //////////////////////////////////////////////////////////////*/ constructor(address nameRegistry) { NAME_REGISTRY = nameRegistry; } /*////////////////////////////////////////////////////////////// MODIFIERS //////////////////////////////////////////////////////////////*/ /** * @dev Reverts if called by any account other than the name registry. */ modifier onlyNameRegistry() { require(NAME_REGISTRY == msg.sender, "NOT_NAME_REGISTRY"); _; } /*////////////////////////////////////////////////////////////// ICyberIdMiddleware OVERRIDES //////////////////////////////////////////////////////////////*/ /// @inheritdoc ICyberIdMiddleware function skipCommit() external pure virtual override returns (bool) { return false; } /// @inheritdoc ICyberIdMiddleware function namePatternValid( string calldata name ) external pure virtual override returns (bool) { bytes memory byteName = bytes(name); if (byteName.length > 20 || byteName.length < 1) { return false; } uint256 byteNameLength = byteName.length; for (uint256 i = 0; i < byteNameLength; ) { bytes1 b = byteName[i]; if ((b >= "0" && b <= "9") || (b >= "a" && b <= "z") || b == "_") { unchecked { ++i; } } else { return false; } } return true; } }
{ "remappings": [ "@ens/=lib/ens-contracts/contracts/", "@ensdomains/=lib/", "@openzeppelin/=lib/openzeppelin-contracts/", "buffer/=lib/buffer/contracts/", "chainlink/=lib/chainlink/", "ds-test/=lib/forge-std/lib/ds-test/src/", "ens-contracts/=lib/ens-contracts/contracts/", "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/", "forge-std/=lib/forge-std/src/", "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/", "openzeppelin/=lib/openzeppelin-contracts-upgradeable/contracts/", "solmate/=lib/solmate/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "bytecodeHash": "ipfs" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "london", "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_oracleAddress","type":"address"},{"internalType":"address","name":"_tokenReceiver","type":"address"},{"internalType":"address","name":"cyberId","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"rebateEnabled","type":"bool"}],"name":"RebateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"recipient","type":"address"}],"name":"RecipientChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"price1Letter","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price2Letter","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price3Letter","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price4Letter","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price5Letter","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price6Letter","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price7To11Letter","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price12AndMoreLetter","type":"uint256"}],"name":"StableFeeChanged","type":"event"},{"inputs":[],"name":"NAME_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"cid","type":"string"}],"name":"getPriceWei","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"namePatternValid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"string","name":"cid","type":"string"},{"internalType":"address","name":"to","type":"address"}],"internalType":"struct DataTypes.RegisterCyberIdParams","name":"params","type":"tuple"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"preRegister","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"price12AndMoreLetter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price1Letter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price2Letter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price3Letter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price4Letter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price5Letter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price6Letter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price7To11Letter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rebateEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"setMwData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"skipCommit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tokenReceiver","outputs":[{"internalType":"contract ITokenReceiver","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"usdOracle","outputs":[{"internalType":"contract AggregatorV3Interface","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60e060405234801561001057600080fd5b5060405161105738038061105783398101604081905261002f9161006d565b6001600160a01b03908116608052600160005591821660a0521660c0526100b0565b80516001600160a01b038116811461006857600080fd5b919050565b60008060006060848603121561008257600080fd5b61008b84610051565b925061009960208501610051565b91506100a760408501610051565b90509250925092565b60805160a05160c051610f5c6100fb600039600081816102b0015261096c0152600081816102e40152610a770152600081816102660152818161037d01526104430152610f5c6000f3fe6080604052600436106101085760003560e01c80637ac3e6ea11610095578063c8a4271f11610064578063c8a4271f146102d2578063cb8dd1e914610306578063cd5d2c741461031c578063d820ed4214610332578063f1ebaa661461034857600080fd5b80637ac3e6ea14610234578063a05c261614610254578063a200e15314610288578063a3e295bc1461029e57600080fd5b8063316a7878116100dc578063316a7878146101965780633da6aaed146101ac57806342a0d9b4146101bf57806359b6b86c146101e157806366d003ac146101f757600080fd5b8062d48e461461010d5780630261d9421461014057806306534e0c146101565780632c0fd74c14610180575b600080fd5b34801561011957600080fd5b5061012d610128366004610c41565b61035c565b6040519081526020015b60405180910390f35b34801561014c57600080fd5b5061012d60075481565b34801561016257600080fd5b506001546101709060ff1681565b6040519015158152602001610137565b34801561018c57600080fd5b5061012d60025481565b3480156101a257600080fd5b5061012d60085481565b61012d6101ba366004610c83565b610379565b3480156101cb57600080fd5b506101df6101da366004610c41565b610441565b005b3480156101ed57600080fd5b5061012d60065481565b34801561020357600080fd5b5060015461021c9061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610137565b34801561024057600080fd5b5061017061024f366004610c41565b61062a565b34801561026057600080fd5b5061021c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561029457600080fd5b5061012d60045481565b3480156102aa57600080fd5b5061021c7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102de57600080fd5b5061021c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561031257600080fd5b5061012d60095481565b34801561032857600080fd5b5061012d60035481565b34801561033e57600080fd5b5061012d60055481565b34801561035457600080fd5b506001610170565b600061037061036b8484610756565b6107de565b90505b92915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146103ec5760405162461bcd60e51b81526020600482015260116024820152704e4f545f4e414d455f524547495354525960781b60448201526064015b60405180910390fd5b6103f4610804565b60006104066101286020870187610cf4565b905061042e8161041c6060880160408901610d53565b6104296020890189610d53565b61085d565b905061043a6001600055565b9392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146104ad5760405162461bcd60e51b81526020600482015260116024820152704e4f545f4e414d455f524547495354525960781b60448201526064016103e3565b600080806104bd84860186610d86565b600180546001600160a81b031916841515610100600160a81b03198116919091176101006001600160a01b038616021790915581516002556020808301516003556040808401516004556060840151600555608084015160065560a084015160075560c084015160085560e08401516009555191825293965091945092507f308ece3d6d07fc00169d460bea2cf86425f604ce98acfdc41bf1797b55588656910160405180910390a16040516001600160a01b03831681527fff2d07bd188a9eb41acbc4a7db39e18956c95ab7f54f434d97849bf6206e577c9060200160405180910390a1805160208083015160408085015160608087015160808089015160a0808b015160c0808d015160e0808f01518b519e8f529c8e019b909b52988c0197909752948a0193909352908801528601528401528201527f7489fa6294e4b179863f8681d89f7ebfb40d35cc39abb5243fef5798a5253021906101000160405180910390a15050505050565b60008083838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050825192935050601490911190508061067a575060018151105b15610689576000915050610373565b805160005b8181101561074a5760008382815181106106aa576106aa610e33565b01602001516001600160f81b0319169050600360fc1b81108015906106dd5750603960f81b6001600160f81b0319821611155b8061070f5750606160f81b6001600160f81b031982161080159061070f5750603d60f91b6001600160f81b0319821611155b806107275750605f60f81b6001600160f81b03198216145b1561073757816001019150610744565b6000945050505050610373565b5061068e565b50600195945050505050565b60008181600c821061076b57506009546107d6565b6007821061077c57506008546107d6565b8160060361078d57506007546107d6565b8160050361079e57506006546107d6565b816004036107af57506005546107d6565b816003036107c057506004546107d6565b816002036107d157506003546107d6565b506002545b949350505050565b6000806107e9610a6f565b9050806107fa846305f5e100610e5f565b61043a9190610e7e565b6002600054036108565760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103e3565b6002600055565b823410156108a25760405162461bcd60e51b8152602060048201526012602482015271494e53554646494349454e545f46554e445360701b60448201526064016103e3565b34838103908414610942576000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146108fa576040519150601f19603f3d011682016040523d82523d6000602084013e6108ff565b606091505b50509050806109405760405162461bcd60e51b815260206004820152600d60248201526c14915195539117d19052531151609a1b60448201526064016103e3565b505b60015460ff16156109cf5760405163b760faf960e01b81526001600160a01b0384811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063b760faf99086906024016000604051808303818588803b1580156109b157600080fd5b505af11580156109c5573d6000803e3d6000fd5b5050505050610a69565b60015460405160009161010090046001600160a01b03169086908381818185875af1925050503d8060008114610a21576040519150601f19603f3d011682016040523d82523d6000602084013e610a26565b606091505b5050905080610a675760405162461bcd60e51b815260206004820152600d60248201526c10d2105491d157d19052531151609a1b60448201526064016103e3565b505b50505050565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af79190610ebf565b50935050925092508269ffffffffffffffffffff16600003610b5b5760405162461bcd60e51b815260206004820152601760248201527f494e56414c49445f4f5241434c455f524f554e445f494400000000000000000060448201526064016103e3565b60008213610ba25760405162461bcd60e51b8152602060048201526014602482015273494e56414c49445f4f5241434c455f505249434560601b60448201526064016103e3565b610bae612a3042610f0f565b8111610bf15760405162461bcd60e51b81526020600482015260126024820152715354414c455f4f5241434c455f505249434560701b60448201526064016103e3565b5092915050565b60008083601f840112610c0a57600080fd5b50813567ffffffffffffffff811115610c2257600080fd5b602083019150836020828501011115610c3a57600080fd5b9250929050565b60008060208385031215610c5457600080fd5b823567ffffffffffffffff811115610c6b57600080fd5b610c7785828601610bf8565b90969095509350505050565b600080600060408486031215610c9857600080fd5b833567ffffffffffffffff80821115610cb057600080fd5b9085019060608288031215610cc457600080fd5b90935060208501359080821115610cda57600080fd5b50610ce786828701610bf8565b9497909650939450505050565b6000808335601e19843603018112610d0b57600080fd5b83018035915067ffffffffffffffff821115610d2657600080fd5b602001915036819003821315610c3a57600080fd5b6001600160a01b0381168114610d5057600080fd5b50565b600060208284031215610d6557600080fd5b813561043a81610d3b565b634e487b7160e01b600052604160045260246000fd5b6000806000610140808587031215610d9d57600080fd5b84358015158114610dad57600080fd5b9350602085810135610dbe81610d3b565b9350605f86018713610dcf57600080fd5b604051610100810181811067ffffffffffffffff82111715610df357610df3610d70565b604052918601918088841115610e0857600080fd5b604088015b84811015610e245780358252908301908301610e0d565b50508093505050509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615610e7957610e79610e49565b500290565b600082610e9b57634e487b7160e01b600052601260045260246000fd5b500490565b805169ffffffffffffffffffff81168114610eba57600080fd5b919050565b600080600080600060a08688031215610ed757600080fd5b610ee086610ea0565b9450602086015193506040860151925060608601519150610f0360808701610ea0565b90509295509295909350565b600082821015610f2157610f21610e49565b50039056fea2646970667358221220257f73e755dd98d0f04aa3a62a468e48c2c67816eeadaca4ae8f08cfd4f4d7eb64736f6c634300080e003300000000000000000000000013e3ee699d1909e989722e753853ae30b17e08c5000000000000000000000000cd97405fb58e94954e825e46db192b916a45d412000000000000000000000000e55793f55df1f1b5037eba41881663583d4f9b24
Deployed Bytecode
0x6080604052600436106101085760003560e01c80637ac3e6ea11610095578063c8a4271f11610064578063c8a4271f146102d2578063cb8dd1e914610306578063cd5d2c741461031c578063d820ed4214610332578063f1ebaa661461034857600080fd5b80637ac3e6ea14610234578063a05c261614610254578063a200e15314610288578063a3e295bc1461029e57600080fd5b8063316a7878116100dc578063316a7878146101965780633da6aaed146101ac57806342a0d9b4146101bf57806359b6b86c146101e157806366d003ac146101f757600080fd5b8062d48e461461010d5780630261d9421461014057806306534e0c146101565780632c0fd74c14610180575b600080fd5b34801561011957600080fd5b5061012d610128366004610c41565b61035c565b6040519081526020015b60405180910390f35b34801561014c57600080fd5b5061012d60075481565b34801561016257600080fd5b506001546101709060ff1681565b6040519015158152602001610137565b34801561018c57600080fd5b5061012d60025481565b3480156101a257600080fd5b5061012d60085481565b61012d6101ba366004610c83565b610379565b3480156101cb57600080fd5b506101df6101da366004610c41565b610441565b005b3480156101ed57600080fd5b5061012d60065481565b34801561020357600080fd5b5060015461021c9061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610137565b34801561024057600080fd5b5061017061024f366004610c41565b61062a565b34801561026057600080fd5b5061021c7f000000000000000000000000e55793f55df1f1b5037eba41881663583d4f9b2481565b34801561029457600080fd5b5061012d60045481565b3480156102aa57600080fd5b5061021c7f000000000000000000000000cd97405fb58e94954e825e46db192b916a45d41281565b3480156102de57600080fd5b5061021c7f00000000000000000000000013e3ee699d1909e989722e753853ae30b17e08c581565b34801561031257600080fd5b5061012d60095481565b34801561032857600080fd5b5061012d60035481565b34801561033e57600080fd5b5061012d60055481565b34801561035457600080fd5b506001610170565b600061037061036b8484610756565b6107de565b90505b92915050565b60007f000000000000000000000000e55793f55df1f1b5037eba41881663583d4f9b246001600160a01b031633146103ec5760405162461bcd60e51b81526020600482015260116024820152704e4f545f4e414d455f524547495354525960781b60448201526064015b60405180910390fd5b6103f4610804565b60006104066101286020870187610cf4565b905061042e8161041c6060880160408901610d53565b6104296020890189610d53565b61085d565b905061043a6001600055565b9392505050565b7f000000000000000000000000e55793f55df1f1b5037eba41881663583d4f9b246001600160a01b031633146104ad5760405162461bcd60e51b81526020600482015260116024820152704e4f545f4e414d455f524547495354525960781b60448201526064016103e3565b600080806104bd84860186610d86565b600180546001600160a81b031916841515610100600160a81b03198116919091176101006001600160a01b038616021790915581516002556020808301516003556040808401516004556060840151600555608084015160065560a084015160075560c084015160085560e08401516009555191825293965091945092507f308ece3d6d07fc00169d460bea2cf86425f604ce98acfdc41bf1797b55588656910160405180910390a16040516001600160a01b03831681527fff2d07bd188a9eb41acbc4a7db39e18956c95ab7f54f434d97849bf6206e577c9060200160405180910390a1805160208083015160408085015160608087015160808089015160a0808b015160c0808d015160e0808f01518b519e8f529c8e019b909b52988c0197909752948a0193909352908801528601528401528201527f7489fa6294e4b179863f8681d89f7ebfb40d35cc39abb5243fef5798a5253021906101000160405180910390a15050505050565b60008083838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050825192935050601490911190508061067a575060018151105b15610689576000915050610373565b805160005b8181101561074a5760008382815181106106aa576106aa610e33565b01602001516001600160f81b0319169050600360fc1b81108015906106dd5750603960f81b6001600160f81b0319821611155b8061070f5750606160f81b6001600160f81b031982161080159061070f5750603d60f91b6001600160f81b0319821611155b806107275750605f60f81b6001600160f81b03198216145b1561073757816001019150610744565b6000945050505050610373565b5061068e565b50600195945050505050565b60008181600c821061076b57506009546107d6565b6007821061077c57506008546107d6565b8160060361078d57506007546107d6565b8160050361079e57506006546107d6565b816004036107af57506005546107d6565b816003036107c057506004546107d6565b816002036107d157506003546107d6565b506002545b949350505050565b6000806107e9610a6f565b9050806107fa846305f5e100610e5f565b61043a9190610e7e565b6002600054036108565760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103e3565b6002600055565b823410156108a25760405162461bcd60e51b8152602060048201526012602482015271494e53554646494349454e545f46554e445360701b60448201526064016103e3565b34838103908414610942576000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146108fa576040519150601f19603f3d011682016040523d82523d6000602084013e6108ff565b606091505b50509050806109405760405162461bcd60e51b815260206004820152600d60248201526c14915195539117d19052531151609a1b60448201526064016103e3565b505b60015460ff16156109cf5760405163b760faf960e01b81526001600160a01b0384811660048301527f000000000000000000000000cd97405fb58e94954e825e46db192b916a45d412169063b760faf99086906024016000604051808303818588803b1580156109b157600080fd5b505af11580156109c5573d6000803e3d6000fd5b5050505050610a69565b60015460405160009161010090046001600160a01b03169086908381818185875af1925050503d8060008114610a21576040519150601f19603f3d011682016040523d82523d6000602084013e610a26565b606091505b5050905080610a675760405162461bcd60e51b815260206004820152600d60248201526c10d2105491d157d19052531151609a1b60448201526064016103e3565b505b50505050565b6000806000807f00000000000000000000000013e3ee699d1909e989722e753853ae30b17e08c56001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af79190610ebf565b50935050925092508269ffffffffffffffffffff16600003610b5b5760405162461bcd60e51b815260206004820152601760248201527f494e56414c49445f4f5241434c455f524f554e445f494400000000000000000060448201526064016103e3565b60008213610ba25760405162461bcd60e51b8152602060048201526014602482015273494e56414c49445f4f5241434c455f505249434560601b60448201526064016103e3565b610bae612a3042610f0f565b8111610bf15760405162461bcd60e51b81526020600482015260126024820152715354414c455f4f5241434c455f505249434560701b60448201526064016103e3565b5092915050565b60008083601f840112610c0a57600080fd5b50813567ffffffffffffffff811115610c2257600080fd5b602083019150836020828501011115610c3a57600080fd5b9250929050565b60008060208385031215610c5457600080fd5b823567ffffffffffffffff811115610c6b57600080fd5b610c7785828601610bf8565b90969095509350505050565b600080600060408486031215610c9857600080fd5b833567ffffffffffffffff80821115610cb057600080fd5b9085019060608288031215610cc457600080fd5b90935060208501359080821115610cda57600080fd5b50610ce786828701610bf8565b9497909650939450505050565b6000808335601e19843603018112610d0b57600080fd5b83018035915067ffffffffffffffff821115610d2657600080fd5b602001915036819003821315610c3a57600080fd5b6001600160a01b0381168114610d5057600080fd5b50565b600060208284031215610d6557600080fd5b813561043a81610d3b565b634e487b7160e01b600052604160045260246000fd5b6000806000610140808587031215610d9d57600080fd5b84358015158114610dad57600080fd5b9350602085810135610dbe81610d3b565b9350605f86018713610dcf57600080fd5b604051610100810181811067ffffffffffffffff82111715610df357610df3610d70565b604052918601918088841115610e0857600080fd5b604088015b84811015610e245780358252908301908301610e0d565b50508093505050509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615610e7957610e79610e49565b500290565b600082610e9b57634e487b7160e01b600052601260045260246000fd5b500490565b805169ffffffffffffffffffff81168114610eba57600080fd5b919050565b600080600080600060a08688031215610ed757600080fd5b610ee086610ea0565b9450602086015193506040860151925060608601519150610f0360808701610ea0565b90509295509295909350565b600082821015610f2157610f21610e49565b50039056fea2646970667358221220257f73e755dd98d0f04aa3a62a468e48c2c67816eeadaca4ae8f08cfd4f4d7eb64736f6c634300080e0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000013e3ee699d1909e989722e753853ae30b17e08c5000000000000000000000000cd97405fb58e94954e825e46db192b916a45d412000000000000000000000000e55793f55df1f1b5037eba41881663583d4f9b24
-----Decoded View---------------
Arg [0] : _oracleAddress (address): 0x13e3Ee699D1909E989722E753853AE30b17e08c5
Arg [1] : _tokenReceiver (address): 0xcd97405Fb58e94954E825E46dB192b916A45d412
Arg [2] : cyberId (address): 0xe55793f55dF1F1B5037ebA41881663583d4f9B24
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 00000000000000000000000013e3ee699d1909e989722e753853ae30b17e08c5
Arg [1] : 000000000000000000000000cd97405fb58e94954e825e46db192b916a45d412
Arg [2] : 000000000000000000000000e55793f55df1f1b5037eba41881663583d4f9b24
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.