@chainsafe/eth2.0-ssz-types
Version:
SSZ types required for eth2.0
129 lines (97 loc) • 4.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.MerkleTree = exports.FFGData = exports.BeaconBlockHeader = exports.CompactCommittee = exports.DepositData = exports.HistoricalBatch = exports.Eth1Data = exports.PendingAttestation = exports.IndexedAttestation = exports.AttestationDataAndCustodyBit = exports.AttestationData = exports.Crosslink = exports.Validator = exports.Checkpoint = exports.Fork = void 0;
var _constants = require("../constants");
/**
* @module sszTypes/generators
*/
const Fork = ssz => ({
fields: [["previousVersion", ssz.Version], ["currentVersion", ssz.Version], ["epoch", ssz.Epoch]]
});
exports.Fork = Fork;
const Checkpoint = ssz => ({
fields: [["epoch", ssz.Epoch], ["root", ssz.Hash]]
});
exports.Checkpoint = Checkpoint;
const Validator = ssz => ({
fields: [["pubkey", ssz.BLSPubkey], ["withdrawalCredentials", ssz.Hash], ["effectiveBalance", ssz.Gwei], ["slashed", ssz.bool], ["activationEligibilityEpoch", ssz.Epoch], ["activationEpoch", ssz.Epoch], ["exitEpoch", ssz.Epoch], ["withdrawableEpoch", ssz.Epoch]]
});
exports.Validator = Validator;
const Crosslink = ssz => ({
fields: [["shard", ssz.Shard], ["parentRoot", ssz.Hash], ["startEpoch", ssz.Epoch], ["endEpoch", ssz.Epoch], ["dataRoot", ssz.Hash]]
});
exports.Crosslink = Crosslink;
const AttestationData = ssz => ({
fields: [["beaconBlockRoot", ssz.Hash], ["source", ssz.Checkpoint], ["target", ssz.Checkpoint], ["crosslink", ssz.Crosslink]]
});
exports.AttestationData = AttestationData;
const AttestationDataAndCustodyBit = ssz => ({
fields: [["data", ssz.AttestationData], ["custodyBit", ssz.bool]]
});
exports.AttestationDataAndCustodyBit = AttestationDataAndCustodyBit;
const IndexedAttestation = (ssz, params) => ({
fields: [["custodyBit0Indices", {
elementType: ssz.ValidatorIndex,
maxLength: params.MAX_VALIDATORS_PER_COMMITTEE
}], ["custodyBit1Indices", {
elementType: ssz.ValidatorIndex,
maxLength: params.MAX_VALIDATORS_PER_COMMITTEE
}], ["data", ssz.AttestationData], ["signature", ssz.BLSSignature]]
});
exports.IndexedAttestation = IndexedAttestation;
const PendingAttestation = (ssz, params) => ({
fields: [["aggregationBits", {
elementType: ssz.bool,
maxLength: params.MAX_VALIDATORS_PER_COMMITTEE
}], ["data", ssz.AttestationData], ["inclusionDelay", ssz.Slot], ["proposerIndex", ssz.ValidatorIndex]]
});
exports.PendingAttestation = PendingAttestation;
const Eth1Data = ssz => ({
fields: [["depositRoot", ssz.Hash], ["depositCount", ssz.number64], ["blockHash", ssz.Hash]]
});
exports.Eth1Data = Eth1Data;
const HistoricalBatch = (ssz, params) => ({
fields: [["blockRoots", {
elementType: ssz.bytes32,
length: params.SLOTS_PER_HISTORICAL_ROOT
}], ["stateRoots", {
elementType: ssz.bytes32,
length: params.SLOTS_PER_HISTORICAL_ROOT
}]]
});
exports.HistoricalBatch = HistoricalBatch;
const DepositData = ssz => ({
fields: [["pubkey", ssz.BLSPubkey], ["withdrawalCredentials", ssz.Hash], ["amount", ssz.Gwei], ["signature", ssz.BLSSignature]]
});
exports.DepositData = DepositData;
const CompactCommittee = (ssz, params) => ({
fields: [["pubkeys", {
elementType: ssz.BLSPubkey,
maxLength: params.MAX_VALIDATORS_PER_COMMITTEE
}], ["compactValidators", {
elementType: ssz.uint64,
maxLength: params.MAX_VALIDATORS_PER_COMMITTEE
}]]
});
exports.CompactCommittee = CompactCommittee;
const BeaconBlockHeader = ssz => ({
fields: [["slot", ssz.Slot], ["parentRoot", ssz.Hash], ["stateRoot", ssz.Hash], ["bodyRoot", ssz.Hash], ["signature", ssz.BLSSignature]]
});
exports.BeaconBlockHeader = BeaconBlockHeader;
const FFGData = ssz => ({
fields: [["source", ssz.Checkpoint], ["target", ssz.Checkpoint]]
});
exports.FFGData = FFGData;
const MerkleTree = ssz => ({
fields: [["depth", ssz.number64], ["tree", {
elementType: {
elementType: ssz.Hash,
maxLength: _constants.DEPOSIT_CONTRACT_TREE_DEPTH
},
maxLength: _constants.DEPOSIT_CONTRACT_TREE_DEPTH
}]]
});
exports.MerkleTree = MerkleTree;
//# sourceMappingURL=misc.js.map