DE102022113177A1 - Verbesserte konsensdatenfilterung bei proof-of-space-blockchain-systemen - Google Patents

Verbesserte konsensdatenfilterung bei proof-of-space-blockchain-systemen Download PDF

Info

Publication number
DE102022113177A1
DE102022113177A1 DE102022113177.7A DE102022113177A DE102022113177A1 DE 102022113177 A1 DE102022113177 A1 DE 102022113177A1 DE 102022113177 A DE102022113177 A DE 102022113177A DE 102022113177 A1 DE102022113177 A1 DE 102022113177A1
Authority
DE
Germany
Prior art keywords
value
data
plot
blockchain
challenge
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102022113177.7A
Other languages
English (en)
Inventor
Shashank Agrawal
Cyril Guyot
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE102022113177A1 publication Critical patent/DE102022113177A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3271Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using challenge-response
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3297Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving time stamps, e.g. generation of time stamps
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Blockchain-Systeme arbeiten über ein Netzwerk von Rechnervorrichtungen. Proof-of-Space-Blockchain-Konsenssysteme verwenden Daten, die in Speicherungsvorrichtungen über die Rechnervorrichtungen innerhalb des Netzwerks gespeichert sind. Diese Speicherungsvorrichtungen werden verwendet, um Proof-of-Space-Konsensdaten zu erzeugen und zu speichern. Auf diese Daten wird dann zu einem späteren Zeitpunkt zugegriffen, um auf Challenges zu antworten, die über das Blockchain-Netzwerk ausgegeben werden. Um die erfolgreichen Übermittlungen dieser Challenge-Reaktionen zu begrenzen, werden ein oder mehrere Filter verwendet. Diese Filter führen dazu, dass nur ein Bruchteil der gespeicherten Daten auf einer Speicherungsvorrichtung für die Lösung der Blockchain-Challenge verwendbar zu sein. Angreifer könnten versuchen, diesen Filter zu umgehen, um ihre Chancen zu erhöhen, eine genehmigte Lösung für die Blockchain-Challenge zu übermitteln. Um dies zu beheben, werden zusätzliche Datenstrukturen in der Speicherungsvorrichtung gespeichert und zum Zeitpunkt der Erstellung in der Blockchain registriert, um diese Filter robuster zu machen.

