Resource Tests in Qubic
The full article was originally published by Samuel Reid on Medium. Read the full article here.
Special thanks to Paul Handy, Serguei Popov, Navin Ramachandran
The Qubic Team at IOTA (Samuel Reid, Paul Handy, Eric Hop, Donald Kelly, CFB) has been developing the concept of Quorum-Based Computations (QBCs) on the IOTA Tangle. The Qubic Protocol intends to establish a global decentralized platform for new trustless applications, allowing for new economic models, and enabling the broad landscape of Industry 4.0 and Web 3.0.
The Qubic Protocol — A Recap
The Qubic protocol is a method for running a computer program, by utilizing a set of distributed machines. We call each machine an oracle, and the complete set an assembly. Qubic will enable smart-contract-like capabilities on top of IOTA, where consensus on a computation can be reached without relying on centralized trust. While executing the Qubic protocol, there are two phases: a resource test phase, and a Qubic processing phase. The combination of these phases is called an epoch.
During the resource test phase, the assembly determines what weight to allocate to each participant (aka oracle) in the assembly. Each oracle should be compensated according to its weight (level of contribution). For example, if we have a supercomputer and a cheap laptop working together on a computation, the former should receive a larger share of the rewards. Putting aside the question of distribution fairness, we cannot simply give each oracle an equal share. If we do, we provide an incentive to spin up a very large number of cheap machines, which adds bookkeeping overhead without improving computational throughput.
We can use various techniques to perform resource testing. The simplest tool at our disposal is the Proof of Work (PoW) that is used throughout IOTA. The idea is to give all oracles in the assembly a certain amount of time, say a few minutes, to solve different PoW puzzles. The more puzzles an oracle solves, the more computational power it has, and the larger the share of the bounty it will receive.
Beyond the PoW Paradigm
The problem with PoW is that it is a costly operation to execute, without any meaningful product. It makes little sense for oracles to spend their resources on useless work, rather than running actual user code. We are therefore looking at possible alternatives to PoW, or at the very least, aiming to minimize the required time window. This problem is closely linked to the challenge of timestamping. The more reliable time estimates on transactions are, the shorter the resource test can be.
Beyond the paradigm of PoW, the resource test in Qubic can be defined as either Proof of Stake (PoS) or as a combination of PoW and PoS. Let’s explore this option.
We anticipate that there will be naturally-forming assemblies, which will contain oracles with similar abilities. In these assemblies, PoS may be derived as an attribute of work done in the resource test of a previous epoch, and this accumulated stake may be lost by not committing to participate in the next epoch’s resource test phase. Thus, it may be possible to configure groups in which discarded stake is recovered via Proof of Work — though extra research is required to evaluate whether these stake-discarding strategies open loopholes (for the creator of an assembly or the owners of the oracles in it). In short, people who leave an assembly leave space for new users to join and provide their stake.
Although the introduction of a variable PoW+PoS resource test is an innovative proposal, we do not need to pigeonhole ourselves to either PoW or PoS. That is, we are considering a variety of other “Proofs”, including Proof of Biometrics (e.g. fingerprint), Proof of Ownership, Proof of Identification, Proof of Sale, or any other Proof of X system (PoX).
The notion of PoW dialects has been introduced internally in relation to Economic Clustering. The simplest example of a dialect is a change to the PoW such that we pick a different hash to collide with instead of the null hash.
Borders are fuzzy in economic clusters and PoW dialects may help to mitigate this issue. Dialects allow for cluster-specific transactions to be prioritized within overlapping clusters, while transactions from non-neighboring clusters need not reach these overlapping clusters for lack of a shared dialect.
To clarify, a version of PoX (e.g., PoW, PoS, Proof of Bandwidth) acceptance could be used to form a fuzzy boundary between economic clusters. Dependent upon the PoX there is the possibility for many distinct dialects (PoX dialects). The variation of PoX dialects may be used in Qubic to achieve cluster-related acceptance together with resource testing. However, the implementation details associated with a particular PoX dialect may have implications on network security, user and oracle access and identity, and other aspects of the Qubic processing phase.
Regardless of which PoX dialect is implemented with Economic Clustering, the Qubic protocol will require a resource test as both an anti-Sybil measure, and as a way to separate epochs and recheck the participation of all the oracles in the assembly. The most straightforward approach would of course be to use the standard dialect (IOTA PoW).
Communication Channels for Qubic Development
The Qubic team is currently working to release the initial code and the Qubic math paper, as well as the fully fleshed out roadmap of Qubic.
As a testament to our love of transparency and community feedback, we’ve provided an initial sneak peak of the Qubic roadmap (https://qubic.iota.org/roadmap). In the meantime for general community Q&A, please direct messages to Eric Hop (@Eric Hop [IF]#8124) on Discord.