feat(wallet-extensions): add Noir Wallet connector for Zcash#111
Open
harry1115 wants to merge 1 commit into
Open
feat(wallet-extensions): add Noir Wallet connector for Zcash#111harry1115 wants to merge 1 commit into
harry1115 wants to merge 1 commit into
Conversation
Adds a NOIR_WALLET connector backed by the Noir Wallet browser extension (window.noirwallet). The connector registers Chain.Zcash with the UTXO toolbox, overriding getBalance/transfer/signMessage to delegate to the extension, which spends from the shielded pool and builds/signs transactions internally. Memo'd transfers throw wallet_noir_wallet_memo_not_supported since the extension cannot attach OP_RETURN data to transparent recipients, so OP_RETURN-based routes (Maya) are rejected explicitly while deposit-address routes (NEAR Intents) are fully supported. Requires @swapkit/helpers with WalletOption.NOIR_WALLET and the wallet_noir_wallet_* error codes (companion change in the SwapKit monorepo).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
NOIR_WALLETconnector backed by the Noir Wallet browserextension (
window.noirwallet), following the same injected-providerpattern as the Vultisig and Petra connectors.
Chain.Zcashon the UTXO toolbox, overridinggetBalance,transfer, andsignMessageto delegate to the extension, which spendsfrom the shielded pool and builds/signs transactions internally.
wallet_noir_wallet_memo_not_supported: theextension cannot attach OP_RETURN data to transparent recipients, so
OP_RETURN-based routes (Maya) are rejected explicitly with a clear error
instead of failing silently on-chain. Deposit-address routes (NEAR
Intents) are fully supported and verified with a live mainnet swap.
window.noirwalletdirectly.wallet-extensionssubpath +loadWallet/SKWallets/SKWalletsSupportedChainsonly.Dependency note
This PR requires
@swapkit/helperswithWalletOption.NOIR_WALLETand thewallet_noir_wallet_*error codes (22201-22203) — companion changesubmitted to the SwapKit monorepo. CI will stay red until that helpers
release is published; all checks pass locally against a patched helpers
build simulating the release.
Notes for reviewers
zcash_getBalance().available, not the transparent address' on-chainUTXO set, so the displayed balance intentionally won't match a block
explorer lookup of the transparent address.
shield inside the wallet before it becomes spendable — by design for a
shielded-first wallet.
Test plan
bun run build:ci— full build +.d.tsgenerationtype-checks andbun biome check— cleanbun test packages/wallet-extensions/src/noir-wallet/__tests__/noir-wallet.test.ts— 7/7 passing@swapkit/helpersrelease containingWalletOption.NOIR_WALLETis published