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

[WIP] Modular contracts #2880

Draft
wants to merge 33 commits into
base: main
Choose a base branch
from
Draft

[WIP] Modular contracts #2880

wants to merge 33 commits into from

Conversation

kumaryash90
Copy link
Member

@kumaryash90 kumaryash90 commented Apr 29, 2024

PR-Codex overview

This PR focuses on adding modular contract deployment setup and functionality enhancements related to modular extensions.

Detailed summary

  • Added modular contract deployment setup in v5
  • Introduced isModular check in contract publisher
  • Implemented hasDuplicates function in utils
  • Updated routerType options with modular
  • Added modularFactoryInput in deploy metadata
  • Modified DeployOptions with hooks array
  • Extended DeployedContractType with hook options
  • Added events for modular core extension operations
  • Updated schema with ModularFactoryInput
  • Added computeModularFactoryAddress function
  • Included modular core and extension features
  • Implemented isModular check in plugin ABI retrieval
  • Added uninstall extension functionality for modular core.

The following files were skipped due to too many changes: packages/thirdweb/src/extensions/modular/ModularCoreUpgradeable/write/uninstallExtensionByProxy.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCore/events/OwnershipHandoverCanceled.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCore/events/RolesUpdated.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCore/events/OwnershipHandoverRequested.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCoreUpgradeable/events/OwnershipHandoverCanceled.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCoreUpgradeable/events/RolesUpdated.ts, packages/thirdweb/scripts/generate/abis/modular/ModularExtension.json, packages/thirdweb/src/extensions/modular/__generated__/ModularCoreUpgradeable/events/OwnershipHandoverRequested.ts, packages/thirdweb/scripts/generate/abis/modular/IModularExtension.json, packages/thirdweb/src/extensions/modular/ModularCoreUpgradeable/write/uninstallPublishedExtension.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCore/events/OwnershipTransferred.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCoreUpgradeable/events/OwnershipTransferred.ts, legacy_packages/sdk/src/evm/common/modular/compatibleExtensions.ts, packages/thirdweb/src/extensions/modular/ModularCoreUpgradeable/write/installPublishedExtension.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCore/write/renounceOwnership.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCoreUpgradeable/write/renounceOwnership.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCore/write/cancelOwnershipHandover.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCore/write/requestOwnershipHandover.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCoreUpgradeable/write/cancelOwnershipHandover.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCoreUpgradeable/write/requestOwnershipHandover.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCore/read/owner.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCoreUpgradeable/read/owner.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCore/read/INSTALLER_ROLE.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCoreUpgradeable/read/INSTALLER_ROLE.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCoreUpgradeable/read/erc1967FactoryAddress.ts, packages/thirdweb/src/contract/actions/resolve-abi.ts, packages/thirdweb/scripts/generate/abis/modular/IModularCore.json, legacy_packages/sdk/src/evm/common/any-evm-utils/computeHookProxyAddress.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCore/read/getSupportedCallbackFunctions.ts, packages/thirdweb/src/extensions/modular/__generated__/IModularCore/read/getSupportedCallbackFunctions.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCoreUpgradeable/read/getSupportedCallbackFunctions.ts, legacy_packages/sdk/src/evm/common/any-evm-utils/getModularDeploymentInfo.ts, packages/thirdweb/src/extensions/prebuilts/deploy-modular-core.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularExtension/read/getExtensionConfig.ts, packages/thirdweb/src/extensions/modular/__generated__/IModularExtension/read/getExtensionConfig.ts, packages/thirdweb/src/exports/extensions/modular.ts, packages/thirdweb/src/extensions/modular/__generated__/IModularCore/read/getInstalledExtensions.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCore/read/getInstalledExtensions.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCoreUpgradeable/read/getInstalledExtensions.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCore/read/rolesOf.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCoreUpgradeable/read/rolesOf.ts, legacy_packages/sdk/src/evm/constants/thirdweb-features.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCore/read/hasAnyRole.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCoreUpgradeable/read/hasAnyRole.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCore/read/hasAllRoles.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCore/read/supportsInterface.ts, packages/thirdweb/src/extensions/modular/__generated__/IModularCore/read/supportsInterface.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCoreUpgradeable/read/hasAllRoles.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCoreUpgradeable/read/supportsInterface.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCore/write/renounceRoles.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCoreUpgradeable/write/renounceRoles.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCore/read/ownershipHandoverExpiresAt.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCoreUpgradeable/read/ownershipHandoverExpiresAt.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCore/write/transferOwnership.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCoreUpgradeable/write/transferOwnership.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCore/write/grantRoles.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCoreUpgradeable/write/grantRoles.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCore/write/revokeRoles.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCoreUpgradeable/write/revokeRoles.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCore/write/installExtension.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCore/write/completeOwnershipHandover.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCoreUpgradeable/write/completeOwnershipHandover.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCore/write/uninstallExtension.ts, packages/thirdweb/src/extensions/modular/__generated__/IModularCore/write/installExtension.ts, packages/thirdweb/src/extensions/modular/__generated__/IModularCore/write/uninstallExtension.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCoreUpgradeable/write/installExtension.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCoreUpgradeable/write/uninstallExtension.ts, legacy_packages/sdk/src/evm/core/sdk.ts, packages/thirdweb/src/extensions/modular/__generated__/ModularCoreUpgradeable/write/updateExtension.ts, legacy_packages/sdk/test/evm/mock/modularFactoryMetadata.ts, packages/thirdweb/scripts/generate/abis/modular/ModularCore.json, packages/thirdweb/scripts/generate/abis/modular/ModularCoreUpgradeable.json, packages/thirdweb/test/src/abis/modular/demo-extension-with-functions.ts, packages/thirdweb/test/src/abis/modular/demo-extension-with-interfaceid.ts, packages/thirdweb/test/src/abis/modular/demo-extension-alt.ts, legacy_packages/sdk/test/evm/modular-publish-deploy.test.ts, legacy_packages/sdk/test/evm/mock/mockExtensionWithFunctionsMetadata.ts, packages/thirdweb/src/extensions/prebuilts/deploy-modular-core.test.ts, legacy_packages/sdk/test/evm/mock/mockCoreInitializableMetadata.ts

