50 Shades of Decentralization

ETHCC 6 · July 2023 · 24:22

Eugene Aseev examines the reliance of web3 applications on centralized infrastructure at EthCC[6]. The speaker considers the role that infrastructure plays in getting an initial product built, then asks how applications can move toward a more robust and decentralized foundation.

Speakers

Topics

From ETHCC 6, hosted by Ethereum France.

Transcript

[Music] thank you hi lovely people who survived until the end of the day end of the conference last talk for today so I will try to be as long as possible to keep you in this building so that you cannot party today so my talk he has very corny name it's called Fifty Shades of decentralization I will talk a bit more about why decentralization matters and why we are all over simplifying this term and just saying okay this stuff is centralized so this stuff is decentralized but before we go into it a couple of minutes on

chain stack we're the leading infrastructure provider we're providing stuff like rpcs data apis subgraphs soon more like storage and other other Dev tools we have some notable names as customers such as dexes like one inch orders wallets such as trust wallets Bridges Oracle so lots of interesting people we work with and we're very happy about working with them and they enjoy um on okay so there's a very cool report

from World Bank about decentralization and like definitions and different layers of decentralization um quote from the report that said that thank you it's very complex concept and it Embraces a lot of different you know topics and subjects and and that basically the decentralization transfer of authority of responsibility for certain functions and the main idea that is complex multi-facing Concepts and we tend to forget about this one we talk about you know software or like protocols and we'll say okay this protocol is decentralized this tool is

centralized or decentralized um and forgetting about the fact that it's multi-layered multifaceted so this is again a piece of that report that basically you know splits in into different functions um and like what type of decentralization we have um so in uh you know in in a world organization decentralization there is like political decentralization administrative fiscal Market decentralization they all work on the different levels and we all need to look into each of these kind of function separately and then the most important idea that the balance of centralization and decentralization is important because

certain functions uh not not necessarily needed to be you know decentralized in some cases as well so I tried to map this um you know the slide onto a web three Platforms in general and like try to map them to our you know terms that we usually have so basically political decentralization becomes governance when we like talking about governance there was just great talk just half an hour ago here about governance and like whether voting is a good type of you know uh decentralized governance or not so this important technology decentralization in our like web3 platforms a lot of different layers of things that can be decentralized or decentralized fiscal like we should take

care about incentives whether all incentives are you know concentrated in one party hands or it's properly you know decentralized and they're like long tail of people who are incentivized to participate in a web tree you know platform or protocol and finally there is Market decentralization we have like one player providing certain solution or you have like 10 players or 100 players of course you know competition is always you know better for everybody so it's also important like how uh how many how many options do you have generally on the market um so because we are an infrastructure platform we are providing apis I wanted to provide you know such breakdown uh on like what what we uh you know how how we

basically separate different layers on a technological um um part in particular and like break down into different layers of our you know technological stack and show like what can be uh what can be centralized what can be distributed what can be decentralized and such and such right so it's a of course like a little bit oversimplified view on the you know API stack that companies like you know chain stack Alchemy and fura and quick node you know pocket Network and many others have and pretty much it's um almost the same stack but there are a lot of nuances on each layer so this is an oversimplified representation it all

starts from application if you're a developer developer you use like web3.js or Foundry or any other tools and basically this is how you access the blockchain right for read and write then there is service Gateway that you use to access they are also called endpoints so when you you know insert a URL in your tool this is basically how you access the blockchain right then there is middleware and different providers different vendors have different type of middleware some have caching some some don't have caching all type of you know reverse proxies there are like wide variety of them load balancing no load balancing so there are a lot of nuances after you actually access the Gateway so then there are blockchain nodes there are certain degree of decentralization

there as well because there are multiple clients for instance for ethereum and it's important to you know know whether a vendor provider is running one client or two clients or five clients or different and switching between them and like having the variety of if one client goes down can you like switch over to other one as well then there is lower level of protocols like different like libraries and and sdks to build blockchain protocols like tender mint lip2p then there is like you know traditional internet protocols like tcpip DNS and such and finally there is like compute and storage and there are different types of you know um platforms that you can choose starting from experimental to cloud and others and of course there's a variety there

and also a certain degree of like how decentralized your stack with regards to the hardware uh compute and storage in particular so I I try to build a few you know case studies to show like the state of the art and like what's what's basically happening in uh in the ecosystem to show like what what is you know what is decentralized what is distributed what is centralized so let's say let's take inferior as the most you know common example of an API provider in the space that everybody tend to hate nowadays because of certain things that they also have in the stack that are pretty decentralized right and they are working on it which is good news they have inferior decentralized initiative and they are building a decentralized

network of uh you know operators like inferior themselves like us and many other participants in the ecosystem to help basically reduce the you know centralization point so what's bad about inferior today let's say uh so the red uh pieces that are completely centralized right so let's say service gateways uh they are basically owned by infuria and they are hosted in the same Cloud which say that bless middleware is very proprietary so it's not very interoperable you cannot Port it it's not open source so it's pretty decentralized if let's say you know something happens with senior developers and infuria maybe some people do not know how to operate this middleware and

so on and so forth it's pretty decentralized blockchain nodes I don't think there is much variety of you know blockchain clients that they run as far as I am concerned they run like get and then compute and storage again it's pretty much like AWS hosted so if AWS USC goes down usually interior goes down together with um with it as well um another example is chain stack there is certain Improvement there it's not all green as you see so let's say service gateways we host in like six different uh Cloud providers 12 different data centers um so it's pretty Diversified it's definitely not decentralized because we still you know control all this

infrastructure uh middleware we try to be as compatible as possible with like the the tooling and the you know node stack so we try not to add extra middleware on top of the nodes we try to provide like vanilla apis that note expose uh we try not to you know [Music] um Fork node software and let's say add more you know stuff on top of it so we try to be as compatible as possible with regards to software running which which includes nodes but also like uh you know the graph indexers or any other you know products that we build on top for blockchain nodes we run a bunch of clients for different services including gath ergo nethermind uh we're looking into wrath that is that is buzzing at

this event as well and they just like released a bunch of alpha versions uh that is pretty cool uh client as well compute and storage again uh we run like in different um uh Cloud hosting providers and uh we have a bunch of data centers that if that can be you know load balanced between each other as well and one of the services that we released recently is uh Global elastic nodes which is basically load balance nodes across all continents that you can access and if something goes down there will be an automatic fallback on other locations another example pocket network if somebody know what pocket network is they basically um you know try to pitch themselves as a decentralized API

provider the trick is that there are no decentralized API provider as of today um and it's important also to understand that um having said that they're working on you know further decentralization of the protocol however if you see in Twitter then you know pocket Network says okay we're decentralized it's important to understand the nuances as well uh so let's let's dig into it a bit basically the idea of pocket network is that they have this concept of you know relay nodes that are basically servicing the requests on the on the network as well as blockchain notes of the pocket protocol itself that is basically doing the relaying all right so any participant in the network should run pocket node as well as relay nodes to be able to serve service the protocol with

uh with API and there are a lot of participants in the network work hence there are a lot of blockchain nodes of pocket protocol as well as relay nodes that this participants plug in into the you know core software so that they can service the network so blockchain nodes pretty decentralized I would say because they basically run like thousands of different nodes by many many different participants blockchain blockchain Protocols are pretty decentralized compute and storage is pretty decentralized because people are running on multiple different platforms clouds they even use like you know other apis and service providers

like chain stack or any other so it's pretty pretty Diversified now the problem here is and why is it not a like truly decentralized API provider because the service Gateway is today basically very centralized and if you go and use pocket you will go to pocket portal and pocket portal is something that is you know managed by pocket Inc which is basically a pre-decentralized entity which is managing the portal and basically all the relays that you send to pocket Network which is on the back end is pretty decentralized are going through one single entry point so basically there is sort of as of today there is very you know small um you know footprint on the highest

