New PA Onchain Module - TokenUriMinter

Just finished a new zora minting module + metadata renderer combo for the PA Onchain repo. here is the github repo, and here is a figma that breaks down the architecture + contract interactions required to set this up (included an example)

tldr : custom minting module + metadata renderer that are tied together and let you set the tokenURI of a token upon mint, without needing to define collection wide token metadata upon contract deployment (what zora currently does for editions + drops)

potential use cases : scrapbooking, archiving, instances where you want to collect user generated data from a front end and mint it, creator owned “1 of 1 album” minting contract in similar vein of the old zora minting contract, etc

3 Likes

@valcoholics @salief @DBlodorn how yall feeling this “Solidity” category ??

think it could be a great community resource for beginner/intermediate level learning

2 Likes

Very cool.

1 Like

I am digging the Solidity category, excited for this to be more of a public conversation

2 Likes

A post was split to a new topic: Solidity Bootcamp

Left comments on some of the process that I didn’t understand in the linked Figma

thx for the comments just replied

I very much like this. I get really tripped up on basic stuff like deploying, passing the right args etc. so even just having examples of deploy scripts is nice.

Dain in Foundry is my new motivation to keep grinding

Dain making ham fisted deployments in Goerli etherscan is my bait to get @salief making tight UIs :grinning:

2 Likes

Couldn’t help myself:

https://etherscan.io/tx/0x2925d99893629f70f88e2e11f27a1f6e7f26e67b334bbc11bdb26db3be6e7662
https://etherscan.io/address/0x345907b44c9995bfde9ef62f644d38c126dcfb69

Deployer: 0xBFaa232E8fEfb8Aefb39230202383B356061C06C
Deployed to: 0x345907B44c9995bfdE9EF62f644D38c126dCfB69
Transaction hash: 0x2925d99893629f70f88e2e11f27a1f6e7f26e67b334bbc11bdb26db3be6e7662
Starting contract verification...
Waiting for etherscan to detect contract deployment...
Start verifying contract `0x345907b44c9995bfde9ef62f644d38c126dcfb69` deployed on mainnet

Submitting verification for [src/TokenUriMetadataRenderer.sol:TokenUriMetadataRenderer] "0x345907B44c9995bfdE9EF62f644D38c126dCfB69".

Submitting verification for [src/TokenUriMetadataRenderer.sol:TokenUriMetadataRenderer] "0x345907B44c9995bfdE9EF62f644D38c126dCfB69".
Submitted contract for verification:
        Response: `OK`
        GUID: `xhpzm3dgyajtxg7uhqnbwtgmj86xjizqr4xqsjujyhtiuaungm`
        URL:
        https://etherscan.io/address/0x345907b44c9995bfde9ef62f644d38c126dcfb69
Contract verification status:
Response: `NOTOK`
Details: `Pending in queue`
Contract verification status:
Response: `OK`
Details: `Pass - Verified`
Contract successfully verified
https://etherscan.io/tx/0xac3cb2486b377b71e18291993313ea13bdaf4b3b1ced07bf2f7675d9a71f1ba2
https://etherscan.io/address/0x841084409d3683daeccb700d9da5a722c16ea33d

Deployer: 0xBFaa232E8fEfb8Aefb39230202383B356061C06C
Deployed to: 0x841084409d3683daECcb700d9DA5A722C16EA33D
Transaction hash: 0xac3cb2486b377b71e18291993313ea13bdaf4b3b1ced07bf2f7675d9a71f1ba2
Starting contract verification...
Waiting for etherscan to detect contract deployment...
Start verifying contract `0x841084409d3683daeccb700d9da5a722c16ea33d` deployed on mainnet

Submitting verification for [src/TokenUriMinter.sol:TokenUriMinter] "0x841084409d3683daECcb700d9DA5A722C16EA33D".
Submitted contract for verification:
        Response: `OK`
        GUID: `irxuww13pewhwg1u2t9i2nv3ee1yiaehgxrisxa2pqwfnrkcha`
        URL:
        https://etherscan.io/address/0x841084409d3683daeccb700d9da5a722c16ea33d
Contract verification status:
Response: `NOTOK`
Details: `Pending in queue`
Contract verification status:
Response: `OK`
Details: `Pass - Verified`
Contract successfully verified

TokenUriMetadataRenderer:

TokenUriMinter:

ayyyyy we on mainnet???

Yessir.
Going to deploy my Scrapbook contract now :slight_smile:

1 Like

@0xTranqui @valcoholics so deploying the drop contract off of mainnet etherscan these are the addresses I have:

"ZORA_NFT_CREATOR_V1_IMPL": "0x0DFF6D464fEA23A8A4E0CD6fe94f44B51EF0D96c",
"ZORA_NFT_CREATOR_PROXY": "0xF74B146ce44CC162b601deC3BE331784DB111DC1"

Assuming I use the first:

To go through the setupDropsContract step (from onchain readme).

  1. Deploy Zora Drop Contract (only available on Mainnet/Goerli atm), and pass in address of TokenUriMetadataRenderer for Metadata Renderer, and abi.encoded value of contractURI + wildcardAddress for Renderer Init

See screenshot below for how to use abi.hashex.org to create encoded init value for Zora Drop init:

correct. ZoraNFTCreatorV1 gives u access to the “setupDropsContract” function which is where you can pass in custom metadata renderer and init

the proxy only allows access to “createDrop” and “createEdition”

Minting on mainnet!

1 Like

Querying my new “Scrapbook” contract on mainnet:
(using https://playground.api.zora.co/)
– FEELS GOOD! (Need a UI)

1 Like

What would some of the user generated data be, and other instances where this combo can be used? Not fully grasping the situational use when you say scrapbooking, archiving and etc. Wondering if you can provide a situational metaphor/explanation