PHP WebShell
Текущая директория: /opt/BitGoJS/modules/sdk-coin-apt/src/lib/transactionBuilder
Просмотр файла: digitalAssetTransferBuilder.ts
import { TransactionBuilder } from './transactionBuilder';
import { BaseCoin as CoinConfig } from '@bitgo/statics';
import { TransactionType } from '@bitgo/sdk-core';
import utils from '../utils';
import { TransactionPayload, TransactionPayloadEntryFunction } from '@aptos-labs/ts-sdk';
import { DigitalAssetTransfer } from '../transaction/digitalAssetTransfer';
import { DIGITAL_ASSET_TYPE_ARGUMENT } from '../constants';
export class DigitalAssetTransferBuilder extends TransactionBuilder {
constructor(_coinConfig: Readonly<CoinConfig>) {
super(_coinConfig);
this._transaction = new DigitalAssetTransfer(_coinConfig);
}
protected get transactionType(): TransactionType {
return TransactionType.SendNFT;
}
assetId(assetId: string): TransactionBuilder {
this.validateAddress({ address: assetId });
this.transaction.assetId = assetId;
return this;
}
/** @inheritdoc */
validateTransaction(transaction?: DigitalAssetTransfer): void {
if (!transaction) {
throw new Error('transaction not defined');
}
super.validateTransaction(transaction);
this.validateAddress({ address: transaction.assetId });
}
protected isValidTransactionPayload(payload: TransactionPayload) {
try {
if (
!(payload instanceof TransactionPayloadEntryFunction) ||
payload.entryFunction.args.length !== 2 ||
payload.entryFunction.type_args.length !== 1 ||
DIGITAL_ASSET_TYPE_ARGUMENT !== payload.entryFunction.type_args[0].toString()
) {
console.error('invalid transaction payload');
return false;
}
const entryFunction = payload.entryFunction;
const digitalAssetAddress = entryFunction.args[0].toString();
const recipientAddress = entryFunction.args[1].toString();
return utils.isValidAddress(recipientAddress) && utils.isValidAddress(digitalAssetAddress);
} catch (e) {
console.error('invalid transaction payload', e);
return false;
}
}
}
Выполнить команду
Для локальной разработки. Не используйте в интернете!