PHP WebShell

Текущая директория: /opt/BitGoJS/node_modules/@stacks/transactions/dist/esm

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

import { Buffer, intToBigInt, intToBytes } from '@stacks/common';
import { COINBASE_BUFFER_LENGTH_BYTES, PayloadType, StacksMessageType } from './constants';
import { BufferArray } from './utils';
import { createAddress, createMemoString, createLPString, serializeStacksMessage, deserializeAddress, deserializeLPString, deserializeMemoString, codeBodyString, } from './types';
import { serializeCV, deserializeCV } from './clarity/';
import { principalCV } from './clarity/types/principalCV';
export function createTokenTransferPayload(recipient, amount, memo) {
    if (typeof recipient === 'string') {
        recipient = principalCV(recipient);
    }
    if (typeof memo === 'string') {
        memo = createMemoString(memo);
    }
    return {
        type: StacksMessageType.Payload,
        payloadType: PayloadType.TokenTransfer,
        recipient,
        amount: intToBigInt(amount, false),
        memo: memo !== null && memo !== void 0 ? memo : createMemoString(''),
    };
}
export function createContractCallPayload(contractAddress, contractName, functionName, functionArgs) {
    if (typeof contractAddress === 'string') {
        contractAddress = createAddress(contractAddress);
    }
    if (typeof contractName === 'string') {
        contractName = createLPString(contractName);
    }
    if (typeof functionName === 'string') {
        functionName = createLPString(functionName);
    }
    return {
        type: StacksMessageType.Payload,
        payloadType: PayloadType.ContractCall,
        contractAddress,
        contractName,
        functionName,
        functionArgs,
    };
}
export function createSmartContractPayload(contractName, codeBody) {
    if (typeof contractName === 'string') {
        contractName = createLPString(contractName);
    }
    if (typeof codeBody === 'string') {
        codeBody = codeBodyString(codeBody);
    }
    return {
        type: StacksMessageType.Payload,
        payloadType: PayloadType.SmartContract,
        contractName,
        codeBody,
    };
}
export function createPoisonPayload() {
    return { type: StacksMessageType.Payload, payloadType: PayloadType.PoisonMicroblock };
}
export function createCoinbasePayload(coinbaseBuffer) {
    if (coinbaseBuffer.byteLength != COINBASE_BUFFER_LENGTH_BYTES) {
        throw Error(`Coinbase buffer size must be ${COINBASE_BUFFER_LENGTH_BYTES} bytes`);
    }
    return { type: StacksMessageType.Payload, payloadType: PayloadType.Coinbase, coinbaseBuffer };
}
export function serializePayload(payload) {
    const bufferArray = new BufferArray();
    bufferArray.appendByte(payload.payloadType);
    switch (payload.payloadType) {
        case PayloadType.TokenTransfer:
            bufferArray.push(serializeCV(payload.recipient));
            bufferArray.push(intToBytes(payload.amount, false, 8));
            bufferArray.push(serializeStacksMessage(payload.memo));
            break;
        case PayloadType.ContractCall:
            bufferArray.push(serializeStacksMessage(payload.contractAddress));
            bufferArray.push(serializeStacksMessage(payload.contractName));
            bufferArray.push(serializeStacksMessage(payload.functionName));
            const numArgs = Buffer.alloc(4);
            numArgs.writeUInt32BE(payload.functionArgs.length, 0);
            bufferArray.push(numArgs);
            payload.functionArgs.forEach(arg => {
                bufferArray.push(serializeCV(arg));
            });
            break;
        case PayloadType.SmartContract:
            bufferArray.push(serializeStacksMessage(payload.contractName));
            bufferArray.push(serializeStacksMessage(payload.codeBody));
            break;
        case PayloadType.PoisonMicroblock:
            break;
        case PayloadType.Coinbase:
            bufferArray.push(payload.coinbaseBuffer);
            break;
    }
    return bufferArray.concatBuffer();
}
export function deserializePayload(bufferReader) {
    const payloadType = bufferReader.readUInt8Enum(PayloadType, n => {
        throw new Error(`Cannot recognize PayloadType: ${n}`);
    });
    switch (payloadType) {
        case PayloadType.TokenTransfer:
            const recipient = deserializeCV(bufferReader);
            const amount = intToBigInt(bufferReader.readBuffer(8), false);
            const memo = deserializeMemoString(bufferReader);
            return createTokenTransferPayload(recipient, amount, memo);
        case PayloadType.ContractCall:
            const contractAddress = deserializeAddress(bufferReader);
            const contractCallName = deserializeLPString(bufferReader);
            const functionName = deserializeLPString(bufferReader);
            const functionArgs = [];
            const numberOfArgs = bufferReader.readUInt32BE();
            for (let i = 0; i < numberOfArgs; i++) {
                const clarityValue = deserializeCV(bufferReader);
                functionArgs.push(clarityValue);
            }
            return createContractCallPayload(contractAddress, contractCallName, functionName, functionArgs);
        case PayloadType.SmartContract:
            const smartContractName = deserializeLPString(bufferReader);
            const codeBody = deserializeLPString(bufferReader, 4, 100000);
            return createSmartContractPayload(smartContractName, codeBody);
        case PayloadType.PoisonMicroblock:
            return createPoisonPayload();
        case PayloadType.Coinbase:
            const coinbaseBuffer = bufferReader.readBuffer(COINBASE_BUFFER_LENGTH_BYTES);
            return createCoinbasePayload(coinbaseBuffer);
    }
}
//# sourceMappingURL=payload.js.map

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


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