diff --git a/packages/ccc/CHANGELOG.md b/packages/ccc/CHANGELOG.md index 17cd572bf..d94727e03 100644 --- a/packages/ccc/CHANGELOG.md +++ b/packages/ccc/CHANGELOG.md @@ -1,5 +1,11 @@ # @ckb-ccc/ccc +## 1.1.22 +### Patch Changes + +- Updated dependencies []: + - @ckb-ccc/shell@1.1.22 + ## 1.1.21 ### Patch Changes diff --git a/packages/ccc/package.json b/packages/ccc/package.json index 61219eb9e..6c17e0ef7 100644 --- a/packages/ccc/package.json +++ b/packages/ccc/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/ccc", - "version": "1.1.21", + "version": "1.1.22", "description": "CCC - CKBer's Codebase. Common Chains Connector.", "author": "Hanssen0 ", "license": "MIT", diff --git a/packages/ckb-ccc/CHANGELOG.md b/packages/ckb-ccc/CHANGELOG.md index 7461441d1..37628e5fc 100644 --- a/packages/ckb-ccc/CHANGELOG.md +++ b/packages/ckb-ccc/CHANGELOG.md @@ -1,5 +1,11 @@ # ckb-ccc +## 1.0.30 +### Patch Changes + +- Updated dependencies []: + - @ckb-ccc/ccc@1.1.22 + ## 1.0.29 ### Patch Changes diff --git a/packages/ckb-ccc/package.json b/packages/ckb-ccc/package.json index 559cd6dd1..8e2a6153c 100644 --- a/packages/ckb-ccc/package.json +++ b/packages/ckb-ccc/package.json @@ -1,6 +1,6 @@ { "name": "ckb-ccc", - "version": "1.0.29", + "version": "1.0.30", "description": "CCC - CKBer's Codebase. Common Chains Connector.", "author": "Hanssen0 ", "license": "MIT", diff --git a/packages/connector-react/CHANGELOG.md b/packages/connector-react/CHANGELOG.md index 88c89cab9..7d70d3073 100644 --- a/packages/connector-react/CHANGELOG.md +++ b/packages/connector-react/CHANGELOG.md @@ -1,5 +1,18 @@ # @ckb-ccc/connector-react +## 1.0.31 +### Patch Changes + + + +- [#335](https://github.com/ckb-devrel/ccc/pull/335) [`ea7e626`](https://github.com/ckb-devrel/ccc/commit/ea7e626a81ad4fb78142f0d948843de84478debf) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump version of react + +## 1.0.30 +### Patch Changes + +- Updated dependencies []: + - @ckb-ccc/connector@1.0.30 + ## 1.0.29 ### Patch Changes diff --git a/packages/connector-react/package.json b/packages/connector-react/package.json index 2e706f02b..857ca71bc 100644 --- a/packages/connector-react/package.json +++ b/packages/connector-react/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/connector-react", - "version": "1.0.29", + "version": "1.0.31", "description": "CCC - CKBer's Codebase. Common Chains Connector UI Component for React", "author": "Hanssen0 ", "license": "MIT", @@ -25,7 +25,7 @@ }, "devDependencies": { "@eslint/js": "^9.34.0", - "@types/react": "^19.1.12", + "@types/react": "^19.2.7", "eslint": "^9.34.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-prettier": "^5.5.4", diff --git a/packages/connector/CHANGELOG.md b/packages/connector/CHANGELOG.md index af6e1b5bc..82fe323cf 100644 --- a/packages/connector/CHANGELOG.md +++ b/packages/connector/CHANGELOG.md @@ -1,5 +1,11 @@ # @ckb-ccc/connector +## 1.0.30 +### Patch Changes + +- Updated dependencies []: + - @ckb-ccc/ccc@1.1.22 + ## 1.0.29 ### Patch Changes diff --git a/packages/connector/package.json b/packages/connector/package.json index f48055120..40a31fdd6 100644 --- a/packages/connector/package.json +++ b/packages/connector/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/connector", - "version": "1.0.29", + "version": "1.0.30", "description": "CCC - CKBer's Codebase. Common Chains Connector UI", "author": "Hanssen0 ", "license": "MIT", diff --git a/packages/connector/src/signers/index.ts b/packages/connector/src/signers/index.ts index 157d319bf..6b943be9a 100644 --- a/packages/connector/src/signers/index.ts +++ b/packages/connector/src/signers/index.ts @@ -45,7 +45,7 @@ export class SignersController { hostConnected(): void { void this.refresh(); // Wait for plugins to be loaded - setTimeout(() => this.refresh(), 500); + setTimeout(() => void this.refresh(), 500); } hostDisconnected(): void { diff --git a/packages/core/src/client/clientPublicMainnet.advanced.ts b/packages/core/src/client/clientPublicMainnet.advanced.ts index 10fb09ada..90c1b9c52 100644 --- a/packages/core/src/client/clientPublicMainnet.advanced.ts +++ b/packages/core/src/client/clientPublicMainnet.advanced.ts @@ -466,7 +466,7 @@ export const MAINNET_SCRIPTS: Record = cellDep: { outPoint: { txHash: - "0x04c5c3e69f1aa6ee27fb9de3d15a81704e387ab3b453965adbe0b6ca343c6f41", + "0xcb4d9f9726e66306bfda6359d39d3bea8b4e5345d0f95f26a3e51626ebe82a63", index: 0, }, depType: "code", @@ -483,7 +483,7 @@ export const MAINNET_SCRIPTS: Record = cellDep: { outPoint: { txHash: - "0x04c5c3e69f1aa6ee27fb9de3d15a81704e387ab3b453965adbe0b6ca343c6f41", + "0xcb4d9f9726e66306bfda6359d39d3bea8b4e5345d0f95f26a3e51626ebe82a63", index: 1, }, depType: "code", @@ -500,7 +500,7 @@ export const MAINNET_SCRIPTS: Record = cellDep: { outPoint: { txHash: - "0x6257bf4297ee75fcebe2654d8c5f8d93bc9fc1b3dc62b8cef54ffe166162e996", + "0x3d1c26b966504b09253ad84173bf3baa7b8135c5ff520c32cf70b631c1d08b9b", index: 0, }, depType: "code", @@ -517,7 +517,7 @@ export const MAINNET_SCRIPTS: Record = cellDep: { outPoint: { txHash: - "0x6257bf4297ee75fcebe2654d8c5f8d93bc9fc1b3dc62b8cef54ffe166162e996", + "0x3d1c26b966504b09253ad84173bf3baa7b8135c5ff520c32cf70b631c1d08b9b", index: 1, }, depType: "code", diff --git a/packages/core/src/client/clientPublicTestnet.advanced.ts b/packages/core/src/client/clientPublicTestnet.advanced.ts index 6819fc6ed..c38074b0b 100644 --- a/packages/core/src/client/clientPublicTestnet.advanced.ts +++ b/packages/core/src/client/clientPublicTestnet.advanced.ts @@ -478,7 +478,7 @@ export const TESTNET_SCRIPTS: Record = cellDep: { outPoint: { txHash: - "0xf1de59e973b85791ec32debbba08dff80c63197e895eb95d67fc1e9f6b413e00", + "0x0d1567da0979f78b297d5311442669fbd1bd853c8be324c5ab6da41e7a1ed6e5", index: 0, }, depType: "code", @@ -495,7 +495,7 @@ export const TESTNET_SCRIPTS: Record = cellDep: { outPoint: { txHash: - "0xf1de59e973b85791ec32debbba08dff80c63197e895eb95d67fc1e9f6b413e00", + "0x0d1567da0979f78b297d5311442669fbd1bd853c8be324c5ab6da41e7a1ed6e5", index: 1, }, depType: "code", @@ -512,7 +512,7 @@ export const TESTNET_SCRIPTS: Record = cellDep: { outPoint: { txHash: - "0xde0f87878a97500f549418e5d46d2f7704c565a262aa17036c9c1c13ad638529", + "0x8fb747ff0416a43e135c583b028f98c7b81d3770551b196eb7ba1062dd9acc94", index: 0, }, depType: "code", @@ -529,7 +529,7 @@ export const TESTNET_SCRIPTS: Record = cellDep: { outPoint: { txHash: - "0xde0f87878a97500f549418e5d46d2f7704c565a262aa17036c9c1c13ad638529", + "0x8fb747ff0416a43e135c583b028f98c7b81d3770551b196eb7ba1062dd9acc94", index: 1, }, depType: "code", @@ -538,98 +538,3 @@ export const TESTNET_SCRIPTS: Record = ], }, }); - -/** - * Bitcoin Signet specific script overrides for testnet - * - * Contains script configurations that differ when using Bitcoin Signet - * instead of Bitcoin Testnet3. Only RgbppLock and BtcTimeLock are affected. - * - * @example - * ```typescript - * import { ClientPublicTestnet } from "@ckb-ccc/core"; - * import { TESTNET_SCRIPTS, TESTNET_SCRIPTS_BTC_SIGNET_OVERRIDES } from "@ckb-ccc/core/advanced"; - * - * // Use Bitcoin Testnet3 scripts (default) - * const testnet3Client = new ClientPublicTestnet(); - * - * // Use Bitcoin Signet scripts by merging overrides - * const signetClient = new ClientPublicTestnet({ - * scripts: { - * ...TESTNET_SCRIPTS, - * ...TESTNET_SCRIPTS_BTC_SIGNET_OVERRIDES - * } - * }); - */ -export const TESTNET_SCRIPTS_BTC_SIGNET_OVERRIDES: Partial< - Record -> = Object.freeze({ - [KnownScript.RgbppLock]: { - codeHash: - "0xd07598deec7ce7b5665310386b4abd06a6d48843e953c5cc2112ad0d5a220364", - hashType: "type", - cellDeps: [ - { - cellDep: { - outPoint: { - txHash: - "0x61efdeddbaa0bb4132c0eb174b3e8002ff5ec430f61ba46f30768d683c516eec", - index: 0, - }, - depType: "code", - }, - type: { - codeHash: - "0x00000000000000000000000000000000000000000000000000545950455f4944", - hashType: "type", - args: "0xb69fe766ce3b7014a2a78ad1fe688d82f1679325805371d2856c3b8d18ebfa5a", - }, - }, - // Rgbpp lock config cell dep for Bitcoin Signet - { - cellDep: { - outPoint: { - txHash: - "0x61efdeddbaa0bb4132c0eb174b3e8002ff5ec430f61ba46f30768d683c516eec", - index: 1, - }, - depType: "code", - }, - }, - ], - }, - [KnownScript.BtcTimeLock]: { - codeHash: - "0x80a09eca26d77cea1f5a69471c59481be7404febf40ee90f886c36a948385b55", - hashType: "type", - cellDeps: [ - { - cellDep: { - outPoint: { - txHash: - "0x5364b3535965e9eac9a35dd7af8e9e45a61d30a16e115923c032f80b28783e21", - index: 0, - }, - depType: "code", - }, - type: { - codeHash: - "0x00000000000000000000000000000000000000000000000000545950455f4944", - hashType: "type", - args: "0x32fc8c70a6451a1439fd91e214bba093f9cdd9276bc4ab223430dab5940aff92", - }, - }, - // btc time lock config cell dep for Bitcoin Signet - { - cellDep: { - outPoint: { - txHash: - "0x5364b3535965e9eac9a35dd7af8e9e45a61d30a16e115923c032f80b28783e21", - index: 1, - }, - depType: "code", - }, - }, - ], - }, -}); diff --git a/packages/core/src/client/knownScript.ts b/packages/core/src/client/knownScript.ts index f3a185d6c..c65259c61 100644 --- a/packages/core/src/client/knownScript.ts +++ b/packages/core/src/client/knownScript.ts @@ -27,7 +27,6 @@ export enum KnownScript { TimeLock = "TimeLock", // RGB++ related scripts (default using Bitcoin Testnet3) - // For Bitcoin Signet, use TESTNET_SCRIPTS_BTC_SIGNET_OVERRIDES from @ckb-ccc/core/advanced RgbppLock = "RgbppLock", BtcTimeLock = "BtcTimeLock", } diff --git a/packages/core/src/signer/btc/index.ts b/packages/core/src/signer/btc/index.ts index d0aa15884..694ff7250 100644 --- a/packages/core/src/signer/btc/index.ts +++ b/packages/core/src/signer/btc/index.ts @@ -1,3 +1,4 @@ +export * from "./psbt.js"; export * from "./signerBtc.js"; export * from "./signerBtcPublicKeyReadonly.js"; export * from "./verify.js"; diff --git a/packages/core/src/signer/btc/psbt.ts b/packages/core/src/signer/btc/psbt.ts new file mode 100644 index 000000000..e122b7d98 --- /dev/null +++ b/packages/core/src/signer/btc/psbt.ts @@ -0,0 +1,56 @@ +/** + * Options for signing a PSBT (Partially Signed Bitcoin Transaction) + */ +export type SignPsbtOptions = { + /** + * Whether to finalize the PSBT after signing. + * Default is true. + */ + autoFinalized: boolean; + /** + * Array of inputs to sign + */ + toSignInputs: ToSignInput[]; +}; + +/** + * Specification for an input to sign in a PSBT. + * Must specify at least one of: address or pubkey. + */ +export type ToSignInput = { + /** + * Which input to sign (index in the PSBT inputs array) + */ + index: number; + /** + * (Optional) Sighash types to use for signing. + */ + sighashTypes?: number[]; + /** + * (Optional) When signing and unlocking Taproot addresses, the tweakSigner is used by default + * for signature generation. Setting this to true allows for signing with the original private key. + * Default value is false. + */ + disableTweakSigner?: boolean; +} & ( + | { + /** + * The address whose corresponding private key to use for signing. + */ + address: string; + /** + * The public key whose corresponding private key to use for signing. + */ + publicKey?: string; + } + | { + /** + * The address whose corresponding private key to use for signing. + */ + address?: string; + /** + * The public key whose corresponding private key to use for signing. + */ + publicKey: string; + } +); diff --git a/packages/core/src/signer/btc/signerBtc.ts b/packages/core/src/signer/btc/signerBtc.ts index 7d5620c39..6f577bc58 100644 --- a/packages/core/src/signer/btc/signerBtc.ts +++ b/packages/core/src/signer/btc/signerBtc.ts @@ -5,6 +5,7 @@ import { Client, KnownScript } from "../../client/index.js"; import { HexLike, hexFrom } from "../../hex/index.js"; import { numToBytes } from "../../num/index.js"; import { Signer, SignerSignType, SignerType } from "../signer/index.js"; +import { SignPsbtOptions } from "./psbt.js"; import { btcEcdsaPublicKeyHash } from "./verify.js"; /** @@ -26,6 +27,32 @@ export abstract class SignerBtc extends Signer { return SignerSignType.BtcEcdsa; } + /** + * Whether the wallet supports a single call to sign + broadcast (combined flow). + * Default false; override in implementations like Xverse/JoyID. + */ + get supportsSingleCallSignAndBroadcast(): boolean { + return false; + } + + /** + * Sign and broadcast a PSBT in one call when supported, otherwise falls back + * to sign then push. Prefer this over manual sign+push to avoid double popups. + */ + async signAndPushPsbt( + psbtHex: string, + options?: SignPsbtOptions, + ): Promise { + if (this.supportsSingleCallSignAndBroadcast) { + // Wallet handles sign+broadcast internally (e.g., Xverse/JoyID) + return this.pushPsbt(psbtHex, options); + } + + // Split-mode wallets: sign first, then broadcast + const signedPsbt = await this.signPsbt(psbtHex, options); + return this.pushPsbt(signedPsbt, options); + } + /** * Gets the Bitcoin account associated with the signer. * @@ -132,10 +159,13 @@ export abstract class SignerBtc extends Signer { * Signs a Partially Signed Bitcoin Transaction (PSBT). * * @param psbtHex - The hex string of PSBT to sign + * @param options - Options for signing the PSBT * @returns A promise that resolves to the signed PSBT hex string - * @todo Add support for Taproot signing options (useTweakedSigner, etc.) */ - abstract signPsbt(psbtHex: string): Promise; + abstract signPsbt( + psbtHex: string, + options?: SignPsbtOptions, + ): Promise; /** * Broadcasts a signed PSBT to the Bitcoin network. @@ -143,5 +173,8 @@ export abstract class SignerBtc extends Signer { * @param psbtHex - The hex string of signed PSBT to broadcast * @returns A promise that resolves to the transaction ID */ - abstract pushPsbt(psbtHex: string): Promise; + abstract pushPsbt( + psbtHex: string, + options?: SignPsbtOptions, + ): Promise; } diff --git a/packages/core/src/signer/btc/signerBtcPublicKeyReadonly.ts b/packages/core/src/signer/btc/signerBtcPublicKeyReadonly.ts index ba7e93228..774714f4d 100644 --- a/packages/core/src/signer/btc/signerBtcPublicKeyReadonly.ts +++ b/packages/core/src/signer/btc/signerBtcPublicKeyReadonly.ts @@ -1,5 +1,6 @@ import { Client } from "../../client/index.js"; import { Hex, HexLike, hexFrom } from "../../hex/index.js"; +import { SignPsbtOptions } from "./psbt.js"; import { SignerBtc } from "./signerBtc.js"; /** @@ -75,7 +76,7 @@ export class SignerBtcPublicKeyReadonly extends SignerBtc { throw new Error("Read-only signer does not support signPsbt"); } - async pushPsbt(_: string): Promise { + async pushPsbt(_: string, __?: SignPsbtOptions): Promise { throw new Error("Read-only signer does not support pushPsbt"); } } diff --git a/packages/demo/eslint.config.mjs b/packages/demo/eslint.config.mjs index aacfd2aeb..48fe8d310 100644 --- a/packages/demo/eslint.config.mjs +++ b/packages/demo/eslint.config.mjs @@ -2,6 +2,8 @@ import { dirname } from "path"; import { fileURLToPath } from "url"; import { FlatCompat } from "@eslint/eslintrc"; import eslintPluginPrettierRecommended from "eslint-plugin-prettier/recommended"; +import nextVitals from "eslint-config-next/core-web-vitals"; +import nextTs from "eslint-config-next/typescript"; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); @@ -11,7 +13,8 @@ const compat = new FlatCompat({ }); export default [ - ...compat.extends("next/core-web-vitals", "next/typescript"), + ...nextVitals, + ...nextTs, { ignores: [ "node_modules/**", @@ -36,4 +39,4 @@ export default [ }, }, eslintPluginPrettierRecommended, -]; \ No newline at end of file +]; diff --git a/packages/demo/package.json b/packages/demo/package.json index 6c7abbc14..92439c9ec 100644 --- a/packages/demo/package.json +++ b/packages/demo/package.json @@ -17,12 +17,12 @@ }, "dependencies": { "@lit/react": "^1.0.8", - "@next/third-parties": "^15.5.2", + "@next/third-parties": "^16.0.10", "@uiw/react-json-view": "2.0.0-alpha.37", "lucide-react": "^0.542.0", - "next": "15.5.2", - "react": "^19.1.1", - "react-dom": "^19.1.1" + "next": "16.0.10", + "react": "^19.2.3", + "react-dom": "^19.2.3" }, "devDependencies": { "@ckb-ccc/connector-react": "workspace:*", @@ -41,10 +41,10 @@ "@scure/bip39": "^2.0.0", "@tailwindcss/postcss": "^4.1.12", "@types/node": "^24.3.0", - "@types/react": "^19.1.12", - "@types/react-dom": "^19.1.8", + "@types/react": "^19.2.7", + "@types/react-dom": "^19.2.3", "eslint": "^9.34.0", - "eslint-config-next": "15.5.2", + "eslint-config-next": "16.0.10", "eslint-config-prettier": "^10.1.8", "eslint-plugin-prettier": "^5.5.4", "postcss": "^8.5.6", diff --git a/packages/demo/src/app/connected/(tools)/IssueRgbppXUdt/page.tsx b/packages/demo/src/app/connected/(tools)/IssueRgbppXUdt/page.tsx index 12b1c06a6..b769d3192 100644 --- a/packages/demo/src/app/connected/(tools)/IssueRgbppXUdt/page.tsx +++ b/packages/demo/src/app/connected/(tools)/IssueRgbppXUdt/page.tsx @@ -11,12 +11,14 @@ import { BtcApiUtxo, BtcAssetApiConfig, buildNetworkConfig, - CkbRgbppUnlockSinger, + CkbRgbppUnlockSigner, + ClientScriptProvider, createBrowserRgbppBtcWallet, getSupportedWallets, isMainnet, NetworkConfig, PredefinedNetwork, + RgbppScriptName, RgbppUdtClient, UtxoSeal, } from "@ckb-ccc/rgbpp"; @@ -111,7 +113,8 @@ export default function IssueRGBPPXUdt() { : new ccc.ClientPublicTestnet(); setCkbClient(client); - const udtClient = new RgbppUdtClient(config, client); + const scriptProvider = new ClientScriptProvider(client); + const udtClient = new RgbppUdtClient(config, client, scriptProvider); setRgbppUdtClient(udtClient); }, [signer]); @@ -122,8 +125,9 @@ export default function IssueRGBPPXUdt() { const config: BtcAssetApiConfig = { url: process.env.NEXT_PUBLIC_BTC_ASSETS_API_URL!, - token: process.env.NEXT_PUBLIC_BTC_ASSETS_API_TOKEN!, - origin: process.env.NEXT_PUBLIC_BTC_ASSETS_API_ORIGIN!, + token: process.env.NEXT_PUBLIC_BTC_ASSETS_API_TOKEN, + origin: process.env.NEXT_PUBLIC_BTC_ASSETS_API_ORIGIN, + isMainnet: networkConfig.isMainnet, }; return createBrowserRgbppBtcWallet(signer, networkConfig, config); @@ -175,26 +179,26 @@ export default function IssueRGBPPXUdt() { }); }, [rgbppBtcWallet]); - const [ckbRgbppUnlockSinger, setCkbRgbppUnlockSinger] = - useState(); + const [ckbRgbppUnlockSigner, setCkbRgbppUnlockSigner] = + useState(); useEffect(() => { if (!ckbClient || !rgbppBtcWallet || !rgbppUdtClient) { - setCkbRgbppUnlockSinger(undefined); + setCkbRgbppUnlockSigner(undefined); return; } let mounted = true; - rgbppBtcWallet.getAddress().then((address: string) => { + rgbppBtcWallet.getAddress().then(async (address: string) => { if (mounted) { - setCkbRgbppUnlockSinger( - new CkbRgbppUnlockSinger( + const scriptInfos = await rgbppUdtClient.getRgbppScriptInfos(); + setCkbRgbppUnlockSigner( + new CkbRgbppUnlockSigner({ ckbClient, - address, - rgbppBtcWallet, - rgbppBtcWallet, - rgbppUdtClient.getRgbppScriptInfos(), - ), + rgbppBtcAddress: address, + btcDataSource: rgbppBtcWallet, + scriptInfos: scriptInfos as Record, + }), ); } }); @@ -208,7 +212,7 @@ export default function IssueRGBPPXUdt() { !signer || !(signer instanceof SignerBtc) || !rgbppBtcWallet || - !ckbRgbppUnlockSinger || + !ckbRgbppUnlockSigner || !rgbppUdtClient || !selectedUtxo ) { @@ -228,7 +232,8 @@ export default function IssueRGBPPXUdt() { txId, index: parseInt(indexStr), }; - const rgbppLockScript = rgbppUdtClient.buildRgbppLockScript(utxoSeal); + const rgbppLockScript = + await rgbppUdtClient.buildRgbppLockScript(utxoSeal); const rgbppCellsGen = await signer.client.findCellsByLock(rgbppLockScript); @@ -270,16 +275,7 @@ export default function IssueRGBPPXUdt() { token: xudtToken, amount: issuanceAmount, rgbppLiveCells: rgbppIssuanceCells, - udtScriptInfo: { - name: ccc.KnownScript.XUdt, - script: await ccc.Script.fromKnownScript( - signer.client, - ccc.KnownScript.XUdt, - "", - ), - cellDep: (await signer.client.getKnownScript(ccc.KnownScript.XUdt)) - .cellDeps[0].cellDep, - }, + udtScriptInfo: await signer.client.getKnownScript(ccc.KnownScript.XUdt), }); setCurrentStep("signing-btc"); @@ -307,7 +303,7 @@ export default function IssueRGBPPXUdt() { btcTxId, ); const rgbppSignedCkbTx = - await ckbRgbppUnlockSinger.signTransaction(ckbPartialTxInjected); + await ckbRgbppUnlockSigner.signTransaction(ckbPartialTxInjected); await rgbppSignedCkbTx.completeFeeBy(signer); setCurrentStep("waiting-ckb"); @@ -332,7 +328,7 @@ export default function IssueRGBPPXUdt() { selectedUtxo, rgbppBtcWallet, rgbppUdtClient, - ckbRgbppUnlockSinger, + CkbRgbppUnlockSigner, log, error, explorerTransaction, diff --git a/packages/demo/src/app/connected/(tools)/Sign/page.tsx b/packages/demo/src/app/connected/(tools)/Sign/page.tsx index 6ce0f5829..55f36a374 100644 --- a/packages/demo/src/app/connected/(tools)/Sign/page.tsx +++ b/packages/demo/src/app/connected/(tools)/Sign/page.tsx @@ -5,6 +5,7 @@ import { ButtonsPanel } from "@/src/components/ButtonsPanel"; import { Textarea } from "@/src/components/Textarea"; import { useApp } from "@/src/context"; import { ccc } from "@ckb-ccc/connector-react"; +import { CopyIcon } from "lucide-react"; import { useState } from "react"; export default function Sign() { @@ -21,6 +22,24 @@ export default function Sign() { placeholder="Message to sign and verify" state={[messageToSign, setMessageToSign]} /> +