The Internet's User Table
LisCon 2021 · 20 Oct 2021 · 13:33
Joel Thorstensson, co-founder of 3Box Labs and a creator of Ceramic, speaks at LisCon 2021 in Lisbon. The talk, titled The Internet's User Table, concerns user data and identity on the internet.
Speakers
Topics
From LisCon 2021, hosted by LisCon.
Transcript
i'm joel i'm a co-founder of ceramic network and today i'm going to talk a little bit about kind of some of the learnings i've had through the last kind of five six years as i've been working on kind of identity and user-centric data and really how we can work together as the web3 community to out-compete kind of uh the big web to companies that are really kind of destroying the the information ecology right today so imagine you're building a web 2 application and you want to make that kind of feature rich you want to make it interactive for users and maybe they have like comments and they can follow each other and stuff
you need to basically store a bunch of data about the users and so the way you do that in the kind of traditional web 2 sense is that you create something called a user table and a user table is this really simple database that lives on your back end where your each user has like an identifier you might store a password hash you can authenticate the user and some other information like username and whatnot and so this is great this allows the application to grow and like gather network effects by onboarding more users but there's of course a problem that most of us probably know about and that's each user or sorry each each application kind of build their own silo of data and
they build their own network effects it's like separate from each other and as that game kind of plays out in the way through world we end up with something like this where there's a bunch of huge companies that have like huge user tables with a bunch of data about their users and they're really starting to just extract as much value from the users as possible and that's really hurting the users in various ways but we really want to build something that's more like this kind of more like a solar punch vision of users controlling their data it's being openly accessible by each application and it's kind of modular so we can like move around and put different data pieces
together so let's look at like how dapps are doing today because with ethereum aren't we really able to do this already well most most apps that have more feature bridge applications with user interaction stuff like that still have a back end today they have their own separate user table and we still have the silos the smart contracts are fully kind of public and shareable and that's really what we want but that only kind of right now works for financial stuff [Music] and while you still authenticate with the user's wallet the data kind of still gets locked into the to the different applications and we still get these
silos so we need to do something better we need like a shared global user table that we all in web 3 can collaborate on and work together to create shared kind of network effects and so we could imagine like a simple way to do this basically just like having an ethereum address and associating some data with it like a username and whatever we store in there but there are some problems with this and i'm going to go through some of them because this is like a very simplistic approach to this so one thing is if you just use like an ethereum address as like an identifier of a user then you run into trouble uh
if you have you might have want to interact in a governance form and you have some of your kind of you have a day-to-day wallet and you have a hardware wallet where you keep kind of your assets but you don't want to like every time you interact in the governance forum use your your hardware wallet and like authenticate that so you kind of want to put those two addresses together into one one kind of account and you might also have different accounts and different wallets on like ethereum nets on layer twos maybe on like different blockchains and now if you have like this global user table but it's
siloed in like ethereum and then maybe pokedot and other things you end up with these silos anyway and not now it's not big companies that have the big silos it's the different blockchain platforms that become silo so we need to really create this this user table needs to have a unified identity where we can pull all of the different accounts that you have across different blockchains and layer twos into one kind of account another important aspect is we need to make this user data that's stored in the table anti-fragile and what that means is essentially if you have app a and not b and they both have a column and the table that's a name now app f1 might create a name that's
just a string an app2 might have an object that a name and a surname has two different properties now if users from application a go to application b they might break their content and vice versa if they go the other way like the adapt might break if they're expecting different types of data so that's something we need to deal with um and another thing if you think about the kind of traditional web 2 world you might have if you're building an app that relies on facebook data and uses the facebook api you're kind of reliant on that data the facebook keeps that like data around the api open and if they remove that your app is kind of screwed but in the web 3d ecosystem we can actually have the data be live on a
kind of sovereign network that where like you have censorship resistance so even if the application you're pulling data in from and relying on disappears the data you can expect that data to keep being around and so that's an important aspect as well for this kind of system and finally once we have this global shared user table we can start creating shared network effects and so what that means is essentially if i create my application and i create some nice data model that describes the data i'm storing in the table and i onboard like 10 000 users another is great for me but then becomes another application that um creates uh basically sees the data i've
created and finds it useful now that application can bootstrap their app with my 10 000 users maybe it's super successful so they onboard like another 100 000 users to use the same data model now i benefit from that because now i have access to another 100k users and we can kind of share network effects and once that starts growing enough uh we can actually start competing with these larger data silos and they're gonna have to like compete on on on the same level as we because we we have this kind of collaborative approach and this is kind of like i think really how we as a web 3 community can start to compete with
these big rep 2 big tech companies um right and so with the ceramic network we've been working on this type of problem for a while and we've created a framework to store data in this way called self id so self id is really kind of like a you can think of it again you can like think about it as a user table and here we have an id and we have a bunch of columns so the id is something called a did a decentralized identifier and it's really like an agnostic way of representing a cryptographic identifier and so that could be as you see on the top um
a an ethereum address did pth or that can be any blockchain address or you can have an nft where the current owner is the one that's allowed to update data we've also created an nfp method called 380 which essentially allows you to take your accounts and different blockchains and layer twos and pull those into one kind of unified identifier and then you can see the the columns here we have um names in the first column the second column is like some random metadata property of the user and column three we have some encrypted data so we see that we can have both kind of public and private encrypted data that's stored with the user and um each data is defined by a data model and
the data model has a unique identifier um as you can see like in the in the header of the each column here and so data models are created by developers and the reason we want a unique identifier is that we don't want that kind of competition we talked about before with a name being so if you have a column for a name that people expect different types of data in there um so here you can actually use a data model to remove that kind of anti-fragility all right so who actually then controls the the data that's in this table is it the developers that created the data model or how does it work so i think it's
important for this kind of large repository of user data to actually work and actually be not fall into some kind of system where application developers still can silo part of their data that the user is actually control of their whole row so the user's keys is can sign updates to each cell here so here this user can update its name you can update this metadata property you can update is private data and the user is also the one who decides which applications can write to these columns and which applications can read the encrypted data and this really allows us to have
a shared system where no application can kind of claim control over the data and if we look into what a data model is it's really kind of some metadata information like name and description maybe something else about a particular column in the table and it also includes a data schema this data scheme is really important for us to build this kind of composable data ecosystem because it basically specifies how what the data inside of this cell looks like and if someone tries to put some other type of data that's not compatible with the schema they will that will not be valid that won't work so now that actually solves the problem we're talking about before with kind of the
fragility of people writing different forms of data if i'm a developer i see data model 2 seems super useful then i know what the scheme of data i can always expect when i'm like retrieving and writing the data there and so with this kind of self-id framework we can really start building a user data commons that we can share all across web3 it's not locked into any blockchain ecosystem it's not locked into any application and i think this has some really interesting effects on how application developers and projects can provide value to users and how they can't provide kind of extraction extract
value from users so if you think about the the large companies of today like facebook and google they really use their repositories of data to just extract as much value from the users as possible and really use the data to manipulate the users to stay longer to buy more stuff and we've seen kind of some of the the drawbacks of that being that like it can create polarization if you have these news feeds that are algorithmically controlled but the optimization function is actually used driving profits for for the company but if we have this shared user data
commons that you don't have that problem because if i'm as a user uh can was using an application that's really extractive and like manipulates my data i have an incentive to just move to another application because the data is not locked into that the platform of that application it's just globally available on this shared table and so i can go to another application that doesn't kind of extract and manipulate me and so instead of having algorithms that optimize for the benefit of some company com corporation we can have algorithms and optimize for the values that are aligned with a
particular community you're in or i or optimized for yourself or yeah basically like groups of people that you care about um all right so um if you're interested in learning more and you can check out self-id which is where you can create your role in this user table and start kind of building out your identity if you want to build stuff and help kind of unsiloing all of humanity's data you can go to our blog or our documentation at ceramic.network all right thank you everyone