levels of like service gateways as well as middleware because they're all centralized not open source and if the if the you know the portal goes down all the blockchain nodes are operating under the hood but basically it's it's down because the the portal doesn't work um they are having an initiative now to basically have multiple gateways hosted by multiple entities uh chain stack will be the first entity also to host a pocket Gateway so that the network will become more decentralized and more participants will host the gateways but it's important to understand that at the moment let's say the network is not extremely decentralized from the from the top level and we've seen quite a lot

of downtime because because managing this kind of you know gateways is not an easy Endeavor as well um there are other considerations about you know centralization and decentralization of such services uh let's say my personal opinion that decentralized apis are cool and they are good for you know Baseline use cases for instance like for metamask when customers of metamask they don't have any particular you know custom requirements it's pretty generic API so I think it's perfect match like such networks like pocket and like future like in fewer decentralized network is amazing for this kind of use case however you have a lot of interesting you know custom use cases of different

customers that want to do this so that they want to have certain you know service in this location that location they want to host it in their own cloud they want like particular you know tracers to be enabled and so on and so forth we as an API provider for like with like five years experience we've seen a lot of different you know requests so like what are the you know value-added tools Services you can provide do you provide also just nodes or do you also provide some other things like for instance in our cases like subgraphs or date API eyes or like storage is important because like for customers they want to access you know all the dev tools ideally from one platform and not just have like 10 different platforms with different tools um customization is very important like

all the advice like power users they ultimately need some sort of customization like custom timeouts for certain requests because they take too long because they like try to you know Trace very complex transactions and then you cannot really like customize stuff on a decentralized network because it's I mean who do you go to to you know um customize it uh decentralized Network API doesn't have a customer support by Design because it's a decentralized network so there's no customer support and as we see again customer support is super important because ultimately we're not just all robots you know talking to each other with like child GPT but where people want to communicate to each other and we want to have like people answering our requests and so on and so forth like for this the best example I

have is like internet which is pretty is centralized by Design and like isps or like you know internet providers and there are like tens of thousands of them across the world and basically they're all providing you different you know access to Internet which is a decentralized network and they all give you different pricing they will give you different you know like slas they will give you different uh type of support uh you'll you know like the logo of the SP you don't like the logo SP you can choose right and ultimately get access to a decentralized network so I think that's a good approach the right approach I can always call the guy from the technical support and say that my Internet is slow and I will get the response most of the times and so on and so forth right so how flexible is the

architecture let's say you build a decentralized network for rpcs and now okay today RPC is sort of de facto standard for accessing blockchains but what if like in two years there is a new thing that is like I don't know SQL API to the blockchains right and it becomes like the standard so like how do you change your network for this new standard if you build your own network and like your all protocol to you know service like Json RPC request for instance that's a big question of course you can build you know flexible architecture for that but again it's a very important point to consider if you're centralized in a sense or like uh what I call like more like distributed then you can adopt much faster right and you can you can cater these changes like

in probably weeks and like protocol changes will take you like months or sometimes years and so on so there's certain you know benefit to keep things uh simple and and centralized whenever you not ready like what what will come next SLA is important again like for infrastructure services this is kind of number one Northstar metric and like if your services are not reliable people will not use it regardless like the other aspects of it like cost and such so being reliable is very important how do you like commit to reliability on a decentralized network I think it's also very hard because basically your network is operated by usually a non-professional participants so how do you basically commit to certain slas for

your customers what is the SLA agreement like what if you break SLA like who will pay you credits or like you know cash back for the services that you didn't receive because the network was down and so on so forth it's a lot of important questions uh and like what are the ways to pay for the services when we're dealing with like decentralized networks usually we have some examples already in place like the graph and pocket Network and bunch of others it's pretty you know because the of the net of the token appreciation usually the payments should be made by tokens either by staking tokens in some way or another or like paying through like the actual token and so on and so forth which is usually pretty cumbersome for people and of course it's a solvable problem by you

