Fixing Web3 Privacy with HOPR Sebastian Buergel; Lukas Pohanka; Qianchen Yu
Ethereum Denver·Sun, Oct 9, 2022, 12:00 AM
Speaker
Transcript
all right thank you very much uh so um i'm from hopper uh we're a small startup from switzerland we're working on uh fixing uh not just web3 privacy but also uh web web 2 privacy with something called hopper and so for those of you who have never heard about hopper were a decentralized network which preserves privacy and metadata privacy more importantly but speaking about network it's uh not just like it's not like a blockchain network we're more like a computer network so we're operating sort of like on layer zero so to say so just to give you an idea what what problem we're trying to solve with hopper and that's a problem that you probably see every day while you're communicating with basically any any other party so being that an rpc provider for example or just a website or anything you're making basically a direct connection to that destination server or something and that means that uh whatever information you give you the you give them uh with that they also get for example your ip address or your uh additional metadata so for example when you're talking to an rpc provider when you're like making a meta mask and a transaction using metamask the rpc provider not knows your wallet address of course but as well it also knows your ip address right as this brings a privacy problem because that means that your wallet could be linked to your ip address and that that means that basically your on-chain activity could therefore be be linked to your off-chain activity so if that provider is malicious they could they could use your metadata to basically discover your trading activities do an mvv or or sorts of nasty stuff so the way that hopper is trying to tackle this problem is very similar to something called tor if you heard about it you've probably heard about tor network right so as you know there's there's like a set of nodes running in the in the in the internet run by individuals and these are voluntarily running nodes and these act as a relays so basically instead of communicating directly with your rpc provider or metamask you communicate through uh a note and that's pretty similar to what hopper does right we there's there's a bunch of nodes running in the internet and the communication is relayed through the hopper nodes before it reaches the intended destination being that a server or an rpc provider but what makes us really uh different from tor for example or other mixnets is that we also to this transport layer bring up an additional so-called uh payment layer so it's not just that the relayers are relaying the information for you they're also uh getting uh rewarded for that fact that they're relaying information so so to say that if you want to have privacy you basically pay the relayers to relay your information towards the destination so basically we have you have like two addresses one is the transport layer address we call that a hopper address and then you have like a a payment player address and that's basically the wallet address of each node right so uh when a hopper communicates and send messages over you also like issuing tickets for the relayers and if the information is relayed to the destination and you got to prove that that the packet has reached the destination you allow these three layers to redeem the rewards for sending that information over and for that we have uh an innovative or or uh or a novel addition to this uh that's a proof of relay basically and that means that there's a cryptographic proof that the data you've sent and the node have relayed them there's a cryptographic proof that they actually did it that they did relay the information and the destination has received it and therefore they can redeem the tickets for the reward there are some interesting details about how all this works and and and technical details in something we call the yellow paper so uh there's all the crypto cryptography that's involved in it you can you can check check that out so uh most importantly we'll be doing a short live demo here today and that will be where we're going to set up a small local network on my computer there's going to be consisting of of couple nodes that all nodes will be connected and we'll be able to relay information basically between the nodes um if you you can also run it yourself but given the fact that the wi-fi is is not really excellent here i would say so uh we'll will not be doing like a good part which is like our main uh development setup that you might use but i'll be like doing a local demo but the difference is really knowledgeable the steps are pretty much the same so you can go ahead and visit our mono repo on github which basically contains the entire source code of hopper you can use the latest release code named lisbon so you can check out the lisbon release branch and then you can launch basically gitbot fairly easy by just if you have an extension in your browser you can click on and get basically starts and set up all the environment for you or you can just pre-paint gitpod.io in front of the address and basically works the same way i also have uh put up the instructions that i'll be following here so uh you can check them out on tinyurl.com hello hopper that basically shows everything that i'll be doing here um so just for an illustration there is the the local uh development topology that's being set up in your in your git pod and also locally in my computer so we have like set of five nodes as i said they're like uh interconnected to one another on the transport layer but also payment channels are set up between the nodes on the payment layer so and all the nodes are funded and there's stake on the payment channels so basically anyone can talk to anyone in this network right so let me just quickly show the demo so if you if you uh run your git pod you basically have something like this i have a local setup here but in git pod will be pretty much the same you're going to see that you have notes running five nodes and as i said because we'll be communicating with these nodes so if you're a developer i'm going to use hopper to communicate with nodes there's uh several different ways i could do that the first way would be you could use the rest api to talk to the node and say okay i want to send information over to this node or send over information to the other node in the network and the second way would be a websocket endpoint which we will also show a little bit here and most importantly the rest api to talk to the node is is well documented we have a swagger interface running on uh each note locally so you can if you see this link you can put it in your browser and you get uh the entire api documentation you see we have a lot of a bunch of endpoints you could see that for example you could see the addresses the open channels you can send messages it's also possible to like try this out like interactively here and because the rest api is protected with an api token you may put uh the api token here don't worry if you don't see uh letters everything is also in our documentation so that's the api token i set it up now i can basically interactively call for example the information about the addresses right now i'm talking to note 1 in this infrastructure so let me just try this out i probably put the wrong token there so let me just put it again so let's yeah so if i run this command right right now with the correct token uh you can see that there is the native address which corresponds to the wallet of the note and the hopper address which is like the transport layer address you use for sending information over so we can try actually try out some other commands uh as you can see in in the swagger interface you also have a curl command which you could use and run in your local setup so if i just take it and copy paste this command and run it over in my local setup i basically get the same information i got although in not that fancy format as i would get in swagger on that tiny url slash hopper hello hopper uh i've prepared a set of different commands that we could call interactively as a developer you could for example call this to show the balances on the node to see like uh what's the status of of tokens and a native currency in the node's wallet another important command that you could use is to show the channels that are open and and towards your note and from your note and this is going to be particularly useful for those that uh who will be doing bounties with us because we have also bounties here at denver and one bounty is actually involving uh channels like payment channels and their visualization so be sure to check them out check these bounties out because uh i think that's one of the easiest ones here at eat denver so and finally uh what's probably the most interesting thing you could uh call an api endpoint which is going to send messages over to a different node in the network so you can see that this api endpoint has pretty simple uh param have pretty simple parameters one of them is the actual body of the message and the second one is the recipient of the message that being the the hopper address for uh for the for the target note and there's also an optional argument called path where you could really manually specify that all the hops on the way towards the destination and i said it's an it's an optional argument it means that if you don't specify it hopper will actually select a random path which is like feasible for for the message to go through so we can try this out if i go back to the demo commands here i have basically a curl command which sends a message from note 1 to note 2 but it goes through the network so there is a sequence of three hops before it actually reaches node 2. so let me just uh show it in the command window but before i i show this uh i can actually uh connect to the other end point uh the websocket endpoint of notes one and o2 so that we actually see that the message has gone through so uh the one on the left is note number one the on the right is no number two so if i just copy paste the command here i see that node number two has received a message what i can also do i can do the opposite right send message back from note i'll be talking to note 2 and tell hey i want to send message to note one so uh just copy paste it yeah so there is uh there's like a very simple example of how it could use your local environment also what's important we have a fairly complete documentation on how you could use uh the hopper as a platform when you think like about integrating hopper into your application to bring privacy to your uh communication i recommend to see the developer section here we also have live demo examples so including source code and everything so what we can actually do we can use our local setup which we have and for example take the boomerang app which is pretty simple example but you can learn a lot from this example on how to use offer so basically you supply the websocket and point address http endpoint address the token the same one i specified in the swagger you can send message through the network all the way back to yourself that's a very simple example but uh from the source code you could you could see a lot of useful stuff you could use so i can do that right now so when i scroll all the way up i can see for example take note number one i take its rest api endpoint address um put it right here uh i'll take the websocket endpoint address of node number one put it right here and finally i specify the security token so that's still the same one and yeah then i can put in a message and basically send it back to myself so i see that the message has been received and so for that you you could have the entire source code we also have different examples like for example rock paper scissors uh application where you have like set of three nodes are basically playing the rock paper scissors game so it's also including the source code yeah uh so that's some playground you could use for uh for trying out hopper and developing with hopper as i said we have oops we have uh useful okay this doesn't work okay i don't know what happened it's basic is probably because of of the of the second display i have here all right so uh let's show you the final slide uh if you're interested in hopper uh we also have open positions so we're currently hiring so you can check this out we also as i said have bounties here at east denver so be sure to check them out and most importantly the documentations page where we have all the recommendations that you saw also including all the steps i was doing here are uh everything is documented on the page and because you probably weren't able to keep up with with what i did here or maybe git pod hasn't even set up for you because of the connection you could open up the uh the video which basically shows everything what i what i presented here is shown in the same video so you could just play through it and and see how how things work out yes so that's pretty much it uh thank you for attention and happy to take any questions yep thank you so much we have five
Automatic transcript — names and jargon may be misspelled.