Skip to content

Commit

Permalink
Merge pull request #135 from moleculeprotocol/feat/remove-mintpasses
Browse files Browse the repository at this point in the history
replace mintpasses with ipnft metadata signature validation
  • Loading branch information
elmariachi111 authored Jul 12, 2023
2 parents 17d84d0 + f629d21 commit 40d8f9a
Show file tree
Hide file tree
Showing 41 changed files with 744 additions and 671 deletions.
27 changes: 14 additions & 13 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -14,22 +14,23 @@ THEGRAPH_API_TOKEN=
#these are deterministic when deployed in that order on a fresh node with hardhat (anvil) seed
IPNFT_ADDRESS=0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512
SOS_ADDRESS=0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9
MINTPASS_ADDRESS=0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9
AUTHORIZER_ADDRESS=0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9

USDC_ADDRESS=0xa513E6E4b8f2a923D98304ec87F64353C4D5C853
DAO_TOKEN_ADDRESS=0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6
VDAO_TOKEN_ADDRESS=0x8A791620dd6260079BF849Dc5567aDC3F2FdC318
USDC_ADDRESS=0x0165878A594ca255338adfa4d48449f69242Eb8F
DAO_TOKEN_ADDRESS=0xa513E6E4b8f2a923D98304ec87F64353C4D5C853
VDAO_TOKEN_ADDRESS=0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6

PRICEFEED_ADDRESS=0x610178dA211FEF7D417bC0e6FeD39F05609AD788
TERMS_ACCEPTED_PERMISSIONER_ADDRESS=0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e
PRICEFEED_ADDRESS=0x8A791620dd6260079BF849Dc5567aDC3F2FdC318
TERMS_ACCEPTED_PERMISSIONER_ADDRESS=0x610178dA211FEF7D417bC0e6FeD39F05609AD788

SYNTHESIZER_ADDRESS=0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0
STAKED_LOCKING_CROWDSALE_ADDRESS=0x9A676e781A523b5d0C0e43731313A708CB607508

USDC6_ADDRESS=0x9A9f2CCfdE556A7E9Ff0848998Aa4a0CFD8863AE
WETH_ADDRESS=0x59b670e9fA9D0A427751Af201D676719a970857b

SYNTHESIZER_ADDRESS=0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82
STAKED_LOCKING_CROWDSALE_ADDRESS=0x0B306BF915C4d645ff596e518fAf3F9669b97016
#these are generated when running the fixture scripts
MOLECULES_ADDRESS=0x32467b43BFa67273FC7dDda0999Ee9A12F2AaA08
#LOCKED_MOLECULES_ADDRESS=0xc6e7DF5E7b4f2A278906862b61205850344D4e7d
LOCKED_MOLECULES_ADDRESS=0x16eBC21B3d38Db5e3EE1a022bEBA8Ec87D4CDbe6
MOLECULES_ADDRESS=0x1F708C24a0D3A740cD47cC0444E9480899f3dA7D
LOCKED_MOLECULES_ADDRESS=0x06cd7788D77332cF1156f1E327eBC090B5FF16a3

USDC6_ADDRESS=0x7a2088a1bFc9d81c55368AE168C2C02570cB814F
WETH_ADDRESS=0xE6E340D132b5f46d1e472DebcD681B2aBc16e57E

264 changes: 55 additions & 209 deletions .gas-report

Large diffs are not rendered by default.

