 Hi everyone Hi everyone, so I'm gonna present with my colleague Andreas ring. So ring. It's a fully distributed communication platform So it's it's a fully distributed communication platform using a few different distributed system to work And so we're gonna present to what ring is how it works and how do we implemented those different different distributed system to design ring Okay, sorry for the slides in French but Yeah, so this is basically the different kind of distributed system you can have so the classic kind of Information system will be a centralized system So you will have everything on a single server or a single Yeah computer or node That will have all information from everybody and that will authenticate different users. That's so that's the classic Forum of different web services Proprietary services, but also many free software services are hosted on a single server or by a single organization The federated system is what we use with emails. So with emails, we have different servers those servers can communicate between each other and every user has a server Is registered on a given server. So you send the email to the server the server will communicate with other servers and Then this other server will give the email to the other end user And ring is fully distributed. So there's no Federation concept. It's really fully peer-to-peer. So ring is based on Certificate chain. So when you create a new ring account You will basically generate a new perise key pair So this is the base of Identity management in ring. So just as an interjection Previously previous versions of ring because this is a project that's been in development for quite some time and Recently a major advancement has been the changing from the representation of your user name as the public key To a username that's bound to a public key now that's being stored using blockchain and distributed across the DHT. So All in a minute, I'll give a demonstration of the creation of a ring account and your what we call a ring ID is essentially your your public key and This is now being represented by username. So much easier to use the software in terms of an end user experience You can look up a name rather than Trying to paste your your long string of characters into a Paste bin or something like that is what we used to do We're we implemented it originally a QR QR code system So that if you're using Android with a camera or some device in the camera, you can take a picture of the QR code and convert it But it's now recently in the past year released just before the beginning of 2017 was the release of the beta 2 which includes that functionality and as well Another major advancement which has been the ability to add multiple devices and to chain multiple devices into a master account so for people who Telecommunication systems on multiple devices you can now use the same account on more than one device Using you know the DHT as well. So and keeping everything secure And I'll do a demonstration of the Wait, so So Andres is gonna show on this laptop When you create a new a new ring account How it goes so we try to make ring as easy as possible to use for end users So our goal is to make ring just as easy as to use as any other Proprietary communication software So the absence of some towards server should be as transparent as possible for the user So the user shouldn't care about the existence or not of a central server as much as possible Except of course poor users who understand the implications of all this So as you can see basically if you just generate a Key pair will get a public a public key that will be complex And you will not be able to remember that key that public key to give to other people So if you are at some club and you want to give to some girl your identity and ring You will not be able to give this long ID. It's it's not gonna be possible But you will maybe you might be able to give just a Username you're registered. So I'm I'm Bob and ring, you know this kind of thing Bob's taken by the way So With lol one through like hundred for testing purposes So we implemented username registration on the blockchain To be able to register usernames with without using any central server So for this we used we choose the ethereum technology to have as much flexibility as possible Compared to other blockchain based name registration systems So we use ethereum In a complimentary Complementary with the classic DHT that we use to find other peers on ring So when you use your ring ID to contact someone It will use the DHT distributed system similar to be turned but fully encrypted to find other peers exchange the IP address with the other peer and then establish a peer-to-peer TLS connection with the order peer That you found on the over the DHT. So now with ethereum you will first If you know the the name of the peer you want to contact you will first do a look up on the DHT so it's a free instantaneous operation on the blockchain and You will get the ring ID Corresponding to this user name and then use this ring ID Just as you will you know use any an IP address That you result from a DNS address online So the ethereum registry is basically just a Name ring ID So it's keepers Registry is very light But it's still not light enough to be on every single ring device. So every single ring Node is a DHT node participates give us a resources for other peers to reach each other, but The blockchain is too heavy The mining process is too easy to run on every ring node So the ring name server is a separate project from a ring. So when you install ring you don't have You know a block a blockchain node mining or anything But you can anybody can just clone the source code of the ring name server and participate to the existing blockchain So how do people how do people find each other? On ring they use the open DHT Network open DHT network is a distributed hash table that we created that software Linux to meet the needs of ring so open DHT It's academia like Who here knows what are distributed dash tables? Okay, okay, good good So pen DHT it's a distributed in sudden implementation of a distributed dash table that allows to store Not just IP addresses like bitter end But any kind of data and we use it to store encrypted IP addresses as I explained So when you reach people with ring you will put your encrypted IP address and the other person will reply on the DHT. I will show you but if you already know Distributed hash tables this world you will mostly already know this algorithm So this is the cadmilia algorithm every node knows Some parts of the network the nodes that are the closest to the node own ID and you will then ask other nodes iteratively You will ask the closest node that you know To the target ID until you reach The target ID and the node will answer you with the list of nodes that are the closest to the target ID So that similar to the technology used by bitter end to find peers Yeah, so we use open DHT in combination in combination with the Ethereum blockchain based name registration and Yeah, we use them to create This fully distributed the network. I think do we have time? Okay, we might do a demo Yeah, well first of all, I'll just go through the account creation. It's pretty simple, but yeah You obviously people at the start of the implementation of this the Ethereum blockchain Name service giving people the option to not do such a thing So you don't really have to register but by default. It's the best idea so I'll find something that Create an account here So So, yeah, this would be a local name. I'll create a ring account. I'll register it You can put that on the screen Yeah, there's no HDMI cable But essentially I'm just writing in a couple fields the name that I'm gonna keep you locally and the name that I'm going to try to register onto the blockchain and Then I'll supply a password It's simple So compared to the DHT used in biturant in ring we implemented a new feature that is here can listen So you can ask other nodes to be informed of a change of value at some given hash So when you will be called for an incoming call, for instance, you won't have to do some kind of pooling every second You will be there you will receive a network packet from other nodes saying oh, there's a new Value and then you will see how it's someone trying to call me We try to reduce as much as possible the impact of the DHT network on mobile devices because the DHT network Requires to keep track of other nodes online send and receive packets Continuously so it's pretty bad for the battery on mobile devices, but we have a lot of internet projects to Try to have like proxy nodes or this kind of things To reduce the load on mobile devices in terms of battery and the data conception Do you have any questions about the distributed design Sorry Oh, yeah, it's not implemented yet, but we think about it for a long time To have nodes registering themselves on the open DHT in trucks network itself Yeah So maybe like the mobile the desktop version of ring might might enable by default Allowing to proxy all their nodes this kind of thing Yeah, the reason is that on the DHT network there's no way to be sure that no one else will register the same name You know, so there's no a cryptographic certainty that you will be the only person to have this name Yeah, exactly, it's it's to preserve the the security of ring because otherwise some other person could register a name, so when you are called and This this other person will receive the call and then this other person can act as an attacker as somebody in the middle or anything Yeah, exactly So names are important, right? Do you do anything to check whether I should have access to the names or anything stop me Registering a software for Linux or real Donald Trump or Scarlett Johansson Yeah, you can go to the google.com and register a new Google account with any name that is not currently registered They can fix that because they have they have terms of license in terms of use Yeah, so we design the blockchain so that it has a cost to register a name When you want to do when you want to perform a transaction on the blockchain There is a transaction cost and there is also a cost that can be defined in the contract That can be arbitrary So We designed the thing so that it's it should cost you too much to register Every name that you register in the blockchain has a cost to you So if you want to register one million names We'll have to do I only want three important ones. I want South Africa Linux real Donald Trump and Scarlett Johansson That's gonna be fairly cheap. Yeah, so just to pick three everyone Those are probably But are you talking about the the fact that like somebody might be able to register a controversial name or something Which really shouldn't belong to them and will be expected because real names mean something, right? Well, that's That's a question. I don't really personally have an answer for that I mean because if I want to if I want to register myself as somebody else Yeah, I could do that on a lot of things I guess you're saying that Google would prevent you from doing that but register yourself as the real name of somebody else If they if they didn't stop you they have I'm pretty sure ways of fixing it as do Twitter and Facebook Okay They have the power to do that, but Most way most web services will allow you to register any name or you want it's not the registering It's the it's the sorting it afterwards But it's centralized much Well, the idea behind the name registration service is that the first person to register a name will have this name On the service, but this could evolve in the future, but as of now, this is the case of complete catastrophe I guess the the entire the blockchain be annihilated and restarted Resulting in everybody losing their registered names Horrible, but I haven't really encountered anything like any situations that I would think Well, but there is It might be similar to the there was issues with like the DAO on the blockchain There was a bug in their code that allowed someone to steal a lot of money But since it was written on the blockchain, nobody could do anything about it So the community decided to move to another blockchain that fixed this issue So if there was a major issue with the number of destruction service We might decide the world ring community to move to some new directory that will have new rules to fix the issues That were encultured in previous versions of the blockchain and it could be very well done to Import most of the names that were already there in the previous blockchain or this kind of thing I mean that I guess that is a concern. There's other Issues that we're working on in the upcoming year and implementing like being able to change your password, which is a A core feature that people need So if you forget your password people will mention this and we have few ideas for how to implement that and it will probably come out in the next year Yeah Yes, absolutely, so the Linux version has a D bus interface so you can Control it with any sort of thing that has a D bus interface. We have Python scripts ourselves to make automatic tests on that Also the yeah mostly and the just the core ring can be built as a library and you can link her on it intended for purposes People used to design clients However, like Android does not use the middle where somebody built the client directly on top of the data For instance the version that I've spent a lot of time developing which is the you universal windows Version of the client that also does not use the middleware. So we just developed it right on top of the then So pretty much anybody could go about making their own client interface Okay, last question short because we are No, because it's UDP based and also it's a real-time communication and Tor is not very well suited for real-time communications