sipa changed the topic of #bitcoin-wizards to: This channel is for discussing theoretical ideas with regard to cryptocurrencies, not about short-term Bitcoin development | http://bitcoin.ninja/ | This channel is logged. | For logs and more information, visit http://bitcoin.ninja
chipc has quit []
nick_freeman has quit [Remote host closed the connection]
justanotheruser has joined #bitcoin-wizards
brrr has joined #bitcoin-wizards
mauz555 has joined #bitcoin-wizards
DeanWeen has joined #bitcoin-wizards
mauz555 has quit [Ping timeout: 246 seconds]
rusty has joined #bitcoin-wizards
Chris_Stewart_5 has quit [Ping timeout: 240 seconds]
jonatack has quit [Ping timeout: 256 seconds]
jonatack has joined #bitcoin-wizards
DeanWeen has quit [Remote host closed the connection]
Belkaar has quit [Ping timeout: 265 seconds]
Belkaar_ has joined #bitcoin-wizards
zmnscpxj has joined #bitcoin-wizards
zmnscpxj has quit [Remote host closed the connection]
zmnscpxj has joined #bitcoin-wizards
davec has quit [Read error: No route to host]
CryptoDavid has quit [Quit: Connection closed for inactivity]
shush has quit [Remote host closed the connection]
shush has joined #bitcoin-wizards
rusty has quit [Quit: Leaving.]
TheoStorm has quit [Remote host closed the connection]
shush has quit [Ping timeout: 260 seconds]
DeanWeen has joined #bitcoin-wizards
hkjn0 has joined #bitcoin-wizards
yanmaani has quit [Ping timeout: 240 seconds]
yanmaani has joined #bitcoin-wizards
shush has joined #bitcoin-wizards
brrr has quit []
lossyrob has joined #bitcoin-wizards
captjakk has quit [Remote host closed the connection]
captjakk has joined #bitcoin-wizards
captjakk has quit [Remote host closed the connection]
captjakk has joined #bitcoin-wizards
jimpo_ has joined #bitcoin-wizards
x-warrior_ has joined #bitcoin-wizards
drolmer_ has joined #bitcoin-wizards
exhoplex1 has joined #bitcoin-wizards
sanket1729_ has joined #bitcoin-wizards
jonasschnelli_ has joined #bitcoin-wizards
dEBRUYNE_ has joined #bitcoin-wizards
warren_ has joined #bitcoin-wizards
drolmer has quit [*.net *.split]
sanket1729 has quit [*.net *.split]
jonasschnelli has quit [*.net *.split]
exhoplex_ has quit [*.net *.split]
x-warrior has quit [*.net *.split]
warren has quit [*.net *.split]
jimpo has quit [*.net *.split]
dEBRUYNE has quit [*.net *.split]
chjj has quit [*.net *.split]
gambpang has quit [Ping timeout: 264 seconds]
gambpang has joined #bitcoin-wizards
chjj has joined #bitcoin-wizards
rusty has joined #bitcoin-wizards
captjakk has quit [Remote host closed the connection]
captjakk has joined #bitcoin-wizards
captjakk has quit [Ping timeout: 265 seconds]
Kiminuo has quit [Ping timeout: 256 seconds]
cbeams has joined #bitcoin-wizards
lossyrob has quit []
seefischer has joined #bitcoin-wizards
zmnscpxj has quit [Ping timeout: 240 seconds]
seefischer has quit [Ping timeout: 256 seconds]
achow101 has quit [Ping timeout: 260 seconds]
achow101 has joined #bitcoin-wizards
jungly has joined #bitcoin-wizards
dEBRUYNE_ is now known as dEBRUYNE
dEBRUYNE has quit [Changing host]
dEBRUYNE has joined #bitcoin-wizards
mauz555 has joined #bitcoin-wizards
jungly has quit [Remote host closed the connection]
Kiminuo has joined #bitcoin-wizards
mauz555 has quit [Ping timeout: 265 seconds]
Guyver2 has joined #bitcoin-wizards
cbeams has quit [Remote host closed the connection]
cbeams has joined #bitcoin-wizards
kierank1 has joined #bitcoin-wizards
jonasschnelli_ has joined #bitcoin-wizards
jonasschnelli_ has quit [Changing host]
jonatack has quit [Ping timeout: 250 seconds]
jonasschnelli_ is now known as jonasschnelli
jonatack has joined #bitcoin-wizards
jungly has joined #bitcoin-wizards
marcoagner has joined #bitcoin-wizards
Emcy has quit [Remote host closed the connection]
Emcy has joined #bitcoin-wizards
tromp has quit [Remote host closed the connection]
nick_freeman has joined #bitcoin-wizards
charuto has quit [Quit: killed]
Jeremy_Rand_M_Ta has quit [Quit: killed]
TheFuzzStone[m] has quit [Quit: killed]
zkao has quit [Quit: killed]
lederstrumpf has quit [Quit: killed]
nick_freeman has quit [Read error: Connection reset by peer]
TheFuzzStone[m] has joined #bitcoin-wizards
nick_freeman has joined #bitcoin-wizards
nick_freeman has quit [Remote host closed the connection]
nick_freeman has joined #bitcoin-wizards
tromp has joined #bitcoin-wizards
jungly has quit [Remote host closed the connection]
jungly has joined #bitcoin-wizards
kierank1 has quit []
nick_freeman has quit [Remote host closed the connection]
nick_freeman has joined #bitcoin-wizards
nick_freeman has quit [Remote host closed the connection]
nick_freeman has joined #bitcoin-wizards
espadrine has joined #bitcoin-wizards
charuto has joined #bitcoin-wizards
Jeremy_Rand_M_Ta has joined #bitcoin-wizards
zkao has joined #bitcoin-wizards
lederstrumpf has joined #bitcoin-wizards
mauz555 has joined #bitcoin-wizards
davec has joined #bitcoin-wizards
jonatack has quit [Read error: Connection reset by peer]
jonatack_ has joined #bitcoin-wizards
TheoStorm has joined #bitcoin-wizards
espadrine has quit [Ping timeout: 256 seconds]
jb55 has quit [Ping timeout: 240 seconds]
jb55 has joined #bitcoin-wizards
Philantrop1 has joined #bitcoin-wizards
Chris_Stewart_5 has joined #bitcoin-wizards
Philantrop1 has quit []
jonatack_ has quit [Quit: jonatack_]
jonatack has joined #bitcoin-wizards
cbeams has quit [Remote host closed the connection]
cbeams has joined #bitcoin-wizards
cbeams has quit [Ping timeout: 250 seconds]
madflavor is now known as madflavor[prime]
Nipo1 has joined #bitcoin-wizards
michaelfolkson has joined #bitcoin-wizards
michaelfolkson has quit [Client Quit]
TheoStorm has quit [Quit: Leaving]
TheoStorm has joined #bitcoin-wizards
spinza has quit [Ping timeout: 256 seconds]
spinza has joined #bitcoin-wizards
jungly has quit [Remote host closed the connection]
jungly has joined #bitcoin-wizards
cannedprimates_ has quit [Ping timeout: 240 seconds]
CodeShark__ has quit [Read error: Connection reset by peer]
hugohn has quit [Read error: Connection reset by peer]
hugohn has joined #bitcoin-wizards
CodeShark__ has joined #bitcoin-wizards
cannedprimates_ has joined #bitcoin-wizards
captjakk has joined #bitcoin-wizards
Kiminuo has quit [Ping timeout: 260 seconds]
captjakk has quit [Ping timeout: 260 seconds]
ddustin has joined #bitcoin-wizards
captjakk has joined #bitcoin-wizards
alferz has joined #bitcoin-wizards
son0p has joined #bitcoin-wizards
cbeams has joined #bitcoin-wizards
Nipo1 has quit []
alferz has quit [Ping timeout: 240 seconds]
queip has joined #bitcoin-wizards
cbeams has quit [Remote host closed the connection]
cbeams has joined #bitcoin-wizards
cbeams_ has joined #bitcoin-wizards
ddustin has quit [Remote host closed the connection]
justanotheruser has quit [Ping timeout: 246 seconds]
cbeams has quit [Ping timeout: 256 seconds]
cbeams_ has quit [Ping timeout: 264 seconds]
porvak has joined #bitcoin-wizards
queip has quit [Quit: bye, freenode]
TheoStorm has quit [Quit: Leaving]
justanotheruser has joined #bitcoin-wizards
queip has joined #bitcoin-wizards
captjakk has quit [Read error: Connection reset by peer]
captjakk has joined #bitcoin-wizards
captjakk has quit [Remote host closed the connection]
TheoStorm has joined #bitcoin-wizards
captjakk has joined #bitcoin-wizards
warren_ is now known as warren
captjakk has quit [Ping timeout: 265 seconds]
cbeams has joined #bitcoin-wizards
shush has quit [Remote host closed the connection]
shush has joined #bitcoin-wizards
captjakk has joined #bitcoin-wizards
AaronvanW has quit []
TheoStorm has quit [Quit: Leaving]
cbeams has quit [Ping timeout: 265 seconds]
jb55 has quit [Remote host closed the connection]
jb55 has joined #bitcoin-wizards
<yanmaani> Has the idea of using DHT to bootstrap Bitcoin without DNS seeds been evaluated?
son0p has quit [Quit: leaving]
<gleb> yanmaani: DHT is a lookup service. Which keys are you suggesting to look up?
<yanmaani> A static key, such as sha256("bitcoin-bootstrap")
<yanmaani> So, you send outgoing UDP packets to whatever is the default BitTorrent DHT port with the initial handshake to random IPs.
<yanmaani> Then, you complete the handshake with whoever responds. And from there, you look up sha256("bitcoin-bootstrap"), and get Bitcoin seed nodes, who in turn feed you IPs of Bitcoin nodes
<yanmaani> This means you don't have any seed nodes, just IPv4. You just need to send a few thousand packets to have a pretty good probability of success.
<gleb> So, you are suggesting to probe thousands of random IPv4 ports?
<yanmaani> yep
<gleb> First of all, it's questionable how ethical is this. Second of all, it's trivially Sybil-able. There are 10 thousands reachable nodes right now. An attacker would have to deploy like extra 20k to be successful. Maybe less, if an attacker can manipulate BGP or whatnot.
<yanmaani> p = (1-(n/2^32))^N; for n = 10M and p = 0.5 that gives 0.5 = .9977^N => ln(0.5) = Nln(.9977) => ln(0.5)/ln(.9977) = N = 297
<yanmaani> gleb: No, BitTorrent has ~10 million nodes.
<yanmaani> So they'd have to take over the BitTorrent network's DHT
<gleb> I don't really know how BitTorrent DHT works. Who runs the nodes?
<sipa> who would have the authority to update the DHT entry?
<yanmaani> sipa: You announce to the DHT, the only data you _can_ insert (by protocol) is your own IP
<yanmaani> gleb: Anyone who runs a mainstream BitTorrent client, basically
<sipa> ah
<yanmaani> so, Random People On The Internetâ„¢
<yanmaani> always a sure bet for your business critical service needs
<yanmaani> If you send 297 outgoing packets you have a 50% chance of success. If you would optimize it to only send to active ranges, you would probably do much better
<yanmaani> https://web.archive.org/web/20160304231200if_/http://internetcensus2012.bitbucket.org/images/hilbert_icmp_map_lowquality.jpg Here is the Carna Botnet, for example. If you'd just give each /8 a number based on the claimed number of reachable hosts (probability), square this, and use it as the weighting to pick a random /8, you could probably do much better
<gleb> "and get Bitcoin seed nodes, who in turn feed you IPs [...]". What are these seed nodes in your idea? Are them just *any* random reachable Bitcoin nodes?
<yanmaani> eyeballing it we are talking maybe 50-100 packets?
<yanmaani> gleb: Well, they have to speak both DHT and Bitcoin. So it's a node that announces to the DHT and says "hi, I have a list of Bitcoin nodes for you"
<yanmaani> But yes, it could be possible to make Bitcoin Core speak DHT - the protocol is extremely simple
<yanmaani> And Bitcoin Core wouldn't have to brute-force it as a first attempt, they could first try to get introduced by a DNS peer and only have brute-force as a fallback.
<gleb> We want to have a more or less random graph, so every reachable nodes gets roughly the same number of connections, if simplified.
<yanmaani> Yeah that would be doable if all nodes were to announce to the DHT
<gleb> Furthermore, it's important to not make it influencable. What if a bad node is *more active* with announcing to DHT. Like, spams it every second or something.
<yanmaani> They're still constrained by number of IPs.
<gleb> Sure, same as with DNS seeds. But at seeds, we don't care about how often someone announces to us.
<yanmaani> If there's 10k legit nodes and the attacker rents 100k botnet nodes, then you'll have 110k nodes, of which the attacker controls 91%. So you'll need to speak to ~7 nodes to have a 50% prob of finding at least one honest.
<gleb> I'm just saying maybe their DHT have some other prioritization logic.
<yanmaani> Well, there's very little logic involved. Basically it works like this:
<yanmaani> each node has an ID
<yanmaani> the first 10 bits or whatever of the ID is derived based on hash of first 24 bits of IP
<yanmaani> the rest they can choose
<yanmaani> (somewhat simplified)
<yanmaani> Based on the ID, they are responsible for a certain portion of the keyspace
<gleb> You are not hearing me, I'm talking about the other problem. What if an attacker can be strategic about sybil'ing, which would give him an advantage? For example, choose a better IDs or announce more often.
<yanmaani> And when I want to insert somewhere, I find the N closest nodes, and tell all of them.
<yanmaani> Well, there's basically two attacks you're describing
<gleb> So, not a lot of sybils, but just smarter than single bitcoin nodes. This may be possible due to the BitTorrent DHT logic, which I don't know, so I'm asking.
<yanmaani> one is, attacker doesn't run any nodes
yanmaani has quit [Ping timeout: 240 seconds]
michaelfolkson has joined #bitcoin-wizards
yanmaani has joined #bitcoin-wizards
<yanmaani> ...one is, attacker doesn't run any nodes
<yanmaani> he just constantly announces to the DHT
<yanmaani> The other one is, attacker runs nodes
<yanmaani> and tries to control that portion of the keyspace
<yanmaani> To do this, he has to rent servers with specific IPs, basically
<yanmaani> gleb: The second attack would require a lot of VPSes, basically
<yanmaani> I think it falls under "if it were so easy, someone'd have done it by now" - lots of people who don't like people downloading movies and who are willing to pay smart people money to send legal threats/do DoS attacks
<gleb> "To do this, he has to rent servers with specific IPs, basically". So this would be weaker than what we have today, right? There's no much gain from doing this today.
<gleb> this = this system you're suggesting
<yanmaani> This in my view should be put in as a fallback
<yanmaani> He has to find IPs in specific ranges, and make sure that he controls precisely 100% of them
<yanmaani> so, rent VPSes with good IPs, pay bribes to providers, pay bribes to shady ISPs to announce bogons and stuff, and DoS the rest
<yanmaani> But the flip side is, there is *NO* central seed node needed to enter the network. None whatsoever.
<gleb> But you said it's a fallback. What's the primary mechanism then?
<yanmaani> DNS seeds, as right now
<yanmaani> Under good conditions, they work better
<yanmaani> but they're a single point of failure
<gleb> So there are central seed nodes, right?
<yanmaani> it's like in BitTorrent
<yanmaani> trackers are always better, if you have them
<yanmaani> but if not, DHT's your only choice
<yanmaani> Well, Bitcoin has central seed nodes.
<yanmaani> The DHT has too. But in the presence of working Bitcoin DNS seeds, there's no need to join the DHT.
<yanmaani> Except of course to make sure the fallback is running.
<gleb> Maybe when DNS seeds are down, your idea may work better than our hardcoded list for a fallback. However, it puts some extra burden about self-announcements. And also, as we concluded above, it can be vulnerable to IP grinding (probably not that difficult since we have only 10k reachable nodes).
<yanmaani> no, the IP grinding is against 10m nodes
<yanmaani> and you have to have many different /24s
<gleb> Doesn't it have to just satisfy hash("bitcoin-seed") thing?
<yanmaani> Yes, to 20 bits or whatever
<gleb> Grind those which fall into this query more efficient than others.
<yanmaani> but that's the hash of the first bits
<yanmaani> "The expression to calculate a valid ID prefix (from an IPv4 address) is:"
<yanmaani> crc32c((ip & 0x030f3fff) | (r << 29))
<yanmaani> This means, you need a good ISP diversity
<gleb> Anyway, if you want to suggest it for Bitcoin Core, I suggest writing up something summarizing the applicable trade-offs and engineering efforts :)
<yanmaani> so there's a nice graph here: http://www.bittorrent.org/beps/bep_0042_ip_id_v4.png
<yanmaani> Right. Where do I post it, as a BIP on GitHub?
davispuh has joined #bitcoin-wizards
<gleb> I think an email to the mailing list would be good for starters. It's not very rich for diagrams, so maybe you want host your write-up elsewhere. But BIPs are more about implementation details, it's too early for that I'd say.
AaronvanW has joined #bitcoin-wizards
TheoStorm has joined #bitcoin-wizards
<yanmaani> thanks
Kiminuo has joined #bitcoin-wizards
jungly has quit [Remote host closed the connection]
jungly has joined #bitcoin-wizards
porvak has quit []
queip has quit [Quit: bye, freenode]
cbeams has joined #bitcoin-wizards
cbeams has quit [Remote host closed the connection]
cbeams_ has joined #bitcoin-wizards
cbeams_ has quit [Client Quit]
jungly has quit [Remote host closed the connection]
shush has quit [Remote host closed the connection]
ThunderChicken1 has joined #bitcoin-wizards
shush has joined #bitcoin-wizards
davispuh has quit [Ping timeout: 256 seconds]
davispuh has joined #bitcoin-wizards
justanotheruser has quit [Ping timeout: 250 seconds]
justanotheruser has joined #bitcoin-wizards
jungly has joined #bitcoin-wizards
corollari has joined #bitcoin-wizards
jungly has quit [Ping timeout: 240 seconds]
jonatack has quit [Ping timeout: 256 seconds]
jonatack has joined #bitcoin-wizards
TheoStorm has quit [Quit: Leaving]
rusty has quit [Quit: Leaving.]
ryan_singer has joined #bitcoin-wizards
rusty has joined #bitcoin-wizards
jungly has joined #bitcoin-wizards
AaronvanW has quit []
CryptoDavid has joined #bitcoin-wizards
davispuh has quit [Quit: http://quassel-irc.org - Chat comfortably. Anywhere.]
jungly has quit [Remote host closed the connection]
jungly has joined #bitcoin-wizards
davispuh has joined #bitcoin-wizards
CryptoDavid has quit [Ping timeout: 246 seconds]
jungly has quit [Remote host closed the connection]
TheoStorm has joined #bitcoin-wizards
NicolasDorier has quit [Ping timeout: 272 seconds]
endogenic has quit [Ping timeout: 256 seconds]
CryptoDavid has joined #bitcoin-wizards
jungly has joined #bitcoin-wizards
NicolasDorier has joined #bitcoin-wizards
ChristopherA___ has quit [Ping timeout: 272 seconds]
endogenic has joined #bitcoin-wizards
ChristopherA___ has joined #bitcoin-wizards
Chris_Stewart_5 has quit [Ping timeout: 258 seconds]
DeanWeen has quit [Remote host closed the connection]
DeanWeen has joined #bitcoin-wizards
jungly has quit [Read error: Connection reset by peer]
jungly_ has joined #bitcoin-wizards
jungly_ has quit [Remote host closed the connection]
ThunderChicken1 has quit []
AaronvanW has joined #bitcoin-wizards
Guyver2 has quit [Quit: Going offline, see ya! (www.adiirc.com)]
skorgon has joined #bitcoin-wizards
ryan_singer has quit [Quit: Leaving.]
rusty has quit [Quit: Leaving.]
michaelfolkson has quit [Quit: Sleep mode]
Chris_Stewart_5 has joined #bitcoin-wizards
DeanWeen has quit [Remote host closed the connection]
DeanWeen has joined #bitcoin-wizards
ddustin has joined #bitcoin-wizards
DeanWeen has quit [Ping timeout: 240 seconds]
justanotheruser has quit [Ping timeout: 258 seconds]
DeanWeen has joined #bitcoin-wizards
bitcoin-wizards1 has joined #bitcoin-wizards
bitcoin-wizards1 has quit [Client Quit]
marcoagner has quit [Ping timeout: 256 seconds]
justanotheruser has joined #bitcoin-wizards
rusty has joined #bitcoin-wizards
ddustin has quit [Remote host closed the connection]
ddustin has joined #bitcoin-wizards
ddustin has quit [Ping timeout: 240 seconds]
mauz555 has quit [Remote host closed the connection]
ddustin has joined #bitcoin-wizards
ddustin has quit [Ping timeout: 252 seconds]