From 947d7d6a4f39e37229040373966ae1ab546a765a Mon Sep 17 00:00:00 2001 From: "dame.eth" <110121581+damedoteth@users.noreply.github.com> Date: Wed, 24 May 2023 10:18:42 -0400 Subject: [PATCH 1/7] Create 2023-http-gateways-recap.md --- src/_blog/2023-http-gateways-recap.md | 72 +++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 src/_blog/2023-http-gateways-recap.md diff --git a/src/_blog/2023-http-gateways-recap.md b/src/_blog/2023-http-gateways-recap.md new file mode 100644 index 00000000..c0453228 --- /dev/null +++ b/src/_blog/2023-http-gateways-recap.md @@ -0,0 +1,72 @@ +--- +title: 'Recap: HTTP Gateways (þing 2023)' +description: 'A recap of the new HTTP Gateways track including summaries, links, and videos.' +author: Will Scott +date: 2023-05-26 +permalink: '/2023-http-gateways-recap/' +header_image: '/http-gateways-recap.jpg' +tags: + - 'thing' + - 'þing' + - 'event' + - 'recap' + - 'track' + - 'http' + - 'gateways' +--- + +We had a new track at IPFS Thing last month: a forum focused on HTTP Gateways. As IPFS has scaled, the interactions between IFPS and the surrounding web has also increased. IPFS lives within the web, and as the [browser track](https://blog.ipfs.tech/2023-ipfs-thing-web-track/) noted, HTTP is deeply integrated with IPFS. + +The Gateway track looked at the specific HTTP interface that IFPS as a server provides to web clients, and how the web clients make use of that interface. There are continuing pushes to evolve the interface `/ipfs/`, but we need to understand both how these primitives should be used by higher level APIs, and how to implement them. + +A specific focus in this track was [Project Rhea](https://pl-strflt.notion.site/Project-Rhea-decentralized-IPFS-gateway-3d5906e7a0d84bea800d5920005dfea6), a cross-cutting project in Protocol Labs to decentralize the current gateways running at [ipfs.io](https://ipfs.io) to be hosted on decentralized infrastructure. This project has led to re-evaluation of the trust relationship between clients and gateways, and the hope that we can reduce the trust and increase the decentralization of gateways even further. + +The talks in the track presented both different models for gateways, as well as implementation details for how components of Project Rhea are built. + +In the rest of this post I'll provide links and brief color to the sessions in the track. + +## What is Rhea? + +[Will](https://wills.co.tt) kicked off the day with an overview of the architecture and goals of project Rhea. + +@[youtube](0eJd2aqqSy8) + +## IPFS Service Worker Gateways + +[Adin](https://github.com/aschmahmann) demonstrated how web clients can reach origin IPFS hosts directly through protocols like webtransport and webRTC. The increasingly complete libp2p stack along with HTTP-compatible services like IPNI are bringing us to a reality where the HTTP gateways become less critical in bridging IPFS support directly to end web users. + +@[youtube](MRIyWXy0ZRc) + +## Web3 CDN Saturn accelerates IPFS & Filecoin retrievals + +Alex Kinstler provided an overview of Saturn as a decentralized CDN and described the service it can provide as a basis for Rhea and as a platform that can host the ipfs.io IPFS gateway. + +@[youtube](f9iUTLtPtKY) + +## Self-hosting IPFS Gateway with bifrost-gateway + +[Lidel](https://github.com/lidel) walked through the architecture of `bifrost-gateway`, a new IPFS implementation that acts as a 'trust gateway'. This component, built for Rhea, provides an HTTP gateway interface compatible with the current gateways which can fetch data from remote nodes via self-verifying car files. + +@[youtube](xhJPz_efAQE) + +## Introduction to Caboose + +[Aarsh](https://github.com/aarshkshah1992/) dove into a 'thick client' for Saturn called Caboose that allows Saturn clients to make requests to close nodes in order to optimize performance of the CDN. In the Rhea use case, Caboose both allows for and improves fraud detection, as well as enabling faster switch-over in the case of a node going down. + +@[youtube](z7a9E735l3Y) + +## Testing Your IPFS Gateway Implementation: A Step-by-Step Guide + +[Piotr](https://github.com/galargh) offered a framework for testing whether an IPFS gateway implementation works as expected. This conformance testing can improve our confidence that new implementations will be compatible with existing applications, and it is much less implementation-specific than previous testing frameworks. + +@[youtube](PmIf77thO_c_) + +## Live CDN Incentives and its Future + +[Claudia](http://w.laudiacay.cool/) sent us off with a great dive into how incentives can be built for a retrieval market CDN. She described how existing primitives can be linked together to support a high performance decentralized CDN that is incentive-aligned with serving content well and quickly. + +@[youtube](yrrAjR03TsU) + +## Conclusion + +I hope this overview of the HTTP Gateways track was helpful for those who couldn't attend IPFS Thing 2023 or for those who did attend but need a refresher. Next year we hope to take this new content track to the next level! From ca9b8339e839b772e3d2cc195b17b7bfc47961fd Mon Sep 17 00:00:00 2001 From: "dame.eth" <110121581+damedoteth@users.noreply.github.com> Date: Wed, 24 May 2023 10:27:59 -0400 Subject: [PATCH 2/7] Update 2023-http-gateways-recap.md --- src/_blog/2023-http-gateways-recap.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/_blog/2023-http-gateways-recap.md b/src/_blog/2023-http-gateways-recap.md index c0453228..26b2f8d8 100644 --- a/src/_blog/2023-http-gateways-recap.md +++ b/src/_blog/2023-http-gateways-recap.md @@ -2,9 +2,9 @@ title: 'Recap: HTTP Gateways (þing 2023)' description: 'A recap of the new HTTP Gateways track including summaries, links, and videos.' author: Will Scott -date: 2023-05-26 +date: 2023-05-24 permalink: '/2023-http-gateways-recap/' -header_image: '/http-gateways-recap.jpg' +header_image: '' tags: - 'thing' - 'þing' From 9535040f572ab7ac2e52be2d6b5cd80f2ae6fcd8 Mon Sep 17 00:00:00 2001 From: "dame.eth" <110121581+damedoteth@users.noreply.github.com> Date: Wed, 24 May 2023 12:21:13 -0400 Subject: [PATCH 3/7] Add files via upload --- src/assets/http-gateways-recap.jpg | Bin 0 -> 30068 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/assets/http-gateways-recap.jpg diff --git a/src/assets/http-gateways-recap.jpg b/src/assets/http-gateways-recap.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f23d8372d7c779e1316ee98c96e3b8898d8c7505 GIT binary patch literal 30068 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 Date: Wed, 24 May 2023 12:22:40 -0400 Subject: [PATCH 4/7] Update 2023-http-gateways-recap.md --- src/_blog/2023-http-gateways-recap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_blog/2023-http-gateways-recap.md b/src/_blog/2023-http-gateways-recap.md index 26b2f8d8..7ea522e0 100644 --- a/src/_blog/2023-http-gateways-recap.md +++ b/src/_blog/2023-http-gateways-recap.md @@ -4,7 +4,7 @@ description: 'A recap of the new HTTP Gateways track including summaries, links, author: Will Scott date: 2023-05-24 permalink: '/2023-http-gateways-recap/' -header_image: '' +header_image: '/http-gateways-recap.jpg' tags: - 'thing' - 'þing' From b4e96c779a0904b8dd080faab281e143ad217385 Mon Sep 17 00:00:00 2001 From: "dame.eth" <110121581+damedoteth@users.noreply.github.com> Date: Wed, 24 May 2023 12:40:04 -0400 Subject: [PATCH 5/7] Update 2023-http-gateways-recap.md --- src/_blog/2023-http-gateways-recap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_blog/2023-http-gateways-recap.md b/src/_blog/2023-http-gateways-recap.md index 7ea522e0..c0453228 100644 --- a/src/_blog/2023-http-gateways-recap.md +++ b/src/_blog/2023-http-gateways-recap.md @@ -2,7 +2,7 @@ title: 'Recap: HTTP Gateways (þing 2023)' description: 'A recap of the new HTTP Gateways track including summaries, links, and videos.' author: Will Scott -date: 2023-05-24 +date: 2023-05-26 permalink: '/2023-http-gateways-recap/' header_image: '/http-gateways-recap.jpg' tags: From dd7a96da44ffa808ab8950a3434e5daee55b1e54 Mon Sep 17 00:00:00 2001 From: "dame.eth" <110121581+damedoteth@users.noreply.github.com> Date: Fri, 26 May 2023 10:46:46 -0400 Subject: [PATCH 6/7] Update 2023-http-gateways-recap.md --- src/_blog/2023-http-gateways-recap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_blog/2023-http-gateways-recap.md b/src/_blog/2023-http-gateways-recap.md index c0453228..771f93a2 100644 --- a/src/_blog/2023-http-gateways-recap.md +++ b/src/_blog/2023-http-gateways-recap.md @@ -2,7 +2,7 @@ title: 'Recap: HTTP Gateways (þing 2023)' description: 'A recap of the new HTTP Gateways track including summaries, links, and videos.' author: Will Scott -date: 2023-05-26 +date: 2023-05-25 permalink: '/2023-http-gateways-recap/' header_image: '/http-gateways-recap.jpg' tags: From 119de7a23cad0b3fcf2e0525a65d4ef0c37832e4 Mon Sep 17 00:00:00 2001 From: "dame.eth" <110121581+damedoteth@users.noreply.github.com> Date: Tue, 30 May 2023 16:14:44 -0400 Subject: [PATCH 7/7] Update 2023-http-gateways-recap.md --- src/_blog/2023-http-gateways-recap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_blog/2023-http-gateways-recap.md b/src/_blog/2023-http-gateways-recap.md index 771f93a2..dba079e2 100644 --- a/src/_blog/2023-http-gateways-recap.md +++ b/src/_blog/2023-http-gateways-recap.md @@ -2,7 +2,7 @@ title: 'Recap: HTTP Gateways (þing 2023)' description: 'A recap of the new HTTP Gateways track including summaries, links, and videos.' author: Will Scott -date: 2023-05-25 +date: 2023-05-30 permalink: '/2023-http-gateways-recap/' header_image: '/http-gateways-recap.jpg' tags: