I have been attempting to learn more about Qubic and (on the basis that only I read this blog) what follows is really just an aide-memoire pour moi.
So ... iota qubic protocol, oracles, assemblies, abra and relevant transaction types.
Some notes I made.
Qubic is a protocol that specifies IOTA's solution for oracle machines, smart contracts, outsourced computations, and more.
Qubic = a protocol that specifies IOTA's solution for quorum-based computations
Oracles = are machines that process data out of and in to qubic transactions eg., to process outsourced computations and smart contracts Oracles can be trusted (centralised and therefore not requiring a quorum), honest, untrusted or malicious.
Assembly = two or more oracles working in conjunction.
A dual assembly cannot form a quorum; use case would be a trusted, centralised application with inbuilt redundancy.
A three or more oracle assembly can form a quorum on a qubic transaction result and prevent sybil (impersonation) or classroom (copying) attacks
Abra = qubic definition language and is an intermediate trinary-based functional programming language.
Epoch = is a defined timeframe when oracles can join an assembly. Epochs are published as transactions on the Tangle.
An epoch is itself split into two distinct phases: the resource test phase and the qubic processing phase
Epoch Resource Test Phase = part of epoch that determines each oracle ID (to prevent Sybil attacks) and capabilities (by for example, Proof of Work (PoW), Proof of Stake (PoS), Proof of Bandwidth, Proof of Spectrum) of each oracle to determine stake and weighing factor (and hence voting power which in turn determines proportion of total reward to the assembly allocated to each oracle for processing the qubic transaction) of each oracle in the assembly.
Naturally a trusted assembly can forego the resource testing phase and proceed directly to the qubic processing phase.
.. to be continued ...