UNPKG

@aeternity/aepp-sdk

Version:

SDK for the æternity blockchain

57 lines 1.99 kB
import { Buffer as _Buffer } from "buffer"; import { ConsensusProtocolVersion, VmVersion, AbiVersion } from '../constants.js'; /* * First abi/vm by default * @see {@link https://github.com/aeternity/protocol/blob/71cf111/contracts/contract_vms.md#virtual-machines-on-the-æternity-blockchain} */ export const ProtocolToVmAbi = { [ConsensusProtocolVersion.Ceres]: { 'contract-create': { vmVersion: [VmVersion.Fate3], abiVersion: [AbiVersion.Fate] }, 'contract-call': { vmVersion: [], abiVersion: [AbiVersion.Fate] }, 'oracle-call': { vmVersion: [], abiVersion: [AbiVersion.NoAbi, AbiVersion.Fate] } } }; export function getProtocolDetails(protocolVersion, type) { var _protocol$vmVersion$; const protocol = ProtocolToVmAbi[protocolVersion][type]; return { vmVersion: (_protocol$vmVersion$ = protocol.vmVersion[0]) !== null && _protocol$vmVersion$ !== void 0 ? _protocol$vmVersion$ : VmVersion.Fate2, abiVersion: protocol.abiVersion[0] }; } export default { serialize(value, params, { consensusProtocolVersion = ConsensusProtocolVersion.Ceres }) { value !== null && value !== void 0 ? value : value = getProtocolDetails(consensusProtocolVersion, 'contract-create'); return _Buffer.from([value.vmVersion, 0, value.abiVersion]); }, async prepare(value, params, // TODO: { consensusProtocolVersion: ConsensusProtocolVersion } | { onNode: Node } | {} options) { if (value != null) return value; if (options.consensusProtocolVersion != null) return undefined; if (Object.keys(ConsensusProtocolVersion).length === 2) return undefined; if (options.onNode != null) { return getProtocolDetails((await options.onNode.getNodeInfo()).consensusProtocolVersion, 'contract-create'); } return undefined; }, deserialize(buffer) { const [vm,, abi] = buffer; return { vmVersion: +vm, abiVersion: +abi }; } }; //# sourceMappingURL=ct-version.js.map