Exemplo n.º 1
0
        /// <summary>Si aggancia all'ultimo blocco disponibile e genera tutto il necessario per inserire in coda il blocco che si sta creando.</summary>
        /// <param name="blocco">Blocco della catena generato dal costruttore</param>
        #endregion
        public void AggiungiBlocco(Blocco blocco)
        {
            // prende i dati inerenti al blocco precedente rispetto a quello da aggiungere
            var ultimoBlocco = GetUltimoBlocco();

            // aumenta l'indice del blocco +1 rispetto a precedente
            blocco.Indice = ultimoBlocco.Indice + 1;

            // calcola il suo hash partendo da quello del precedente
            blocco.HashPrecedente = ultimoBlocco.HashBloccoCorrente;

            // dopo aver inserito difficoltà posso effettuare il mining
            blocco.Mina(Difficoltà);

            // aggiunge il blocco alla catena
            Catena.Add(blocco);
        }
Exemplo n.º 2
0
        public Button(
            IResizeableRegion region,
            string name,
            Catena content,
            Alignments alignments,
            TerminalColors?backgroundFill = null)
            : base(region, name)
        {
            this.onFired = new Observable <bool>();

            this.backingLabel = new Label(
                region,
                name + ".Content",
                content,
                alignments,
                backgroundFill);
        }
Exemplo n.º 3
0
        public Label(
            IResizeableRegion region,
            string name,
            Catena content,
            Alignments alignments,
            TerminalColors?backgroundFill = null,
            bool synchronousDraw          = true)
            : base(region, name)
        {
            if (content is null)
            {
                throw new ArgumentNullException(nameof(content));
            }

            this.content                = content;
            this.alignments             = alignments;
            this.backgroundFill         = backgroundFill;
            this.synchronousDraw        = synchronousDraw;
            this.preceedingLinesSkipped = 0;

            this.cacheLock = new object();
            this.cached    = null !;

            this.AddDisposable(
                region.OnChanged.Subscribe(
                    new Observer <RegionChangedEventArgs>(
                        x =>
            {
                lock (this.cacheLock)
                {
                    if (x.ChangeTypes.HasFlag(RegionChangeTypes.Resize))
                    {
                        this.MaximumVisibleLines = (ushort)x.AfterChange.ActualHeight;
                        this.cached =
                            this.Generate(x.BeforeChange.ActualWidth != x.AfterChange.ActualWidth);
                    }

                    this.RequestRedraw(x.BeforeChange, x.AfterChange);
                }
            })));

            this.cached = this.Generate(true);
        }
        public void AggiungiBlocco(Blocco blocco)
        {
            //prende i dati inerenti al blocco precedente rispetto a quello da aggiungere
            Blocco latestBlock = GetUltimoBlocco();

            //aumenta l'indice del blocco +1 rispetto a precedente
            blocco.Indice = latestBlock.Indice + 1;

            // calcola il suo hash partendo da quello del precedente
            blocco.HashPrecedente = latestBlock.HashAttuale;

            //instruzione non necessaria quando si introduce il concetto di MINING
            //blocco.HashAttuale = blocco.CalcolaHash();

            //dopo aver inserito difficoltà posso integrare operazioni di mining
            blocco.Mina(Difficoltà);

            //aggiunge il blocco alla catena
            Catena.Add(blocco);
        }
 public void AggiungiBlocco()
 {
     Catena.Add(AggiungiBLocco());
 }
        //con l'implementazione della classe transazione non è più necessario
        //public Blocco AggiungiBlocco()
        //{
        //    //aggiungo un blocco passando al costruttore (data, il valore dell'hash precedente, transazione)
        //    return new Blocco(DateTime.Now, null, "{}");
        //}

        public void AggiungiBloccoIniziale()
        {
            //Catena.Add(AggiungiBlocco());
            Catena.Add(CreaBloccoIniziale());
        }