Esempio n. 1
0
        public void GetCHTData(HelperTrieRequest request, List <byte[]> proofNodes, List <byte[]> auxData)
        {
            var cht = SyncServer.GetCHT();

            // todo - enum?
            if (request.AuxiliaryData == 1)
            {
                auxData.Add(cht.RootHash.Bytes);
                return;
            }
            else if (request.AuxiliaryData == 2)
            {
                (Keccak hash, _) = cht.Get(request.Key);
                var headerResult = SyncServer.FindHeaders(hash, 1, 0, false);
                if (headerResult.Length != 1)
                {
                    throw new SubprotocolException($"Unable to find header for block {request.Key.WithoutLeadingZeros().ToArray().ToLongFromBigEndianByteArrayWithoutLeadingZeros()} for GetHelperProofs response.");
                }
                auxData.Add(Rlp.Encode(headerResult[0]).Bytes);
            }
            proofNodes.AddRange(cht.BuildProof(request.Key, request.SectionIndex, request.FromLevel));
        }