Skip to content
This repository was archived by the owner on May 27, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file added examples/rgbpp/logs/.gitkeep
Empty file.
49 changes: 49 additions & 0 deletions examples/rgbpp/shared/utils.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import * as fs from 'fs';
import * as path from 'path';
import {
BaseCkbVirtualTxResult,
SporeVirtualTxResult,
SporeCreateVirtualTxResult,
SporeTransferVirtualTxResult,
} from 'rgbpp/ckb';

/**
* Save ckbVirtualTxResult to a log file
* @param ckbVirtualTxResult - The ckbVirtualTxResult to save
* @param exampleName - Example name used to distinguish different log files
*/

export type CkbVirtualTxResultType =
| BaseCkbVirtualTxResult
| SporeVirtualTxResult
| SporeCreateVirtualTxResult
| SporeTransferVirtualTxResult;

export const saveCkbVirtualTxResult = (ckbVirtualTxResult: CkbVirtualTxResultType, exampleName: string) => {
try {
// Define log file path
const logDir = path.resolve(__dirname, '../logs');
const timestamp = new Date().toISOString().replace(/:/g, '-'); // Replace colons with hyphens
const logFilePath = path.join(logDir, `${exampleName}-${timestamp}-ckbVirtualTxResult.log`);

// Ensure the log directory exists
if (!fs.existsSync(logDir)) {
fs.mkdirSync(logDir);
}

// Validate and save ckbVirtualTxResult to log file
if (typeof ckbVirtualTxResult === 'object' && ckbVirtualTxResult !== null) {
fs.writeFileSync(logFilePath, JSON.stringify(ckbVirtualTxResult, null, 2));
console.info(`Saved ckbVirtualTxResult to ${logFilePath}`);
} else {
console.error('Invalid ckbVirtualTxResult format');
}

// Remind developers to save the transaction result
console.info(
`Important: It's recommended to save the rgbpp_ckb_tx_virtual locally before the isomorphic transactions are finalized.`,
);
} catch (error) {
console.error('Failed to save ckbVirtualTxResult:', error);
}
};
4 changes: 4 additions & 0 deletions examples/rgbpp/spore/4-transfer-spore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { genTransferSporeCkbVirtualTx, sendRgbppUtxos } from 'rgbpp';
import { getSporeTypeScript, Hex } from 'rgbpp/ckb';
import { serializeScript } from '@nervosnetwork/ckb-sdk-utils';
import { isMainnet, collector, btcAddress, btcDataSource, btcKeyPair, btcService } from '../env';
import { saveCkbVirtualTxResult } from '../shared/utils';

interface SporeTransferParams {
sporeRgbppLockArgs: Hex;
Expand All @@ -23,6 +24,9 @@ const transferSpore = async ({ sporeRgbppLockArgs, toBtcAddress, sporeTypeArgs }
isMainnet,
});

// Save ckbVirtualTxResult
saveCkbVirtualTxResult(ckbVirtualTxResult, '4-transfer-spore');

const { commitment, ckbRawTx } = ckbVirtualTxResult;

// Send BTC tx
Expand Down
4 changes: 4 additions & 0 deletions examples/rgbpp/spore/5-leap-spore-to-ckb.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { genLeapSporeFromBtcToCkbVirtualTx, sendRgbppUtxos } from 'rgbpp';
import { getSporeTypeScript, Hex } from 'rgbpp/ckb';
import { serializeScript } from '@nervosnetwork/ckb-sdk-utils';
import { isMainnet, collector, btcAddress, btcDataSource, btcKeyPair, btcService } from '../env';
import { saveCkbVirtualTxResult } from '../shared/utils';

interface SporeLeapParams {
sporeRgbppLockArgs: Hex;
Expand All @@ -24,6 +25,9 @@ const leapSporeFromBtcToCkb = async ({ sporeRgbppLockArgs, toCkbAddress, sporeTy
isMainnet,
});

// Save ckbVirtualTxResult
saveCkbVirtualTxResult(ckbVirtualTxResult, '5-leap-spore-to-ckb');

const { commitment, ckbRawTx } = ckbVirtualTxResult;

// Send BTC tx
Expand Down
4 changes: 4 additions & 0 deletions examples/rgbpp/spore/launch/2-create-cluster.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
sendCkbTx,
updateCkbTxWithRealBtcTxId,
} from 'rgbpp/ckb';
import { saveCkbVirtualTxResult } from '../../shared/utils';

