Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add the merge blog #32

Merged
merged 21 commits into from
Jan 6, 2023
Merged

feat: add the merge blog #32

merged 21 commits into from
Jan 6, 2023

Conversation

p-shahi
Copy link
Member

@p-shahi p-shahi commented Jan 3, 2023

Blog post about the libp2p efforts to integrate with Ethereum

  • remove assets upload to imgur and add them to this PR

@p-shahi p-shahi linked an issue Jan 3, 2023 that may be closed by this pull request
src/_blog/libp2p-and-Ethereum.md Outdated Show resolved Hide resolved
src/_blog/libp2p-and-Ethereum.md Outdated Show resolved Hide resolved
src/_blog/libp2p-and-Ethereum.md Outdated Show resolved Hide resolved
src/_blog/libp2p-and-Ethereum.md Outdated Show resolved Hide resolved

At this time, the Ethereum 2.0 community began evaluating the networking requirements for the Beacon Chain. Designing a libp2p integration became a formal effort. Focus moved towards adding libp2p to the Beacon Chain instead of extending/replacing devp2p on the Ethereum mainnet.

[Raul Kripalani](https://twitter.com/raulvk), then the libp2p team lead at Protocol Labs, joined in on many of the [early Eth 2.0 implementers calls](https://github.com/ethereum/eth2.0-pm/issues?q=is%3Aissue+libp2p+is%3Aclosed) and advocated for libp2p.
Copy link
Member

@raulk raulk Jan 3, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few missing story details worth highlighting:

  • The Eth 2.0 client ecosystem involved 7-8 clients written in different languages.
  • Several of those languages had no libp2p implementations and this was a hard blocker for libp2p adoption.
  • This motivated the birth of several new libp2p implementations, e.g. nim-libp2p, py-libp2p, jvm-libp2p, etc.
  • (Out of curiosity, one implementation was literally started by me to overcome the cold start problem :D)
  • EF and PL cofunded those implementations.
  • libp2p became the focus of EthBerlinZwei, awarding up to 20k? USD in bounties cofunded by PL, EF, ICF. (Can't remember).
  • EthBerlinZwei was a phenomenal opportunity to conduct knowledge transfer and onboard Eth Core Devs onto libp2p, see: https://twitter.com/protolambda/status/1599438035594014720
  • libp2p was invited to give several talks at Devcon4 (Prague) and Devcon5 (Osaka), as well as in follow-up events like Crosslink Taipei.
  • There's a very cool tweet you can link to about the Eth 2.0 networking spec: https://twitter.com/jcksie/status/1156969492607590401 These were mad 2 weeks.

I can give you more links and help you capture more colour about this gradual marriage between communities throughout this week!

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome, definitely want to highlight these. Thank you Raul! Added them in this commit: 1ecec05 if that makes it easier to review. preview here

src/_blog/libp2p-and-Ethereum.md Outdated Show resolved Hide resolved
p-shahi and others added 3 commits January 3, 2023 09:12
@p-shahi
Copy link
Member Author

p-shahi commented Jan 3, 2023

What are folks thoughts on the article length? It runs a bit long given that there's a lot to cover, I think I will try to make it more concise. Raul suggested that we might split this apart into multiple posts, my preference is to keep it as one but trim it a bit. Wdyt?

Do people like the screenshots of GitHub issues and pull requests? They're a bit large right now, but I can scale them down.

The article ends a bit abruptly so I'll work on the conclusion and add a section with links to resources as well

src/_blog/libp2p-and-Ethereum.md Outdated Show resolved Hide resolved
src/_blog/libp2p-and-Ethereum.md Outdated Show resolved Hide resolved
src/_blog/libp2p-and-Ethereum.md Outdated Show resolved Hide resolved
src/_blog/libp2p-and-Ethereum.md Outdated Show resolved Hide resolved
src/_blog/libp2p-and-Ethereum.md Outdated Show resolved Hide resolved
Copy link
Member

@mxinden mxinden left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for the extensive write-up! I learned a lot.

src/_blog/libp2p-and-Ethereum.md Outdated Show resolved Hide resolved
src/_blog/libp2p-and-Ethereum.md Outdated Show resolved Hide resolved
src/_blog/libp2p-and-Ethereum.md Outdated Show resolved Hide resolved
Copy link
Member

@salmad3 salmad3 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Super @p-shahi! Added suggestions and comments.

src/_blog/libp2p-and-Ethereum.md Outdated Show resolved Hide resolved
src/_blog/libp2p-and-Ethereum.md Outdated Show resolved Hide resolved
src/_blog/libp2p-and-Ethereum.md Outdated Show resolved Hide resolved
Let's begin with a brief reflection on libp2p's history.

[Protocol Labs](https://protocol.ai/) first developed [libp2p](https://libp2p.io/) as a networking library inside of [IPFS](https://ipfs.tech/).
At the outset, their code and repositories were coupled. However, libp2p's potential and utility beyond IPFS was soon realized, and project maintainers split the two codebases apart. This enabled libp2p to truly become a product agnostic, reusable, general purpose networking library.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
At the outset, their code and repositories were coupled. However, libp2p's potential and utility beyond IPFS was soon realized, and project maintainers split the two codebases apart. This enabled libp2p to truly become a product agnostic, reusable, general purpose networking library.
At the outset, their code and repositories were coupled. However, libp2p's potential and utility beyond IPFS was soon realized, and project maintainers split the two codebases apart. This enabled libp2p to become a product-agnostic, reusable, general-purpose networking library.


Meaning devp2p was designed specifically to fulfill requirements for Ethereum (more on how devp2p adopted parts of libp2p [in the next section](#Coverging-devp2p-and-libp2p-)).
In particular, devp2p specifies:

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would you be in favor of adding a table in this section that compares the key components of both stacks? This blog post could be a good place for this resource to exist.

Examples: "identity", "message encoding", etc.

I can help generate it.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes if you can help generate it, I'm all for it. Please feel free to push directly to this branch

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the table idea if it isn't much work.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see we added a devp2p page, thanks! We can add the table to that.

We had created a comparison page for IPFS and can do the same for libp2p.

src/_blog/libp2p-and-Ethereum.md Outdated Show resolved Hide resolved
src/_blog/libp2p-and-Ethereum.md Outdated Show resolved Hide resolved
Together these specifications define devp2p as an ***integrated** networking **system*** for Ethereum.
Each component is a requirement of devp2p.

By contrast, libp2p is a ***modular** networking **framework***.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
By contrast, libp2p is a ***modular** networking **framework***.
By contrast, libp2p is a ***modular** networking **framework***, meaning that many different sorts of libp2p networking stacks can be composed by assembling a wide variety general-purpose modules.

src/_blog/libp2p-and-Ethereum.md Outdated Show resolved Hide resolved
src/_blog/libp2p-and-Ethereum.md Show resolved Hide resolved
@salmad3
Copy link
Member

salmad3 commented Jan 4, 2023

What are folks thoughts on the article length? It runs a bit long given that there's a lot to cover, I think I will try to make it more concise. Raul suggested that we might split this apart into multiple posts, my preference is to keep it as one but trim it a bit. Wdyt?

Do people like the screenshots of GitHub issues and pull requests? They're a bit large right now, but I can scale them down.

The article ends a bit abruptly so I'll work on the conclusion and add a section with links to resources as well

Splitting into multiple posts is a good option. Also, this could very well be a series (or turn into a series), calling it something simple like "Ethereum and libp2p".

One of many ways to split:

  • The first post could present the story and timeline, something along the lines of "Ethereum and libp2p: Ethereum's Journey Toward libp2p Adoption", ":A Retrospective on the Journey to Integration", etc.
  • Followed by a second post about the merge "Ethereum and libp2p: Together at Last", ":Ethereum Embraces libp2p", etc.
  • The optional section that compares libp2p and devp2p could turn into it's own post.

p-shahi and others added 4 commits January 4, 2023 11:40
Co-authored-by: Danny Salman <salman.danny03@hotmail.com>
Co-authored-by: Max Inden <mail@max-inden.de>
Co-authored-by: Danny Salman <salman.danny03@hotmail.com>
Co-authored-by: Danny Salman <salman.danny03@hotmail.com>
@p-shahi
Copy link
Member Author

p-shahi commented Jan 5, 2023

Splitting into multiple posts is a good option. Also, this could very well be a series (or turn into a series), calling it something simple like "Ethereum and libp2p".

One of many ways to split:

* The first post could present the story and timeline, something along the lines of "Ethereum and libp2p: Ethereum's Journey Toward libp2p Adoption", ":A Retrospective on the Journey to Integration", etc.

* Followed by a second post about the merge "Ethereum and libp2p: Together at Last", ":Ethereum Embraces libp2p", etc.

* The optional section that compares libp2p and devp2p could turn into it's own post.

So my main concern about splitting it into multiple articles is that we'll lose traffic.
The benefit of one article is that though it may be lengthy it can be shared/referenced more easily (easier to direct folks to one place than many.)
If people feel strongly about this then I'm happy to do it

@p-shahi p-shahi requested a review from salmad3 January 5, 2023 02:59
@github-actions
Copy link
Contributor

github-actions bot commented Jan 5, 2023

Images automagically compressed by Calibre's image-actions

Compression reduced images by 31.7%, saving 238.09 KB.

Filename Before After Improvement Visual comparison
src/assets/eth-libp2p-2016.png 197.35 KB 135.98 KB -31.1% View diff
src/assets/eth-libp2p-2018-1.png 106.46 KB 72.09 KB -32.3% View diff
src/assets/eth-libp2p-2018-2.png 95.33 KB 64.83 KB -32.0% View diff
src/assets/eth-libp2p-2018-3.png 154.74 KB 103.88 KB -32.9% View diff
src/assets/eth-libp2p-2020-1.png 115.43 KB 75.62 KB -34.5% View diff
src/assets/eth-libp2p-beacon-nodes.png 81.57 KB 60.37 KB -26.0% View diff

36 images did not require optimisation.

@p-shahi p-shahi requested a review from raulk January 5, 2023 02:59
Copy link
Member

@mxinden mxinden left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for all the work here.

src/_blog/libp2p-and-Ethereum.md Outdated Show resolved Hide resolved
Copy link
Contributor

@BigLep BigLep left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome work capturing the full tale here!

Given the long history and many folks involved, lets also surface in FIL Slack #libp2p-nexus.

src/_blog/libp2p-and-Ethereum.md Outdated Show resolved Hide resolved
src/_blog/libp2p-and-Ethereum.md Outdated Show resolved Hide resolved
src/_blog/libp2p-and-Ethereum.md Outdated Show resolved Hide resolved
src/_blog/libp2p-and-Ethereum.md Outdated Show resolved Hide resolved

Meaning devp2p was designed specifically to fulfill requirements for Ethereum (more on how devp2p adopted parts of libp2p [in the next section](#Coverging-devp2p-and-libp2p-)).
In particular, devp2p specifies:

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the table idea if it isn't much work.

src/_blog/libp2p-and-Ethereum.md Outdated Show resolved Hide resolved
@github-actions
Copy link
Contributor

github-actions bot commented Jan 5, 2023

Images automagically compressed by Calibre's image-actions

Compression reduced images by 14.5%, saving 8.43 KB.

Filename Before After Improvement Visual comparison
src/assets/eth-libp2p-client-diversity.png 58.16 KB 49.73 KB -14.5% View diff

42 images did not require optimisation.

Copy link
Member

@salmad3 salmad3 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome @p-shahi:) I added some additional spelling and grammar edits and formatted the blog + centered the images.

@p-shahi p-shahi merged commit efd2a98 into main Jan 6, 2023
@p-shahi p-shahi deleted the libp2p-eth branch January 6, 2023 19:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

libp2p and The Merge Blog Post
6 participants