Giter VIP home page Giter VIP logo

ethereum-scalability's Introduction

Hi there πŸ‘‹

ethereum-scalability's People

Contributors

gfornari avatar herrbez avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

gfornari

ethereum-scalability's Issues

Review this list

screenshot_20180831_092025

I know, that I have written this part ^^, but I think that points 2 already include points 3.
In addition the nodes should verify the whole block header and not only the nonce, e.g. they should verify that the gas limit is contained in the range
screenshot_20180831_092547

Moreover, we use an enumeration, but the order is surely, different. I think that my client would previously check the block header and also the nonce and only after may think to compute the transactions

Alternative

screenshot_20180830_222613

My Proposal

There are two types of accounts:

  • Externally Owned Account (EOA) (referred to also simply as accounts)
  • contract account (referred to also simply as contract

Decide the role of bold/italic/texttt text

Decide and apply when to write a word with bold, italic or texttt.

Here is my proposal:

bold

I think that one could completely avoid bold font, but in our case, it should be fine (I like it), but we have to use it only for extremely important words

italic

When new (unconventional) words are introduced for the first time.

code

For packet-types (e.g., Ping, Pong) and program names (e.g. geth)?

Any comments/suggestions?

Add DAPP

Add description of what is a dapp and why it is not or is decentralized in an Appendix (Because it is not part of the Ethereum Core, but includes also external services)

RLPx

RLPx distinguish between node discovery and propagation protocol

JSON RPC

Should we mentione/describe the JSON RPC?

Kademlia description

Kademlia description is very similar to the one of the original paper (section 2.2)

Fix bibliography

Add "accessed" to all urls in bibliography + Add "ethereum foundation" as author of the wiki entries

Geth redundancy

It would be better to define one per all at the beginning of the report, that we use "go-ethereum" abbreviated as geth as a reference implementation.

Currently, we repeat this fact a lot of time in the test and added the urls more than once.

ABI specification

https://media.readthedocs.org/pdf/solidity/develop/solidity.pdf

Although there is a common agreement on the ABI format, this abstraction is not part
of the core Ethereum protocol meaning that anyone can define and expose its own ABI,
but the caller have to comply to the format used by the callee.

I would add the reference to the solidity docs (it has a chapter about the specification)

Caption of figure is not correct

screenshot_20180831_085943
A contract may call another contract through a message call.

In addition, I am not sure if it is correct to talk about a message call when returning the result of the execution. According to the yellow paper the result is the output of a message call
screenshot_20180831_090229

Describe the Ethereum World State

In my opinion, it is of fundamental importance to describe more accurately the World State and its component. This makes it clear that this system is very difficult to scale and prone to centralization because the world state is a big piece of data.

To scale or not to scale?

Shall we change the section title?
W.r.t. the content, now we cite two references but I think we should close the section saying something like "The scalability matters"

Doubt

The x-axis of the cube of the scalability is concerned with the horizontal duplication
and cloning of services and data with absolutely no bias, running each identical copy of
the system on a different server. Usually, the work is distributed by a load balancer.

It is necessary that the identical copies are run on different servers?

General Review

Both should review each chapter, before the submission:

Giacomo

  • Introduction
  • Architecture
    • Network Layer
    • Propagation Layer
    • Data Layer
    • Consensus Layer
    • Application Layer
    • External Interaction
  • Scalability
    • To Scale or not to Scale
    • Background
    • X-Axis
    • Y-Axis
    • Z-Axis
    • Tests
  • Conclusion
  • Solidity
  • Node types

Mirko

  • Introduction
  • Architecture
    • Network Layer
    • Propagation Layer
    • Data Layer
    • Consensus Layer
    • Application Layer
    • External Interaction
  • Scalability
    • To Scale or not to Scale
    • Background
    • X-Axis
    • Y-Axis
    • Z-Axis
    • Tests
  • Conclusion
  • Solidity
  • Node types

Solidity

Since we use Solidity, would be good to write something about the language. Maybe the appendix is a good place for it.

Add general introduction

Add a general introduction, that should cover these arguments:

  • Motivation
  • General Introduction to blockchain
  • Bitcoin?
  • ... Add other fields

Invert Appendix A and Appendix B

I think that Appendix B (Node types) should be put before Appendix A (Solidity), because the former occurs previously in the text and is more concerning the rest of the work.

It is only a proposal

Consensus layer

Divide consensus layer into multiple subsubsections:

  • PoW
  • GHOST
  • Mining
  • Transaction Execution

Openness

Maybe it's late, but we talked about openness of the system w.r.t. the new entering nodes. What to do with this?

Definition of recipe

I don't like this definition of receipts provided in the data layer

In [15], Vitalik Buterin 18 writes that with the receipt information, someone can answer queries like β€œTell me all instances of an event of type X (e.g. a crowdfunding contract reaching its goal) emitted by this address in the past 30 days”.

#40

Can we provide a better description?

Fix Image size

I make a branch in which I try to fix the size of the images about the execution, so that we do not have entire pages with only an image, which I don't like.

Add protocols figures

We could add some figures representing the protocols (or better, the interactions between them, someway), something like this. Useful to break the reading.

Close all branches

Close all branches and inspect existing ones, eventually perform PRs.

*-axis level up

I think the three sections talking about the axes should be moved up by one level, and subsequently the child sections. This way it is clearer what is discussed in them.

EVM - Call Stack

Add some details about the Ethereum Virtual Machine call stack

Eventually, add some reference to the formal specification of the EVM by the TU Wien.

Complete p2p section

Complete the section about the p2p communication, the overlay network and the dissemination of the information.

Test Results

Should we also add additional information about the results?

  1. Currently, we report only the average throughput. I think that is interesting the maximal value that we can reach.

  2. The average number of transaction inside a block with the different gas limits

  3. The size of the state/blockchain (If I find the results, or simply the value that we can find in some sources)

Scalability Test

  • Add description of test configuration
  • Make a first study with a fixed number of nodes and by testing with different number of miners
  • Make a graph that correlates the number of nodes and throughput with different number of nodes
  • Make a graph that correlates time and size of blockchain

Discuss this sentence

screenshot_20180831_180717

In my opinion, it is always a drawback, because of consistency problems etc. So I would change in:

This could seem not a drawback at first, but it becomes unmanageable if the data size increase

Or something similar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.