number 0
number 0
  • 22
  • 76 338
p2p chat, in rust, from scratch
Come copy paste with us! iroh.computer/docs/examples/gossip-chat
00:00 p2p chat demo
00:49 It's Rust. Don't freak out.
01:38 Install Rust Crash Course
02:19 Hello World, hello cargo
03:17 Editor & Directory Structure
04:01 Hello World main.rs overview
04:55 Adding first crates
06:03 Endpoint
07:09 Use statements & Attributes
07:39 Returning Result Values
08:00 Implicit Return Statements
08:23 Secret Keys
08:51 crates.io & docs.rs
09:52 Endpoint Setup
11:00 Gossip Protocol
13:03 What is gossip
14:53 Topics
16:32 Open & Join Roles
17:52 ? in rust
18:27 Broadcasting "sup?"
20:47 Subscribing to Gossip Events
23:44 Ignoring Local Events
24:59 Signaling
25:52 Tickets
26:54 Serde for serializing & deserializing
27:14 Cargo Crate Features
30:37 Peer Roles
31:25 Clap crate for building CLIs in rust
34:42 Roles, continued
36:03 Full Demo
36:57 Message Types
40:10 Conclusion?
41:33 Full Example
42:31 Conclusion, for real this time
มุมมอง: 4 427

วีดีโอ