const createCluster = async ({ ownerRgbppLockArgs }: { ownerRgbppLockArgs: string }) => {
const ckbVirtualTxResult = await genCreateClusterCkbVirtualTx({
Expand All @@ -19,6 +20,9 @@ const createCluster = async ({ ownerRgbppLockArgs }: { ownerRgbppLockArgs: strin
ckbFeeRate: BigInt(2000),
});

// Save ckbVirtualTxResult
saveCkbVirtualTxResult(ckbVirtualTxResult, '2-create-cluster');

const { commitment, ckbRawTx, clusterId } = ckbVirtualTxResult;

console.log('clusterId: ', clusterId);
Expand Down
4 changes: 4 additions & 0 deletions examples/rgbpp/spore/launch/3-create-spores.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import {
RawSporeData,
} from 'rgbpp/ckb';
import { transactionToHex, utf8ToBuffer } from 'rgbpp/btc';
import { saveCkbVirtualTxResult } from '../../shared/utils';

interface SporeCreateParams {
clusterRgbppLockArgs: Hex;
Expand All @@ -38,6 +39,9 @@ const createSpores = async ({ clusterRgbppLockArgs, receivers }: SporeCreatePara
ckbFeeRate: BigInt(2000),
});

// Save ckbVirtualTxResult
saveCkbVirtualTxResult(ckbVirtualTxResult, '3-create-spores');

const { commitment, ckbRawTx, sumInputsCapacity, clusterCell } = ckbVirtualTxResult;

// Send BTC tx
Expand Down
4 changes: 4 additions & 0 deletions examples/rgbpp/spore/local/4-transfer-spore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import { sendRgbppUtxos, transactionToHex } from 'rgbpp/btc';
import { BtcAssetsApiError } from 'rgbpp';
import { serializeScript } from '@nervosnetwork/ckb-sdk-utils';
import { isMainnet, collector, btcAddress, btcDataSource, btcKeyPair, btcService } from '../../env';
import { saveCkbVirtualTxResult } from '../../shared/utils';

interface SporeTransferParams {
sporeRgbppLockArgs: Hex;
Expand All @@ -35,6 +36,9 @@ const transferSpore = async ({ sporeRgbppLockArgs, toBtcAddress, sporeTypeArgs }
ckbFeeRate: BigInt(5000),
});

// Save ckbVirtualTxResult
saveCkbVirtualTxResult(ckbVirtualTxResult, '4-transfer-spore-local');

const { commitment, ckbRawTx, sporeCell } = ckbVirtualTxResult;

// console.log(JSON.stringify(ckbRawTx))
Expand Down
4 changes: 4 additions & 0 deletions examples/rgbpp/spore/local/5-leap-spore-to-ckb.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import { sendRgbppUtxos, transactionToHex } from 'rgbpp/btc';
import { serializeScript } from '@nervosnetwork/ckb-sdk-utils';
import { isMainnet, collector, btcAddress, btcDataSource, btcKeyPair, btcService } from '../../env';
import { BtcAssetsApiError } from 'rgbpp';
import { saveCkbVirtualTxResult } from '../../shared/utils';

interface SporeLeapParams {
sporeRgbppLockArgs: Hex;
Expand All @@ -35,6 +36,9 @@ const leapSpore = async ({ sporeRgbppLockArgs, toCkbAddress, sporeTypeArgs }: Sp
isMainnet,
});

// Save ckbVirtualTxResult
saveCkbVirtualTxResult(ckbVirtualTxResult, '5-leap-spore-to-ckb-local');

const { commitment, ckbRawTx, sporeCell } = ckbVirtualTxResult;

// console.log(JSON.stringify(ckbRawTx))
Expand Down
4 changes: 4 additions & 0 deletions examples/rgbpp/xudt/2-btc-transfer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { buildRgbppLockArgs, getXudtTypeScript } from 'rgbpp/ckb';
import { serializeScript } from '@nervosnetwork/ckb-sdk-utils';
import { genBtcTransferCkbVirtualTx, sendRgbppUtxos } from 'rgbpp';
import { isMainnet, collector, btcAddress, btcKeyPair, btcService, btcDataSource } from '../env';
import { saveCkbVirtualTxResult } from '../shared/utils';

interface RgbppTransferParams {
rgbppLockArgsList: string[];
Expand All @@ -24,6 +25,9 @@ const transfer = async ({ rgbppLockArgsList, toBtcAddress, xudtTypeArgs, transfe
isMainnet,
});

// Save ckbVirtualTxResult
saveCkbVirtualTxResult(ckbVirtualTxResult, '2-btc-transfer');

const { commitment, ckbRawTx } = ckbVirtualTxResult;

// Send BTC tx
Expand Down
4 changes: 4 additions & 0 deletions examples/rgbpp/xudt/3-btc-leap-ckb.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { buildRgbppLockArgs, getXudtTypeScript } from 'rgbpp/ckb';
import { serializeScript } from '@nervosnetwork/ckb-sdk-utils';
import { genBtcJumpCkbVirtualTx, sendRgbppUtxos } from 'rgbpp';
import { isMainnet, collector, btcAddress, btcKeyPair, btcService, btcDataSource } from '../env';
import { saveCkbVirtualTxResult } from '../shared/utils';

interface LeapToCkbParams {
rgbppLockArgsList: string[];
Expand All @@ -25,6 +26,9 @@ const leapFromBtcToCKB = async ({ rgbppLockArgsList, toCkbAddress, xudtTypeArgs,
isMainnet,
});

// Save ckbVirtualTxResult
saveCkbVirtualTxResult(ckbVirtualTxResult, '3-btc-leap-ckb');

const { commitment, ckbRawTx } = ckbVirtualTxResult;

// Send BTC tx
Expand Down
4 changes: 4 additions & 0 deletions examples/rgbpp/xudt/launch/2-launch-rgbpp.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
import { RGBPP_TOKEN_INFO } from './0-rgbpp-token-info';
import { btcAddress, btcDataSource, btcKeyPair, btcService, collector, isMainnet } from '../../env';
import { transactionToHex } from 'rgbpp/btc';
import { saveCkbVirtualTxResult } from '../../shared/utils';

interface Params {
ownerRgbppLockArgs: string;
Expand All @@ -24,6 +25,9 @@ const launchRgppAsset = async ({ ownerRgbppLockArgs, launchAmount, rgbppTokenInf
isMainnet,
});

// Save ckbVirtualTxResult
saveCkbVirtualTxResult(ckbVirtualTxResult, '2-launch-rgbpp');

const { commitment, ckbRawTx } = ckbVirtualTxResult;

console.log('RGB++ Asset type script args: ', ckbRawTx.outputs[0].type?.args);
Expand Down
4 changes: 4 additions & 0 deletions examples/rgbpp/xudt/launch/3-distribute-rgbpp.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import {
updateCkbTxWithRealBtcTxId,
} from 'rgbpp/ckb';
import { transactionToHex } from 'rgbpp/btc';
import { saveCkbVirtualTxResult } from '../../shared/utils';

interface Params {
rgbppLockArgsList: string[];
Expand All @@ -43,6 +44,9 @@ const distributeRgbppAssetOnBtc = async ({ rgbppLockArgsList, receivers, xudtTyp
isMainnet,
});

// Save ckbVirtualTxResult
saveCkbVirtualTxResult(ckbVirtualTxResult, '3-distribute-rgbpp');

const { commitment, ckbRawTx, sumInputsCapacity, rgbppChangeOutIndex } = ckbVirtualTxResult;

// The first output utxo is OP_RETURN
Expand Down
4 changes: 4 additions & 0 deletions examples/rgbpp/xudt/local/2-btc-transfer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
} from 'rgbpp/ckb';
import { isMainnet, collector, btcAddress, btcDataSource, btcKeyPair, btcService } from '../../env';
import { transactionToHex } from 'rgbpp/btc';
import { saveCkbVirtualTxResult } from '../../shared/utils';

interface RgbppTransferParams {
rgbppLockArgsList: string[];
Expand All @@ -32,6 +33,9 @@ const transfer = async ({ rgbppLockArgsList, toBtcAddress, xudtTypeArgs, transfe
isMainnet,
});

// Save ckbVirtualTxResult
saveCkbVirtualTxResult(ckbVirtualTxResult, '2-btc-transfer-local');

const { commitment, ckbRawTx } = ckbVirtualTxResult;

// Send BTC tx
Expand Down
4 changes: 4 additions & 0 deletions examples/rgbpp/xudt/local/3-btc-leap-ckb.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
} from 'rgbpp/ckb';
import { isMainnet, collector, btcAddress, btcDataSource, btcKeyPair, btcService } from '../../env';
import { transactionToHex } from 'rgbpp/btc';
import { saveCkbVirtualTxResult } from '../../shared/utils';

interface LeapToCkbParams {
rgbppLockArgsList: string[];
Expand All @@ -33,6 +34,9 @@ const leapFromBtcToCkb = async ({ rgbppLockArgsList, toCkbAddress, xudtTypeArgs,
isMainnet,
});

// Save ckbVirtualTxResult
saveCkbVirtualTxResult(ckbVirtualTxResult, '3-btc-leap-ckb-local');

const { commitment, ckbRawTx } = ckbVirtualTxResult;

// Send BTC tx
Expand Down