Comparative Analysis of Fundamentals and Smart Contract Transactions on EOS and Ethereum Blockchain (Part 1/2)
By: Ren
Tags: Blockchain, Eos, Smart Contracts, Blockchain Technology, Ethereum

Disclaimer: public Blockchain technology develops very fast. The information in this article about EOSIO and Ethereum only refers to their status when the article was written. The purpose of this article is to give an overview of the differences between Ethereum and EOSIO. The author supports all public blockchain projects and thinks that the market can accommodate more than one public blockchain platform.

1 Introduction

In 2008 a white paper titled “Bitcoin, a Peer-To-Peer Electronic Cash System” was published by an anonymous person or group under the name “Satoshi Nakamoto”. In January 2009, the protocol mentioned in the white paper was implemented by a program and the first Bitcoin block was mined. The code is completely open-source, anyone can download and install the program and start contributing to the Bitcoin network. As time has passed, the Bitcoin network has grown tremendously due to the fact that the decentralized network is peer-to-peer and has never been hacked. Not only Bitcoin but also the underlying technology has attracted more and more attention. Bitcoin uses an innovative and revolutionary technology called blockchain that allows people to do transactions without a central entity to do the settlements. In recent years, blockchain technology has been explored by many sectors beyond the financial industry. Blockchain-based decentralized projects have experienced a boom in numbers. A growing number of companies are also investing in blockchain technology and exploring how they can use it to make their processes more efficient.

In 2015 a project called Ethereum was launched. As mentioned in the whitepaper, it aimed to solve some problems that the Bitcoin blockchain could not do. Ethereum implemented a blockchain-based smart contract concept, enabling anyone to build decentralized apps (dApps) on its platform, soon it was flooded with dApps from different sectors such as gaming, finance, supply chain…. It brought revolutionary change: centralized operators were no longer necessary for transactions, game rules in the smart contract were open-source for anyone to check, transparency and traceability brought parties who do not trust each other to do business together. However, there were also shortcomings in Ethereum such as high network traffic increases transaction fees and time. Also, it is difficult to scale to accommodate an increasing number of users. After the launch of Ethereum, a lot of projects start to launch faster, more efficient and scalable blockchain-based smart contract platforms, for example, NEO, Waves, Lisk, EOS, NEM, etc.

About eleven years after Bitcoin came into being, there are now thousands of different blockchain projects. This articlecompares the fundamentals of two of the largest and most well known decentralized smart contract platforms: Ethereum and EOS. The goal is to give an overview of the advantages and disadvantages of each of these two platforms when deploying smart contracts.

A thorough analysis of the two blockchains is important because the adoption and application of this technology are steadily increasing. At the same time, the frequent shortage of appropriately trained specialists represents a bottleneck in the implementation of solutions. The knowledge presented in this article should help to close this gap. The content of this article is intended to support users in finding the right solution for their blockchain project.

For an analysis of the blockchains’ theoretical aspects, extensive literature research was undertaken. It describes the underlying frameworks and operational models of the Ethereum and EOS networks. The practical part of the article describes the most important aspects related to the development and implementation of smart contracts on the basis of tests carried out. The focus is on answering the question of how easily smart contracts can be established on the two networks and to what extent supporting resources are available.

2 Blockchain and Smart Contract

In order to establish an understanding of the most important concepts of blockchain technology, this section takes a look at basic definitions of blockchains and smart contracts.

2.1 What is a blockchain

Before we look at the definition of the term blockchain, we will introduce what a hash value is, because hash values are very important components of all blockchains. A hash value is the output of a hash function, which turns data of any size into a string of mixed numbers and letters with a fixed length. Cryptographic hash functions are normally one-way, which means it is not possible to find the original input data from the hash value. They are also deterministic: the same input should always generate the same output (Rosic, n.d.).

According to Lansiti and Lakhani (2017), “blockchain is an open, distributed ledger that can record transactions between two parties efficiently and in a verifiable and permanent way.”

To put the above definition in a simple way, a Blockchain, as its name suggests, is a chain of data blocks. Each block is uniquely identified by its hash value and is linked to the hash value of the previous block. This chronological chain of blocks can detect the existence of a single block at a particular time. New data can be collected to form a new block and appended to the chain. Old data is never deleted from the chain. As a result, the chain continuously grows longer. Blockchain is the basis technology in Bitcoin. All the Bitcoin transactions are recorded in a transparent and immutable public ledger. Even though there have been a lot of controversies, Bitcoin has proven that secure transactions can be made between two parties who do not trust each other without a third impartial body (Franco, 2015). A simple illustration of blockchain is as follows:

Figure 1: Simplified Blockchain (Rosic, 2017)

Since Bitcoin was launched in 2009, it has proven that blockchain technology has many advantages:

· Decentralized: no entity such as banks, governments, corporations, or individuals can control Bitcoin. Anyone can participate in validating transactions by using so-called nodes. Every participant has equal rights in the network and there is a mechanism to establish consensus of the status of the Bitcoin ledger.

· Peer-to-peer: no central agents or institutions are needed to guarantee the correctness of the transactions. Transactions are done between participants with equal rights.

· Transparent: all transactions are traceable in the network. Anyone can check the transactions online.

· Immutability: the data recorded on the chain cannot be tampered and deleted, any change of the data in a particular block will result in the change of the hash value of the block, as a result, the hash of all following blocks.

· Trust: if the transaction is confirmed, the asset is securely transferred and it is not possible to copy this transaction and carry it out again. The transaction cannot be changed afterward. These features enable trading between parties without having to trust each other or without an unbiased agent (such as a bank) ensuring correct processing. (Franco, 2015)

2.2 What is a Smart Contract?

The term smart contract was first proposed by Nick Szabo in 1997, it is a digitalized protocol that dynamically and proactively enforces the terms of a contract (Szabo,

1997). Smart contracts are programs that run on a blockchain. When one or more underlying pre-defined conditions occur, the smart contract will be triggered to execute. A smart contract can digitally verify and enforce the negotiation of a contract without a third party. The transactions done by smart contracts are traceable and irreversible (Alharby & van Moorsel, 2017).

Smart contracts have a number of advantages, for example, increasing transparency, eliminating the need for a third party, and as a result reducing transaction costs and time. The reduced processing time also leads to a faster transfer of values. For example, if a user needs to exchange Euros to US dollars, he or she needs to withdraw some money out from a bank account and either convert the currency at the bank or an exchange agency. In this process, the bank and exchange agency are the so-called middlemen. They will charge the user a small fee for the exchange service they provide. To complete the same procedure on a blockchain, users can use their private key to unlock the balance in their account and send the amount they want to exchange to a specified address. The smart contract will make sure that the user receives the appropriate amount of another currency back.

3 Public Smart Contract Platforms

Even though Bitcoin has achieved great success since its launch, it has several shortcomings. For example, the Bitcoin code is not Turing-complete, meaning that it does not have loops. The Bitcoin blockchain itself cannot get information from outside the Bitcoin blockchain, meaning that when someone wants to send 100 EUR worth of Bitcoin to another party, calculation and transaction need to be made manually rather than using lines of code. The unspent transaction output (UTXO) of Bitcoin can only have two states: either spent or unspent, which means other applications such as to stake coins, and set withdraw limits are not possible (Buterin, 2013).

Ethereum was created to compensate these shortcomings in the Bitcoin blockchain so that one can build decentralized applications which include blockchain-based smart contracts and graphical user-interfaces. Examples include decentralized financial escrow, gaming applications, data and file storage, betting and prediction markets, etc. The Ethereum smart contract runs in the Ethereum Virtual Machine (EVM). This provides full transparency and traceability of all the actions done by smart contracts. For each transaction, execution of a smart contract, storage of data on the Ethereum blockchain, Gas is needed. Gas is a reward for miners to promote good behaviors in validating transactions. (Buterin, 2013).

3.1 Ethereum

Ethereum is the first decentralized smart contract platform based on a blockchain. It is global, censorship-resistant, and peer-to-peer. Anyone can use it to program Apps to fulfill certain functions like the management of money and assets.

3.1.1 Architecture of Ethereum

3.1.1.1 Ethereum Virtual Machine

The Ethereum Virtual Machine (EVM) operates similar to a global computer. Each node which validates smart contract executions is a copy of the EVM. The state of

