예제 #1
0
        public bool VerifyBlock(BlockBase blockBase)
        {
            SignedBlockBase signedBlockBase = (SignedBlockBase)blockBase;

            byte[] messageBody = signedBlockBase.BodyBytes.ToArray();
            byte[] signature   = signedBlockBase.Signature.ToArray();
            byte[] publickKey  = signedBlockBase.Signer.Value.ToArray();

            if (!VerifySignature(messageBody, signature, publickKey))
            {
                _log.Error("Signature is invalid");
                return(false);
            }

            return(true);
        }
예제 #2
0
        protected override Memory <byte> ParseSigned(ushort version, Memory <byte> spanBody, out SignedBlockBase signedBlockBase)
        {
            ulong           blockHeight = BinaryPrimitives.ReadUInt64LittleEndian(spanBody.Span);
            SyncedBlockBase syncedBlockBase;
            Memory <byte>   spanPostBody = ParseSynced(version, spanBody.Slice(8), out syncedBlockBase);

            syncedBlockBase.BlockHeight = blockHeight;
            signedBlockBase             = syncedBlockBase;

            return(spanPostBody);
        }
예제 #3
0
 protected abstract Memory <byte> ParseSigned(ushort version, Memory <byte> spanBody, out SignedBlockBase signedBlockBase);