Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add CoreV3 Engine fork for Prohibition #639

Merged
merged 17 commits into from
Apr 19, 2023
Merged

Conversation

tlip
Copy link
Contributor

@tlip tlip commented Apr 17, 2023

Description of the change

Fork of the CoreV3 Engine Flex contract (and some supporting contracts) to add:

  • The ability to have artists create their own project shells
  • The ability for "verified" or trusted artists activate their own projects
  • Ability for "child" admin accounts that are given rights to call specific selectors

reminder: Any mainnet deployments after 10 Jan 2023 should be tagged as Releases in this repository. This ensures that the deployed contract source code is easily verifiable by anyone.

@tlip tlip requested a review from a team as a code owner April 17, 2023 22:42
@tlip tlip requested a review from jakerockland April 17, 2023 22:42
Copy link
Contributor

@jakerockland jakerockland left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some minor suggested edits here, but generally speaking overall LGTM.

@ryley-o would you be willing to TAL this week as well for a second set of eyes from our end?

Admin ACL diff: https://www.diffchecker.com/o9oOYbzW/
CoreV3 Flex diff: https://www.diffchecker.com/yYr25IDS/
MinterFilter diff: https://www.diffchecker.com/Pphlwqvi/

@jakerockland jakerockland requested a review from ryley-o April 18, 2023 16:29
Copy link
Contributor

@ryley-o ryley-o left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for developing this fork!
A couple requests:

  • We will certainly want to keep the existing adminACLAllowed public function (without projectId) to maintain compatibility in our future state of a shared minter suite (including shared minter filter). Additionally, some current minters would need forking to be compatible today. Please incorporate the changes highlighted in the following diff (apologies for some formatting changes that are irrelevant but show up in the diff): https://www.diffchecker.com/9cDsWC13/
    • note: switched some constants to state variables to keep strings out of bytecode to stay <24kb
    • note: you will want to update the IGenArt721CoreV3_Engine_PROHIBITION.sol to include the function as well
  • I think implementing the above changes will allow you to be able to not have to fork MinterFilterV1
  • Appreciate the updated tests, but would appreciate if all new core test logic lived in subdirectories. I think this can be as simple as copying your new files to a subdirectory, and updating the coreContractsToTest to be just the PROHIBITION fork (while leaving the original non-forked test files unchanged for this PR)
    • The exception here is that totally good with the current edits to util/common.ts, which LGTM as-is to me
    • Also note that if you no longer have to fork the MinterFilter, I think your tests simplify a bit!

Thank you!

Copy link
Contributor

@ryley-o ryley-o left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks great, and I have one more requested change 🙏

Thinking on this more, and I am going to follow up with an update our Engine docs to better communicate this, I would prefer all Engine forks conform to our existing interfaces. We design our data indexing layers based off of the interfaces, so enforcing interface at the compiler level will greatly reduce the chance of any integration issues in the future (which is a win-win for everyone).

Based on that, would appreciate if you could implement the changes described in this commit, which essentially changes IGenArt721CoreContractV3_Engine_Flex_PROHIBITION to simply extend IGenArt721CoreContractV3_Engine_Flex, accomplishing all the guarantees we would like to achieve: 776b78f#diff-c18369ac7400114ef07e9ad79b25b8bf2edcfe93654bc0bde3bc15c7b3dbc1db

Appreciate your patience on all of these reviews today! 🙏 😄

Copy link
Contributor

@ryley-o ryley-o left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 🎉 🙏 🙏

@ryley-o
Copy link
Contributor

ryley-o commented Apr 18, 2023

@tlip do you mind merging in the latest changes to main to this branch? thanks!

@ryley-o ryley-o enabled auto-merge April 19, 2023 04:09
@ryley-o ryley-o merged commit b114627 into ArtBlocks:main Apr 19, 2023
@gitpoap-bot
Copy link

gitpoap-bot bot commented Apr 19, 2023

Congrats, your important contribution to this open-source project has earned you a GitPOAP!

GitPOAP: 2023 Art Blocks Contributor:

GitPOAP: 2023 Art Blocks Contributor GitPOAP Badge

Head to gitpoap.io & connect your GitHub account to mint!

Learn more about GitPOAPs here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants