@aeternity/aepp-sdk
Version:
SDK for the æternity blockchain
57 lines • 1.99 kB
JavaScript
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