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Выполнить команду
Для локальной разработки. Не используйте в интернете!