Live data from Hacker News

Building a decentralized name system on top of IRC

roberts.pm

1–10 of 65 posts

Re: Building a decentralized name system on top of IRC

#2
There is 0 security in this. It is also hard to understand because it uses random crypto that doesn't really accomplish anything.

Nothing stops someone from registering your domain. Nothing stops someone from doing a Sybil attack and just always returning an attacker's account public key.

The author would be benefit greatly by taking another look at blockchains for this problem. They typically are much better thought out distributed systems than what the author was able to come up with.

Re: Building a decentralized name system on top of IRC

#5

There is 0 security in this. It is also hard to understand because it uses random crypto that doesn't really accomplish anything. Nothing stops someone from registering your domain. Nothing stops someone from doing a Sybil attack and just always returning an attacker's account public key. The author would be benefit greatly by taking another look at blockchains for this problem. They typically are much better thought…

>There is 0 security in this. It is also hard to understand because it uses random crypto that doesn't really accomplish anything.

There is zero security if you dismiss every such measure to accomplish a level of security by saying that its just 'random crypto' that doesn't accomplish anything (why do you say that?)

>Nothing stops someone from registering your domain. Nothing stops someone from doing a Sybil attack and just always returning an attacker's account public key.

I think there may be some confusion in your understanding of the system. Registered names aren't visible, only their hashes. The design masks names through a verifiable delay function which forces registering parties to do lengthy computations to construct the lookup function. Since computations can be stored in bulk - names can be registered atomically across IRC servers without revealing what they are directly.

>Nothing stops someone from doing a Sybil attack and just always returning an attacker's account public key.

In the context of networking 'sybils' refer to being able to create multiple identities, machines, or so on controlled by the same person. But your usage of the term here is confusing because (1) users don't control third-party servers (2) users can't see names directly (3) there is a cost to creating names (4) and a threshold system is used to do consensus over name lookups and registrations (which was designed to solve the problem you're talking about.)

>The author would be benefit greatly by taking another look at blockchains for this problem. They typically are much better thought out distributed systems than what the author was able to come up with.

I would love to use a blockchain for this. There's only one problem. Currently there are no such blockchains that have zero transaction fees to use them. I think that such a system would be very useful. But it seems that no one wants to do it -- and working at blockchain startups for more than a decade has taught me that bolting forced monetization and funky tokens onto everything can make a system worse (or even unusable) for its intended purpose.

I think if you re-read the post you will see how I've addressed the problems you raised.

Re: Building a decentralized name system on top of IRC

#6
post #4

if you're looking for an easier way to build p2p applications, you might be interested in the Socket runtime ( https://github.com/socketsupply/socket )

Looks like an interesting project. When I was building my library I considered UDP hole punching but decided to focus exclusively on TCP because of how bad UDP is to work with. The issue with UDP is you're going to have to write a poorman's TCP stack on top of it.

The approach used by this library for NAT determination also seems to be an over-simplification of how NATs work in routers (which is the same problem that Libp2p has) and will result in having hole punching code that barely works. Some properties to consider:

- delta type -- this refers to how the NAT assigns external ports for mappings

- delta value -- this refers to any known patterns observed in the mapping

- nat type -- no NAT, UDP firewall, full cone nat, etc

There are special rules for how traversal can be accomplished depending on the variables above. It's quite complex. But supporting it all greatly increases the chance of punching success.

Another issue I see with this library (and this is personal preference) is the massive amounts of re-inventing the wheel (again -- Libp2p and Protocol Labs are notorious for this.) It seems like there are many custom protocols that you've built into your software but most of what you've built is already part of standard Internet protocols (e.g. STUN)

Re: Building a decentralized name system on top of IRC

#7
post #3

I don't know how else to say it, this is a really bad idea. It's spam. If you scale this up, the few IRC servers that currently accept this type of behaviour will start blocking it. You might as well be trying to use blog comment sections as k/v stores.

Spam is unwanted messages that displace what you want to see. In IRC: channels can be set to private which hide them from the channel listing. So that the server continues to operate in the same way. The software isn't doing anything outside of what is already allowed by these servers. Everything from the number of channels a user is allowed to create to limitations on expiry are already factored in to how people use the service.

If a channel typically attracts users and their discussion increases as more people join, which may happen over a very long time frame, then I argue that my design is actually less impactful than a traditional channel. Since it is not designed for discussion.

Re: Building a decentralized name system on top of IRC

#9
post #7
post #3

I don't know how else to say it, this is a really bad idea. It's spam. If you scale this up, the few IRC servers that currently accept this type of behaviour will start blocking it. You might as well be trying to use blog comment sections as k/v stores.

Spam is unwanted messages that displace what you want to see. In IRC: channels can be set to private which hide them from the channel listing. So that the server continues to operate in the same way. The software isn't doing anything outside of what is already allowed by these servers. Everything from the number of channels a user is allowed to create to limitations on expiry are already factored in to how people use…

Spam is any unwanted activity. It's visible to the service operators, and I predict that it'll annoy them, and they'll try to stop it. Apart from anything else, it'd start filling up their disks if it was widely used. Have you asked the opinion of any IRC admins?

Re: Building a decentralized name system on top of IRC

#10
post #6
post #4

if you're looking for an easier way to build p2p applications, you might be interested in the Socket runtime ( https://github.com/socketsupply/socket )

Looks like an interesting project. When I was building my library I considered UDP hole punching but decided to focus exclusively on TCP because of how bad UDP is to work with. The issue with UDP is you're going to have to write a poorman's TCP stack on top of it. The approach used by this library for NAT determination also seems to be an over-simplification of how NATs work in routers (which is the same problem that…

> The issue with UDP is you're going to have to write a poorman's TCP stack on top of it.

You can leverage a QUIC implementation nowadays for that - QUIC brings everything you need (session layer, congestion/flow control etc.).

Post reply on HN