示例#1
0
        private Bloco CriarNovoBloco(List <Transacao> transacoes = null)
        {
            string chaveBlocoAnterior = _ultimoBloco?.Chave;
            Int64  provaBlocoAnterior = _ultimoBloco != null ? _ultimoBloco.Prova : _provaInicial;

            Bloco bloco = new Bloco
            {
                Altura             = Contexto.Blocos.Count() + 1,
                ChaveBlocoAnterior = chaveBlocoAnterior,
                CriadoEm           = DateTime.UtcNow,
                Transacoes         = transacoes
            };

            bloco.Chave = bloco.ObterChave();
            bloco.Prova = CriarProva(bloco.Chave, chaveBlocoAnterior, provaBlocoAnterior);
            bloco.Bits  = bloco.ObterBits();

            AtualizarBlocoAnterior(bloco.Chave);

            Contexto.Blocos.Add(bloco);
            Contexto.SaveChanges();
            return(bloco);
        }