know just some Auto conversion from you know like stable coins maybe or like some payment gateways that will get your you know other currencies or maybe even Fiat and then pay for the services in the decentralized networks but people are lazy that's just the facts so they want to you know pay in the easiest way possible so let's say for us we support like Fiat credit cards invoices crypto it's all self-service so you can basically choose like what what what is the way for you for for payment it's kind of funny but we have people paying in Dodge Coin for apis I just I don't know why but like people are really paying in Dodge Coin um which is quite funny I think so there are a lot of you know interesting non-technical considerations of like this kind of

services and Platforms in web 3 and I think it's important again I think I I see a lot of value in like truly completely decentralized platforms um but I don't think they cover 100 of use cases in this x system which is pretty big and complex so it's important to understand the nuances of like what what is centralized what is decentralized and not just say Okay this XYZ is centralized XYZ is decentralized that was my my message to understand the nuances and to you know critically assess what people say which also applies to all sorts of infrastructure like blockchains and you know centralized decentralized sequencers all this kind of stuff do like Oracle

systems to Bridges and all this kind of stuff so whenever people say Okay XYZ is decentralized it's better to you know usually it's print it's written in the docs but nobody goes to the docs so it's like you can actually like figure out that all these all these layers like in API you know provider example you can read all this usually in the docs and it's pretty obvious or you can like you know Trace using like command line a couple of command line commands but people are again lazy so nobody's doing this so this kind of education I think it's important to um for people to realize like okay what there are more layers and there are more considerations of just like centralization versus decentralization sorry I couldn't take you for too long

so uh Distributing system yes so you use a couple of times the words uh decentralized and distributed so what is your definition of both yeah I think it's a great question in my I think you can look at it from different perspective but my own understanding is that decentralized system is the one that is not controlled by an entity and distributed system can be easily controlled by one entity but the components of the system should not be concentrated in let's say one data center or one developer should not know everything that is happening in the system so basically that you have

different you know controls and like entities not necessarily entities but like different entities hosting Your solution for instance and such and such but the governance of this can be completely centralized but the components are distributed so that's what I call this group thank you I I you said uh in fryer he's having like a new uh initiative like other you know bringing like a decentralized RPC network uh how it compared with uh with pocket Network because they are like competing in in a way of bringing like two uh similar infra no so in fact there

is even more competition now for this in this particular area so there is pocket Network which is like on OG protocol uh honestly pretty poorly designed but the guys were like very you know Brave to start doing it and I I feel a lot of respect and we participated in Pocket from the early days but the design is pretty bad they're now improving it over time but it took many years uh infuri is trying to do this as well um it's uh it's not happening as fast as we would expect so there's a lot of you know thinking in the process and there is not that many people who are involved there is another project called lava network if you're Keen to look into it it's pretty cool as well well they are sort of the first project that took uh this like service Gateway uh like

decentralization in consideration because like the the problem with pocket for instance is that uxs you pocket through the you know the the portal which is uh centralized you know entry point so what lava does which is interesting I think is that they say okay you can access our Network through the centralized endpoint but also if you don't want you can use our SDK and our SDK will basically do the node selection for you and and it will happen on the client side so I think that if if we really need like decentralized apis or PCS the node the endpoint selection should happen on the client side because otherwise you will always hit some sort of you know hostname whatever like IP which is anyway hosted by somebody so

there are ways to do it today already like libraries like ethers JS they have pretty cool like providers uh where you basically can have a consensus of nodes and you can insert like five endpoints and it will just you know compare the results from Mission points and if there's a quorum of like two out of three uh which is I think pretty cool uh probably quite expensive if you run multiple providers and you do the same request all of them but you can do it if you want you can already have some sort of you know decentralized RPC and build in your dap by using libraries like ethers for instance that allow you to do this like fallback provider kind of thing but I think uh in general if you want to you know have a complete you know decentralized view we should not hit the you know the end points and we

should rather like access the network through some you know SDK which will be smart enough to you know select the endpoint for you and this endpoint should be provided by multiple different you know node operators and use the question thank you guys [Music]