From 03dfffb685b7cc935758069275e4db1da7fba084 Mon Sep 17 00:00:00 2001 From: Vasco Santos Date: Fri, 5 Mar 2021 17:52:14 +0100 Subject: [PATCH 1/2] propose: browser nodes can connect to any node out of the box --- ...-can-connect-to-any-node-out-of-the-box.md | 120 ++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 proposals/browser-nodes-can-connect-to-any-node-out-of-the-box.md diff --git a/proposals/browser-nodes-can-connect-to-any-node-out-of-the-box.md b/proposals/browser-nodes-can-connect-to-any-node-out-of-the-box.md new file mode 100644 index 00000000..4d457859 --- /dev/null +++ b/proposals/browser-nodes-can-connect-to-any-node-out-of-the-box.md @@ -0,0 +1,120 @@ +# Browser nodes can connect to any node out of the box + +Authors: @vasco-santos + +Initial PR: TBD + + + + + +## Purpose & impact +#### Background & intent +_Describe the desired state of the world after this project? Why does that matter?_ + + +One of the key environments for the web3 is the browser. Browser nodes have several connectivity challenges that result from their environment, with the most relevant being: +- unable to listen for incoming dials; +- no support for TCP; +- security policies require dials with WSS and DNS addresses. + +Circuit relays have been used to work around these limitations. Browser nodes can establish a connection with them and bind to them to receive incoming dials. They can also be used to "translate" a connection from Websockets to TCP and consequently, enable browser nodes to dial GO nodes. + +##### Problem Statement + +One of the critical pieces in the puzzle is the lack of ability from browser nodes to connect with GO nodes out of the box (majority of the network). By default, GO nodes do not listen on Websockets, nor have DNS + SSL configured. In addition, GO nodes do not bind to relays out of the box. This creates a network fragmentations and results in problems creating pubsub overlay, getting IPNS records, among others. + +Having browser nodes to connect with go nodes out of the box essentially means one of: +- go nodes listen on webrtc by default + we can use limited relays to also negotiate webrtc conns + we deploy nodes that can act as limited relay and have dns + wss addresses (which means not all DHT servers will be capable of doing so out of the box) +- go nodes listen on websockets address by default + we find a solution for out of the box certificates for announcing dns+wss multiaddr + +#### Assumptions & hypotheses +_What must be true for this project to matter?_ + + +- Dapp developers want browser nodes to exchange pubsub messages across the public network +- Dapp developers want to find IPNS records on the network +- Dapp developers want to fetch content from GO nodes + +#### User workflow example +_How would a developer or user use this new capability?_ + + +#### Impact +_How would this directly contribute to web3 dev stack product-market fit?_ + + + +We had some really good discussions yesterday about the state of Pubsub/IPNS in each runtime environment + what are the gaps for building dapps on our stack out of the box. + +#### Leverage +_How much would nailing this project improve our knowledge and ability to execute future projects?_ + + + +#### Confidence +_How sure are we that this impact would be realized? Label from [this scale](https://medium.com/@nimay/inside-product-introduction-to-feature-priority-using-ice-impact-confidence-ease-and-gist-5180434e5b15)_. + + + + +## Project definition +#### Brief plan of attack + + + +#### What does done look like? +_What specific deliverables should completed to consider this project done?_ + +#### What does success look like? +_Success means impact. How will we know we did the right thing?_ + + + +#### Counterpoints & pre-mortem +_Why might this project be lower impact than expected? How could this project fail to complete, or fail to be successful?_ + +#### Alternatives +_How might this project’s intent be realized in other ways (other than this project proposal)? What other potential solutions can address the same need?_ + +#### Dependencies/prerequisites + + +#### Future opportunities + + +## Required resources + +#### Effort estimate + + +#### Roles / skills needed + From edd8f3184f7c75fd85fa69b91af986d6b512539b Mon Sep 17 00:00:00 2001 From: Vasco Santos Date: Mon, 15 Mar 2021 10:30:35 +0100 Subject: [PATCH 2/2] chore: cross reference PR Co-authored-by: Steve Loeppky --- .../browser-nodes-can-connect-to-any-node-out-of-the-box.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proposals/browser-nodes-can-connect-to-any-node-out-of-the-box.md b/proposals/browser-nodes-can-connect-to-any-node-out-of-the-box.md index 4d457859..c2050cff 100644 --- a/proposals/browser-nodes-can-connect-to-any-node-out-of-the-box.md +++ b/proposals/browser-nodes-can-connect-to-any-node-out-of-the-box.md @@ -2,7 +2,7 @@ Authors: @vasco-santos -Initial PR: TBD +Initial PR: https://github.com/protocol/web3-dev-team/pull/70