the EVM constantly changes as it processes smart contracts and transactions, this is recorded on the Ethereum blockchain. All Ethereum smart contracts are running in EVM, which is an entirely isolated environment. As a result, an Ethereum smart contract has no access to any URL and applications on the computer hosting EVM. In order to get up-to-date information, an oracle is needed (Antonopoulos & Wood, 2018). Oracles act as a layer on the blockchain. They can query, verify, and authenticate the information from outside the blockchain and then feed that information to a smart contract. Oracles are normally services provided by third parties and subject to security issues (Voshmgir, 2019). However, as blockchain technology evolves, there will be built-in oracles on the blockchain, which are part of the whole blockchain consensus mechanism (Zhang, 2019).

For example, a smart contract which stores the average Bitcoin price from the top 3 exchanges at 12:00 midday every day on the Ethereum blockchain needs to use an oracle to get the prices, because it cannot directly access the API of any exchanges.

3.1.1.2 Accounts and Transactions

Transactions on the Bitcoin blockchain adopt the UTXO (unspent transaction output) model. This means that in the Bitcoin blockchain account balances are not kept in wallets. Instead, a user’s Bitcoins are saved as a list of unspent output, wallets hold private keys which can unlock UTXO (Zhang et al., 2019. p. 7).

For example, if Bob has 3 Bitcoin and wants to send Alice 2 Bitcoin, he cannot just divide his 3 Bitcoin into 2 Bitcoin and 1 Bitcoin, send Alice 2 and keep the rest, he needs to send all of them out: 2 Bitcoin goes to Alice’s account and he sends the rest 1 Bitcoin to himself.

Figure 2: UTXO Transaction

According to Ethereum Yellow Paper, “Ethereum can be viewed as a transaction-based state machine” (Wood, 2020). The Ethereum blockchain can manage a lot more than the Bitcoin blockchain, such as balances, smart contract information, etc. Ethereum implements an account-based transaction model, where the balance of each account is stored on the Ethereum blockchain. A user can use his or her private key to unlock the available Ether under the address and send any valid amount to another address. The concept is similar to a bank account (Zhang et al., 2019. p.8).

Ethereum accounts are addresses which store Ether and the contract code. Ethereum addresses are long combinations of letters and numbers, for example: 0xb794F5eA0ba39495cE839613fffBA74279579269. It is free to create an Ethereum address and it can be created online or offline. Two types of addresses or accounts are available on Ethereum: externally owned addresses and contract addresses. Externally owned accounts are the ones created in a wallet. They contain private keys which enable the owner to manage funds in the wallet. Contract accounts contain the code of smart contracts. They do not have private keys. As a result, they can react to transactions but not initiate them (Antonopoulos & Wood, 2018).

Ether is the native cryptocurrency on the Ethereum blockchain. Any transaction or operation made on the Ethereum network is paid with gas. Gas is not a separate token but is used to measure how much computational power is needed in the transaction or operation. Gas price varies and is normally calculated in gwei, (1 gwei = 10^(-19) Ether). The higher users are willing to pay for Gas, the sooner their transaction gets processed by the miners (Rosic, 2018).

3.1.1.3 Memory and storage on Ethereum

There are two types of memory in Ethereum: permanent and short-term. An example of permanent data can be a confirmed transaction, which will stay on the blockchain forever. An example of temporary data can be the balance held in an account, which changes when the owner makes transfers. Permanent and temporary data are stored separately in Ethereum. All the data is not stored directly in the blockchain, only the hashes of the root nodes of the transaction trie are stored in the Ethereum blocks. A trie is a kind of data structure that is easy to implement and can save a lot of memory. In Ethereum, a combination of Patricia Trie and Merkle Tree is used. Patricia Trie is primarily used to find prefixes; a visualization example is as follows:

Figure 3: an example of Patricia trie

A Merkle Tree is also a hash tree that stores data in its hash value form and in hierarchical order. Every node in a Merkle Tree is labeled with the hash of its child nodes or a data block (Kim, 2018). An example is illustrated below:

Figure 4: an example of Merkle Tree (Bosamia & Patel, 2018)

There are three storage tries in Ethereum memory:

· State Trie: stores the key and value pair of every account on the Ethereum blockchain, as well as the storageRoot. The storageRoot is the hash of the root node of the storage trie. All the smart contract information is stored in the storage trie.

· Transaction Trie: stores information of all the transactions in one block. As a result, each block contains a transaction trie. Once confirmed, the position of a transaction within a block is fixed which means that it can be located through the same path over and over again.

· Receipts Trie: stores the transaction outcome such as post-transaction state, cumulative gas used, logs, and so on (Brickwood, 2018).

Figure 5: Storage of Ethereum (McCallum, 2018)

3.1.2 Consensus Algorithm — Proof of Work

As mentioned before, in a decentralized blockchain there is no authority party to check or verify the correctness of transactions, which means the peers in the system need to reach an agreement themselves. The mechanism to make all the participants on a decentralized network to agree on the true state of the ledger is called consensus algorithm (Binance Academy, n.d.).

Consensus helps the network to maintain the consistency of data. The process of achieving consistency is dependent on consensus algorithms. There are many different types of consensus algorithms. The one Ethereum uses is the same as Bitcoin: Proof of Work (PoW), where all miners need to invest computing power to solve a mathematical puzzle. The miner who first finds the solution wins the right to validate and put all new transactions in a new block while the rest of the miners start working on the next block. In return, the winning miner will receive transaction fees and a block reward in Ether. Then, the new block will be broadcasted on the network. After the validation from other miners, the new block will be added to the blockchain. Every miner will update their copy of the blockchain. Then the process repeats itself. If two miners managed to mine the next block at the same time, then the rule is “the longest chain wins”. For example, if both block 3 and block 4 are mined at the same time, the miners who get the broadcast of block 3 first will start to attach the next block after block 3. The miners who get the broadcast of block 4 first will start to attach the next block they mine after block 4. If block 5 is broadcasted earlier, then every miner who is working on attaching the next block to block 4 will abandon what they are doing and start to mine block 6. As a result, block 4 becomes an orphan block (R. Zhang et al., 2019).

Figure 6: “The longest chain wins”

However, PoW has been criticized for wasting energy in mining as well as being relying too much on decentralization and economic incentive for security.

Therefore, in Ethereum 2.0 it is planned that the blockchain will switch to Proof of Stake (PoS) to improve energy efficiency and transaction speed (Ethereum 2.0 Phases, n.d.). The concept of PoS will be explained in the EOS section of this article.

3.1.3 Ethereum Smart Contract

In Ethereum, smart contracts refer to any program that runs in the Ethereum Virtual Machine (EVM). EVM compiles smart contract code into bytecode and executes it.

An Ethereum smart contract can be written in Solidity and Vyper. These are two relatively new high-level programming languages. Solidity was invented first and is based on JavaScript, C++, and Python. Up to date, it is the most used language in Ethereum smart contracts (Solidity — Solidity 0.7.1 Documentation, n.d.). However, Solidity has several short-comings, for example, it does not support float numbers. Because it is a new programming language, developers often make mistakes while coding, and these mistakes sometimes lead to unwanted consequences such as users losing their funds. Solidity also does not have many

libraries compared with other programming languages (Potter, 2018) (Swamy, 2018).

Each smart contract in Solidity supports inheritance and contains the following declarations:

· Pragma: which states the version of solidity language;

· State variables: these values are saved in the contract storage permanently;

· Functions: these are code units which are executable and can be defined inside or outside of a contract;

· Function modifiers: they are used to change the behaviors of functions;

· Events: they can be called to so that the arguments will be stored in the transaction’s log;

· Structs: they are groups of different variables and custom-defined. They can contain mappings and arrays;

· Enums: they are user-defined data types (Structure of a Contract — Solidity 0.7.1 Documentation, n.d.).

In order to fix the various shortcomings in Solidity and make it easier for developers to code a smart contract in a secure way, a new programming language called Vyper was introduced. Vyper is based on Python (Chadha, 2018). Vyper v0.1.0 Beta 9 was first released in December 2019 (Release Notes — Vyper Documentation, n.d.).

3.2 EOSIO

EOSIO is another blockchain-based smart contract platform built by a software company called Block.One. The system was first revealed in May 2017 and its mainnet was launched in June 2017 (EOS New York, 2018). The goal of EOSIO is to compete with existing centralized platforms such as eBay, Uber, Facebook, to handle tens of millions of users every day. Unlike Ethereum where users need to pay transaction fees called Gas when deploying smart contracts or sending Ether, Block One designed the network in a way so that it is free for user to send their native cryptocurrency EOS to others. Thus, EOSIO wants to quickly gain wide adoption (Larimer, 2018).

3.2.1 Architecture of EOSIO

3.2.1.1 EOS Virtual Machine

Same as Ethereum, EOS smart contracts are also processed inside a virtual machine. WebAssembly (WASM) is a very important feature for EOS Virtual Machine (VM). According to Kumar (2020): “WebAssembly is a type of binary-code that can be run in modern web browsers, it enables us to write code in multiple languages and run it at near-native speed on the web.” WASM can be decoded and compiled to machine code directly. For source languages like C, C++, Rust, etc., WASM is the compilation target. EOS VM incorporates WASM to make sure smart contracts written in C++ can be processed very fast.

3.2.1.2 Overview

The EOSIO platform consists of the following elements:

· Nodeos: refers to the core EOSIO node background process. Users can configure nodeos with a plugin to run their own node. The main functions of nodeos include process smart contracts, validate transactions, produce and confirm blocks on chain (Nodeos, n.d.).

· Cleos: refers to the EOSIO command-line interface (CLI). The main functions of cleos are wallet management, interactions with the blockchain, smart contract deployment, and testing (Cleos, n.d.).

· Keosd: is the key manager which stores keys in wallets securely (Keosd, n.d.).

· EOSIO.CDT: makes it easier to write smart contracts. It is also the toolchain for WebAssembly.

A visualization of the EOSIO architecture is as follows:

Figure 7: EOSIO Architecture (Platform And Toolchain, n.d.)

3.2.1.3 Accounts and Transactions

In EOSIO there is the concept of “Accounts”. Each account can indicate a participant on the EOSIO blockchain. Each EOS account can be created using 12 characters chosen from a-z, 1–5, and optional dots except the last character. Different from Ethereum accounts, EOS accounts are human-readable, for example, bluemoon1234. When a user creates an account, two key pairs need to be generated. Only the public key for each of the key pair is needed for account creation. The owner public key and the active public key indicate different permissions. Both of them can execute the same functions. However, in case the active key is stolen, the owner key can be used to reset the active key for security purposes (EOS New York, 2019).

Figure 8: Create an account on Jungle Testnet

Smart contracts can assign different accounts with different permissions. Both the EOS token and contract code can be stored in accounts. It costs the user EOS tokens when an account is created (Accounts And Permissions, n.d.).

A user can create a transaction within an application. Then the local node will broadcast the transaction to other producing nodes once it is sent. One of the producers will validate and execute the transaction and put it together with other transactions into a block. When the majority of producers have validated the block, the transaction becomes irreversible and is permanently recorded on the blockchain (Transactions Protocol, n.d.).

3.2.1.4 Storage on EOSIO

In EOSIO it is free to send EOS to other accounts. However, there are 3 types of resources which users need to pay to use in the EOSIO network:

· CPU is the processing power on the EOSIO blockchain. It is used to execute transactions in the network. CPU is measured in microseconds because it indicates how much time a block producer should spend on processing a user’s transaction.

· RAM on the EOSIO blockchain is different from traditional understanding. Here it refers to the permanent storage on the EOSIO blockchain. For example, account keys and balances are stored in RAM for quick access if needed.

· Bandwidth (NET) refers to the CPU and network. The network handles the specific amount of data that needs to be sent in a specific amount of time on the blockchain (Polar, 2018). NET is measured in bytes because it indicates how much space the network needs to send a user’s transactions.

Before launching a smart contract, the user needs to buy enough RAM with EOS and to stake enough EOS so that he/she gets enough CPU and NET (LiquidEOS, 2018).

3.2.2 Consensus Algorithm — BFT and dPoS

EOSIO uses a combination of Byzantine Fault Tolerance (BFT) and delegated Proof of Stake (dPoS) for its consensus algorithm.

In the Proof of Stake (PoS) consensus algorithm, each block producer needs to stake a certain amount of the native cryptocurrency of the network they want to contribute to. If they do something malicious, they will lose their stake. This method is believed more energy efficient than PoW. In PoS, anyone who has the required amount of cryptocurrency is eligible to stake and become a block producer. dPoS for EOS functions as follows: all community members who want to be EOS block producers need to have the necessary amount of EOS. They will be voted by all