A tour of iroh
มุมมอง 2.1K14 วันที่ผ่านมา
Here's the Dark-matter-level dense overview of iroh. This one's for the folks who want a conceptual overview of how things fit together. Docs version of this video: iroh.computer/docs/tour 00:00 intro 01:03 Endpoints 04:32 Node Identifiers 06:24 Relays 09:42 Discovery 13:00 The Accept Loop 13:56 Routers 14:44 Things iroh doesn't do 16:22 Recap
peer-2-peer, but it works
มุมมอง 4K21 วันที่ผ่านมา
iroh is peer-2-peer, but it works :) iroh.computer
Introducing iroh
มุมมอง 23K8 หลายเดือนก่อน
All these papers we've talking about? We put that research into open practice with iroh.computer. Come hang! iroh.computer/discord
40x less overhead! Rateless Invertible Bloom Filters - Part 3 of 3
มุมมอง 2K8 หลายเดือนก่อน
Practical Rateless Set Reconciliation by Lei Yang, Yossi Gilad, Mohammad Alizadeh: arxiv.org/abs/2402.02668 Part 3 in a 3 part series on bloom filters Chapters: 00:00 Nerd Shade 01:36 Set Reconciliation Overview 03:08 vs Invertible Bloom Filters 05:04 Design Goals 06:40 Ratelessness 08:42 Probability Mapping 12:20 Building a RIBLT 15:18 Reconciliation using RIBLT 19:30 Conclusion
Invertible Bloom Filters - Part 2 of 3
มุมมอง 1.7K9 หลายเดือนก่อน
Part 2 in a 3 part series working up to a new set reconciliation algorithm. "Invertible Bloom Lookup Tables" by Michael T. Goodrich, Michael Mitzenmacher arxiv.org/abs/1101.2245 Chapters: 0:00 Intro 01:31 IBLT Operations 02:42 Data Structure 03:44 Data an IBLT can Hold 04:45 Inserting Key-Value Pairs 06:36 Listing Filter Contents 11:51 Yo Dawg, I heard you liked IBLTS... 15:37 The catch 17:11 l...
Bloom Filters - Part 1 of 3
มุมมอง 4.2K9 หลายเดือนก่อน
Part 1 in a 3 part series working up to a new set reconciliation algorithm. "Space/time trade-offs in hash coding with allowable errors" by Burton H. Bloom dl.acm.org/doi/10.1145/362686.362692 Chapters: 00:00 Intro 00:31 What's a Bloom Filter 02:40 Building a Bloom Filter 04:02 Querying a Bloom Filter 05:28 Parameter Tuning 07:47 In Distributed Systems
BLAKE3 and bao deep dive
มุมมอง 3.1Kปีที่แล้ว
00:00 BLAKE3 hash function 01:55 how BLAKE3 works 04:52 BLAKE3 chunking examples 08:28 bao verified streaming 11:13 bao inline & outboard 11:52 bao encoding examples 15:56 outboard encoding 17:47 slice encoding 20:48 chunk groups 23:58 size proofs 27:01 size proofs and chunk groups 28:23 append only data & keeping post-order traversal
Move The Bytes Working Group meeting 8
มุมมอง 428ปีที่แล้ว
Move The Bytes Working Group meeting 8
Move the Bytes Working Group Meeting 7
มุมมอง 140ปีที่แล้ว
Move the Bytes Working Group Meeting 7
Kademlia, Explained
มุมมอง 22Kปีที่แล้ว
Let's tackle "Kademlia: A Peer-to-peer Information System Based on the XOR Metric" by Petar Maymounkov and David Mazières: www.scs.stanford.edu/~dm/home/papers/kpos.pdf Timestamps: 00:00 Kademlia DHT 00:37 DHT, why? 02:09 keyspaces 03:17 really big hash maps 04:41 a 4 bit DHT 05:39 computers in space 07:03 keyspace colocality & distance 08:04 The XOR operator 09:46 XOR for distance 12:35 routin...
Move the Bytes Working Group Meeting 6
มุมมอง 2792 ปีที่แล้ว
Move the Bytes Working Group Meeting 6
mapping peer to peer locality with latency & fancy geometry
มุมมอง 9692 ปีที่แล้ว
Papers: • OASIS: Anycast for any service: www.scs.stanford.edu/~dm/home/papers/freedman:oasis.pdf • Meridian: A Lightweight Network Location Service without Virtual Coordinates www.cs.cornell.edu/people/egs/meridian/meridian-talk-sigcomm05.pdf 00:00 Coral DSHT, maybe not 01:06 Mapping the entire internet as a service 02:41 Meridian: Network Location Service 04:02 Latency Rings 06:20 Distance Ca...
The other Kademlia
มุมมอง 3.9K2 ปีที่แล้ว
The other Kademlia
Move The Bytes Working Group Meeting 5
มุมมอง 2202 ปีที่แล้ว
Move The Bytes Working Group Meeting 5
let's replace bitswap with a two week old paper?
มุมมอง 2K2 ปีที่แล้ว
let's replace bitswap with a two week old paper?
Move The Bytes Working Group Meeting 4
มุมมอง 1822 ปีที่แล้ว
Move The Bytes Working Group Meeting 4
Move The Bytes Working Group Meeting 3
มุมมอง 1012 ปีที่แล้ว
Move The Bytes Working Group Meeting 3
Move The Bytes Working Group Meeting 2
มุมมอง 1192 ปีที่แล้ว
Move The Bytes Working Group Meeting 2
Move the Bytes Working Group Meeting 1
มุมมอง 5062 ปีที่แล้ว
Move the Bytes Working Group Meeting 1

