Witnet Community Q&A : December 2019

Seasons greetings from the whole Witnet community! As always, this month has seen the Witnet community pose a bunch of questions. Go get yourself a cup of hot chocolate and have a read. Got a question about Witnet? Check out the links at the end of this article!

Thomas Smith
The Witnet Oracle Blog
3 min readDec 19, 2019

--

Q: Will I need CPU or GPU to mine WIT tokens?

A: Mining WIT requires neither GPU nor CPU, as “mining” in the Witnet Protocol entails no Proof of Work (PoW), or — in fact — Proof of Stake (PoS).

Instead, WIT mining privileges are allotted through an automatic reputation system — by honestly completing data Retrieve-Attest-Deliver tasks, you earn reputation points. The higher your score, the more likely and often your node will be selected to propose blocks.

Mining blocks just means appending blocks to the tip of the chain with no requirement other than presenting a valid Proof of Eligibility (the same kind of cryptographic proof that entitles witness nodes to resolve data requests).

As a miner, you can expect to earn a share of the rewards attached to the data requests that get randomly assigned to your node, plus additional occasional block rewards.

The block reward is 500 WIT/epoch (every 90 seconds), and emission rate halves over time (similar to BTC). This ensures data requests will be especially cost effective for the first few years, thus allowing the ecosystem to do reasoned price discovery.

For further reading, please see our miners’ walkthrough.

Q: Does Witnet incorporate SGX or any other TEE?

A: As it currently stands, Witnet regards the use of Trusted Execution Environments (TEEs) (including Intel’s SGX) as risky to the security and ethos of a true Decentralized Oracle Network. This is for a few different reasons:

  • Tying the protocol to a specific technology or platform poses an element of centralization; a single point of failure. For example, if all (or even most) nodes must run on SGX-enabled processors, and a Zero-day vulnerability is discovered, then all the nodes on SGX are affected, and the network’s security and viability is jeopardized.
  • We regard TEEs to be unfair barriers to entry, and we want to give everyone the opportunity to participate and earn WIT rewards. This has an additional benefit — more nodes able to participate in the network= more decentralization!
  • At present, the Witnet community also considers their security safeguards inadequate, and vulnerable to attack (e.g. the Spectre and Memory Bus vulnerabilities).

As a result, the Witnet protocol does not support private endpoints for the time being — just public-facing APIs. Contract developers can still use authenticated APIs, if they don’t mind disclosing access key (for example, in the case of temporal, read-only access keys).

There’s no trivial solution for this limitation right now; we’ll keep working on coming up with a secure design for supporting all APIs, and exploring all options, including TEEs, systems like DECO, zero-knowledge snarks, homomorphic encryption or any other state-of-the-art tech that comes to market.

Q: How does Witnet deal with data deviations?

An example of Witnet request written in Javascript using the Witnet “Truffle Box”

In the example above, there are two different sources that get aggregated in such a way that if one of them deviates too much from the average, it’s excluded from the results. We expect this exclusionary filter to be used in most requests to deal with outliers.

At a future point, it might be a good idea to add support for more sophisticated analyses, such as IQR, k-means clustering or Bayesian filters. In the meantime, contract developers should use .filter(Witnet.Filters.DeviationStandard, 1.5) , which is a safe default for requests dealing with non-discrete values types like Integer or Float. For discrete values (e.g. String, Boolean) the best option is often .filter(Witnet.Filters.Mode).

Got a question about Witnet?

--

--