/// <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); }
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); }
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()); }