Description

  • GEBIET
  • Die vorliegende Offenbarung bezieht sich auf Speicherungssysteme. Insbesondere bezieht sich die vorliegende Offenbarung auf die Verbesserung der verfügbaren Filtertechniken, um die Sicherheit in Systemen zu verbessern, die für Proof-of-Space-Blockchain-Anwendungen verwendet werden.
  • HINTERGRUND
  • Speicherungsvorrichtungen sind innerhalb von Rechensystemen ubiquitär. In jüngster Zeit werden Solid-State Speicherungsvorrichtungen (SSDs) neben herkömmlichen Magnetspeicherungslaufwerken verwendet. Diese nicht-flüchtigen Speicherungsvorrichtungen können kommunizieren und verwenden verschiedene Protokolle, einschließlich Non-Volatile-Memory-Express (NVMe) und Peripheral-Component-Interconnect-Express (PCIe), um den Verarbeitungsaufwand zu reduzieren und die Effizienz zu erhöhen.
  • Zunehmend werden diese Speicherungsvorrichtungen in Blockchain-Systemen verwendet. Blockchain-Miner betreiben Rechnersysteme, die über ein Netzwerk wie das Internet miteinander verbunden sind und duplizierte Kopien eines Ledgers gemeinsam nutzen, der eine Reihe von Datenblöcken umfasst, die jede Verknüpfung zum vorherigen Block zurückschalten. Dieses verteilte Ledger-System ermöglicht die Verarbeitung dezentraler Daten einschließlich Kryptowährung. Durch die Verwendung verschiedener kryptographischer Verfahren auf Datenstrukturen, die im Netzwerk gemeinsam verwendet werden, kann das dezentrale Netzwerk Daten sicher verarbeiten, die für verschiedene Transaktionen zwischen den Parteien freigegeben werden können. Eine Hauptanforderung dafür ist, dass die verschiedenen Blockchain-Miner im Netzwerk alle mit den gleichen Blockchain-Daten übereinstimmen. Diese Vereinbarung kann durch ein Konsens-Verfahren erfolgen.
  • In der Vergangenheit war das Konsens-Verfahren bei Blockchain-Anwendungen ein „Proof-of-Work“-Konsens-Verfahren. Proof-of-Work erfordert, dass ein Mining-Computer auf dem Blockchain-Netzwerk eine Reihe von vorgeschlagenen Rechenproblemen löst. Diese Probleme werden über ein Challenge-Format auf alle Miner im Netzwerk verteilt. Durch Lösen der Challenge kann der Mining-Computer den nächsten Block vorschlagen, der zu der Blockchain hinzugefügt werden soll, und als Belohnung einen Teil der Kryptowährung erhalten, die der Blockchain zugeordnet ist. Das Proof-of-Work Konsens-Modell ist jedoch wegen seiner Auswirkungen auf die Umwelt und den Markt für die zur Lösung der Challenges erforderliche Computerhardware in die Kritik geraten.
  • Infolgedessen wurde ein „Proof-of-Space“ Konsens-Verfahren vorgeschlagen, das Speicherungsplatz anstelle von Rechenleistung verwendet, Im Allgemeinen beinhaltet der Proof-of-Space-Konsens das Erzeugen und Speichern von Blockchain-Daten auf einer Speicherungsvorrichtung, das Empfangen einer Challenge, das Erzeugen einer Antwort auf diese Challenge unter Verwendung der Daten und das Bereitstellen der Antwort an das Blockchain-Netzwerk zur Verifizierung. Die Struktur der gespeicherten Daten und die Art ihrer Verarbeitung können dazu führen, dass Rewards eher nach dem Lotterieprinzip vergeben werden, anstatt sie an den Benutzer mit der höchsten Verarbeitungsleistung zu vergeben.
  • Da Proof-of-Space-Netzwerke wachsen, wächst auch die Anzahl potenzieller Lösungen, da die gesuchten Daten zuvor auf Speicherungsvorrichtungen gespeichert wurden. Um zu verhindern, dass das Proof-of-Space-Blockchain-Netzwerk mit potenziellen Challenge-Lösungen übergangen wird, kann die Verarbeitung dieser Antworten auf die Challenges einen oder mehrere Schritte einschließen, die nach Bedarf verschiedene Antworten herausfiltern. Diese Filter können auch die Anzahl von Lesevorgängen reduzieren, die innerhalb der Speicherungsvorrichtung durchgeführt werden müssen, was andernfalls die Netzwerkbandbreite drosseln würde und die Chance, auf eine Challenge innerhalb des verfügbaren Zeitrahmens zu reagieren, reduziert. Somit ist bei sachgemäßer Konfiguration nur ein Bruchteil der potenziellen Challenge-Lösungen für jeden Challengezeitrahmen verwendbar.
  • Je größer das Blockchain-System jedoch wird und je mehr sich der Wert der Blockchain-Rewards erhöht, desto größer wird der Anreiz für einen böswilligen Miner, das System zu umgehen. Dies kann durch die Ermittlung eines Verfahrens erfolgen, das vermeidet, dass ihre Daten gefiltert werden. Der Filter kann eingerichtet sein, um nur einem geringen Anteil an möglichen Lösungen zu ermöglichen, für die Verifizierung durch das Blockchain-Netzwerk übermittelt zu werden. Wenn der Filter jedoch umgangen werden könnte, würde sich die Anzahl der Möglichkeiten für einen einzelnen Miner drastisch erhöhen.
  • Figurenliste
  • Die vorstehenden und andere Aspekte, Merkmale und Vorteile mehrerer Ausführungsformen der vorliegenden Offenbarung werden aus der folgenden Beschreibung, wie sie in Verbindung mit den folgenden mehreren Abbildungen der Zeichnungen dargestellt ist, deutlicher werden.
    • 1 ist konzeptionelles Diagramm eines Proof-of-Space- Konsens-Blockchain-Netzwerks gemäß einer Ausführungsform der Offenbarung;
    • 2 ist ein konzeptionelles Diagramm einer Blockchain;
    • 3A ist ein Flussdiagramm, das einen Prozess für das Mining von Kryptowährung unter Verwendung eines Proof-of-Space-Konsens-Verfahrens gemäß einer Ausführungsform der Offenbarung darstellt;
    • 3B ist ein Flussdiagramm, das einen Prozess zum Filtern und Qualifizieren von Proofs-of-Space gemäß Ausführungsformen der Offenbarung darstellt;
    • 4 ist ein konzeptionelles Diagramm von neuen Blöcken, die gemäß einer Ausführungsform der Offenbarung zu einer Chia-Blockchain hinzugefügt werden;
    • 5 ist eine konzeptionelle Darstellung einer Vielzahl von Hash-Tabellen zur Verwendung in einer Chia-Blockchain gemäß einer Ausführungsform der Offenbarung;
    • 6 ist ein Flussdiagramm, das einen Prozess zum Antworten auf Challenges innerhalb eines Chia-Blockchain-Netzwerks gemäß einer Ausführungsform der Offenbarung darstellt;
    • 7 ist eine konzeptionelle Veranschaulichung einer Hash-Baumstruktur;
    • 8 ist eine konzeptionelle Veranschaulichung einer Hash-Baumstruktur zur Verwendung innerhalb eines gesicherten Chia-Blockchain-Netzwerks gemäß einer Ausführungsform der Offenbarung;
    • 9 ist ein Flussdiagramm, das einen Prozess zur Integration von Hash-Baum-formatierten Daten innerhalb eines Chia-Plots gemäß einer Ausführungsform der Offenbarung darstellt;
    • 10 ist ein Flussdiagramm, das einen Prozess zur Erzeugung und Registrierung eines Plot-Datensatzes gemäß einer Ausführungsform der Offenbarung darstellt;
    • 11 ist ein Flussdiagramm, das einen Prozess zur Verwendung eines Commitment-Werts zum sicheren Verarbeiten von Chia-Blockchain-Challenges gemäß einer Ausführungsform der Offenbarung darstellt;
    • 12 ist ein konzeptionelles Diagramm, das zeigt, wie ein Hash-Baumpfad gemäß einer Ausführungsform der Offenbarung erzeugt werden kann;
    • 13 ist ein Flussdiagramm, das einen Prozess zum Verwenden eines Hash-Baumpfads für die Antwort auf eine Challenge gemäß einer Ausführungsform der Offenbarung darstellt; und
    • 14 ist ein schematisches Blockdiagramm einer Host-Rechnervorrichtung, die für eine Proof-of-Space-Konsens-Blockchain-Verarbeitung gemäß einer Ausführungsform der Offenbarung geeignet ist.
  • Entsprechende Bezugszeichen geben entsprechende Komponenten in den verschiedenen Figuren der Zeichnungen an. Elemente in den verschiedenen Figuren sind der Einfachheit und Klarheit halber dargestellt und wurden nicht notwendigerweise maßstabsgetreu gezeichnet. Zum Beispiel könnten die Abmessungen einiger der Elemente in den Figuren relativ zu anderen Elementen hervorgehoben sein, um das Verständnis der verschiedenen gegenwärtig offenbarten Ausführungsformen zu erleichtern. Außerdem sind gewöhnliche, aber hinreichend bekannte Elemente, die in einer kommerziell durchführbaren Ausführungsform nützlich oder notwendig sind, oft nicht dargestellt, um eine weniger behinderte Sicht auf diese verschiedenen Ausführungsformen der vorliegenden Offenbarung zu ermöglichen.
  • DETAILLIERTE BESCHREIBUNG
  • Als Reaktion auf die vorstehend beschriebenen Probleme werden hierin Vorrichtungen und Verfahren erörtert, die robustere Filter- und Sicherheitsmaßnahmen für Proof-of-Space-Konsens-Blockchain-Netzwerke bereitstellen. Genauer gesagt versuchen viele Ausführungsformen, zusätzliche Daten zu erzeugen, die in die gespeicherten Daten eingebettet sind. Sobald sie gespeichert sind werden diese zusätzlichen Daten mit der Blockchain zur späteren Verifizierung registriert, dass die Daten in der Vergangenheit auf der Speicherungsvorrichtung des Miners gespeichert wurden. Diese Verifizierung kann durch verschiedene kryptographische Verfahren und die Verarbeitung der zusätzlichen Daten erfolgen, einschließlich der Bereitstellung eines Hash-Baumpfades verschiedener Werte.
  • In einer Reihe von Ausführungsformen können Benutzer oder Miner möglicherweise Speicherungsvorrichtungen für einen Proof-of-Space Mining-Vorgang verwenden. Ein solches Proof-of-Space-basiertes Blockchain-Netzwerk wird als Chia bezeichnet. Die Chia-Kryptowährung verwendet ein Proof-of-Space-Konsens-Verfahren, um neue Blöcke innerhalb ihrer Blockchain zu erzeugen. Diese Proof-of-Space-Daten für Chia werden als „Plot“ bezeichnet. Chia-Plots werden üblicherweise durch einen „Plotting“-Prozess erzeugt, der eine Vielzahl von Lese- und Schreibzyklen innerhalb der Speichervorrichtungen einer Speicherungsvorrichtung erfordert. Der fertiggestellte Plot benötigt jedoch nur gelegentlich Zugriff für die Beantwortung der Challenge. Diese vollständigen Plotdaten können in einer Langzeitspeicherungspartition gespeichert werden, die dazu eingerichtet ist, nur einmal oder wenige Male geschrieben zu werden.
  • In einer Vielzahl von Ausführungsformen schließt der Plottingprozess zusätzliche Schritte ein, um die zukünftigen Filter- und Verifizierungsvorgänge robuster gegen Angriffe und/oder böswillige Miner zu machen. In vielen Ausführungsformen wird ein Hash-Baum basierend auf Werten erzeugt, die aus der eingehenden Blockchain-Challenge abgeleitet sind. Die zufälligen Challenge-Werte entsprechen Daten, die innerhalb der Plots gespeichert sind. Wie nachstehend ausführlicher erörtert, weisen diese Plots eine Vielzahl von geordneten Tabellen auf, die sich auf Einträge innerhalb einer vorherigen Tabelle zurück auf die erste Tabelle beziehen. Diese Selbstreferenz wird oft als „Zweig“ des Stammtabellenwertes innerhalb eines Plots bezeichnet. Jeder Plot kann eine Vielzahl von Zweigen aufweisen, die jeweils über einen bestimmten Wert oder Tabelleneintrag ausgewählt sind.
  • In zusätzlichen Ausführungsformen wird der Hash-Baum aus diesen verschiedenen Zweigen erzeugt, wobei die Eingabeblätter eine Kombination des Stammtabellenwerts und eines anderen Werts entlang des Pfades des Zweigs sind. Sobald er erzeugt wurde, kann der Hash-Baum mit dem Plot gespeichert werden. Darüber hinaus können die zusätzlichen Daten auch mit der Blockchain zur späteren Verifizierung registriert werden. Wenn eine Challenge in der Zukunft ausgegeben wird, die es ermöglicht, dass eine gültige Antwort von diesem Plot übermittelt wird, kann die Blockchain-Logik somit auch einen Hash-Baumpfad bereitstellen, um zu verifizieren, dass die Daten zuvor in der Vergangenheit auf der Speicherungsvorrichtung gespeichert wurden.
  • In mehr Ausführungsformen kann der für den Plot erzeugte Stamm des Hash-Baums auch verwendet werden, um einen Commitment-Wert zu erzeugen. Dieser Commitment-Wert kann wie der Filterschritt in andere Aspekte des Challenge-Übermittlungsprozesses integriert werden. Durch die Verwendung dieses Commitment-Werts bei der Filterung von Challenge-Lösungen wird die Wahrscheinlichkeit verringert, dass ein böswilliger Miner den Blockchain-Prozess umgeht, da jede Lösung auf Daten Bezug nehmen muss, die zuvor in der Blockchain registriert wurden. Aufgrund dessen könnten Angreifer nicht einfach verschiedene Lösungen erzeugen, die den Filter umgehen.
  • Gesichtspunkte der vorliegenden Offenbarung können als eine Einrichtung, ein System, Verfahren oder Computerprogramm ausgeführt sein. Folglich können Gesichtspunkte der vorliegenden Offenbarung die Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (einschließlich Firmware, residente Software, Mikrocode, oder dergleichen) oder einer Software- und Hardwareaspekte kombinierenden Ausführungsform annehmen, die alle allgemein hierin als „Funktion“, „Modul“, „Gerät“ oder „System“ bezeichnet werden können. Weiterhin können Gesichtspunkte der vorliegenden Offenbarung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren nicht-transitorischen computerlesbaren Speichermedien verkörpert ist, die computerlesbaren und/oder ausführbaren Programmcode speichern. Viele der in dieser Patentschrift beschriebenen Funktionseinheiten wurden als Funktionen bezeichnet, um ihre Implementierungsunabhängigkeit insbesondere hervorzuheben. Zum Beispiel kann eine Funktion als eine Hardwareschaltung implementiert sein, die kundenspezifische VLSI-Schaltungen oder Gate-Arrays, handelsübliche Halbleiter wie Logikchips, Transistoren oder anderen diskrete Komponenten aufweist. Eine Funktion kann auch in programmierbaren Hardwarevorrichtungen wie feldprogrammierbaren Gate-Arrays, programmierbarer Array-Logik, programmierbaren Logikvorrichtungen oder dergleichen implementiert sein.
  • Funktionen können auch zumindest teilweise in Software zur Ausführung durch verschiedene Arten von Prozessoren implementiert sein. Eine identifizierte Funktion von ausführbarem Code kann zum Beispiel einen oder mehrere physische oder logische Blöcke von Computerbefehlen aufweisen, die beispielsweise als ein Objekt, eine Prozedur oder eine Funktion organisiert sein können. Nichtsdestotrotz müssen die ausführbaren Programme einer identifizierten Funktion nicht physisch zusammen angeordnet sein, sondern können unterschiedliche Anweisungen aufweisen, die an verschiedenen Orten gespeichert sind, die, wenn sie logisch miteinander verbunden sind, die Funktion aufweisen und den angegebenen Zweck für die Funktion erfüllen.
  • Infolgedessen kann eine Funktion ausführbaren Codes eine einzelne Anweisung oder viele Anweisungen einschließen und kann sogar über mehrere unterschiedliche Codesegmente, in verschiedenen Programmen, über mehrere Speicherungsvorrichtungen oder dergleichen verteilt sein. Wo eine Funktion oder Abschnitte einer Funktion in Software implementiert sind, können die Softwareabschnitte auf einem oder mehreren computerlesbaren und/oder ausführbaren Speicherungsmedien gespeichert sein. Jede Kombination von einem oder mehreren computerlesbaren Speicherungsmedien kann verwendet werden. Ein computerlesbares Speicherungsmedium kann beispielsweise, ohne darauf beschränkt zu sein, ein System, eine Einrichtung oder eine Vorrichtung auf elektronischer, magnetischer, optischer, elektromagnetischer, Infrarot- oder Halbleiterbasis oder jede geeignete Kombination des Vorstehenden einschließen, würde aber keine propagierenden Signale einschließen. Im Kontext dieses Dokuments kann ein computerlesbares und/oder ausführbares Speicherungsmedium jedes konkrete und/oder nichtflüchtige Medium sein, das ein Programm zur Verwendung durch oder in Verbindung mit einem Befehlsausführungssystem, einer Vorrichtung, einem Prozessor oder einem Gerät enthalten oder speichern kann.
  • Computerprogrammcode zum Ausführen von Vorgängen für Aspekte der vorliegenden Offenbarung kann in jeder Kombination von einer oder mehreren Programmiersprachen geschrieben sein, einschließlich einer objektorientierten Programmiersprache, wie Python, Java, Smalltalk, C++, C#, Objective C oder dergleichen, herkömmlichen prozeduralen Programmiersprachen, Skriptprogrammiersprachen und/oder anderen ähnlichen Programmiersprachen. Der Programmcode kann teilweise oder vollständig auf einem oder mehreren Computern eines Benutzers und/oder auf einem entfernten Computer oder Server über ein Datennetz oder dergleichen ausgeführt werden.
  • Eine Komponente, wie sie hierin verwendet wird, weist eine konkrete, physische, nichttransitorische Vorrichtung auf. Zum Beispiel kann eine Komponente als eine Hardware-Logikschaltung implementiert sein, die kundenspezifische VLSI-Schaltungen, Gate-Arrays oder andere integrierte Schaltungen; handelsübliche Halbleiter, wie Logikchips, Transistoren oder andere diskrete Vorrichtungen; und/oder andere mechanische oder elektrische Vorrichtungen einschließen. Eine Komponente kann auch in programmierbaren Hardwarevorrichtungen wie feldprogrammierbaren Gate-Arrays, einer programmierbaren Array-Logik, programmierbaren Logikvorrichtungen oder dergleichen implementiert sein. Eine Komponente kann eine oder mehrere siliziumbasierte integrierte Schaltungsvorrichtungen (z. B. Chips, Dies, Die-Ebenen, Pakete) oder andere diskrete elektrische Vorrichtungen in elektrischer Verbindung mit einer oder mehreren anderen Komponenten über elektrische Leitungen einer Schaltungsplatine (PCB) oder dergleichen aufweisen. Jede(s) der hierin beschriebenen Funktionen und/oder Module kann in bestimmten Ausführungsformen alternativ durch eine Komponente verkörpert oder implementiert sein.
  • Eine Schaltung, wie hierin verwendet, weist einen Satz von einer oder mehreren elektrischen und/oder elektronischen Komponenten auf, die einen oder mehrere Wege für elektrischen Strom bereitstellen. In bestimmten Ausführungsformen kann eine Schaltung einen Rückführweg für elektrischen Strom einschließen, sodass die Schaltung eine geschlossene Schleife ist. In einer anderen Ausführungsform kann jedoch ein Satz von Komponenten, der keinen Rückführweg für elektrischen Strom einschließt, als eine Schaltung (z. B. eine offene Schleife) bezeichnet werden. Zum Beispiel kann eine integrierte Schaltung unabhängig davon als eine Schaltung bezeichnet werden, ob die integrierte Schaltung an Masse gekoppelt ist (als Rückführweg für elektrischen Strom) oder nicht. In verschiedenen Ausführungsformen kann eine Schaltung einen Abschnitt einer integrierten Schaltung, eine integrierte Schaltung, einen Satz von integrierten Schaltungen, einen Satz von nicht integrierten elektrischen und/oder elektrischen Komponenten mit oder ohne Vorrichtungen mit integrierter Schaltung oder dergleichen einschließen. In einer Ausführungsform kann eine Schaltung individuelle VLSI-Schaltungen, Gate-Arrays, Logikschaltungen oder andere integrierte Schaltungen; handelsübliche Halbleiter, wie Logikchips, Transistoren oder andere diskrete Vorrichtungen; und/oder andere mechanische oder elektrische Vorrichtungen einschließen. Eine Schaltung kann auch als eine synthetisierte Schaltung in einer programmierbaren Hardwarevorrichtung, wie einem feldprogrammierbaren Gate-Array, einer programmierbaren Array-Logik, einer programmierbaren Logikvorrichtung oder dergleichen (z. B. als Firmware, Netzliste oder dergleichen) implementiert sein. Eine Schaltung kann eine oder mehrere integrierte Schaltungsvorrichtungen auf Siliziumbasis (z. B. Chips, Dies, Die-Ebenen, Pakete) oder andere diskrete elektrische Vorrichtungen aufweisen, die mit einer oder mehreren anderen Komponenten über elektrische Leitungen einer Schaltungsplatine (PCB) oder dergleichen elektrisch verbunden sind. Jede(s) der hier beschriebenen Funktionen und/oder Module kann in bestimmten Ausführungsformen durch eine Schaltung verkörpert oder implementiert sein.
  • Die Bezugnahme auf „eine Ausführungsform“, „Ausführungsform“ oder ein ähnlicher Sprachgebrauch in dieser Patentschrift bedeutet, dass ein bestimmtes Merkmal, eine spezielle Struktur oder Charakteristik, die in Verbindung mit der Ausführungsform beschrieben ist, in mindestens einer Ausführungsform der vorliegenden Offenlegung eingeschlossen ist. Daher können die Ausdrücke „in einer Ausführungsform“, „in der Ausführungsform“ und ähnlich gelagerter Sprachgebrauch in dieser Beschreibung, wo sie vorkommen, sich nicht notwendigerweise alle auf dieselbe Ausführungsform beziehen, sondern „eine oder mehrere, aber nicht alle Ausführungsformen“ bedeuten, sofern nicht ausdrücklich etwas anderes angegeben ist. Die Begriffe „einschließlich“, „umfassend“, „aufweisend“ und Variationen dessen bedeuten „einschließlich, aber nicht darauf beschränkt“, sofern nicht ausdrücklich etwas anderes angegeben ist. Eine aufzählende Auflistung von Elementen impliziert nicht, dass sich irgendeines oder alle der Elemente gegenseitig ausschließen und/oder gegenseitig einschließen, sofern nicht ausdrücklich etwas anderes angegeben ist. Die Begriffe „ein/e/s“, und „der/die/das“ beziehen sich auch auf „eines oder mehrere“, sofern nicht ausdrücklich etwas anderes angegeben ist.
  • Weiterhin kann, wie hierin verwendet, die Bezugnahme auf das Lesen, Schreiben, Speichern, Puffern und/oder Übertragen von Daten die Gesamtheit der Daten, einen Teil der Daten, einen Satz der Daten und/oder eine Teilmenge der Daten einschließen. Ebenso kann die Bezugnahme auf das Lesen, Schreiben, Speichern, Puffern und/oder Übertragen von Nicht-Host-Daten die Gesamtheit der Nicht-Host-Daten, einen Teil der Nicht-Host-Daten, einen Satz der Nicht-Host-Daten und/oder eine Teilmenge der Nicht-Host-Daten einschließen.
  • Schließlich sind die Begriffe „oder“ und „und/oder“, wie hierin verwendet, als einschließend oder in der Bedeutung eines beliebigen oder einer beliebigen Kombination auszulegen. Daher haben „A, B oder C“ oder „A, B und/oder C“ eine der folgenden Bedeutungen: A; B; C; A und B; A und C; B und C; A, B und C." Eine Ausnahme dieser Definition tritt nur dann auf, wenn sich eine Kombination von Elementen, Funktionen, Schritten oder Handlungen in irgendeiner Weise an sich gegenseitig ausschließen.
  • Gesichtspunkte der vorliegenden Offenlegung werden unten unter Bezugnahme auf schematische Flussdiagramme und/oder schematische Blockdiagramme von Verfahren, Vorrichtungen, Systemen und Computerprogrammprodukten gemäß Ausführungsformen der Offenlegung beschrieben. Es versteht sich, dass jeder Block der schematischen Flussdiagramme und/oder schematischen Blockdiagramme und Kombinationen von Blöcken in den schematischen Flussdiagrammen und/oder schematischen Blockdiagrammen durch Computerprogrammanweisungen implementiert werden können. Diese Computerprogrammanweisungen können einem Prozessor eines Computers oder einer anderen programmierbaren Recheneinrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor oder eine andere programmierbare Recheneinrichtung ausgeführt werden, Mittel zum Implementieren der Funktionen und/oder Schritte erzeugen, die in den schematischen Flussdiagrammen und/oder schematischen Blockdiagrammen Block oder Blöcken spezifiziert sind.
  • Es sollte auch beachtet werden, dass in einigen alternativen Implementierungen die in dem Block angegebenen Funktionen außerhalb der in den Figuren angegebenen Reihenfolge auftreten können. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, abhängig von der involvierten Funktionalität. Andere Schritte und Verfahren, die in Funktion, Logik oder Wirkung äquivalent zu einem oder mehreren Blöcken oder Teilen davon der dargestellten Figuren sind, können konzipiert werden. Obwohl verschiedene Pfeilarten und Linienarten in dem Flussdiagramm und/oder den Blockdiagrammen verwendet werden können, sind sie so zu verstehen, dass sie den Umfang der entsprechenden Ausführungsformen nicht einschränken. Zum Beispiel kann ein Pfeil eine Warte- oder Überwachungsperiode einer nicht spezifizierten Dauer zwischen aufgezählten Schritten der dargestellten Ausführungsform angeben.
  • In der folgenden detaillierten Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, die einen Teil davon bilden. Die vorhergehende Zusammenfassung ist nur veranschaulichend und soll in keiner Weise einschränkend sein. Zusätzlich zu den vorstehend beschriebenen veranschaulichenden Gesichtspunkten, Ausführungsformen und Merkmalen werden weitere Gesichtspunkte, Ausführungsformen und Merkmale unter Bezugnahme auf die Zeichnungen und die folgende ausführliche Beschreibung deutlich. Die Beschreibung von Elementen in jeder Figur kann sich auf Elemente von fortlaufenden Figuren beziehen. Gleiche Bezugszeichen können sich auf gleiche Elemente in den Figuren beziehen, einschließlich alternativer Ausführungsformen gleicher Elemente.
  • Unter Bezugnahme auf 1 wird ein Systemdiagramm eines Proof-of-Space-Konsens-Blockchain-Systems 100 gemäß einer Ausführungsform der Erfindung gezeigt. Das Proof-of-Space-Konsens-Blockchain-System 100 weist eine Reihe von Knoten auf. Zum Beispiel schließen die Knoten in dem Chia-Blockchain-Netzwerk Farmer und Timelords ein. Diese Knoten übertragen und empfangen Daten, die sich auf die Proof-of-Space-Konsens-Blockchain über verschiedene Netzwerke wie das Internet 120 beziehen. Während Ausführungsformen der vorliegenden Offenbarung jedes praktikable Proof-of-Space-Konsens-Blockchain-System umfassen können, beziehen sich die in den Figuren beschriebenen Ausführungsformen auf das Chia-Blockchain-Netzwerk. Daher versteht es sich, dass bestimmte hierin beschriebene Ausführungsformen nach Bedarf auf andere Nicht-Chia-Netzwerke angewendet werden können.
  • In vielen Ausführungsformen sind verschiedene Chia-Knoten-Server 110 mit dem Internet 120 und miteinander verbunden. Diese Chia-Knoten-Server 110 können Chia-Blockchain-Daten untereinander kommunizieren und übertragen. Darüber hinaus können zusätzliche Arten von Vorrichtungen vorhanden sein, die als Farmer und/oder Timelords wirken können. Persönliche Computer können Anwendungen aufweisen, die als Personal Computer Chia-Knoten 130 wirken, die auch mit den anderen Chia-Knoten verbunden sind und mit diesen kommunizieren. In einigen Fällen kann eine spezialisierte Vorrichtung mit dem Netzwerk verbunden sein, das als ein Chia-Timelord 140 fungiert, der in der Regel bei Validierungsprozessen unterstützt.
  • Darüber hinaus kann die Verbindung mit dem Netzwerk über Knoten drahtlos durch einen oder mehrere drahtlose Zugangspunkte 150 erfolgen, die eine Vielzahl von Vorrichtungen verbinden können, einschließlich mehr Chia-Knoten-Server, tragbare Chia-Knoten-Server 170 oder persönliche elektronische Geräte Chia-Server 180. Ein Fachmann sollte erkennen, dass Chia-Knoten-Vorrichtungen in jedem verfügbaren Formfaktor vorhanden sein können und dass die Mindestanforderungen darin bestehen, dass ein Prozessor, eine Netzwerkverbindung und ein Speicherungsplatz für fertige Plots vorhanden sein müssen. Während es am vorteilhaftesten ist, zu jeder Zeit mit dem Proof-of-Space-Konsens-Blockchain-System 100 verbunden zu bleiben, versteht es sich, dass Knoten-Vorrichtungen zeitweise, vorübergehend oder dauerhaft getrennt oder verbunden sein können.
  • Unter Bezugnahme auf 2 wird ein konzeptionelles Blockdiagramm einer Blockchain 200 gezeigt. Unter einer Blockchain 200 kann eine wachsende Liste von Blöcken verstanden werden, die Datensätze oder andere Daten aufweisen. Diese Blöcke werden durch verschiedene Verfahren miteinander verknüpft, die in der Regel Kryptographie beinhalten. In vielen Fällen weist jeder Block 210A - 210N (mit Ausnahme des ersten oder Genesisblock 210A) strukturelle Daten 220A - 220N auf, einschließlich eines Hash, der sich auf den vorherigen Block, einen Zeitstempel und eine Art von Transaktionsdaten 230A - 230N bezieht.
  • Da sich jeder Nicht-Genesisblock 210B - 210N auf den vorherigen Block zurückbezieht, wird die Blockchain 200 selbst manipulationssicher. Ein Netzwerk von Rechnervorrichtungen, die als Knoten fungieren, bewahren jeweils eine Kopie dieser Blockchain 200 in ihren Systemen als verteilter Ledger auf. Diese Struktur verhindert, dass Blockchain-Ledger eine zentrale Steuereinheit aufweisen und ist daher dezentralisiert. Somit haben sie im vergangenen Jahrzehnt an Beliebtheit gewonnen und wurden für eine Vielzahl von Anwendungen wie Kryptowährung verwendet.
  • Ein großes Problem bei Blockchain-Systemen ist, wie sich die Knoten alle darauf einigen, was der nächste Block in der Blockchain sein sollte. Dieses Problem wird als „Konsens“ bezeichnet und kann auf verschiedene Weise gelöst werden. Zum Beispiel verwendet Bitcoin Blockchains und verwendet ein „Proof-of-Work“ Konsensverfahren. Dieses Verfahren beinhaltet viel Rechenleistung von CPUs und GPUs der verschiedenen Knoten. Ein weiteres aufkommendes Konsensverfahren ist das „Proof-of-Space“-Verfahren, bei dem anstelle von Berechnungen zur Lösung von Challenge-Problemen Speicherungsplatz benötigt wird, um zu beweisen, dass die Daten in einem Knoten gespeichert sind. Diese Daten werden als Proof-of-Space Daten bezeichnet und können innerhalb einer Speicherungsvorrichtung erzeugt werden. Dieser Prozess wird im Folgenden näher erörtert.
  • Bezugnehmend auf 3A ist ein Flussdiagramm gezeigt, das einen Prozess 300A für das Mining von Kryptowährung unter Verwendung eines Proof-of-Space-Konsensverfahrens gemäß einer Ausführungsform der Offenbarung darstellt. Wie oben erörtert, kann das Mining von Kryptowährungen in vielen Formen erfolgen. In einer wachsenden Anzahl von Anwendungen kann die Kryptowährung, die eine Konsensverfahren des Proof-of-Space verwendet, als Alternative zu dem derzeit beliebteren Proof-of-Work-Verfahren verwendet werden. Ein Beispiel für eine Blockchain-basierten Kryptowährung, die ein Proof-of-Space als Konsensverfahren verwendet, ist Chia. Chia konzentriert sich auf das Erstellen (d. h. „Plotting“) großer Mengen von Proof-of-Space-Konsensdaten, die in ein oder mehrere „Plots“ formatiert werden. Diese Plots werden dann auf einer Festplatte für den zukünftigen Zugriff durch das Online-Chia-Blockchain-Netzwerk gespeichert. Die Plots weisen eine Reihe von Hash-Tabellen auf, auf die durch das Chia-Netzwerk zugegriffen werden kann, als Reaktion auf eine durch das Netzwerk gestellte Challenge. Dieser Prozess, bei dem die Plots gespeichert und dem Chia-Online-Netzwerk zur Bearbeitung der Challenges zur Verfügung gestellt werden, wird „Farming“ genannt.
  • In einem typischen Proof-of-Space-Blockchain-Prozess 300A kann die Plotting-Phase mit der Erzeugung von Daten in Plots beginnen (Block 310). Obwohl Chia Plots verwendet, können einige Ausführungsformen für die Verwendung in anderen, auf der Blockchain basierenden Proof-of-Space-Systemen formatiert werden. In vielen Ausführungsformen beinhaltet die Erzeugung von Plotdaten die Erstellung einer Vielzahl von Tabellen, die kryptographische Hashes aufweisen, die verschachtelt, selbstreferenziell oder anderweitig miteinander verbunden sein können. In verschiedenen Ausführungsformen werden die Hashes, die durch ein Backpropagation-Verfahren erstellt werden, in den Tabellen sortiert und komprimiert. Die Plots werden abgeschlossen und auf einer Speicherungsvorrichtung gespeichert (Block 320). Diese Erzeugung von Plots erstellt eine Menge von Eingabe- und Ausgabeprozessen innerhalb der Speicherungsvorrichtung und profitiert von Hochgeschwindigkeits-Speicherungsvorrichtungen. Dies führt zu vielen Benutzern, die SSDs für Plotting-Vorgänge verwenden. Die Beschaffenheit vieler SSDs und ihre begrenzte Lebensdauer führen jedoch dazu, dass viele Benutzer die erzeugten Plots auf eine sekundäre Speicherungsvorrichtung kopieren, die eher für die langfristige Speicherung eingerichtet ist.
  • Die Farming-Phase des Proof-of-Space-Konsens-Blockchain-Systems weist alle verbleibenden Schritte auf. Das Farming kann mit dem Empfangen einer oder mehrerer Challenges aus dem Blockchain-Netzwerk beginnen (Block 330). Die genaue Art der Challenge kann basierend auf dem verwendeten Kryptowährungsprozess variieren. Zum Beispiel kann die Challenge ein Problem sein, das innerhalb einer bestimmten Zeit und/oder in einem bestimmten Format gelöst werden muss. Der Prozess 300A kann die gespeicherten Plots verwenden, um Proofs-of-Space zu erzeugen (Block 340). Dieser Schritt wird in der Erörterung von 3B näher beschrieben. Diese Proofs-of-Space sind für die Antworten auf die Challenge erforderlich, die es dem Benutzer ermöglichen, seinen Beitrag zur Blockchain hinzuzufügen und einen Reward zu erhalten. In einer Vielzahl von Ausführungsformen werden die erzeugten Proofs-of-Space mit neuen Blockdaten gepaart (Block 350). Neue Blockdaten können einen vorgeschlagenen Datenblock einschließen, um der Blockchain hinzugefügt zu werden. Fachleute werden verstehen, dass diese neuen Blockdaten Unterblöcke oder andere vorgeschlagene Blockdaten aufweisen, wie sie durch die verwendete Blockchain erforderlich sind.
  • Die gepaarten Proofs-of-Space und neue Blockdaten werden auf das Blockchain-Netzwerk übertragen (Block 360). Die übertragenen Daten werden nicht automatisch der Blockchain hinzugefügt, sondern müssen eine oder mehrere Anforderungen erfüllen, da mehr als ein Benutzer in dem Netzwerk einen gültigen Nachweis für die Challenge übermittelt haben kann. Während der Auswahl eines potenziellen neuen Blocks prüft das Blockchain-Netzwerk die übermittelten Proofs-of-Space (Block 370). Dies kann in Abhängigkeit von der verwendeten genauen Blockchain auf verschiedene Weise geschehen. Sobald sich das Blockchain-Netzwerk auf einen bestimmten Blockkandidaten geeinigt hat, der übermittelt wurde, werden die neuen Blockdaten verwendet, um einen neuen Block innerhalb der Blockchain zu erzeugen (Block 380).
  • Bezugnehmend auf 3B wird ein Flussdiagramm gezeigt, das einen Prozess 300B zum Filtern und Qualifizieren von Proofs-of-Space gemäß einer Ausführungsform der Offenbarung darstellt. Als Beispiel für die Erzeugung von Proofs-of-Space stellt die Ausführungsform in 3B dar, wie ein Proof-of-Space in der Chia-Blockchain erzeugt wird. Die Proof-of-Space-Daten in Chia werden als „Plot“ bezeichnet und sind eine gespeicherte Reihe von verwandten Tabellen von Datenwerten. Die Chia-Knoten-Vorrichtung erzeugt diesen Plot und speichert ihn innerhalb einer Speicherungsvorrichtung. Um jeden Plot zu identifizieren, wird eine eindeutige Plotidentifikationsnummer erzeugt. Diese Plotidentifikationsnummer kann durch verschiedene Mittel erzeugt werden, einschließlich, aber nicht beschränkt auf, Hashing eines öffentlichen Poolschlüssels und eines privaten Poolschlüssels.
  • Zusätzlich gibt das Blockchain-Netzwerk Challenges in Form von Challengedaten an die Knoten aus. Diese Challenges erstellen einen Wettlauf für die verschiedenen Knoten, um eine Lösung für die Challenge zu erzeugen. Ein Knoten, der eine praktikable Lösung erzeugt, fügt der Blockchain einen vorgeschlagenen nächsten Datenblock hinzu und übermittelt beides an die übrigen Knoten im Blockchain-Netzwerk. Wenn die vorgeschlagene Lösung akzeptiert wird, wird der vorgeschlagene neue Block der Blockchain hinzugefügt. Der Administrator des Gewinn-Knotens wird dann dafür belohnt, indem er einen bestimmten Betrag an Kryptowährung aus der Blockchain erhält. In dem Chia-Netzwerk gibt der Gewinn-Knoten die Chia-Währung aus.
  • Innerhalb des Chia-Blockchain-Netzwerks beziehen sich Challenges auf bestimmte Zeitfenster. Auf diese Weise gibt es bei der Ausgabe von Challenges eine begrenzte Zeit, um auf die Challenge zu antworten, bevor eine neue Challenge ausgegeben wird. Dies geschieht in der Regel, um die Möglichkeit von Knoten-Administratoren zu verringern, zu betrügen und entweder die Blockchain zu überholen oder Belohnungen zu erhalten, ohne Daten zu speichern. Einer der Wege, mit denen die Chia-Netzwerke die verstrichene Zeit in Bezug auf die Challenges markieren, ist die Bereitstellung und Übermittlung von Signage-Punkten für jede einzelne Chain innerhalb des Netzwerks. Wenn also eine potenzielle Lösung zu einer Challenge erzeugt wird, muss sie somit auch eine gewisse Referenz auf den aktuellen Signage-Punkt integrieren.
  • Der Prozess 300B kann verschiedene Datenstücke aufnehmen, um einen Plotfilter-Hash (Block 315) zu erstellen. Ein Blockchain-Netzwerk kann eine große Anzahl von Knoten aufweisen, die jeweils eine große Anzahl von Plots enthalten. Um zu verhindern, dass das Netz mit überflüssigen Challenge-Lösungen überflutet wird und um eine zusätzliche Sicherheitsschicht hinzuzufügen, kann ein Filter verwendet werden, um die Anzahl von Plots einzuschränken, die für die Lösungserzeugung verwendet werden können. Dieser Plotfilter kann als eine Anforderung formatiert werden, die verschiedenen Gesichtspunkten des Plots zugeordnet ist, die erfüllt sein müssen. Zum Beispiel können verschiedene Datenwerte, die sich auf den Plot beziehen, miteinander verknüpft oder hinzugefügt werden, die dann gehashed werden können, um einen eindeutigen Wert zu erzeugen.
  • In der Regel wird in Chia der Plot-Hash-Filter durch Hashing der Summe der Plotidentifikationsnummer, der aktuellen Challengedaten und der aktuellen Signage-Punktdaten erzeugt. Wie nachstehend ausführlicher erörtert, verwenden viele Ausführungsformen der aktuellen Offenbarung jedoch die Plotidentifikationsnummer, die Challengedaten, die Signage-Punktdaten und die Commitment-Daten. Diese Commitment-Daten werden nachstehend ausführlicher beschrieben, es kann jedoch allgemein ein Wert verstanden werden, der dazu beiträgt nachzuweisen, dass ein Chia-Knoten den Wert für eine bestimmte Zeitdauer tatsächlich gespeichert hat.
  • Dieser eindeutige Plotfilterwert kann dann untersucht werden, um zu sehen, ob er die Anforderung erfüllt (Block 325). Zum Beispiel muss in dem Chia-Netzwerk derzeit die resultierende SHA256-Plotfilter-Hashnummer mit neun Nullen beginnen (d. h. mit neun führenden Nullen). Wenn der Plotfilter-Hash-Wert diese Bedingungen nicht erfüllt, kann der Prozess des Bewertens dieses Plots beendet und mit einem neuen Plot fortgeführt werden. Wenn jedoch die Filteranforderungen erfüllt wurden, kann der Prozess 300B dann die „Qualität“ des Plots bewerten.
  • Wie nachfolgend bei der Diskussion von 5 näher erörtert, sind Chia-Plotdaten in der Regel dazu eingerichtet, eine Vielzahl von Tabellen zu speichern. Diese Tabellen enthalten verschiedene Datenwerte. Außerdem enthält die letzte Tabelle in der Vielzahl von Tabellen einen Wert. Dieser Wert kann verwendet werden, um sich rückzupropagieren und auf einen Eintrag innerhalb der vorherigen Tabelle des Plots Bezug zu nehmen. Dieser Prozess kann sich wiederholen, bis ein Wert innerhalb der ersten Tabelle des Plots erreicht ist. Derzeit haben Chia-Tabellen 32 Einträge in jeder Tabelle, aber jede Zahl kann akzeptabel sein.
  • Anstatt den gesamten Plot zu lesen, kann eine Qualitätsprüfung durchgeführt werden, indem ein einziger Anfangswert ausgewählt wird und nur dieser Zweig gelesen wird, der zurück zu der Anfangstabelle verläuft (Block 335). Qualitätsdaten können ein String sein, der als Kürzel verwendet wird, um den Plot als Ganzes zu bewerten. In einigen Ausführungsformen basiert der anfängliche Eintrag für die Qualitätsdatenerzeugung auf den aktuell empfangenen Challengedaten. Auf diese Weise kann ein böswilliger Knoten-Administrator die Qualität der Plots nicht einfach vorher auswerten und einen Geschwindigkeitsvorteil erzielen. Die Ergebnisdaten, die aus dem einzelnen Zweig gelesen werden, können zum Erzeugen eines einzelnen Qualitätsstringwerts gehashed werden. Dieser Qualitätsstringwert kann den Gesamtqualitätsnachweis des Plots für diese Challenge bestimmen (Block 345).
  • Wenn die Qualität des Plots nicht über einem bestimmten vorbestimmten Schwellenwert liegt, kann die Bewertung dieses Plots enden und sich zu einem neuen Plot bewegen (Block 355). Wenn jedoch die Qualität des Plots über dem vorbestimmten Schwellenwert liegt, kann eine Proof-of-Space-Challenge-Lösung erzeugt werden. Bei dieser möglichen Lösung muss der gesamte Plot gelesen werden. Der Prozess 300B kann dann auf den gesamten Proof-of-Space innerhalb des Plots zugreifen und ihn lesen (Block 365). In einigen Ausführungsformen ist der vorbestimmte Schwellenwert ein Wert, der von den Chia-Blockchain-Netzwerk-Timelords erzeugt wurde. In einer Reihe dieser Ausführungsformen ist dieser Wert die erforderliche Anzahl von Iterationen, die zwischen der letzten Blockaddition oder der letzten Übertragung von Signage-Punkten durchgeführt worden sein muss.
  • Bezugnehmend auf 4 wird ein Flussdiagramm gezeigt, das einen Prozess 400 für das Mining von Kryptowährung unter Verwendung eines Proof-of-Space-Konsensverfahrens darstellt. Insbesondere ist der in der Ausführungsform von 4 dargestellte Prozess 400 ein beispielhafter Proof-of-Space- und Time-Blockchain-Prozess unter Verwendung der Chia-Kryptowährung. Auf einer hohen Ebene wird Chia anhand der Menge des ihm gewidmeten Speicherungsplatzes und nicht der Rechenleistung abgebaut. Es versteht sich, dass jede andere Kryptowährung, die auf Speicherungsplatz beruht, in Bezug auf die hierin erörterten Systeme und Methodiken verwendet oder anderweitig ersetzt werden kann, einschließlich, als nicht einschränkendes Beispiel, FileCoin, Signum Network und/oder Spacemesh. Ähnlich dem oben in Bezug auf 2 beschriebenen typischen Blockchain-Prozess verwendet der Prozess 400 eine aufeinanderfolgende Reihe von strukturellen Daten und gepaarte Transaktionsdaten über eine Reihe von Blöcken, die über die Zeit hinzugefügt werden.
  • Das Design der strukturellen Daten schließt drei verschiedene „Chains“ von Daten ein, die sich auf verschiedene Arten beziehen und voneinander abhängen, die eine sichere und dezentralisierte Beschaffenheit des Proof-of-Space-Verfahrens ermöglichen. Diese Chains können in bestimmten Kontexten verstanden werden, da jede eine verifizierbare Verzögerungsfunktion ist, die gleichzeitig ausgeführt werden, wobei jede Chain einem anderen Zweck dient. Die Blöcke selbst sind einer Rewards-Chain 430 zugeordnet, während die ausgegebenen Challenges einer Challenge-Chain 410 zugeordnet sind. Eine dritte infundierte Challenge-Chain 420 wird verwendet, um verschiedene Challenges und Sicherheitsmaßnahmen zu erleichtern, die zum Hinzufügen von Blöcken in die Blockchain erforderlich sind. Jede dieser Chains weist bestimmte Marker auf, die das Ende eines Zeitraums angeben. Diese Punkte entlang der Chain sind in der Regel zeitlich gleichmäßig. Die Zeit, die zwischen zwei benachbarten Punkten verstrichen ist, wird in der Regel als Sub-Slot bezeichnet.
  • Die Challenge-Chain weist einen ersten Challenge-Chain-Punkt c1 411 und einen zweiten Challenge-Chain-Punkt c2 470 auf. Ebenso weist die Rewards-Chain einen ersten Rewards-Chain-Punkt r1 431 und einen zweiten Rewards-Chain-Punkt r2 480 auf. Schließlich weist die infundierte Challenge-Chain 420 einen ersten infundierten Chain-Punkt ic1 421 und einen zweiten infundierten Challenge-Chain-Punkt ic2 481. Die Pfeile in 4 zeigen an, dass die Erzeugung des Empfangspunkts vom Sendepunkt abhängig ist. So ist beispielsweise in 4 der infundierte Challenge-Punkt 1 von einem oder mehreren Werten innerhalb des Challenge-Punkts c1 411 und dem Rewards-Chain-Punkt r1 431 abhängig und/oder erzeugt. Der Abstand zwischen diesen beiden Punkten auf der x-Achse entspricht einem Zeitraum. Der Abstand zwischen diesen beiden Punktsätzen ist der Sub-Slot für diesen Prozess 400. In vielen Ausführungsformen entspricht der Sub-Slot einer festen Anzahl von Iterationen einer oder mehrerer verifizierbarer Verzögerungsfunktionen. Dies kann je nach eingestellter Schwierigkeit variieren, ist jedoch oft variabel, um einen einigermaßen festen Zeitraum zwischen den Sub-Slots bereitzustellen. Zum Beispiel ist die Chia-Blockchain derzeit so eingerichtet, dass sie zehnminütige Zeitfenster für die Verarbeitung von Sub-Slots hat.
  • Jeder Sub-Slot innerhalb der Challenge-Chain 410 und der Reward-Chain 430 ist in eine Anzahl kleiner verifizierbarer Verzögerungsfunktionen unterteilt. In einer Reihe von Ausführungsformen ist die Anzahl kleiner verifizierbarer Verzögerungsfunktionen vierundsechzig. Zwischen jeder dieser kleineren verifizierbaren Verzögerungsfunktionen gibt es einen oder mehrere Signage-Punkte, wie den Signage-Point 1 434 der Rewards-Chain. Innerhalb des Chia-Blockchain-Netzwerks veröffentlichen die Timelords die Ausgabe und den Nachweis der kleineren verifizierbaren Verzögerungsfunktionen, wenn ein Signage-Punkt erreicht ist. Bei jedem Signage-Punkt (und einschließlich bei jedem Challenge-Punkt) wird eine Challenge in Form von Challengedaten über das Blockchain-Netzwerk zur Verarbeitung übertragen.
  • Die Farmer innerhalb des Blockchain-Netzwerks können mit der Verarbeitung dieser Challenge beginnen, wie oben unter Bezugnahme auf 3 beschrieben. Zum Beispiel kann eine Challenge bei der Challenge-Chain c1 411 über das Chia-Netzwerk ausgegeben werden. Mindestens ein Farmer innerhalb des Netzwerks beginnt, eine gültige Lösung zu dieser Challenge zu verarbeiten. Zu einem späteren Zeitpunkt wird eine praktikable Lösung gefunden, und diese Lösung wird zusammen mit einem potenziellen neuen Block B1 440, welcher der Blockchain hinzugefügt werden soll, an das Netzwerk übertragen. Um zu verifizieren, dass dieser Block akzeptabel ist, muss die vorgeschlagene Lösung einen Nachweis einschließen, der den Block sowohl mit dem Challenge-Chain Signage-Punkt sp1 414 als auch dem Challenge-Chain Infusionspunkt 415 verbindet. Infusionspunkte können als Punkte entlang der verschiedenen Chains verstanden werden, in denen erwartet wird, dass eine bereitgestellte Challenge eine Antwort haben sollte. In der Praxis sind die Zeit zwischen Signage-Punkten und ihren entsprechenden Infusionspunkten ein Zeitfenster, in dem die Challenge bewältigt werden kann. Die genaue Zeit, die in diesen Fenstern zulässig ist, kann je nach Anzahl der Bedingungen variieren. Zum Beispiel können in dem Chia-Blockchain-System verschiedene Faktoren so eingestellt werden, dass nur etwa zweiunddreißig praktikable Proof-of-Space-Lösungen dem Blockchain-Netzwerk zur Zulassung übermittelt werden.
  • Der erste Block, der innerhalb eines Sub-Slots zugelassen wird, kann auch als erster infundierter Challenge-Chainblock B1 424 dienen. Um bestimmte Angriffe zu vermeiden und die Gesamt-Blockchain-Sicherheit zu erhöhen, müssen die verbleibenden Blöcke, die innerhalb dieses Sub-Slots hinzugefügt werden sollen, einen Nachweis bereitstellen, der auf diesen ersten infundierten Challenge-Chainblock in irgendeiner Weise Bezug nimmt.
  • Wenn mehr Zeit vergeht wird ein anderer Challenge-Chain-Signage-Punkt sp2 416 in das Blockchain-Netzwerk freigegeben. Ebenso wird auch ein entsprechender Rewards-Chain-Signage-Punkt sp2 436 ausgesendet. Die Farmer beginnen mit der Verarbeitung dieser Challenge. Es ist jedoch nicht erforderlich, dass eine ausgegebene Challenge abgeschlossen ist, bevor eine andere Challenge ausgegeben wird. In 4 wird beispielsweise der Challenge-Chain-Infusionspunkt sp3 419 an das Blockchain-Netzwerk ausgesendet, bevor der nächste Block hinzugefügt wird, der von dem Challenge-Chain-Signage-Punkt sp2 416 abhängt. In ähnlicher Weise wird auch ein anderer entsprechender Rewards-Chain-Signage-Punkt sp3 437 freigegeben. Dies ist bei verschiedenen Proof-of-Space-Konsensverfahren, einschließlich Chia, akzeptabel.
  • In der in 4 dargestellten Ausführungsform hat ein Farmer Block B2 450 an das Netzwerk bereitgestellt, das der Rewards-Chain 430 hinzugefügt wird. Block B2 450 stellt einen oder mehrere Proof-of-Space-Lösungen bereit, die den ursprünglichen Challenge-Chain-Signage-Punkt sp2 416 und den aktuellen Challenge-Chain-Infusionspunkt ip2 418 integrieren oder anderweitig Bezug nehmen, sowie die aktuelle, infundierte Challenge-Chain-Iteration 428. Kurze Zeit später stellt ein weiterer Farmer den Block B3 460 bereit, der ebenfalls der Rewards-Chain 430 hinzugefügt wird und selbst einen oder mehrere Beweise integriert, die den Signage-Punkt sp3 417, den Infusionspunkt ip3 419 und die infundierte Challenge-Chain-Iteration 429 implizieren oder anderweitig Bezug nehmen.
  • Wie Fachleute erkennen werden, können Blöcke in einer beliebigen Anzahl und Geschwindigkeit hinzugefügt werden, abhängig vom Betrieb des Blockchain-Netzwerks. Zum Beispiel können in aktuellen Chia-Blockchains ungefähr dreiunddreißig Blöcke zwischen Sub-Slots hinzugefügt werden. Es sind jedoch weniger Blöcke in der Ausführungsform von 4 aus Platzgründen und Übersichtlichkeit dargestellt. Es wird jedoch in Betracht gezogen, dass mehr Blöcke und Aktivitäten während dieser Zeiträume stattfinden können.
  • Nach Abschluss des Sub-Slots können die Chia-Timelords einen anderen Challenge-Punkt c2 470 und einen entsprechenden Rewards-Chain-Punkt t r2 480 ausgeben. In typischen Sub-Slots würde die infundierte Challenge-Chain vorübergehend beendet werden, indem ein infundierter Challenge-Punkt erzeugt wird, der sowohl von den entsprechenden Challenge- als auch von den Rewards-Chain-Punkten abhängt. In bestimmten Sub-Slots kann es jedoch Szenarien geben, in denen die Anzahl der hinzugefügten Blöcke unzureichend ist. In diesen Fällen, wie etwa der in 4 dargestellten Ausführungsform, kann der infundierte Challenge-Chain-Punkt ic2 481 nur von dem Rewards-Chain-Punkt r2 480 abhängig sein. Auf diese Weise kann die infundierte Challenge-Chain 420 zur Verwendung in dem folgenden Block, der hinzugefügt werden soll, Block B4 490, fortgesetzt werden.
  • Vergleichbar mit den zuvor hinzugefügten Blöcken B2 450 und B3 460 stellt der neue Block B4 490 eine oder mehrere Proof-of-Space-Lösungen bereit, die den Challenge-Chain Signage-Punkt sp4 474 (der neben dem entsprechenden Rewards-Chain Signage-Punkt sp4 484 ausgegeben wurde) integrieren oder sich anderweitig darauf beziehen und den aktuellen Challenge-Chain-Infusionspunkt ip4 475 sowie die aktuelle infundierte Challenge-Chain Iteration 485. Jeder der hinzugefügten Blöcke in dem Prozess 400 schließt verschiedene Transaktionsdaten zusammen mit ihren strukturellen Daten ein.
  • Bei Chia werden die hinzugefügten Transaktionsdaten als „Laub“ bezeichnet. In vielen Ausführungsformen können Laub-Daten Details darüber einschließen, was die Belohnung für den Block war, der die Belohnung verdient hat, und wo die Belohnung ausgegeben werden sollte. Wie nachstehend ausführlicher beschrieben, können verschiedene Daten bezüglich der Plots von Chia-Farmern in diesem Abschnitt integriert und hinzugefügt werden. Daten bezüglich Transaktionen können auch hinzugefügt werden, die als Kryptowährung fungieren. Jeder Block muss einige Laub-Daten aufweisen, jedoch ist nicht jeder Block erforderlich, um Transaktionsdaten zu haben.
  • In Bezug auf den in 4 dargestellten Prozess 400 ist der erste Block B1 440 ersten Transaktionsdaten 445 zugeordnet, die eine oder mehrere Transaktionen einschließen. Ebenso schließt Block B2 450 zweite Transaktionsdaten 455 ein, die auch eine oder mehrere Transaktionen einschließen. Das Laub der zweiten Transaktionsdaten 455 bezieht sich auf das Laub der ersten Transaktionsdaten 445 und der Transaktionen. Der Block B3 460 schließt das Laub in den jeweiligen dritten Transaktionsdaten 465 ein, weist aber keine Transaktionen auf. Das Laub der dritten Transaktionsdaten 465 bezieht sich erneut auf die zweiten Transaktionsdaten 455. Schließlich schließt Block B4 490 vierte Transaktionsdaten 495 ein, die das Laub und eine oder mehrere Transaktionen aufweisen. Das Laub der vierten Transaktionsdaten 495 bezieht sich auf das Laub der dritten Transaktionsdaten 465, bezieht sich aber auch auf die vorherigen Transaktionen, die innerhalb des zweiten Transaktionsdaten 455 waren. Jede für diesen Prozess 400 erzeugte Proof-of-Space-Lösung muss von zuvor gespeicherten Daten auf einer oder mehreren Speicherungsvorrichtungen auf einem Knoten innerhalb des Blockchain-Netzwerks erhalten werden. Die Struktur dieser Daten in vielen Ausführungsformen wird nachstehend ausführlicher erörtert.
  • Bezugnehmend auf 5 ist eine konzeptionelle Darstellung mehrerer Hash-Tabellen zur Verwendung in einer Chia-Blockchain gemäß einer Ausführungsform der Offenbarung gezeigt. Wie vorstehend in Bezug auf die Diskussion von 3B beschrieben, können die Plotdaten eine Vielzahl von Tabellen 510, 520, 550 einschließen. Diese Tabellen 510, 520, 550 können auf sequenzielle Weise mit einer ersten Tabelle 550, einer letzten Tabelle 510 und geordneten Tabellen 520 dazwischen organisiert sein. In vielen Ausführungsformen haben Chia-Plotdaten sieben Tabellen, es wird jedoch in Betracht gezogen, dass andere Größen verfügbar sind. Die letzte (7. Tabelle) 510 weist eine Reihe von Werten auf. Die Challenge-Daten können angeben, dass ein erster Wert 512 und zweiter Wert 513 zur Auswertung angefordert werden.
  • Um die Qualität des Plots zu überprüfen, können ein einzelner Wert und die daraus resultierenden rückpropagierten Werte gelesen, kombiniert und gehasht werden. Der erste Wert 512 wird als der Qualitätskandidat ausgewählt. In einer Reihe von Ausführungsformen basiert die Auswahl, deren Wert für die Qualität bewertet wird, auf den aktuellen Belastungsdaten. Der erste Wert 512 bezieht sich auf einen nächsten Eintrag 522 in Tabelle 6. Der Wert des Eintrags in Tabelle 6 bezieht sich auf einen Eintrag innerhalb der Tabelle 5 und so weiter, bis auf ein Endpaar von Einträgen Bezug genommen wird. Diese letzten zwei Einträge 552, 553 sind nur zwei Einträge aus den vierundsechzig Einträgen, die Teil der Qualitätsbewertung sind. Wenn der Plot eine ausreichende Qualitätsbewertung aufweist, werden alle vierundsechzig Einträge und ihre zugehörigen rückpropagierten Werte für die potenzielle Proof-of-Space-Lösung gelesen.
  • Bezugnehmend auf 6 wird ein Flussdiagramm gezeigt, das einen Prozess 600 zur Reaktion auf Challenges innerhalb eines Chia-Blockchain-Netzwerks gemäß einer Ausführungsform der Offenbarung darstellt. In Bezug auf das vorstehend Besprochene, wird ein detaillierterer Prozess 600 zur Handhabung von Challenges innerhalb des Chia-Blockchain-Systems nachstehend zusammengefasst. Beim Einrichten einer Vielzahl von Plots innerhalb einer oder mehrerer Speicherungsvorrichtungen kann der Chia-Blockchain-Knoten zuerst eine Proof-of-Space-Challenge aus dem Blockchain-Netzwerk empfangen (Block 610). In vielen Ausführungsformen wird die Challenge in Form von Challengedaten vorliegen, die von Chia-Timelords erzeugt werden. Nach dem Empfangen kann der Chia-Knoten bestimmen, ob zu bearbeitende Plots vorliegen (Block 615).
  • Wenn ein Plot zur Auswertung zur Verfügung steht, durchläuft er bei einigen Ausführungsformen zunächst einen Plotfilter (Block 620). Wie zuvor erörtert, verwenden verschiedene Ausführungsformen verschiedene Datenpunkte, einschließlich eines Commitment-Werts, um einen einzigen gehashten Wert zu erzeugen, der bewertet wird, um zu bestimmen, ob er die Anforderungen des Plotfilters erfüllt und diesen durchlaufen hat (Block 625). Wenn der aktuelle Plot den Filter nicht durchlaufen hat, kann der Prozess 600 bestimmen, ob ein anderer Plot weiterhin verarbeitet werden soll (Block 615).
  • Wenn jedoch der aktuelle auszuwertende Plot den Plotfilter durchlaufen hat, kann der Prozess 600 die Qualität des Plot bestimmen (Block 630). Wie vorstehend erörtert, wird die Qualität des Plot oft basierend auf den Werten aus einem einzelnen ausgewählten Zweig der Tabellen, die innerhalb des Plot gespeichert sind, beurteilt. Wenn die Qualität des Plots ausreichend ist, können die Qualitätsdaten dann verwendet werden, um eine Proof-of-Space-Challenge-Antwort für die Übermittlung zu erzeugen (Block 640). Dies kann in der Regel durch ein vollständiges Lesen der Plotdaten erfolgen, auf die durch die Challenge Bezug genommen wird. Die resultierende Antwort auf die Proof-of-Space-Challenge wird dann mit der tatsächlichen Challenge verglichen (Block 650).
  • Der Prozess 600 kann dies verarbeiten, um zu bestimmen, ob die Antwort auf die Proof-of-Space-Challenge die Challenge erfüllt (Block 655). In vielen Ausführungsformen stellt die Challenge eine feste Anzahl von erforderlichen Iterationen bereit, die an einem spezifischen Datensatz durchgeführt wurden. Wenn die erzeugte Proof-of-Space-Challenge-Antwort einen erforderlichen Iterationswert aufweist, der geringer als der der Challenge ist, ist die Proof-of-Space-Lösung praktikabel. Eine praktikable Antwort auf die Proof-of-Space-Challenge kann mit neuen Blockdaten gepaart und an das Blockchain-Netzwerk übermittelt werden (Block 660). Wenn die Challenge-Antwort die Challenge nicht erfüllt, kann der Prozess 600 den nächsten Plot (Block 615) bewerten. Jeder Plot wird auf diese Weise analysiert, bis alle Plots innerhalb des Knotens ausgewertet wurden.
  • Bezugnehmend auf 7 wird eine konzeptionelle Veranschaulichung einer Hash-Baumstruktur gezeigt. Bis zu diesem Punkt haben wir darauf Bezug genommen, dass Ausführungsformen der vorliegenden Offenbarung einen Plotfilter verwenden, der einen Commitment-Wert aufweist. Der Commitment-Wert kann auf verschiedene Weise erzeugt werden. In bestimmten Ausführungsformen sind die Commitment-Daten ein Wert, der von einem Hash-Baum abgeleitet ist, der den Plotdaten zugeordnet ist. Ein beispielhafter Hash-Baum 700 wird hierin erläutert.
  • Hash-Bäume bestehen aus einer Reihe verschachtelter kryptographischer Hash-Funktionen, deren Ausgänge selbst wiederum gehasht sind, bis es einen einzigen Stamm-Hash-Wert gibt. Kryptographische Hash-Funktionen sind eine Funktion, die Daten einer beliebigen Größe auf eine Ausgabe einer festen Größe abbilden kann. Diese Ausgabe mit fester Größe wird in der Regel als Hash-Wert oder einfach als „Hash“ bezeichnet. Hash-Funktionen sind einzigartig darin, dass sie eine Einwegfunktion sind, die einfache Verfahren zum Berechnen einer Ausgabe aus einer beliebigen Eingabe erstellt, aber auch die Erzeugung einer Eingabe basierend auf der Hash-Ausgabe erschwert oder nahezu unmöglich macht. Kryptographische Hash-Funktionen sind ebenfalls in der Regel deterministisch, was bedeutet, dass die gleiche Eingabe immer die gleiche Ausgabe ergibt. Dies macht das Hashing in verschiedenen Anwendungen, wie etwa Kryptowährung, nützlich.
  • Der beispielhafte Hash-Baum 700 weist eine Reihe von Eingabeblättern auf, die bis zu einem einzelnen Stamm-Hash 718 aus allen vorherigen Sub-Hashes zusammengehasht werden. Die Eingabeblätter im beispielhaften Hash-Baum 700 können je nach gewünschter Anwendung variieren, aber in diesem Beispiel sind acht Dateien (bezeichnet als f1 - f8) gehasht (als in Abhängigkeit von H(fN) bezeichnet), um die Eingabeblätter-Hashes h1 701, h2 702, h3 703, h4 704, h5 705, h6 706, h7 707 und h5 708 zu erstellen. Diese Eingabeblätter-Hashes werden gepaart und erneut gehasht. Zum Beispiel wird Eingabeblatt-Hash h1 701 mit h2 702 gepaart, um einen neuen Hash h1,2 712 zu erstellen. Ebenso werden die Eingabeblatt-Hashes h5 703 und h4 704 gepaart, um einen neuen Hash h3,4 734 zu erstellen, die Eingabeblatt-Hashes h5 705 und h6 706 werden gepaart, um einen neuen Hash h5,6 756 zu erstellen, und die Eingabeblatt-Hashes h7 707 und h8 708 werden gepaart, um einen neuen Hash h7,8 778 zu erstellen.
  • Diese neu erstellten Hashes werden wieder gepaart und erneut gehasht. Hash h1,2 712 und h3,4 734 werden zusammengehasht, um das kombinierte Hash h1,4 714 zu erstellen. Ebenso werden Hash h5,6, 756 und Hash h7,8 778 zusammengehasht, um das kombinierte Hash h5,8 758 zu erstellen. Diese kombinierten Hashes h1,4 714 und h5,8 758 werden wiederum zusammengehasht, um den Stamm-Hash h1,8 718 zu erstellen.
  • Bezugnehmend auf 8 ist eine konzeptionelle Veranschaulichung einer Hash-Baumstruktur 800 zur Verwendung innerhalb eines gesicherten Chia-Blockchain-Netzwerks gemäß einer Ausführungsform der Offenbarung gezeigt. Ähnlich wie beim Hash-Baum-Beispiel von 7 können viele Ausführungsformen einen modifizierten Hash-Baum verwenden, der Wertepaare als Eingabeblätter anstelle von Dateien verwendet. Innerhalb der in 8 dargestellten Ausführungsform gibt es auch 8 Eingabeblätter-Hashes h1 801, h2 802, h5 803, h4 804, hw 805, hx 806, hy 807 und hz 808. Ähnlich wie 7 schließt die linke Hälfte der Hash-Stammstruktur 800 das Eingabeblatt-Hash h1 801 ein, das mit h2 802 gepaart wird, um ein neues Hash h1,2 812 zu erstellen. Ebenso werden die Eingabeblatt-Hashes h5 803 und h4 804 gepaart, um ein neues Hash h3,4 834 zu erstellen. Weiterhin werden Hash h1,2 812 und h3,4 834 zusammengehasht, um das kombinierte Hash h1,4 814 zu erstellen.
  • Die Paare von Zahlen, die für das Hashing verwendet werden, können Tabellenstammwerte und einen jeweiligen Wert einschließen, der von einem oder mehreren Zweigen von diesem Tabellenstammwert abgeleitet ist. Zum Beispiel kann ein Tabellenstammwert einer der ausgewählten Werte innerhalb der Vielzahl von Bäumen eines gespeicherten Plots sein, der einer empfangenen Challenge zugeordnet ist. Wie bei der Auswertung der Plotqualität zu sehen ist, kann ein einzelner Wert ausgewählt werden und der rückpropagierte Zweig kann untersucht werden. Daher können verschiedene Ausführungsformen einen der in diesem Zweig gespeicherten Werte verwenden. In einigen Ausführungsformen kann der numerisch kleinste Wert innerhalb des Zweigs als der Zweigwert ausgewählt werden. Fachleute werden erkennen, dass viele mögliche Kombinationen existieren.
  • Somit werden 8 verschiedene Werte aus dem Plot gelesen und die Zweigwerte basierend auf der empfangenen Challenge bestimmt. Tabellenstammwert1 und Zweigwert, werden zusammengehasht, um das Hash h1 801 zu erstellen. Ebenso werden Stammwert2 und Zweigwert2 zusammengehasht, um das Hash h2 802 zu erstellen, Stammwert3 und Zweigwert3 werden zusammengehasht, um das Hash h5 803 zu erstellen und Stammwert4 und Zweigwert4 werden zusammengehasht, um das Hash h1 801 zu erstellen.
  • Die übrigen Tabellenstammwerte w - z und die Zweigwerte w - z werden auch als Blatteingabe bei den Hashes hw 805, hx 806, h7 807 und hz 808 verwendet. Obwohl der in 8 dargestellte Hash-Baum 8 Eingaben verwendet, zeigt die Verwendung von tiefgestellten Buchstaben an, dass sich die Größe des Hash-Baums variieren und die Anzahl der Hashes und kombinierten Hashes, die erstellt werden, erhöhen kann. Die primäre Anforderung für diesen Hash-Baum ist, dass ein resultierender Stamm-Hash 818 erzeugt wird. Daher werden die Hashes hw 805 und hx 806 als Eingaben für Hash hw,x 856 verwendet und Hashes hw 805 und hz 808 als Eingaben gepaart, um Hash hy,z 878 zu erstellen. Diese kombinierten Hashes werden selbst in Hash hw,z 858 kombiniert, das selbst mit Hash h1,4 kombiniert ist, um den Stamm-Hash h1,z 818 zu erstellen.
  • In einer Reihe von Ausführungsformen kann ein Hash-Baum unter Verwendung dieser Eingaben eingebettet in oder anderweitig mit dem erzeugten Plot gespeichert werden. In bestimmten Ausführungsformen können die Hash-Baum-Daten den Tabellendaten innerhalb der Plots hinzugefügt werden. In weiteren Ausführungsformen können die Hash-Baum-Daten von den Plotdaten getrennt sein. Wie nachstehend in Bezug auf 12 ausführlicher gezeigt, kann der Einschluss eines Hash-Baums mit den Plotdaten die Erzeugung eines Hash-Baumpfads ermöglichen, der dazu beitragen kann nachzuweisen, dass ein Benutzer die Plotdaten für eine bestimmte Zeitdauer gespeichert hat, und dabei helfen, spezialisierte Angriffe auf die Blockchain zu vereiteln, die versuchen könnten, Betrug zu erzeugen. Eine detailliertere Erörterung dieses Prozesses ist unten beschrieben.
  • Bezugnehmend auf 9 wird ein Flussdiagramm gezeigt, das einen Prozess 900 zur Integration von Hash-Baum-formatierten Daten innerhalb eines Chia-Plots gemäß einer Ausführungsform der Offenlegung darstellt. In verschiedenen Ausführungsformen kann der Prozess 900 mit der Bestimmung einer Stammtabelle innerhalb eines Plots (Block 910) beginnen. Wie vorstehend erörtert, weisen Chia-Plotdaten in der Regel eine Vielzahl von geordneten Tabellen auf. Die letzte Tabelle schließt einen Satz von Werten ein, die auf einen anderen Eintrag in der vorherigen Tabelle Bezug nehmen, der sich selbst auf einen Eintrag in einer anderen vorherigen Tabelle und so weiter zurückbezieht, bis auf Werte innerhalb der ersten Tabelle Bezug genommen wird. Unter einer Stammtabelle kann die letzte Tabelle innerhalb der Vielzahl von Tabellen verstanden werden, die den ersten Eintrag in der Backpropagation-Chain oder im „Zweig“ innerhalb des Plots aufweist.
  • In der Regel muss eine Vielzahl von Stammtabelleneinträgen verarbeitet werden. Oft ist dies eine Reaktion auf eine empfangene Challenge, auf die eine Gruppe der Stammtabelleneinträge Bezug nimmt. Der Prozess 900 kann bestimmen, ob alle Stammtabelleneinträge, auf die Bezug genommen wird, verarbeitet wurden (Block 915). Sind noch verbleibende Stammtabelleneinträge zu verarbeiten, kann einer der Stammtabelleneintragswerte ausgewählt werden (Block 920). Der Prozess 900 kann dann den Zweig durchlaufen, der aus dem ausgewählten Stammtabelleneintrag stammt. In einer Reihe von Ausführungsformen wird einer der Werte innerhalb dieses Zweigs ausgewählt und dann dem Stammtabelleneintrag zugeordnet (Block 930). Zum Beispiel kann der Prozess 900 jeden der gefundenen Zweigwerte vergleichen und den Eintrag mit dem kleinsten numerischen Wert auswählen. Es kann jedoch jede Art von Auswahlvorgang auftreten. Weitere Beispiele schließen Auswahlen ein, die dem StammtabellenEintrag (oder einem anderen zugehörigen plotspezifischen Wert) numerisch am nächsten sind, den endgültigen Eintrag innerhalb der ersten Tabelle oder Auswahlen, die den höchsten numerischen Wert aufweisen, sind jedoch nicht auf diese beschränkt.
  • Sobald sie ausgewählt und zugeordnet sind, werden der Stammtabelleneintragswert und der entsprechende ausgewählte Zweigwert verwendet, um ein Paar für die spätere Verwendung in der Hash-Baum-Erzeugung zu erzeugen (Block 940). Sobald sie gepaart sind, können die Werte zu einem insgesamt erzeugten Satz von Paaren hinzugefügt werden (Block 950). Der Prozess 900 kann dann bestimmen, ob alle weiteren Stammtabelleneinträge für die Verarbeitung erforderlich sind (Block 915). Dieser Prozess wiederholt sich in der Regel für jeden Tabelleneinträge, auf die Bezug genommen wird. Nachdem alle Stammtabelleneinträge verarbeitet wurden, kann die Erzeugung des Hash-Baums beginnen, wobei jedes der Paare in dem Satz von Paaren als Eingabeblätter verwendet wird (Block 960). In weiteren Ausführungsformen kann der Prozess 900 nur einen bestimmten Satz von Paaren verwenden. Wenn sich beispielsweise eine Challenge-Anforderung auf zweiunddreißig Stammtabellenwerte bezieht, werden zweiunddreißig Paare erzeugt. Es kann jedoch ein Hash-Baum mit nur vier oder acht Eingabepaaren benötigt werden. Somit kann der Prozess 900 zum Beispiel die ersten vier und letzten vier Paare für die Erzeugung des Hash-Baums auswählen. Andere Auswahlmöglichkeiten können je nach Wunsch möglich sein.
  • Nach dem Erzeugen kann der resultierende Stammwert des Hash-Baums verwendet werden, um einen Commitment-Wert (Block 970) zu erzeugen. Dieser Commitment-Wert, der in vielen Ausführungsformen im Chia-Plot-Filterprozess verwendet wird, kann einfach der Stamm-Hash-Wert sein. In zusätzlichen Ausführungsformen kann der Stamm-Hash-Wert jedoch weiter verarbeitet werden, um zu einem Commitment-Wert zu gelangen. Eine solche Verarbeitung kann das Aufnehmen nur eines Abschnitts des resultierenden Stamm-Hash-Werts und/oder das Durchführen weiterer arithmetischer Vorgänge einschließen, um zu einem eindeutigen Wert zu gelangen.
  • Sobald ein Commitment-Wert bestimmt wurde, kann der Prozess 900 den Hash-Baum-Wert in einer assoziierbaren Weise mit dem Plot speichern (Block 980). Wie oben beschrieben, ermöglicht eine assoziierbare Weise eine Vielzahl von Verfahren zur Speicherung, da auf die gespeicherten Daten nur Bezug genommen werden muss oder auf andere Weise Zugriff auf den Plot genommen werden muss. In einigen Ausführungsformen werden die Hash-Baum-Daten in der/den Plotdatendatei(en) gespeichert. In weiteren Ausführungsformen werden die Hash-Baum-Daten in einer separaten Datei gespeichert und möglicherweise sogar an einem separaten Ort.
  • In einigen Fällen muss die Erzeugung von Hash-Baum-Daten möglicherweise durch eine andere Sicherheitsmaßnahme unterstützt oder anderweitig integriert werden. Zum Beispiel können viele Ausführungsformen ein Verfahren verwenden, um einen Anreiz für böswillige Chia-Miner zu vermeiden, eine Fülle von Stamm-Hash-Werten zu erzeugen und sie so lange auszuprobieren, bis einer funktioniert. Ein Beispiel für die Umgehung eines solchen Angriffs ist nachstehend beschrieben.
  • Bezugnehmend auf 10 wird ein Flussdiagramm gezeigt, das einen Prozess 1000 zur Erzeugung und Registrierung eines Plotdatensatzes gemäß einer Ausführungsform der Offenbarung darstellt. Wie vorstehend beschrieben, kann ein Plotidentifikationswert auf verschiedene Weise erzeugt werden. In der Regel wird der Plotidentifikationswert derart erzeugt, dass er für den spezifischen Plot eindeutig ist. Dies kann durch Hashing eines globalen Wertes und eines Wertes, der für den spezifischen Chia-Miner, die Mining-Hardware oder die Pool-Verarbeitungskennung lokal ist, erfolgen. In einer Vielzahl von Ausführungsformen kann der Prozess 1000 einen spezifischen Plotidentifikationswert für jeden Plot (Block 1010) bestimmen.
  • Als Nächstes kann ein Plotdatensatz erzeugt werden, indem der Plotidentifikationswert für den aktuellen Plot und den zuvor bestimmten Commitment-Wert verwendet wird (Block 1020). In einigen Ausführungsformen können der Plotidentifikationswert und der Commitment-Wert miteinander verkettet und gehascht werden, um diesen Plotdatensatz zu erzeugen. In anderen Ausführungsformen können der Plotidentifikationswert und der Commitment-Wert vor dem Hashing addiert oder anderweitig arithmetisch manipuliert werden. Der resultierende Plotdatensatz integriert Daten, die sich sowohl auf den eindeutigen Plotidentifizierer als auch auf die zugehörigen Hash-Baumdaten beziehen.
  • Der Prozess 1000 kann dann den Plotdatensatz innerhalb der Blockchain selbst registrieren (Block 1030). Dies kann in vielen Ausführungsformen als Transaktionsdaten erfolgen. Die strukturellen Daten der Chia-Blockchain können jedoch geändert werden, um diese erhöhte Datenrate zu berücksichtigen, die darin gespeichert wird. Durch Registrieren der Plotdatensatzwerte können in der Zukunft Rechenprozesse durchgeführt werden, die angeben können, dass der spezifische Plot und der zugehörige Hash-Baum zu diesem Zeitpunkt innerhalb von Speicherungsvorrichtungen eines Chia-Miners vorhanden waren. Dies kann verhindern, dass Angreifer versuchen, dem Chia-Netzwerk schnell generierte Plotdaten hinzuzufügen.
  • In einer Vielzahl von optionalen Ausführungsformen kann der Prozess 1000 auch die Verwendung des registrierten Plots einschränken, bis ein vorbestimmtes Ereignis auftritt (Block 1040). Auf diese Weise wird eine weitere Hürde für potenzielle Angreifer integriert, denn zu dem Zeitpunkt, an dem ein neu registrierter Block zur Blockchain hinzugefügt wird, sind bereits neue Challenges ausgegeben worden, was verhindert, dass der Angreifer weiß, welche zukünftigen Challenges es geben wird. In einigen Ausführungsformen kann sich das vorbestimmte Ereignis auf die Höhe der Blockchain beziehen. Oft wird der Begriff „Höhe“ in Bezug auf die Kryptowährung als Maß dafür verwendet, wie viele Blöcke der Blockchain hinzugefügt wurden. Daher kann das Chia-System dazu eingerichtet sein, vorgeschlagene Challenge-Lösungen aus einem Plot bis zur Höhe der Blockchain abzulehnen. Fachleuten sollten jedoch verstehen, dass jede geeignet ist, um die Verwendung der neu registrierten Darstellung zu verzögern. Zum Beispiel kann ein zeitbezogener Wert innerhalb des Chia-Plotfilterprozesses verwendet werden. Ein Beispiel für diese Art von Verfahren wird nachstehend beschrieben.
  • Bezugnehmend auf 11 wird ein Flussdiagramm gezeigt, das einen Prozess 1100 für die Verwendung eines Commitment-Werts zur sicheren Verarbeitung von Chia-Blockchain-Challenges gemäß einer Ausführungsform der Offenlegung darstellt. In vielen Ausführungsformen empfängt der Prozess 1100 eine Proof-of-Space-Challenge aus dem Blockchain-Netzwerk (Block 1110). Nach dem Empfangen kann ein Plot zum Verarbeiten der Challenge (Block 1120) ausgewählt werden. Wie bei früheren Verfahren kann der Prozess 1100 einen Plotidentifikationswert für den ausgewählten Plot (Block 1130) bestimmen.
  • In einer Reihe von Ausführungsformen wird die Challenge analysiert, um einen Challenge-Wert (Block 1140) zu bestimmen. Dieser Challenge-Wert kann einen Bezug auf eine Vielzahl von Einträgen innerhalb der letzten Tabelle des Plots sein. In weiteren Ausführungsformen kann der Challenge-Wert einfach ein direkter Teil der von den Chia-Timelords empfangenen Challenge-Daten sein. Der Challenge-Wert kann einfach eine numerische Darstellung oder eine andere Identifikation sein, die der aktuell ausgegebenen Challenge zugeordnet werden kann.
  • Zusätzlich kann ein zeitbezogener Wert bestimmt werden (Block 1150). Dies kann in jedem Format oder jeder Quelle erfolgen, solange er einen gewissen Wert der Zeit darstellt. Wie oben erörtert, wachsen Blockchains in der Regel immer durch Hinzufügen von Blöcken zu der Blockchain. Diese Anzahl von Blöcken kann als eine Zahl identifiziert werden, die als „Höhe“ bezeichnet wird Somit kann die aktuelle Höhe der Blockchain einem Ablauf der Zeit zugeordnet werden, wodurch die Blockchain-Höhe für den Zeitverlauf repräsentativ sein kann.
  • In vielen Ausführungsformen kann der Prozess 1100 den Hashwert der Kombination aus dem Plotidentifikationswert, dem Challenge-Wert, dem zeitabhängigen Wert und dem Commitment-Wert (Block 1160) berechnen. Dieser resultierende Hash wird mit vielen verschiedenen Aspekten des Chia-Mining-Prozesses verbunden. Die erhöhte Vermischung und das Hashing dieser Art von Werten hilft, Angriffe zu verhindern, da es immer schwieriger wird, alle diese Werte zu imitieren.
  • Nach dem Hashen kann der Prozess 1100 den erzeugten Hash-Wert durch den Plotfilter durchlaufen. Es kann bestimmt werden, ob der Hash-Wert den vorgegebenen Schwellenwert überschreitet (Block 1165). Wenn der Hash-Wert den Chia-Filter nicht durchläuft, kann der Prozess 1100 enden. Wenn der resultierende Hash jedoch den Chia-Filter durchläuft, kann der Prozess 1100 das Proof-of-Space-Challenge Verarbeitungssystem fortsetzen (Block 1170).
  • Bezugnehmend auf 12 wird ein konzeptionelles Diagramm gezeigt, in dem dargestellt ist, wie ein Hash-Baumpfad gemäß einer Ausführungsform der Offenbarung erzeugt werden kann. Wie oben erörtert, kann ein Commitment-Wert aus einem Hash-Stamm-Baum erzeugt werden oder sogar einfach der Wert des Stamm-Hash selbst sein. Der Commitmentbasierte Hash-Baum wäre auch in vielen Ausführungsformen in einem jeweiligen Chia-Plot eingebettet oder ihm anderweitig zugeordnet. Die ursprünglichen Eingaben des eingebetteten Hash-Baums wären in der Regel Werte, die aus dem Plot selbst abgeleitet sind. Nach dem Einrichten kann der Hash-Baum zu späteren Zeiten verwendet werden, um nachzuweisen, dass ein Benutzer zuvor die auf seiner Speicherungsvorrichtung gespeicherten Daten hatte. Dies kann durch die gemeinsame Nutzung eines Hash-Baumpfades (auch als Hash-Proof bekannt) von dem eingebetteten Hash-Baum erreicht werden.
  • Wie oben erörtert, wird der eingebettete Hash-Baum basierend auf den Stammwerten der letzten Tabelle der Plotdaten und einem anderen zugehörigen Wert innerhalb des Zweigs erzeugt, der aus dem Stammwert stammt. In vielen Ausführungsformen ist der zugehörige Wert der kleinste numerische Wert innerhalb des Zweigs. Andere zugehörige Werte sind jedoch möglich.
  • Wenn ein Knoten eine praktikable Proof-of-Space-Lösung erzeugt, kann eine Anzahl von hierin beschriebenen Ausführungsformen erfordern, dass der praktikable Proof-of-Space mit dem zuvor generierten Commitment-Wert übereinstimmt. Dies kann durchgeführt werden, indem ein Hash-Baumpfad für sowohl die aktuelle Challenge angezeigt wird (was einen Stammwert der Plotdaten anzeigt) als auch den zugehörigen Wert innerhalb des Zweigs aufgedeckt wird. Durch die Notwendigkeit dieses Schritts kann sichergestellt werden, dass ein vorgeschlagener praktikabler Proof-of-Space nicht einfach einen zufälligen Hash-Stammwert erzeugt hat. Um einen Hash-Baumpfad bereitzustellen und zu verifizieren, muss der Stamm-Hash-Wert von einem Wert abgeleitet werden, der beim Erstellen des Hash-Baums in der Vergangenheit verwendet wurde, bevor die aktuelle Challenge ausgegeben wurde.
  • Ein Hash-Baumpfad kann erzeugt werden durch Bereitstellen eines einzelnen oder mehrerer Eingabeblattwerte und anderer Hash-Werte, sodass man in der Lage ist, sich den Hash-Baum hinauf zu arbeiten, bis man in der Lage ist, einen Stamm-Hash zu erzeugen. Wenn der erzeugte Stamm-Hash dem zuvor erzeugten Stamm-Hash entspricht, dann kann erkannt werden, dass der/die Eingabewert(e) in dem ursprünglichen Hash-Baum vorhanden war/waren, was nachweist, dass der Plot nicht nur für diese Challenge erzeugt wurde, um das Konsensnetzwerk zu umgehen. In der in 12 dargestellten Ausführungsform wird der Hash-Baumpfad 1200 von den ursprünglichen Daten abgeleitet (angegeben als f3 1201) ist, die gehashed werden können, um h3' 1203 zu erzeugen. Der Chia-Knoten kann den ursprünglichen Hash h4 1204 bereitstellen, der mit Hash h3' 1203 kombiniert werden kann, um ein kombiniertes Hash von h3,4' 1234 zu erzeugen. Der Knoten stellt weiterhin Hash h1,2 1212 bereit, das mit h3,4' 1234 zusammengehasht wird, um Hash h1,4' 1214 zu erzeugen. Der Knoten stellt erneut das fehlende Stück des kombinierten Hash h5,8 1258 bereit, das mit Hash h1,4' 1214 gepaart werden kann, um das Stamm-Hash h1,8' 1218 zu replizieren.
  • Sobald das Stamm-Hash repliziert wurde, kann es mit dem ursprünglichen Stamm-Hash verglichen werden, um zu sehen, ob eine Übereinstimmung vorliegt. Aufgrund des Lawineneffekts von Hashes, die große Änderungen der Ausgabewerte aus selbst kleinen Änderungen der Eingabewerte erstellen, zeigt eine Übereinstimmung zwischen dem replizierten Stamm-Hash und dem bekannten Stamm-Hash an, dass die Eingabewerte korrekt sind und ein Teil der Plotdaten waren, als der Plot erzeugt wurde, was eine Anforderung des Proof-of-Space-Konsensverfahrens erfüllt. Außerdem sollte von Fachleuten erkannt werden, dass die Größe des Hash-Baums in diesem Beispiel für veranschaulichende Zwecke vereinfacht wurde und dass sich die Größe und Anzahl der Eingaben in einem Hash-Baum nach Bedarf erweitern kann, um alle Plotdaten zu verkapseln.
  • Bezugnehmend auf 13 wird ein Flussdiagramm gezeigt, das einen Prozess 1300 zum Verwenden eine Hash-Baumpfads für eine Challenge-Antwort gemäß einer Ausführungsform der Offenbarung darstellt. In vielen Ausführungsformen empfängt der Chia-Knoten einen Challenge-Wert (Block 1310). In bestimmten Ausführungsformen wird der Challenge-Wert direkt innerhalb oder aus einer Blockchain-Challenge empfangen. In weiteren Ausführungsformen kann der Challenge-Wert aus den empfangenen Blockchain-Challengedaten abgeleitet werden.
  • In der Regel entspricht der Challenge-Wert in gewisser Weise einem Wert innerhalb einem der Einträge in der letzten Tabelle der Vielzahl von Tabellen innerhalb eines Chia-Plots. Dieser Eintrag kann als Stammwert angesehen werden, der einem Wert in einer vorherigen Tabelle innerhalb der Vielzahl von Tabellen entspricht, die selbst auf einen Eintrag in einer vorherigen Tabelle Bezug nimmt, und so weiter. Nach der Verarbeitung kann basierend auf dem empfangenen Challenge-Wert ein praktikabler Proof-of-Space erzeugt werden (Block 1320). Der Prozess 1300 kann den Tabellen-Stammwert bestimmen, der dem Challenge-Wert zugeordnet ist (Block 1330). Dieser Tabellen-Stammwert kann dann verwendet werden, um in diesem Zweig Backpropagation durchzuführen, um alle zugehörigen Werte innerhalb dieses Zweigs zu lesen. Der Prozess kann dann einen Wert innerhalb dieses Zweig auswählen, der dem bestimmten Tabellen-Stammwert zugeordnet ist (Block 1340). In vielen Ausführungsformen basiert der Abschnitt des Werts auf einer gewissen Eigenschaft des Werts in Bezug auf andere Werte innerhalb des Zweigs. Beispielsweise kann der ausgewählte Wert der kleinste Wert innerhalb des Zweigs sein. Es sollte jedoch erkannt werden, dass jede andere Regel, die einen einzelnen Wert auswählt, geeignet sein kann, wie etwa das Auswählen des größten Werts, des Wertes, der dem Stammwert der Tabelle am nächsten liegt, usw.
  • Sobald der Tabellen-Stammwert und der ausgewählte Zweigwert bestimmt wurden, kann der Prozess 1300 auf Anforderung einen Hash-Baumpfad erzeugen (Block 1350). In einer Reihe von Ausführungsformen wird die Anforderung für einen Hash-Baumpfad bei der Erzeugung einer gültigen Proof-of-Space-Lösung hin basierend auf dem Tabellen-Stammwert ausgeführt. Dies kann intern innerhalb des Chia-Knotens erfolgen und erfordert keine externen Anforderungen. Der erzeugte Hash-Baumpfad kann in vielen Fällen die zugehörigen Hashes anderer Werte und/oder Zweige einschließen, sodass eine Wiederherstellung des Stamm-Hash-Werts des Hash-Baums erzeugt werden kann, wenn der Tabellen-Stammwert und der ausgewählte Zweigwert bekannt sind.
  • Schließlich kann der Prozess 1300 die erzeugte praktikable Proof-of-Space-Lösung und den Hash-Baumpfad in das Blockchain-Netzwerk übertragen (Block 1360). Nach dem Übertragen kann der Proof-of-Space verifiziert und der Hash-Baumpfad überprüft werden, um sicherzustellen, dass die Daten, von denen die Lösung abgeleitet wurde, zuvor innerhalb eines Speicherungsplatzes des übermittelnden Chia-Netzwerkknotens vorhanden waren. Wie vorstehend erörtert, können die genauen Daten, die an das Chia-Blockchain-Netzwerk übermittelt werden, einfach die entsprechenden Hashes einschließen, die erforderlich sind, um den Stamm-Hash-Wert basierend auf den gegebenen Eingabeblattwerten neu zu erstellen. Die Übermittlungsvorgänge können über einen Chia-Knoten erfolgen, der mit dem Chia-Netzwerk verbunden ist. Eine Vorrichtung, die zum Betreiben als ein Chia-Knoten innerhalb des Chia-Blockchain-Netzwerks geeignet ist, wird nachstehend ausführlicher beschrieben.
  • Bezugnehmend auf 14 ist ein schematisches Blockdiagramm einer Host-Rechnervorrichtung gezeigt, die für eine Proof-of-Space-Konsens-Blockchain-Verarbeitung gemäß einer Ausführungsform der Offenbarung geeignet ist. Das Proof-of-Space-Konsens-Blockchain-System 1400 weist eine oder mehrere Speicherungsvorrichtungen 1420 eines Speicherungssystems 1402 innerhalb einer Host-Rechnervorrichtung 1410 in Kommunikation über eine Steuerung 1426 auf. Die Host-Rechnervorrichtung 1410 kann einen Prozessor 1411, einen flüchtigen Speicher 1412 und eine Kommunikationsschnittstelle 1413 einschließen. Der Prozessor 1411 kann eine oder mehrere zentrale Verarbeitungseinheiten, einen oder mehrere Universalprozessoren, einen oder mehrere anwendungsspezifische Prozessoren, einen oder mehrere virtuelle Prozessoren (z. B. kann die Host-Rechnervorrichtung 1410 eine virtuelle Maschine sein, die innerhalb eines Hosts arbeitet), einen oder mehrere Prozessorkerne oder dergleichen einschließen. Die Kommunikationsschnittstelle 1413 kann eine oder mehrere Netzwerkschnittstellen einschließen, die eingerichtet sind, die Host-Rechnervorrichtung 1410 und/oder die Steuerung 1426 der Speicherungsvorrichtung 1420 kommunikativ mit einem Kommunikationsnetzwerk, wie einem Internet Protocol-Netzwerk (IP-Netzwerk), einem Storage Area Network (SAN), einem drahtlosen Netzwerk, einem drahtgebundenen Netzwerk oder dergleichen zu koppeln.
  • Die Speicherungsvorrichtung 1420 kann in verschiedenen Ausführungsformen an einem oder mehreren unterschiedlichen Orten relativ zu der Host-Rechnervorrichtung 1410 angeordnet sein. In einer Ausführungsform weist die Speicherungsvorrichtung 1420 ein oder mehrere nichtflüchtige Speichervorrichtungen 1423, wie Halbleiterchips oder -pakete oder andere Vorrichtungen mit integrierter Schaltung, die auf einer oder mehreren Leiterplatten, Speicherungsgehäusen und/oder anderen mechanischen und/oder elektrischen Trägerstrukturen angeordnet sind, auf. Zum Beispiel kann die Speicherungsvorrichtung 1420 eine oder mehrere Direct-Inline-Memory-Module-Karten (DIMM-Karten), eine oder mehrere Erweiterungskarten und/oder Tochterkarten, ein Festkörperlaufwerk (SSD) oder eine andere Festplattenvorrichtung aufweisen und/oder kann einen anderen Speicher- und/oder Speicherungsformfaktor aufweisen. Die Speicherungsvorrichtung 1420 kann in einer Hauptplatine der Host-Rechnervorrichtung 1410 integriert und/oder darauf montiert sein, in einem Port und/oder Steckplatz der Host-Rechnervorrichtung 1410 installiert sein, auf einer anderen Host-Rechnervorrichtung 1410 und/oder einem dedizierten Speicherungsgerät auf dem Netzwerk 1415 installiert sein, mit der Host-Rechnervorrichtung 1410 über einen externen Bus (z. B. eine externe Festplatte) in Kommunikation sein oder dergleichen.
  • Die Speicherungsvorrichtung 1420 kann in einer Ausführungsform auf einem Speicherbus eines Prozessors 1411 (z. B. auf dem gleichen Speicherbus wie der flüchtige Speicher 1412, auf einem anderen Speicherbus als der flüchtige Speicher 1412, anstelle des flüchtigen Speichers 1412 oder dergleichen) angeordnet sein. In einer weiteren Ausführungsform kann die Speicherungsvorrichtung 1420 auf einem peripheren Bus der Host-Rechnervorrichtung 1410, wie einem Peripheral-Component-Interconnect-Express-Bus (PCI Express- oder PCIe-Bus), wie, ohne jedoch darauf beschränkt zu sein, einer NVM-Express-Schnittstelle (NVMe-Schnittstelle), einem Serial-Advanced-Technology-Attachment-Bus (SATA-Bus), einem Parallel-Advanced-Technology-Attachment-Bus (PATA-Bus), einem Small-Computer-System-Interface-Bus (SCSI-Bus), einem FireWire-Bus, einer Fibre-Channel-Verbindung, einem Universal-Serial-Bus (USB), einem PCIe-Advanced-Switching-Bus (PCIe-AS-Bus) oder dergleichen, angeordnet sein. In einer anderen Ausführungsform kann die Speicherungsvorrichtung 1420 auf einem Kommunikationsnetzwerk 1415, wie einem Ethernet-Netzwerk, einem Infiniband-Netzwerk, SCSI RDMA über ein Netzwerk 1415, einem Storage-Area-Network (SAN), einem Local-Area-Network (LAN), einem Wide-Area-Network (WAN), wie dem Internet, einem anderen drahtgebundenen und/oder drahtlosen Netzwerk 1415 oder dergleichen, angeordnet sein.
  • Die Host-Rechnervorrichtung 1410 kann weiterhin ein computerlesbares Speicherungsmedium 1414 aufweisen. Das computerlesbare Speicherungsmedium 1414 kann ausführbare Befehle aufweisen, die eingerichtet sind, um die Host-Rechnervorrichtung 1410 (z. B. den Prozessor 1411) zu veranlassen, Schritte eines oder mehrerer der hierin offenbarten Verfahren durchzuführen. Zusätzlich oder alternativ dazu kann die Pufferkomponente 1450 als eine oder mehrere computerlesbare Anweisungen ausgeführt sein, die auf dem computerlesbaren Speicherungsmedium 1414 gespeichert sind.
  • Ein Vorrichtungstreiber und/oder die Steuerung 1426 können in bestimmten Ausführungsformen einen logischen Adressraum 1434 an die Host-Clients 1416 bereitstellen. Wie hierin verwendet, bezieht sich ein logischer Adressraum 1434 auf eine logische Repräsentation von Speicherressourcen. Der logische Adressraum 1434 kann eine Vielzahl (z. B. einen Bereich) von logischen Adressen aufweisen. Wie hierin verwendet, bezieht sich eine logische Adresse auf jeden Identifikator zum Referenzieren einer Speicherressource (z. B. Daten), einschließlich, ohne jedoch darauf beschränkt zu sein: einer logische Blockadresse (LBA), einer Zylinder/Kopf/Sektor(Cylinder/Head/Sector, CHS)-Adresse, einem Dateinamen, einem Objektidentifikator, einem global eindeutigen Identifikator (Globally Unique Identifier, GUID), einem Hash-Code, einer Signatur, einem Indexeintrag, einem Bereich, einem Umfang oder dergleichen.
  • Ein Vorrichtungstreiber für die Speicherungsvorrichtung 1420 kann Metadaten 1435, wie eine Logisch-zu-physisch-Adressabbildungsstruktur, verwalten, um logische Adressen des logischen Adressraums 1434 auf Medienspeicherungsorte auf der Speicherungsvorrichtung bzw. den Speicherungsvorrichtungen 1420 abzubilden. Ein Vorrichtungstreiber kann eingerichtet sein, Speicherungsdienste an einen oder mehrere Host-Clients 1416 bereitzustellen. Die Host-Clients 1416 können lokale Clients, die auf der Host-Rechnervorrichtung 1410 arbeiten, und/oder Remote-Host-Clients 1417, die über das Netzwerk 1415 und/oder die Kommunikationsschnittstelle 1413 zugänglich sind, einschließen. Die Host-Clients 1416 können einschließen, ohne jedoch darauf beschränkt zu sein: Betriebssysteme, Dateisysteme, Datenbankanwendungen, Serveranwendungen, Kernel-Ebenen-Prozesse, Benutzerebenenprozesse, Anwendungen und dergleichen. In vielen Ausführungsformen ist der Host-Client eine Proof-of-Space-Blockchain-Logik, welche die Host-Rechnervorrichtung 1410 als ein Knoten innerhalb eines Proof-of-Space-Konsens-Blockchain-Netzwerks agieren lässt. Die in 14 dargestellten Ausführungsformen weisen einen Chia-Knoten-Anwendungs-Host-Client auf. Diese Ausführungsform kann somit eingerichtet sein, um als Chia-Knoten auf dem Chia-Blockchain-Netzwerk zu agieren.
  • In vielen Ausführungsformen kann die Host-Rechnervorrichtung 1410 eine Vielzahl von virtuellen Maschinen einschließen, die basierend auf einer Benutzeranforderung instanziiert oder anderweitig erstellt werden können. Wie dem Fachmann ersichtlich ist, kann eine Host-Rechnervorrichtung 1410 eine Vielzahl von als virtuelle Hosts eingerichteten virtuellen Maschinen erstellen, die nur auf die verfügbaren Rechenressourcen und/oder den Bedarf beschränkt ist. Ein Hypervisor kann verfügbar sein, um die Vielzahl von virtuellen Maschinen zu erstellen, auszuführen und anderweitig zu verwalten. Jede virtuelle Maschine kann eine Vielzahl von virtuellen Host-Clients ähnlich den Host-Clients 1416 einschließen, die das Speicherungssystem 1402 verwenden können, um Daten zu speichern und darauf zuzugreifen.
  • Der Vorrichtungstreiber kann weiterhin kommunikativ mit einem oder mehreren Speicherungssystemen 1402 gekoppelt sein, die unterschiedliche Arten und Konfigurationen von Speicherungsvorrichtungen 1420 einschließen können, einschließlich, ohne jedoch darauf beschränkt zu sein: Festkörperspeicherungsvorrichtungen, Halbleiterspeicherungsvorrichtungen, SAN-Speicherungsressourcen oder dergleichen. Die eine oder mehreren Speicherungsvorrichtungen 1420 können eine oder mehrere jeweilige Steuerungen 1426 und nichtflüchtige Speicherkanäle 1422 aufweisen. Der Vorrichtungstreiber kann Zugriff auf die eine oder die mehreren Speicherungsvorrichtungen 1420 über beliebige kompatible Protokolle oder eine beliebige Schnittstelle 1433 bereitstellen, wie, ohne jedoch darauf beschränkt zu sein, SATA und PCIe. Die Metadaten 1435 können verwendet werden, um Datenvorgänge zu verwalten und/oder zu verfolgen, die durch die Protokolle oder Schnittstellen 1433 durchgeführt werden. Der logische Adressraum 1434 kann eine Vielzahl von logischen Adressen aufweisen, von denen jede jeweiligen Medienorten der einen oder der mehreren Speicherungsvorrichtungen 1420 entspricht. Der Vorrichtungstreiber kann Metadaten 1435 verwalten, die Beliebig-zu-beliebig-Abbildungen zwischen logischen Adressen und Medienorten aufweisen. Wie Fachleute erkennen werden, kann sich die Anzahl und der Ort der Speicherungsvorrichtungen je nach Bedarf ändern. Zum Beispiel kann sich bei Chia-Knoten-Anwendungen die Anzahl der Speicherungsvorrichtungen erhöhen, wenn zusätzliche Plots erstellt und für den Zugriff während der Farming-Vorgänge eingerichtet werden.
  • Ein Vorrichtungstreiber kann weiterhin eine Speicherungsvorrichtungsschnittstelle 1439, die zum Übertragen von Daten, Befehlen und/oder Abfragen an die eine oder die mehreren Speicherungsvorrichtungen 1420 über einen Bus 1425 eingerichtet ist, aufweisen und/oder damit in Kommunikation sein, was einschließen kann, ohne jedoch darauf beschränkt zu sein: einen Speicherbus eines Prozessors 1411, einen Peripheral-Component-Interconnect-Express-Bus (PCI Express- oder PCle-Bus), einen seriellen Advanced-Technology-Attachment-Bus (ATA-Bus), einen parallelen ATA-Bus, ein Small-Computer-System-Interface (SCSI), FireWire, Fibre Channel, einen Universal-Serial-Bus (USB), einen PCIe-Advanced-Switching-Bus (PCIe-AS-Bus), ein Netzwerk 1415, Infiniband, SCSI RDMA oder dergleichen. Die Speicherungsvorrichtungsschnittstelle 1439 kann mit der einen oder den mehreren Speicherungsvorrichtungen 1420 unter Verwendung eines Befehls bzw. Befehlen zur Eingabe-Ausgabe-Steuerung (IO-CTL), einer IO-CTL-Befehlserweiterung bzw. von IO-CTL-Befehlserweiterungen, Remote-Direct-Memory-Access oder dergleichen kommunizieren.
  • Das Speicherungssystem 1402 kann weiterhin einen sicheren Host-Speicherpuffer 1440 einschließen. Der sichere Host-Speicherpuffer 1440 kann eingerichtet sein, um Daten von einer Speicherungsvorrichtung 1420 zu empfangen und zu speichern. Auf diese Weise kann der sichere Host-Speicherpuffer 1440 als externer Speicher für die Speicherungsvorrichtung 1420 eingerichtet sein, die zum Speichern von Prioritätskennungen und ihrer zugehörigen Protokolle und/oder Daten verwendet werden kann. In bestimmten Ausführungsformen kann der sichere Host-Speicherpuffer 1440 als ein regulärer, nicht-sicherer Speicherpuffer eingerichtet sein. In noch weiteren Ausführungsformen kann der sichere Host-Speicherpuffer 1440 außerhalb des Speichersystems 1402 gespeichert sein und kann sich innerhalb eines anderen Teils der Host-Rechnervorrichtung 1410 angeordnet sein. In noch weiteren Ausführungsformen kann der sichere Host-Speicherpuffer 1440 entfernt als Teil eines oder mehrerer entfernter Clients 1417 angeordnet sein.
  • Die Kommunikationsschnittstelle 1413 kann eine oder mehrere Netzwerkschnittstellen aufweisen, die eingerichtet sind, die Host-Rechnervorrichtung 1410 und/oder die Steuerung 1426 kommunikativ mit einem Netzwerk 1415 und/oder mit einem oder mehreren Remote-Clients 1417 (die als ein anderer Host fungieren können) zu koppeln. In vielen Ausführungsformen weisen die Remote-Clients 1417 andere Proof-of-Space-Konsens-Knoten innerhalb dieses jeweiligen Blockchain-Netzwerks auf. Zum Beispiel können in der in 14 dargestellten Ausführungsform die Remote-Clients 117 andere Chia-Knoten und/oder Timelords innerhalb des Chia-Netzwerks aufweisen. Die Steuerung 1426 ist Teil von und/oder in Kommunikation mit einer oder mehreren Speicherungsvorrichtungen 1420. Wenngleich 14 eine einzelne Speicherungsvorrichtung 1420 darstellt, ist die Offenbarung nicht darauf beschränkt und könnte angepasst werden, um eine beliebige Anzahl von Speicherungsvorrichtungen 1420 zu integrieren.
  • Die Speicherungsvorrichtung 1420 kann ein oder mehrere nichtflüchtige Speichervorrichtungen 1423 nichtflüchtiger Speicherkanäle 1422 aufweisen, die folgendes einschließen können, ohne jedoch darauf beschränkt zu sein: ReRAM, Memristor-Speicher, Speicher mit programmierbaren metallbeschichteten Zellen, Phasenwechselspeicher (PCM, PCME, PRAM, PCRAM, Ovonic Unified Memory, Chalkogenid-RAM oder C-RAM), NAND-Flash-Speicher (z. B. 2D-NAND-Flash-Speicher, 3D-NAND-Flash-Speicher), NOR-Flash-Speicher, Nano-Direktzugriffsspeicher (Nano-RAM oder NRAM), drahtbasierten Nanokristallspeicher, Sub-10-Nanometer-Prozessspeicher auf Siliziumoxidbasis, Graphenspeicher, Silizium-Oxid-Nitrid-Oxid-Silizium (SONOS), programmierbare metallbeschichtete Zellen (PMC), leitfähigen Brücken-RAM (CBRAM), magnetoresistiven RAM (MRAM), magnetische Speicherungsmedien (z. B. Festplatte, Band), optische Speicherungsmedien oder dergleichen. Die eine oder die mehreren nichtflüchtigen Speichervorrichtungen 1423 der nichtflüchtigen Speicherkanäle 1422 weisen in bestimmten Ausführungsformen Speicherungsklassenspeicher (SCM) (z. B. Write-in-place-Speicher oder dergleichen) auf.
  • Während das nichtflüchtige Speichermedium 1422 hierin als „Speichermedium“ bezeichnet wird, können die nichtflüchtigen Speicherkanäle 1422 in verschiedenen Ausführungsformen allgemeiner ein oder mehrere nichtflüchtige Aufzeichnungsmedien aufweisen, die in der Lage sind, Daten aufzuzeichnen, die als nichtflüchtiges Speichermedium, nichtflüchtige Speichervorrichtung oder dergleichen bezeichnet werden können. Weiterhin kann die Speicherungsvorrichtung 1420 in verschiedenen Ausführungsformen eine nichtflüchtige Aufzeichnungsvorrichtung, eine nichtflüchtige Speicheranordnung 1429, eine Vielzahl von verbundenen Speicherungsvorrichtungen in einer Anordnung oder dergleichen aufweisen.
  • Die nichtflüchtigen Speicherkanäle 1422 können ein oder mehrere nichtflüchtige Speichervorrichtungen 1423 aufweisen, die einschließen können, ohne jedoch darauf beschränkt zu sein: Chips, Gehäuse, Ebenen, Dies oder dergleichen. Eine Steuerung 1426 kann eingerichtet sein, Datenvorgänge auf den nichtflüchtigen Speicherkanälen 1422 zu verwalten, und kann einen oder mehrere Prozessoren, programmierbare Prozessoren (z. B. FPGAs), ASICs, Mikrosteuerungen oder dergleichen aufweisen. In einigen Ausführungsformen ist die Steuerung 1426 eingerichtet, Daten auf den nichtflüchtigen Speicherkanälen 1422 zu speichern und/oder Daten davon zu lesen, Daten zu/von der Speicherungsvorrichtung 1420 zu übertragen und so weiter.
  • Die Steuerung 1426 kann über einen Bus 1427 kommunikativ mit den nichtflüchtigen Speicherkanälen 1422 gekoppelt sein. Der Bus 1427 kann einen E/A-Bus zum Kommunizieren von Daten zu/von den nichtflüchtigen Speichervorrichtungen 1423 aufweisen. Der Bus 1427 kann weiterhin einen Steuerbus zum Kommunizieren von Adressier- und anderen Befehls- und Steuerinformationen zu den nichtflüchtigen Speichervorrichtungen 1423 aufweisen. In einigen Ausführungsformen kann der Bus 1427 die nichtflüchtigen Speichervorrichtungen 1423 kommunikativ parallel an die Steuerung 1426 koppeln. Dieser parallele Zugriff kann es ermöglichen, dass die nichtflüchtigen Speichervorrichtungen 1423 als eine Gruppe verwaltet werden, wodurch eine nichtflüchtige Speicheranordnung 1429 gebildet wird. Die nichtflüchtigen Speichervorrichtungen 1423 können in jeweilige logische Speichereinheiten (z. B. logische Seiten) und/oder logische Speicherbereiche (z. B. logische Blöcke) partitioniert sein. Die logischen Speichereinheiten können gebildet werden, indem physische Speichereinheiten von jeder der nichtflüchtigen Speichervorrichtungen 1423 logisch kombiniert werden.
  • Die Steuerung 1426 kann einen Block von Wortleitungen innerhalb einer nichtflüchtigen Speichervorrichtung 1423 in bestimmten Ausführungsformen unter Verwendung von Adressen der Wortleitungen derart organisieren, dass die Wortleitungen logisch in einer monoton ansteigenden Sequenz organisiert sind (z. B. Decodieren und/oder Übersetzen von Adressen für Wortleitungen in eine monoton ansteigende Sequenz oder dergleichen). In einer weiteren Ausführungsform können Wortleitungen eines Blocks innerhalb einer nichtflüchtigen Speichervorrichtung 1423 physisch in einer monoton ansteigenden Sequenz von Wortleitungsadressen angeordnet sein, wobei fortlaufend adressierte Wortleitungen auch physisch aneinander angrenzen (z. B. WL0, WL1, WL2, ... WLN).
  • Die Steuerung 1426 kann einen Vorrichtungstreiber, der auf der Host-Rechnervorrichtung 1410 ausgeführt wird, aufweisen und/oder mit diesem in Kommunikation sein. Ein Vorrichtungstreiber kann über eine oder mehrere Schnittstellen 1433 Speicherungsdienste an die Host-Clients 1416 bereitstellen. Ein Vorrichtungstreiber kann weiterhin eine Speicherungsvorrichtungsschnittstelle 1439 aufweisen, die eingerichtet ist, wie weiter oben beschrieben, Daten, Befehle und/oder Abfragen über einen Bus 1425 an die Steuerung 1426 zu übertragen.
  • Informationen, wie hierin gezeigt und ausführlich beschrieben, sind vollständig in der Lage, die oben beschriebene Aufgabe der vorliegenden Offenbarung, die gegenwärtig bevorzugte Ausführungsform der vorliegenden Offenbarung, zu erfüllen, und sind somit repräsentativ für den Gegenstand, der von der vorliegenden Offenbarung weit gefasst in Betracht gezogen wird. Der Schutzumfang der vorliegenden Offenbarung umfasst vollständig andere Ausführungsformen, die für Fachleute offensichtlich werden könnten, und ist dementsprechend durch nichts anderes als die beigefügten Ansprüche zu beschränken. Jeder Verweis auf ein Element, das im Singular gemacht wird, soll nicht „eins und nur eins“ bedeuten, sondern „eins oder mehrere“, es sei denn, es ist etwas anderes angegeben. Alle strukturellen und funktionellen Äquivalente zu den Elementen der vorstehend beschriebenen bevorzugten Ausführungsform und zusätzlichen Ausführungsformen, die von Fachleuten berücksichtigt werden, werden hiermit ausdrücklich durch Bezugnahme eingeschlossen und sollen in den vorliegenden Ansprüchen beinhaltet sein.
  • Darüber hinaus besteht keine Notwendigkeit, dass ein System oder Verfahren jedes einzelne Problem, das von der vorliegenden Offenbarung gelöst werden soll, angeht, damit Lösungen für solche Probleme von den vorliegenden Ansprüchen umfasst werden. Ferner soll kein Element, keine Komponente und kein Verfahrensschritt in der vorliegenden Offenbarung für die Öffentlichkeit bestimmt sein, unabhängig davon, ob das Element, die Komponente oder der Verfahrensschritt explizit in den Ansprüchen angegeben ist. Verschiedene Änderungen und Modifikationen in Bezug auf Form, Material, Werkstück und Fertigungsmaterialdetails können vorgenommen werden, ohne vom Geist und Umfang der vorliegenden Offenbarung abzuweichen, wie in den beigefügten Ansprüchen dargelegt, wie es für Fachleute offensichtlich sein könnte, und diese sind ebenfalls in der vorliegenden Offenbarung beinhaltet.