ความคิดเห็น

  • @danial_hamedi
    @danial_hamedi 4 วันที่ผ่านมา

    Hi, dear number 0 (what’s your name, btw?). I have some questions. First, when we talk about a peer-to-peer network, everyone needs to do their “duties” for the system to work. What motivates people to accept incoming requests? I have the same question about hosting a relay. It’s not very important when the network grows enough, but are you going to be the only source for this “little subjectivity source in the network”?

  • @danial_hamedi
    @danial_hamedi 4 วันที่ผ่านมา

    My friend, your TH-cam channel is amazing. Please keep up the good work! <3

  • @joshka7634
    @joshka7634 5 วันที่ผ่านมา

    rand 0.9 came out the other day and this will break that first line until iron updates to take that into account. In the meantime, use rand 0.8.

  • @dantescanline
    @dantescanline 6 วันที่ผ่านมา

    as a long time backend dev i've always wanted to make the jump into p2p and rust, so this video is a dream come true! great work number computer people

  • @spaceprior
    @spaceprior 8 วันที่ผ่านมา

    Isn't the 1.3x space efficiency figure going to an underestimate in practice, since by the time the recipient can inform the sender that the reconciliation is complete, the sender will have already streamed out a bunch of extra cells? It'd depend on the latency/bandwidth. For small differences, the efficiency could be much much worse than that.

  • @sundayg1
    @sundayg1 8 วันที่ผ่านมา

    This is amazing! Next do a video on iroh blobs. Specifically on file sharing use case

    • @n0computer
      @n0computer 7 วันที่ผ่านมา

      Sounds like a great idea! We’ll work a walkthrough on blobs into our plans for future videos!

  • @Lu3ca3
    @Lu3ca3 8 วันที่ผ่านมา

    Nice video! What fonts did you use in your slides? They look beautiful.

  • @HaramPoliceHQ
    @HaramPoliceHQ 8 วันที่ผ่านมา

    Yooo ! building same project your video is really helpful for streamlining my idea ❤

  • @pantium98
    @pantium98 8 วันที่ผ่านมา

    looks very cool. Is there c binding for it? I'm doing some c++ recently, and I wanna try it in c++. Or maybe I might just learn rust

  • @Notverygoodatall
    @Notverygoodatall 8 วันที่ผ่านมา

    You aren't doing it from scratch if you have all those dependencies

    • @louis1001
      @louis1001 7 วันที่ผ่านมา

      Yeah! What? Are you gonna use the existing nerwork protocols and libraries? An already built OS? Pff I'm just kidding, but come on, don't take it so seriously.

    • @netroy
      @netroy 7 วันที่ผ่านมา

      Agreed. He should build those processors from raw silica before he can call it "from scratch" /s

    • @Da1sypetals
      @Da1sypetals 4 วันที่ผ่านมา

      You should start from collecting sand on the sea to call it "from scratch".

  • @O-02
    @O-02 8 วันที่ผ่านมา

    Amazing, really! I wish you would implement voice chat with webRTC one day

  • @MarshallRosenstein
    @MarshallRosenstein 9 วันที่ผ่านมา

    The example code on the website has a typo on line 2: "use iroh:{Endpoint, Endpoint};" should be "use iroh:{EndPoint, SecretKey};"

  • @moshyfawn
    @moshyfawn 9 วันที่ผ่านมา

    Ay, it's nice to see Zed pop up in a random video TH-cam threw at me due to me writing some Rust Voip stuff 🔥

  • @elitedefender6918
    @elitedefender6918 9 วันที่ผ่านมา

    Hey, I’m new to p2p programming. Was wondering if it is possible to use iroh for connection between rust running on computer and browser app (perhaps maybe using wasm)? My end goal is try to get p2p connection between a tauri app and a react browser app.

    • @FlorisBruynooghe
      @FlorisBruynooghe 8 วันที่ผ่านมา

      iroh doesn't yet work on the browser. It's being actively worked on however and a first version should be ready... probably in the first half of this year. That will only work via the relay server however, not yet fully p2p. Browsers are a bit hostile to full p2p, though it won't stop at this first version, WebTransport would allow us to do more, all depending on the compromises that seem the best.

  • @tarunthakur713
    @tarunthakur713 9 วันที่ผ่านมา

    Amazing stuff

  • @Valeriooooh
    @Valeriooooh 9 วันที่ผ่านมา

    What a great video, exactly what the doctor ordered :)

  • @tommalitz6773
    @tommalitz6773 9 วันที่ผ่านมา

    Awesome video, great content. What color scheme are you using in Zed here?

    • @n0computer
      @n0computer 9 วันที่ผ่านมา

      Andromeda!

  • @johnsimon8457
    @johnsimon8457 9 วันที่ผ่านมา

    Phew, I need to do more than just plain old REST over HTTP

  • @markg5891
    @markg5891 9 วันที่ผ่านมา

    That's an awesome video! I learned a couple rust things! I'm looking at the example code and given that signing is possible, end to end encryption is possible too. Sweet! Something about the connections. does Iroh have some form of verbose but friendly connection history? What i'm curious about when making a p2p connection is knowing if i'm actually having a p2p connection or if my data is routed trough "a relay" because a p2p connection couldn't be made directly? An example would be anyone behind a CGNat, which unfortunately, makes hole punching near impossible and some ISPs sadly start using that more due to IPv4 shortage (and them being lazy on getting IPv6).

    • @matheus23
      @matheus23 9 วันที่ผ่านมา

      Yep. There's Endpoint::conn_type for this. It essentially gives you an observable value for whether the connection was direct, via the relay or mixed and some info about the paths too.

  • @claasdev
    @claasdev 9 วันที่ผ่านมา

    I like your way of finding the middle between rust for beginners and explaining iroh for people that are familiar with rust

  • @spaceprior
    @spaceprior 9 วันที่ผ่านมา

    Would have been helpful to acknowledge that the full list operation requires that the ibf is actually not compressed: there has to be a zero cell clear for every additon. You only get to send a compressed ibf if you're doing a little reconciliation.

  • @kickeddroid
    @kickeddroid 9 วันที่ผ่านมา

    Beautiful work ❤

    • @n0computer
      @n0computer 9 วันที่ผ่านมา

      Thanks @kickeddroid! Great to see you as always :)

  • @TenFeetDown
    @TenFeetDown 9 วันที่ผ่านมา

    This is so elegant, Rust really was built for this kind of software.

  • @themannyzaur
    @themannyzaur 9 วันที่ผ่านมา

    this man wants me to rewrite my p2p terminal sharing program from go to rust maybe I should learn rust

    • @n0computer
      @n0computer 9 วันที่ผ่านมา

      dooooooooooooooo it. Go is nice too though :)

  • @abheektripathy8991
    @abheektripathy8991 9 วันที่ผ่านมา

    weekend plans sorted

  • @AMX0013
    @AMX0013 11 วันที่ผ่านมา

    Mannn,wish I found this on spring 23, i wouldve totally aced those 2 assignments on building kademlia. That point when said the binary tree was not some Trie but instead a translator of distance from itself to others, that lit the fused bulb inside of me.

  • @ghislain-bernard
    @ghislain-bernard 11 วันที่ผ่านมา

    Thank you very much for the three video serie on Bloomfilters. Note: the playlist Papers contains the reference twice to part 2.

    • @n0computer
      @n0computer 11 วันที่ผ่านมา

      Thanks so much for pointing this out. Should be fixed!

  • @cyberhard
    @cyberhard 13 วันที่ผ่านมา

    Cool! The algorithm must know i can think of a use of this...

  • @MBdz557
    @MBdz557 15 วันที่ผ่านมา

    Thank you very much

  • @dlogankeenan
    @dlogankeenan 15 วันที่ผ่านมา

    Great video! I recently read all the docs and this encapsulates an overview very well

  • @markg5891
    @markg5891 15 วันที่ผ่านมา

    Nice and well presented video!

  • @sineptic
    @sineptic 15 วันที่ผ่านมา

    Its always cool, when library is not only the library and contains this kind of promotionand explanations. Tell me please what font you are using. ( 2:18 )

    • @n0computer
      @n0computer 15 วันที่ผ่านมา

      Thanks! It’s called “Space Grotesk”: fonts.google.com/specimen/Space+Grotesk

  • @Valeriooooh
    @Valeriooooh 16 วันที่ผ่านมา

    keep it coming, the video was awesome, finally some (pseudo)code!!!

  • @dagmawiesayas
    @dagmawiesayas 16 วันที่ผ่านมา

    This was really helpful

  • @arushk
    @arushk 16 วันที่ผ่านมา

    awesome vid

  • @turpeluren
    @turpeluren 18 วันที่ผ่านมา

    Found this though weird, which is built with iroh!

  • @arnaldocartaya-gp9pi
    @arnaldocartaya-gp9pi 19 วันที่ผ่านมา

    i have been a couple of days struggling to understand how kademlia works until i stumbled upon your video. Great job!!!!

  • @edhahaz
    @edhahaz 20 วันที่ผ่านมา

    syncthing for devs... because open source is about changing it to fi... sorry can't finish it without laughing too hard

  • @frankboyer1490
    @frankboyer1490 20 วันที่ผ่านมา

    Would love to see a comparison with Tailscale

  • @rotors_taker_0h
    @rotors_taker_0h 22 วันที่ผ่านมา

    I understand it in principle but also need a comparison with Tailscale (which is more or less transport level p2p solution, I think) to care enough to dig deeper :) And they have the most comprehensive description of NAT Traversal that I know of, would be interesting to know how you compare in that regard.

  • @olokelo
    @olokelo 23 วันที่ผ่านมา

    I found your channel searching for Kademlia and get much more than expected. This is top tier work!

    • @n0computer
      @n0computer 23 วันที่ผ่านมา

      🙌 thanks so much!

  • @tylerweirtube
    @tylerweirtube 23 วันที่ผ่านมา

    This is the video iroh needed. I've seen it many times and played with the examples, but never got it. Nice one.

    • @n0computer
      @n0computer 23 วันที่ผ่านมา

      Glad to hear! Working on a deeper overview next. Hopefully it adds a bunch more detail :)

  • @havocthehobbit
    @havocthehobbit 24 วันที่ผ่านมา

    Written in rust makes me happy, nothing better than smooth cargo install and great built in documentation. Once i understand enough about the protocols used and secuirity, ill try it out. For now iv noted and bookmarked the homepage and git.

  • @catmium7974
    @catmium7974 24 วันที่ผ่านมา

    afaik STUN servers don't work with all NAT setups, Do you use TURN servers to forward data to clients? If yes, is it really peer-to-peer

    • @n0computer
      @n0computer 23 วันที่ผ่านมา

      Yes, we use a TURN-like technique in iroh relays when holepunching isn't possible: www.iroh.computer/docs/concepts/relay We like to say that we're "not peer-2-peer maxmalists", and think things need to work consistently more than they need to be pure p2p. Totally up to you if that works for your use case!

  • @MackBertly
    @MackBertly 24 วันที่ผ่านมา

    Awesome! That said, I recently discovered Tailscale and started using it. Is this additive? Alternative? Complementary? Happy to use whatever adds value.

  • @jelsonrodrigues
    @jelsonrodrigues 24 วันที่ผ่านมา

    P2P solutions are always welcome 👋

  • @jelsonrodrigues
    @jelsonrodrigues 24 วันที่ผ่านมา

    Does it support direct IPv6 connections between peers or is focused on IPv4 NAT traversal techniques?

    • @n0computer
      @n0computer 24 วันที่ผ่านมา

      Both! It'll automatically detect & switch between IPv4 & IPv6.

  • @FrenziedManbeast
    @FrenziedManbeast 24 วันที่ผ่านมา

    If I have four bits, doesn't that give me sixteen possible value combinations, and not the fifteen you stated? Zero through fifteen is a total of sixteen values, unless somehow the zero cannot resolve to a value?

  • @Valeriooooh
    @Valeriooooh 24 วันที่ผ่านมา

    You should publicise more your advancements, this is an amazing piece of software that almost no one knows about. i'm still waiting for a "getting started tutorial", cheers.

    • @n0computer
      @n0computer 24 วันที่ผ่านมา

      Thank you for the encouragement! Plan is to publish a getting started tutorial after a technical overview video, which we're working on now!

  • @dovonun
    @dovonun 24 วันที่ผ่านมา

    Syncthing did this for me. But its focus is on files.

    • @n0computer
      @n0computer 24 วันที่ผ่านมา

      Syncthing is a phenomenal piece of software