Repository navigation
🎉 Publish Wallets Release - #214
Merged
Merged
Conversation
github-actions
Bot
force-pushed
the
changeset-release/develop
branch
6 times, most recently
from
November 3, 2026 16:51
a04b51b to
565d1bd
Compare
github-actions
Bot
force-pushed
the
changeset-release/develop
branch
from
November 3, 2026 17:07
565d1bd to
674547d
Compare
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.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to develop, this PR will be updated.
Releases
@swapkit/wallet-extensions@4.9.0
Minor Changes
#210
4e3f9f7Thanks @hippocampusSK! - OneKey now connects Stellar, TON, TRON and NEAR on mainnet, alongside its EVM chains. Bitcoin and Solana connections work again: they were looking for wallet providers the OneKey extension never exposes, so connecting either chain always failed. A TRON or Stellar signature from OneKey is rejected if it covers a different transaction than the one requested.Connecting OneKey now asks for one network at a time. If the user cancels an approval, no further approval windows open; networks approved before the cancel stay connected. A network OneKey refuses to connect for a reason other than a cancel, such as Bitcoin with multiple addresses enabled or a TON Connect manifest for another domain, is skipped and the rest still connect.
Patch Changes
#215
5904076Thanks @hippocampusSK! - Ledger keeps signing Zcash through the NU7 network upgrade (mainnet block 3,543,405, around 5 November 2026). The Ledger Zcash signer kit moves to 0.9.0, the first release whose mainnet table carries the NU7 consensus branch id0x77190ad9, and the client now maps a transaction built under NU7 to that activation height. Each previous transaction is framed with the same height, so a v4 input is hashed under the branch the transaction is signed for rather than the kit's default. Before NU7 nothing changes: transactions built under Ironwood still sign under Ironwood. The device must run the Zcash app release that accepts the NU7 branch id, installed from Ledger Live. The Device Management Kit moves to 1.11.0, with the Ethereum signer kit and context module on the matching releases, and@swapkit/utxo-signerto 3.2.0 across the wallet packages.#215
5904076Thanks @hippocampusSK! - Update SwapKit SDK dependencies:d03591dThanks @towanTG! - Zcash transactions keep working through the NU7 network upgrade (mainnet block 3,543,405, around 5 November 2026), which rejects version 4 transactions. From the activation block on, the Zcash toolbox builds version 5 transactions with the NU7 consensus branch id0x77190ad9; before it, nothing changes. If the block height can't be fetched, building a Zcash transaction now fails withtoolbox_utxo_api_errorinstead of guessing the format, because a guess on the wrong side of an upgrade produces a transaction the network rejects.@swapkit/utxo-signercan now build, sign, parse and compute the txid of transparent version 5 transactions, including version 5 PSBTs and PCZTs, and exportsgetZcashTransactionFormatandZCASH_NU7_ACTIVATION_HEIGHT. Parsing a raw Zcash transaction now keeps input txids in the right byte order, so re-serializing it no longer changes them.c380f81Thanks @0xepicode! - The UTXO toolbox's Blockchair host is now configurable viaSKConfig.set({ blockchairApiUrl }). When set, every Blockchair read and broadcast routes through that host (the/{chain-slug}path is still appended), letting a consumer proxy the calls and keep the API key server-side instead of shipping it to the browser. Unset, it defaults tohttps://api.blockchair.comas before. (via @swapkit/helpers@6.4.2)f960277Thanks @ice-chillios! - Solana token transfers now use the token program that owns the mint. Before, every transfer was built for the original SPL Token program, so transfers of Token-2022 tokens such as PYUSD failed with "incorrect program id". A mint that does not exist, or that neither program owns, now throwstoolbox_solana_unsupported_token_programfromcreateTransaction,transferandestimateTransactionFee.getBalanceFromRPCalso lists Token-2022 balances, andcheckPayerBalancesizes a new Token-2022 token account like the payer's own. (via @swapkit/helpers@6.4.2)2957c2fThanks @ice-chillios! - THORChain and Maya tokens whose denom contains more than one "/", such as staked RUJI (x/staking-x/ruji), now keep their full name. Their balances show under the right asset, and sending or depositing them uses the full denom instead of a cut-off one that the chain rejects. THORChain and Maya asset identifiers with an empty part, such asTHOR.ETH//ETH, are now rejected withhelpers_invalid_asset_identifierinstead of being cut short. (via @swapkit/helpers@6.4.2)c03235bThanks @github-actions! - Update generated token lists. (via @swapkit/helpers@6.4.2)b09262aThanks @hippocampusSK! - Zcash transfers to ZIP-320 TEX addresses (tex1…), the format THORChain publishes its ZEC vault in, are now built instead of being rejected as invalid. TEX addresses are reported as their owntexaddress type, THORChain and Maya swaps accept them as the ZEC destination, andtoTransparentZcashAddressconverts one to thet1address it pays on chain. (via @swapkit/toolboxes@6.6.0)efc495dThanks @hippocampusSK! - Selling from HyperCore now works through NEAR Intents as well as Flashnet, and each swap sends the funds to the account that provider credits. (via @swapkit/toolboxes@6.6.0)b717e30Thanks @0xepicode! - Transparent Zcash swaps now broadcast the extracted network transaction instead of the PCZT envelope. The toolbox signer discriminated the transaction it received withinstanceof ZcashPSBT/instanceof PCZT, but the swap plugin builds that transaction through a dynamic import of@swapkit/utxo-signer, which a bundler can resolve to a different module instance than the toolbox's static import. Theinstanceofcheck then missed, the signer fell through to its generic branch, and the still-wrapped PSBT was broadcast as its PCZT envelope — which the network rejects. The signer now discriminates by shape — a PCZT and a ZcashPSBT both exposeextract, a raw transaction does not — which is independent of class identity. (via @swapkit/toolboxes@6.6.0)d3e65c6Thanks @hippocampusSK! - The limit order parameter types used by the SwapKit plugin are now exported, so projects that re-export the plugins can build their type declarations again. (via @swapkit/plugins@5.2.1)0ea5efbThanks @hippocampusSK! - The Tron toolbox now reportstoolbox_tron_insufficient_balanceinstead oftoolbox_tron_transaction_creation_failedwhen the node rejects a TRX or TRC-20 transfer because the wallet cannot cover it, including the extra fee for sending to an account that is not activated yet. The node's reason is kept in the error info, andtransferno longer wraps this error intoolbox_tron_token_transfer_failed. (via @swapkit/plugins@5.2.1)9190931Thanks @hippocampusSK! - Add limit orders. ASwapKitinstance with theswapkitplugin exposesswapKit.limitOrder:tokens,quote,build,sign,submit,execute,list,get,allowedProvidersandcanSign, pluscancel.build,cancel.sign,cancel.submitandcancel.execute.execute({ build })signs a built order with the connected wallet and submits it in one step;cancel.execute(orderId)does the same for a cancellation.6ddbd12Thanks @ice-chillios! -getTokenAddressandgetChecksumAddressFromAssetnow useisGasAsset, soMONAD.MON,XLAYER.OKBandGNO.xDAIresolve to the native asset address instead of returningnullor throwing. Identifiers that repeat the chain name on a chain whose gas asset has another ticker, such asARB.ARBorBSC.BSC, no longer resolve to the native asset address.ContractAddress[Chain.Optimism]is now the zero address, like every EVM chain except Polygon, soOP.ETHresolves to the zero address instead of the OP token contract (0x4200000000000000000000000000000000000042).OP.OPwithout an address still resolves to the OP token contract. The Botanix toolbox now targets the Botanix network instead of Sonic. (via @swapkit/helpers@6.4.0)f107064Thanks @ice-chillios! - The TON toolbox spaces out and retries its requests to the public Toncenter endpoint, which allows about one request per second without an API key, so TON jetton sales such as TON.USDT are much less likely to fail there. Requests to the chain's default endpoints start at least 1.1 seconds apart, through a queue shared by every toolbox in the process. Waits therefore grow with concurrent TON activity; for servers and other high-volume use, configure a custom TON RPC or a Toncenter API key, which is not spaced out. The endpoint health check is not queued. A request rejected with 429 or a gateway error (502 and above) is sent again after 1, 2 and 4 seconds. A node's 500 answer, such as a rejected message, a timeout and a network failure fail at once. A jetton lookup that the RPC does not answer is reported ashelpers_chain_rpc_connection_failedinstead ofcore_swap_contract_not_found. A toolbox looks up each jetton wallet address only once per jetton and owner. (via @swapkit/helpers@6.4.0)c20cc10Thanks @github-actions! - Update generated token lists. (via @swapkit/helpers@6.4.0)8062907Thanks @ice-chillios! - The TON toolbox no longer falls back to Orbs TON Access when every configured TON RPC fails. That service no longer returns any nodes, so the fallback itself failed with an unclear error. Now the toolbox throwshelpers_chain_rpc_connection_failed, and jetton transfers and sweeps report that error instead ofcore_swap_contract_not_found. Set a working endpoint withSKConfig.setRpcUrl(Chain.Ton, [...])or passproviderto the toolbox. The@orbs-network/ton-accessdependency is removed. (via @swapkit/toolboxes@6.5.0)@swapkit/wallet-hardware@6.3.0
Minor Changes
#215
5904076Thanks @hippocampusSK! - Ledger keeps signing Zcash through the NU7 network upgrade (mainnet block 3,543,405, around 5 November 2026). The Ledger Zcash signer kit moves to 0.9.0, the first release whose mainnet table carries the NU7 consensus branch id0x77190ad9, and the client now maps a transaction built under NU7 to that activation height. Each previous transaction is framed with the same height, so a v4 input is hashed under the branch the transaction is signed for rather than the kit's default. Before NU7 nothing changes: transactions built under Ironwood still sign under Ironwood. The device must run the Zcash app release that accepts the NU7 branch id, installed from Ledger Live. The Device Management Kit moves to 1.11.0, with the Ethereum signer kit and context module on the matching releases, and@swapkit/utxo-signerto 3.2.0 across the wallet packages.#182
190babcThanks @hippocampusSK! - Add HyperCore (Hyperliquid) support to the Trezor wallet for USDC transfers and swaps.Patch Changes
#208
6e087caThanks @mfaizan1! - Sign Zcash sends and swaps on Ledger again. The connector told the device that change returns to the account's receive address, and the Zcash app only accepts a change path on the internal chain (…/1/x), so every transaction was refused with status6986before the review screen. Change on a receive address is now left for the device to show as a regular output, which you approve along with the payment.#215
5904076Thanks @hippocampusSK! - Update SwapKit SDK dependencies:d03591dThanks @towanTG! - Zcash transactions keep working through the NU7 network upgrade (mainnet block 3,543,405, around 5 November 2026), which rejects version 4 transactions. From the activation block on, the Zcash toolbox builds version 5 transactions with the NU7 consensus branch id0x77190ad9; before it, nothing changes. If the block height can't be fetched, building a Zcash transaction now fails withtoolbox_utxo_api_errorinstead of guessing the format, because a guess on the wrong side of an upgrade produces a transaction the network rejects.@swapkit/utxo-signercan now build, sign, parse and compute the txid of transparent version 5 transactions, including version 5 PSBTs and PCZTs, and exportsgetZcashTransactionFormatandZCASH_NU7_ACTIVATION_HEIGHT. Parsing a raw Zcash transaction now keeps input txids in the right byte order, so re-serializing it no longer changes them.c380f81Thanks @0xepicode! - The UTXO toolbox's Blockchair host is now configurable viaSKConfig.set({ blockchairApiUrl }). When set, every Blockchair read and broadcast routes through that host (the/{chain-slug}path is still appended), letting a consumer proxy the calls and keep the API key server-side instead of shipping it to the browser. Unset, it defaults tohttps://api.blockchair.comas before. (via @swapkit/helpers@6.4.2)f960277Thanks @ice-chillios! - Solana token transfers now use the token program that owns the mint. Before, every transfer was built for the original SPL Token program, so transfers of Token-2022 tokens such as PYUSD failed with "incorrect program id". A mint that does not exist, or that neither program owns, now throwstoolbox_solana_unsupported_token_programfromcreateTransaction,transferandestimateTransactionFee.getBalanceFromRPCalso lists Token-2022 balances, andcheckPayerBalancesizes a new Token-2022 token account like the payer's own. (via @swapkit/helpers@6.4.2)2957c2fThanks @ice-chillios! - THORChain and Maya tokens whose denom contains more than one "/", such as staked RUJI (x/staking-x/ruji), now keep their full name. Their balances show under the right asset, and sending or depositing them uses the full denom instead of a cut-off one that the chain rejects. THORChain and Maya asset identifiers with an empty part, such asTHOR.ETH//ETH, are now rejected withhelpers_invalid_asset_identifierinstead of being cut short. (via @swapkit/helpers@6.4.2)c03235bThanks @github-actions! - Update generated token lists. (via @swapkit/helpers@6.4.2)b09262aThanks @hippocampusSK! - Zcash transfers to ZIP-320 TEX addresses (tex1…), the format THORChain publishes its ZEC vault in, are now built instead of being rejected as invalid. TEX addresses are reported as their owntexaddress type, THORChain and Maya swaps accept them as the ZEC destination, andtoTransparentZcashAddressconverts one to thet1address it pays on chain. (via @swapkit/toolboxes@6.6.0)efc495dThanks @hippocampusSK! - Selling from HyperCore now works through NEAR Intents as well as Flashnet, and each swap sends the funds to the account that provider credits. (via @swapkit/toolboxes@6.6.0)b717e30Thanks @0xepicode! - Transparent Zcash swaps now broadcast the extracted network transaction instead of the PCZT envelope. The toolbox signer discriminated the transaction it received withinstanceof ZcashPSBT/instanceof PCZT, but the swap plugin builds that transaction through a dynamic import of@swapkit/utxo-signer, which a bundler can resolve to a different module instance than the toolbox's static import. Theinstanceofcheck then missed, the signer fell through to its generic branch, and the still-wrapped PSBT was broadcast as its PCZT envelope — which the network rejects. The signer now discriminates by shape — a PCZT and a ZcashPSBT both exposeextract, a raw transaction does not — which is independent of class identity. (via @swapkit/toolboxes@6.6.0)d3e65c6Thanks @hippocampusSK! - The limit order parameter types used by the SwapKit plugin are now exported, so projects that re-export the plugins can build their type declarations again. (via @swapkit/plugins@5.2.1)0ea5efbThanks @hippocampusSK! - The Tron toolbox now reportstoolbox_tron_insufficient_balanceinstead oftoolbox_tron_transaction_creation_failedwhen the node rejects a TRX or TRC-20 transfer because the wallet cannot cover it, including the extra fee for sending to an account that is not activated yet. The node's reason is kept in the error info, andtransferno longer wraps this error intoolbox_tron_token_transfer_failed. (via @swapkit/plugins@5.2.1)9190931Thanks @hippocampusSK! - Add limit orders. ASwapKitinstance with theswapkitplugin exposesswapKit.limitOrder:tokens,quote,build,sign,submit,execute,list,get,allowedProvidersandcanSign, pluscancel.build,cancel.sign,cancel.submitandcancel.execute.execute({ build })signs a built order with the connected wallet and submits it in one step;cancel.execute(orderId)does the same for a cancellation.6ddbd12Thanks @ice-chillios! -getTokenAddressandgetChecksumAddressFromAssetnow useisGasAsset, soMONAD.MON,XLAYER.OKBandGNO.xDAIresolve to the native asset address instead of returningnullor throwing. Identifiers that repeat the chain name on a chain whose gas asset has another ticker, such asARB.ARBorBSC.BSC, no longer resolve to the native asset address.ContractAddress[Chain.Optimism]is now the zero address, like every EVM chain except Polygon, soOP.ETHresolves to the zero address instead of the OP token contract (0x4200000000000000000000000000000000000042).OP.OPwithout an address still resolves to the OP token contract. The Botanix toolbox now targets the Botanix network instead of Sonic. (via @swapkit/helpers@6.4.0)f107064Thanks @ice-chillios! - The TON toolbox spaces out and retries its requests to the public Toncenter endpoint, which allows about one request per second without an API key, so TON jetton sales such as TON.USDT are much less likely to fail there. Requests to the chain's default endpoints start at least 1.1 seconds apart, through a queue shared by every toolbox in the process. Waits therefore grow with concurrent TON activity; for servers and other high-volume use, configure a custom TON RPC or a Toncenter API key, which is not spaced out. The endpoint health check is not queued. A request rejected with 429 or a gateway error (502 and above) is sent again after 1, 2 and 4 seconds. A node's 500 answer, such as a rejected message, a timeout and a network failure fail at once. A jetton lookup that the RPC does not answer is reported ashelpers_chain_rpc_connection_failedinstead ofcore_swap_contract_not_found. A toolbox looks up each jetton wallet address only once per jetton and owner. (via @swapkit/helpers@6.4.0)c20cc10Thanks @github-actions! - Update generated token lists. (via @swapkit/helpers@6.4.0)8062907Thanks @ice-chillios! - The TON toolbox no longer falls back to Orbs TON Access when every configured TON RPC fails. That service no longer returns any nodes, so the fallback itself failed with an unclear error. Now the toolbox throwshelpers_chain_rpc_connection_failed, and jetton transfers and sweeps report that error instead ofcore_swap_contract_not_found. Set a working endpoint withSKConfig.setRpcUrl(Chain.Ton, [...])or passproviderto the toolbox. The@orbs-network/ton-accessdependency is removed. (via @swapkit/toolboxes@6.5.0)#216
894f4bdThanks @hippocampusSK! - Trezor signs transparent Zcash as version 5 transactions, carrying the branch id, expiry and lock time of the transaction it was handed instead of a fixed version 4 header. Signing as v4 made Trezor Connect fetch and parse every previous transaction, and it cannot read the v6 transactions in use since Ironwood, so spending ZEC received that way failed with "Transaction has unexpected data"; v5 commits to the input amounts directly and needs no previous transactions. It also keeps Trezor working through the NU7 network upgrade (mainnet block 3,543,405, around 5 November 2026), which rejects version 4 transactions: the SDK resolves the branch id and version from the block height, and the signer now passes them through.signPCZTreturns a v5 PCZT carrying the header Trezor signed, so the transaction extracted from it matches the signatures. A transaction handed over as raw bytes carries no input amounts, so the signer now looks them up by outpoint before signing and refuses when one cannot be resolved, instead of asking the device to sign zero-value inputs.@swapkit/wallets@6.2.0
Minor Changes
542e1f8Thanks @hippocampusSK! - The keystore wallet now declares that it can sign Bitcoin messages (signingSupport[Chain.Bitcoin].btcMessage, carried on the connected Bitcoin wallet assigning.btcMessage), so flows that need one, like cancelling a Harbor Bitcoin limit order, can use it. A keystore using a Bitcoin address type that Bitcoin message signatures cannot express, such as Taproot, does not declare it.5904076Thanks @hippocampusSK! - Ledger keeps signing Zcash through the NU7 network upgrade (mainnet block 3,543,405, around 5 November 2026). The Ledger Zcash signer kit moves to 0.9.0, the first release whose mainnet table carries the NU7 consensus branch id0x77190ad9, and the client now maps a transaction built under NU7 to that activation height. Each previous transaction is framed with the same height, so a v4 input is hashed under the branch the transaction is signed for rather than the kit's default. Before NU7 nothing changes: transactions built under Ironwood still sign under Ironwood. The device must run the Zcash app release that accepts the NU7 branch id, installed from Ledger Live. The Device Management Kit moves to 1.11.0, with the Ethereum signer kit and context module on the matching releases, and@swapkit/utxo-signerto 3.2.0 across the wallet packages.5904076Thanks @hippocampusSK! - Update SwapKit SDK dependencies:190babcThanks @hippocampusSK! - Add HyperCore (Hyperliquid) support to the Trezor wallet for USDC transfers and swaps. (via @swapkit/wallet-hardware@6.3.0)6e087caThanks @mfaizan1! - Sign Zcash sends and swaps on Ledger again. The connector told the device that change returns to the account's receive address, and the Zcash app only accepts a change path on the internal chain (…/1/x), so every transaction was refused with status6986before the review screen. Change on a receive address is now left for the device to show as a regular output, which you approve along with the payment. (via @swapkit/wallet-hardware@6.3.0)894f4bdThanks @hippocampusSK! - Trezor signs transparent Zcash as version 5 transactions, carrying the branch id, expiry and lock time of the transaction it was handed instead of a fixed version 4 header. Signing as v4 made Trezor Connect fetch and parse every previous transaction, and it cannot read the v6 transactions in use since Ironwood, so spending ZEC received that way failed with "Transaction has unexpected data"; v5 commits to the input amounts directly and needs no previous transactions. It also keeps Trezor working through the NU7 network upgrade (mainnet block 3,543,405, around 5 November 2026), which rejects version 4 transactions: the SDK resolves the branch id and version from the block height, and the signer now passes them through.signPCZTreturns a v5 PCZT carrying the header Trezor signed, so the transaction extracted from it matches the signatures. A transaction handed over as raw bytes carries no input amounts, so the signer now looks them up by outpoint before signing and refuses when one cannot be resolved, instead of asking the device to sign zero-value inputs. (via @swapkit/wallet-hardware@6.3.0)4e3f9f7Thanks @hippocampusSK! - OneKey now connects Stellar, TON, TRON and NEAR on mainnet, alongside its EVM chains. Bitcoin and Solana connections work again: they were looking for wallet providers the OneKey extension never exposes, so connecting either chain always failed. A TRON or Stellar signature from OneKey is rejected if it covers a different transaction than the one requested. (via @swapkit/wallet-extensions@4.9.0)@swapkit/sdk@5.1.5
Patch Changes
14dfb3fThanks @github-actions! - Update SwapKit SDK dependencies:542e1f8Thanks @hippocampusSK! - The keystore wallet now declares that it can sign Bitcoin messages (signingSupport[Chain.Bitcoin].btcMessage, carried on the connected Bitcoin wallet assigning.btcMessage), so flows that need one, like cancelling a Harbor Bitcoin limit order, can use it. A keystore using a Bitcoin address type that Bitcoin message signatures cannot express, such as Taproot, does not declare it. (via @swapkit/wallets@6.2.0)5904076Thanks @hippocampusSK! - Ledger keeps signing Zcash through the NU7 network upgrade (mainnet block 3,543,405, around 5 November 2026). The Ledger Zcash signer kit moves to 0.9.0, the first release whose mainnet table carries the NU7 consensus branch id0x77190ad9, and the client now maps a transaction built under NU7 to that activation height. Each previous transaction is framed with the same height, so a v4 input is hashed under the branch the transaction is signed for rather than the kit's default. Before NU7 nothing changes: transactions built under Ironwood still sign under Ironwood. The device must run the Zcash app release that accepts the NU7 branch id, installed from Ledger Live. The Device Management Kit moves to 1.11.0, with the Ethereum signer kit and context module on the matching releases, and@swapkit/utxo-signerto 3.2.0 across the wallet packages. (via @swapkit/wallets@6.2.0)5904076Thanks @hippocampusSK! - Update SwapKit SDK dependencies: (via @swapkit/wallets@6.2.0)190babcThanks @hippocampusSK! - Add HyperCore (Hyperliquid) support to the Trezor wallet for USDC transfers and swaps. (via @swapkit/wallets@6.2.0)6e087caThanks @mfaizan1! - Sign Zcash sends and swaps on Ledger again. The connector told the device that change returns to the account's receive address, and the Zcash app only accepts a change path on the internal chain (…/1/x), so every transaction was refused with status6986before the review screen. Change on a receive address is now left for the device to show as a regular output, which you approve along with the payment. (via @swapkit/wallets@6.2.0)894f4bdThanks @hippocampusSK! - Trezor signs transparent Zcash as version 5 transactions, carrying the branch id, expiry and lock time of the transaction it was handed instead of a fixed version 4 header. Signing as v4 made Trezor Connect fetch and parse every previous transaction, and it cannot read the v6 transactions in use since Ironwood, so spending ZEC received that way failed with "Transaction has unexpected data"; v5 commits to the input amounts directly and needs no previous transactions. It also keeps Trezor working through the NU7 network upgrade (mainnet block 3,543,405, around 5 November 2026), which rejects version 4 transactions: the SDK resolves the branch id and version from the block height, and the signer now passes them through.signPCZTreturns a v5 PCZT carrying the header Trezor signed, so the transaction extracted from it matches the signatures. A transaction handed over as raw bytes carries no input amounts, so the signer now looks them up by outpoint before signing and refuses when one cannot be resolved, instead of asking the device to sign zero-value inputs. (via @swapkit/wallets@6.2.0)4e3f9f7Thanks @hippocampusSK! - OneKey now connects Stellar, TON, TRON and NEAR on mainnet, alongside its EVM chains. Bitcoin and Solana connections work again: they were looking for wallet providers the OneKey extension never exposes, so connecting either chain always failed. A TRON or Stellar signature from OneKey is rejected if it covers a different transaction than the one requested. (via @swapkit/wallets@6.2.0)@swapkit/wallet-mobile@4.3.32
Patch Changes
#219
14dfb3fThanks @github-actions! - Update SwapKit SDK dependencies:c380f81Thanks @0xepicode! - The UTXO toolbox's Blockchair host is now configurable viaSKConfig.set({ blockchairApiUrl }). When set, every Blockchair read and broadcast routes through that host (the/{chain-slug}path is still appended), letting a consumer proxy the calls and keep the API key server-side instead of shipping it to the browser. Unset, it defaults tohttps://api.blockchair.comas before. (via @swapkit/helpers@6.4.2)f960277Thanks @ice-chillios! - Solana token transfers now use the token program that owns the mint. Before, every transfer was built for the original SPL Token program, so transfers of Token-2022 tokens such as PYUSD failed with "incorrect program id". A mint that does not exist, or that neither program owns, now throwstoolbox_solana_unsupported_token_programfromcreateTransaction,transferandestimateTransactionFee.getBalanceFromRPCalso lists Token-2022 balances, andcheckPayerBalancesizes a new Token-2022 token account like the payer's own. (via @swapkit/helpers@6.4.2)2957c2fThanks @ice-chillios! - THORChain and Maya tokens whose denom contains more than one "/", such as staked RUJI (x/staking-x/ruji), now keep their full name. Their balances show under the right asset, and sending or depositing them uses the full denom instead of a cut-off one that the chain rejects. THORChain and Maya asset identifiers with an empty part, such asTHOR.ETH//ETH, are now rejected withhelpers_invalid_asset_identifierinstead of being cut short. (via @swapkit/helpers@6.4.2)c03235bThanks @github-actions! - Update generated token lists. (via @swapkit/helpers@6.4.2)b09262aThanks @hippocampusSK! - Zcash transfers to ZIP-320 TEX addresses (tex1…), the format THORChain publishes its ZEC vault in, are now built instead of being rejected as invalid. TEX addresses are reported as their owntexaddress type, THORChain and Maya swaps accept them as the ZEC destination, andtoTransparentZcashAddressconverts one to thet1address it pays on chain. (via @swapkit/toolboxes@6.6.0)efc495dThanks @hippocampusSK! - Selling from HyperCore now works through NEAR Intents as well as Flashnet, and each swap sends the funds to the account that provider credits. (via @swapkit/toolboxes@6.6.0)b717e30Thanks @0xepicode! - Transparent Zcash swaps now broadcast the extracted network transaction instead of the PCZT envelope. The toolbox signer discriminated the transaction it received withinstanceof ZcashPSBT/instanceof PCZT, but the swap plugin builds that transaction through a dynamic import of@swapkit/utxo-signer, which a bundler can resolve to a different module instance than the toolbox's static import. Theinstanceofcheck then missed, the signer fell through to its generic branch, and the still-wrapped PSBT was broadcast as its PCZT envelope — which the network rejects. The signer now discriminates by shape — a PCZT and a ZcashPSBT both exposeextract, a raw transaction does not — which is independent of class identity. (via @swapkit/toolboxes@6.6.0)d3e65c6Thanks @hippocampusSK! - The limit order parameter types used by the SwapKit plugin are now exported, so projects that re-export the plugins can build their type declarations again. (via @swapkit/plugins@5.2.1)0ea5efbThanks @hippocampusSK! - The Tron toolbox now reportstoolbox_tron_insufficient_balanceinstead oftoolbox_tron_transaction_creation_failedwhen the node rejects a TRX or TRC-20 transfer because the wallet cannot cover it, including the extra fee for sending to an account that is not activated yet. The node's reason is kept in the error info, andtransferno longer wraps this error intoolbox_tron_token_transfer_failed. (via @swapkit/plugins@5.2.1)9190931Thanks @hippocampusSK! - Add limit orders. ASwapKitinstance with theswapkitplugin exposesswapKit.limitOrder:tokens,quote,build,sign,submit,execute,list,get,allowedProvidersandcanSign, pluscancel.build,cancel.sign,cancel.submitandcancel.execute.execute({ build })signs a built order with the connected wallet and submits it in one step;cancel.execute(orderId)does the same for a cancellation.6ddbd12Thanks @ice-chillios! -getTokenAddressandgetChecksumAddressFromAssetnow useisGasAsset, soMONAD.MON,XLAYER.OKBandGNO.xDAIresolve to the native asset address instead of returningnullor throwing. Identifiers that repeat the chain name on a chain whose gas asset has another ticker, such asARB.ARBorBSC.BSC, no longer resolve to the native asset address.ContractAddress[Chain.Optimism]is now the zero address, like every EVM chain except Polygon, soOP.ETHresolves to the zero address instead of the OP token contract (0x4200000000000000000000000000000000000042).OP.OPwithout an address still resolves to the OP token contract. The Botanix toolbox now targets the Botanix network instead of Sonic. (via @swapkit/helpers@6.4.0)f107064Thanks @ice-chillios! - The TON toolbox spaces out and retries its requests to the public Toncenter endpoint, which allows about one request per second without an API key, so TON jetton sales such as TON.USDT are much less likely to fail there. Requests to the chain's default endpoints start at least 1.1 seconds apart, through a queue shared by every toolbox in the process. Waits therefore grow with concurrent TON activity; for servers and other high-volume use, configure a custom TON RPC or a Toncenter API key, which is not spaced out. The endpoint health check is not queued. A request rejected with 429 or a gateway error (502 and above) is sent again after 1, 2 and 4 seconds. A node's 500 answer, such as a rejected message, a timeout and a network failure fail at once. A jetton lookup that the RPC does not answer is reported ashelpers_chain_rpc_connection_failedinstead ofcore_swap_contract_not_found. A toolbox looks up each jetton wallet address only once per jetton and owner. (via @swapkit/helpers@6.4.0)c20cc10Thanks @github-actions! - Update generated token lists. (via @swapkit/helpers@6.4.0)8062907Thanks @ice-chillios! - The TON toolbox no longer falls back to Orbs TON Access when every configured TON RPC fails. That service no longer returns any nodes, so the fallback itself failed with an unclear error. Now the toolbox throwshelpers_chain_rpc_connection_failed, and jetton transfers and sweeps report that error instead ofcore_swap_contract_not_found. Set a working endpoint withSKConfig.setRpcUrl(Chain.Ton, [...])or passproviderto the toolbox. The@orbs-network/ton-accessdependency is removed. (via @swapkit/toolboxes@6.5.0)d03591dThanks @towanTG! - Zcash transactions keep working through the NU7 network upgrade (mainnet block 3,543,405, around 5 November 2026), which rejects version 4 transactions. From the activation block on, the Zcash toolbox builds version 5 transactions with the NU7 consensus branch id0x77190ad9; before it, nothing changes. If the block height can't be fetched, building a Zcash transaction now fails withtoolbox_utxo_api_errorinstead of guessing the format, because a guess on the wrong side of an upgrade produces a transaction the network rejects.@swapkit/utxo-signercan now build, sign, parse and compute the txid of transparent version 5 transactions, including version 5 PSBTs and PCZTs, and exportsgetZcashTransactionFormatandZCASH_NU7_ACTIVATION_HEIGHT. Parsing a raw Zcash transaction now keeps input txids in the right byte order, so re-serializing it no longer changes them. (via @swapkit/toolboxes@6.5.0)