Claims (20)

  1. Verfahren zum Filtern von Challenge-Lösungen bei einem Proof-of-Space-Konsens-Blockchain-Netzwerk, aufweisend: Erzeugen eines oder mehrerer Plots, wobei ein Hash-Baum in den Plot integriert ist; Erzeugen eines eindeutigen Plotidentifikationswerts für jeden erzeugten Plot; Erzeugen von Commitment-Daten basierend auf dem integrierten Hash-Baum; Registrieren des Plotidentifikationswerts und der Commitment-Daten in die Blockchain; Erzeugen einer Vielzahl potenzieller Lösungen beim Empfang von Challenge-Daten aus dem Blockchain-Netzwerk; Filtern der erzeugten potenziellen Lösungen, wobei der Filter einen Hash-Wert auswertet, der aus einer Kombination von Folgendem erzeugt wird: dem Plotidentifikationswert; den empfangenen Challenge-Daten; Signage-Punktdaten, die von dem Blockchain-Netzwerk empfangen werden; und den erzeugten Commitment-Daten.
  2. Verfahren nach Anspruch 1, wobei ein Plot mindestens eine Vielzahl von geordneten Tabellen einschließt.
  3. Verfahren nach Anspruch 2, wobei die zweite bis letzte Tabelle der Vielzahl von Tabellen Werte aufweist, die auf Stellen innerhalb früherer Tabellen Bezug nehmen, so dass die Auswahl eines ersten Wertes in der letzten geordneten Tabelle durch eine Reihe von Werten rückpropagiert, bis ein Endwert innerhalb der ersten Tabelle erreicht ist.
  4. Verfahren nach Anspruch 3, wobei der integrierte Hash-Baum Eingabeblattwerte aufweist, die ein Paar von Zahlen aufweisen.
  5. Verfahren nach Anspruch 4, wobei der erste Wert des Paares von Blattwerten einen Wert aufweist, der in der letzten der Vielzahl von geordneten Tabellen gespeichert ist.
  6. Verfahren nach Anspruch 5, wobei der zweite Wert des Paares von Blattwerten einen Wert aufweist, der von dem ersten Wert innerhalb der Vielzahl von Tabellen abgeleitet ist.
  7. Verfahren nach Anspruch 6, wobei der zweite Wert der kleinste Wert innerhalb der Reihe von Werten innerhalb der Backpropagation des ersten Werts innerhalb der Vielzahl von Tabellen ist.
  8. Verfahren nach Anspruch 7, wobei die Commitment-Daten der Wert des Stammes des integrierten Hash-Baums sind.
  9. Verfahren nach Anspruch 7, wobei die potenziellen Lösungen so formatiert sind, dass sie den Commitment-Daten zugeordnet sind.
  10. Verfahren nach Anspruch 9, wobei die potenzielle Lösung einen Hash-Baumpfad einschließt, der von dem integrierten Hash-Baum erzeugt wird.
  11. Verfahren nach Anspruch 10, wobei der Hash-Baumpfad von dem ersten und dem zweiten Wert der Eingabeblätter erzeugt wird.
  12. Verfahren nach Anspruch 1, wobei die Filterauswertung das Bestimmen der Anzahl von führenden Nullen innerhalb des resultierenden Hash aufweist.
  13. Verfahren nach Anspruch 9, wobei der Filter jegliche potenziellen Challenge-Lösungen zurückweist, die keinen Wert mit einer gleichen oder größeren Anzahl erforderlicher führender Nullen aufweisen.
  14. Verfahren nach Anspruch 1, wobei das Filtern potenzieller Lösungen weiterhin das Bewerten der Dauer zwischen der Plotregistrierung und der Übermittlung der Lösung einschließt.
  15. Verfahren nach Anspruch 11, wobei potenzielle Lösungen zurückgewiesen werden, wenn die Zeit, die zwischen der Plotregistrierung und der Übermittlung der potenziellen Lösung verstrichen ist, einen vorbestimmten Schwellenwert nicht überschreitet.
  16. Verfahren nach Anspruch 15, wobei der vorbestimmte Schwellenwert der Höhe des aktuellen Blocks innerhalb der Blockchain zugeordnet ist.
  17. Vorrichtung, aufweisend: einen Prozessor; Speicheranordnung, aufweisend: eine Vielzahl von Speichervorrichtungen; eine Proof-of-Space-Blockchain-Logik, die für Folgendes eingerichtet ist: Erzeugen eines oder mehrerer Plots, wobei ein Hash-Baum in den Plot integriert ist; Speichern der Plots innerhalb der Speicheranordnung; Erzeugen eines eindeutigen Plotidentifikationswerts für jeden erzeugten Plot; Erzeugen von Commitment-Daten basierend auf dem integrierten Hash-Baum; Registrieren des Plotidentifikationswerts und der Commitment-Daten in die Blockchain; Erzeugen einer Vielzahl potenzieller Lösungen beim Empfang von Challenge-Daten aus dem Blockchain-Netzwerk; Filtern der erzeugten potenziellen Lösungen, wobei der Filter einen Hash-Wert auswertet, der aus einer Kombination von Folgendem erzeugt wird: dem Plotidentifikationswert; den empfangenen Challenge-Daten; Signage-Punktdaten, die von dem Blockchain-Netzwerk empfangen werden; und den erzeugten Commitment-Daten.
  18. Vorrichtung nach Anspruch 17, wobei die Filterauswertung das Bestimmen der Anzahl von führenden Nullen innerhalb des resultierenden Hash aufweist.
  19. Vorrichtung nach Anspruch 17, wobei der Filter jegliche potenziellen Challenge-Lösungen zurückweist, die keinen Wert mit einer gleichen oder größeren Anzahl erforderlicher führenden Nullen aufweisen.
  20. Vorrichtung nach Anspruch 17, wobei die Anzahl der erforderlichen führenden Nullen bei den nächsten empfangenen Challenge-Daten dynamisch geändert werden kann.