EOS holders. Only the top 21 with the most votes become block producers. Every 0.5 seconds only one of the block producers will be allowed to produce a block. Each producer will produce 6 blocks each round, the order of who gets to produce is agreed by a minimum of 15 block producers (Larimer, 2018).

In addition, a Byzantine Fault Tolerance consensus algorithm is also implemented. BFT comes from the Byzantine Generals’ Problem, where several generals in different locations are trying to agree on whether to attack the enemy. Each of them needs to send a messenger to communicate with others about their decision. Several things can go wrong in the process. For example, some messengers might be spies and deliver the wrong message, some messengers could be killed by the enemy which means that the message never arrives, some generals could act maliciously, etc. In the context of blockchain technology, the generals are equivalent to nodes that need to reach an agreement on the current state of the blockchain. Otherwise, the distributed system would not work. Mathematically, we need to have at least two-thirds of the nodes to act honestly in order to have a functioning network (Konstantopoulos, 2017). To apply BFT on the EOSIO nodes, a minimum of 15 block producers out of the 21 need to sign a block, then consensus is reached (Larimer, 2018).

3.2.3 Smart Contract Structure

EOSIO smart contracts are written in C++ and are implemented as class. A smart contract consists of actions, which are implemented as C++ methods. In C++, a method is the same as a function but is defined inside a class. An action refers to a single operation. A group of actions forms a transaction.

The highlight of EOSIO is that smart contracts are converted from C++ to WebAssembly (WASM) by EOSIO.CDT, this enables faster performance. EOS.CDT also provides a lot of data structures and libraries which makes coding smart contracts easier (QuillHash Team, 2019).

However, as a general-purpose programming language, C++ has several short-comings. For example, it is not a very secure language due to the support of pointers. Because pointers can cause unauthorized access to memory. Another problem is that there exist different types of memory vulnerabilities (Dataflair Team, 2020) (Priyadarshini, 2018).

3.3 Blockchain Trilemma

In order to compare the two smart contract platforms, we need to look at the blockchain trilemma first. The term was first introduced by the founder of Ethereum, Vitalik Buterin. It includes three elements which are important for a permissionless blockchain (Hafid et al., 2020):

· Decentralization: it depends on how many nodes there are processing transactions and how separate the nodes are from each other. Ideally, there should be as many independent nodes as possible around the world.

· Scalability: how fast and how many transactions a blockchain can process in a given time. At the moment, Ethereum can process around 15 transactions per second (etherscan, 2020) and EOSIO has a maximum transaction speed of approximately 4000 per second (Block, 2020). In order to reach mass adoption, the processing capability of a blockchain should be comparable to VISA or MASTER card, which each process about 65000 transaction messages per second (Visa Fact Sheet, 2017).

· Security: how immutable a blockchain is. A decentralized blockchain should be able to withstand various attacks such as a 51% attack, Sybil attack, distributed denial of service attack (DDoS), etc.

The blockchain trilemma theory assumes that a blockchain cannot achieve all three without sacrificing anything. It is feasible to only optimize two out of the three qualities.

Ethereum is decentralized and secure because anyone can join as a validator and there are many nodes in different regions. As a result, it is difficult to attack the Ethereum blockchain without huge financial costs. However, Ethereum has been criticized for its limitation to scale because it is slow for all the nodes to reach an agreement.

Figure 9: Blockchain Trilemma

Compared with Ethereum, EOS sacrificed some decentralization. As a result, it is more on the scalable and secure side. Because there are only 21 validators, they can reach an agreement a lot faster. EOSIO also has faster transaction and confirmation time.

However, there is no proof that this theory is definitely true. The blockchain industry is developing very fast and, in the future, there could be a solution that will make the three conditions achievable at the same time.

To read the second part of this article, please click here.

References

Accounts And Permissions. (n.d.). EOS Developers Documentation. Retrieved July 30, 2020, from https://developers.eos.io/welcome/latest/protocol/accounts_and_permissions, https://developers.eos.io/welcome/v2.0/protocol/accounts_and_permissions

Alharby, M., & van Moorsel, A. (2017). Blockchain Based Smart Contracts: A Systematic Mapping Study. 125–140. https://doi.org/10.5121/csit.2017.71011

Antonopoulos, A. M., & Wood, G. (2018). Mastering Ethereum. O’Reilly Media. https://github.com/ethereumbook/ethereumbook (Original work published 2016)

Block, E. C. (2020). Bloks.io. https://bloks.io

Bosamia, M., & Patel, D. (2018). Current Trends and Future Implementation Possibilities of the Merkel Tree. JCSE International Journal of Computer Sciences and Engineering, 6(2018–8–8). https://doi.org/10.26438/ijcse/v6i8.294301

Brickwood, D. (2018). Understanding Trie Databases in Ethereum. Medium. https://medium.com/shyft-network-media/understanding-trie-databases-in-ethereum-9f03d2c3325d

Buterin, V. (2013). A NEXT GENERATION SMART CONTRACT & DECENTRALIZED APPLICATION PLATFORM. 36.

Chadha, B. (2018). Understanding Vyper: The slick New Ethereum language. Blockgeeks. https://blockgeeks.com/guides/understanding-vyper/

Cleos. (n.d.). EOS Developers Documentation. Retrieved July 30, 2020, from https://developers.eos.io/manuals/eos/latest/cleos/index, https://developers.eos.io/manuals/eos/v2.0/cleos/index

Dataflair Team. (2020). Advantages and Disadvantages of C++. https://data-flair.training/blogs/advantages-and-disadvantages-of-cpp/

EOS Authority. (n.d.). Manage CPU/NET/RAM. EOS Authority. Retrieved September 22, 2020, from https://eosauthority.com/wallet/ram

EOS New York. (2018). The EOS Mainnet Launch: A New Dawn. https://medium.com/@eosnewyork/the-eos-mainnet-launch-a-new-dawn-fa0b5d0fea06

EOS New York. (2019). Managing your EOS Owner & Active Permissions. Medium. https://medium.com/eos-new-york/managing-your-eos-owner-active-permissions-c76bdaf24e6b

EOS price, marketcap, chart, and info. (n.d.). CoinMarketCap. Retrieved September 22, 2020, from https://coinmarketcap.com/currencies/eos/

Ethereum 2.0 Phases. (n.d.). EthHub. Retrieved August 19, 2020, from https://docs.ethhub.io/ethereum-roadmap/ethereum-2.0/eth-2.0-phases/

Ethereum price, marketcap, chart, and info. (n.d.). CoinMarketCap. Retrieved September 22, 2020, from https://coinmarketcap.com/currencies/ethereum/

etherscan. (2020). Ethereum Blockchain Explorer. Ethereum (ETH) Blockchain Explorer. http://etherscan.io/

etherscan.io. (n.d.). Ethereum Average Gas Price Chart | Etherscan. Ethereum (ETH) Blockchain Explorer. Retrieved September 22, 2020, from http://etherscan.io/chart/gasprice

Franco, P. (2015). Understanding Bitcoin. https://www.academia.edu/36423280/_Pedro_Franco_Understanding_Bitcoin_Cryptography_BookSee.org_

Hafid, A., Hafid, A. S., & Samih, M. (2020). Scaling Blockchains: A Comprehensive Survey. IEEE Access, 8, 125244–125262. https://doi.org/10.1109/ACCESS.2020.3007251

Keosd. (n.d.). EOS Developers Documentation. Retrieved July 30, 2020, from https://developers.eos.io/manuals/eos/latest/keosd/index, https://developers.eos.io/manuals/eos/v2.0/keosd/index

Kim, K. (2018). Modified Merkle Patricia Trie — How Ethereum saves a state | by Kiyun Kim. Medium. https://medium.com/codechain/modified-merkle-patricia-trie-how-ethereum-saves-a-state-e6d7555078dd

Konstantopoulos, G. (2017). Understanding Blockchain Fundamentals, Part 1: Byzantine Fault Tolerance. Medium. https://medium.com/loom-network/understanding-blockchain-fundamentals-part-1-byzantine-fault-tolerance-245f46fe8419

Kumar, V. (2020). WebAssembly: Easy explanation with code example. Medium. https://medium.com/front-end-weekly/webassembly-why-and-how-to-use-it-2a4f95c8148f

Larimer, D. (2018). EOS.IO Technical White Paper V2. GitHub. https://github.com/EOSIO/Documentation

LiquidEOS. (2018). CPU, NET & RAM — The raw materials of the EOS economy. Medium. https://medium.com/@liquideos/cpu-net-ram-the-raw-materials-of-the-eos-economy-c4f85022fae

McCallum, T. (2018). Diving into Ethereum’s world state. Medium. https://medium.com/cybermiles/diving-into-ethereums-world-state-c893102030ed

Nodeos. (n.d.). EOS Developers Documentation. Retrieved July 30, 2020, from https://developers.eos.io/manuals/eos/latest/nodeos/index, https://developers.eos.io/manuals/eos/v2.0/nodeos/index

Platform And Toolchain. (n.d.). EOS Developers Website. Retrieved July 20, 2020, from https://developers.eos.io/welcome/latest/overview/platform_and_toolchain, https://developers.eos.io/welcome/v2.0/overview/platform_and_toolchain

Polar. (2018). What is CPU? What is RAM? And How Does the EOS blockchain Utilize These Resources? Medium. https://medium.com/@polar_io/what-is-cpu-what-is-ram-and-how-does-the-eos-blockchain-utilize-these-resources-a7a52e158652

Potter, J. M. (2018). The Problem with Solidity. Medium. https://medium.com/@XBY_Today/the-problem-with-solidity-be7e6c277a58

Priyadarshini, M. (2018, November 16). The Huge Security Problem With C/C++ And Why You Shouldn’t Use It. Fossbytes. https://fossbytes.com/security-problem-with-c-c-and-why-you-shouldnt-use-it/

QuillHash Team. (2019). EOS Smart Contract Development: Understanding fundamental concepts for writing dApps on EOS. Medium. https://medium.com/quillhash/eos-fundamentals-for-developers-essential-concepts-for-starting-eos-development-9d8e1a263724

Release Notes — Vyper documentation. (n.d.). Vyper Documentation. Retrieved August 10, 2020, from https://vyper.readthedocs.io/en/stable/release-notes.html

Rosic, A. (n.d.). What Is Hashing? [Step-by-Step Guide-Under Hood Of Blockchain]. Https://Blockgeeks.Com/. Retrieved June 11, 2020, from https://blockgeeks.com/guides/what-is-hashing/

Rosic, A. (2018). What is Ethereum Gas? [The Most Comprehensive Step-By-Step Guide Ever!]. Blockgeeks. https://blockgeeks.com/guides/ethereum-gas/

Solidity — Solidity 0.7.1 documentation. (n.d.). Solidity Documentation. Retrieved August 23, 2020, from https://solidity.readthedocs.io/en/latest/index.htm

Structure of a Contract — Solidity 0.7.1 documentation. (n.d.). Solidity Documentation. Retrieved August 23, 2020, from https://solidity.readthedocs.io/en/latest/structure-of-a-contract.html

Swamy, A. (2018). Pros and Cons of Solidity. SixPL. https://sixpl.com/pros-and-cons-of-solidity/

Szabo, N. (1997). The Idea of Smart Contracts. https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/idea.html

Transactions Protocol. (n.d.). EOS Developers Documentation. Retrieved August 9, 2020, from https://developers.eos.io/welcome/latest/protocol/transactions_protocol, https://developers.eos.io/welcome/v2.0/protocol/transactions_protocol

Visa Fact Sheet. (2017, August). https://usa.visa.com/dam/VCOM/download/corporate/media/visanet-technology/aboutvisafactsheet.pdf

Voshmgir, S. (2019). Oracles. In Token Economy: How Blockchains and Smart Contracts Revolutionize the Economy. https://www.amazon.de/gp/product/3982103827/ref=as_li_tl?ie=UTF8&tag=sherminde01a-21&camp=1638&creative=6742&linkCode=as2&creativeASIN=3982103827&linkId=4753362f5226a8282b281de67ec80077

What Is a Blockchain Consensus Algorithm? (n.d.). Binance Academy. Retrieved August 19, 2020, from https://academy.binance.com/blockchain/what-is-a-blockchain-consensus-algorithm

Wood, G. (2020). ETHEREUM: A SECURE DECENTRALISED GENERALISED TRANSACTION LEDGER. 39.

Zhang, E. (2019). Roadmap of NEO 3.0 Development. Medium. https://medium.com/neo-smart-economy/roadmap-of-neo-3-0-development-e2ae64edf226

Zhang, R., Rui Xue, & Liu, L. (2019). Security and Privacy on Blockchain. ArXiv:1903.07602 [Cs]. https://doi.org/10.1145/3316481