✨ Ask PR-Codex anything about this PR by commenting with /codex {your question}

Copy link

changeset-bot bot commented Apr 29, 2024

🦋 Changeset detected

Latest commit: a3e7387

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 8 packages
Name Type
@thirdweb-dev/sdk Patch
thirdweb Patch
@thirdweb-dev/cli Patch
@thirdweb-dev/react-core Patch
@thirdweb-dev/react Patch
@thirdweb-dev/unity-js-bridge Patch
@thirdweb-dev/wallets Patch
@thirdweb-dev/auth Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@kumaryash90 kumaryash90 marked this pull request as draft April 29, 2024 15:38
@kumaryash90 kumaryash90 changed the title Modular contracts [WIP] Modular contracts Apr 29, 2024
Copy link

codecov bot commented Apr 29, 2024

Codecov Report

Attention: Patch coverage is 95.39295% with 17 lines in your changes are missing coverage. Please review.

Project coverage is 62.75%. Comparing base (b9b185b) to head (a3e7387).
Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2880      +/-   ##
==========================================
+ Coverage   62.39%   62.75%   +0.36%     
==========================================
  Files         812      816       +4     
  Lines       60856    61223     +367     
  Branches     3242     3271      +29     
==========================================
+ Hits        37970    38423     +453     
+ Misses      22216    22130      -86     
  Partials      670      670              
Flag Coverage Δ *Carryforward flag
legacy_packages 65.61% <ø> (-0.01%) ⬇️ Carriedforward from c1419ca
packages 62.13% <95.39%> (+0.45%) ⬆️

*This pull request uses carry forward flags. Click here to find out more.

