示例#1
0
        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.Ssz.HistoricalRootsLimit);
            merkleizer.Feed(container.Eth1Data);
            merkleizer.Feed(container.Eth1DataVotes.ToArray(), (uint)Ssz.Ssz.SlotsPerEth1VotingPeriod);
            merkleizer.Feed(container.Eth1DepositIndex);
            merkleizer.Feed(container.Validators, Ssz.Ssz.ValidatorRegistryLimit);
            merkleizer.Feed(container.Balances.ToArray().ToArray());
            merkleizer.Feed(container.PreviousEpochAttestations, Ssz.Ssz.MaxAttestations * Ssz.Ssz.SlotsPerEpoch);
            merkleizer.Feed(container.CurrentEpochAttestations, Ssz.Ssz.MaxAttestations * Ssz.Ssz.SlotsPerEpoch);
            merkleizer.FeedBitvector(container.JustificationBits);
            merkleizer.Feed(container.PreviousJustifiedCheckpoint);
            merkleizer.Feed(container.CurrentJustifiedCheckpoint);
            merkleizer.Feed(container.FinalizedCheckpoint);
            merkleizer.CalculateRoot(out root);
        }
示例#2
0
        public static void IzeBitvector(out UInt256 root, BitArray value)
        {
            Merkleizer merkleizer = new Merkleizer(0);

            merkleizer.FeedBitvector(value);
            merkleizer.CalculateRoot(out root);
        }