From 59487b2ce373b67b8d9b0f740c0dc1b6d4d1d1d3 Mon Sep 17 00:00:00 2001 From: Gancho Radkov <43912948+ganchoradkov@users.noreply.github.com> Date: Tue, 29 Oct 2024 15:43:28 +0200 Subject: [PATCH] feat: bitcoin (#568) * feat: implements bitcoin signet support in example dapp * feat: implements bitcoin signet in example wallet * fix: prettier * fix: adds tiny-secp256k1 to packages * chore: cleanup console logs * chore: cleanup * chore: rm console log * chore: dapp rework with btc specs * chore: parse addreses result * chore: sets bifrost wallet link * feat: lists all addresses on getaccountAddresses response * feat: implements new btc spec * feat: adds ordninals address handling * feat: sets addresses in session props * fix: types * refactor: cleanup * fix: build * feat: added btc mainnet * fix: explorer mainnet & testnet urls --------- Co-authored-by: Gancho Radkov --- advanced/dapps/react-dapp-v2/package.json | 3 + .../public/assets/btc-testnet.png | Bin 0 -> 184002 bytes .../dapps/react-dapp-v2/src/chains/bip122.ts | 41 ++ .../dapps/react-dapp-v2/src/chains/index.ts | 3 + .../react-dapp-v2/src/components/Asset.tsx | 5 + .../react-dapp-v2/src/constants/default.ts | 14 + .../src/contexts/ChainDataContext.tsx | 4 + .../src/contexts/ClientContext.tsx | 36 +- .../src/contexts/JsonRpcContext.tsx | 249 +++++++++- .../dapps/react-dapp-v2/src/helpers/api.ts | 5 + .../dapps/react-dapp-v2/src/helpers/bip122.ts | 78 ++++ .../react-dapp-v2/src/helpers/namespaces.ts | 7 + .../dapps/react-dapp-v2/src/helpers/types.ts | 12 + .../react-dapp-v2/src/helpers/utilities.ts | 13 +- .../dapps/react-dapp-v2/src/pages/index.tsx | 42 ++ advanced/dapps/react-dapp-v2/tsconfig.json | 2 +- advanced/dapps/react-dapp-v2/yarn.lock | 105 ++++- .../wallets/react-wallet-v2/next.config.js | 7 +- advanced/wallets/react-wallet-v2/package.json | 12 +- .../public/chain-logos/btc-testnet.png | Bin 0 -> 184002 bytes .../react-wallet-v2/src/components/Modal.tsx | 9 + .../react-wallet-v2/src/data/Bip122Data.ts | 60 +++ .../react-wallet-v2/src/data/chainsUtil.ts | 4 +- .../src/hooks/useInitialization.ts | 3 + .../hooks/useWalletConnectEventsManager.ts | 11 + .../react-wallet-v2/src/lib/Bip122Lib.ts | 439 ++++++++++++++++++ .../react-wallet-v2/src/pages/index.tsx | 13 + .../react-wallet-v2/src/store/ModalStore.ts | 3 + .../src/store/SettingsStore.ts | 5 + .../src/utils/Bip122RequestHandlerUtil.ts | 92 ++++ .../src/utils/Bip122WalletUtil.ts | 41 ++ .../src/utils/WalletConnectUtil.ts | 5 +- .../views/SessionGetBip122AddressesModal.tsx | 92 ++++ .../src/views/SessionProposalModal.tsx | 45 +- .../SessionSendTransactionBip122Modal.tsx | 88 ++++ .../src/views/SessionSignBip122Modal.tsx | 98 ++++ advanced/wallets/react-wallet-v2/yarn.lock | 298 +++++++++++- 37 files changed, 1896 insertions(+), 48 deletions(-) create mode 100644 advanced/dapps/react-dapp-v2/public/assets/btc-testnet.png create mode 100644 advanced/dapps/react-dapp-v2/src/chains/bip122.ts create mode 100644 advanced/dapps/react-dapp-v2/src/helpers/bip122.ts create mode 100644 advanced/wallets/react-wallet-v2/public/chain-logos/btc-testnet.png create mode 100644 advanced/wallets/react-wallet-v2/src/data/Bip122Data.ts create mode 100644 advanced/wallets/react-wallet-v2/src/lib/Bip122Lib.ts create mode 100644 advanced/wallets/react-wallet-v2/src/utils/Bip122RequestHandlerUtil.ts create mode 100644 advanced/wallets/react-wallet-v2/src/utils/Bip122WalletUtil.ts create mode 100644 advanced/wallets/react-wallet-v2/src/views/SessionGetBip122AddressesModal.tsx create mode 100644 advanced/wallets/react-wallet-v2/src/views/SessionSendTransactionBip122Modal.tsx create mode 100644 advanced/wallets/react-wallet-v2/src/views/SessionSignBip122Modal.tsx diff --git a/advanced/dapps/react-dapp-v2/package.json b/advanced/dapps/react-dapp-v2/package.json index dda7e9c79..a4ef588ed 100644 --- a/advanced/dapps/react-dapp-v2/package.json +++ b/advanced/dapps/react-dapp-v2/package.json @@ -18,6 +18,7 @@ "@kadena/types": "^0.6.0", "@multiversx/sdk-core": "12.18.0", "@multiversx/sdk-wallet": "4.2.0", + "@noble/curves": "^1.6.0", "@polkadot/util-crypto": "^10.1.2", "@solana/web3.js": "^1.36.0", "@walletconnect/encoding": "^1.0.1", @@ -26,6 +27,8 @@ "@walletconnect/utils": "2.16.1", "@web3modal/standalone": "2.4.3", "axios": "^1.0.0", + "bitcoinjs-lib": "^6.1.5", + "bitcoinjs-message": "^2.2.0", "blockies-ts": "^1.0.0", "bs58": "^5.0.0", "cosmos-wallet": "^1.2.0", diff --git a/advanced/dapps/react-dapp-v2/public/assets/btc-testnet.png b/advanced/dapps/react-dapp-v2/public/assets/btc-testnet.png new file mode 100644 index 0000000000000000000000000000000000000000..b991e4b73ba3d396d64b7f8f942a67c3504528a1 GIT binary patch literal 184002 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
ONANbH^Tz_=xp<^*uoKSP!?0M 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

C9I-DdW?^jT_9TBm+H^#JWKJ1?Q)D)XMe{YK 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 literal 0 HcmV?d00001 diff --git a/advanced/dapps/react-dapp-v2/src/chains/bip122.ts b/advanced/dapps/react-dapp-v2/src/chains/bip122.ts new file mode 100644 index 000000000..88077f660 --- /dev/null +++ b/advanced/dapps/react-dapp-v2/src/chains/bip122.ts @@ -0,0 +1,41 @@ +import { NamespaceMetadata, ChainMetadata, ChainsMap } from "../helpers"; + +export const BIP122_MAINNET = "000000000019d6689c085ae165831e93"; +export const BIP122_TESTNET = "000000000933ea01ad0ee984209779ba"; + +export const BtcChainData: ChainsMap = { + [BIP122_MAINNET]: { + id: `bip122:${BIP122_MAINNET}`, + name: "BTC Mainnet", + rpc: [], + slip44: 0, + testnet: false, + }, + [BIP122_TESTNET]: { + id: `bip122:${BIP122_TESTNET}`, + name: "BTC Testnet", + rpc: [], + slip44: 501, + testnet: true, + }, +}; + +export const BtcMetadata: NamespaceMetadata = { + [BIP122_MAINNET]: { + logo: "/assets/btc-testnet.png", + rgb: "247, 147, 25", + }, + [BIP122_TESTNET]: { + logo: "/assets/btc-testnet.png", + rgb: "247, 147, 25", + }, +}; + +export function getChainMetadata(chainId: string): ChainMetadata { + const reference = chainId.split(":")[1]; + const metadata = BtcMetadata[reference]; + if (typeof metadata === "undefined") { + throw new Error(`No chain metadata found for chainId: ${chainId}`); + } + return metadata; +} diff --git a/advanced/dapps/react-dapp-v2/src/chains/index.ts b/advanced/dapps/react-dapp-v2/src/chains/index.ts index 47878f76d..ce02b603e 100644 --- a/advanced/dapps/react-dapp-v2/src/chains/index.ts +++ b/advanced/dapps/react-dapp-v2/src/chains/index.ts @@ -9,6 +9,7 @@ import * as multiversx from "./multiversx"; import * as tron from "./tron"; import * as tezos from "./tezos"; import * as kadena from "./kadena"; +import * as bip122 from "./bip122"; import { ChainMetadata, ChainRequestRender } from "../helpers"; @@ -33,6 +34,8 @@ export function getChainMetadata(chainId: string): ChainMetadata { return tron.getChainMetadata(chainId); case "tezos": return tezos.getChainMetadata(chainId); + case "bip122": + return bip122.getChainMetadata(chainId); default: throw new Error(`No metadata handler for namespace ${namespace}`); } diff --git a/advanced/dapps/react-dapp-v2/src/components/Asset.tsx b/advanced/dapps/react-dapp-v2/src/components/Asset.tsx index 9e726b408..c74990211 100644 --- a/advanced/dapps/react-dapp-v2/src/components/Asset.tsx +++ b/advanced/dapps/react-dapp-v2/src/components/Asset.tsx @@ -10,6 +10,9 @@ import { getChainMetadata } from "../chains"; const xdaiLogo = getChainMetadata("eip155:100").logo; const maticLogo = getChainMetadata("eip155:137").logo; const kadenaLogo = getChainMetadata("kadena:testnet04").logo; +const btcLogo = getChainMetadata( + "bip122:000000000933ea01ad0ee984209779ba" +).logo; const SAsset = styled.div` width: 100%; @@ -48,6 +51,8 @@ function getAssetIcon(asset: AssetData): JSX.Element { return ; case "kda": return ; + case "btc": + return ; default: return ; } diff --git a/advanced/dapps/react-dapp-v2/src/constants/default.ts b/advanced/dapps/react-dapp-v2/src/constants/default.ts index 50fa43af4..91139a41b 100644 --- a/advanced/dapps/react-dapp-v2/src/constants/default.ts +++ b/advanced/dapps/react-dapp-v2/src/constants/default.ts @@ -19,6 +19,7 @@ export const DEFAULT_MAIN_CHAINS = [ "tron:0x2b6653dc", "tezos:mainnet", "kadena:mainnet01", + "bip122:000000000019d6689c085ae165831e93", ]; export const DEFAULT_TEST_CHAINS = [ @@ -38,6 +39,7 @@ export const DEFAULT_TEST_CHAINS = [ "tron:0xcd8690dc", "tezos:testnet", "kadena:testnet04", + "bip122:000000000933ea01ad0ee984209779ba", ]; export const DEFAULT_CHAINS = [...DEFAULT_MAIN_CHAINS, ...DEFAULT_TEST_CHAINS]; @@ -272,6 +274,18 @@ export enum DEFAULT_KADENA_METHODS { } export enum DEFAULT_KADENA_EVENTS {} +/** + * BITCOIN + */ +export enum DEFAULT_BIP122_METHODS { + BIP122_SEND_TRANSACTION = "sendTransfer", + BIP122_GET_ACCOUNT_ADDRESSES = "getAccountAddresses", + BIP122_SIGN_MESSAGE = "signMessage", + BIP122_SIGN_PSBT = "signPsbt", +} +export enum DEFAULT_BIP122_EVENTS { + BIP122_ADDRESS_CHANGED = "bip122_addressesChanged", +} export const REGIONALIZED_RELAYER_ENDPOINTS: RelayerType[] = [ { diff --git a/advanced/dapps/react-dapp-v2/src/contexts/ChainDataContext.tsx b/advanced/dapps/react-dapp-v2/src/contexts/ChainDataContext.tsx index 8b86d9471..4c138451a 100644 --- a/advanced/dapps/react-dapp-v2/src/contexts/ChainDataContext.tsx +++ b/advanced/dapps/react-dapp-v2/src/contexts/ChainDataContext.tsx @@ -16,6 +16,7 @@ import { CosmosChainData } from "../chains/cosmos"; import { EIP155ChainData } from "../chains/eip155"; import { TezosChainData } from "../chains/tezos"; import { KadenaChainData } from "../chains/kadena"; +import { BtcChainData } from "../chains/bip122"; /** * Types @@ -73,6 +74,9 @@ export function ChainDataContextProvider({ case "kadena": chains = KadenaChainData; break; + case "bip122": + chains = BtcChainData; + break; default: console.error("Unknown chain namespace: ", namespace); } diff --git a/advanced/dapps/react-dapp-v2/src/contexts/ClientContext.tsx b/advanced/dapps/react-dapp-v2/src/contexts/ClientContext.tsx index 0ca8990d1..28f1b2872 100644 --- a/advanced/dapps/react-dapp-v2/src/contexts/ClientContext.tsx +++ b/advanced/dapps/react-dapp-v2/src/contexts/ClientContext.tsx @@ -49,6 +49,7 @@ interface IContext { setChains: any; setRelayerRegion: any; origin: string; + setAccounts: any; } /** @@ -63,6 +64,16 @@ const web3Modal = new Web3Modal({ projectId: DEFAULT_PROJECT_ID, themeMode: "light", walletConnectVersion: 2, + mobileWallets: [ + { + id: "bifrost", + name: "Bifrost Wallet", + links: { + native: "bifrostwallet://", + universal: "https://bifrostwallet.com", + }, + }, + ], }); /** @@ -106,7 +117,6 @@ export function ClientContextProvider({ const [namespace, reference, address] = account.split(":"); const chainId = `${namespace}:${reference}`; const assets = await apiGetAccountBalance(address, chainId); - return { account, assets: [assets] }; }) ); @@ -123,6 +133,11 @@ export function ClientContextProvider({ } }; + useMemo(() => { + if (!accounts.length) return; + getAccountBalances(accounts); + }, [accounts]); + const onSessionConnected = useCallback( async (_session: SessionTypes.Struct) => { const allNamespaceAccounts = Object.values(_session.namespaces) @@ -147,26 +162,17 @@ export function ClientContextProvider({ } console.log("connect, pairing topic is:", pairing?.topic); try { - const requiredNamespaces = getRequiredNamespaces(chains); - console.log( - "requiredNamespaces config for connect:", - requiredNamespaces - ); - const optionalNamespaces = getOptionalNamespaces(chains); - console.log( - "optionalNamespaces config for connect:", - optionalNamespaces - ); + const namespacesToRequest = getRequiredNamespaces(chains); const { uri, approval } = await client.connect({ pairingTopic: pairing?.topic, - requiredNamespaces, - optionalNamespaces, + requiredNamespaces: {}, + optionalNamespaces: namespacesToRequest, }); // Open QRCode modal if a URI was returned (i.e. we're not connecting an existing pairing). if (uri) { // Create a flat array of all requested chains across namespaces. - const standaloneChains = Object.values(requiredNamespaces) + const standaloneChains = Object.values(namespacesToRequest) .map((namespace) => namespace.chains) .flat() as string[]; @@ -375,6 +381,7 @@ export function ClientContextProvider({ setChains, setRelayerRegion, origin, + setAccounts, }), [ pairings, @@ -392,6 +399,7 @@ export function ClientContextProvider({ setChains, setRelayerRegion, origin, + setAccounts, ] ); diff --git a/advanced/dapps/react-dapp-v2/src/contexts/JsonRpcContext.tsx b/advanced/dapps/react-dapp-v2/src/contexts/JsonRpcContext.tsx index fdec84c1a..eb8d3631f 100644 --- a/advanced/dapps/react-dapp-v2/src/contexts/JsonRpcContext.tsx +++ b/advanced/dapps/react-dapp-v2/src/contexts/JsonRpcContext.tsx @@ -3,6 +3,8 @@ import { createContext, ReactNode, useContext, useState } from "react"; import * as encoding from "@walletconnect/encoding"; import { Transaction as EthTransaction } from "@ethereumjs/tx"; import { recoverTransaction } from "@celo/wallet-base"; +import * as bitcoin from "bitcoinjs-lib"; + import { formatDirectSignDoc, stringifySignDocValues, @@ -28,6 +30,7 @@ import { } from "@kadena/client"; import { PactNumber } from "@kadena/pactjs"; import { + IUTXO, KadenaAccount, eip712, formatTestBatchCall, @@ -54,6 +57,7 @@ import { SendCallsParams, GetCapabilitiesResult, GetCallsResult, + DEFAULT_BIP122_METHODS, DEFAULT_EIP7715_METHODS, WalletGrantPermissionsParameters, WalletGrantPermissionsReturnType, @@ -69,8 +73,15 @@ import { SignableMessage, } from "@multiversx/sdk-core"; import { UserVerifier } from "@multiversx/sdk-wallet/out/userVerifier"; -import { SignClient } from "@walletconnect/sign-client/dist/types/client"; import { parseEther } from "ethers/lib/utils"; +import { + apiGetAddressUtxos, + calculateChange, + getAvailableBalanceFromUtxos, + isOrdinalAddress, + isValidBip122Signature, +} from "../helpers/bip122"; +import { getAddressFromAccount } from "@walletconnect/utils"; /** * Types @@ -137,6 +148,12 @@ interface IContext { testSign: TRpcRequestCallback; testQuicksign: TRpcRequestCallback; }; + bip122Rpc: { + testGetAccountAddresses: TRpcRequestCallback; + testSignMessage: TRpcRequestCallback; + testSendTransaction: TRpcRequestCallback; + testSignPsbt: TRpcRequestCallback; + }; rpcResult?: IFormattedRpcResponse | null; isRpcRequestPending: boolean; isTestnet: boolean; @@ -164,7 +181,7 @@ export function JsonRpcContextProvider({ null ); - const { client, session, accounts, balances, solanaPublicKeys } = + const { client, session, accounts, balances, solanaPublicKeys, setAccounts } = useWalletConnectClient(); const { chainData } = useChainData(); @@ -872,7 +889,7 @@ export function JsonRpcContextProvider({ })), transaction: transaction .serialize({ verifySignatures: false }) - .toString('base64'), + .toString("base64"), }, }, }); @@ -1640,6 +1657,231 @@ export function JsonRpcContextProvider({ ), }; + const bip122Rpc = { + testSignMessage: _createJsonRpcRequestHandler( + async ( + chainId: string, + address: string + ): Promise => { + console.log("testSignMessage", chainId, address); + const method = DEFAULT_BIP122_METHODS.BIP122_SIGN_MESSAGE; + const message = "This is a message to be signed for BIP122"; + const shouldAddAddress = address !== getAddressFromAccount(accounts[0]); + const result = await client!.request<{ + signature: string; + address: string; + }>({ + topic: session!.topic, + chainId: chainId, + request: { + method, + params: { + message, + account: getAddressFromAccount(accounts[0]), + address: shouldAddAddress ? address : undefined, + }, + }, + }); + + return { + method, + address: address, + valid: await isValidBip122Signature( + address, + result.signature, + message + ), + result: result.signature, + }; + } + ), + testSendTransaction: _createJsonRpcRequestHandler( + async ( + chainId: string, + address: string + ): Promise => { + const method = DEFAULT_BIP122_METHODS.BIP122_SEND_TRANSACTION; + + const utxos = await apiGetAddressUtxos(address, chainId); + console.log("utxos", utxos); + const availableBalance = getAvailableBalanceFromUtxos(utxos); // in satoshis + console.log("availableBalance", availableBalance); + const req = { + account: address, + recipientAddress: address, + amount: "550", + }; + console.log("request", { + method, + params: req, + chainId, + }); + + const result = await client!.request<{ txid: string }>({ + topic: session!.topic, + chainId: chainId, + request: { + method, + params: req, + }, + }); + console.log("result", result); + return { + method, + address: address, + valid: true, + result: result?.txid, + }; + } + ), + testSignPsbt: _createJsonRpcRequestHandler( + async ( + chainId: string, + address: string + ): Promise => { + const method = DEFAULT_BIP122_METHODS.BIP122_SIGN_PSBT; + + const utxos = (await apiGetAddressUtxos(address, chainId)) as IUTXO[]; + if (!utxos || utxos.length === 0) { + throw new Error("No UTXOs found for address: " + address); + } + + const availableBalance = getAvailableBalanceFromUtxos(utxos); // in satoshis + const satoshisToTransfer = 550; + if (availableBalance < satoshisToTransfer) { + throw new Error( + "Insufficient balance: " + availableBalance + " satoshis" + ); + } + const network = bitcoin.networks.testnet; + const psbt = new bitcoin.Psbt({ network }); + + const utxosToSpend: any[] = []; + let utxosValue = 0; + utxos.forEach((utxo) => { + utxosValue += utxo.value; + utxosToSpend.push(utxo); + if (utxosValue >= satoshisToTransfer) { + return; + } + }); + const signInputs: unknown[] = []; + + utxosToSpend.forEach((utxo, index) => { + psbt.addInput({ + hash: utxo.txid, + index: utxo.vout, + witnessUtxo: { + script: bitcoin.address.toOutputScript(address, network), + value: utxo.value, + }, + }); + signInputs.push({ + address, + index, + sighashTypes: [bitcoin.Transaction.SIGHASH_ALL], + }); + }); + + const change = calculateChange(utxosToSpend, satoshisToTransfer, 5); + if (change > 0) { + psbt.addOutput({ + address: address, + value: change, + }); + } + + psbt.addOutput({ + address: address, + value: satoshisToTransfer, + }); + + const transaction = psbt.toBase64(); + + console.log("availableBalance", availableBalance); + const req = { + account: address, + psbt: transaction, + signInputs, + broadcast: false, + }; + console.log("signPsbt", { + method, + params: req, + chainId, + }); + + const result = await client!.request<{ psbt: string }>({ + topic: session!.topic, + chainId: chainId, + request: { + method, + params: req, + }, + }); + console.log("result", result); + const reconstructed = bitcoin.Psbt.fromBase64(result.psbt, { network }); + return { + method, + address: address, + valid: true, + result: reconstructed.extractTransaction().toHex(), + }; + } + ), + testGetAccountAddresses: _createJsonRpcRequestHandler( + async ( + chainId: string, + address: string + ): Promise => { + const method = DEFAULT_BIP122_METHODS.BIP122_GET_ACCOUNT_ADDRESSES; + const isOrdinal = isOrdinalAddress(address); + const req = { + account: address, + intentions: isOrdinal ? ["ordinal"] : ["payment"], + }; + const addresses = + session?.sessionProperties?.[ + `bip122_${DEFAULT_BIP122_METHODS.BIP122_GET_ACCOUNT_ADDRESSES}` + ]; + let result; + if (addresses) { + console.log("cached addresses", addresses); + const parsed = JSON.parse(addresses); + result = isOrdinal ? parsed.ordinal : parsed.payment; + console.log("parsed", result); + } else { + console.log("request", { + method, + params: req, + chainId, + }); + + result = await client!.request({ + topic: session!.topic, + chainId: chainId, + request: { + method, + params: req, + }, + }); + + console.log("result", result); + } + + const accounts = result.map((r: any) => `${chainId}:${r.address}`); + setAccounts((prev: string[]) => [...new Set([...prev, ...accounts])]); + + return { + method, + address: address, + valid: true, + result: result.map((r: any) => r.address).join(", "), + }; + } + ), + }; + return ( {children} diff --git a/advanced/dapps/react-dapp-v2/src/helpers/api.ts b/advanced/dapps/react-dapp-v2/src/helpers/api.ts index 59f304cad..ad3b4e6a7 100644 --- a/advanced/dapps/react-dapp-v2/src/helpers/api.ts +++ b/advanced/dapps/react-dapp-v2/src/helpers/api.ts @@ -3,6 +3,7 @@ import { apiGetKadenaAccountBalance } from "./kadena"; import { AssetData } from "./types"; import { PactCommand } from "@kadena/client"; +import { apiGetBip122AccountBalance } from "./bip122"; export type RpcProvidersByChainId = Record< number, @@ -155,6 +156,10 @@ export async function apiGetAccountBalance( ); } + if (namespace === "bip122") { + return apiGetBip122AccountBalance(address, networkId as string); + } + if (namespace !== "eip155") { return { balance: "", symbol: "", name: "" }; } diff --git a/advanced/dapps/react-dapp-v2/src/helpers/bip122.ts b/advanced/dapps/react-dapp-v2/src/helpers/bip122.ts new file mode 100644 index 000000000..8f178f1be --- /dev/null +++ b/advanced/dapps/react-dapp-v2/src/helpers/bip122.ts @@ -0,0 +1,78 @@ +import { schnorr } from "@noble/secp256k1"; +import * as bitcoin from "bitcoinjs-lib"; +import BitcoinMessage from "bitcoinjs-message"; +import { convertHexToBase64 } from "./utilities"; +import { IUTXO } from "./types"; +import { BIP122_TESTNET } from "../chains/bip122"; +export async function apiGetBip122AccountBalance( + address: string, + chainId: string +) { + const utxo = await apiGetAddressUtxos(address, chainId); + const balanceInSatoshis = getAvailableBalanceFromUtxos(utxo); + const balanceInBtc = balanceInSatoshis * 0.00000001; + return { balance: balanceInBtc.toString(), symbol: "BTC", name: "BTC" }; +} + +export async function apiGetAddressUtxos(address: string, chainId: string) { + const isTestnet = chainId.includes(BIP122_TESTNET); + return await ( + await fetch( + `https://mempool.space${ + isTestnet ? "/testnet" : "" + }/api/address/${address}/utxo` + ) + ).json(); +} + +export function getAvailableBalanceFromUtxos(utxos: IUTXO[]) { + if (!utxos || !utxos.length) { + return 0; + } + return utxos.reduce((acc, { value }) => acc + value, 0); +} + +export function calculateChange( + utxos: IUTXO[], + amount: number, + feeRate: number +): number { + const inputSum = utxos.reduce((sum, utxo) => sum + utxo.value, 0); // Sum of all UTXO values + const estimatedSize = 10 + 148 * utxos.length + 34 * 2; // Rough estimate of transaction size + const fee = estimatedSize * feeRate; // Transaction fee + const change = inputSum - amount - fee; // Calculate change + return change; +} + +export async function isValidBip122Signature( + address: string, + signature: string, + message: string +) { + // if taproot address + if (address.startsWith("bc1p") || address.startsWith("tb1p")) { + // Convert the Ordinals address (Taproot) to the internal public key + const decoded = bitcoin.address.fromBech32(address); + if (decoded.version !== 1 || decoded.data.length !== 32) { + throw new Error("Invalid Taproot address"); + } + + const publicKey = decoded.data; // The 32-byte internal public key (X coordinate of pubkey) + + // Hash the message using SHA256 (standard Bitcoin message hashing) + const messageHash = bitcoin.crypto.sha256(Buffer.from(message)); + + // Verify the Schnorr signature using tiny-secp256k1 + return await schnorr.verify( + Buffer.from(signature, "hex"), + messageHash, + publicKey + ); + } + + return BitcoinMessage.verify(message, address, convertHexToBase64(signature)); +} + +export function isOrdinalAddress(address: string) { + return address.startsWith("tb1p"); +} diff --git a/advanced/dapps/react-dapp-v2/src/helpers/namespaces.ts b/advanced/dapps/react-dapp-v2/src/helpers/namespaces.ts index 553f7b53d..f5363c51b 100644 --- a/advanced/dapps/react-dapp-v2/src/helpers/namespaces.ts +++ b/advanced/dapps/react-dapp-v2/src/helpers/namespaces.ts @@ -19,6 +19,8 @@ import { DEFAULT_TEZOS_METHODS, DEFAULT_TEZOS_EVENTS, DEFAULT_OPTIONAL_METHODS, + DEFAULT_BIP122_METHODS, + DEFAULT_BIP122_EVENTS, } from "../constants"; export const getNamespacesFromChains = (chains: string[]) => { @@ -53,6 +55,8 @@ export const getSupportedRequiredMethodsByNamespace = (namespace: string) => { return Object.values(DEFAULT_TEZOS_METHODS); case "kadena": return Object.values(DEFAULT_KADENA_METHODS); + case "bip122": + return Object.values(DEFAULT_BIP122_METHODS); default: throw new Error( `No default required methods for namespace: ${namespace}` @@ -72,6 +76,7 @@ export const getSupportedOptionalMethodsByNamespace = (namespace: string) => { case "tron": case "tezos": case "kadena": + case "bip122": return []; default: throw new Error( @@ -100,6 +105,8 @@ export const getSupportedEventsByNamespace = (namespace: string) => { return Object.values(DEFAULT_TEZOS_EVENTS); case "kadena": return Object.values(DEFAULT_KADENA_EVENTS); + case "bip122": + return Object.values(DEFAULT_BIP122_EVENTS); default: throw new Error(`No default events for namespace: ${namespace}`); } diff --git a/advanced/dapps/react-dapp-v2/src/helpers/types.ts b/advanced/dapps/react-dapp-v2/src/helpers/types.ts index 795318ef2..5c4f54f9f 100644 --- a/advanced/dapps/react-dapp-v2/src/helpers/types.ts +++ b/advanced/dapps/react-dapp-v2/src/helpers/types.ts @@ -163,3 +163,15 @@ export interface KadenaAccount { account: string; // Kadena account chainId: ChainId; // Kadena ChainId } + +export interface IUTXO { + txid: string; + vout: number; + value: number; + status: { + confirmed: boolean; + block_height: number; + block_hash: string; + block_time: number; + }; +} diff --git a/advanced/dapps/react-dapp-v2/src/helpers/utilities.ts b/advanced/dapps/react-dapp-v2/src/helpers/utilities.ts index 776b32c0e..e25fa569d 100644 --- a/advanced/dapps/react-dapp-v2/src/helpers/utilities.ts +++ b/advanced/dapps/react-dapp-v2/src/helpers/utilities.ts @@ -182,6 +182,13 @@ export function convertHexToUtf8(hex: string) { return hex; } } +export function convertHexToBase64(hex: string) { + try { + return encoding.hexToBuffer(hex).toString("base64"); + } catch (e) { + return hex; + } +} export const sanitizeDecimals = (value: string, decimals = 18): string => { const [integer, fractional] = value.split("."); @@ -196,7 +203,11 @@ export const toWad = (amount: string, decimals = 18): BigNumber => { }; export const fromWad = (wad: BigNumberish, decimals = 18): string => { - return sanitizeDecimals(utils.formatUnits(wad, decimals), decimals); + try { + return sanitizeDecimals(utils.formatUnits(wad, decimals), decimals); + } catch (e) { + return wad?.toString(); + } }; export const LOCALSTORAGE_KEY_TESTNET = "TESTNET"; diff --git a/advanced/dapps/react-dapp-v2/src/pages/index.tsx b/advanced/dapps/react-dapp-v2/src/pages/index.tsx index 6827e2f7d..b8d844fed 100644 --- a/advanced/dapps/react-dapp-v2/src/pages/index.tsx +++ b/advanced/dapps/react-dapp-v2/src/pages/index.tsx @@ -23,6 +23,7 @@ import { DEFAULT_EIP155_OPTIONAL_METHODS, DEFAULT_EIP5792_METHODS, GetCapabilitiesResult, + DEFAULT_BIP122_METHODS, DEFAULT_EIP7715_METHODS, } from "../constants"; import { AccountAction, setLocaleStorageTestnetFlag } from "../helpers"; @@ -79,6 +80,7 @@ const Home: NextPage = () => { setChains, setRelayerRegion, origin, + setAccounts, } = useWalletConnectClient(); // Use `JsonRpcContext` to provide us with relevant RPC methods and states. @@ -93,6 +95,7 @@ const Home: NextPage = () => { tronRpc, tezosRpc, kadenaRpc, + bip122Rpc, isRpcRequestPending, rpcResult, isTestnet, @@ -476,6 +479,43 @@ const Home: NextPage = () => { ]; }; + const getBip122Actions = (): AccountAction[] => { + const onSignMessage = async (chainId: string, address: string) => { + openRequestModal(); + await bip122Rpc.testSignMessage(chainId, address); + }; + const onGetAccountAddresses = async (chainId: string, address: string) => { + openRequestModal(); + await bip122Rpc.testGetAccountAddresses(chainId, address); + }; + const onSendTransaction = async (chainId: string, address: string) => { + openRequestModal(); + await bip122Rpc.testSendTransaction(chainId, address); + }; + const onSignPsbt = async (chainId: string, address: string) => { + openRequestModal(); + await bip122Rpc.testSignPsbt(chainId, address); + }; + return [ + { + method: DEFAULT_BIP122_METHODS.BIP122_SEND_TRANSACTION, + callback: onSendTransaction, + }, + { + method: DEFAULT_BIP122_METHODS.BIP122_GET_ACCOUNT_ADDRESSES, + callback: onGetAccountAddresses, + }, + { + method: DEFAULT_BIP122_METHODS.BIP122_SIGN_MESSAGE, + callback: onSignMessage, + }, + { + method: DEFAULT_BIP122_METHODS.BIP122_SIGN_PSBT, + callback: onSignPsbt, + }, + ]; + }; + const getBlockchainActions = (account: string) => { const [namespace, chainId, address] = account.split(":"); switch (namespace) { @@ -497,6 +537,8 @@ const Home: NextPage = () => { return getTezosActions(); case "kadena": return getKadenaActions(); + case "bip122": + return getBip122Actions(); default: break; } diff --git a/advanced/dapps/react-dapp-v2/tsconfig.json b/advanced/dapps/react-dapp-v2/tsconfig.json index 99710e857..bad4c604c 100644 --- a/advanced/dapps/react-dapp-v2/tsconfig.json +++ b/advanced/dapps/react-dapp-v2/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es5", + "target": "es2015", "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, diff --git a/advanced/dapps/react-dapp-v2/yarn.lock b/advanced/dapps/react-dapp-v2/yarn.lock index 2ead6ccf3..674a5a904 100644 --- a/advanced/dapps/react-dapp-v2/yarn.lock +++ b/advanced/dapps/react-dapp-v2/yarn.lock @@ -2367,6 +2367,13 @@ dependencies: "@noble/hashes" "1.4.0" +"@noble/curves@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.6.0.tgz#be5296ebcd5a1730fccea4786d420f87abfeb40b" + integrity sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ== + dependencies: + "@noble/hashes" "1.5.0" + "@noble/ed25519@1.7.3": version "1.7.3" resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-1.7.3.tgz#57e1677bf6885354b466c38e2b620c62f45a7123" @@ -2392,6 +2399,11 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== +"@noble/hashes@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.5.0.tgz#abadc5ca20332db2b1b2aa3e496e9af1213570b0" + integrity sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA== + "@noble/hashes@~1.3.0", "@noble/hashes@~1.3.1": version "1.3.2" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" @@ -4967,7 +4979,7 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -bech32@1.1.4, bech32@^1.1.4: +bech32@1.1.4, bech32@^1.1.3, bech32@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== @@ -5031,6 +5043,11 @@ bindings@^1.3.0, bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" +bip174@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bip174/-/bip174-2.1.1.tgz#ef3e968cf76de234a546962bcf572cc150982f9f" + integrity sha512-mdFV5+/v0XyNYXjBS6CQPLo9ekCx4gtKZFnJm5PMto7Fs9hTTDpkkzOB7/FtluRI6JbUUAu+snTYfJRgHLZbZQ== + bip39@3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.0.2.tgz#2baf42ff3071fc9ddd5103de92e8f80d9257ee32" @@ -5048,6 +5065,37 @@ bip39@^3.0.2: dependencies: "@noble/hashes" "^1.2.0" +bip66@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" + integrity sha512-nemMHz95EmS38a26XbbdxIYj5csHd3RMP3H5bwQknX0WYHF01qhpufP42mLOwVICuH2JmhIhXiWs89MfUGL7Xw== + dependencies: + safe-buffer "^5.0.1" + +bitcoinjs-lib@^6.1.5: + version "6.1.6" + resolved "https://registry.yarnpkg.com/bitcoinjs-lib/-/bitcoinjs-lib-6.1.6.tgz#f57c17c82511f860f11946d784c18da39f8618a8" + integrity sha512-Fk8+Vc+e2rMoDU5gXkW9tD+313rhkm5h6N9HfZxXvYU9LedttVvmXKTgd9k5rsQJjkSfsv6XRM8uhJv94SrvcA== + dependencies: + "@noble/hashes" "^1.2.0" + bech32 "^2.0.0" + bip174 "^2.1.1" + bs58check "^3.0.1" + typeforce "^1.11.3" + varuint-bitcoin "^1.1.2" + +bitcoinjs-message@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/bitcoinjs-message/-/bitcoinjs-message-2.2.0.tgz#8116ec7f447f9889e23030fc15c5286a6ae5503b" + integrity sha512-103Wy3xg8Y9o+pdhGP4M3/mtQQuUWs6sPuOp1mYphSUoSMHjHTlkj32K4zxU8qMH0Ckv23emfkGlFWtoWZ7YFA== + dependencies: + bech32 "^1.1.3" + bs58check "^2.1.2" + buffer-equals "^1.0.3" + create-hash "^1.1.2" + secp256k1 "^3.0.1" + varuint-bitcoin "^1.0.1" + blake2b-wasm@^1.1.0: version "1.1.7" resolved "https://registry.yarnpkg.com/blake2b-wasm/-/blake2b-wasm-1.1.7.tgz#e4d075da10068e5d4c3ec1fb9accc4d186c55d81" @@ -5201,7 +5249,7 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.2.0: +browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.0.6, browserify-aes@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== @@ -5305,6 +5353,14 @@ bs58check@^2.1.2: create-hash "^1.1.0" safe-buffer "^5.1.2" +bs58check@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-3.0.1.tgz#2094d13720a28593de1cba1d8c4e48602fdd841c" + integrity sha512-hjuuJvoWEybo7Hn/0xOrczQKKEKD63WguEjlhLExYs2wUBcebDC1jDNK17eEAD2lYfw82d5ASC1d7K3SWszjaQ== + dependencies: + "@noble/hashes" "^1.2.0" + bs58 "^5.0.0" + bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -5312,6 +5368,11 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" +buffer-equals@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/buffer-equals/-/buffer-equals-1.0.4.tgz#0353b54fd07fd9564170671ae6f66b9cf10d27f5" + integrity sha512-99MsCq0j5+RhubVEtKQgKaD6EM+UP3xJgIvQqwJ3SOLDUekzxMX1ylXBng+Wa2sh7mGT0W6RUly8ojjr1Tt6nA== + buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" @@ -6830,6 +6891,15 @@ dotenv@8.2.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== +drbg.js@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" + integrity sha512-F4wZ06PvqxYLFEZKkFxTDcns9oFNk34hvmJSEwdzsxVQ8YI5YaxtACgQatkYgv2VI2CFkUd2Y+xosPQnHv809g== + dependencies: + browserify-aes "^1.0.6" + create-hash "^1.1.2" + create-hmac "^1.1.4" + duplexer@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" @@ -11344,6 +11414,11 @@ nan@^2.12.1: resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== +nan@^2.14.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.19.0.tgz#bb58122ad55a6c5bc973303908d5b16cfdd5a8c0" + integrity sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw== + nano-json-stream-parser@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" @@ -14126,6 +14201,20 @@ scryptsy@2.1.0: resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-2.1.0.tgz#8d1e8d0c025b58fdd25b6fa9a0dc905ee8faa790" integrity sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w== +secp256k1@^3.0.1: + version "3.8.0" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.8.0.tgz#28f59f4b01dbee9575f56a47034b7d2e3b3b352d" + integrity sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw== + dependencies: + bindings "^1.5.0" + bip66 "^1.1.5" + bn.js "^4.11.8" + create-hash "^1.2.0" + drbg.js "^1.0.1" + elliptic "^6.5.2" + nan "^2.14.0" + safe-buffer "^5.1.2" + secp256k1@^4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" @@ -15465,6 +15554,11 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== +typeforce@^1.11.3: + version "1.18.0" + resolved "https://registry.yarnpkg.com/typeforce/-/typeforce-1.18.0.tgz#d7416a2c5845e085034d70fcc5b6cc4a90edbfdc" + integrity sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g== + typescript@^4.7.4: version "4.9.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" @@ -15848,6 +15942,13 @@ varint@^5.0.0: resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== +varuint-bitcoin@^1.0.1, varuint-bitcoin@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/varuint-bitcoin/-/varuint-bitcoin-1.1.2.tgz#e76c138249d06138b480d4c5b40ef53693e24e92" + integrity sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw== + dependencies: + safe-buffer "^5.1.1" + vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" diff --git a/advanced/wallets/react-wallet-v2/next.config.js b/advanced/wallets/react-wallet-v2/next.config.js index e1f3bae45..ebacdf340 100644 --- a/advanced/wallets/react-wallet-v2/next.config.js +++ b/advanced/wallets/react-wallet-v2/next.config.js @@ -5,7 +5,12 @@ module.exports = { ...config.resolve.fallback, fs: false } - + // needed for tiny-secp256k1 package + config.experiments.asyncWebAssembly = true + config.module.rules.push({ + test: /\.wasm$/, + type: 'webassembly/async' + }) return config }, async headers() { diff --git a/advanced/wallets/react-wallet-v2/package.json b/advanced/wallets/react-wallet-v2/package.json index 3e49268e8..bd77bd224 100644 --- a/advanced/wallets/react-wallet-v2/package.json +++ b/advanced/wallets/react-wallet-v2/package.json @@ -26,23 +26,28 @@ "@multiversx/sdk-wallet": "4.2.0", "@near-wallet-selector/wallet-utils": "^8.0.0", "@nextui-org/react": "1.0.8-beta.5", + "@noble/curves": "^1.6.0", "@polkadot/keyring": "^10.1.2", "@polkadot/types": "^9.3.3", + "@reown/walletkit": "1.0.0", "@reown/appkit-experimental": "1.1.5", "@rhinestone/module-sdk": "0.1.25", "@solana/web3.js": "1.89.2", "@taquito/signer": "^15.1.0", "@taquito/taquito": "^15.1.0", "@types/semver": "^7.5.8", - "@reown/walletkit": "1.0.0", "@zerodev/ecdsa-validator": "5.3.0", "@zerodev/presets": "5.3.0", "@zerodev/sdk": "5.3.1", "@zerodev/session-key": "5.4.0", "@zerodev/weighted-ecdsa-validator": "5.3.0", + "bip32": "^4.0.0", + "bitcoinjs-lib": "^6.1.5", + "bitcoinjs-message": "^2.2.0", "borsh": "^1.0.0", "bs58": "6.0.0", "cosmos-wallet": "1.2.0", + "ecpair": "^2.1.0", "ethers": "5.7.2", "framer-motion": "6.5.1", "graphql": "^16.8.2", @@ -54,7 +59,8 @@ "react-dom": "17.0.2", "react-hot-toast": "^2.4.1", "react-qr-reader-es6": "2.2.1-2", - "solady": "^0.0.234", + "solana-wallet": "^1.0.2", + "tiny-secp256k1": "^2.2.3", "tronweb": "^4.4.0", "valtio": "1.13.2", "viem": "2.17.8", @@ -71,4 +77,4 @@ "prettier": "2.6.2", "typescript": "5.2.2" } -} \ No newline at end of file +} diff --git a/advanced/wallets/react-wallet-v2/public/chain-logos/btc-testnet.png b/advanced/wallets/react-wallet-v2/public/chain-logos/btc-testnet.png new file mode 100644 index 0000000000000000000000000000000000000000..b991e4b73ba3d396d64b7f8f942a67c3504528a1 GIT binary patch literal 184002 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

ONANbH^Tz_=xp<^*uoKSP!?0M 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

C9I-DdW?^jT_9TBm+H^#JWKJ1?Q)D)XMe{YK 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 literal 0 HcmV?d00001 diff --git a/advanced/wallets/react-wallet-v2/src/components/Modal.tsx b/advanced/wallets/react-wallet-v2/src/components/Modal.tsx index f8fba7876..1f81fc8a3 100644 --- a/advanced/wallets/react-wallet-v2/src/components/Modal.tsx +++ b/advanced/wallets/react-wallet-v2/src/components/Modal.tsx @@ -18,7 +18,10 @@ import { useSnapshot } from 'valtio' import { useCallback, useMemo } from 'react' import LoadingModal from '@/views/LoadingModal' import SessionAuthenticateModal from '@/views/SessionAuthenticateModal' +import SessionSignBip122Modal from '@/views/SessionSignBip122Modal' +import SessionSendTransactionBip122Modal from '@/views/SessionSendTransactionBip122Modal' import SessionGrantPermissionsModal from '@/views/SessionGrantPermissionsModal' +import SessionGetBip122AddressesModal from '@/views/SessionGetBip122AddressesModal' export default function Modal() { const { open, view } = useSnapshot(ModalStore.state) @@ -65,6 +68,12 @@ export default function Modal() { return case 'SessionAuthenticateModal': return + case 'SessionSignBip122Modal': + return + case 'SessionGetBip122AddressesModal': + return + case 'SessionSendTransactionBip122Modal': + return default: return null } diff --git a/advanced/wallets/react-wallet-v2/src/data/Bip122Data.ts b/advanced/wallets/react-wallet-v2/src/data/Bip122Data.ts new file mode 100644 index 000000000..e5d09f6d6 --- /dev/null +++ b/advanced/wallets/react-wallet-v2/src/data/Bip122Data.ts @@ -0,0 +1,60 @@ +/** + * Chains + */ +export const BIP122_NAMESPACE = 'bip122' + +export const BIP122_MAINNET_ID = '000000000019d6689c085ae165831e93' +export const BIP122_TESTNET_ID = '000000000933ea01ad0ee984209779ba' +export const BIP122_MAINNET_CAIP2 = `${BIP122_NAMESPACE}:${BIP122_MAINNET_ID}` +export const BIP122_TESTNET_CAIP2 = `${BIP122_NAMESPACE}:${BIP122_TESTNET_ID}` + +export type IBip122ChainId = typeof BIP122_MAINNET_CAIP2 | typeof BIP122_TESTNET_CAIP2 + +export const BITCOIN_MAINNET = { + [BIP122_MAINNET_CAIP2]: { + chainId: BIP122_MAINNET_ID, + name: 'BTC Mainnet', + logo: '/chain-logos/btc-testnet.png', + rgb: '107, 111, 147', + rpc: '', + coinType: '0', + caip2: BIP122_MAINNET_CAIP2 as IBip122ChainId, + namespace: BIP122_NAMESPACE + } +} +export const BITCOIN_TESTNET = { + [BIP122_TESTNET_CAIP2]: { + chainId: BIP122_TESTNET_ID, + name: 'BTC Testnet', + logo: '/chain-logos/btc-testnet.png', + rgb: '247, 147, 25', + rpc: '', + coinType: '1', + caip2: BIP122_TESTNET_CAIP2 as IBip122ChainId, + namespace: BIP122_NAMESPACE + } +} + +export const BIP122_CHAINS = { ...BITCOIN_MAINNET, ...BITCOIN_TESTNET } as Record< + IBip122ChainId, + typeof BITCOIN_MAINNET[typeof BIP122_MAINNET_CAIP2] & + typeof BITCOIN_TESTNET[typeof BIP122_TESTNET_CAIP2] +> + +/** + * Methods + */ +export const BIP122_SIGNING_METHODS = { + BIP122_SIGN_MESSAGE: 'signMessage', + BIP122_GET_ACCOUNT_ADDRESSES: 'getAccountAddresses', + BIP122_SEND_TRANSACTION: 'sendTransfer', + BIP122_SIGN_PSBT: 'signPsbt' +} + +/** + * Events + */ + +export const BIP122_EVENTS = { + BIP122_ADDRESSES_CHANGED: 'bip122_addressesChanged' +} diff --git a/advanced/wallets/react-wallet-v2/src/data/chainsUtil.ts b/advanced/wallets/react-wallet-v2/src/data/chainsUtil.ts index 6ebea5fd2..f002f3d8f 100644 --- a/advanced/wallets/react-wallet-v2/src/data/chainsUtil.ts +++ b/advanced/wallets/react-wallet-v2/src/data/chainsUtil.ts @@ -1,3 +1,4 @@ +import { BIP122_CHAINS } from './Bip122Data' import * as viemChains from 'viem/chains' import { COSMOS_MAINNET_CHAINS } from './COSMOSData' import { EIP155_CHAINS } from './EIP155Data' @@ -18,7 +19,8 @@ export const ALL_CHAINS = { ...POLKADOT_CHAINS, ...SOLANA_CHAINS, ...TEZOS_CHAINS, - ...TRON_CHAINS + ...TRON_CHAINS, + ...BIP122_CHAINS } export function getChainData(chainId?: string) { diff --git a/advanced/wallets/react-wallet-v2/src/hooks/useInitialization.ts b/advanced/wallets/react-wallet-v2/src/hooks/useInitialization.ts index f0f56ea3a..2599b7728 100644 --- a/advanced/wallets/react-wallet-v2/src/hooks/useInitialization.ts +++ b/advanced/wallets/react-wallet-v2/src/hooks/useInitialization.ts @@ -12,6 +12,7 @@ import { createOrRestoreKadenaWallet } from '@/utils/KadenaWalletUtil' import { useCallback, useEffect, useRef, useState } from 'react' import { useSnapshot } from 'valtio' import useSmartAccounts from './useSmartAccounts' +import { createOrRestoreBip122Wallet } from '@/utils/Bip122WalletUtil' export default function useInitialization() { const [initialized, setInitialized] = useState(false) @@ -31,6 +32,7 @@ export default function useInitialization() { const { tronAddresses } = await createOrRestoreTronWallet() const { tezosAddresses } = await createOrRestoreTezosWallet() const { kadenaAddresses } = await createOrRestoreKadenaWallet() + const { bip122Addresses } = await createOrRestoreBip122Wallet() await initializeSmartAccounts(eip155Wallets[eip155Addresses[0]].getPrivateKey()) SettingsStore.setEIP155Address(eip155Addresses[0]) @@ -42,6 +44,7 @@ export default function useInitialization() { SettingsStore.setTronAddress(tronAddresses[0]) SettingsStore.setTezosAddress(tezosAddresses[0]) SettingsStore.setKadenaAddress(kadenaAddresses[0]) + SettingsStore.setbip122Address(bip122Addresses[0]) await createWalletKit(relayerRegionURL) setInitialized(true) } catch (err: unknown) { diff --git a/advanced/wallets/react-wallet-v2/src/hooks/useWalletConnectEventsManager.ts b/advanced/wallets/react-wallet-v2/src/hooks/useWalletConnectEventsManager.ts index 4cf2d9665..c7b5821f6 100644 --- a/advanced/wallets/react-wallet-v2/src/hooks/useWalletConnectEventsManager.ts +++ b/advanced/wallets/react-wallet-v2/src/hooks/useWalletConnectEventsManager.ts @@ -18,6 +18,7 @@ import { formatJsonRpcError } from '@json-rpc-tools/utils' import { approveEIP5792Request } from '@/utils/EIP5792RequestHandlerUtils' import EIP155Lib from '@/lib/EIP155Lib' import { getWallet } from '@/utils/EIP155WalletUtil' +import { BIP122_SIGNING_METHODS } from '@/data/Bip122Data' import { EIP7715_METHOD } from '@/data/EIP7715Data' import { refreshSessionsList } from '@/pages/wc' @@ -140,6 +141,16 @@ export default function useWalletConnectEventsManager(initialized: boolean) { case KADENA_SIGNING_METHODS.KADENA_SIGN: case KADENA_SIGNING_METHODS.KADENA_QUICKSIGN: return ModalStore.open('SessionSignKadenaModal', { requestEvent, requestSession }) + case BIP122_SIGNING_METHODS.BIP122_SIGN_MESSAGE: + return ModalStore.open('SessionSignBip122Modal', { requestEvent, requestSession }) + case BIP122_SIGNING_METHODS.BIP122_GET_ACCOUNT_ADDRESSES: + return ModalStore.open('SessionGetBip122AddressesModal', { requestEvent, requestSession }) + case BIP122_SIGNING_METHODS.BIP122_SIGN_PSBT: + case BIP122_SIGNING_METHODS.BIP122_SEND_TRANSACTION: + return ModalStore.open('SessionSendTransactionBip122Modal', { + requestEvent, + requestSession + }) default: return ModalStore.open('SessionUnsuportedMethodModal', { requestEvent, requestSession }) } diff --git a/advanced/wallets/react-wallet-v2/src/lib/Bip122Lib.ts b/advanced/wallets/react-wallet-v2/src/lib/Bip122Lib.ts new file mode 100644 index 000000000..eed33445b --- /dev/null +++ b/advanced/wallets/react-wallet-v2/src/lib/Bip122Lib.ts @@ -0,0 +1,439 @@ +import ECPairFactory from 'ecpair' +import * as bitcoin from 'bitcoinjs-lib' +import * as ecc from 'tiny-secp256k1' +import * as bip39 from 'bip39' +import BIP32Factory, { BIP32Interface } from 'bip32' +import bitcoinMessage from 'bitcoinjs-message' +import { schnorr } from '@noble/secp256k1' +import { BIP122_CHAINS, BIP122_TESTNET_ID, IBip122ChainId } from '@/data/Bip122Data' +bitcoin.initEccLib(ecc) + +const ECPair = ECPairFactory(ecc) +const bip32 = BIP32Factory(ecc) +interface IInitArguments { + privateKey?: string +} + +interface IUTXO { + txid: string + vout: number + value: number + status: { + confirmed: boolean + block_height: number + block_hash: string + block_time: number + } +} + +interface ICreateTransaction { + network: bitcoin.Network + recipientAddress: string + amount: number + changeAddress: string + memo?: string + utxos: IUTXO[] + privateKeyWIF: string + feeRate: number +} + +interface IAddressData { + address: string + path: string + publicKey: string +} + +interface IPsbtInput { + address: string + index: number + sighashTypes: number[] +} + +interface ISignPsbt { + account: string + psbt: string + signInputs: IPsbtInput[] + broadcast: boolean + chainId: IBip122ChainId +} + +const validator = (pubkey: Buffer, msghash: Buffer, signature: Buffer): boolean => { + return ECPair.fromPublicKey(pubkey).verify(msghash, signature) +} + +/** + * Library + */ +export default class Bip122Lib { + private account: BIP32Interface + private mnemonic: string + private addresses = {} as Record> + private ordinals = {} as Record> + private keys = {} as Record< + IBip122ChainId, + Map + > + + constructor(key?: string) { + this.keys = Object.values(BIP122_CHAINS).reduce((acc, chain) => { + acc[chain.caip2] = new Map() + return acc + }, this.keys) + this.addresses = Object.values(BIP122_CHAINS).reduce((acc, chain) => { + acc[chain.caip2] = new Map() + return acc + }, this.addresses) + this.ordinals = Object.values(BIP122_CHAINS).reduce((acc, chain) => { + acc[chain.caip2] = new Map() + return acc + }, this.ordinals) + + this.mnemonic = key ? key : bip39.generateMnemonic() + const seed = bip39.mnemonicToSeedSync(this.mnemonic) + const root = bip32.fromSeed(seed) + this.account = bip32.fromBase58(root.toBase58()) + const addressIndex = (localStorage.getItem(`${seed}_index`) || 0) as number + this.loadAddresses(addressIndex) + } + + static async init({ privateKey }: IInitArguments) { + return new Bip122Lib(privateKey) + } + + public getAddress(chainId: IBip122ChainId) { + return Array.from(this.addresses[chainId].values())[0].address + } + + public getOrdinalsAddress(chainId: IBip122ChainId) { + return Array.from(this.ordinals[chainId].values())[0].address + } + + public getPrivateKey() { + return this.mnemonic + } + + public getAddresses(chainId: IBip122ChainId, intentions?: string[]) { + if (intentions && intentions[0] === 'ordinal') { + return this.ordinals[chainId] + } + return this.addresses[chainId] + } + + public async signMessage({ + message, + address, + protocol, + chainId + }: { + message: string + address: string + protocol?: string + chainId: IBip122ChainId + }) { + if (protocol && protocol !== 'ecdsa') { + throw new Error(`Supported signing protols: ecdsa, received: ${protocol}`) + } + const addressData = this.getAddressData(address, chainId) + if (!addressData) { + throw new Error(`Unkown address: ${address}`) + } + const keyData = this.keys[chainId].get(address)! + var keyPair = ECPair.fromWIF(keyData.wif) + var privateKey = keyPair.privateKey! + + let signature + if (this.isOrdinal(address, chainId)) { + const messageHash = bitcoin.crypto.sha256(Buffer.from(message)) + + const sig = await schnorr.sign(messageHash, privateKey) + signature = Buffer.from(sig) + } else { + signature = bitcoinMessage.sign(message, privateKey, keyPair.compressed, { + segwitType: 'p2wpkh' + }) + } + + return { + signature: signature.toString('hex').replace('0x', ''), + address + } + } + + public async sendTransfer(params: { + account: string + recipientAddress: string + amount: string + changeAddress?: string + memo?: string + chainId: IBip122ChainId + }) { + const { account, recipientAddress, amount, changeAddress, memo, chainId } = params + const satoshis = parseInt(amount) + + const addressData = this.getAddressData(account, chainId) + if (!addressData) { + throw new Error(`Unkown address: ${account}`) + } + + if (satoshis < 0) { + throw new Error(`Invalid amount: ${amount}`) + } + + const utxos = (await this.getUTXOs(account, chainId)) as IUTXO[] + if (!utxos || utxos.length === 0) { + throw new Error(`No UTXOs found for address: ${account}`) + } + + let utxosValue = 0 + const utxosToSpend: IUTXO[] = [] + utxos.forEach(utxo => { + utxosValue += utxo.value + utxosToSpend.push(utxo) + if (utxosValue >= satoshis) { + return + } + }) + + const keyData = this.keys[chainId].get(account)! + const transaction = await this.createTransaction({ + network: keyData.network, + recipientAddress, + amount: satoshis, + changeAddress: changeAddress || account, + utxos: utxosToSpend, + privateKeyWIF: keyData.wif, + memo, + feeRate: await this.getFeeRate() + }) + return await this.broadcastTransaction(transaction, chainId) + } + + async getUTXOs(address: string, chainId: IBip122ChainId): Promise { + const isTestnet = this.isTestnet(chainId) + // make chain dynamic + return await ( + await fetch(`https://mempool.space${isTestnet ? '/testnet' : ''}/api/address/${address}/utxo`) + ).json() + } + + async broadcastTransaction(transaction: string, chainId: IBip122ChainId) { + const isTestnet = this.isTestnet(chainId) + const result = await fetch(`https://mempool.space${isTestnet ? '/testnet' : ''}/api/tx`, { + method: 'POST', + body: transaction + }) + + if (result.ok) { + return await result.text() + } + throw new Error('Error broadcasting transaction: ' + (await result.text())) + } + + getAvailableBalance(utxos: IUTXO[]) { + return utxos.reduce((acc, { value }) => acc + value, 0) + } + + private async getFeeRate() { + const defaultFeeRate = 2 + try { + const response = await fetch('https://mempool.space/api/v1/fees/recommended') + if (response.ok) { + const data = await response.json() + return parseInt(data?.economyFee ?? defaultFeeRate) + } + } catch (e) { + console.error('Error fetching fee rate', e) + } + return defaultFeeRate + } + + private generateAddress({ + index, + coinType, + chainId, + change = false, + taproot = false + }: { + index: number + coinType: string + chainId: IBip122ChainId + change?: boolean + taproot?: boolean + }) { + const network = this.getNetwork(coinType) + const path = `m/84'/${coinType}'/0'/${change ? 1 : 0}/${index}` + const child = this.account.derivePath(path) + let address + if (taproot) { + address = bitcoin.payments.p2tr({ + pubkey: child.publicKey.slice(1), + network + }).address! + } else { + address = bitcoin.payments.p2wpkh({ + pubkey: child.publicKey, + network + }).address! + } + const wif = child.toWIF() + this.keys[chainId].set(address, { wif, network }) + return { address, path, publicKey: child.publicKey.toString('hex') } + } + + private loadAddresses(startIndex = 0) { + console.log('Loading addresses...') + console.log('Keys:', this.keys) + console.log('Addresses:', this.addresses) + console.log('Ordinals:', this.ordinals) + Object.keys(this.keys).forEach(chainId => { + const data = BIP122_CHAINS[chainId as IBip122ChainId] + const addressesToLoad = startIndex + 20 + + for (let i = startIndex; i < addressesToLoad; i++) { + const addressParams = { + index: i, + chainId: data.caip2, + coinType: data.coinType + } + // payment addresses + const addressData = this.generateAddress(addressParams) + this.addresses[data.caip2].set(addressData.address, addressData) + // ordinals + const taprootAddress = this.generateAddress({ + ...addressParams, + taproot: true + }) + this.ordinals[data.caip2].set(taprootAddress.address, taprootAddress) + } + console.log('Loaded addresses:', this.addresses, this.ordinals) + }) + } + + private getNetwork(coinType: string) { + if (coinType === '0') { + return bitcoin.networks.bitcoin + } else if (coinType === '1') { + return bitcoin.networks.testnet + } + throw new Error(`Unsupported coin type: ${coinType}`) + } + + private async createTransaction({ + network, + recipientAddress, + amount, + changeAddress, + memo, + utxos, + privateKeyWIF, + feeRate + }: ICreateTransaction) { + const psbt = new bitcoin.Psbt({ network }) + const keyPair = ECPair.fromWIF(privateKeyWIF) + const payment = bitcoin.payments.p2wpkh({ + pubkey: keyPair.publicKey, + network: bitcoin.networks.testnet + }) + + utxos.forEach(utxo => { + psbt.addInput({ + hash: utxo.txid, + index: utxo.vout, + witnessUtxo: { + script: Buffer.from(payment.output?.toString('hex')!, 'hex'), + value: utxo.value + } + }) + }) + + psbt.addOutput({ + address: recipientAddress, + value: amount + }) + const change = this.calculateChange(utxos, amount, feeRate) + + if (change > 0) { + psbt.addOutput({ + address: changeAddress, + value: change + }) + } + + if (memo) { + const data = Buffer.from(memo, 'utf8') + const embed = bitcoin.payments.embed({ data: [data] }) + psbt.addOutput({ + script: embed.output!, + value: 0 + }) + } + + psbt.signAllInputs(keyPair) + + psbt.validateSignaturesOfInput(0, validator) + + psbt.finalizeAllInputs() + + const tx = psbt.extractTransaction() + + return tx.toHex() + } + + public async signPsbt({ account, psbt, signInputs, broadcast = false, chainId }: ISignPsbt) { + const keyData = this.keys[chainId].get(account)! + const keyPair = ECPair.fromWIF(keyData.wif) + const transaction = bitcoin.Psbt.fromBase64(psbt, { network: keyData.network }) + signInputs.forEach(({ address, index, sighashTypes }) => { + let keyPairToSignWith = keyPair + if (address !== account) { + const keyData = this.keys[chainId].get(address)! + keyPairToSignWith = ECPair.fromWIF(keyData.wif) + } + transaction.signInput(index, keyPairToSignWith, sighashTypes) + }) + transaction.validateSignaturesOfInput(0, validator) + transaction.finalizeAllInputs() + + if (!broadcast) { + return { + psbt: transaction.toBase64() + } + } + + const tx = transaction.extractTransaction() + const txId = await this.broadcastTransaction(tx.toHex(), chainId) + return { + psbt: transaction.toBase64(), + txid: txId + } + } + + // Helper function to calculate change + private calculateChange(utxos: IUTXO[], amount: number, feeRate: number): number { + const inputSum = utxos.reduce((sum, utxo) => sum + utxo.value, 0) + /** + * 10 bytes: This is an estimated fixed overhead for the transaction. + * 148 bytes: This is the average size of each input (UTXO). + * 34 bytes: This is the size of each output. + * The multiplication by 2 indicates that there are usually two outputs in a typical transaction (one for the recipient and one for change) + */ + const estimatedSize = 10 + 148 * utxos.length + 34 * 2 + const fee = estimatedSize * feeRate + const change = inputSum - amount - fee + return change + } + + private getAddressData(address: string, chainId: IBip122ChainId) { + const addressData = this.addresses[chainId].get(address) + if (addressData) return addressData + return this.ordinals[chainId].get(address) + } + + private isOrdinal(address: string, chainId: IBip122ChainId) { + return this.ordinals[chainId].has(address) + } + + private isTestnet(chainId: IBip122ChainId) { + return chainId.includes(BIP122_TESTNET_ID) + } +} diff --git a/advanced/wallets/react-wallet-v2/src/pages/index.tsx b/advanced/wallets/react-wallet-v2/src/pages/index.tsx index 48346431e..5442640fa 100644 --- a/advanced/wallets/react-wallet-v2/src/pages/index.tsx +++ b/advanced/wallets/react-wallet-v2/src/pages/index.tsx @@ -15,6 +15,7 @@ import { Text } from '@nextui-org/react' import { Fragment } from 'react' import { useSnapshot } from 'valtio' import useSmartAccounts from '@/hooks/useSmartAccounts' +import { BIP122_CHAINS } from '@/data/Bip122Data' import { useRouter } from 'next/router' import ChainAbstractionBalanceCard from '@/components/ChainAbstractionBalanceCard' @@ -30,6 +31,7 @@ export default function HomePage() { tronAddress, tezosAddress, kadenaAddress, + bip122Address, smartAccountEnabled, chainAbstractionEnabled } = useSnapshot(SettingsStore.state) @@ -132,6 +134,17 @@ export default function HomePage() { data-testid={'chain-card-' + caip10.toString()} /> ))} + {Object.entries(BIP122_CHAINS).map(([caip10, { name, logo, rgb }]) => ( + + ))} {testNets ? ( diff --git a/advanced/wallets/react-wallet-v2/src/store/ModalStore.ts b/advanced/wallets/react-wallet-v2/src/store/ModalStore.ts index 909c34a35..3b0b6bed6 100644 --- a/advanced/wallets/react-wallet-v2/src/store/ModalStore.ts +++ b/advanced/wallets/react-wallet-v2/src/store/ModalStore.ts @@ -33,6 +33,9 @@ interface State { | 'SessionSignKadenaModal' | 'SessionAuthenticateModal' | 'LoadingModal' + | 'SessionSignBip122Modal' + | 'SessionGetBip122AddressesModal' + | 'SessionSendTransactionBip122Modal' data?: ModalData } diff --git a/advanced/wallets/react-wallet-v2/src/store/SettingsStore.ts b/advanced/wallets/react-wallet-v2/src/store/SettingsStore.ts index 6d70cbb06..706cc9fe8 100644 --- a/advanced/wallets/react-wallet-v2/src/store/SettingsStore.ts +++ b/advanced/wallets/react-wallet-v2/src/store/SettingsStore.ts @@ -31,6 +31,7 @@ interface State { tronAddress: string tezosAddress: string kadenaAddress: string + bip122Address: string kernelSmartAccountAddress: string safeSmartAccountAddress: string biconomySmartAccountAddress: string @@ -66,6 +67,7 @@ const state = proxy({ tronAddress: '', tezosAddress: '', kadenaAddress: '', + bip122Address: '', kernelSmartAccountAddress: '', safeSmartAccountAddress: '', biconomySmartAccountAddress: '', @@ -127,6 +129,9 @@ const SettingsStore = { setKadenaAddress(kadenaAddress: string) { state.kadenaAddress = kadenaAddress }, + setbip122Address(bip122Address: string) { + state.bip122Address = bip122Address + }, setRelayerRegionURL(relayerRegionURL: string) { state.relayerRegionURL = relayerRegionURL }, diff --git a/advanced/wallets/react-wallet-v2/src/utils/Bip122RequestHandlerUtil.ts b/advanced/wallets/react-wallet-v2/src/utils/Bip122RequestHandlerUtil.ts new file mode 100644 index 000000000..1323b35dd --- /dev/null +++ b/advanced/wallets/react-wallet-v2/src/utils/Bip122RequestHandlerUtil.ts @@ -0,0 +1,92 @@ +import { KADENA_SIGNING_METHODS } from '@/data/KadenaData' +import { formatJsonRpcError, formatJsonRpcResult } from '@json-rpc-tools/utils' +import { SignClientTypes } from '@walletconnect/types' +import { getSdkError } from '@walletconnect/utils' +import { getWalletAddressFromParams } from './HelperUtil' +import { BIP122_SIGNING_METHODS, IBip122ChainId } from '@/data/Bip122Data' +import { bip122Addresses, bip122Wallet } from './Bip122WalletUtil' + +export async function approveBip122Request( + requestEvent: SignClientTypes.EventArguments['session_request'] +) { + const { params, id } = requestEvent + const { request } = params + const chainId = params.chainId as IBip122ChainId + const account = request.params.account + const wallet = bip122Wallet + console.log('wallet:', wallet, bip122Wallet) + console.log('account:', account) + console.log('request:', request.method) + switch (request.method) { + case BIP122_SIGNING_METHODS.BIP122_SIGN_MESSAGE: + const message = request.params.message + const address = request.params.address + const protocol = request.params.protocol + console.log( + 'signing message:', + message, + 'with address:', + address || account, + 'chainId:', + params + ) + const signature = await wallet.signMessage({ + message, + address: address || account, + protocol, + chainId + }) + return formatJsonRpcResult(id, signature) + case BIP122_SIGNING_METHODS.BIP122_SEND_TRANSACTION: + const transactionParams = request.params + console.log('signing transaction:', transactionParams, 'with account:', account) + const txid = await wallet.sendTransfer({ + account: transactionParams.account, + recipientAddress: transactionParams.recipientAddress, + amount: transactionParams.amount, + changeAddress: transactionParams.changeAddress, + memo: transactionParams.memo, + chainId + }) + console.log('signed transaction:', txid) + return formatJsonRpcResult(id, { txid }) + case BIP122_SIGNING_METHODS.BIP122_GET_ACCOUNT_ADDRESSES: + console.log('getting addresses for account:', account) + const addresses = wallet.getAddresses(chainId) + return formatJsonRpcResult(id, Array.from(addresses.values())) + case BIP122_SIGNING_METHODS.BIP122_SIGN_PSBT: + const psbt = request.params.psbt + const signInputs = request.params.signInputs + const broadcast = request.params.broadcast + console.log( + 'signing psbt:', + psbt, + 'with account:', + account, + 'inputs:', + signInputs, + 'broadcast:', + broadcast + ) + const result = await wallet.signPsbt({ + account, + psbt, + signInputs, + broadcast, + chainId + }) + console.log('signed psbt:', result) + return formatJsonRpcResult(id, result) + default: + throw new Error(getSdkError('UNSUPPORTED_METHODS').message) + } +} + +export function rejectBip122Request( + request: SignClientTypes.EventArguments['session_request'], + message?: string +) { + const { id } = request + + return formatJsonRpcError(id, message || getSdkError('USER_REJECTED_METHODS').message) +} diff --git a/advanced/wallets/react-wallet-v2/src/utils/Bip122WalletUtil.ts b/advanced/wallets/react-wallet-v2/src/utils/Bip122WalletUtil.ts new file mode 100644 index 000000000..ee1121589 --- /dev/null +++ b/advanced/wallets/react-wallet-v2/src/utils/Bip122WalletUtil.ts @@ -0,0 +1,41 @@ +import { BIP122_MAINNET_CAIP2, BIP122_TESTNET_CAIP2 } from '@/data/Bip122Data' +import BitcoinLib from '@/lib/Bip122Lib' + +export let wallet1: BitcoinLib +export let wallet2: BitcoinLib +export let bip122Wallet: BitcoinLib +export let bip122Addresses: string[] + +/** + * Utilities + */ +export async function createOrRestoreBip122Wallet() { + const privateKey1 = localStorage.getItem('BITCOIN_PRIVATE_KEY_1') + + if (privateKey1) { + wallet1 = await BitcoinLib.init({ privateKey: privateKey1 }) + // wallet2 = await BitcoinLib.init({ privateKey: privateKey2 }) + } else { + wallet1 = await BitcoinLib.init({}) + // Don't store private keys in local storage in a production project! + localStorage.setItem('BITCOIN_PRIVATE_KEY_1', wallet1.getPrivateKey()) + console.log('BITCOIN_PRIVATE_KEY_1', wallet1.getPrivateKey()) + } + + const mainnetAddress = wallet1.getAddress(BIP122_MAINNET_CAIP2) + + console.log('address1', { mainnetAddress, privateKey1 }, mainnetAddress) + + bip122Wallet = wallet1 + bip122Addresses = [ + `${BIP122_MAINNET_CAIP2}:${wallet1.getAddress(BIP122_MAINNET_CAIP2)}`, + `${BIP122_MAINNET_CAIP2}:${wallet1.getOrdinalsAddress(BIP122_MAINNET_CAIP2)}`, + `${BIP122_TESTNET_CAIP2}:${wallet1.getAddress(BIP122_TESTNET_CAIP2)}`, + `${BIP122_TESTNET_CAIP2}:${wallet1.getOrdinalsAddress(BIP122_TESTNET_CAIP2)}` + ] + + return { + bip122Wallet, + bip122Addresses + } +} diff --git a/advanced/wallets/react-wallet-v2/src/utils/WalletConnectUtil.ts b/advanced/wallets/react-wallet-v2/src/utils/WalletConnectUtil.ts index 2f053cb38..539866e5e 100644 --- a/advanced/wallets/react-wallet-v2/src/utils/WalletConnectUtil.ts +++ b/advanced/wallets/react-wallet-v2/src/utils/WalletConnectUtil.ts @@ -6,7 +6,7 @@ export async function createWalletKit(relayerRegionURL: string) { const core = new Core({ projectId: process.env.NEXT_PUBLIC_PROJECT_ID, relayUrl: relayerRegionURL ?? process.env.NEXT_PUBLIC_RELAY_URL, - logger: 'trace' + logger: 'error' }) walletkit = await WalletKit.init({ core, @@ -15,6 +15,9 @@ export async function createWalletKit(relayerRegionURL: string) { description: 'React Wallet for WalletConnect', url: 'https://walletconnect.com/', icons: ['https://avatars.githubusercontent.com/u/37784886'] + }, + signConfig: { + disableRequestQueue: true } }) diff --git a/advanced/wallets/react-wallet-v2/src/views/SessionGetBip122AddressesModal.tsx b/advanced/wallets/react-wallet-v2/src/views/SessionGetBip122AddressesModal.tsx new file mode 100644 index 000000000..13cf14958 --- /dev/null +++ b/advanced/wallets/react-wallet-v2/src/views/SessionGetBip122AddressesModal.tsx @@ -0,0 +1,92 @@ +/* eslint-disable react-hooks/rules-of-hooks */ +import { Col, Divider, Row, Text } from '@nextui-org/react' + +import RequestDataCard from '@/components/RequestDataCard' +import ModalStore from '@/store/ModalStore' +import { styledToast } from '@/utils/HelperUtil' +import { walletkit } from '@/utils/WalletConnectUtil' +import RequestModal from '../components/RequestModal' +import { useCallback, useState } from 'react' +import { approveBip122Request, rejectBip122Request } from '@/utils/Bip122RequestHandlerUtil' +import { bip122Wallet } from '@/utils/Bip122WalletUtil' + +export default function SessionGetBip122AddressesModal() { + // Get request and wallet data from store + const requestEvent = ModalStore.state.data?.requestEvent + const requestSession = ModalStore.state.data?.requestSession + const [isLoadingApprove, setIsLoadingApprove] = useState(false) + const [isLoadingReject, setIsLoadingReject] = useState(false) + + // Ensure request and wallet are defined + if (!requestEvent || !requestSession) { + return Missing request data + } + + const { topic, params } = requestEvent + const { request, chainId } = params + const account = request.params.account + const intentions = request.params.intentions + const addresses = bip122Wallet.getAddresses(intentions) + // Handle approve action (logic varies based on request method) + const onApprove = useCallback(async () => { + if (requestEvent) { + const response = await approveBip122Request(requestEvent) + try { + await walletkit.respondSessionRequest({ + topic, + response + }) + } catch (e) { + setIsLoadingApprove(false) + styledToast((e as Error).message, 'error') + return + } + setIsLoadingApprove(false) + ModalStore.close() + } + }, [requestEvent, topic]) + + // Handle reject action + const onReject = useCallback(async () => { + if (requestEvent) { + setIsLoadingReject(true) + const response = rejectBip122Request(requestEvent) + try { + await walletkit.respondSessionRequest({ + topic, + response + }) + } catch (e) { + setIsLoadingReject(false) + styledToast((e as Error).message, 'error') + return + } + setIsLoadingReject(false) + ModalStore.close() + } + }, [requestEvent, topic]) + + return ( + + {account && ( + <> + + + Addresses for account + {account} + + + + + )} + + + ) +} diff --git a/advanced/wallets/react-wallet-v2/src/views/SessionProposalModal.tsx b/advanced/wallets/react-wallet-v2/src/views/SessionProposalModal.tsx index 0686dda94..837b5e98d 100644 --- a/advanced/wallets/react-wallet-v2/src/views/SessionProposalModal.tsx +++ b/advanced/wallets/react-wallet-v2/src/views/SessionProposalModal.tsx @@ -36,6 +36,13 @@ import usePriorityAccounts from '@/hooks/usePriorityAccounts' import useSmartAccounts from '@/hooks/useSmartAccounts' import { EIP5792_METHODS } from '@/data/EIP5792Data' import { getWalletCapabilities } from '@/utils/EIP5792WalletUtil' +import { bip122Addresses, bip122Wallet } from '@/utils/Bip122WalletUtil' +import { + BIP122_CHAINS, + BIP122_EVENTS, + BIP122_SIGNING_METHODS, + IBip122ChainId +} from '@/data/Bip122Data' import { EIP7715_METHOD } from '@/data/EIP7715Data' import { useRouter } from 'next/router' @@ -105,6 +112,11 @@ export default function SessionProposalModal() { const tronChains = Object.keys(TRON_CHAINS) const tronMethods = Object.values(TRON_SIGNING_METHODS) + // bip122 + const bip122Chains = Object.keys(BIP122_CHAINS) + const bip122Methods = Object.values(BIP122_SIGNING_METHODS) + const bip122Events = Object.values(BIP122_EVENTS) + return { eip155: { chains: eip155Chains, @@ -181,9 +193,15 @@ export default function SessionProposalModal() { accounts: tronChains .map(chain => tronAddresses.map(address => `${chain}:${address}`)) .flat() + }, + bip122: { + chains: bip122Chains, + methods: bip122Methods, + events: bip122Events, + accounts: bip122Addresses } } - }, []) + }, [addressesToApprove]) console.log('supportedNamespaces', supportedNamespaces, eip155Addresses) const requestedChains = useMemo(() => { @@ -238,6 +256,7 @@ export default function SessionProposalModal() { }, [proposal, supportedChains]) console.log('notSupportedChains', { notSupportedChains, supportedChains }) const getAddress = useCallback((namespace?: string) => { + console.log('getAddress', namespace) if (!namespace) return 'N/A' switch (namespace) { case 'eip155': @@ -258,6 +277,8 @@ export default function SessionProposalModal() { return tezosAddresses[0] case 'tron': return tronAddresses[0] + case 'bip122': + return bip122Addresses[0] } }, []) @@ -268,7 +289,9 @@ export default function SessionProposalModal() { proposal: proposal.params, supportedNamespaces }) - } catch (e) {} + } catch (e) { + console.error('Error building approved namespaces', e) + } }, [proposal.params, supportedNamespaces]) const reorderedEip155Accounts = usePriorityAccounts({ namespaces }) @@ -276,6 +299,7 @@ export default function SessionProposalModal() { // Hanlde approve action, construct session namespace const onApprove = useCallback(async () => { + console.log('onApprove', { proposal, namespaces }) try { if (proposal && namespaces) { setIsLoadingApprove(true) @@ -285,8 +309,19 @@ export default function SessionProposalModal() { } //get capabilities for all reorderedEip155Accounts in wallet const capabilities = getWalletCapabilities(reorderedEip155Accounts) - const sessionProperties = { capabilities: JSON.stringify(capabilities) } - + let sessionProperties = { + capabilities: JSON.stringify(capabilities) + } as any + if (namespaces.bip122) { + const bip122Chain = namespaces.bip122.chains?.[0]! + sessionProperties.bip122_getAccountAddresses = JSON.stringify({ + payment: Array.from(bip122Wallet.getAddresses(bip122Chain as IBip122ChainId).values()), + ordinal: Array.from( + bip122Wallet.getAddresses(bip122Chain as IBip122ChainId, ['ordinal']).values() + ) + }) + } + console.log('sessionProperties', sessionProperties) await walletkit.approveSession({ id: proposal.id, namespaces, @@ -323,6 +358,7 @@ export default function SessionProposalModal() { ModalStore.close() }, [proposal]) console.log('notSupportedChains', notSupportedChains) + console.log('supportedChains', supportedChains) return ( {(supportedChains.length > 0 && supportedChains.map((chain, i) => { + console.log('chain', chain) if (!chain) { return <> } diff --git a/advanced/wallets/react-wallet-v2/src/views/SessionSendTransactionBip122Modal.tsx b/advanced/wallets/react-wallet-v2/src/views/SessionSendTransactionBip122Modal.tsx new file mode 100644 index 000000000..19d41b83f --- /dev/null +++ b/advanced/wallets/react-wallet-v2/src/views/SessionSendTransactionBip122Modal.tsx @@ -0,0 +1,88 @@ +import { useCallback, useState } from 'react' +import { Divider, Text } from '@nextui-org/react' + +import RequestDataCard from '@/components/RequestDataCard' +import RequesDetailsCard from '@/components/RequestDetalilsCard' +import RequestMethodCard from '@/components/RequestMethodCard' +import ModalStore from '@/store/ModalStore' +import { styledToast } from '@/utils/HelperUtil' +import { walletkit } from '@/utils/WalletConnectUtil' +import RequestModal from '../components/RequestModal' +import { approveBip122Request, rejectBip122Request } from '@/utils/Bip122RequestHandlerUtil' +import { JsonRpcResponse } from '@json-rpc-tools/utils' + +export default function SessionSendTransactionBip122Modal() { + const [isLoadingApprove, setIsLoadingApprove] = useState(false) + const [isLoadingReject, setIsLoadingReject] = useState(false) + + // Get request and wallet data from store + const requestEvent = ModalStore.state.data?.requestEvent + const requestSession = ModalStore.state.data?.requestSession + + const topic = requestEvent?.topic + const params = requestEvent?.params + const chainId = params?.chainId + const request = params?.request + const transaction = request?.params + + // Handle reject action + const onReject = useCallback( + async (rejection?: JsonRpcResponse) => { + if (requestEvent && topic) { + setIsLoadingReject(true) + const response = rejection || rejectBip122Request(requestEvent) + try { + await walletkit.respondSessionRequest({ + topic, + response + }) + } catch (e) { + setIsLoadingReject(false) + styledToast((e as Error).message, 'error') + return + } + setIsLoadingReject(false) + ModalStore.close() + } + }, + [requestEvent, topic] + ) + // Handle approve action + const onApprove = useCallback(async () => { + if (requestEvent && topic) { + setIsLoadingApprove(true) + try { + const response = await approveBip122Request(requestEvent) + await walletkit.respondSessionRequest({ + topic, + response + }) + } catch (e) { + setIsLoadingApprove(false) + styledToast((e as Error).message, 'error') + onReject(rejectBip122Request(requestEvent, (e as Error).message)) + } + setIsLoadingApprove(false) + ModalStore.close() + } + }, [onReject, requestEvent, topic]) + + return request && requestSession ? ( + + + + + + + + ) : ( + Request not found + ) +} diff --git a/advanced/wallets/react-wallet-v2/src/views/SessionSignBip122Modal.tsx b/advanced/wallets/react-wallet-v2/src/views/SessionSignBip122Modal.tsx new file mode 100644 index 000000000..9cb899b46 --- /dev/null +++ b/advanced/wallets/react-wallet-v2/src/views/SessionSignBip122Modal.tsx @@ -0,0 +1,98 @@ +/* eslint-disable react-hooks/rules-of-hooks */ +import { Col, Divider, Row, Text } from '@nextui-org/react' + +import RequestDataCard from '@/components/RequestDataCard' +import RequestDetailsCard from '@/components/RequestDetalilsCard' +import ModalStore from '@/store/ModalStore' +import { styledToast } from '@/utils/HelperUtil' +import { walletkit } from '@/utils/WalletConnectUtil' +import RequestModal from '../components/RequestModal' +import { useCallback, useState } from 'react' +import { approveBip122Request, rejectBip122Request } from '@/utils/Bip122RequestHandlerUtil' + +export default function SessionSignBip122Modal() { + // Get request and wallet data from store + const requestEvent = ModalStore.state.data?.requestEvent + const requestSession = ModalStore.state.data?.requestSession + const [isLoadingApprove, setIsLoadingApprove] = useState(false) + const [isLoadingReject, setIsLoadingReject] = useState(false) + + // Ensure request and wallet are defined + if (!requestEvent || !requestSession) { + return Missing request data + } + + const { topic, params } = requestEvent + const { request, chainId } = params + const message = request.params.message + const account = request.params.account + const address = request.params.address + // Handle approve action (logic varies based on request method) + const onApprove = useCallback(async () => { + if (requestEvent) { + const response = await approveBip122Request(requestEvent) + try { + await walletkit.respondSessionRequest({ + topic, + response + }) + } catch (e) { + setIsLoadingApprove(false) + styledToast((e as Error).message, 'error') + return + } + setIsLoadingApprove(false) + ModalStore.close() + } + }, [requestEvent, topic]) + + // Handle reject action + const onReject = useCallback(async () => { + if (requestEvent) { + setIsLoadingReject(true) + const response = rejectBip122Request(requestEvent) + try { + await walletkit.respondSessionRequest({ + topic, + response + }) + } catch (e) { + setIsLoadingReject(false) + styledToast((e as Error).message, 'error') + return + } + setIsLoadingReject(false) + ModalStore.close() + } + }, [requestEvent, topic]) + + return ( + + + {message && ( + <> + + + Message + {message} + + + + + + To sign with address + {address || account} + + + + )} + + ) +} diff --git a/advanced/wallets/react-wallet-v2/yarn.lock b/advanced/wallets/react-wallet-v2/yarn.lock index a8951305c..65c44d161 100644 --- a/advanced/wallets/react-wallet-v2/yarn.lock +++ b/advanced/wallets/react-wallet-v2/yarn.lock @@ -87,6 +87,13 @@ dependencies: regenerator-runtime "^0.14.0" +"@babel/runtime@^7.25.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1" + integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/runtime@^7.6.2": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.7.tgz#f4f0d5530e8dbdf59b3451b9b3e594b6ba082e12" @@ -1266,7 +1273,7 @@ dependencies: "@noble/hashes" "1.4.0" -"@noble/curves@1.6.0", "@noble/curves@~1.6.0": +"@noble/curves@1.6.0", "@noble/curves@^1.4.2", "@noble/curves@^1.6.0", "@noble/curves@~1.6.0": version "1.6.0" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.6.0.tgz#be5296ebcd5a1730fccea4786d420f87abfeb40b" integrity sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ== @@ -2255,6 +2262,11 @@ resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938" integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA== +"@scure/base@^1.1.1", "@scure/base@~1.1.7", "@scure/base@~1.1.8": + version "1.1.9" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.9.tgz#e5e142fbbfe251091f9c5f1dd4c834ac04c3dbd1" + integrity sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg== + "@scure/base@~1.1.4": version "1.1.5" resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.5.tgz#1d85d17269fe97694b9c592552dd9e5e33552157" @@ -2265,11 +2277,6 @@ resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.7.tgz#fe973311a5c6267846aa131bc72e96c5d40d2b30" integrity sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g== -"@scure/base@~1.1.7", "@scure/base@~1.1.8": - version "1.1.9" - resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.9.tgz#e5e142fbbfe251091f9c5f1dd4c834ac04c3dbd1" - integrity sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg== - "@scure/bip32@1.3.3": version "1.3.3" resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.3.tgz#a9624991dc8767087c57999a5d79488f48eae6c8" @@ -2349,6 +2356,27 @@ rpc-websockets "^7.5.1" superstruct "^0.14.2" +"@solana/web3.js@^1.66.2": + version "1.95.4" + resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.95.4.tgz#771603f60d75cf7556ad867e1fd2efae32f9ad09" + integrity sha512-sdewnNEA42ZSMxqkzdwEWi6fDgzwtJHaQa5ndUGEJYtoOnM6X5cvPmjoTUp7/k7bRrVAxfBgDnvQQHD6yhlLYw== + dependencies: + "@babel/runtime" "^7.25.0" + "@noble/curves" "^1.4.2" + "@noble/hashes" "^1.4.0" + "@solana/buffer-layout" "^4.0.1" + agentkeepalive "^4.5.0" + bigint-buffer "^1.1.5" + bn.js "^5.2.1" + borsh "^0.7.0" + bs58 "^4.0.1" + buffer "6.0.3" + fast-stable-stringify "^1.0.0" + jayson "^4.1.1" + node-fetch "^2.7.0" + rpc-websockets "^9.0.2" + superstruct "^2.0.2" + "@stablelib/aead@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@stablelib/aead/-/aead-1.0.1.tgz#c4b1106df9c23d1b867eb9b276d8f42d5fc4c0c3" @@ -2548,6 +2576,13 @@ dependencies: tslib "^2.4.0" +"@swc/helpers@^0.5.11": + version "0.5.13" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.13.tgz#33e63ff3cd0cade557672bd7888a39ce7d115a8c" + integrity sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w== + dependencies: + tslib "^2.4.0" + "@taquito/http-utils@^15.1.0": version "15.1.0" resolved "https://registry.yarnpkg.com/@taquito/http-utils/-/http-utils-15.1.0.tgz#66f3ce220c483e33d6b31bca6e0c76b5b895ed9b" @@ -2773,6 +2808,11 @@ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.10.tgz#04ffa7f406ab628f7f7e97ca23e290cd8ab15efc" integrity sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA== +"@types/uuid@^8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" + integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== + "@types/ws@^7.4.4": version "7.4.7" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" @@ -2780,6 +2820,13 @@ dependencies: "@types/node" "*" +"@types/ws@^8.2.2": + version "8.5.12" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.12.tgz#619475fe98f35ccca2a2f6c137702d85ec247b7e" + integrity sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ== + dependencies: + "@types/node" "*" + "@typescript-eslint/parser@^5.21.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" @@ -3416,6 +3463,11 @@ base-x@^3.0.2: dependencies: safe-buffer "^5.0.1" +base-x@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-4.0.0.tgz#d0e3b7753450c73f8ad2389b5c018a4af7b2224a" + integrity sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw== + base-x@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/base-x/-/base-x-5.0.0.tgz#6d835ceae379130e1a4cb846a70ac4746f28ea9b" @@ -3426,7 +3478,7 @@ base64-js@^1.3.0, base64-js@^1.3.1: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -bech32@1.1.4, bech32@^1.1.4: +bech32@1.1.4, bech32@^1.1.3, bech32@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== @@ -3458,13 +3510,28 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -bindings@^1.3.0: +bindings@^1.3.0, bindings@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== dependencies: file-uri-to-path "1.0.0" +bip174@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bip174/-/bip174-2.1.1.tgz#ef3e968cf76de234a546962bcf572cc150982f9f" + integrity sha512-mdFV5+/v0XyNYXjBS6CQPLo9ekCx4gtKZFnJm5PMto7Fs9hTTDpkkzOB7/FtluRI6JbUUAu+snTYfJRgHLZbZQ== + +bip32@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/bip32/-/bip32-4.0.0.tgz#7fac3c05072188d2d355a4d6596b37188f06aa2f" + integrity sha512-aOGy88DDlVUhspIXJN+dVEtclhIsfAUppD43V0j40cPTld3pv/0X/MlrZSZ6jowIaQQzFwP8M6rFU2z2mVYjDQ== + dependencies: + "@noble/hashes" "^1.2.0" + "@scure/base" "^1.1.1" + typeforce "^1.11.5" + wif "^2.0.6" + bip39@3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.0.2.tgz#2baf42ff3071fc9ddd5103de92e8f80d9257ee32" @@ -3482,6 +3549,37 @@ bip39@^3.0.2, bip39@^3.0.4: dependencies: "@noble/hashes" "^1.2.0" +bip66@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" + integrity sha512-nemMHz95EmS38a26XbbdxIYj5csHd3RMP3H5bwQknX0WYHF01qhpufP42mLOwVICuH2JmhIhXiWs89MfUGL7Xw== + dependencies: + safe-buffer "^5.0.1" + +bitcoinjs-lib@^6.1.5: + version "6.1.6" + resolved "https://registry.yarnpkg.com/bitcoinjs-lib/-/bitcoinjs-lib-6.1.6.tgz#f57c17c82511f860f11946d784c18da39f8618a8" + integrity sha512-Fk8+Vc+e2rMoDU5gXkW9tD+313rhkm5h6N9HfZxXvYU9LedttVvmXKTgd9k5rsQJjkSfsv6XRM8uhJv94SrvcA== + dependencies: + "@noble/hashes" "^1.2.0" + bech32 "^2.0.0" + bip174 "^2.1.1" + bs58check "^3.0.1" + typeforce "^1.11.3" + varuint-bitcoin "^1.1.2" + +bitcoinjs-message@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/bitcoinjs-message/-/bitcoinjs-message-2.2.0.tgz#8116ec7f447f9889e23030fc15c5286a6ae5503b" + integrity sha512-103Wy3xg8Y9o+pdhGP4M3/mtQQuUWs6sPuOp1mYphSUoSMHjHTlkj32K4zxU8qMH0Ckv23emfkGlFWtoWZ7YFA== + dependencies: + bech32 "^1.1.3" + bs58check "^2.1.2" + buffer-equals "^1.0.3" + create-hash "^1.1.2" + secp256k1 "^3.0.1" + varuint-bitcoin "^1.0.1" + blake2b-wasm@^1.1.0: version "1.1.7" resolved "https://registry.yarnpkg.com/blake2b-wasm/-/blake2b-wasm-1.1.7.tgz#e4d075da10068e5d4c3ec1fb9accc4d186c55d81" @@ -3556,6 +3654,18 @@ brorand@^1.1.0: resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== +browserify-aes@^1.0.6: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + bs58@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/bs58/-/bs58-6.0.0.tgz#a2cda0130558535dd281a2f8697df79caaf425d8" @@ -3570,7 +3680,14 @@ bs58@^4.0.0, bs58@^4.0.1: dependencies: base-x "^3.0.2" -bs58check@^2.1.2: +bs58@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-5.0.0.tgz#865575b4d13c09ea2a84622df6c8cbeb54ffc279" + integrity sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ== + dependencies: + base-x "^4.0.0" + +bs58check@<3.0.0, bs58check@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== @@ -3579,11 +3696,29 @@ bs58check@^2.1.2: create-hash "^1.1.0" safe-buffer "^5.1.2" +bs58check@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-3.0.1.tgz#2094d13720a28593de1cba1d8c4e48602fdd841c" + integrity sha512-hjuuJvoWEybo7Hn/0xOrczQKKEKD63WguEjlhLExYs2wUBcebDC1jDNK17eEAD2lYfw82d5ASC1d7K3SWszjaQ== + dependencies: + "@noble/hashes" "^1.2.0" + bs58 "^5.0.0" + +buffer-equals@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/buffer-equals/-/buffer-equals-1.0.4.tgz#0353b54fd07fd9564170671ae6f66b9cf10d27f5" + integrity sha512-99MsCq0j5+RhubVEtKQgKaD6EM+UP3xJgIvQqwJ3SOLDUekzxMX1ylXBng+Wa2sh7mGT0W6RUly8ojjr1Tt6nA== + buffer-reverse@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/buffer-reverse/-/buffer-reverse-1.0.1.tgz#49283c8efa6f901bc01fa3304d06027971ae2f60" integrity sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg== +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + buffer@6.0.3, buffer@^6.0.3, buffer@~6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" @@ -3680,7 +3815,7 @@ chokidar@^3.5.3: optionalDependencies: fsevents "~2.3.2" -cipher-base@^1.0.1, cipher-base@^1.0.3: +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== @@ -3818,7 +3953,7 @@ cosmos-wallet@1.2.0: "@cosmjs/amino" "^0.25.4" "@cosmjs/proto-signing" "^0.25.4" -create-hash@^1.1.0, create-hash@^1.1.2: +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== @@ -4055,6 +4190,15 @@ dom-helpers@^5.0.1: "@babel/runtime" "^7.8.7" csstype "^3.0.2" +drbg.js@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" + integrity sha512-F4wZ06PvqxYLFEZKkFxTDcns9oFNk34hvmJSEwdzsxVQ8YI5YaxtACgQatkYgv2VI2CFkUd2Y+xosPQnHv809g== + dependencies: + browserify-aes "^1.0.6" + create-hash "^1.1.2" + create-hmac "^1.1.4" + duplexify@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.2.tgz#18b4f8d28289132fa0b9573c898d9f903f81c7b0" @@ -4065,6 +4209,15 @@ duplexify@^4.1.2: readable-stream "^3.1.1" stream-shift "^1.0.0" +ecpair@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ecpair/-/ecpair-2.1.0.tgz#673f826b1d80d5eb091b8e2010c6b588e8d2cb45" + integrity sha512-cL/mh3MtJutFOvFc27GPZE2pWL3a3k4YvzUWEOvilnfZVlH3Jwgx/7d6tlD7/75tNk8TG2m+7Kgtz0SI1tWcqw== + dependencies: + randombytes "^2.1.0" + typeforce "^1.18.0" + wif "^2.0.6" + ed25519-hd-key@1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/ed25519-hd-key/-/ed25519-hd-key-1.1.2.tgz#168dcf08419694be7bba3319e7d64e4a5cfe5d44" @@ -4559,11 +4712,24 @@ eventemitter3@^4.0.7: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + events@3.3.0, events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== +evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + execa@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" @@ -5432,6 +5598,24 @@ jayson@^4.1.0: uuid "^8.3.2" ws "^7.4.5" +jayson@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/jayson/-/jayson-4.1.2.tgz#443c26a8658703e0b2e881117b09395d88b6982e" + integrity sha512-5nzMWDHy6f+koZOuYsArh2AXs73NfWYVlFyJJuCedr93GpY+Ku8qq10ropSXVfHK+H0T6paA88ww+/dV+1fBNA== + dependencies: + "@types/connect" "^3.4.33" + "@types/node" "^12.12.54" + "@types/ws" "^7.4.4" + JSONStream "^1.3.5" + commander "^2.20.3" + delay "^5.0.0" + es6-promisify "^5.0.0" + eyes "^0.1.8" + isomorphic-ws "^4.0.1" + json-stringify-safe "^5.0.1" + uuid "^8.3.2" + ws "^7.5.10" + jiti@^1.20.0: version "1.21.0" resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" @@ -5925,6 +6109,11 @@ mustache@^4.0.0: resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.2.0.tgz#e5892324d60a12ec9c2a73359edca52972bf6f64" integrity sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ== +nan@^2.14.0: + version "2.22.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.22.0.tgz#31bc433fc33213c97bad36404bb68063de604de3" + integrity sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw== + nanoassert@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/nanoassert/-/nanoassert-1.1.0.tgz#4f3152e09540fde28c76f44b19bbcd1d5a42478d" @@ -6722,6 +6911,22 @@ rpc-websockets@^7.5.1: bufferutil "^4.0.1" utf-8-validate "^5.0.2" +rpc-websockets@^9.0.2: + version "9.0.4" + resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-9.0.4.tgz#9d8ee82533b5d1e13d9ded729e3e38d0d8fa083f" + integrity sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ== + dependencies: + "@swc/helpers" "^0.5.11" + "@types/uuid" "^8.3.4" + "@types/ws" "^8.2.2" + buffer "^6.0.3" + eventemitter3 "^5.0.1" + uuid "^8.3.2" + ws "^8.5.0" + optionalDependencies: + bufferutil "^4.0.1" + utf-8-validate "^5.0.2" + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -6753,7 +6958,7 @@ safe-array-concat@^1.0.1: has-symbols "^1.0.3" isarray "^2.0.5" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -6790,6 +6995,20 @@ scryptsy@2.1.0: resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-2.1.0.tgz#8d1e8d0c025b58fdd25b6fa9a0dc905ee8faa790" integrity sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w== +secp256k1@^3.0.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.8.1.tgz#b62a62a882d6b16f9b51fe599c6b3a861e36c59f" + integrity sha512-tArjQw2P0RTdY7QmkNehgp6TVvQXq6ulIhxv8gaH6YubKG/wxxAoNKcbuXjDhybbc+b2Ihc7e0xxiGN744UIiQ== + dependencies: + bindings "^1.5.0" + bip66 "^1.1.5" + bn.js "^4.11.8" + create-hash "^1.2.0" + drbg.js "^1.0.1" + elliptic "^6.5.7" + nan "^2.14.0" + safe-buffer "^5.1.2" + semver@^5.6.0: version "5.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" @@ -6892,16 +7111,20 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -solady@^0.0.234: - version "0.0.234" - resolved "https://registry.yarnpkg.com/solady/-/solady-0.0.234.tgz#99ddd59e38f1987683b465e5f97d6808c2c50a32" - integrity sha512-twY/0NtBbOZ7fGFIqp7Ebuvfgw2yD6A44HKbEpS05RK03VH+bv81/Mg6kYI/7EK/NuATlvrACDdLYfp/c1+d4A== - solady@^0.0.235: version "0.0.235" resolved "https://registry.yarnpkg.com/solady/-/solady-0.0.235.tgz#50ab6e403ed6935012df2c16803fcd58045f9a0e" integrity sha512-JUEXLDG7ag3HmqUnrDG7ilhafH6R9bFPpwV63O2kH4UbnS2+gRGEOqqy4k01O7tHjo3MWkDD0cpG+UY9pjy/fQ== +solana-wallet@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/solana-wallet/-/solana-wallet-1.0.2.tgz#1b8157974a0ec5228ac45d8414c656dcb3a94d47" + integrity sha512-oZnLJvwBFnQ0Hf0vTuAUFizq59AhxDfoMpdDUuqo02seNsV7AbYl3QGJZBJ1uCr36cRJnXFr2NqI3RM2IDq62Q== + dependencies: + "@solana/web3.js" "^1.66.2" + bs58 "^5.0.0" + tweetnacl "^1.0.3" + sonic-boom@^2.2.1: version "2.8.0" resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-2.8.0.tgz#c1def62a77425090e6ad7516aad8eb402e047611" @@ -7111,6 +7334,11 @@ superstruct@^0.14.2: resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.14.2.tgz#0dbcdf3d83676588828f1cf5ed35cda02f59025b" integrity sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ== +superstruct@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-2.0.2.tgz#3f6d32fbdc11c357deff127d591a39b996300c54" + integrity sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A== + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -7152,6 +7380,13 @@ thread-stream@^0.15.1: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== +tiny-secp256k1@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/tiny-secp256k1/-/tiny-secp256k1-2.2.3.tgz#fe1dde11a64fcee2091157d4b78bcb300feb9b65" + integrity sha512-SGcL07SxcPN2nGKHTCvRMkQLYPSoeFcvArUSCYtjVARiFAWU44cCIqYS0mYAU6nY7XfvwURuTIGo2Omt3ZQr0Q== + dependencies: + uint8array-tools "0.0.7" + tiny-warning@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" @@ -7298,6 +7533,11 @@ typedarray-to-buffer@^4.0.0: resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-4.0.0.tgz#cdd2933c61dd3f5f02eda5d012d441f95bfeb50a" integrity sha512-6dOYeZfS3O9RtRD1caom0sMxgK59b27+IwoNy8RDPsmslSGOyU+mpTamlaIW7aNKi90ZQZ9DFaZL3YRoiSCULQ== +typeforce@^1.11.3, typeforce@^1.11.5, typeforce@^1.18.0: + version "1.18.0" + resolved "https://registry.yarnpkg.com/typeforce/-/typeforce-1.18.0.tgz#d7416a2c5845e085034d70fcc5b6cc4a90edbfdc" + integrity sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g== + typescript@5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" @@ -7313,6 +7553,11 @@ ufo@^1.3.0, ufo@^1.3.1, ufo@^1.3.2: resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.3.2.tgz#c7d719d0628a1c80c006d2240e0d169f6e3c0496" integrity sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA== +uint8array-tools@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/uint8array-tools/-/uint8array-tools-0.0.7.tgz#a7a2bb5d8836eae2fade68c771454e6a438b390d" + integrity sha512-vrrNZJiusLWoFWBqz5Y5KMCgP9W9hnjZHzZiZRT8oNAkq3d5Z5Oe76jAvVVSRh4U8GGR90N2X1dWtrhvx6L8UQ== + uint8arrays@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.0.tgz#8186b8eafce68f28bd29bd29d683a311778901e2" @@ -7455,6 +7700,13 @@ valtio@1.13.2: proxy-compare "2.6.0" use-sync-external-store "1.2.0" +varuint-bitcoin@^1.0.1, varuint-bitcoin@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/varuint-bitcoin/-/varuint-bitcoin-1.1.2.tgz#e76c138249d06138b480d4c5b40ef53693e24e92" + integrity sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw== + dependencies: + safe-buffer "^5.1.1" + viem@2.17.8: version "2.17.8" resolved "https://registry.yarnpkg.com/viem/-/viem-2.17.8.tgz#79da50ef86fb429d3b36d4ef2f49be5b2999420f" @@ -7589,6 +7841,13 @@ which@^2.0.1: dependencies: isexe "^2.0.0" +wif@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/wif/-/wif-2.0.6.tgz#08d3f52056c66679299726fade0d432ae74b4704" + integrity sha512-HIanZn1zmduSF+BQhkE+YXIbEiH0xPr1012QbFEGB0xsKqJii0/SqJjyn8dFv6y36kOznMgMB+LGcbZTJ1xACQ== + dependencies: + bs58check "<3.0.0" + wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" @@ -7628,6 +7887,11 @@ ws@^7.4.5, ws@^7.5.1: resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== +ws@^7.5.10: + version "7.5.10" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== + ws@^8.5.0: version "8.15.1" resolved "https://registry.yarnpkg.com/ws/-/ws-8.15.1.tgz#271ba33a45ca0cc477940f7f200cd7fba7ee1997"