Obelisk

A consensus design that was never deployed

In brief. Obelisk is a consensus algorithm Skycoin designed in 2015 and 2016 to replace mining. It was never deployed. The Skycoin blockchain has always had one block publisher, and every other node checks each block it publishes. The design leaves open questions about who may take part and why anyone would, and those would need answers before it could run on a live network.

How Skycoin makes blocks today

One node, the block publisher, collects transactions and makes each new block. It signs the block with the blockchain's key, which every node knows from its configuration. A node accepts a block only when it carries that signature.

Every node also checks every transaction in every block: that the coins exist, that their owner signed the spend, and that enough coin hours are burned as the fee. So the publisher cannot create coins or spend anyone else's. What it decides is which transactions go into the chain and in what order, and whether new blocks are made at all.

Fiber coins, the blockchains anyone can launch on the same code, work the same way, with one publisher each.

What Obelisk was meant to be

The design is set out in the paper A Distributed Consensus Algorithm for Cryptocurrency Networks (2016), building on the opinion dynamics models of the Sky, SkyHash and Sznajd2 papers (2015 and 2016). All five are on the whitepapers page.

  • Many block-makers. Any well-connected node could be a block-maker. Each builds a candidate block from the transactions it has seen, following fixed rules, and broadcasts a signed hash of it. Block-makers that saw the same transactions produce the same hash.
  • Every node decides for itself. A node collects about a hundred of these signed hashes and adopts the one sent by the most distinct keys, then fetches that block. No leader is elected, and no clock is needed: block numbers set the pace.
  • Misbehaviour is dropped. A key that sends two different hashes for the same block is banned, and a node can stop listening to any peer it does not trust. The Sky papers build on this with a trust graph, in which each node takes opinions only from the nodes it follows.
  • Cheap to run. There is no mining, so both roles could run on small, low-power hardware over a sparse mesh network.

In the paper's simulations, with 1,000 block-makers among 10,000 nodes, nodes agreed on the correct block as long as fewer than 40 to 50 percent of the block-makers were malicious. The trust-graph models tolerated fewer bad nodes, around 13 percent in the Sky paper.

Where it stopped

A prototype of the vote counting was written in 2016 and is still in the Skycoin repository, in src/consensus. Nothing else in Skycoin uses it. The networking that would carry the candidate hashes, the rules for building identical candidate blocks, and the link to the blockchain were never written.

What it would still need

  • A limit on who may vote. The winning hash is the one sent by the most keys, and keys cost nothing to make. The design needs a rule for who counts as a block-maker, such as a known set of keys, stake in SKY or coin hours, or a trust graph. The papers point at trust but do not settle it.
  • A reason to take part. The design asks nothing in return from block-makers, and Skycoin pays them nothing: transaction fees are coin hours that are burned. The simulations assume a thousand independent block-makers, and nothing brings them.
  • Agreement on the transactions. Honest block-makers only produce the same block if they saw the same transactions by the same cut-off. The paper assumes this holds when traffic is light.
  • A rule for disagreement. A block-maker has nothing at stake to lose, a banned key can be replaced with a new one, and there is no rule for which chain wins after a split or for when a block is final.

None of these problems is new, and each has known answers. Blockchains with open participation mostly use a known, changing set of validators that sign each block, rather than a statistical vote. For Skycoin, a first step in that direction would be blocks signed by several independent keys instead of one, which needs a hard fork. No such work has started.