136 changes: 69 additions & 67 deletions .gas-snapshot
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,23 @@ BioPriceFeedTest:testOnlySignaller() (gas: 44772)
BioPriceFeedTest:testSignalFloatingPrice() (gas: 66741)
BioPriceFeedTest:testSignalPrice() (gas: 66687)
BioPriceFeedTest:testUSDC() (gas: 89912)
ContractReceiverTest:testAbstractAccountsCanTradeIPNFTs() (gas: 1734447)
ContractReceiverTest:testCanMintToERC721Receiver() (gas: 875931)
CrowdSaleFuzzTest:testFuzzManyBidders(uint8,uint96,uint96) (runs: 256, μ: 986089, ~: 623920)
CrowdSaleLockedStakedTest:testCannotSetupCrowdSaleWithParentFunctions() (gas: 46067)
CrowdSaleLockedStakedTest:testClaimLongAfterVestingPeriod() (gas: 1054637)
CrowdSaleLockedStakedTest:testOverbiddingAndRefunds() (gas: 1429698)
CrowdSaleLockedStakedTest:testSettlementAndSimpleClaims() (gas: 988744)
CrowdSaleLockedStakedTest:testStakeLockingCrowdSalesBadParameters() (gas: 2465293)
CrowdSaleLockedStakedTest:testUnevenOverbiddingAndPriceAndRefunds() (gas: 1474042)
CrowdSaleLockedStakedTest:testUnsuccessfulSaleClaims() (gas: 681956)
CrowdSaleLockedTest:testAutoCreateLockingContracts() (gas: 582164)
CrowdSaleLockedTest:testClaimLongAfterLockingPeriod() (gas: 479440)
CrowdSaleLockedTest:testLockingCrowdSalesBadParameters() (gas: 44848)
CrowdSaleLockedTest:testSettlementAndSimpleClaims() (gas: 585635)
CrowdSaleLockedTest:testUnsuccessfulSaleClaims() (gas: 437791)
CrowdSalePermissionedTest:testPermissionedSettlementAndSimpleClaims() (gas: 1065315)
ContractReceiverTest:testAbstractAccountsCanTradeIPNFTs() (gas: 1624822)
ContractReceiverTest:testCanMintToERC721Receiver() (gas: 766329)
CrowdSaleFuzzTest:testFuzzManyBidders(uint8,uint96,uint96) (runs: 256, μ: 1004756, ~: 623920)
CrowdSaleLockedStakedTest:testCannotSetupCrowdSaleWithParentFunctions() (gas: 46156)
CrowdSaleLockedStakedTest:testClaimLongAfterVestingPeriod() (gas: 1054349)
CrowdSaleLockedStakedTest:testOverbiddingAndRefunds() (gas: 1429493)
CrowdSaleLockedStakedTest:testSettlementAndSimpleClaims() (gas: 988478)
CrowdSaleLockedStakedTest:testStakeLockingCrowdSalesBadParameters() (gas: 2464966)
CrowdSaleLockedStakedTest:testUnevenOverbiddingAndPriceAndRefunds() (gas: 1473793)
CrowdSaleLockedStakedTest:testUnsuccessfulSaleClaims() (gas: 681563)
CrowdSaleLockedTest:testAutoCreateLockingContracts() (gas: 582176)
CrowdSaleLockedTest:testClaimLongAfterLockingPeriod() (gas: 479351)
CrowdSaleLockedTest:testLockingCrowdSalesBadParameters() (gas: 44826)
CrowdSaleLockedTest:testReusePubliclyCreatedLockingContracts() (gas: 696923)
CrowdSaleLockedTest:testSettlementAndSimpleClaims() (gas: 585648)
CrowdSaleLockedTest:testUnsuccessfulSaleClaims() (gas: 437742)
CrowdSalePermissionedTest:testPermissionedSettlementAndSimpleClaims() (gas: 1065294)
CrowdSaleTest:testCannotCreateSaleWithoutFunds() (gas: 195937)
CrowdSaleTest:testCannotInitializeSaleWithBadParams() (gas: 282101)
CrowdSaleTest:testCreateSale() (gas: 273447)
Expand All @@ -30,28 +31,29 @@ CrowdSaleTest:testSingleRefundsOnOvershoot() (gas: 355046)
CrowdSaleTest:testTwoBiddersMeetExactly() (gas: 393222)
CrowdSaleTest:testUnevenOverbiddingAndRefunds() (gas: 511458)
CrowdSaleTest:testUnsuccessfulSaleClaims() (gas: 339414)
CrowdSaleWithNonStandardERC20Test:testOverbiddingAndRefunds() (gas: 1414073)
CrowdSaleWithNonStandardERC20Test:testSettlementAndSimpleClaims() (gas: 990091)
CrowdSaleWithNonStandardERC20Test:testUnevenOverbiddingAndPriceAndRefunds() (gas: 1478054)
CrowdSaleWithNonStandardERC20Test:testUnsuccessfulSaleClaims() (gas: 637366)
CrowdSaleWithNonStandardERC20Test:testWith2Decimals() (gas: 2112135)
CrowdSaleWithNonStandardERC20Test:testOverbiddingAndRefunds() (gas: 1413868)
CrowdSaleWithNonStandardERC20Test:testSettlementAndSimpleClaims() (gas: 989825)
CrowdSaleWithNonStandardERC20Test:testUnevenOverbiddingAndPriceAndRefunds() (gas: 1477783)
CrowdSaleWithNonStandardERC20Test:testUnsuccessfulSaleClaims() (gas: 637052)
CrowdSaleWithNonStandardERC20Test:testWith2Decimals() (gas: 2111930)
GnosisSafeSetup:testGeneralSetup() (gas: 14838)
GnosisSafeSetup:testOwnersCanInteractWithSafe() (gas: 104510)
GnosisSafeSetup:testSafeAcceptsMoney() (gas: 24304)
IPNFTTest:testBurn() (gas: 265179)
IPNFTTest:testCanWithdrawMintingFees() (gas: 318504)
IPNFTTest:testCannotMintWhenPaused() (gas: 43469)
IPNFTTest:testCannotSendPlainEtherToIPNFT() (gas: 32912)
IPNFTTest:testBurn() (gas: 177829)
IPNFTTest:testCanWithdrawMintingFees() (gas: 211323)
IPNFTTest:testCannotMintWhenPaused() (gas: 43473)
IPNFTTest:testCannotSendPlainEtherToIPNFT() (gas: 32859)
IPNFTTest:testInitialDeploymentState() (gas: 12565)
IPNFTTest:testMintFromReservation() (gas: 338656)
IPNFTTest:testOnlyReservationOwnerCanMintFromReservation() (gas: 147920)
IPNFTTest:testOwnerCanGrantReadAccess() (gas: 353681)
IPNFTTest:testOwnerCanWithdrawEthFunds() (gas: 129319)
IPNFTTest:testTokenReservation() (gas: 152860)
IPNFTTest:testTokenReservationCounter() (gas: 215608)
IPNFTUpgrades:testKeepsPauseability() (gas: 3104216)
IPNFTUpgrades:testTokensSurviveUpgrade() (gas: 3030574)
IPNFTUpgrades:testUpgradeContract() (gas: 2737397)
IPNFTTest:testMintFromReservation() (gas: 750032)
IPNFTTest:testOnlyReservationOwnerCanMintFromReservation() (gas: 67821)
IPNFTTest:testOwnerCanGrantReadAccess() (gas: 244202)
IPNFTTest:testOwnerCanWithdrawEthFunds() (gas: 129262)
IPNFTTest:testTokenReservation() (gas: 55471)
IPNFTTest:testTokenReservationCounter() (gas: 82553)
IPNFTUpgrades:testFutureUpgrade() (gas: 6199733)
IPNFTUpgrades:testTokensSurviveUpgrade() (gas: 3598264)
IPNFTUpgrades:testUpgradeContract() (gas: 3143342)
MintAuthorizerTest:testAuthorizerAcceptsOnlyValidSignatures() (gas: 47481)
MintpassTest:testBatchMintFifty() (gas: 302226)
MintpassTest:testBatchMintTen() (gas: 132039)
MintpassTest:testBurnFromOwner() (gas: 109831)
Expand All @@ -63,39 +65,39 @@ MintpassTest:testRevokeToken() (gas: 145174)
MintpassTest:testSafeMintFromNotOwner() (gas: 48811)
MintpassTest:testSingleMints() (gas: 183497)
MintpassTest:testTransfer() (gas: 91572)
PermissionerTest:testProveSigAndAcceptTerms() (gas: 77795)
PermissionerTest:testThatContractSignaturesAreAccepted() (gas: 4841391)
PermissionerTest:testProveSigAndAcceptTerms() (gas: 78017)
PermissionerTest:testThatContractSignaturesAreAccepted() (gas: 4841563)
ReoverSigs:testRecoverManually() (gas: 7573)
ReoverSigs:testRecoverOz() (gas: 9297)
SalesShareDistributorTest:testClaimBuyoutShares() (gas: 1506354)
SalesShareDistributorTest:testClaimBuyoutSharesAfterSwap() (gas: 1536290)
SalesShareDistributorTest:testClaimingFraud() (gas: 1807083)
SalesShareDistributorTest:testCreateListingAndSell() (gas: 689725)
SalesShareDistributorTest:testFuzzSynthesize(uint256,uint256) (runs: 256, μ: 614913, ~: 618476)
SalesShareDistributorTest:testManuallyStartClaimingPhase() (gas: 801789)
SalesShareDistributorTest:testStartClaimingPhase() (gas: 851597)
SchmackoSwapTest:testCanBuyListing() (gas: 286999)
SchmackoSwapTest:testCanCancelSale() (gas: 181557)
SchmackoSwapTest:testCanCreateSale() (gas: 177735)
SchmackoSwapTest:testCanOnlyBuyWithSufficientBalance() (gas: 325786)
SalesShareDistributorTest:testClaimBuyoutShares() (gas: 1559876)
SalesShareDistributorTest:testClaimBuyoutSharesAfterSwap() (gas: 1589727)
SalesShareDistributorTest:testClaimingFraud() (gas: 1720833)
SalesShareDistributorTest:testCreateListingAndSell() (gas: 691331)
SalesShareDistributorTest:testFuzzSynthesize(uint256,uint256) (runs: 256, μ: 616524, ~: 620087)
SalesShareDistributorTest:testManuallyStartClaimingPhase() (gas: 803401)
SalesShareDistributorTest:testStartClaimingPhase() (gas: 853218)
SchmackoSwapTest:testCanBuyListing() (gas: 287006)
SchmackoSwapTest:testCanCancelSale() (gas: 181572)
SchmackoSwapTest:testCanCreateSale() (gas: 177750)
SchmackoSwapTest:testCanOnlyBuyWithSufficientBalance() (gas: 325785)
SchmackoSwapTest:testCannotBuyNotExistingValue() (gas: 26528)
SchmackoSwapTest:testCannotFulfillWhenSellerHasMovedTheNft() (gas: 276060)
SchmackoSwapTest:testCannotListWhenTokenIsNotApproved() (gas: 33900)
SchmackoSwapTest:testCannotManageAllowListsForNonexistingListing() (gas: 200299)
SchmackoSwapTest:testCannotSendNftsToSchmackoswap() (gas: 60477)
SchmackoSwapTest:testGeneralBalancesAndSupplies() (gas: 36749)
SchmackoSwapTest:testNonOwnerCannotCancelSale() (gas: 176528)
SchmackoSwapTest:testNonOwnerCannotCreateSale() (gas: 41045)
SchmackoSwapTest:testSellerCanManageAllowlist() (gas: 189942)
SynthesizerTest:testCanBeSynthesizedOnlyOnce() (gas: 652897)
SynthesizerTest:testCanUpgradeErc20TokenImplementation() (gas: 3890680)
SynthesizerTest:testCannotSynthesizeIfNotOwner() (gas: 36052)
SynthesizerTest:testGnosisSafeCanInteractWithMolecules() (gas: 4450673)
SynthesizerTest:testIncreaseMolecules() (gas: 490109)
SynthesizerTest:testIssueMolecules() (gas: 435492)
SynthesizerTest:testUrl() (gas: 461597)
TimelockedTokenTest:testCanLock() (gas: 157947)
TimelockedTokenTest:testCanWithdrawAfterLockingPeriod() (gas: 149653)
TimelockedTokenTest:testCanWithdrawSeveralSchedules() (gas: 275990)
TimelockedTokenTest:testCannotCreateTheSameSchedule() (gas: 151204)
TimelockedTokenTest:testCannotTransferOrApprove() (gas: 154835)
SchmackoSwapTest:testCannotFulfillWhenSellerHasMovedTheNft() (gas: 276059)
SchmackoSwapTest:testCannotListWhenTokenIsNotApproved() (gas: 33909)
SchmackoSwapTest:testCannotManageAllowListsForNonexistingListing() (gas: 200314)
SchmackoSwapTest:testCannotSendNftsToSchmackoswap() (gas: 60469)
SchmackoSwapTest:testGeneralBalancesAndSupplies() (gas: 36737)
SchmackoSwapTest:testNonOwnerCannotCancelSale() (gas: 176543)
SchmackoSwapTest:testNonOwnerCannotCreateSale() (gas: 41060)
SchmackoSwapTest:testSellerCanManageAllowlist() (gas: 189957)
SynthesizerTest:testCanBeSynthesizedOnlyOnce() (gas: 652121)
SynthesizerTest:testCanUpgradeErc20TokenImplementation() (gas: 4023524)
SynthesizerTest:testCannotSynthesizeIfNotOwner() (gas: 37010)
SynthesizerTest:testGnosisSafeCanInteractWithMolecules() (gas: 4452256)
SynthesizerTest:testIncreaseMolecules() (gas: 491695)
SynthesizerTest:testIssueMolecules() (gas: 437075)
SynthesizerTest:testUrl() (gas: 464322)
TimelockedTokenTest:testCanLock() (gas: 160134)
TimelockedTokenTest:testCanWithdrawAfterLockingPeriod() (gas: 149737)
TimelockedTokenTest:testCanWithdrawSeveralSchedules() (gas: 276242)
TimelockedTokenTest:testCannotCreateTheSameSchedule() (gas: 151414)
TimelockedTokenTest:testCannotTransferOrApprove() (gas: 154940)
22 changes: 10 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,24 +17,22 @@ IP-NFTs allow their users to tokenize intellectual property. This repo contains

