Skip to content

Conversation

0xFirekeeper
Copy link
Member

@0xFirekeeper 0xFirekeeper commented Jul 28, 2025

Introduces an EntryPoint parameter to the smart wallet creation flow across C++, Blueprint, and K2Node interfaces. Updates the Thirdweb native bindings, async task, handle, and node logic to support specifying an entry point contract when creating a smart wallet.

Closes BLD-12

Summary by CodeRabbit

  • New Features

    • Added support for specifying an "EntryPoint" when creating a smart wallet, available as an advanced option in relevant wallet creation interfaces.
  • Bug Fixes

    • None.
  • Other Updates

    • Updated underlying binary libraries for all supported platforms to newer versions.

Introduces an EntryPoint parameter to the smart wallet creation flow across C++, Blueprint, and K2Node interfaces. Updates the Thirdweb native bindings, async task, handle, and node logic to support specifying an entry point contract when creating a smart wallet.

Closes BLD-12
Copy link

linear bot commented Jul 28, 2025

Copy link

coderabbitai bot commented Jul 28, 2025

Walkthrough

This change adds support for an "EntryPoint" parameter in the creation of smart wallets across the Unreal Engine integration, affecting C++, Blueprint node, and FFI boundaries. It updates function signatures, class members, and binary artifacts for all supported platforms to include and handle the new EntryPoint parameter.

Changes

Cohort / File(s) Change Summary
Android Binary Update
Source/ThirdParty/Android/libthirdweb.a
Updated Git LFS pointer metadata for the Android thirdweb binary; new SHA-256 and file size.
iOS Binary Updates
Source/ThirdParty/IOS/libthirdweb.a, Source/ThirdParty/IOS/libthirdweb.sim.a
Updated Git LFS pointer metadata for iOS thirdweb binaries; new SHA-256 and file size.
Linux Binary Update
Source/ThirdParty/Linux/libthirdweb.a
Updated Git LFS pointer metadata for the Linux thirdweb binary; new SHA-256 and file size.
LinuxArm64 Binary Update
Source/ThirdParty/LinuxArm64/libthirdweb.a
Updated Git LFS pointer metadata for the LinuxArm64 thirdweb binary; new SHA-256 and file size.
Mac Binary Update
Source/ThirdParty/Mac/libthirdweb.a
Updated Git LFS pointer metadata for the Mac thirdweb binary; new SHA-256 and file size.
Win64 Binary Update
Source/ThirdParty/Win64/libthirdweb.lib
Updated Git LFS pointer metadata for the Win64 thirdweb binary; new SHA-256 and file size.
Smart Wallet Async Task
Source/Thirdweb/Private/AsyncTasks/Wallets/InApp/Create/AsyncTaskThirdwebCreateSmartWallet.cpp, Source/Thirdweb/Public/AsyncTasks/Wallets/InApp/Create/AsyncTaskThirdwebCreateSmartWallet.h
Added EntryPoint parameter to async task, static method, and class member for smart wallet creation.
Smart Wallet Handle
Source/Thirdweb/Private/Wallets/ThirdwebSmartWalletHandle.cpp, Source/Thirdweb/Public/Wallets/ThirdwebSmartWalletHandle.h
Added EntryPoint parameter to FSmartWalletHandle::Create method signature and usage.
FFI Header Update
Source/Thirdweb/Public/Thirdweb.h
Added entry_point parameter to Thirdweb::create_smart_wallet function signature.
Blueprint Node Pin Update
Source/ThirdwebUncookedOnly/Private/K2Node/K2Node_ThirdwebCreateWallet.cpp, Source/ThirdwebUncookedOnly/Public/K2Node/K2Node_ThirdwebCreateWallet.h
Added EntryPoint input pin and accessor to the Blueprint node for smart wallet creation.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant BlueprintNode
    participant AsyncTask
    participant SmartWalletHandle
    participant FFI (Thirdweb)
    User->>BlueprintNode: Initiate smart wallet creation (with EntryPoint)
    BlueprintNode->>AsyncTask: CreateSmartWallet(EntryPoint)
    AsyncTask->>SmartWalletHandle: Create(..., EntryPoint, ...)
    SmartWalletHandle->>FFI (Thirdweb): create_smart_wallet(..., entry_point)
    FFI (Thirdweb)-->>SmartWalletHandle: Result
    SmartWalletHandle-->>AsyncTask: Success/Failure callback
    AsyncTask-->>BlueprintNode: Notify result
    BlueprintNode-->>User: Return result
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Assessment against linked issues

