We at the EOS Alliance are delighted to get poked, prodded and challenged because we are, to use Nassim Taleb’s term, “antifragile”. As a community, technology, and a platform EOS gets stronger from such stimulation. And we have just been stimulated by a provocative paper released by Whiteblock last week.
A humble suggestion
Whiteblock collected an impressive list of Ethereum resources to help with the paper. But they only recruited Ethereum folks for the project. That now looks like a mistake.
The researchers not only didn’t collaborate with anyone who is deeply intimate with the EOS code base, they also didn’t vet their preliminary findings with anyone with the knowledge to point out mistakes.
As a result, their paper contains numerous errors, some quite basic (they define an EOS “epoch” as 126 blocks; it’s been 252 since before launch), making the paper confusing for readers who might not be familiar with the intricacies of blockchain technologies.
While the EOS community fully digests and evaluates the Whiteblock paper (link), there are a few misunderstandings that we can immediately clear up so that we can have a more thoughtful discussion and analysis.
Whiteblock is convinced that EOS, based on their lab tests and assumptions, “transaction throughput in the system does not exceed 250 TPS”, and asserted that in “tests with real world conditions … performance dropped below 50 TPS”.
Much like the mythical aerodynamics expert who ‘proved’ that bumblebees cannot fly, the Whiteblock researchers might want to heed the advice given to every budding scientist: “When the facts contradict your theory, you need a new theory.” You see, EOS and other Graphene based blockchains routinely show performance approaching 4,000 TPS in actual daily production operations. (I humbly submit that ‘the real world’ must be considered more real than ‘tests with real world conditions’.)
Check out this blocktivity.info report (Last data update 2018–11–05 / 03:30:01). Notice where Bitcoin is (no. 5). Notice where Ethereum is (no. 6). This is a list of actual users of blockchains, not just people talking about the blockchain or pitching the blockchain or hyping it. Using it.
The number 1, 2, 3, and 4 most used (and arguably most currently useful) blockchains have in common:
- They all share the same Graphene code. №2 is EOS and №1 is a fork of EOS. They all are forks of Graphene and thus all the direct or indirect creations of EOS architect Dan Larimer.
- They all have real business use cases, staying power, and now traction.
- None of them are from a Fortune 1000 company or a government.
Is EOS a blockchain? Yes, just as much as Bitcoin is
The authors claim that EOS “is not a blockchain” and justified that statement by conflating the general definition of a blockchain with some specific features of Ethereum. EOS core developer wanderingbort, responding to the claim “All of these actions operate in an environment that lacks cryptographic validation of the contracts and transactions,” called that statement:
“…misleading, the only defensible aspect is that EOSIO does not commit to the materialized persisted state through something like a Patricia merkle tree.
“This is true, we commit to that implied state in a different way. It is worth noting that the UXTO [Unspent Transaction Output] is not explicitly committed to in Bitcoin either, it is a materialized view of the state deterministically implied by the chain. If you search for UXTO commitments you can see that they are an addition to the core protocol that gives extra properties. Not validity or safety. EOSIO [is the] same with its state. So, if that is the defensible definition, then Bitcoin is also not using cryptography to validate transactions and results.”
What wanderingbort is saying is, Ethereum differs in how it commits transactions to the “implicit state” that is the current reality of the data on the chain. Neither Bitcoin nor EOS do it the way Ethereum does it. (I would be curious how many projects that aren’t Ethereum clones use the Ethereum approach to committing transactions to the materialized persisted state of the chain.) And Whiteblock wants to use this difference to claim that “EOS is not a blockchain” — by their private definition.
If Whiteblock would like to stake out the claim that Ethereum is a blockchain, while neither Bitcoin nor EOS are, well, we welcome that dialog. If not, then Whiteblock might want to admit publicly that EOS is indeed a blockchain, for any meaningful definition of the term.
I suggest that if a distributed ledger meets these criteria, it deserves to be called a blockchain:
- A growing list of records, grouped into blocks
- Blocks are linked using cryptography
- Each block contains a cryptographic hash of the previous block, a timestamp, and transaction data
- Transactions and blocks are validated by multiple independent devices who reach agreement via a consensus mechanism
If I’m missing a criterion, please challenge me. If I agree I’ll update this article and give you credit.
Are transactions only validated by 21 nodes?
The authors also appear to claim that EOS transactions are confirmed only by 21 block producers. They seem unaware of the function and implication of Transactions as Proof-of-Stake (TaPOS), a core feature of the EOS software. As explained by user Fuzzy:
The EOS.IO software requires every transaction to include part of the hash of a recent block header. This hash serves two purposes:
* prevents a replay of a transaction on forks that do not include the referenced block; and
* signals the network that a particular user and their stake are on a specific fork.
Over time all users end up directly confirming the blockchain which makes it [impossible to “replay” their transactions] to forge counterfeit chains as the counterfeit would not be able to migrate transactions from the legitimate chain.
This is because of transactions as proof of stake (tapos)
And it makes it so every client helps validate the blocks
In other words, each user transaction cryptographically includes the hash of a recent irreversible block, as identified by their local node. This is the block that the local node agrees is valid (every local node independently validates every transaction). Thus the transaction (A) cannot be used in a replay attack on a fork that doesn’t include the irreversible block, and (B) indicates that the referenced block is in fact valid and irreversible from the perspective of that local node. This is only possible because the local node validates each block as it’s added to the local chain, and those local validations are then incorporated into the chain via future transactions’ TAPOS.
This neatly disproves another of the authors’ claims, that users can only access the EOS mainnet through one of the top 21 block producers. In reality users can access through any connected API or peering node, BP or not.
Let’s filter out further folly
Now that we’ve made our point and refuted some claims, we offer the following as a filter for folly.
The EOS Alliance is focused on maximizing legitimacy. As EOS fan Alex Lightman often says, legitimacy is generated by doing three things:
- Seek the truth
- Speak the truth
- Practice what you preach.
We have included below dozens of links to facilitate taking step 1, seeking the truth.
So that future critics can better take step 2, speak the truth, we invite you to show to me and other members of the EOS community a draft of your next critique and to let us point out mistakes before you potentially embarrass yourself in public. We’ll give our comments within 72 hours, and you can even quote us in your finished published piece.
The EOS resources are below. Welcome to the greater EOS community.
Interim Executive Director
PS: I’m continuing to edit the list below, as more links are brought to my attention. Please continue to do so.
EOS General Chat (English): https://t.me/EOSproject
Non-English General Channels
EOS Arabia: https://t.me/EOS_Arabia
EOS Korea: https://t.me/EOSIOKorea
EOS China: https://t.me/EOSCN
EOS Romania: https://t.me/eosro
EOS Russian: https://t.me/EOS_RU
EOS Russian Trading: https://t.me/eostraderu
EOS Italia: https://t.me/EosITA
EOS Spain: https://t.me/eosEs
EOS Suomi (Finland): https://t.me/eossuomi
EOS Test Networks
EOS Jungle Test Network: https://t.me/jungletestnet
EOS Community Test Network: https://t.me/CommunityTestnet
EOS Scholar Test Network: https://t.me/ScholarTestnet
EOS Index (List of current EOS projects): https://t.me/eosindex
EOS Developers: https://t.me/joinchat/EgOVjkPktgfUS3kt14FStw
EOS Game Developers: https://t.me/EosGameDevelopers
EOSDocs.IO (EOS Documentation): https://t.me/eosdocs
EOS Non-Fungible Token (NFT) Standard: https://t.me/eosionft
EOS Wallet Development: https://t.me/eoswalletdev
EOS Education: https://t.me/EOSEDU
EOS Spanish language developers https://t.me/eosDevEs
EOS Developer Tools and Tutorials
EOS Block Explorers, network monitors, and other publicly available data
Bloks monitor https://www.bloks.io/
EOS Tracker https://eostracker.io/
EOS Titan https://voters.eostitan.com/labs
EOS Flare https://eosflare.io/
My EOS Kit https://www.myeoskit.com/
Node Monitor https://eosnode.tools/monitor
EOS Go https://www.eosgo.io/
EOS Topic Specific Channels:
EOS Block Producers: https://t.me/EOSPros
EOS Opportunities: https://t.me/eos_opportunities
EOS Design: https://t.me/EOSdesign
EOS Marketing: https://t.me/EOSmarketing
EOS BP Startups: https://t.me/bpstartupbusiness
EOS Jobs: https://t.me/eos_jobs
EOS BP Infrastructure: https://t.me/BPInfrastructure
EOS 911: https://t.me/EOS911
EOS Go Announcements: https://t.me/eosgo_announcements
EOS Airdrops: https://t.me/EOS_Airdrop
Dan Larimer Bot: https://t.me/daneos
EOS Airdrops #2: https://t.me/airdropsforeos
EOS Announcements — The Wire: https://t.me/eosLAUNCHbyTHEwire
BP Ratings: https://t.me/bpratings
EOS Apps: https://t.me/eosapps
EOS Wallet Channels
imToken EOS: https://t.me/imTokenEOS_English
EOS Lynx: https://t.me/eoslynx
Block Producer Channels
Barcelona BP: https://t.me/eosbarcelona
EOS Amsterdam https://t.me/joinchat/IBmAXw1pJBXmwiA8WFSvfQ
EOS Germany http://t.me/EOSde
EOS Israel: http://t.me/EOSIsrael