Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Multichain Info
No addresses found
Latest 25 from a total of 171 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Create Crowdfund | 15382242 | 960 days ago | IN | 0 ETH | 0.00254651 | ||||
Create Crowdfund | 15382166 | 960 days ago | IN | 0 ETH | 0.00240243 | ||||
Create Crowdfund | 15352058 | 965 days ago | IN | 0 ETH | 0.01064325 | ||||
Create Crowdfund | 15313167 | 971 days ago | IN | 0 ETH | 0.01546254 | ||||
Create Crowdfund | 15299338 | 973 days ago | IN | 0 ETH | 0.00711625 | ||||
Create Crowdfund | 15291940 | 974 days ago | IN | 0 ETH | 0.00415296 | ||||
Create Crowdfund | 15280633 | 976 days ago | IN | 0 ETH | 0.01072119 | ||||
Create Crowdfund | 15254758 | 980 days ago | IN | 0 ETH | 0.00347787 | ||||
Create Crowdfund | 15234805 | 983 days ago | IN | 0 ETH | 0.00847876 | ||||
Create Crowdfund | 15214925 | 986 days ago | IN | 0 ETH | 0.03540823 | ||||
Create Crowdfund | 15203371 | 988 days ago | IN | 0 ETH | 0.00380414 | ||||
Create Crowdfund | 15194132 | 990 days ago | IN | 0 ETH | 0.01917912 | ||||
Create Crowdfund | 15183946 | 991 days ago | IN | 0 ETH | 0.01188056 | ||||
Create Crowdfund | 15183916 | 991 days ago | IN | 0 ETH | 0.01017612 | ||||
Create Crowdfund | 15145685 | 997 days ago | IN | 0 ETH | 0.00969044 | ||||
Create Crowdfund | 15132698 | 999 days ago | IN | 0 ETH | 0.0066254 | ||||
Create Crowdfund | 15127117 | 1000 days ago | IN | 0 ETH | 0.01669658 | ||||
Create Crowdfund | 15111075 | 1002 days ago | IN | 0 ETH | 0.03446906 | ||||
Create Crowdfund | 15061282 | 1010 days ago | IN | 0 ETH | 0.00626509 | ||||
Create Crowdfund | 15043437 | 1013 days ago | IN | 0 ETH | 0.02440742 | ||||
Create Crowdfund | 15042818 | 1013 days ago | IN | 0 ETH | 0.03315335 | ||||
Create Crowdfund | 15031421 | 1015 days ago | IN | 0 ETH | 0.02101348 | ||||
Create Crowdfund | 14941836 | 1031 days ago | IN | 0 ETH | 0.0187241 | ||||
Create Crowdfund | 14939423 | 1032 days ago | IN | 0 ETH | 0.06292165 | ||||
Create Crowdfund | 14931290 | 1033 days ago | IN | 0 ETH | 0.02948058 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
0x60806040 | 15382242 | 960 days ago | Contract Creation | 0 ETH | |||
Transfer* | 15382166 | 960 days ago | Contract Creation | 0 ETH | |||
0x60806040 | 15352058 | 965 days ago | Contract Creation | 0 ETH | |||
0x60806040 | 15313167 | 971 days ago | Contract Creation | 0 ETH | |||
0x60806040 | 15299338 | 973 days ago | Contract Creation | 0 ETH | |||
0x60806040 | 15291940 | 974 days ago | Contract Creation | 0 ETH | |||
0x60806040 | 15280633 | 976 days ago | Contract Creation | 0 ETH | |||
0x60806040 | 15254758 | 980 days ago | Contract Creation | 0 ETH | |||
0x60806040 | 15234805 | 983 days ago | Contract Creation | 0 ETH | |||
0x60806040 | 15214925 | 986 days ago | Contract Creation | 0 ETH | |||
0x60806040 | 15203371 | 988 days ago | Contract Creation | 0 ETH | |||
0x60806040 | 15194132 | 990 days ago | Contract Creation | 0 ETH | |||
0x60806040 | 15183946 | 991 days ago | Contract Creation | 0 ETH | |||
0x60806040 | 15183916 | 991 days ago | Contract Creation | 0 ETH | |||
0x60806040 | 15145685 | 997 days ago | Contract Creation | 0 ETH | |||
0x60806040 | 15132698 | 999 days ago | Contract Creation | 0 ETH | |||
0x60806040 | 15127117 | 1000 days ago | Contract Creation | 0 ETH | |||
0x60806040 | 15111075 | 1002 days ago | Contract Creation | 0 ETH | |||
0x60806040 | 15061282 | 1010 days ago | Contract Creation | 0 ETH | |||
0x60806040 | 15043437 | 1013 days ago | Contract Creation | 0 ETH | |||
0x60806040 | 15042818 | 1013 days ago | Contract Creation | 0 ETH | |||
0x60806040 | 15031421 | 1015 days ago | Contract Creation | 0 ETH | |||
- | 14941836 | 1031 days ago | Contract Creation | 0 ETH | |||
- | 14939423 | 1032 days ago | Contract Creation | 0 ETH | |||
- | 14931290 | 1033 days ago | Contract Creation | 0 ETH |
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
CrowdfundWithPodiumEditionsFactory
Compiler Version
v0.8.6+commit.11564f7e
Optimization Enabled:
Yes with 2000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.6; import {CrowdfundWithPodiumEditionsProxy} from "./CrowdfundWithPodiumEditionsProxy.sol"; import {CrowdfundWithPodiumEditionsLogic} from "./CrowdfundWithPodiumEditionsLogic.sol"; import {ICrowdfundWithPodiumEditions} from "./interface/ICrowdfundWithPodiumEditions.sol"; import {ITributaryRegistry} from "../../../interface/ITributaryRegistry.sol"; import {Governable} from "../../../lib/Governable.sol"; /** * @title CrowdfundWithPodiumEditionsFactory * @author MirrorXYZ */ contract CrowdfundWithPodiumEditionsFactory is Governable { //======== Structs ======== struct Parameters { address payable fundingRecipient; uint256 fundingCap; uint256 operatorPercent; string name; string symbol; uint256 feePercentage; uint256 podiumDuration; } //======== Events ======== event CrowdfundDeployed( address crowdfundProxy, string name, string symbol, address operator ); //======== Configuration storage ========= /* Updatable via governance */ address public logic; address payable public editions; address public tributaryRegistry; address public treasuryConfig; uint256 public minFeePercentage = 250; //======== Runtime mutable storage ========= // Gets set within the block, and then deleted. Parameters public parameters; //======== Constructor ========= constructor( address owner_, address logic_, address payable editions_, address tributaryRegistry_, address treasuryConfig_ ) Governable(owner_) { logic = logic_; editions = editions_; tributaryRegistry = tributaryRegistry_; treasuryConfig = treasuryConfig_; } //======== Configuration ========= function setMinimumFeePercentage(uint256 newMinFeePercentage) public onlyGovernance { minFeePercentage = newMinFeePercentage; } function setEditions(address payable newEditions) public onlyGovernance { editions = newEditions; } function setLogic(address newLogic) public onlyGovernance { logic = newLogic; } function setTreasuryConfig(address newTreasuryConfig) public onlyGovernance { treasuryConfig = newTreasuryConfig; } function setTributaryRegistry(address newTributaryRegistry) public onlyGovernance { tributaryRegistry = newTributaryRegistry; } //======== Deploy function ========= struct TributaryConfig { address tributary; uint256 feePercentage; } function createCrowdfund( ICrowdfundWithPodiumEditions.EditionTier[] calldata tiers, TributaryConfig calldata tributaryConfig, string calldata name_, string calldata symbol_, address payable operator_, address payable fundingRecipient_, uint256 fundingCap_, uint256 operatorPercent_, uint256 podiumDuration_ ) external returns (address crowdfundProxy) { require( tributaryConfig.feePercentage >= minFeePercentage, "fee is too low" ); parameters = Parameters({ name: name_, symbol: symbol_, fundingRecipient: fundingRecipient_, fundingCap: fundingCap_, operatorPercent: operatorPercent_, feePercentage: tributaryConfig.feePercentage, podiumDuration: podiumDuration_ }); crowdfundProxy = address( new CrowdfundWithPodiumEditionsProxy{ salt: keccak256(abi.encode(symbol_, operator_)) }(treasuryConfig, operator_) ); delete parameters; emit CrowdfundDeployed(crowdfundProxy, name_, symbol_, operator_); ITributaryRegistry(tributaryRegistry).registerTributary( crowdfundProxy, tributaryConfig.tributary ); ICrowdfundWithPodiumEditions(editions).createEditions( tiers, payable(crowdfundProxy), crowdfundProxy ); } }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.6; import {CrowdfundWithPodiumEditionsStorage} from "./CrowdfundWithPodiumEditionsStorage.sol"; interface ICrowdfundWithPodiumEditionsFactory { function mediaAddress() external returns (address); function logic() external returns (address); function editions() external returns (address); // ERC20 data. function parameters() external returns ( address payable fundingRecipient, uint256 fundingCap, uint256 operatorPercent, string memory name, string memory symbol, uint256 feePercentage, uint256 podiumDuration ); } /** * @title CrowdfundWithPodiumEditionsProxy * @author MirrorXYZ */ contract CrowdfundWithPodiumEditionsProxy is CrowdfundWithPodiumEditionsStorage { constructor(address treasuryConfig_, address payable operator_) { logic = ICrowdfundWithPodiumEditionsFactory(msg.sender).logic(); editions = ICrowdfundWithPodiumEditionsFactory(msg.sender).editions(); // Crowdfund-specific data. ( fundingRecipient, fundingCap, operatorPercent, name, symbol, feePercentage, podiumDuration ) = ICrowdfundWithPodiumEditionsFactory(msg.sender).parameters(); operator = operator_; treasuryConfig = treasuryConfig_; // Initialize mutable storage. status = Status.FUNDING; } fallback() external payable { address _impl = logic; assembly { let ptr := mload(0x40) calldatacopy(ptr, 0, calldatasize()) let result := delegatecall(gas(), _impl, ptr, calldatasize(), 0, 0) let size := returndatasize() returndatacopy(ptr, 0, size) switch result case 0 { revert(ptr, size) } default { return(ptr, size) } } } receive() external payable {} }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.6; import {CrowdfundWithPodiumEditionsStorage} from "./CrowdfundWithPodiumEditionsStorage.sol"; import {ICrowdfundWithPodiumEditions} from "./interface/ICrowdfundWithPodiumEditions.sol"; import {ITreasuryConfig} from "../../../interface/ITreasuryConfig.sol"; /** * @title CrowdfundWithPodiumEditionsLogic * @author MirrorXYZ * * Crowdfund the creation of NFTs by issuing ERC20 tokens that * can be redeemed for the underlying value of the NFT once sold. */ contract CrowdfundWithPodiumEditionsLogic is CrowdfundWithPodiumEditionsStorage { // ============ Events ============ event ReceivedERC721(uint256 tokenId, address sender); event Contribution(address contributor, uint256 amount); event ContributionForEdition( address contributor, uint256 amount, uint256 editionId, uint256 tokenId ); event FundingClosed(uint256 amountRaised, uint256 creatorAllocation); event BidAccepted(uint256 amount); event Redeemed(address contributor, uint256 amount); // ERC20 Events event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); // Podium Events event PodiumDurationExtended(uint256 editionId); // ============ Modifiers ============ /** * @dev Modifier to check whether the `msg.sender` is the operator. * If it is, it will run the function. Otherwise, it will revert. */ modifier onlyOperator() { require(msg.sender == operator); _; } modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(reentrancy_status != REENTRANCY_ENTERED, "Reentrant call"); // Any calls to nonReentrant after this point will fail reentrancy_status = REENTRANCY_ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) reentrancy_status = REENTRANCY_NOT_ENTERED; } // ============ Crowdfunding Methods ============ function contributeForPodium( address payable backer, uint256 editionId, uint256 amount ) external payable nonReentrant { _contribute(backer, editionId, amount, true); } /** * @notice Mints tokens for the sender propotional to the * amount of ETH sent in the transaction. * @dev Emits the Contribution event. */ function contribute( address payable backer, uint256 editionId, uint256 amount ) external payable nonReentrant { _contribute(backer, editionId, amount, false); } /** * @notice Burns the sender's tokens and redeems underlying ETH. * @dev Emits the Redeemed event. */ function redeem(uint256 tokenAmount) external nonReentrant { // Prevent backers from accidently redeeming when balance is 0. require( address(this).balance > 0, "Crowdfund: No ETH available to redeem" ); // Check require( balanceOf[msg.sender] >= tokenAmount, "Crowdfund: Insufficient balance" ); require(status == Status.TRADING, "Crowdfund: Funding must be trading"); // Effect uint256 redeemable = redeemableFromTokens(tokenAmount); _burn(msg.sender, tokenAmount); // Safe version of transfer. sendValue(payable(msg.sender), redeemable); emit Redeemed(msg.sender, redeemable); } /** * @notice Returns the amount of ETH that is redeemable for tokenAmount. */ function redeemableFromTokens(uint256 tokenAmount) public view returns (uint256) { return (tokenAmount * address(this).balance) / totalSupply; } function valueToTokens(uint256 value) public pure returns (uint256 tokens) { tokens = value * TOKEN_SCALE; } function tokensToValue(uint256 tokenAmount) internal pure returns (uint256 value) { value = tokenAmount / TOKEN_SCALE; } // ============ Operator Methods ============ /** * @notice Transfers all funds to operator, and mints tokens for the operator. * Updates status to TRADING. * @dev Emits the FundingClosed event. */ function closeFunding() external onlyOperator nonReentrant { require(status == Status.FUNDING, "Crowdfund: Funding must be open"); // Close funding status, move to tradable. status = Status.TRADING; // Mint the operator a percent of the total supply. uint256 operatorTokens = (operatorPercent * totalSupply) / (100 - operatorPercent); _mint(operator, operatorTokens); // Announce that funding has been closed. emit FundingClosed(address(this).balance, operatorTokens); // Transfer the fee to the treasury. sendValue( ITreasuryConfig(treasuryConfig).treasury(), computeFee(address(this).balance) ); // Transfer available balance to the fundingRecipient. sendValue(fundingRecipient, address(this).balance); } function computeFee(uint256 amount) public view returns (uint256 fee) { fee = (feePercentage * amount) / (100 * 100); } // ============ Utility Methods ============ function sendValue(address payable recipient, uint256 amount) internal { require( address(this).balance >= amount, "Address: insufficient balance" ); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{value: amount}(""); require( success, "Address: unable to send value, recipient may have reverted" ); } // ============ ERC20 Spec ============ function _mint(address to, uint256 value) internal { totalSupply = totalSupply + value; balanceOf[to] = balanceOf[to] + value; emit Transfer(address(0), to, value); } function _burn(address from, uint256 value) internal { balanceOf[from] = balanceOf[from] - value; totalSupply = totalSupply - value; emit Transfer(from, address(0), value); } function _approve( address owner, address spender, uint256 value ) private { allowance[owner][spender] = value; emit Approval(owner, spender, value); } function _transfer( address from, address to, uint256 value ) private { balanceOf[from] = balanceOf[from] - value; balanceOf[to] = balanceOf[to] + value; emit Transfer(from, to, value); } function approve(address spender, uint256 value) external returns (bool) { _approve(msg.sender, spender, value); return true; } function transfer(address to, uint256 value) external returns (bool) { _transfer(msg.sender, to, value); return true; } function transferFrom( address from, address to, uint256 value ) external returns (bool) { allowance[from][msg.sender] = allowance[from][msg.sender] - value; _transfer(from, to, value); return true; } // ============ Tiered Campaigns ============ function buyEdition( uint256 amount, uint256 editionId, address recipient ) internal returns (uint256) { // Check that the sender is paying the correct amount. require( amount >= ICrowdfundWithPodiumEditions(editions).editionPrice(editionId), "Unable purchase edition with available amount" ); // We don't need to transfer the value to the NFT contract here, // since that contract trusts this one to check before minting. // I.E. this contract has minting privileges. return ICrowdfundWithPodiumEditions(editions).buyEdition( editionId, recipient ); } function buyEditionForPodium( uint256 amount, uint256 editionId, address recipient ) internal returns (uint256) { // Check that the sender is paying the correct amount. require( amount >= ICrowdfundWithPodiumEditions(editions).editionPrice(editionId), "Unable purchase edition with available amount" ); if (podiumStartTime == 0) { podiumStartTime = block.timestamp; } uint256 podiumEnds = podiumStartTime + podiumDuration; require(podiumEnds >= block.timestamp, "podium closed"); if (podiumEnds < block.timestamp + PODIUM_TIME_BUFFER) { // Extend duration. podiumDuration += block.timestamp + PODIUM_TIME_BUFFER - podiumEnds; emit PodiumDurationExtended(editionId); } // We don't need to transfer the value to the NFT contract here, // since that contract trusts this one to check before minting. // I.E. this contract has minting privileges. return ICrowdfundWithPodiumEditions(editions).buyEdition( editionId, recipient ); } function _contribute( address payable backer, uint256 editionId, uint256 amount, bool forPodium ) private { require(status == Status.FUNDING, "Crowdfund: Funding must be open"); require(amount == msg.value, "Crowdfund: Amount is not value sent"); // This first case is the happy path, so we will keep it efficient. // The balance, which includes the current contribution, is less than or equal to cap. if (address(this).balance <= fundingCap) { // Mint equity for the contributor. _mint(backer, valueToTokens(amount)); // Editions start at 1, so a "0" edition means the user wants to contribute without // purchasing a token. if (editionId > 0) { emit ContributionForEdition( backer, amount, editionId, forPodium ? buyEditionForPodium(amount, editionId, backer) : buyEdition(amount, editionId, backer) ); } else { emit Contribution(backer, amount); } } else { // Compute the balance of the crowdfund before the contribution was made. uint256 startAmount = address(this).balance - amount; // If that amount was already greater than the funding cap, then we should revert immediately. require( startAmount < fundingCap, "Crowdfund: Funding cap already reached" ); // Otherwise, the contribution helped us reach the funding cap. We should // take what we can until the funding cap is reached, and refund the rest. uint256 eligibleAmount = fundingCap - startAmount; // Otherwise, we process the contribution as if it were the minimal amount. _mint(backer, valueToTokens(eligibleAmount)); if (editionId > 0) { emit ContributionForEdition( backer, eligibleAmount, editionId, // Attempt to purchase edition with eligible amount. forPodium ? buyEditionForPodium(eligibleAmount, editionId, backer) : buyEdition(eligibleAmount, editionId, backer) ); } else { emit Contribution(backer, eligibleAmount); } // Refund the sender with their contribution (e.g. 2.5 minus the diff - e.g. 1.5 = 1 ETH) sendValue(backer, amount - eligibleAmount); } } }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.6; interface ICrowdfundWithPodiumEditions { struct Edition { // The maximum number of tokens that can be sold. uint256 quantity; // The price at which each token will be sold, in ETH. uint256 price; // The account that will receive sales revenue. address payable fundingRecipient; // The number of tokens sold so far. uint256 numSold; bytes32 contentHash; } struct EditionTier { // The maximum number of tokens that can be sold. uint256 quantity; // The price at which each token will be sold, in ETH. uint256 price; bytes32 contentHash; } function buyEdition(uint256 editionId, address recipient) external payable returns (uint256 tokenId); function editionPrice(uint256 editionId) external view returns (uint256); function createEditions( EditionTier[] memory tier, // The account that should receive the revenue. address payable fundingRecipient, address minter ) external; function contractURI() external view returns (string memory); }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.6; interface ITributaryRegistry { function addRegistrar(address registrar) external; function removeRegistrar(address registrar) external; function addSingletonProducer(address producer) external; function removeSingletonProducer(address producer) external; function registerTributary(address producer, address tributary) external; function producerToTributary(address producer) external returns (address tributary); function singletonProducer(address producer) external returns (bool); function changeTributary(address producer, address newTributary) external; }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.6; import {Ownable} from "../lib/Ownable.sol"; import {IGovernable} from "../lib/interface/IGovernable.sol"; contract Governable is Ownable, IGovernable { // ============ Mutable Storage ============ // Mirror governance contract. address public override governor; // ============ Modifiers ============ modifier onlyGovernance() { require(isOwner() || isGovernor(), "caller is not governance"); _; } modifier onlyGovernor() { require(isGovernor(), "caller is not governor"); _; } // ============ Constructor ============ constructor(address owner_) Ownable(owner_) {} // ============ Administration ============ function changeGovernor(address governor_) public override onlyGovernance { governor = governor_; } // ============ Utility Functions ============ function isGovernor() public view override returns (bool) { return msg.sender == governor; } }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.6; /** * @title CrowdfundWithPodiumEditionsStorage * @author MirrorXYZ */ contract CrowdfundWithPodiumEditionsStorage { // The two states that this contract can exist in. "FUNDING" allows // contributors to add funds. enum Status { FUNDING, TRADING } // ============ Constants ============ // The factor by which ETH contributions will multiply into crowdfund tokens. uint16 internal constant TOKEN_SCALE = 1000; uint256 internal constant REENTRANCY_NOT_ENTERED = 1; uint256 internal constant REENTRANCY_ENTERED = 2; uint16 public constant PODIUM_TIME_BUFFER = 900; uint8 public constant decimals = 18; // ============ Immutable Storage ============ // The operator has a special role to change contract status. address payable public operator; address payable public fundingRecipient; address public treasuryConfig; // We add a hard cap to prevent raising more funds than deemed reasonable. uint256 public fundingCap; uint256 public feePercentage; // The operator takes some equity in the tokens, represented by this percent. uint256 public operatorPercent; string public symbol; string public name; // ============ Mutable Storage ============ // Represents the current state of the campaign. Status public status; uint256 internal reentrancy_status; // Podium storage uint256 public podiumStartTime; uint256 public podiumDuration; // ============ Mutable ERC20 Attributes ============ uint256 public totalSupply; mapping(address => uint256) public balanceOf; mapping(address => mapping(address => uint256)) public allowance; mapping(address => uint256) public nonces; // ============ Delegation logic ============ address public logic; // ============ Tiered Campaigns ============ // Address of the editions contract to purchase from. address public editions; }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.6; interface ITreasuryConfig { function treasury() external returns (address payable); function distributionModel() external returns (address); }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.6; contract Ownable { address public owner; address private nextOwner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); // modifiers modifier onlyOwner() { require(isOwner(), "caller is not the owner."); _; } modifier onlyNextOwner() { require(isNextOwner(), "current owner must set caller as next owner."); _; } /** * @dev Initialize contract by setting transaction submitter as initial owner. */ constructor(address owner_) { owner = owner_; emit OwnershipTransferred(address(0), owner); } /** * @dev Initiate ownership transfer by setting nextOwner. */ function transferOwnership(address nextOwner_) external onlyOwner { require(nextOwner_ != address(0), "Next owner is the zero address."); nextOwner = nextOwner_; } /** * @dev Cancel ownership transfer by deleting nextOwner. */ function cancelOwnershipTransfer() external onlyOwner { delete nextOwner; } /** * @dev Accepts ownership transfer by setting owner. */ function acceptOwnership() external onlyNextOwner { delete nextOwner; owner = msg.sender; emit OwnershipTransferred(owner, msg.sender); } /** * @dev Renounce ownership by setting owner to zero address. */ function renounceOwnership() external onlyOwner { owner = address(0); emit OwnershipTransferred(owner, address(0)); } /** * @dev Returns true if the caller is the current owner. */ function isOwner() public view returns (bool) { return msg.sender == owner; } /** * @dev Returns true if the caller is the next owner. */ function isNextOwner() public view returns (bool) { return msg.sender == nextOwner; } }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.6; interface IGovernable { function changeGovernor(address governor_) external; function isGovernor() external view returns (bool); function governor() external view returns (address); }
{ "optimizer": { "enabled": true, "runs": 2000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"logic_","type":"address"},{"internalType":"address payable","name":"editions_","type":"address"},{"internalType":"address","name":"tributaryRegistry_","type":"address"},{"internalType":"address","name":"treasuryConfig_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"crowdfundProxy","type":"address"},{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"string","name":"symbol","type":"string"},{"indexed":false,"internalType":"address","name":"operator","type":"address"}],"name":"CrowdfundDeployed","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"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cancelOwnershipTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"governor_","type":"address"}],"name":"changeGovernor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"bytes32","name":"contentHash","type":"bytes32"}],"internalType":"struct ICrowdfundWithPodiumEditions.EditionTier[]","name":"tiers","type":"tuple[]"},{"components":[{"internalType":"address","name":"tributary","type":"address"},{"internalType":"uint256","name":"feePercentage","type":"uint256"}],"internalType":"struct CrowdfundWithPodiumEditionsFactory.TributaryConfig","name":"tributaryConfig","type":"tuple"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"address payable","name":"operator_","type":"address"},{"internalType":"address payable","name":"fundingRecipient_","type":"address"},{"internalType":"uint256","name":"fundingCap_","type":"uint256"},{"internalType":"uint256","name":"operatorPercent_","type":"uint256"},{"internalType":"uint256","name":"podiumDuration_","type":"uint256"}],"name":"createCrowdfund","outputs":[{"internalType":"address","name":"crowdfundProxy","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"editions","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"governor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isGovernor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isNextOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"logic","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"parameters","outputs":[{"internalType":"address payable","name":"fundingRecipient","type":"address"},{"internalType":"uint256","name":"fundingCap","type":"uint256"},{"internalType":"uint256","name":"operatorPercent","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"feePercentage","type":"uint256"},{"internalType":"uint256","name":"podiumDuration","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newEditions","type":"address"}],"name":"setEditions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLogic","type":"address"}],"name":"setLogic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinFeePercentage","type":"uint256"}],"name":"setMinimumFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTreasuryConfig","type":"address"}],"name":"setTreasuryConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTributaryRegistry","type":"address"}],"name":"setTributaryRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"nextOwner_","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryConfig","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tributaryRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405260fa6007553480156200001657600080fd5b50604051620021e1380380620021e18339810160408190526200003991620000da565b600080546001600160a01b0319166001600160a01b038716908117825560405187928392917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35050600380546001600160a01b039586166001600160a01b03199182161790915560048054948616948216949094179093556005805492851692841692909217909155600680549190931691161790555062000173565b600080600080600060a08688031215620000f357600080fd5b855162000100816200015a565b602087015190955062000113816200015a565b604087015190945062000126816200015a565b606087015190935062000139816200015a565b60808701519092506200014c816200015a565b809150509295509295909350565b6001600160a01b03811681146200017057600080fd5b50565b61205e80620001836000396000f3fe60806040523480156200001157600080fd5b5060043610620001a15760003560e01c8063c7af335211620000e9578063e011bf8e1162000097578063f1fe1663116200006e578063f1fe1663146200034e578063f2fde38b1462000365578063ff39e710146200037c57600080fd5b8063e011bf8e146200030c578063e4c0aaf41462000323578063ed459df2146200033a57600080fd5b8063d321de7311620000cc578063d321de7314620002cd578063d6811b6f14620002e4578063d7dfa0dd14620002f857600080fd5b8063c7af335214620002a5578063cfd7b0df14620002b957600080fd5b806379ba509711620001535780638da5cb5b116200012a5780638da5cb5b146200025d5780638f32d59b1462000271578063b8ddbcb3146200029157600080fd5b806379ba5097146200021d578063849a3aa3146200022757806389035730146200023e57600080fd5b80632a0b17ee11620001885780632a0b17ee14620001e3578063715018a614620001fc57806371857000146200020657600080fd5b80630c340a2414620001a657806323452b9c14620001d7575b600080fd5b600254620001ba906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b620001e162000393565b005b620001ed60075481565b604051908152602001620001ce565b620001e162000405565b620001e16200021736600462001068565b6200049d565b620001e162000531565b620001ba620002383660046200108f565b620005fb565b62000248620009c1565b604051620001ce97969594939291906200122d565b600054620001ba906001600160a01b031681565b6000546001600160a01b031633145b6040519015158152602001620001ce565b600454620001ba906001600160a01b031681565b6002546001600160a01b0316331462000280565b600654620001ba906001600160a01b031681565b620001e1620002de36600462001068565b62000b16565b600554620001ba906001600160a01b031681565b600354620001ba906001600160a01b031681565b620001e16200031d36600462001068565b62000baa565b620001e16200033436600462001068565b62000c3e565b6001546001600160a01b0316331462000280565b620001e16200035f36600462001068565b62000cd2565b620001e16200037636600462001068565b62000d66565b620001e16200038d36600462001198565b62000e3c565b6000546001600160a01b03163314620003f35760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e000000000000000060448201526064015b60405180910390fd5b600180546001600160a01b0319169055565b6000546001600160a01b03163314620004615760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e00000000000000006044820152606401620003ea565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b0316331480620004c157506002546001600160a01b031633145b6200050f5760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e636500000000000000006044820152606401620003ea565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b03163314620005b35760405162461bcd60e51b815260206004820152602c60248201527f63757272656e74206f776e6572206d757374207365742063616c6c657220617360448201527f206e657874206f776e65722e00000000000000000000000000000000000000006064820152608401620003ea565b600180546001600160a01b0319908116909155600080543392168217815560405182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3565b60006007548b602001351015620006555760405162461bcd60e51b815260206004820152600e60248201527f66656520697320746f6f206c6f770000000000000000000000000000000000006044820152606401620003ea565b6040518060e00160405280866001600160a01b031681526020018581526020018481526020018b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f8c018190048102820181019092528a815291810191908b908b908190840183828082843760009201919091525050509082525060208d8101358183015260409182018590528251600880546001600160a01b0319166001600160a01b039092169190911781558382015160095591830151600a55606083015180516200074792600b92019062000eb3565b50608082015180516200076591600484019160209091019062000eb3565b5060a0820151600582015560c090910151600690910155604051620007939089908990899060200162001349565b60405160208183030381529060405280519060200120600660009054906101000a90046001600160a01b031687604051620007ce9062000f42565b6001600160a01b039283168152911660208201526040018190604051809103906000f590508015801562000806573d6000803e3d6000fd5b50600880546001600160a01b031916815560006009819055600a8190559192509062000834600b8262000f50565b6200084460048301600062000f50565b6005820160009055600682016000905550507f5133bb164b64ffa4461bc0c782a5c0e71cdc9d6c6ef5aa9af84f7fd2cd966d8e818b8b8b8b8b604051620008919695949392919062001288565b60405180910390a16005546001600160a01b0316633d2a6f7782620008ba60208f018f62001068565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381600087803b1580156200091b57600080fd5b505af115801562000930573d6000803e3d6000fd5b50505050600460009054906101000a90046001600160a01b03166001600160a01b03166309fc162a8e8e84856040518563ffffffff1660e01b81526004016200097d9493929190620012da565b600060405180830381600087803b1580156200099857600080fd5b505af1158015620009ad573d6000803e3d6000fd5b505050509c9b505050505050505050505050565b60088054600954600a54600b80546001600160a01b03909416949293919291620009eb9062001378565b80601f016020809104026020016040519081016040528092919081815260200182805462000a199062001378565b801562000a6a5780601f1062000a3e5761010080835404028352916020019162000a6a565b820191906000526020600020905b81548152906001019060200180831162000a4c57829003601f168201915b50505050509080600401805462000a819062001378565b80601f016020809104026020016040519081016040528092919081815260200182805462000aaf9062001378565b801562000b005780601f1062000ad45761010080835404028352916020019162000b00565b820191906000526020600020905b81548152906001019060200180831162000ae257829003601f168201915b5050505050908060050154908060060154905087565b6000546001600160a01b031633148062000b3a57506002546001600160a01b031633145b62000b885760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e636500000000000000006044820152606401620003ea565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633148062000bce57506002546001600160a01b031633145b62000c1c5760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e636500000000000000006044820152606401620003ea565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633148062000c6257506002546001600160a01b031633145b62000cb05760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e636500000000000000006044820152606401620003ea565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633148062000cf657506002546001600160a01b031633145b62000d445760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e636500000000000000006044820152606401620003ea565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331462000dc25760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e00000000000000006044820152606401620003ea565b6001600160a01b03811662000e1a5760405162461bcd60e51b815260206004820152601f60248201527f4e657874206f776e657220697320746865207a65726f20616464726573732e006044820152606401620003ea565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633148062000e6057506002546001600160a01b031633145b62000eae5760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e636500000000000000006044820152606401620003ea565b600755565b82805462000ec19062001378565b90600052602060002090601f01602090048101928262000ee5576000855562000f30565b82601f1062000f0057805160ff191683800117855562000f30565b8280016001018555821562000f30579182015b8281111562000f3057825182559160200191906001019062000f13565b5062000f3e92915062000f92565b5090565b610c4a80620013df83390190565b50805462000f5e9062001378565b6000825580601f1062000f6f575050565b601f01602090049060005260206000209081019062000f8f919062000f92565b50565b5b8082111562000f3e576000815560010162000f93565b803562000fb681620013c8565b919050565b60008083601f84011262000fce57600080fd5b50813567ffffffffffffffff81111562000fe757600080fd5b6020830191508360206060830285010111156200100357600080fd5b9250929050565b60008083601f8401126200101d57600080fd5b50813567ffffffffffffffff8111156200103657600080fd5b6020830191508360208285010111156200100357600080fd5b6000604082840312156200106257600080fd5b50919050565b6000602082840312156200107b57600080fd5b81356200108881620013c8565b9392505050565b6000806000806000806000806000806000806101408d8f031215620010b357600080fd5b67ffffffffffffffff8d351115620010ca57600080fd5b620010d98e8e358f0162000fbb565b909c509a50620010ed8e60208f016200104f565b995067ffffffffffffffff60608e013511156200110957600080fd5b6200111b8e60608f01358f016200100a565b909950975067ffffffffffffffff60808e013511156200113a57600080fd5b6200114c8e60808f01358f016200100a565b90975095506200115f60a08e0162000fa9565b94506200116f60c08e0162000fa9565b935060e08d013592506101008d013591506101208d013590509295989b509295989b509295989b565b600060208284031215620011ab57600080fd5b5035919050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6000815180845260005b818110156200120557602081850181015186830182015201620011e7565b8181111562001218576000602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b038816815286602082015285604082015260e0606082015260006200125d60e0830187620011dd565b8281036080840152620012718187620011dd565b60a0840195909552505060c0015295945050505050565b60006001600160a01b03808916835260806020840152620012ae60808401888a620011b2565b8381036040850152620012c3818789620011b2565b925050808416606084015250979650505050505050565b60608082528181018590526000908660808401835b8881101562001321578235825260208084013590830152604080840135908301529183019190830190600101620012ef565b506001600160a01b039687166020860152949095166040909301929092525090949350505050565b6040815260006200135f604083018587620011b2565b90506001600160a01b0383166020830152949350505050565b600181811c908216806200138d57607f821691505b6020821081141562001062577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6001600160a01b038116811462000f8f57600080fdfe60806040523480156200001157600080fd5b5060405162000c4a38038062000c4a8339810160408190526200003491620004c7565b336001600160a01b031663d7dfa0dd6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200007057600080fd5b505af115801562000085573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ab9190620003f9565b601060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550336001600160a01b031663b8ddbcb36040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200010d57600080fd5b505af115801562000122573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001489190620003f9565b601160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550336001600160a01b031663890357306040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620001aa57600080fd5b505af1158015620001bf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620001e9919081019062000420565b600b819055600482905582516001906000906003908290600590829060079082906200021d9060069060208e01906200029c565b50508a5162000232919060208d01906200029c565b5050989098559790975580546101009790970a6001600160a01b038181021990981698881602979097179096555050600080546001600160a01b03199081169685169690961790555050600280549093169316929092179055506008805460ff1916905562000572565b828054620002aa9062000506565b90600052602060002090601f016020900481019282620002ce576000855562000319565b82601f10620002e957805160ff191683800117855562000319565b8280016001018555821562000319579182015b8281111562000319578251825591602001919060010190620002fc565b50620003279291506200032b565b5090565b5b808211156200032757600081556001016200032c565b600082601f8301126200035457600080fd5b81516001600160401b038082111562000371576200037162000543565b604051601f8301601f19908116603f011681019082821181831017156200039c576200039c62000543565b81604052838152602092508683858801011115620003b957600080fd5b600091505b83821015620003dd5785820183015181830184015290820190620003be565b83821115620003ef5760008385830101525b9695505050505050565b6000602082840312156200040c57600080fd5b8151620004198162000559565b9392505050565b600080600080600080600060e0888a0312156200043c57600080fd5b8751620004498162000559565b602089015160408a015160608b015192995090975095506001600160401b03808211156200047657600080fd5b620004848b838c0162000342565b955060808a01519150808211156200049b57600080fd5b50620004aa8a828b0162000342565b93505060a0880151915060c0880151905092959891949750929550565b60008060408385031215620004db57600080fd5b8251620004e88162000559565b6020840151909250620004fb8162000559565b809150509250929050565b600181811c908216806200051b57607f821691505b602082108114156200053d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146200056f57600080fd5b50565b6106c880620005826000396000f3fe6080604052600436106101485760003560e01c80637ecebe00116100c0578063cfd7b0df11610074578063dd62ed3e11610059578063dd62ed3e1461040d578063e3b2594f14610445578063f72655ef1461045b5761014f565b8063cfd7b0df146103b3578063d7dfa0dd146103e05761014f565b806395d89b41116100a557806395d89b411461035b578063a001ecdd14610370578063b8ddbcb3146103865761014f565b80637ecebe00146103185780638dc06c7f146103455761014f565b8063200d2ed211610117578063570ca735116100fc578063570ca735146102a857806370a08231146102d55780637b4044a0146103025761014f565b8063200d2ed21461025a578063313ce567146102815761014f565b806306fdde031461019057806318160ddd146101bb57806318a855c7146101df5780631bb534ba146102085761014f565b3661014f57005b60105460405173ffffffffffffffffffffffffffffffffffffffff9091169036600082376000803683855af43d806000843e81801561018c578184f35b8184fd5b34801561019c57600080fd5b506101a5610471565b6040516101b291906105cb565b60405180910390f35b3480156101c757600080fd5b506101d1600c5481565b6040519081526020016101b2565b3480156101eb57600080fd5b506101f561038481565b60405161ffff90911681526020016101b2565b34801561021457600080fd5b506001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b34801561026657600080fd5b506008546102749060ff1681565b6040516101b2919061058a565b34801561028d57600080fd5b50610296601281565b60405160ff90911681526020016101b2565b3480156102b457600080fd5b506000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102e157600080fd5b506101d16102f0366004610535565b600d6020526000908152604090205481565b34801561030e57600080fd5b506101d160055481565b34801561032457600080fd5b506101d1610333366004610535565b600f6020526000908152604090205481565b34801561035157600080fd5b506101d1600b5481565b34801561036757600080fd5b506101a56104ff565b34801561037c57600080fd5b506101d160045481565b34801561039257600080fd5b506011546102359073ffffffffffffffffffffffffffffffffffffffff1681565b3480156103bf57600080fd5b506002546102359073ffffffffffffffffffffffffffffffffffffffff1681565b3480156103ec57600080fd5b506010546102359073ffffffffffffffffffffffffffffffffffffffff1681565b34801561041957600080fd5b506101d1610428366004610557565b600e60209081526000928352604080842090915290825290205481565b34801561045157600080fd5b506101d160035481565b34801561046757600080fd5b506101d1600a5481565b6007805461047e9061063e565b80601f01602080910402602001604051908101604052809291908181526020018280546104aa9061063e565b80156104f75780601f106104cc576101008083540402835291602001916104f7565b820191906000526020600020905b8154815290600101906020018083116104da57829003601f168201915b505050505081565b6006805461047e9061063e565b803573ffffffffffffffffffffffffffffffffffffffff8116811461053057600080fd5b919050565b60006020828403121561054757600080fd5b6105508261050c565b9392505050565b6000806040838503121561056a57600080fd5b6105738361050c565b91506105816020840161050c565b90509250929050565b60208101600283106105c5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b600060208083528351808285015260005b818110156105f8578581018301518582016040015282016105dc565b8181111561060a576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600181811c9082168061065257607f821691505b6020821081141561068c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b5091905056fea2646970667358221220b229364e7a9918553c008bca2249fc251b0662b166387bb68248fe64daee07b864736f6c63430008060033a26469706673582212208fd396d323db6525448a1ffdbe320dac0c9e202bf72592460bca2ffca9c8106464736f6c634300080600330000000000000000000000002330ee705ffd040bb0cba8cb7734dfe00e7c4b570000000000000000000000005b5746f6f5e2db8bf5e260829ca7a004c876b167000000000000000000000000c4e0f3ec24972c75df7c716922096f4270b7bb4e0000000000000000000000001171b858777120a59a6cc8148edda8982f187cd800000000000000000000000021a93be569666527dae0fdbfbe7715299dec1202
Deployed Bytecode
0x60806040523480156200001157600080fd5b5060043610620001a15760003560e01c8063c7af335211620000e9578063e011bf8e1162000097578063f1fe1663116200006e578063f1fe1663146200034e578063f2fde38b1462000365578063ff39e710146200037c57600080fd5b8063e011bf8e146200030c578063e4c0aaf41462000323578063ed459df2146200033a57600080fd5b8063d321de7311620000cc578063d321de7314620002cd578063d6811b6f14620002e4578063d7dfa0dd14620002f857600080fd5b8063c7af335214620002a5578063cfd7b0df14620002b957600080fd5b806379ba509711620001535780638da5cb5b116200012a5780638da5cb5b146200025d5780638f32d59b1462000271578063b8ddbcb3146200029157600080fd5b806379ba5097146200021d578063849a3aa3146200022757806389035730146200023e57600080fd5b80632a0b17ee11620001885780632a0b17ee14620001e3578063715018a614620001fc57806371857000146200020657600080fd5b80630c340a2414620001a657806323452b9c14620001d7575b600080fd5b600254620001ba906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b620001e162000393565b005b620001ed60075481565b604051908152602001620001ce565b620001e162000405565b620001e16200021736600462001068565b6200049d565b620001e162000531565b620001ba620002383660046200108f565b620005fb565b62000248620009c1565b604051620001ce97969594939291906200122d565b600054620001ba906001600160a01b031681565b6000546001600160a01b031633145b6040519015158152602001620001ce565b600454620001ba906001600160a01b031681565b6002546001600160a01b0316331462000280565b600654620001ba906001600160a01b031681565b620001e1620002de36600462001068565b62000b16565b600554620001ba906001600160a01b031681565b600354620001ba906001600160a01b031681565b620001e16200031d36600462001068565b62000baa565b620001e16200033436600462001068565b62000c3e565b6001546001600160a01b0316331462000280565b620001e16200035f36600462001068565b62000cd2565b620001e16200037636600462001068565b62000d66565b620001e16200038d36600462001198565b62000e3c565b6000546001600160a01b03163314620003f35760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e000000000000000060448201526064015b60405180910390fd5b600180546001600160a01b0319169055565b6000546001600160a01b03163314620004615760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e00000000000000006044820152606401620003ea565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b0316331480620004c157506002546001600160a01b031633145b6200050f5760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e636500000000000000006044820152606401620003ea565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b03163314620005b35760405162461bcd60e51b815260206004820152602c60248201527f63757272656e74206f776e6572206d757374207365742063616c6c657220617360448201527f206e657874206f776e65722e00000000000000000000000000000000000000006064820152608401620003ea565b600180546001600160a01b0319908116909155600080543392168217815560405182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3565b60006007548b602001351015620006555760405162461bcd60e51b815260206004820152600e60248201527f66656520697320746f6f206c6f770000000000000000000000000000000000006044820152606401620003ea565b6040518060e00160405280866001600160a01b031681526020018581526020018481526020018b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f8c018190048102820181019092528a815291810191908b908b908190840183828082843760009201919091525050509082525060208d8101358183015260409182018590528251600880546001600160a01b0319166001600160a01b039092169190911781558382015160095591830151600a55606083015180516200074792600b92019062000eb3565b50608082015180516200076591600484019160209091019062000eb3565b5060a0820151600582015560c090910151600690910155604051620007939089908990899060200162001349565b60405160208183030381529060405280519060200120600660009054906101000a90046001600160a01b031687604051620007ce9062000f42565b6001600160a01b039283168152911660208201526040018190604051809103906000f590508015801562000806573d6000803e3d6000fd5b50600880546001600160a01b031916815560006009819055600a8190559192509062000834600b8262000f50565b6200084460048301600062000f50565b6005820160009055600682016000905550507f5133bb164b64ffa4461bc0c782a5c0e71cdc9d6c6ef5aa9af84f7fd2cd966d8e818b8b8b8b8b604051620008919695949392919062001288565b60405180910390a16005546001600160a01b0316633d2a6f7782620008ba60208f018f62001068565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381600087803b1580156200091b57600080fd5b505af115801562000930573d6000803e3d6000fd5b50505050600460009054906101000a90046001600160a01b03166001600160a01b03166309fc162a8e8e84856040518563ffffffff1660e01b81526004016200097d9493929190620012da565b600060405180830381600087803b1580156200099857600080fd5b505af1158015620009ad573d6000803e3d6000fd5b505050509c9b505050505050505050505050565b60088054600954600a54600b80546001600160a01b03909416949293919291620009eb9062001378565b80601f016020809104026020016040519081016040528092919081815260200182805462000a199062001378565b801562000a6a5780601f1062000a3e5761010080835404028352916020019162000a6a565b820191906000526020600020905b81548152906001019060200180831162000a4c57829003601f168201915b50505050509080600401805462000a819062001378565b80601f016020809104026020016040519081016040528092919081815260200182805462000aaf9062001378565b801562000b005780601f1062000ad45761010080835404028352916020019162000b00565b820191906000526020600020905b81548152906001019060200180831162000ae257829003601f168201915b5050505050908060050154908060060154905087565b6000546001600160a01b031633148062000b3a57506002546001600160a01b031633145b62000b885760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e636500000000000000006044820152606401620003ea565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633148062000bce57506002546001600160a01b031633145b62000c1c5760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e636500000000000000006044820152606401620003ea565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633148062000c6257506002546001600160a01b031633145b62000cb05760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e636500000000000000006044820152606401620003ea565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633148062000cf657506002546001600160a01b031633145b62000d445760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e636500000000000000006044820152606401620003ea565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331462000dc25760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e00000000000000006044820152606401620003ea565b6001600160a01b03811662000e1a5760405162461bcd60e51b815260206004820152601f60248201527f4e657874206f776e657220697320746865207a65726f20616464726573732e006044820152606401620003ea565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633148062000e6057506002546001600160a01b031633145b62000eae5760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e636500000000000000006044820152606401620003ea565b600755565b82805462000ec19062001378565b90600052602060002090601f01602090048101928262000ee5576000855562000f30565b82601f1062000f0057805160ff191683800117855562000f30565b8280016001018555821562000f30579182015b8281111562000f3057825182559160200191906001019062000f13565b5062000f3e92915062000f92565b5090565b610c4a80620013df83390190565b50805462000f5e9062001378565b6000825580601f1062000f6f575050565b601f01602090049060005260206000209081019062000f8f919062000f92565b50565b5b8082111562000f3e576000815560010162000f93565b803562000fb681620013c8565b919050565b60008083601f84011262000fce57600080fd5b50813567ffffffffffffffff81111562000fe757600080fd5b6020830191508360206060830285010111156200100357600080fd5b9250929050565b60008083601f8401126200101d57600080fd5b50813567ffffffffffffffff8111156200103657600080fd5b6020830191508360208285010111156200100357600080fd5b6000604082840312156200106257600080fd5b50919050565b6000602082840312156200107b57600080fd5b81356200108881620013c8565b9392505050565b6000806000806000806000806000806000806101408d8f031215620010b357600080fd5b67ffffffffffffffff8d351115620010ca57600080fd5b620010d98e8e358f0162000fbb565b909c509a50620010ed8e60208f016200104f565b995067ffffffffffffffff60608e013511156200110957600080fd5b6200111b8e60608f01358f016200100a565b909950975067ffffffffffffffff60808e013511156200113a57600080fd5b6200114c8e60808f01358f016200100a565b90975095506200115f60a08e0162000fa9565b94506200116f60c08e0162000fa9565b935060e08d013592506101008d013591506101208d013590509295989b509295989b509295989b565b600060208284031215620011ab57600080fd5b5035919050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6000815180845260005b818110156200120557602081850181015186830182015201620011e7565b8181111562001218576000602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b038816815286602082015285604082015260e0606082015260006200125d60e0830187620011dd565b8281036080840152620012718187620011dd565b60a0840195909552505060c0015295945050505050565b60006001600160a01b03808916835260806020840152620012ae60808401888a620011b2565b8381036040850152620012c3818789620011b2565b925050808416606084015250979650505050505050565b60608082528181018590526000908660808401835b8881101562001321578235825260208084013590830152604080840135908301529183019190830190600101620012ef565b506001600160a01b039687166020860152949095166040909301929092525090949350505050565b6040815260006200135f604083018587620011b2565b90506001600160a01b0383166020830152949350505050565b600181811c908216806200138d57607f821691505b6020821081141562001062577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6001600160a01b038116811462000f8f57600080fdfe60806040523480156200001157600080fd5b5060405162000c4a38038062000c4a8339810160408190526200003491620004c7565b336001600160a01b031663d7dfa0dd6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200007057600080fd5b505af115801562000085573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ab9190620003f9565b601060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550336001600160a01b031663b8ddbcb36040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200010d57600080fd5b505af115801562000122573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001489190620003f9565b601160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550336001600160a01b031663890357306040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620001aa57600080fd5b505af1158015620001bf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620001e9919081019062000420565b600b819055600482905582516001906000906003908290600590829060079082906200021d9060069060208e01906200029c565b50508a5162000232919060208d01906200029c565b5050989098559790975580546101009790970a6001600160a01b038181021990981698881602979097179096555050600080546001600160a01b03199081169685169690961790555050600280549093169316929092179055506008805460ff1916905562000572565b828054620002aa9062000506565b90600052602060002090601f016020900481019282620002ce576000855562000319565b82601f10620002e957805160ff191683800117855562000319565b8280016001018555821562000319579182015b8281111562000319578251825591602001919060010190620002fc565b50620003279291506200032b565b5090565b5b808211156200032757600081556001016200032c565b600082601f8301126200035457600080fd5b81516001600160401b038082111562000371576200037162000543565b604051601f8301601f19908116603f011681019082821181831017156200039c576200039c62000543565b81604052838152602092508683858801011115620003b957600080fd5b600091505b83821015620003dd5785820183015181830184015290820190620003be565b83821115620003ef5760008385830101525b9695505050505050565b6000602082840312156200040c57600080fd5b8151620004198162000559565b9392505050565b600080600080600080600060e0888a0312156200043c57600080fd5b8751620004498162000559565b602089015160408a015160608b015192995090975095506001600160401b03808211156200047657600080fd5b620004848b838c0162000342565b955060808a01519150808211156200049b57600080fd5b50620004aa8a828b0162000342565b93505060a0880151915060c0880151905092959891949750929550565b60008060408385031215620004db57600080fd5b8251620004e88162000559565b6020840151909250620004fb8162000559565b809150509250929050565b600181811c908216806200051b57607f821691505b602082108114156200053d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146200056f57600080fd5b50565b6106c880620005826000396000f3fe6080604052600436106101485760003560e01c80637ecebe00116100c0578063cfd7b0df11610074578063dd62ed3e11610059578063dd62ed3e1461040d578063e3b2594f14610445578063f72655ef1461045b5761014f565b8063cfd7b0df146103b3578063d7dfa0dd146103e05761014f565b806395d89b41116100a557806395d89b411461035b578063a001ecdd14610370578063b8ddbcb3146103865761014f565b80637ecebe00146103185780638dc06c7f146103455761014f565b8063200d2ed211610117578063570ca735116100fc578063570ca735146102a857806370a08231146102d55780637b4044a0146103025761014f565b8063200d2ed21461025a578063313ce567146102815761014f565b806306fdde031461019057806318160ddd146101bb57806318a855c7146101df5780631bb534ba146102085761014f565b3661014f57005b60105460405173ffffffffffffffffffffffffffffffffffffffff9091169036600082376000803683855af43d806000843e81801561018c578184f35b8184fd5b34801561019c57600080fd5b506101a5610471565b6040516101b291906105cb565b60405180910390f35b3480156101c757600080fd5b506101d1600c5481565b6040519081526020016101b2565b3480156101eb57600080fd5b506101f561038481565b60405161ffff90911681526020016101b2565b34801561021457600080fd5b506001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b34801561026657600080fd5b506008546102749060ff1681565b6040516101b2919061058a565b34801561028d57600080fd5b50610296601281565b60405160ff90911681526020016101b2565b3480156102b457600080fd5b506000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102e157600080fd5b506101d16102f0366004610535565b600d6020526000908152604090205481565b34801561030e57600080fd5b506101d160055481565b34801561032457600080fd5b506101d1610333366004610535565b600f6020526000908152604090205481565b34801561035157600080fd5b506101d1600b5481565b34801561036757600080fd5b506101a56104ff565b34801561037c57600080fd5b506101d160045481565b34801561039257600080fd5b506011546102359073ffffffffffffffffffffffffffffffffffffffff1681565b3480156103bf57600080fd5b506002546102359073ffffffffffffffffffffffffffffffffffffffff1681565b3480156103ec57600080fd5b506010546102359073ffffffffffffffffffffffffffffffffffffffff1681565b34801561041957600080fd5b506101d1610428366004610557565b600e60209081526000928352604080842090915290825290205481565b34801561045157600080fd5b506101d160035481565b34801561046757600080fd5b506101d1600a5481565b6007805461047e9061063e565b80601f01602080910402602001604051908101604052809291908181526020018280546104aa9061063e565b80156104f75780601f106104cc576101008083540402835291602001916104f7565b820191906000526020600020905b8154815290600101906020018083116104da57829003601f168201915b505050505081565b6006805461047e9061063e565b803573ffffffffffffffffffffffffffffffffffffffff8116811461053057600080fd5b919050565b60006020828403121561054757600080fd5b6105508261050c565b9392505050565b6000806040838503121561056a57600080fd5b6105738361050c565b91506105816020840161050c565b90509250929050565b60208101600283106105c5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b600060208083528351808285015260005b818110156105f8578581018301518582016040015282016105dc565b8181111561060a576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600181811c9082168061065257607f821691505b6020821081141561068c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b5091905056fea2646970667358221220b229364e7a9918553c008bca2249fc251b0662b166387bb68248fe64daee07b864736f6c63430008060033a26469706673582212208fd396d323db6525448a1ffdbe320dac0c9e202bf72592460bca2ffca9c8106464736f6c63430008060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000002330ee705ffd040bb0cba8cb7734dfe00e7c4b570000000000000000000000005b5746f6f5e2db8bf5e260829ca7a004c876b167000000000000000000000000c4e0f3ec24972c75df7c716922096f4270b7bb4e0000000000000000000000001171b858777120a59a6cc8148edda8982f187cd800000000000000000000000021a93be569666527dae0fdbfbe7715299dec1202
-----Decoded View---------------
Arg [0] : owner_ (address): 0x2330ee705fFD040bB0cbA8CB7734Dfe00E7C4b57
Arg [1] : logic_ (address): 0x5b5746F6f5e2Db8BF5e260829CA7a004c876B167
Arg [2] : editions_ (address): 0xC4E0f3Ec24972C75dF7c716922096F4270b7bB4e
Arg [3] : tributaryRegistry_ (address): 0x1171B858777120a59a6cc8148eDda8982F187Cd8
Arg [4] : treasuryConfig_ (address): 0x21A93bE569666527dAe0FDBFbe7715299dEC1202
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000002330ee705ffd040bb0cba8cb7734dfe00e7c4b57
Arg [1] : 0000000000000000000000005b5746f6f5e2db8bf5e260829ca7a004c876b167
Arg [2] : 000000000000000000000000c4e0f3ec24972c75df7c716922096f4270b7bb4e
Arg [3] : 0000000000000000000000001171b858777120a59a6cc8148edda8982f187cd8
Arg [4] : 00000000000000000000000021a93be569666527dae0fdbfbe7715299dec1202
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.