Objective Addressed Explanation
Add EntryPoint parameter support for smart wallet creation (BLD-12)
Update FFI, C++ API, and Blueprint nodes for v7 aa integration (BLD-12)

Assessment against linked issues: Out-of-scope changes

No out-of-scope changes found.

Note

⚡️ Unit Test Generation is now available in beta!

Learn more here, or try it out under "Finishing Touches" below.


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d9c68c5 and 9805257.

📒 Files selected for processing (14)
  • Source/ThirdParty/Android/libthirdweb.a (1 hunks)
  • Source/ThirdParty/IOS/libthirdweb.a (1 hunks)
  • Source/ThirdParty/IOS/libthirdweb.sim.a (1 hunks)
  • Source/ThirdParty/Linux/libthirdweb.a (1 hunks)
  • Source/ThirdParty/LinuxArm64/libthirdweb.a (1 hunks)
  • Source/ThirdParty/Mac/libthirdweb.a (1 hunks)
  • Source/ThirdParty/Win64/libthirdweb.lib (1 hunks)
  • Source/Thirdweb/Private/AsyncTasks/Wallets/InApp/Create/AsyncTaskThirdwebCreateSmartWallet.cpp (1 hunks)
  • Source/Thirdweb/Private/Wallets/ThirdwebSmartWalletHandle.cpp (3 hunks)
  • Source/Thirdweb/Public/AsyncTasks/Wallets/InApp/Create/AsyncTaskThirdwebCreateSmartWallet.h (2 hunks)
  • Source/Thirdweb/Public/Thirdweb.h (1 hunks)
  • Source/Thirdweb/Public/Wallets/ThirdwebSmartWalletHandle.h (1 hunks)
  • Source/ThirdwebUncookedOnly/Private/K2Node/K2Node_ThirdwebCreateWallet.cpp (4 hunks)
  • Source/ThirdwebUncookedOnly/Public/K2Node/K2Node_ThirdwebCreateWallet.h (2 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (2)
Source/Thirdweb/Public/Wallets/ThirdwebSmartWalletHandle.h (1)
Source/Thirdweb/Private/Wallets/ThirdwebSmartWalletHandle.cpp (2)
  • Create (38-84)
  • Create (38-45)
Source/ThirdwebUncookedOnly/Public/K2Node/K2Node_ThirdwebCreateWallet.h (1)
Source/ThirdwebUncookedOnly/Private/K2Node/K2Node_ThirdwebCreateWallet.cpp (2)
  • GetEntryPointPin (295-300)
  • GetEntryPointPin (295-295)
🔇 Additional comments (22)
Source/ThirdParty/Android/libthirdweb.a (1)

2-3: Binary blob updated – please confirm provenance & build consistency

Only the LFS pointer has changed (OID + size). Because the actual .a archive is not reviewable, please double-check that:
• the binary was built from the exact commit of the newly-tagged thirdweb SDK that adds EntryPoint support,
• the build flags (e.g., -fvisibility=hidden, -Oz, no debug symbols) are unchanged, and
• licensing / attribution requirements for the updated binary are still satisfied.

If all checks out, no further action is required here.

Source/ThirdParty/IOS/libthirdweb.sim.a (1)

2-3: Updated iOS simulator archive – verify alignment with device build

The pointer now references a new hash / size. Make sure this simulator binary and the device libthirdweb.a come from the same tag and were produced with matching Swift / Clang versions to avoid ABI drift at runtime.

Source/ThirdParty/IOS/libthirdweb.a (1)

2-3: New iOS device binary – confirm codesign & symbol-strip steps

As with the simulator artefact, confirm the updated library is stripped of symbols, codesigned if required by your CI, and that the version bump is reflected in any downstream package-version metadata.

Source/ThirdParty/LinuxArm64/libthirdweb.a (1)

2-3: Linux ARM64 static archive refreshed – reproduce build for traceability

Given the sizeable delta (~92 MB), keep a reproducible build log (Dockerfile or script) so future audits can recreate the exact hash.

Source/ThirdParty/Win64/libthirdweb.lib (1)

2-3: Windows import library updated – ensure debug/rel configs match

Confirm that libthirdweb.lib corresponds to the Release build and that the accompanying .pdb (if any) is handled per project policy to avoid shipping debug symbols.

Source/ThirdParty/Linux/libthirdweb.a (1)

2-3: Binary library update to support new EntryPoint parameter.

The Git LFS pointer metadata update reflects the necessary native library changes to support the new EntryPoint parameter in smart wallet creation. This aligns with the PR objectives for v7 Account Abstraction support.

Source/Thirdweb/Private/AsyncTasks/Wallets/InApp/Create/AsyncTaskThirdwebCreateSmartWallet.cpp (1)

17-17: EntryPoint parameter correctly forwarded to smart wallet creation.

The EntryPoint parameter is properly passed to FSmartWalletHandle::Create in the correct position within the function signature. This maintains consistency with the updated API.

Source/ThirdParty/Mac/libthirdweb.a (1)

2-3: Cross-platform binary library update for EntryPoint support.

The Mac binary library has been updated in coordination with other platforms to provide native support for the new EntryPoint parameter in smart wallet creation.

Source/ThirdwebUncookedOnly/Public/K2Node/K2Node_ThirdwebCreateWallet.h (2)

19-19: EntryPoint pin constant properly added.

The new TwPins::EntryPoint constant follows the established naming pattern for smart wallet pins and is correctly positioned within the smart wallet pins section.


62-62: EntryPoint pin getter method properly declared.

The GetEntryPointPin() method declaration follows the established pattern for other smart wallet pin getters, maintaining consistency in the interface design.

Source/ThirdwebUncookedOnly/Private/K2Node/K2Node_ThirdwebCreateWallet.cpp (4)

32-32: EntryPoint constant properly defined.

The constant definition matches the header declaration and follows the established naming convention for pin identifiers.


148-148: EntryPoint pin correctly created as advanced input.

The pin is properly created as a string input pin with advanced view setting, consistent with other optional smart wallet parameters like Factory and AccountOverride.


247-247: EntryPoint pin visibility properly controlled.

The pin visibility is correctly tied to the Smart wallet type, ensuring it only appears when relevant to the user's workflow.


295-300: EntryPoint pin getter method properly implemented.

The implementation follows the established pattern with proper null checking and direction validation. The method correctly finds and returns the EntryPoint pin while ensuring it's an input pin.

Source/Thirdweb/Public/Wallets/ThirdwebSmartWalletHandle.h (1)

55-59: LGTM! Clean parameter addition with appropriate documentation.

The EntryPoint parameter addition is well-integrated into the existing API. The documentation clearly identifies it as an entry point contract parameter, and the placement after AccountOverride is logical.

Source/Thirdweb/Public/AsyncTasks/Wallets/InApp/Create/AsyncTaskThirdwebCreateSmartWallet.h (3)

19-21: LGTM! Proper Blueprint integration with advanced display.

The EntryPoint parameter is correctly added to the AdvancedDisplay metadata, which will keep the Blueprint interface clean while providing access to the new functionality when needed.


27-37: LGTM! Consistent parameter handling with backward compatibility.

The EntryPoint parameter follows the established pattern with:

  • Default empty string value for backward compatibility
  • Proper assignment to the transient member variable
  • Consistent placement with other optional parameters

64-65: LGTM! Proper transient property declaration.

The EntryPoint member variable is correctly declared as a transient UPROPERTY, consistent with other parameters in the class.

Source/Thirdweb/Public/Thirdweb.h (1)

76-84: LGTM! FFI function signature correctly updated.

The create_smart_wallet function signature has been properly extended with the entry_point parameter. The parameter is correctly placed at the end and uses the appropriate const char* type for FFI string parameters.

Source/Thirdweb/Private/Wallets/ThirdwebSmartWalletHandle.cpp (3)

38-45: LGTM! Method signature correctly updated.

The Create method signature has been properly updated to include the EntryPoint parameter, matching the header declaration and maintaining consistency with the existing parameter pattern.


58-58: LGTM! Proper lambda capture of new parameter.

The EntryPoint parameter is correctly added to the lambda capture list, ensuring it's available within the asynchronous task execution.


68-70: LGTM! Correct FFI call with EntryPoint parameter.

The EntryPoint parameter is properly converted using TO_RUST_STRING and passed to the create_smart_wallet FFI function in the correct position, completing the integration of the new parameter.

✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch firekeeper/v2.2.0

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@0xFirekeeper 0xFirekeeper merged commit 1b50717 into main Jul 28, 2025
3 checks passed
@0xFirekeeper 0xFirekeeper deleted the firekeeper/v2.2.0 branch July 28, 2025 16:11
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.

1 participant