Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 32 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Add Chunk To Scr... | 19165931 | 781 days ago | IN | 0 ETH | 0.01385774 | ||||
| Create Script | 19165930 | 781 days ago | IN | 0 ETH | 0.0011683 | ||||
| Add Chunk To Scr... | 19165709 | 781 days ago | IN | 0 ETH | 0.01857349 | ||||
| Create Script | 19165708 | 781 days ago | IN | 0 ETH | 0.00162061 | ||||
| Add Chunk To Scr... | 19165707 | 781 days ago | IN | 0 ETH | 0.00231037 | ||||
| Create Script | 19165706 | 781 days ago | IN | 0 ETH | 0.00151202 | ||||
| Add Chunk To Scr... | 18045775 | 938 days ago | IN | 0 ETH | 0.04481755 | ||||
| Create Script | 18045774 | 938 days ago | IN | 0 ETH | 0.00140027 | ||||
| Add Chunk To Scr... | 18045773 | 938 days ago | IN | 0 ETH | 0.03215311 | ||||
| Create Script | 18045772 | 938 days ago | IN | 0 ETH | 0.00126489 | ||||
| Add Chunk To Scr... | 18045771 | 938 days ago | IN | 0 ETH | 0.03485749 | ||||
| Create Script | 18045769 | 938 days ago | IN | 0 ETH | 0.00119835 | ||||
| Add Chunk To Scr... | 18045768 | 938 days ago | IN | 0 ETH | 0.04440203 | ||||
| Create Script | 18045767 | 938 days ago | IN | 0 ETH | 0.00119243 | ||||
| Add Chunk To Scr... | 18045748 | 938 days ago | IN | 0 ETH | 0.05093365 | ||||
| Create Script | 18045747 | 938 days ago | IN | 0 ETH | 0.00139827 | ||||
| Add Chunk To Scr... | 17803905 | 972 days ago | IN | 0 ETH | 0.02317175 | ||||
| Add Chunk To Scr... | 17803905 | 972 days ago | IN | 0 ETH | 0.08531639 | ||||
| Add Chunk To Scr... | 17803905 | 972 days ago | IN | 0 ETH | 0.085326 | ||||
| Add Chunk To Scr... | 17803905 | 972 days ago | IN | 0 ETH | 0.08728957 | ||||
| Create Script | 17803850 | 972 days ago | IN | 0 ETH | 0.00140596 | ||||
| Add Chunk To Scr... | 17803850 | 972 days ago | IN | 0 ETH | 0.02167497 | ||||
| Add Chunk To Scr... | 17803850 | 972 days ago | IN | 0 ETH | 0.10136634 | ||||
| Add Chunk To Scr... | 17803849 | 972 days ago | IN | 0 ETH | 0.08995917 | ||||
| Add Chunk To Scr... | 17803849 | 972 days ago | IN | 0 ETH | 0.0899516 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
ScriptyStorage
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 500 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
///////////////////////////////////////////////////////////
// ░██████╗░█████╗░██████╗░██╗██████╗░████████╗██╗░░░██╗ //
// ██╔════╝██╔══██╗██╔══██╗██║██╔══██╗╚══██╔══╝╚██╗░██╔╝ //
// ╚█████╗░██║░░╚═╝██████╔╝██║██████╔╝░░░██║░░░░╚████╔╝░ //
// ░╚═══██╗██║░░██╗██╔══██╗██║██╔═══╝░░░░██║░░░░░╚██╔╝░░ //
// ██████╔╝╚█████╔╝██║░░██║██║██║░░░░░░░░██║░░░░░░██║░░░ //
// ╚═════╝░░╚════╝░╚═╝░░╚═╝╚═╝╚═╝░░░░░░░░╚═╝░░░░░░╚═╝░░░ //
///////////////////////////////////////////////////////////
//░░░░░░░░░░░░░░░░░░░░ STORAGE ░░░░░░░░░░░░░░░░░░░░//
///////////////////////////////////////////////////////////
/**
@title A generic data storage contract.
@author @xtremetom
@author @0xthedude
Special thanks to @cxkoda, @frolic and @dhof
*/
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
import {IContentStore} from "./dependencies/ethfs/IContentStore.sol";
import {AddressChunks} from "./utils/AddressChunks.sol";
import {IScriptyStorage} from "./interfaces/IScriptyStorage.sol";
import {IContractScript} from "./interfaces/IContractScript.sol";
contract ScriptyStorage is Ownable, IScriptyStorage, IContractScript {
IContentStore public immutable contentStore;
mapping(string => Script) public scripts;
constructor(address _contentStoreAddress) {
contentStore = IContentStore(_contentStoreAddress);
}
// =============================================================
// MODIFIERS
// =============================================================
/**
* @notice Check if the msg.sender is the owner of the script
* @param name - Name given to the script. Eg: threejs.min.js_r148
*/
modifier isScriptOwner(string calldata name) {
if (msg.sender != scripts[name].owner) revert NotScriptOwner();
_;
}
/**
* @notice Check if a script can be created by checking if it already exists
* @param name - Name given to the script. Eg: threejs.min.js_r148
*/
modifier canCreate(string calldata name) {
if (scripts[name].owner != address(0)) revert ScriptExists();
_;
}
/**
* @notice Check if a script is frozen
* @param name - Name given to the script. Eg: threejs.min.js_r148
*/
modifier isFrozen(string calldata name) {
if (scripts[name].isFrozen) revert ScriptIsFrozen(name);
_;
}
// =============================================================
// MANAGEMENT OPERATIONS
// =============================================================
/**
* @notice Create a new script
* @param name - Name given to the script. Eg: threejs.min.js_r148
* @param details - Any details the owner wishes to store about the script
*
* Emits an {ScriptCreated} event.
*/
function createScript(string calldata name, bytes calldata details)
public
canCreate(name)
{
scripts[name] = Script(false, false, msg.sender, 0, details, new address[](0));
emit ScriptCreated(name, details);
}
/**
* @notice Add a code chunk to the script
* @param name - Name given to the script. Eg: threejs.min.js_r148
* @param chunk - Next sequential code chunk
*
* Emits an {ChunkStored} event.
*/
function addChunkToScript(string calldata name, bytes calldata chunk)
public
isFrozen(name)
isScriptOwner(name)
{
(, address pointer) = contentStore.addContent(chunk);
scripts[name].chunks.push(pointer);
scripts[name].size += chunk.length;
emit ChunkStored(name, chunk.length);
}
/**
* @notice Edit the script details
* @param name - Name given to the script. Eg: threejs.min.js_r148
* @param details - Any details the owner wishes to store about the script
*
* Emits an {ScriptDetailsUpdated} event.
*/
function updateDetails(string calldata name, bytes calldata details)
public
isFrozen(name)
isScriptOwner(name)
{
scripts[name].details = details;
emit ScriptDetailsUpdated(name, details);
}
/**
* @notice Update the verification status of the script
* @param name - Name given to the script. Eg: threejs.min.js_r148
* @param isVerified - The verification status
*
* Emits an {ScriptVerificationUpdated} event.
*/
function updateScriptVerification(string calldata name, bool isVerified)
public
isFrozen(name)
isScriptOwner(name)
{
scripts[name].isVerified = isVerified;
emit ScriptVerificationUpdated(name, isVerified);
}
/**
* @notice Update the frozen status of the script
* @dev [WARNING] Once a script it frozen is can no longer be edited
* @param name - Name given to the script. Eg: threejs.min.js_r148
*
* Emits an {ScriptFrozen} event.
*/
function freezeScript(string calldata name)
public
isFrozen(name)
isScriptOwner(name)
{
scripts[name].isFrozen = true;
emit ScriptFrozen(name);
}
// =============================================================
// GETTERS
// =============================================================
/**
* @notice Get the full script
* @param name - Name given to the script. Eg: threejs.min.js_r148
* @param data - Arbitrary data. Not used by this contract.
* @return script - Full script from merged chunks
*/
function getScript(string memory name, bytes memory data)
public
view
returns (bytes memory script)
{
return AddressChunks.mergeChunks(scripts[name].chunks);
}
/**
* @notice Get script's chunk pointer list
* @param name - Name given to the script. Eg: threejs.min.js_r148
* @return pointers - List of pointers
*/
function getScriptChunkPointers(string memory name)
public
view
returns (address[] memory pointers)
{
return scripts[name].chunks;
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
/**
* @title AddressChunks
* @author @xtremetom
* @notice Reads chunk pointers and merges their values
*/
library AddressChunks {
function mergeChunks(address[] memory chunks)
internal
view
returns (bytes memory o_code)
{
unchecked {
assembly {
let len := mload(chunks)
let totalSize := 0x20
let size := 0
o_code := mload(0x40)
// loop through all chunk addresses
// - get address
// - get data size
// - get code and add to o_code
// - update total size
let targetChunk := 0
for {
let i := 0
} lt(i, len) {
i := add(i, 1)
} {
targetChunk := mload(add(chunks, add(0x20, mul(i, 0x20))))
size := sub(extcodesize(targetChunk), 1)
extcodecopy(targetChunk, add(o_code, totalSize), 1, size)
totalSize := add(totalSize, size)
}
// update o_code size
mstore(o_code, sub(totalSize, 0x20))
// store o_code
mstore(0x40, add(o_code, and(add(totalSize, 0x1f), not(0x1f))))
}
}
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
///////////////////////////////////////////////////////////
// ░██████╗░█████╗░██████╗░██╗██████╗░████████╗██╗░░░██╗ //
// ██╔════╝██╔══██╗██╔══██╗██║██╔══██╗╚══██╔══╝╚██╗░██╔╝ //
// ╚█████╗░██║░░╚═╝██████╔╝██║██████╔╝░░░██║░░░░╚████╔╝░ //
// ░╚═══██╗██║░░██╗██╔══██╗██║██╔═══╝░░░░██║░░░░░╚██╔╝░░ //
// ██████╔╝╚█████╔╝██║░░██║██║██║░░░░░░░░██║░░░░░░██║░░░ //
// ╚═════╝░░╚════╝░╚═╝░░╚═╝╚═╝╚═╝░░░░░░░░╚═╝░░░░░░╚═╝░░░ //
///////////////////////////////////////////////////////////
interface IContractScript {
// =============================================================
// GETTERS
// =============================================================
/**
* @notice Get the full script
* @param name - Name given to the script. Eg: threejs.min.js_r148
* @param data - Arbitrary data to be passed to storage
* @return script - Full script from merged chunks
*/
function getScript(string calldata name, bytes memory data)
external
view
returns (bytes memory script);
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
interface IContentStore {
event NewChecksum(bytes32 indexed checksum, uint256 contentSize);
error ChecksumExists(bytes32 checksum);
error ChecksumNotFound(bytes32 checksum);
function pointers(bytes32 checksum) external view returns (address pointer);
function checksumExists(bytes32 checksum) external view returns (bool);
function contentLength(bytes32 checksum)
external
view
returns (uint256 size);
function addPointer(address pointer) external returns (bytes32 checksum);
function addContent(bytes memory content)
external
returns (bytes32 checksum, address pointer);
function getPointer(bytes32 checksum)
external
view
returns (address pointer);
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
///////////////////////////////////////////////////////////
// ░██████╗░█████╗░██████╗░██╗██████╗░████████╗██╗░░░██╗ //
// ██╔════╝██╔══██╗██╔══██╗██║██╔══██╗╚══██╔══╝╚██╗░██╔╝ //
// ╚█████╗░██║░░╚═╝██████╔╝██║██████╔╝░░░██║░░░░╚████╔╝░ //
// ░╚═══██╗██║░░██╗██╔══██╗██║██╔═══╝░░░░██║░░░░░╚██╔╝░░ //
// ██████╔╝╚█████╔╝██║░░██║██║██║░░░░░░░░██║░░░░░░██║░░░ //
// ╚═════╝░░╚════╝░╚═╝░░╚═╝╚═╝╚═╝░░░░░░░░╚═╝░░░░░░╚═╝░░░ //
///////////////////////////////////////////////////////////
interface IScriptyStorage {
// =============================================================
// STRUCTS
// =============================================================
struct Script {
bool isVerified;
bool isFrozen;
address owner;
uint256 size;
bytes details;
address[] chunks;
}
// =============================================================
// ERRORS
// =============================================================
/**
* @notice Error for, The Script you are trying to create already exists
*/
error ScriptExists();
/**
* @notice Error for, You dont have permissions to perform this action
*/
error NotScriptOwner();
/**
* @notice Error for, The Script you are trying to edit is frozen
*/
error ScriptIsFrozen(string name);
// =============================================================
// EVENTS
// =============================================================
/**
* @notice Event for, Successful freezing of a script
* @param name - Name given to the script. Eg: threejs.min.js_r148
*/
event ScriptFrozen(string indexed name);
/**
* @notice Event for, Successful update of script verification status
* @param name - Name given to the script. Eg: threejs.min.js_r148
* @param isVerified - Verification status of the script
*/
event ScriptVerificationUpdated(string indexed name, bool isVerified);
/**
* @notice Event for, Successful creation of a script
* @param name - Name given to the script. Eg: threejs.min.js_r148
* @param details - Custom details of the script
*/
event ScriptCreated(string indexed name, bytes details);
/**
* @notice Event for, Successful addition of script chunk
* @param name - Name given to the script. Eg: threejs.min.js_r148
* @param size - Bytes size of the chunk
*/
event ChunkStored(string indexed name, uint256 size);
/**
* @notice Event for, Successful update of custom details
* @param name - Name given to the script. Eg: threejs.min.js_r148
* @param details - Custom details of the script
*/
event ScriptDetailsUpdated(string indexed name, bytes details);
// =============================================================
// MANAGEMENT OPERATIONS
// =============================================================
/**
* @notice Create a new script
* @param name - Name given to the script. Eg: threejs.min.js_r148
* @param details - Any details the owner wishes to store about the script
*
* Emits an {ScriptCreated} event.
*/
function createScript(string calldata name, bytes calldata details)
external;
/**
* @notice Add a code chunk to the script
* @param name - Name given to the script. Eg: threejs.min.js_r148
* @param chunk - Next sequential code chunk
*
* Emits an {ChunkStored} event.
*/
function addChunkToScript(string calldata name, bytes calldata chunk)
external;
/**
* @notice Edit the script details
* @param name - Name given to the script. Eg: threejs.min.js_r148
* @param details - Any details the owner wishes to store about the script
*
* Emits an {ScriptDetailsUpdated} event.
*/
function updateDetails(string calldata name, bytes calldata details)
external;
/**
* @notice Update the verification status of the script
* @param name - Name given to the script. Eg: threejs.min.js_r148
* @param isVerified - The verification status
*
* Emits an {ScriptVerificationUpdated} event.
*/
function updateScriptVerification(string calldata name, bool isVerified)
external;
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.0;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}{
"optimizer": {
"enabled": true,
"runs": 500
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_contentStoreAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"NotScriptOwner","type":"error"},{"inputs":[],"name":"ScriptExists","type":"error"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"ScriptIsFrozen","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"uint256","name":"size","type":"uint256"}],"name":"ChunkStored","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"bytes","name":"details","type":"bytes"}],"name":"ScriptCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"bytes","name":"details","type":"bytes"}],"name":"ScriptDetailsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"name","type":"string"}],"name":"ScriptFrozen","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"bool","name":"isVerified","type":"bool"}],"name":"ScriptVerificationUpdated","type":"event"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes","name":"chunk","type":"bytes"}],"name":"addChunkToScript","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contentStore","outputs":[{"internalType":"contract IContentStore","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes","name":"details","type":"bytes"}],"name":"createScript","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"freezeScript","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"getScript","outputs":[{"internalType":"bytes","name":"script","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"getScriptChunkPointers","outputs":[{"internalType":"address[]","name":"pointers","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"scripts","outputs":[{"internalType":"bool","name":"isVerified","type":"bool"},{"internalType":"bool","name":"isFrozen","type":"bool"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"size","type":"uint256"},{"internalType":"bytes","name":"details","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes","name":"details","type":"bytes"}],"name":"updateDetails","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bool","name":"isVerified","type":"bool"}],"name":"updateScriptVerification","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60a060405234801561001057600080fd5b5060405161154938038061154983398101604081905261002f91610099565b61003833610049565b6001600160a01b03166080526100c9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100ab57600080fd5b81516001600160a01b03811681146100c257600080fd5b9392505050565b60805161145e6100eb600039600081816101070152610356015261145e6000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c8063a7ce081611610081578063f2fde38b1161005b578063f2fde38b146101cc578063f66188a4146101df578063f9635594146101f257600080fd5b8063a7ce081614610182578063ae0f849714610195578063c3766aff146101b957600080fd5b8063715018a6116100b2578063715018a6146101565780638652d6691461015e5780638da5cb5b1461017157600080fd5b80633998d026146100d95780633a6e674c146101025780633b7aa8d914610141575b600080fd5b6100ec6100e7366004610e30565b610212565b6040516100f99190610e6d565b60405180910390f35b6101297f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100f9565b61015461014f366004610f03565b61028f565b005b6101546104ad565b61015461016c366004610f03565b6104c1565b6000546001600160a01b0316610129565b610154610190366004610f6f565b6106b2565b6101a86101a3366004610e30565b6107d4565b6040516100f9959493929190611001565b6101546101c7366004610f03565b6108ac565b6101546101da366004611059565b6109de565b6101546101ed36600461107d565b610a57565b6102056102003660046110d9565b610b81565b6040516100f99190611151565b60606001826040516102249190611164565b908152604080519182900360209081018320600301805480830285018301909352828452919083018282801561028357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610265575b50505050509050919050565b8383600182826040516102a3929190611180565b9081526040519081900360200190205460ff61010090910416156102e757818160405163bfeaaa2d60e01b81526004016102de9291906111b9565b60405180910390fd5b8585600182826040516102fb929190611180565b908152604051602091819003919091019020546201000090046001600160a01b0316331461033c57604051632421876d60e11b815260040160405180910390fd5b60405163093e983960e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063093e98399061038d908a908a906004016111b9565b60408051808303816000875af11580156103ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103cf91906111cd565b915050600189896040516103e4929190611180565b908152604051602091819003820181206003018054600180820183556000928352939091200180546001600160a01b0319166001600160a01b038516179055879190610433908c908c90611180565b9081526020016040518091039020600101600082825461045391906111fd565b9091555050604051610468908a908a90611180565b604051908190038120878252907f4c4439fb488c666dfac05b75b1eaa33ddec20e80ade108bbfbf9a346101a17fa9060200160405180910390a2505050505050505050565b6104b5610c08565b6104bf6000610c62565b565b838360006001600160a01b0316600183836040516104e0929190611180565b908152604051908190036020019020546001600160a01b0362010000909104161461051e5760405163069e29bb60e11b815260040160405180910390fd5b6040518060c00160405280600015158152602001600015158152602001336001600160a01b031681526020016000815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250938552505060408051928352602080840182529093019190915250516001906105af9089908990611180565b908152604080519182900360209081019092208351815493850151928501516001600160a01b0316620100000275ffffffffffffffffffffffffffffffffffffffff0000199315156101000261ff00199215159290921661ffff19909516949094171791909116919091178155606082015160018201556080820151600282019061063a90826112a7565b5060a08201518051610656916003840191602090910190610d0a565b5050604051610669915087908790611180565b60405180910390207f94cfcaa37760fc84acfc372349e79c232b2289da4d0e04dc7d82f7e16e2a9b7f85856040516106a29291906111b9565b60405180910390a2505050505050565b8181600182826040516106c6929190611180565b9081526040519081900360200190205460ff610100909104161561070157818160405163bfeaaa2d60e01b81526004016102de9291906111b9565b838360018282604051610715929190611180565b908152604051602091819003919091019020546201000090046001600160a01b0316331461075657604051632421876d60e11b815260040160405180910390fd5b6001808787604051610769929190611180565b90815260405190819003602001812080549215156101000261ff00199093169290921790915561079c9087908790611180565b604051908190038120907fb6e1bf653aa113482f568d5b90dcb6ba2402a51193045d939a38df275395051890600090a2505050505050565b80516020818301810180516001808352938301929094019190912092905281549082015460028301805460ff808516956101008604909116946201000090046001600160a01b0316939290916108299061121e565b80601f01602080910402602001604051908101604052809291908181526020018280546108559061121e565b80156108a25780601f10610877576101008083540402835291602001916108a2565b820191906000526020600020905b81548152906001019060200180831161088557829003601f168201915b5050505050905085565b8383600182826040516108c0929190611180565b9081526040519081900360200190205460ff61010090910416156108fb57818160405163bfeaaa2d60e01b81526004016102de9291906111b9565b85856001828260405161090f929190611180565b908152604051602091819003919091019020546201000090046001600160a01b0316331461095057604051632421876d60e11b815260040160405180910390fd5b858560018a8a604051610964929190611180565b90815260200160405180910390206002019182610982929190611367565b508787604051610993929190611180565b60405180910390207fbec1946749fc6624d6690b2119bf4dcdebf76c9a8fb2a786397450caec0e075587876040516109cc9291906111b9565b60405180910390a25050505050505050565b6109e6610c08565b6001600160a01b038116610a4b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102de565b610a5481610c62565b50565b828260018282604051610a6b929190611180565b9081526040519081900360200190205460ff6101009091041615610aa657818160405163bfeaaa2d60e01b81526004016102de9291906111b9565b848460018282604051610aba929190611180565b908152604051602091819003919091019020546201000090046001600160a01b03163314610afb57604051632421876d60e11b815260040160405180910390fd5b8460018888604051610b0e929190611180565b908152604051908190036020018120805492151560ff1990931692909217909155610b3c9088908890611180565b6040519081900381208615158252907fd5c4aa2b5240e0e08c3bbb0802a6dfcd8bc9967b86d7e94970e324fccf1e6d2b9060200160405180910390a250505050505050565b6060610bff600184604051610b969190611164565b9081526040805191829003602090810183206003018054808302850183019093528284529190830182828015610bf557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610bd7575b5050505050610cb2565b90505b92915050565b6000546001600160a01b031633146104bf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102de565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8051604051906020600080805b84811015610cee576020810260200187015191506001823b039250826001858801843c92820192600101610cbf565b505050601f198082018452601f90910116820160405250919050565b828054828255906000526020600020908101928215610d5f579160200282015b82811115610d5f57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610d2a565b50610d6b929150610d6f565b5090565b5b80821115610d6b5760008155600101610d70565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115610db557610db5610d84565b604051601f8501601f19908116603f01168101908282118183101715610ddd57610ddd610d84565b81604052809350858152868686011115610df657600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112610e2157600080fd5b610bff83833560208501610d9a565b600060208284031215610e4257600080fd5b813567ffffffffffffffff811115610e5957600080fd5b610e6584828501610e10565b949350505050565b6020808252825182820181905260009190848201906040850190845b81811015610eae5783516001600160a01b031683529284019291840191600101610e89565b50909695505050505050565b60008083601f840112610ecc57600080fd5b50813567ffffffffffffffff811115610ee457600080fd5b602083019150836020828501011115610efc57600080fd5b9250929050565b60008060008060408587031215610f1957600080fd5b843567ffffffffffffffff80821115610f3157600080fd5b610f3d88838901610eba565b90965094506020870135915080821115610f5657600080fd5b50610f6387828801610eba565b95989497509550505050565b60008060208385031215610f8257600080fd5b823567ffffffffffffffff811115610f9957600080fd5b610fa585828601610eba565b90969095509350505050565b60005b83811015610fcc578181015183820152602001610fb4565b50506000910152565b60008151808452610fed816020860160208601610fb1565b601f01601f19169290920160200192915050565b851515815284151560208201526001600160a01b038416604082015282606082015260a06080820152600061103960a0830184610fd5565b979650505050505050565b6001600160a01b0381168114610a5457600080fd5b60006020828403121561106b57600080fd5b813561107681611044565b9392505050565b60008060006040848603121561109257600080fd5b833567ffffffffffffffff8111156110a957600080fd5b6110b586828701610eba565b909450925050602084013580151581146110ce57600080fd5b809150509250925092565b600080604083850312156110ec57600080fd5b823567ffffffffffffffff8082111561110457600080fd5b61111086838701610e10565b9350602085013591508082111561112657600080fd5b508301601f8101851361113857600080fd5b61114785823560208401610d9a565b9150509250929050565b602081526000610bff6020830184610fd5565b60008251611176818460208701610fb1565b9190910192915050565b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000610e65602083018486611190565b600080604083850312156111e057600080fd5b8251915060208301516111f281611044565b809150509250929050565b80820180821115610c0257634e487b7160e01b600052601160045260246000fd5b600181811c9082168061123257607f821691505b60208210810361125257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156112a257600081815260208120601f850160051c8101602086101561127f5750805b601f850160051c820191505b8181101561129e5782815560010161128b565b5050505b505050565b815167ffffffffffffffff8111156112c1576112c1610d84565b6112d5816112cf845461121e565b84611258565b602080601f83116001811461130a57600084156112f25750858301515b600019600386901b1c1916600185901b17855561129e565b600085815260208120601f198616915b828110156113395788860151825594840194600190910190840161131a565b50858210156113575787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b67ffffffffffffffff83111561137f5761137f610d84565b6113938361138d835461121e565b83611258565b6000601f8411600181146113c757600085156113af5750838201355b600019600387901b1c1916600186901b178355611421565b600083815260209020601f19861690835b828110156113f857868501358255602094850194600190920191016113d8565b50868210156114155760001960f88860031b161c19848701351681555b505060018560011b0183555b505050505056fea26469706673582212203c0fb7f7077f0657d594c71ddbafd73b93eebec4084cd8c179d61ed331ebe40564736f6c63430008110033000000000000000000000000c6806fd75745bb5f5b32ada19963898155f9db91
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100d45760003560e01c8063a7ce081611610081578063f2fde38b1161005b578063f2fde38b146101cc578063f66188a4146101df578063f9635594146101f257600080fd5b8063a7ce081614610182578063ae0f849714610195578063c3766aff146101b957600080fd5b8063715018a6116100b2578063715018a6146101565780638652d6691461015e5780638da5cb5b1461017157600080fd5b80633998d026146100d95780633a6e674c146101025780633b7aa8d914610141575b600080fd5b6100ec6100e7366004610e30565b610212565b6040516100f99190610e6d565b60405180910390f35b6101297f000000000000000000000000c6806fd75745bb5f5b32ada19963898155f9db9181565b6040516001600160a01b0390911681526020016100f9565b61015461014f366004610f03565b61028f565b005b6101546104ad565b61015461016c366004610f03565b6104c1565b6000546001600160a01b0316610129565b610154610190366004610f6f565b6106b2565b6101a86101a3366004610e30565b6107d4565b6040516100f9959493929190611001565b6101546101c7366004610f03565b6108ac565b6101546101da366004611059565b6109de565b6101546101ed36600461107d565b610a57565b6102056102003660046110d9565b610b81565b6040516100f99190611151565b60606001826040516102249190611164565b908152604080519182900360209081018320600301805480830285018301909352828452919083018282801561028357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610265575b50505050509050919050565b8383600182826040516102a3929190611180565b9081526040519081900360200190205460ff61010090910416156102e757818160405163bfeaaa2d60e01b81526004016102de9291906111b9565b60405180910390fd5b8585600182826040516102fb929190611180565b908152604051602091819003919091019020546201000090046001600160a01b0316331461033c57604051632421876d60e11b815260040160405180910390fd5b60405163093e983960e01b81526000906001600160a01b037f000000000000000000000000c6806fd75745bb5f5b32ada19963898155f9db91169063093e98399061038d908a908a906004016111b9565b60408051808303816000875af11580156103ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103cf91906111cd565b915050600189896040516103e4929190611180565b908152604051602091819003820181206003018054600180820183556000928352939091200180546001600160a01b0319166001600160a01b038516179055879190610433908c908c90611180565b9081526020016040518091039020600101600082825461045391906111fd565b9091555050604051610468908a908a90611180565b604051908190038120878252907f4c4439fb488c666dfac05b75b1eaa33ddec20e80ade108bbfbf9a346101a17fa9060200160405180910390a2505050505050505050565b6104b5610c08565b6104bf6000610c62565b565b838360006001600160a01b0316600183836040516104e0929190611180565b908152604051908190036020019020546001600160a01b0362010000909104161461051e5760405163069e29bb60e11b815260040160405180910390fd5b6040518060c00160405280600015158152602001600015158152602001336001600160a01b031681526020016000815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250938552505060408051928352602080840182529093019190915250516001906105af9089908990611180565b908152604080519182900360209081019092208351815493850151928501516001600160a01b0316620100000275ffffffffffffffffffffffffffffffffffffffff0000199315156101000261ff00199215159290921661ffff19909516949094171791909116919091178155606082015160018201556080820151600282019061063a90826112a7565b5060a08201518051610656916003840191602090910190610d0a565b5050604051610669915087908790611180565b60405180910390207f94cfcaa37760fc84acfc372349e79c232b2289da4d0e04dc7d82f7e16e2a9b7f85856040516106a29291906111b9565b60405180910390a2505050505050565b8181600182826040516106c6929190611180565b9081526040519081900360200190205460ff610100909104161561070157818160405163bfeaaa2d60e01b81526004016102de9291906111b9565b838360018282604051610715929190611180565b908152604051602091819003919091019020546201000090046001600160a01b0316331461075657604051632421876d60e11b815260040160405180910390fd5b6001808787604051610769929190611180565b90815260405190819003602001812080549215156101000261ff00199093169290921790915561079c9087908790611180565b604051908190038120907fb6e1bf653aa113482f568d5b90dcb6ba2402a51193045d939a38df275395051890600090a2505050505050565b80516020818301810180516001808352938301929094019190912092905281549082015460028301805460ff808516956101008604909116946201000090046001600160a01b0316939290916108299061121e565b80601f01602080910402602001604051908101604052809291908181526020018280546108559061121e565b80156108a25780601f10610877576101008083540402835291602001916108a2565b820191906000526020600020905b81548152906001019060200180831161088557829003601f168201915b5050505050905085565b8383600182826040516108c0929190611180565b9081526040519081900360200190205460ff61010090910416156108fb57818160405163bfeaaa2d60e01b81526004016102de9291906111b9565b85856001828260405161090f929190611180565b908152604051602091819003919091019020546201000090046001600160a01b0316331461095057604051632421876d60e11b815260040160405180910390fd5b858560018a8a604051610964929190611180565b90815260200160405180910390206002019182610982929190611367565b508787604051610993929190611180565b60405180910390207fbec1946749fc6624d6690b2119bf4dcdebf76c9a8fb2a786397450caec0e075587876040516109cc9291906111b9565b60405180910390a25050505050505050565b6109e6610c08565b6001600160a01b038116610a4b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102de565b610a5481610c62565b50565b828260018282604051610a6b929190611180565b9081526040519081900360200190205460ff6101009091041615610aa657818160405163bfeaaa2d60e01b81526004016102de9291906111b9565b848460018282604051610aba929190611180565b908152604051602091819003919091019020546201000090046001600160a01b03163314610afb57604051632421876d60e11b815260040160405180910390fd5b8460018888604051610b0e929190611180565b908152604051908190036020018120805492151560ff1990931692909217909155610b3c9088908890611180565b6040519081900381208615158252907fd5c4aa2b5240e0e08c3bbb0802a6dfcd8bc9967b86d7e94970e324fccf1e6d2b9060200160405180910390a250505050505050565b6060610bff600184604051610b969190611164565b9081526040805191829003602090810183206003018054808302850183019093528284529190830182828015610bf557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610bd7575b5050505050610cb2565b90505b92915050565b6000546001600160a01b031633146104bf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102de565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8051604051906020600080805b84811015610cee576020810260200187015191506001823b039250826001858801843c92820192600101610cbf565b505050601f198082018452601f90910116820160405250919050565b828054828255906000526020600020908101928215610d5f579160200282015b82811115610d5f57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610d2a565b50610d6b929150610d6f565b5090565b5b80821115610d6b5760008155600101610d70565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115610db557610db5610d84565b604051601f8501601f19908116603f01168101908282118183101715610ddd57610ddd610d84565b81604052809350858152868686011115610df657600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112610e2157600080fd5b610bff83833560208501610d9a565b600060208284031215610e4257600080fd5b813567ffffffffffffffff811115610e5957600080fd5b610e6584828501610e10565b949350505050565b6020808252825182820181905260009190848201906040850190845b81811015610eae5783516001600160a01b031683529284019291840191600101610e89565b50909695505050505050565b60008083601f840112610ecc57600080fd5b50813567ffffffffffffffff811115610ee457600080fd5b602083019150836020828501011115610efc57600080fd5b9250929050565b60008060008060408587031215610f1957600080fd5b843567ffffffffffffffff80821115610f3157600080fd5b610f3d88838901610eba565b90965094506020870135915080821115610f5657600080fd5b50610f6387828801610eba565b95989497509550505050565b60008060208385031215610f8257600080fd5b823567ffffffffffffffff811115610f9957600080fd5b610fa585828601610eba565b90969095509350505050565b60005b83811015610fcc578181015183820152602001610fb4565b50506000910152565b60008151808452610fed816020860160208601610fb1565b601f01601f19169290920160200192915050565b851515815284151560208201526001600160a01b038416604082015282606082015260a06080820152600061103960a0830184610fd5565b979650505050505050565b6001600160a01b0381168114610a5457600080fd5b60006020828403121561106b57600080fd5b813561107681611044565b9392505050565b60008060006040848603121561109257600080fd5b833567ffffffffffffffff8111156110a957600080fd5b6110b586828701610eba565b909450925050602084013580151581146110ce57600080fd5b809150509250925092565b600080604083850312156110ec57600080fd5b823567ffffffffffffffff8082111561110457600080fd5b61111086838701610e10565b9350602085013591508082111561112657600080fd5b508301601f8101851361113857600080fd5b61114785823560208401610d9a565b9150509250929050565b602081526000610bff6020830184610fd5565b60008251611176818460208701610fb1565b9190910192915050565b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000610e65602083018486611190565b600080604083850312156111e057600080fd5b8251915060208301516111f281611044565b809150509250929050565b80820180821115610c0257634e487b7160e01b600052601160045260246000fd5b600181811c9082168061123257607f821691505b60208210810361125257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156112a257600081815260208120601f850160051c8101602086101561127f5750805b601f850160051c820191505b8181101561129e5782815560010161128b565b5050505b505050565b815167ffffffffffffffff8111156112c1576112c1610d84565b6112d5816112cf845461121e565b84611258565b602080601f83116001811461130a57600084156112f25750858301515b600019600386901b1c1916600185901b17855561129e565b600085815260208120601f198616915b828110156113395788860151825594840194600190910190840161131a565b50858210156113575787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b67ffffffffffffffff83111561137f5761137f610d84565b6113938361138d835461121e565b83611258565b6000601f8411600181146113c757600085156113af5750838201355b600019600387901b1c1916600186901b178355611421565b600083815260209020601f19861690835b828110156113f857868501358255602094850194600190920191016113d8565b50868210156114155760001960f88860031b161c19848701351681555b505060018560011b0183555b505050505056fea26469706673582212203c0fb7f7077f0657d594c71ddbafd73b93eebec4084cd8c179d61ed331ebe40564736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c6806fd75745bb5f5b32ada19963898155f9db91
-----Decoded View---------------
Arg [0] : _contentStoreAddress (address): 0xC6806fd75745bB5F5B32ADa19963898155f9DB91
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000c6806fd75745bb5f5b32ada19963898155f9db91
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 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.