Files Coverage Δ
...sdk/src/evm/common/plugin/getCompositePluginABI.ts 72.72% <ø> (ø)
legacy_packages/sdk/src/evm/common/utils.ts 92.85% <ø> (ø)
...ackages/sdk/src/evm/constants/contract-features.ts 100.00% <ø> (ø)
...ackages/sdk/src/evm/constants/thirdweb-features.ts 100.00% <ø> (ø)
...ges/sdk/src/evm/core/classes/contract-publisher.ts 64.42% <ø> (ø)
legacy_packages/sdk/src/evm/core/sdk.ts 66.39% <ø> (ø)
...cy_packages/sdk/src/evm/schema/contracts/custom.ts 96.87% <ø> (-0.05%) ⬇️
...CoreUpgradeable/write/installPublishedExtension.ts 100.00% <100.00%> (ø)
...ages/thirdweb/src/utils/any-evm/deploy-metadata.ts 97.57% <100.00%> (+0.03%) ⬆️
...CoreUpgradeable/write/uninstallExtensionByProxy.ts 97.50% <97.50%> (ø)
... and 3 more

... and 5 files with indirect coverage changes

@kumaryash90 kumaryash90 added the DO NOT MERGE not ready to be merged yet label Apr 29, 2024
@kumaryash90
Copy link
Member Author

/release-pr

@kumaryash90
Copy link
Member Author

/release-pr

@kumaryash90
Copy link
Member Author

/release-pr

@kumaryash90
Copy link
Member Author

/release-pr

@kumaryash90
Copy link
Member Author

/release-pr

@kumaryash90
Copy link
Member Author

/release-pr

@kumaryash90
Copy link
Member Author

/release-pr

Copy link

codspeed-hq bot commented May 16, 2024

CodSpeed Performance Report

Merging #2880 will not alter performance

Comparing yash/modular-contracts (a3e7387) with main (c4fa6fc)

Summary

✅ 9 untouched benchmarks

Copy link
Contributor

github-actions bot commented May 16, 2024

size-limit report 📦

Path Size Loading time (3g) Running time (snapdragon) Total time
thirdweb (esm) 39.43 KB (+0.47% 🔺) 789 ms (+0.47% 🔺) 230 ms (+175.48% 🔺) 1.1 s
thirdweb (cjs) 88.84 KB (+0.19% 🔺) 1.8 s (+0.19% 🔺) 452 ms (+96.13% 🔺) 2.3 s
thirdweb (minimal + tree-shaking) 4.75 KB (0%) 95 ms (0%) 102 ms (+1915.59% 🔺) 197 ms
thirdweb/chains (tree-shaking) 423 B (0%) 10 ms (0%) 126 ms (+8862.86% 🔺) 136 ms
thirdweb/react (minimal + tree-shaking) 15.71 KB (0%) 315 ms (0%) 117 ms (+862.67% 🔺) 431 ms

account: Account;
contract: ThirdwebContract;
extensionName: string;
publisherAddress: string;
Copy link
Contributor

Choose a reason for hiding this comment

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

make this optional and default to THIRDWEB_DEPLOYER? here and in the other extensions

});
return {
extensionImplementation: deployedExtension.implementationContract
.address as string,
Copy link
Contributor

Choose a reason for hiding this comment

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

why do you need the as string here?

* TODO not quite ready for public consumption yet
* @internal
*/
export async function deployModularCoreContract(
Copy link
Contributor

Choose a reason for hiding this comment

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

is this core for ANY type of contract? erc721/erc1155/erc20/etc?

Copy link
Member Author

Choose a reason for hiding this comment

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

Right now testing with a mock core contract. But this function should allow deployment of any core contract.

@kumaryash90
Copy link
Member Author

/release-pr

@kumaryash90
Copy link
Member Author

/release-pr

@kumaryash90
Copy link
Member Author

/release-pr

Copy link

vercel bot commented May 28, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
thirdweb_playground ✅ Ready (Inspect) Visit Preview 💬 Add feedback May 28, 2024 0:38am

@kumaryash90
Copy link
Member Author

/release-pr

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
DO NOT MERGE not ready to be merged yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants