Skip to content

Commit

Permalink
Merge pull request #193 from ckb-cell/feat/save-ckbvirtualtx-result
Browse files Browse the repository at this point in the history
refactor(examples): Save ckbVirtualTxResult locally
  • Loading branch information
Flouse authored May 26, 2024
2 parents 6e1b54b + c1a9729 commit f4d18fa
Show file tree
Hide file tree
Showing 14 changed files with 97 additions and 0 deletions.
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

0 comments on commit f4d18fa

Please sign in to comment.