public static void IzeBitvector(out UInt256 root, BitArray value) { Merkleizer merkleizer = new Merkleizer(0); merkleizer.FeedBitvector(value); merkleizer.CalculateRoot(out root); }
public static void Ize(out UInt256 root, BeaconState?container) { if (container is null) { root = RootOfNull; return; } Merkleizer merkleizer = new Merkleizer(5); merkleizer.Feed(container.GenesisTime); merkleizer.Feed(container.Slot); merkleizer.Feed(container.Fork); merkleizer.Feed(container.LatestBlockHeader); merkleizer.Feed(container.BlockRoots); merkleizer.Feed(container.StateRoots); merkleizer.Feed(container.HistoricalRoots.ToArray(), Ssz.HistoricalRootsLimit); merkleizer.Feed(container.Eth1Data); merkleizer.Feed(container.Eth1DataVotes.ToArray(), (uint)Ssz.SlotsPerEth1VotingPeriod); merkleizer.Feed(container.Eth1DepositIndex); merkleizer.Feed(container.Validators, Ssz.ValidatorRegistryLimit); merkleizer.Feed(container.Balances.ToArray().ToArray()); merkleizer.Feed(container.PreviousEpochAttestations, Ssz.MaxAttestations * Ssz.SlotsPerEpoch); merkleizer.Feed(container.CurrentEpochAttestations, Ssz.MaxAttestations * Ssz.SlotsPerEpoch); merkleizer.FeedBitvector(container.JustificationBits); merkleizer.Feed(container.PreviousJustifiedCheckpoint); merkleizer.Feed(container.CurrentJustifiedCheckpoint); merkleizer.Feed(container.FinalizedCheckpoint); merkleizer.CalculateRoot(out root); }