DE102022113177.7A 2021-12-17 2022-05-24 Verbesserte konsensdatenfilterung bei proof-of-space-blockchain-systemen Pending DE102022113177A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/554,414 2021-12-17
US17/554,414 US20230198770A1 (en) 2021-12-17 2021-12-17 Consensus Data Filtering in Proof of Space Blockchain Systems

Publications (1)

Publication Number Publication Date
DE102022113177A1 true DE102022113177A1 (de) 2023-06-22

Family

ID=86606163

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022113177.7A Pending DE102022113177A1 (de) 2021-12-17 2022-05-24 Verbesserte konsensdatenfilterung bei proof-of-space-blockchain-systemen

Country Status (4)

Country Link
US (1) US20230198770A1 (de)
KR (1) KR20230092705A (de)
CN (1) CN116346388A (de)
DE (1) DE102022113177A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230327890A1 (en) * 2022-04-06 2023-10-12 Western Digital Technologies, Inc. Hiding Proof-of-Space in Blockchain Systems

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11418402B1 (en) * 2019-01-17 2022-08-16 Artema Labs, Inc Robust and secure proof of space based mining
US11924355B2 (en) * 2020-10-08 2024-03-05 Chia Network Inc. Methods for grinding-resistant consensus in a proof-of-space-based blockchain

