@lodestar/api
Version:
A Typescript REST client for the Ethereum Consensus API
52 lines • 2.65 kB
JavaScript
import { ProofType } from "@chainsafe/persistent-merkle-tree";
import { ByteListType, ContainerType } from "@chainsafe/ssz";
import { ssz } from "@lodestar/types";
import { fromHex, toHex } from "@lodestar/utils";
import { ArrayOf } from "../../utils/codecs.js";
import { Schema } from "../../utils/index.js";
import { VersionCodec } from "../../utils/metadata.js";
export const CompactMultiProofType = new ContainerType({
leaves: ArrayOf(ssz.Root, 10000),
descriptor: new ByteListType(2048),
});
export function getDefinitions(_config) {
return {
getStateProof: {
url: "/eth/v0/beacon/proof/state/{state_id}",
method: "GET",
req: {
writeReq: ({ stateId, descriptor }) => ({ params: { state_id: stateId }, query: { format: toHex(descriptor) } }),
parseReq: ({ params, query }) => ({ stateId: params.state_id, descriptor: fromHex(query.format) }),
schema: { params: { state_id: Schema.StringRequired }, query: { format: Schema.StringRequired } },
},
resp: {
data: {
toJson: (data) => CompactMultiProofType.toJson(data),
fromJson: (data) => ({ ...CompactMultiProofType.fromJson(data), type: ProofType.compactMulti }),
serialize: (data) => CompactMultiProofType.serialize(data),
deserialize: (data) => ({ ...CompactMultiProofType.deserialize(data), type: ProofType.compactMulti }),
},
meta: VersionCodec,
},
},
getBlockProof: {
url: "/eth/v0/beacon/proof/block/{block_id}",
method: "GET",
req: {
writeReq: ({ blockId, descriptor }) => ({ params: { block_id: blockId }, query: { format: toHex(descriptor) } }),
parseReq: ({ params, query }) => ({ blockId: params.block_id, descriptor: fromHex(query.format) }),
schema: { params: { block_id: Schema.StringRequired }, query: { format: Schema.StringRequired } },
},
resp: {
data: {
toJson: (data) => CompactMultiProofType.toJson(data),
fromJson: (data) => ({ ...CompactMultiProofType.fromJson(data), type: ProofType.compactMulti }),
serialize: (data) => CompactMultiProofType.serialize(data),
deserialize: (data) => ({ ...CompactMultiProofType.deserialize(data), type: ProofType.compactMulti }),
},
meta: VersionCodec,
},
},
};
}
//# sourceMappingURL=proof.js.map