Individuelle qubics sind im wesentlichen vorgefertigte quorumbasierte (Mehrheitsprinzip) Rechenaufgaben.
Qubic nutzt das IOTA Tangle, um qubics von ihren Besitzern zu verpacken und an die Oracles zu verteilen, die sie verarbeiten werden.
Qubics werden als Nachrichten in normalen IOTA-Transaktionen veröffentlicht und enthalten spezielle Anweisungen, sogenannte Metadaten, wie und wann sie zu verarbeiten sind. Oracles können qubische Metadaten lesen, um zu entscheiden, ob sie die erforderliche Verarbeitung für die zugehörigen Belohnungen durchführen oder nicht. Qubic-fähige IOTA-Nodes (kurz Q-Nodes) können einen Großteil dieser Entscheidungsfindung automatisch auf der Grundlage der von ihren Operatoren festgelegten Parameter bewältigen.
Qubic Aufgaben werden mit der ternär basierten funktionalen Zwischenprogrammiersprache namens Qupla/Abra spezifiziert. Das Qubic-Programmiermodell ermöglicht es, dass Daten im gesamten System von qubic zu qubic fließen. Technisch gesehen sind qubics ereignisgesteuert, d.h. sie hören den Tangle direkt auf Eingabedaten ab und werden bei jeder Änderung der Eingabedaten ausgeführt. Da qubics ihre Ergebnisse zurück ins Tangle melden, kann die Ausführung eines einzelnen qubic dazu führen, dass viele andere qubics in einer Art “Kettenreaktion” laufen. qubics fungieren als Auslöser für andere qubics, die wiederum andere qubics usw. auslösen.
Mit anderen Worten, qubics können im Ruhezustand im Tangle leben. Wenn bestimmte Eingangsdaten verfügbar werden oder sich ändern, “erwachen” sie und beginnen mit der Verarbeitung, was dazu führen kann, dass eine Kaskade von anderen qubics aufwacht, wenn neue Ergebnisse verfügbar werden. Dies ermöglicht eine sehr dynamische Programmierumgebung, da Sie jederzeit neue qubics hinzufügen und an beliebige Eingabedaten binden können.
Darüber hinaus kann jeder eine Transaktion mit dem qubic-code, den er ausführen möchte, veröffentlichen und für die entsprechenden Belohnungen die Ergebnisse im Tangle sehen.
Die folgenden Schritte beschreiben den Lebenszyklus eines qubic:
- Bereiten Sie ein qubic für die Verarbeitung vor.
- Entscheiden Sie sich für die angebotenen Belohnungen.
- Entscheiden Sie, in welcher assembly das qubic laufen soll.
- Koppeln Sie das qubic an der assembly (oder einer bestimmten Epoche dieser assembly).
- Warten Sie, bis die assembly mit der Bearbeitung des qubic beginnt.
- Sammeln Sie die bestätigten Verarbeitungsergebnisse.
- Bewertung des Konsenses über das quorum
- Sammeln Sie die offenbarten Verarbeitungsergebnisse.
- Zahlen Sie die versprochene Belohnung an die quorum-Teilnehmer, sobald die Ergebnisse vorliegen.
Um ein qubic vorzubereiten, verpackt der Eigentümer den Qupla/Abra-Code und die qubic-Metadaten innerhalb einer IOTA-Transaktion. Eine IOTA-Transaktion, die Abra-Code und qubische Metadaten enthält, wird als qubische Transaktion bezeichnet. In dieser Hinsicht nutzt Qubic den wertfreien, reinen Datentransaktionsmechanismus des IOTA-Protokolls.
Der Besitzer wählt dann aus, welche assembly das qubic verarbeiten soll, indem er nach bestimmten Transaktionen im Tangle sucht, die Informationen über eine Oracle assembly liefern. Diese werden als assembly-Transaktion bezeichnet. Das Anhängen einer qubic-Transaktion an eine assembly-Transaktion informiert die Oracles darüber, dass die qubic zur Bearbeitung zur Verfügung steht.
Oracles sind also die Q-Nodes-Operatoren, die qubics verarbeiten. Sie hören den Tangle für qubische-Transaktionen ab und konstruieren ein privates Sub-Tangle, um sie zu verfolgen. Qubische-Transaktionen müssen gut formuliert und signiert sein, sonst weigern sich die Nodes, sie zu verarbeiten.
Sobald eine qubic-Transaktion validiert wurde, bereitet der Node das qubic für den Betrieb auf der jeweiligen Hardware des Nodes vor und plant das qubic für die Verarbeitung. Sobald das qubic bearbeitet, ein Quorum erreicht und die Ergebnisse in den Tangle gestellt wurden, geschehen zwei Dinge: 1) das qubic geht wieder inaktiv und wartet auf die nächste Änderung der Eingänge und 2) der Kaskadeneffekt wird ausgelöst, so dass abhängige qubics anlaufen und mit der Verarbeitung mit neuen Eingängen beginnen.