Also Published As

Publication number Publication date
CN116346388A (zh) 2023-06-27
US20230198770A1 (en) 2023-06-22
KR20230092705A (ko) 2023-06-26

Similar Documents

Publication Publication Date Title
DE102010044531B4 (de) Autonome Speicherarchitektur
DE112015004536T5 (de) Hardware-Automatisierung für Speicherverwaltung
EP3444997A1 (de) Vorrichtungen zum bereitstellen einer menge von kryptographisch geschützten und gefilterten sowie sortierten transaktionsdatensätzen eines gliedes einer blockkette
DE112020000767T5 (de) Hybride blockchains und streamchains mit nicht-kryptografischen hashes zur absicherung von audio-, video-, bild- und sprachbasierten transaktionen und verträgen
DE102010044529B4 (de) Autonomes speicher-sub-system mit hardwarebeschleuniger
DE112012005222T5 (de) Halbleiter-Datenspeicherverwaltung
DE112021002797T5 (de) Datenschutzerhaltende architektur für genehmigungspflichtige blockchains
DE202015009260U1 (de) Effiziente Datenlesungen von verteilten Speichersystemen
DE112020001937T5 (de) Vorausschauender datenvorabruf in einer datenspeicher-vorrichtung
DE102021108455B4 (de) Erzeugen von Snapshots eines Schlüssel-Wert-Index
DE112019005881T5 (de) Kryptografische überprüfung von datenbanktransaktionen
DE102018131983A1 (de) Switch-unterstützte datenspeicher-netzwerkverkehrsverwaltung in einem rechenzentrum
DE102022113177A1 (de) Verbesserte konsensdatenfilterung bei proof-of-space-blockchain-systemen
DE112016002305B4 (de) Reduktion der Schreibverstärkung in einem Objektspeicher
DE112012000274B4 (de) Schutz der Unversehrtheit von Daten auf Speicherdatenträgern
DE112021001470T5 (de) Konfigurieren von datenverarbeitungsknoten in einer dreidimensionalen netztopologie
DE112017007865T5 (de) Netzgebundener shuffle-datenspeicher
DE102020119400A1 (de) Techniken zum setzen eines 2-ebenen-auto-schliess-timers zum zugriff auf eine speichervorrichtung
DE102019126788A1 (de) Beschleunigter zugriff auf aus in speichervorrichtungen gespeicherten daten erzeugte rechenergebnisse
DE112019004391T5 (de) Grossmodellunterstützung für deep learning
DE102021006246A1 (de) Doppelt verschachtelte Programmierung einer Speichervorrichtung in einem Speicher-Untersystem
DE112019000158T5 (de) Bereichskollisions-crawler für logische blockadressierung
DE102021109138A1 (de) Ausführung von abfrageplänen
DE102022110380A1 (de) Kodierter host-zu-dla-verkehr
DE102021108479B4 (de) Schlüssel-Wert-Index mit Knotenpuffern

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE