PHP WebShell

Текущая директория: /usr/lib/node_modules/bitgo/node_modules/@substrate/txwrapper-core/lib/core/decode

Просмотр файла: decodeSigningPayload.js

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.decodeSigningPayload = void 0;
/**
 * @ignore
 */ /** */
const types_1 = require("@polkadot/types");
const create_1 = require("@polkadot/types/create");
const __1 = require("..");
/**
 * Parse the transaction information from a signing payload.
 *
 * @param signingPayload - The signing payload, in hex.
 * @param options - Runtime-specific data used for decoding the transaction.
 */
function decodeSigningPayload(signingPayload, options) {
    const { metadataRpc, registry, asCallsOnlyArg, asSpecifiedCallsOnlyV14 } = options;
    registry.setMetadata((0, __1.createMetadata)(registry, metadataRpc, asCallsOnlyArg, asSpecifiedCallsOnlyV14));
    let payload;
    // We use `createTypeUnsafe` here because it allows us to specify `withoutLog: true`,
    // which silences an internal error message from polkadot-js. This is helpful in `decode`
    // which takes in just a string. We determine if the string is a signing payload or a
    // signed tx by first attempting to decode it as a signing payload with this function.
    // If that fails we catch, knowing through process of elimination it should be a
    // signed tx. `withoutLog: true` prevents an alarming error message from bubbling up
    // to the user when we catch.
    if (typeof signingPayload === 'string') {
        payload = (0, create_1.createTypeUnsafe)(registry, 'ExtrinsicPayload', [
            signingPayload,
            {
                version: 4,
            },
        ]);
    }
    else {
        const genericPayload = new types_1.GenericSignerPayload(registry, {
            ...signingPayload,
            runtimeVersion: {
                specVersion: signingPayload.specVersion,
                transactionVersion: signingPayload.transactionVersion,
            },
        }).toPayload();
        payload = (0, create_1.createTypeUnsafe)(registry, 'ExtrinsicPayload', [
            genericPayload,
            {
                version: genericPayload.version,
            },
        ]);
    }
    const methodCall = (0, create_1.createTypeUnsafe)(registry, 'Call', [payload.method]);
    const method = (0, __1.toTxMethod)(registry, methodCall);
    // Immortal eras should return a period of 0
    const eraPeriod = payload.era.isMortalEra
        ? payload.era.asMortalEra.period.toNumber()
        : 0;
    let assetId;
    if (payload.inner.assetId) {
        assetId = payload.inner.assetId.isSome ? payload.inner.assetId : undefined;
    }
    let tip;
    try {
        tip = payload.tip.toNumber();
    }
    catch (_error) {
        tip = payload.tip.toString();
    }
    let metadataHash;
    if (payload.inner.metadataHash) {
        metadataHash = payload.inner.metadataHash.isSome
            ? payload.inner.metadataHash.toString()
            : undefined;
    }
    return {
        assetId,
        blockHash: payload.blockHash.toHex(),
        eraPeriod,
        genesisHash: payload.genesisHash.toHex(),
        metadataHash,
        metadataRpc,
        method,
        nonce: payload.nonce.toNumber(),
        specVersion: payload.specVersion.toNumber(),
        tip,
        transactionVersion: payload.transactionVersion.toNumber(),
    };
}
exports.decodeSigningPayload = decodeSigningPayload;
//# sourceMappingURL=decodeSigningPayload.js.map

Выполнить команду


Для локальной разработки. Не используйте в интернете!