- Subgraph: <https://api.thegraph.com/subgraphs/name/moleculeprotocol/ip-nft-mainnet>

SYNTHESIZER_ADDRESS=0x58EB89C69CB389DBef0c130C6296ee271b82f436

synthImpl implementation 1: 0xb050A85933FF0807f05d289b7f6457c5eFbC348f
ipnft implementation: 0x0443DfAC8E510cFBDFdb9247E77400E9728aE45D

---

### Goerli

| Contract | Address | Actions |
| ------------ | ---------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| IP-NFT | [0xaf7358576C9F7cD84696D28702fC5ADe33cce0e9](https://goerli.etherscan.io/address/0xaf7358576C9F7cD84696D28702fC5ADe33cce0e9#code>) | <a href="https://thirdweb.com/goerli/0xaf7358576C9F7cD84696D28702fC5ADe33cce0e9?utm_source=contract_badge" target="_blank"><img width="200" height="45" src="https://badges.thirdweb.com/contract?address=0xaf7358576C9F7cD84696D28702fC5ADe33cce0e9&theme=dark&chainId=5" alt="View contract" /></a> |
| SchmackoSwap | [0x67D8ed102E2168A46FA342e39A5f7D16c103Bd0d](https://goerli.etherscan.io/address/0x67D8ed102E2168A46FA342e39A5f7D16c103Bd0d#code) | <a href="https://thirdweb.com/goerli/0x67D8ed102E2168A46FA342e39A5f7D16c103Bd0d?utm_source=contract_badge" target="_blank"><img width="200" height="45" src="https://badges.thirdweb.com/contract?address=0x67D8ed102E2168A46FA342e39A5f7D16c103Bd0d&theme=dark&chainId=5" alt="View contract" /></a> |
| Mintpass | [0xaf0f99dcc64e8a6549d32013ac9f2c3fa7834688](https://goerli.etherscan.io/address/0xaf0f99dcc64e8a6549d32013ac9f2c3fa7834688#code) | <a href="https://thirdweb.com/goerli/0xaf0f99dcc64e8a6549d32013ac9f2c3fa7834688?utm_source=contract_badge" target="_blank"><img width="200" height="45" src="https://badges.thirdweb.com/contract?address=0xaf0f99dcc64e8a6549d32013ac9f2c3fa7834688&theme=dark&chainId=5" alt="View contract" /></a> |
| Synthesizer | [0xb12494eeA6B992d0A1Db3C5423BE7a2d2337F58c](https://goerli.etherscan.io/address/0xb12494eeA6B992d0A1Db3C5423BE7a2d2337F58c#code) | <a href="https://thirdweb.com/goerli/0xb12494eeA6B992d0A1Db3C5423BE7a2d2337F58c?utm_source=contract_badge" target="_blank"><img width="200" height="45" src="https://badges.thirdweb.com/contract?address=0xb12494eeA6B992d0A1Db3C5423BE7a2d2337F58c&theme=dark&chainId=5" alt="View contract" /></a> |
| Permissioner | [0x0045723801561079d94f0Bb1B65f322078E52635](https://goerli.etherscan.io/address/0x0045723801561079d94f0Bb1B65f322078E52635#code) | <a href="https://thirdweb.com/goerli/0x0045723801561079d94f0Bb1B65f322078E52635?utm_source=contract_badge" target="_blank"><img width="200" height="45" src="https://badges.thirdweb.com/contract?address=0x0045723801561079d94f0Bb1B65f322078E52635&theme=dark&chainId=5" alt="View contract" /></a> |
| Contract | Address | Actions |
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| IP-NFT | [0xaf7358576C9F7cD84696D28702fC5ADe33cce0e9](https://goerli.etherscan.io/address/0xaf7358576C9F7cD84696D28702fC5ADe33cce0e9#code>) | <a href="https://thirdweb.com/goerli/0xaf7358576C9F7cD84696D28702fC5ADe33cce0e9?utm_source=contract_badge" target="_blank"><img width="200" height="45" src="https://badges.thirdweb.com/contract?address=0xaf7358576C9F7cD84696D28702fC5ADe33cce0e9&theme=dark&chainId=5" alt="View contract" /></a> |
| SchmackoSwap | [0x67D8ed102E2168A46FA342e39A5f7D16c103Bd0d](https://goerli.etherscan.io/address/0x67D8ed102E2168A46FA342e39A5f7D16c103Bd0d#code) | <a href="https://thirdweb.com/goerli/0x67D8ed102E2168A46FA342e39A5f7D16c103Bd0d?utm_source=contract_badge" target="_blank"><img width="200" height="45" src="https://badges.thirdweb.com/contract?address=0x67D8ed102E2168A46FA342e39A5f7D16c103Bd0d&theme=dark&chainId=5" alt="View contract" /></a> |
| Mintpass | [0xaf0f99dcc64e8a6549d32013ac9f2c3fa7834688](https://goerli.etherscan.io/address/0xaf0f99dcc64e8a6549d32013ac9f2c3fa7834688#code) | <a href="https://thirdweb.com/goerli/0xaf0f99dcc64e8a6549d32013ac9f2c3fa7834688?utm_source=contract_badge" target="_blank"><img width="200" height="45" src="https://badges.thirdweb.com/contract?address=0xaf0f99dcc64e8a6549d32013ac9f2c3fa7834688&theme=dark&chainId=5" alt="View contract" /></a> |
| Synthesizer | [0xb12494eeA6B992d0A1Db3C5423BE7a2d2337F58c](https://goerli.etherscan.io/address/0xb12494eeA6B992d0A1Db3C5423BE7a2d2337F58c#code) | <a href="https://thirdweb.com/goerli/0xb12494eeA6B992d0A1Db3C5423BE7a2d2337F58c?utm_source=contract_badge" target="_blank"><img width="200" height="45" src="https://badges.thirdweb.com/contract?address=0xb12494eeA6B992d0A1Db3C5423BE7a2d2337F58c&theme=dark&chainId=5" alt="View contract" /></a> |
| Permissioner | [0x0045723801561079d94f0Bb1B65f322078E52635](https://goerli.etherscan.io/address/0x0045723801561079d94f0Bb1B65f322078E52635#code) | <a href="https://thirdweb.com/goerli/0x0045723801561079d94f0Bb1B65f322078E52635?utm_source=contract_badge" target="_blank"><img width="200" height="45" src="https://badges.thirdweb.com/contract?address=0x0045723801561079d94f0Bb1B65f322078E52635&theme=dark&chainId=5" alt="View contract" /></a> |
| SignedMintAuthorizer | [0x5e555eE24DB66825171Ac63EA614864987CEf1Af](https://goerli.etherscan.io/address/0x5e555eE24DB66825171Ac63EA614864987CEf1Af#code) | <a href="https://thirdweb.com/goerli/0x5e555eE24DB66825171Ac63EA614864987CEf1Af?utm_source=contract_badge" target="_blank"><img width="200" height="45" src="https://badges.thirdweb.com/contract?address=0x5e555eE24DB66825171Ac63EA614864987CEf1Af&theme=dark&chainId=5" alt="View contract" /></a> |

- HeadlessDispenser <https://goerli.etherscan.io/address/0x0F1Bd197c5dCC6bC7E8025037a7780010E2Cd22A#code>
- Subgraph: <https://api.thegraph.com/subgraphs/name/dorianwilhelm/ip-nft-subgraph-goerli/graphql>

- Synthesizer: 0xb12494eeA6B992d0A1Db3C5423BE7a2d2337F58c
Expand All @@ -51,8 +49,8 @@ ipnft implementation: 0x0443DfAC8E510cFBDFdb9247E77400E9728aE45D
- Staked/Locking Crowdsale: 0x46c3369dece07176ad7164906d3593aa4c126d35
<https://goerli.etherscan.io/address/0x46c3369dece07176ad7164906d3593aa4c126d35#code>

- Blind Permissioner: 0xec68a1fc8d4c2834f8dfbdb56691f9f0a3d6be11
<https://goerli.etherscan.io/address/0xec68a1fc8d4c2834f8dfbdb56691f9f0a3d6be11#code>
- Blind Permissioner: 0xec68a1fc8d4c2834f8dfbdb56691f9f0a3d6be11
<https://goerli.etherscan.io/address/0xec68a1fc8d4c2834f8dfbdb56691f9f0a3d6be11#code>

#### some test tokens

Expand Down
Loading

0 comments on commit 40d8f9a

Please sign in to comment.