00:00:20 gmaxwell: well basically, the depth of that tree is purely your anonymity set 00:00:25 yes 00:00:39 say a coin looks like this [128 bit serial number, 64 bit future extensibility, 64 bit value, 256 bit P2SH hash] you add it to an insertion ordered tree. 00:01:02 jtimon: it's only scalable if you can figure out the right mining incentives and solve the data-hiding attack sufficiently 00:01:15 fractastical has quit 00:01:24 And then to emerge COIN you just produce a ZK proof that H(COIN) is in the tree.. which takes Log2(size) hashes under the ZK proof. 00:01:49 so if you require multiple trees for pruing purposes, then you can make them reasonably small at the cost of reducing the anonymity set. 00:03:30 petertodd, I don't know the data-hiding attack, but from what I hear from maaku what you're talking about is new, can I read a summary somewhere? 00:03:57 jtimon: https://www.mail-archive.com/bitcoin-development@lists.sourceforge.net/msg03307.html 00:05:07 jtimon: basically, your utxo/txo/txin set in a cryptographic accumulator, and you can only update the state of that set if you have the transactions that have happened, thus somehow you have to ensure you don't end up with that data getting lost 00:05:12 petertodd: that doesn't have generic-coloring stuff you were just talking about right? 00:05:31 jtimon: easy to do in a single consensus-realm system, but quickly becomes an existential risk if you try to scale more than that 00:05:49 maaku: not explicitly, but the basic ideas in that paper can be applied to such schemes 00:06:06 petertodd: is this accurate to what you are talking about: 00:06:23 So one can imagine a coloring script that acts kinda like a virus: it loads the transaction, does some checks to make sure it doesn't invalidate any coloring constraints, and then attaches itself (referencing it's own source code) to the colored outputs 00:06:29 petertodd: in that thread you only had commited utxi, not utxo 00:06:31 maaku: yup 00:06:42 jtimon: right, but the logic applies equally to utxo too 00:06:58 you'd need a much more powerful script language to do interesting things with that 00:07:06 but you certainly could do interesting things 00:07:20 maaku: heh, I'll say... such scriptPubKey's are quine's after all! 00:07:35 I'm sorry guys, I'm not sure I follow 00:07:49 petertodd: the coloring constraint can even validate a issuing authority signature, to make sure the the initial attachment was permitted. 00:07:52 jtimon: http://en.wikipedia.org/wiki/Quine_%28computing%29 00:07:58 but what I meant by making the utxi scalable through expriries 00:07:59 So you can't just go affixing it ot new random coins. 00:08:04 jtimon: so in bitcoin, when a miner finds a block, what forces them to release the actual block contents rather than just the block header? 00:08:40 gmaxwell: yup, or make it part of the program operating "if prev txout == magic return true" 00:09:00 petertodd: and to avoid the awful outcomes in my covenant thread... you make sure the color virus has a kill switch. 00:09:03 petertodd, other miners won't mine on top of your block if they can't see it in full, it could be invalid 00:09:12 e.g. a way to spend it to tell it to not attach to the output. 00:09:36 petertodd: we originally had introspective scripts in the freimarkets spec but gutted it because we didn't see a compelling use case, but this changes things 00:09:57 it's a bit of complexity, but probably worth it 00:10:11 jtimon: Exactly. But other than that, what actually forces them to do that? For instance, what if you could prove a transaction was valid without the UTXO data itself? 00:10:45 shesek has quit 00:11:04 maaku: I gotta read the freimarkets spec... 00:11:24 nobody forces them, is just the best they can do, not sure I understand the second question... 00:12:19 http://www.itbusiness.ca/news/royal-canadian-mint-readies-its-version-of-bitcoin-mintchip/46113 mintchip is moving forward? heck yea. 00:12:23 petertodd: well its not in any public version of the spec, but I wouldn't be opposed to adding it back in 00:12:24 jtimon: well, we can make systems where transactions can be accompanied by short proofs that their txins are valid, and those proofs can be used to update things like committed UTXO set trees. Those two things let miners mine while fully validating, but without any blockchain data. 00:12:58 petertodd: it may be sufficient reason to revamp script entirely 00:13:14 gmaxwell: I'll be interested to see if that alleged privacy leak is still in the spec... 00:13:28 (we mostly dropped it because doing introspection was a kludge without LISP-like semantics) 00:13:37 maaku: it's a pretty useful feature IMO - I first thought of it for fidelity-bonded bank stuff 00:13:50 maaku: I suspect you can do it reasonably nicely with real forth semantics 00:14:22 petertodd: man, I wish I'd thought to ask them to be able to do something to do trustfree binding with bitcoin. 00:14:27 Ursium has joined #bitcoin-wizards 00:14:48 gmaxwell: if it was possible by accident they probably would have changed it to prevent it... 00:15:31 petertodd: e.g. just a "I've been paid!" message signed by your chip is enough. 00:16:19 gmaxwell: sure, although good luck on it being crypto-compat with bitcoin 00:16:27 has anyone looked at hard-fork scripting improvements? other than Merklized scripts 00:16:43 maaku: I'm not sure there are any scripting improvements that actually need a hard fork you know... 00:16:44 Merklized scripts don't have to be a hardfork improvement. 00:16:53 You just P2SH deploy the update. 00:17:05 petertodd: does this require any snark-like tech? maaku: what are the differences from "regular stateless validation" 00:17:07 ? 00:17:26 jtimon: not at all 00:17:28 jtimon: i think petertodd is explaining stateless validation 00:17:34 maaku: yup 00:18:15 maaku: things I want merklized scripts, restore missing opcodes, extra checksig flexibility, true scalable threshold signatures (e.g. schnorr). 00:19:11 "Money instantly moves from one cloud-based, MintChip account to another" <- it's cloud-based now? hmm... 00:19:15 ok, I guess then I don't undesrtand stateless validation well enough because I don't see how would you do coloring or what the power of the scripting language has to do with it 00:19:49 oh also, I eventually invented a much better scheme for hash based signatures, only to realize I invented something that has long been known. E.g. one time use hash based signature with 128 bit security (using 256 bit hashes) = 2.1kbytes. 00:19:50 jtimon: it's got nothing to do with either 00:19:57 petertodd: oh dear, did they make it suck? 00:20:15 gmaxwell: wouldn't surprise me... they probably noticed phones don't have card-readers 00:20:44 gmaxwell: and if they made it suck, they probably also made it possible to reverse tx's due to hacks... 00:20:53 damnit 00:20:59 can't you put an NFC card near a phone? 00:21:16 jtimon: that's harder than making it suck 00:21:33 I hope they didn't make it suck. 00:21:35 jtimon: and seriously, even that is susceptable to hacks - you really need a NFC card with a LCD display 00:21:42 Even without trustless binding it was going to be awesome for bitcoin. 00:22:06 gmaxwell: i've been compiling a list of things that might make it in an updated freimarkets spec, and those are on it 00:22:15 yeah, I guess you need a lcd and a couple of buttons in the card 00:22:31 i'd love both lamport signatures and ed25519-derived schnorr signatures (if that is possible) 00:22:37 jtimon: yup, and then you really want the cards to be registered to people's names, so the lcd displays who it's really going too... 00:22:50 using the sighash byte to keep compatability 00:22:55 I am less enamored with ed25519 than I was. I like our curve better now. :P 00:23:01 fractastical has joined #bitcoin-wizards 00:23:06 why? 00:23:10 maaku: just have a second checksig operator. 00:23:17 shesek has joined #bitcoin-wizards 00:24:38 maaku: because ed25519 has a cofactor of 8, and because the "standard" software for it is incompatible with things like BIP32. (also, because one of the things I thought was weak about our curve turned out not to be.) 00:25:15 I believe our curve also has higher security against all known attacks, outside of implementation mistakes, not that it matters much. 00:25:38 but it is faster & resistant to timing attacks, isn't that pretty significant? 00:26:11 no, in fact it's not resistant to timing attacks unless you drop the compatiblity with BIP32. (or make it much slower) 00:26:26 To make it constant time (and faster) they require the most siginficant bit of the private key be 1. 00:26:45 i mean I'm in aggreement with our curve not being weak, but I thought ed25519 was strictly better in most cases 00:26:49 which means that you can't have a 'randomly' generated private key, e.g. from a public derrivation. 00:27:20 and without that you make it slower and you take away the constant timeness (though you could get back the constant timeness with a major slowdown, just like for our curve) 00:27:27 sorry confusing pronoun dereferencing : ed25519 is resistant to timing attacks and secp256k1 is not, right? 00:27:33 and the speed difference isn't so huge. 00:27:45 hrm. ok 00:29:03 i see, so it'd be quite a bit of work for little payoff 00:29:05 maaku: _curves_ aren't resistant or not, their implementations are, though curve choice can limit what implementations are available. ed25519's canonical implementation is both fast and timing resistant, but requires that the most significant bit of the private key be 1. 00:29:31 which kills bip32, i understand now 00:29:43 so why does that kill bip32? 00:29:54 which is neat, but if you take away that bit, then its not timing resistant, and making it timing resistant makes it not fast. (though it may still be better off than secp256k1) 00:30:08 petertodd: it kills type-2 derrivation since you can't tell if the private key will have the MSB set. 00:30:31 now— it may not be much work in reality, because the tor project has this whole big proposal for a redo of hidden services. 00:30:44 roidster has quit 00:31:07 And it does something very similar to type-2 derrivation to prevent HS directories from enumerating which hidden services are in use. 00:31:09 gmaxwell: right, although you could do a checksig that did bip32 with some kind of crazy 1-of-m multisig essentially, although at the cost of privacy 00:31:18 And they're planning on doing this with the ed25519 curve. 00:31:32 And I don't think they've yet realized that they won't be able to use the standard implementation… 00:31:48 separate issue, does what I said here make any sense? Is Flavien right? https://groups.google.com/d/msg/bitcoinx/Nq_8dkC3zqU/h_aqRA5A7TkJ 00:31:52 (I only realized this because I went and tried to implement ed25519 for bitcoin) 00:32:20 petertodd: BIP32 perhaps, but not the privacy purposes of it. 00:32:24 Or stealth addresses. 00:32:29 Which is basically the same usecase tor has. 00:32:53 gmaxwell: yup, although OTOH a merkle tree would do it, at the cost of size 00:32:53 (and incidentally, tor is working on a rigorous security proof for their derrivation scheme, though last I checked they hadn't made much progress) 00:33:21 petertodd: not for privacy, I could see your hashroot was the same. :P 00:33:23 jtimon: it makes sense 00:33:49 fractastical has quit 00:34:25 gmaxwell: no, the hash root would be of n pubkeys, and if you could spend any one of them you can spend the txout. each pubkey is still bip32-style secure, although there is a 1 in 2^256 chance of not being able to spend the txout (or whatever the math is) 00:34:53 petertodd: thanks, so Flavien is wrong saying you can reuse an address to sign securely 100 times a day even if you don't care about privacy 00:35:44 jtimon: well, the bigger thing is that you should just have the definition of a valid ccoin txout be "whatever the issuer signs", with a separate merkle sum tree for auditing purposes 00:36:19 jtimon: your proof that your ccoin is valid just needs to be that the signature on the genesis txout was valid 00:36:26 jtimon: the chance of choosing the same K value is exceedingly low ... unless you have a bad RNG, in which case it is exceedingly high 00:36:57 petertodd: oh god, you mean using lots of bip32 keys just to make sure you get one where the MSB is 1? 00:37:07 gmaxwell: yes! not that I ever said it was a good idea :P 00:37:17 petertodd: dear god, that idea ... so bad. ... must stab 00:37:19 petertodd, flavien is talking about "inflatable colored coins" in which the same address can be used to just issue more 00:37:21 If you assume your RNG is good or use deterministic signatures, key reuse is not a problem (from that perspective only) 00:37:29 gmaxwell: pity you can't stab someone over the internet 00:37:46 Guest41992 has joined #bitcoin-wizards 00:37:56 so maaku says flavien is right... 00:37:57 I'm pretty sure there is an onion site for that. 00:37:58 jtimon: yes, which is a dumb idea, just use the signature to sign a message saying some arbitrary txout is colored 00:38:06 but you still wouldn't want to tie it to an unchanging address anyway, for a multitude of other reasons 00:38:45 jtimon: he is not factually incorrect when he says "Signing a billion transactions per second, it would still take you hundreds billion times the age of the universe before you have 1% chance of collision." 00:38:58 (assuming perfect RNG or deterministic signatures) 00:39:06 petertodd: you ever hear about how the signature systems which are based on one-time-hash based signatures but allow ~infinite signatures work? 00:39:33 but those are invalid assumptions for real-world cryptography 00:39:36 gmaxwell: of course, which is why I expected the idea to raise your blood pressure :P 00:40:08 * petertodd has been paid off by the NSA to kill gmaxwell via heart disease 00:40:30 where with a bad RNG (or a reused seed value on a VM) it only take two signatures to give up the key 00:44:29 maaku I was going to answer something like "thank you for the clarification, then addresses is still the right approach for inflatable basic CC, but since we have tokens in freimarkets for other reasons, they're still more convenient for re-issuance as well" 00:46:08 Guest41992 has quit 00:46:28 jtimon: it's not just a matter of convience. it lets you have more control over operational security, for example by having one key per signing server and local protections against K reuse 00:47:10 which would protect you against spinning up two separate servers, who each sign separate messages with the same K value 00:47:39 petertodd: I knew it! 00:47:44 (due to saved random state in the VM image and a lack of entropy) 00:47:51 Is bitmessage off topic here? 00:48:06 justanotheruser: so long as it involves arcane spell 00:48:08 s 00:48:21 ? 00:48:25 well the "one address" in colored coins could be a p2sh multisig or whatever, by convenience I also mean that more control 00:49:56 jtimon: yes, but in the example I gave you need tokens because you need a new key every time you spin up a server, and eventually you run out 00:50:03 tokens allow you to change the p2sh one addres doesnt 00:50:10 although if you had bip-32 in script... 00:50:19 yes 00:50:45 if you could do bip-32 derivation in script though, you could get by with a single address 00:51:07 Anyways, how well does bitmessage scale? Would it work with 10 million users? 00:51:21 not if you want to radically change the config 00:51:45 yeah 00:52:13 justanotheruser: scaling is largely in terms of the anonymity set size. 00:53:01 justanotheruser: they kinda waved their hands at the streams stuff in their initial writeup though so the mechnisms needed to get people onto different streams is unde(rde)fined. 00:53:55 Nice use of parenthesis there. How is scaling in terms of the anonymity set size? Will the network break into sections or something? 00:53:56 <_ingsoc> _ingsoc has quit 00:54:45 justanotheruser: the idea is that the POW would increase to keep the datarate in a stream sane. And thus that would push people off onto other streams where the pow was lower (but the anonymity set smaller). 00:55:15 ...which is basically what sane people propose for consensu blockchains in general. 00:55:38 I see. And there is no in depth explanation for their streams? 00:55:43 it's just that how that'll actually work in bitmessage si a lot more obvious - no "oops I let a tx spent a bit of dust that didn't actually exist" problem 00:55:49 justanotheruser: not that I've seen 00:56:15 there is a stream setting on addresses, so the stream stuff is implemented but no 'fee intelligence' if you will. 00:56:36 justanotheruser: you can also do steams based on sharding H(addr) space (roughly speaking) 00:56:53 I think they don't quite have the incentives well aligned. they guy sending to you pays the pow for your choice of stream. 00:57:05 so, duh, yea, of course I'm going to pick stream 0. 00:57:14 let you suckers pay the cost of messaging me. 00:57:32 gmaxwell: yup, although another way to look at it, is the person messaging you is picking the size of the anonymity set thye want *their* message to be in 00:57:40 Well there is an incentive to have someone message you right? 00:57:54 I mean to send a message 00:58:15 So if you don't agree on the stream then it wouldn't be sent 00:58:23 justanotheruser: yup, and stream would be part of addr 00:58:24 petertodd: well no the recipent picks the the stream. Not the sender, and thats generally good because its the recipents privacy that is triciker. 00:58:45 I think the incentive issue is probably not fatal, as justanotheruser says— people want to recieve messages. 00:58:49 But it is interesting. 00:59:05 eristisk has joined #bitcoin-wizards 00:59:21 gmaxwell: right, but you can easily imagine a system where you have receivers listening to some fraction of the addr space by prefix, and senders get to pick how much of the prefix they match based on how much pow they spend 00:59:39 gmaxwell: limit bandwidth based competition for a given prefix specificity 01:00:33 gmaxwell: hilariously, that matches really well to what PoW algorithms actually do... but in the exact wrong way 01:01:12 How does the reduced anonymity effect the anonymity of coinjoins? Does it even matter? 01:01:48 justanotheruser: depends on how anonymous you want to be... 01:01:59 I don't know that it even matters. ... though I assume anyone would use bitmessage over tor. 01:03:27 justanotheruser: oh, you mean coinjoin over bitmessage? meh, bitmessage isn't a great message layer for cj anyway from a usability perspective 01:04:05 petertodd: there are no more sutiable traffic analysis resistant privacy networks. 01:04:07 petertodd: Why not? I would think it is great, it just needs a layer on top of it to handle it 01:04:10 justanotheruser: needing a PoW to send a message is ugly vs. using fees for it 01:04:27 justanotheruser: and you can use fees to pay for it with the nLockTime trick 01:05:17 petertodd: I think gmaxwells idea of using PoS is better. 01:05:48 People don't really want to pay double fees, one for the message and one for the coinjoin. 01:06:14 justanotheruser: you don't have too though, you make a nLockTime'd tx spending one input, and then respend it in the coinjoin 01:06:41 justanotheruser: either way you spend some tx fee, and you can arrange all of this such that the attacker doesn't learn much 01:06:55 petertodd: how would you determine the coinjoin tx without being able to communicate with the network first? 01:07:17 justanotheruser: your communication includes that nLockTime'd tx - that's how you pay for it 01:07:54 petertodd: well you would have to pay a fee for that tx, then everyone would have to pay a fee for the coinjoin tx to go through 01:08:05 justanotheruser: which you have to anyway - tx's aren't free 01:08:22 petertodd: yes, but with PoS you only have to pay one 01:09:02 justanotheruser: no, it's identical to pos, except that you ensure something of value is actually lost 01:09:34 justanotheruser: after all, you can't prove pos other than by signing for a txotu scriptPubKey, this is the same, except you've signed a valid-in-the-future transaction with some minor fee 01:11:25 petertodd: When you have stake that means you payed a fee to get the coins. That is what you lost. 01:12:18 justanotheruser: it's the same argument as merge-mining: to the attacker they can re-use something they already have (txouts sitting around) for free 01:12:23 except for cases where millionaires don't pay fees, but there aren't enough of those to worry about 01:12:32 orperelman has quit 01:13:15 petertodd: they can use it for free, but they can only use a certain amount of it. Then they have to make another tx to spend again. The coinjoin tx takes care of this. 01:14:28 s/use a certain amount of it/use it to a certain extent. 01:15:21 justanotheruser: yes, but now you have to have a database of UTXO's whose stake has been proved, vs. there's a natural time limit because the fee sacrifice tx's get mined 01:16:13 gmaxwell: does pinnochio take care of petertodds concern? 01:17:46 petertodd: Wouldn't proof of burn also remove anonymity in the same way? 01:18:39 justanotheruser: yes, emphasis on the same way, they're both identical re: anonymity, but the burn version has better resistance to DoS attack 01:21:47 petertodd: I don't understand pinnochio fully, but gmaxwell said it would work for proof of burn and I think he said it would work with PoS 01:22:01 It's a pretty big research paper 01:22:15 what concern? 01:22:16 And I have to look stuff up every page 01:22:22 you guys said a bunch of stuff 01:22:35 gmaxwell: (08:15:21 PM) petertodd: justanotheruser: yes, but now you have to have a database of UTXO's whose stake has been proved, vs. there's a natural time limit because the fee sacrifice tx's get mined 01:22:37 justanotheruser: pinnochio is orthogonal to the choice between proof-of-stake and proof-of-sacrifice 01:23:15 petertodd: then your comment was irrelevant to the discussion of which was the better method 01:23:27 what pinnochio lets you do is make compact blind proofs from something where you have efficiently extractable authenticated data. 01:23:29 because they both have that glaw 01:24:03 justanotheruser: pinnochio's proof-of-stake for anti-DoS still requires a UTXO database, or you can re-use proofs. (it becomes like some weird zero-coin thing in that case) 01:24:35 right now because we don't have a committed utxo proof-of-sacrifice will be smaller unless you expect all validators to keep a copy of the utxo themselves. Having the verifiers have a utxo database might actually be a bunch better since it could be restructured in a way to make the proofs small. 01:24:36 justanotheruser: for the proof-of-burn case, then pinnochio is less desirable because you have to do a separate burn that's actually mined 01:25:22 petertodd: my suggest for rate limiting based on POS is that you do get a once per $time_interval random ID out of your stake. 01:25:32 gmaxwell: proof-of-stake for anti-dos requires you to at worst end up storing something like a bloom table of spent stakes 01:25:52 gmaxwell: it's doable, but potentially ugly long-term if people really want to attack it 01:25:54 yea, you'd then use a hashtable that you keep for $time_interval 01:26:13 gmaxwell: I mean, you've created an incentive to make a lot of utxo's you know... or failing that, you let rich people block coinjoin 01:26:32 gmaxwell: at least proof of burn ensures they'll spend fees doing so 01:26:32 petertodd: well of course the proof can emerge a bound on its value. 01:26:47 couldn't your "proof of time" be the hash of your proof plus the unix time being below a certain value? 01:26:58 proof of burn can't be done non-interactively in zero knoweldge. 01:27:43 PoS and PoS can be. 01:27:51 gmaxwell: no, but my trick of nLockTime'd tx's isn't a serious disadvantage - note how you can very much use a different txout then the one you actually join 01:28:02 for coinjoin PoB is pretty great, I agree. 01:28:19 since coinjoin inherently must expose a txout. 01:28:35 yeah, and for everything else, proof-of-prior sacrifice *with* some kind of domain-specific tag is pretty decent 01:28:38 for something like a replacement for BitMessage's pow I prefer PoS or PoS. 01:28:57 gmaxwell: PoS and PoS (i do keep reading that as piece of s**t...) 01:29:27 Proof of Stake or Proof of sacrifice. 01:29:38 sipa: PoS and PoX I prefer myself 01:29:47 gmaxwell: should their stake expire after a certain number of blocks? Otherwise they can use the network at no cost 01:30:07 justanotheruser: you'd prove that you had stake as of some reference time that moves periodically. 01:30:17 e.g. first block after midnight utc every day. 01:30:29 justanotheruser: funny how you actually want the inverse of coinage in this case 01:30:39 petertodd: yes, coin/days 01:30:50 every day at the first block after midnight all the message nodes snapshot their utxo and reorg it into a hash tree and save the root. 01:31:20 Then when you want to use a message for this hour you run the ZK proof to get a token good for the hour that proves you had a coin in the last day's utxo snapshot. 01:32:09 likewise for proof of sacrifice, except you just extract sacrifice like transactions. 01:32:16 gmaxwell: heck, just prove you have a txout that existed in some time period, and spent a txout preior with some amount of coin-days destroyed 01:33:23 yea, whatever, you can get compact proofs of any of this if you don't mind the participants needing to bitcoin nodes and thus generating the data extracts themselves. 01:33:56 gmaxwell: well, that case you'll have all that data in your wallet actually 01:33:58 unfortunately using bitcoin's own data for ZK proofs is kinda craptastaic because of having to traverse a whole variable length transaction just to extract an output. 01:34:06 yup 01:34:19 but if you extract the data directly you can reorder how its stored. 01:34:35 How big is the proof of stake using pinnochio? 01:34:43 e.g. use exactly the ultraprune data structure though bitcoin itself never commits to it... all participants would come up with the same value. 01:36:03 justanotheruser: the proofs are 288 bytes (well, in the pinnochio paper they might be a bit larger, but they can be done in 288 bytes), plus a few more bytes to identify the serial number, epoch, and utxo set that its relative too. 01:36:54 That's not bad 01:39:03 gmaxwell: Why is a proof of SHA256 so big? 01:41:18 justanotheruser: SHA256 is a non-trivial function? 01:41:33 maaku: So ECDSA isn't? 01:42:03 that's an apples-to-hot-wheels-cars comparison 01:42:24 gmaxwell: I do not appear to have an easily-accessible sidechain that reorgs out 1000-blocks, if -loadblock can be used to replay the blk*.dat files and the dat files have the sidechains stored in them by default. 01:42:29 justanotheruser: you don't need to prove ECDSA in this case 01:42:37 gmaxwell: I have one more place where I can look. Would you like me to check? 01:43:06 Because ECDSA is special in that it naturally yields compact proofs of knoweldge. There are very few things that do this. 01:43:15 midnightmagic: not that urgent I have it at home someplace. 01:43:20 gmaxwell: how does that work? 01:43:29 roidster has joined #bitcoin-wizards 01:43:32 ok 01:43:45 roidster is now known as Guest82569 01:44:07 gmaxwell: If it's cleanly possible to get a copy of that I would sure love one. :-D 01:44:09 petertodd: an ECDSA signature is a proof you know the discrete log of the public key value. 01:44:43 gmaxwell: ah, and these schemes can do that directly? 01:45:15 petertodd: no no. Perhaps we're miscommunicating. 01:45:34 I thought justanotheruser was asking why the pinnochio proofs were much bigger than an ECDSA signature. 01:46:02 gmaxwell: right, I took it as asking why you couldn't feasible make a pinnochio proof of a ECDSA sig 01:46:07 ECDSA is basically a scheme designed for creating a compact proof... for a very specific operation 01:46:48 petertodd: oh you could, and ... like all other GGPR'12 proofs would be 288 bytes. Though the proving time might be awful. 01:47:14 gmaxwell: right, and the proving would be some crazy thing that basically implements ECDSA with some circuit 01:47:40 right, with an arithemetic circuit over some finite field. 01:48:10 (or some boolean circuit, though usually arithemetic circuits are more compact, e.g. they make sha256 quite compact) 01:49:09 eristisk has quit 01:56:48 so the pinnochio source code is available, but I don't see any license anywhere 01:57:19 oh wait, I found it, Microsoft non-commercial, not too useful 02:05:09 jron has quit 02:12:37 petertodd: meh, that doesn't worry me _that_ much. The verifier is just a couple dozen lines of code given a sutiable pairing library. (which they don't provide, but there are several sutiable liberally licensed ones available) 02:14:05 the interesting code they provide is the circuit generator and the prover which are non-normative so long as you don't make something which is married to a single validation key. 02:16:44 about coloring in the context of zerocash, i think they could include another value in the hash, being the color 02:17:50 gmaxwell: that kind of sucks about the EdDSA high bit.. i was looking forward to compact k of n sigs, blind sigs & such :( 02:19:14 adam3us: I mean, it would only be a couple of lines of code to add schnorr signatures to sipa's library. compact k of n is kind of a killer feature. 02:20:00 gmaxwell: kind of annoyed at DJB now that is an unclean hack disguised as a feature. it fails composability 02:23:54 adam3us: well, I was made kind of annoyed by the "Safe or Not" summary table most recently added to safercurves 02:24:09 which has now three times caused me to get questions with urgent concerns that bitcoin's curve is not safe. 02:25:41 gmaxwell: the guys on IRTF/CFRG are making an RFC for safe curves.. can be good place to ask questions or complain if u see problems. they seem to have a good collection of people who understand ECC & coding 02:26:18 gmaxwell: as there is a guy moving pretty fast on getting an RFC through standardizing the safe curves 02:26:22 It's my opinion that the addition of the binary safe or not table debased an otherwise thoughtful site to marketing tripe... since it happily fails bitcoin's curve because the endomorphism shaves off 1.5 bits of security, while meanwhile his curves cofactor of 8 shaves off at least three bits of his already smaller curve, and then his implementation throws away another bit for that optimization. 02:26:27 wyager has joined #bitcoin-wizards 02:26:31 wyager has quit 02:27:18 jron has joined #bitcoin-wizards 02:30:35 "safe or not" is pretty stupid when it comes to proclamations of security completely devoid of context 02:31:50 if someone wants to advocate for schnorr and bip-32 comaptability with the RFC safe curves, that'd be a noble thing to do 02:35:04 what is considered unsafe about secp256k1? 02:35:28 http://safecurves.cr.yp.to/ 02:35:32 scroll down 02:35:48 it's "not safe" if it doesn't meet all of DJB's criteria. 02:36:07 the criteria are all interesting. Few of them would justify not-safe for failing them 02:36:17 jron has quit 02:37:13 esp since the critiera omits other no less reasonable considerations like "cofactor == 1", presumably since his own curves fail it. 02:37:38 chiefly, the fact that it doesn't have "25519" in its name 02:41:06 I gave a somewhat irritated response here: https://bitcointalk.org/index.php?topic=380482.0 (being that it was the second time that day I'd been asked about it) 02:46:29 jtimon has quit 02:55:44 DougieBot5000 has quit 02:58:13 Ursium has quit 02:59:03 jron has joined #bitcoin-wizards 03:28:14 wizards, i am enrolled in a "numerical iterative methods" class which is very open ended 03:28:34 can you think of any interesting (or useful to bitcoin) numerical analysis projcets? 03:35:47 andytoshi: network simulations can fall in that bucket. 03:36:38 andytoshi: if you wanted to fool with an altcoiny thing, control loops for difficulty adjustment. What else? Hm. anti-spam/dos attack hurestics perhaps. 03:38:41 mr_burdell has joined #bitcoin-wizards 03:49:35 Guest82569 has quit 03:58:32 Ursium has joined #bitcoin-wizards 04:03:20 Ursium has quit 04:30:18 mr_burdell has quit 04:35:02 jron has quit 05:01:14 Ursium has joined #bitcoin-wizards 05:06:15 Ursium has quit 05:09:55 jron has joined #bitcoin-wizards 05:22:53 gmaxwell, just take your entire hardfork list and implemetn them 05:29:27 orperelman has joined #bitcoin-wizards 05:38:33 justanotheruser has quit 05:45:09 orperelman has quit 05:48:39 justanotheruser has joined #bitcoin-wizards 05:50:09 justanotheruser1 has joined #bitcoin-wizards 05:51:20 justanotheruser1 has quit 05:51:20 justanotheruser1 has joined #bitcoin-wizards 05:52:55 justanotheruser has quit 05:55:55 justanotheruser1 has quit 06:00:43 justanotheruser has joined #bitcoin-wizards 06:01:59 Ursium has joined #bitcoin-wizards 06:05:26 justanotheruser1 has joined #bitcoin-wizards 06:05:54 justanotheruser has quit 06:07:24 Ursium has quit 06:10:32 justanotheruser1 has quit 06:10:32 justanotheruser1 has joined #bitcoin-wizards 06:12:34 Is there an alternative to pandora that has a GP or BSD license? 06:12:58 * Pinocchio 06:14:01 justanotheruser1 is now known as justanotheruser 06:17:05 fractastical has joined #bitcoin-wizards 06:30:36 fagmuffinz has joined #bitcoin-wizards 06:34:14 go1111111 has joined #bitcoin-wizards 07:02:24 maaku has quit 07:02:42 maaku has joined #bitcoin-wizards 07:03:05 maaku is now known as Guest13248 07:04:30 Ursium has joined #bitcoin-wizards 07:09:45 Ursium has quit 07:22:27 roidster has joined #bitcoin-wizards 07:42:36 roidster has quit 07:51:40 brisque has joined #bitcoin-wizards 08:01:03 iddo has quit 08:01:10 iddo has joined #bitcoin-wizards 08:05:17 Ursium has joined #bitcoin-wizards 08:10:00 Ursium has quit 08:26:19 Guest13248 is now known as maaku 09:06:00 Ursium has joined #bitcoin-wizards 09:06:05 <_ingsoc> _ingsoc has joined #bitcoin-wizards 09:11:48 Ursium has quit 09:12:23 andytoshi: numerical iterative analysis? perfect one for you: selfish attack? 09:32:16 fractastical has quit 09:47:21 TD[gone] is now known as TD 09:51:25 is there a EdDSA mailing list? or should i just email DJB? want to figure out this highbit/constant time 'hack' limitation on composability, thats kind of broken. 10:05:24 brisque has quit 10:05:41 brisque has joined #bitcoin-wizards 10:07:05 hnz has quit 10:11:55 hnz has joined #bitcoin-wizards 10:25:11 go1111111 has quit 10:30:41 brisque has quit 10:37:57 Ursium has joined #bitcoin-wizards 10:40:11 jtimon has joined #bitcoin-wizards 11:18:53 shesek has quit 11:31:01 shesek has joined #bitcoin-wizards 11:51:56 <_ingsoc> _ingsoc has quit 11:53:16 <_ingsoc> _ingsoc has joined #bitcoin-wizards 11:59:13 typex has quit 11:59:13 typex has joined #bitcoin-wizards 12:18:28 adam3us: the 'hack' is pretty simple, the second answer here explains it: http://crypto.stackexchange.com/questions/11810/when-using-curve25519-why-does-the-private-key-always-have-a-fixed-bit-at-2254/11818 12:19:15 and it's also easy to avoid, even if you want to run in constant time -- but then we'd have a nonstandard implementation 12:21:51 it might be worthwhile to bug him and ask what he was thinking, because it really is ugly and you're a name he ought to recognize.. 12:30:13 lianj has quit 12:30:44 lianj has joined #bitcoin-wizards 12:30:44 lianj has quit 12:30:44 lianj has joined #bitcoin-wizards 12:54:06 <_ingsoc> _ingsoc has quit 13:15:24 <_ingsoc> _ingsoc has joined #bitcoin-wizards 13:28:12 andytoshi: hmm so neves is saying it doesnt matter, if the code does the defense as the reference does, it is still constant time. what about the other bits? a[255]=0,a[254]=1, a[2]=a[1]=a[0]=0 13:28:38 adam3us: none of those will necessarily be the case after public HD derivation 13:29:53 adam3us: andytoshi: a[255]=0 maybe ok, as |n| < 255 (the order) i presume from the h=8 (cofactor) 13:36:13 adam3us: a[255] it appears is always zero, yeah, we'd be fine there (though why are we "using 255-bit strings" with only 254 actual bits??) 13:36:39 and as you say (and gmaxwell has been whining for weeks), bit 254 might not be set after pubic HD derivation, or multisig with additive signatures 13:37:18 this seems weird, i dunno why the reference implementation didn't just hardcode the 254 in there 13:38:39 maybe add a big comment saying not to change that if you are reimplementing, but i think it's pretty obvious that if you make your loop bounds depend on the input you are asking for timing attacks 13:38:55 andytoshi: 256-bits (0..255) probably just for power 2 & word size divisibility. not necessary he says you can reuse the bit in bit-stealing if u want. 13:39:22 oh, good to know 13:42:27 andytoshi: so the thing with the co-factor is there is think a small subgroup also as n=h*l (l subgroup size, h cofactor, no points on curve), so trailing 000 is actually computing d=rand(0,l), Q=dG, Q'=8Q i think to avoid the small subgroup, 13:44:50 andytoshi: (ie the useful private key is 251 bits, and presumably |l|=251) but still u stay in the subgroup once u start there, so Q"=Q'+MAC(chain,ctr)G is still in the subgroup (hopefully!) 13:45:37 andytoshi: actuall i guess |l|=252, the top-bit is not "useful" as its fixed but its still part of the private key 13:47:45 adam3us: understood, though i suppose i don't understand why this subgroup is so bad that we actually need to zero it out 13:47:54 i guess fixing a representative of the coset is needed for determinism 13:48:05 andytoshi: actually take that back |l|=253, paper: l is the prime 2^252+2... 13:50:16 andytoshi: maybe its fixable. its just an obtuse way of saying d=rand(0,l-1) Q=8dG right? 13:50:49 andytoshi: so do the *8 part after HD derivation 13:51:03 that's my understanding, and also i think it's just obtuse so that he can hold bit 254 fixed 13:54:13 adam3us: at first glance, doing *8 after derivation would make HD work, i don't think the cofactor is a problem for us (though it weakens security by those 3 bits, and gmaxwell is pissed that djb considers this "better" than the ~1.5 bits our curve loses by fast parameter choices) 13:54:35 but i don't see how we can hold bit 254 on 13:54:54 though i guess we could grind through HD keys until we get one with bit 254 set :} 13:56:05 (kidding!) anyway i've gotta run, good talking to you 13:56:22 andytoshi has quit 13:58:57 andytoshi: Bernstein et al's style is obtuse in general :( cleary if ou do Q=dG (d chosen rand(0,l-1)) then you do HD derivation Q"=Q+M(c,i)G, and finally Q"=8Q' then there is no guarantee that top bit is 1 as its mod l, but we dont care about that anyway 13:59:35 andytoshi: well with public derivation u have no way to know what the top bit of the private key is. 14:00:36 frokost has joined #bitcoin-wizards 14:31:43 vdo has joined #bitcoin-wizards 14:44:18 andytoshi has joined #bitcoin-wizards 15:02:44 frokost has quit 15:17:10 frokost has joined #bitcoin-wizards 15:21:45 tacotime_ has quit 15:28:43 brisque has joined #bitcoin-wizards 15:30:49 DougieBot5000 has joined #bitcoin-wizards 15:45:36 roidster has joined #bitcoin-wizards 15:48:57 vdo has quit 15:57:55 shesek has quit 15:58:14 shesek has joined #bitcoin-wizards 16:24:03 frokost has quit 16:30:57 fractastical has joined #bitcoin-wizards 16:35:00 <_ingsoc_> _ingsoc_ has joined #bitcoin-wizards 16:35:57 <_ingsoc> _ingsoc has quit 16:41:13 justanotheruser has quit 16:55:16 fractastical has quit 17:39:43 farewell net netrality, we hardly knew ye 17:41:25 :/ 17:43:34 frokost has joined #bitcoin-wizards 17:57:09 brisque has quit 17:59:06 frokost has quit 18:03:05 fractastical has joined #bitcoin-wizards 18:05:12 maaku: you don't have any great ideas on how to prevent incentive buggary with expensive validation do you? 18:09:05 fractastical has quit 18:09:48 justanotheruser has joined #bitcoin-wizards 18:10:05 andytoshi: you called it correctly on my complaints. WRT cofactor there are two complaints, one it that there is the direct rho security reduction from the decrease in the order, compariable in magnitude to the rho reduction he dings secp256k1 on. The other is that having a non-trivial cofactor is a necessary precondition for index calculus, though just a single extra distinct prime factor is probably no concern, all thing equal we ... 18:10:11 ... should prefer thing with a cofactor of 1. 18:11:22 fagmuffinz has quit 18:11:57 fagmuffinz has joined #bitcoin-wizards 18:26:26 fractastical has joined #bitcoin-wizards 18:26:51 gmaxwell: so do u know does the trailing 000 bits of d matter? that also will be lost by HD derivation 18:27:17 fagmuffinz has quit 18:27:53 fagmuffinz has joined #bitcoin-wizards 18:28:22 andytoshi: is there an irc channel or bitmessage broadcast address or something anouncing pending coinjoin sessions? 18:29:51 <_ingsoc_> _ingsoc_ is now known as _ingsoc 18:32:07 TD is now known as TD[gone] 18:32:38 adam3us: so long as you compute the derivation the right way you can preserve it. Basically the scalar you compute in it has to also be a multiple of 8. 18:33:22 adam3us: because the order is prime*8 the sum of any two numbers which are themselves a multiple of 8 will still be a multiple of 8, thats what results in it being a subgroup. 18:33:52 pigeons: no, not yet, i have just released a client and having trouble finding testers during my free moments 18:34:26 i'll check out bitmessage tho, that'd be fun to set up 18:35:16 gmaxwell: but if you are working in the subgroup, the scalars are then mod l not mod n=8l? or is B a generator of the full group? 18:36:58 oh darn. hm. I think you're right. obviously the basepoint isn't going to generate the full group. 18:37:17 then I don't understand anymore why the private key is constrained. 18:38:23 gmaxwell: well a base point could be generator of the full group, i think (if they chose it that way?); and that may explain the 8s that appear in the verification relationship perhaps. 18:45:25 fractastical has quit 18:54:20 gmaxwell: what's the context of "expensive validation" - my script musing on #bitcoin-dev? 18:54:35 maaku: yea 18:55:49 well in some of the applications i'm imagining it could be more efficient to validate a message signature than a transaction 18:56:53 so, you could sign the transaction itself as a message, efficiently proving you have the inputs, and then get gray-listed if the actual validation fails 18:57:51 e.g. the script is "if real-transaction then endif " 18:58:13 i would like a better method though 19:00:31 you could require something like the above if the (explicit) instruction count is greater than some normal-use threshold 19:02:03 pigeons: ;;cjs 19:02:09 ;;cjs 19:02:10 Coinjoin Status: There is no currently open session. Visit https://www.wpsoftware.net/coinjoin/ or http://xnpjsvp7crbzlj3w.onion/ to start one. 19:02:34 andytoshi: but it'd be nice if there was an announcement when a new session started 19:05:19 gmaxwell: so i was musing an analogous argument to pegged side-chain security (cant inflate supply of main chain) could be used to introduce SNARKs + committed-tx or some variant of it in a zero-coin like zerotrust mixer on the main chain 19:06:09 Anyone have a link to andytoshi's cj client? 19:06:12 gmaxwell: or perhaps more simply, just make a zerocash snark as a reference example of a pegged-side chain (though i note even green put a disclaimer in his talk that this is a bit bleeding edge and could have problems) 19:06:37 maaku: Couldn't I send a bogus TX that has a ton of operations to verify to chew through processing power? 19:07:57 ielo has joined #bitcoin-wizards 19:07:58 gmaxwell: which seems kind of ironic (proposing to integrate zerocash in the pattern in which zeroin was proposed), now that zerocash is proposed as an alt. (and I and Hal were more excited about moving zerocoin into its own alt) 19:08:12 You would have to do a ton of ops before you realize the TX isn't valid 19:09:15 EasyAt: yes, which is why as I said above you might require that the owner provide a quick-verifying signature over the transaction of the expensive inputs 19:09:23 so you know the transaction came from him 19:09:26 anyone how big is the UTXO set if compacted now? 19:09:33 and then gray-list the inputs if the validation fails 19:09:42 adam3us: gettxsetinfo or something similar 19:10:21 EasyAt: then it at least becomes expensive to perform DoS 19:10:42 * andytoshi-logbot is logging 19:12:15 Oh, are the logs not live? 19:12:20 maaku: What do you mean by gray list? 19:12:34 e.g. only pay attention to transactions with inputs that have less than 20 instructions, *or* transactions enveloped with a less-than-20-ops signature for the expensive inputs 19:13:18 gray list would be a list of inputs you no longer relay transactions for, maybe for a period of time or require higher fees 19:14:38 michagogo|cloud: source is at https://github.com/apoelstra/cj-client 19:14:58 michagogo|cloud: windows build at http://download.wpsoftware.net/bitcoin/cj-windows.zip 19:15:15 thanks 19:15:24 andytoshi: about 300 mbytes. 19:15:26 oops 19:15:28 adam3us: 19:15:44 "cj-windows.zip is not commonly downloaded and could be dangerous." 19:15:44 gmaxwell: !!!! ;) 19:15:57 bitcoind gettxoutsetinfo 19:15:57 { "height" : 280494, "bestblock" : "00000000000000024c41edbc27cb0d093b593a47030b886fade01f9d19b8047a", "transactions" : 2597060, "txouts" : 8350183, "bytes_serialized" : 293414423, "hash_serialized" : "ca53e5d3a59fc7a3dca134cce6942c2af5d85c2ce21d985c8b06526e795faf74", "total_amount" : 12262214.79395749 19:16:02 } 19:16:07 michagogo|cloud: populism is not security, your browser uses faulty assumptions 19:16:13 andytoshi: I know 19:16:22 I wasn't ascribing any meaning to that thing 19:16:31 Just wanted to let you know Chrome was flagging it 19:16:43 what a shitty thing 19:16:44 ok, good to know 19:16:51 chrome should really be flagging windows.. 19:16:53 I bet if you throw the same binary on github you get no warning. 19:17:05 btw, I assume it uses RPC? 19:17:07 Which calls? 19:17:17 (i.e. can it work on 0.8.6?) 19:17:34 michagogo|cloud: listunspent, createrawtransaction, decoderawtransaction, signrawtransaction, getaddress, walletpassphrase 19:17:44 i think those are fine 19:18:02 also gettxout 19:18:05 oh, gettxout, dumpprivkey 19:18:28 you might want to use getrawchangeaddress but I think its git-only. 19:18:51 perhaps try getrawchangeaddress and if it isn't there, use getnewaddress? 19:18:59 In about 7 minutes when my 0.8.6-compatible blocks and chainstate finish copying over I'll see 19:19:06 gmaxwell: what is the difference? 19:19:41 andytoshi: change addresses get hidden in the transaction list. But perhaps not. actually nevermind that if you do that people will spazz. 19:20:24 though .. actually you really should have a feature to let the user specify recipent addresses for the CJ outputs. (Personally I send my CJ outputs to offline wallets!) 19:21:21 gmaxwell: agreed, my original UI sketch had such a thing 19:21:28 but it's hard to design a UI for that non-intrusively 19:21:43 andytoshi: Hm, it doesn't seem to be launching 19:22:00 The process is ther, but just sitting at 164K of memory 19:22:03 there* 19:22:05 michagogo|cloud: any output? 19:22:08 and not visibly opening anything 19:22:29 my guess is that it's stalled pinging my server.. 19:22:32 Oh, that's why 19:22:42 I don't know why it took so long to show up 19:22:53 "Our information on this file is inconclusive." 19:22:55 ssshhh has joined #bitcoin-wizards 19:22:56 oh, weird, it's quick for me (and i'm a good 2500km from the server) 19:23:08 "We recommend not using this file unless you know it is safe." 19:23:13 well it does connect to the remote server at startup. 19:23:15 oh fuck windows 19:23:19 andytoshi: Nah 19:23:27 Not Windows, security software 19:24:33 fractastical has joined #bitcoin-wizards 19:26:27 gmaxwell: so that is 275MB vs 13GB for utxo vs txo about 2% 19:27:23 more like vs 16G. 19:28:00 gmaxwell: oh i thought jgarzik said his torrent was 13G 19:28:04 adam3us: sipa did some charts a long time ago, utxo size looked to be ~log() the blockchain size. 19:28:16 the torrent doesn't take it up to tip. 19:29:45 gmaxwell: (sending email cc green re contact from the other crypto guy mentioned in PM, i thought I'd take the opp to correct his 16GB bitcoin vs 1.2GB zercocash claim;) 19:32:08 Ursium has quit 19:36:13 <_ingsoc> _ingsoc has quit 19:36:36 go1111111 has joined #bitcoin-wizards 19:36:59 andytoshi: eww, always-on-top? 19:37:58 you don't get anywhere in the dog-eat-dog world of windowing systems by ceding your platform 19:39:29 michagogo|cloud: what is always on top? 19:39:37 The cj client 19:39:47 really? 19:39:54 Yes. 19:40:06 who doesn't like it on top 19:40:22 * michagogo|cloud 19:40:30 oh, oops, i had gtk_window_set_keep_above () in there 19:40:37 i didn't notice because i don't use a floating WM 19:40:40 * gmaxwell xmoand user unaffected 19:40:53 ;;google xmoand 19:40:54 [Arena PvP] Xmo and Xtk 2v2 - Forst Mage/Mage pt 1 - YouTube: ; Xmo and Xtk TCB Double Frost Mage 2v2 Arena Part 1 - YouTube: ; Xmo and Xtk 2v2 Act II Double Frost Mage 2v2 Arena Part 1 - YouTube: 19:41:07 yea, srsly. y'all use a floating window manager? sucks to be you. 19:41:08 xmonad? 19:41:09 ....and a thought gmaxwell had a floating WM :P 19:41:11 And 19:41:27 Ah* 19:41:28 michagogo|cloud: thanks much for testing, you are the first person with a normal system to have done so 19:41:28 No, I use xmonad. 19:41:30 i'll refresh the build 19:42:03 hehe, I tried some tiling VM but I left it due to a lack of time for config 19:42:05 (I was happy I didn't need to report problems with the tiling wm, I guess I know why now) 19:42:15 I will definetely try again though 19:42:16 jtimon: to configure xmonad is very simple. 19:42:45 You join #haskell and nice people do it for you. 19:42:46 I shouldn't had started with ratpoison, but the name was so cool 19:42:47 senate judiciary hearing on NSA started 10m ago 19:42:56 andytoshi: Is there a way to cj on testnet? 19:42:57 http://www.c-span.org/Live-Video/C-SPAN3/ http://www.judiciary.senate.gov/hearings/hearing.cfm?id=32caee8082f9297f0e7df6280b369172 19:42:59 the two I used more were i3 and qtile 19:43:13 ;;tcjs 19:43:13 Error: "tcjs" is not a valid command. 19:43:19 ;;cjst 19:43:19 Error: "cjst" is not a valid command. 19:43:22 michagogo|cloud: yeah, there is a cjconfig.conf file 19:43:22 (Cass Sunstein currently summarizing review panel findings) 19:43:33 nsh: what did they find? 19:43:35 in cjclient/, wherever Bitcoin/ is 19:43:35 andytoshi: What's the URL for the testnet page? 19:43:54 gmaxwell: hehe, I doubt the #python nice people will config qtile for me 19:43:58 michagogo|cloud: oh, right, i forgot the server needed to support it 19:44:01 one moment, i'll put it up.. 19:44:13 andytoshi: There doesn't seem to be a %appdata%/cjclient 19:44:34 "Classified. Classified, classified classified classified classified classified classified. Classified classified classified classified. Classified classified classified, classified classified classified classified; Classified. 19:44:38 " 19:44:42 funny video introducing qtile http://www.youtube.com/watch?v=r_8om4dsEmw 19:44:53 gmaxwell, something like that aye 19:45:01 michagogo|cloud: is it listing your coins correctly? 19:45:18 jtimon: this is why you have to use xmonad. The programmers in other languages have actual applications for their skills. Whereas with haskell the only thing they have to do is configure xmonad for people. 19:45:32 andytoshi: I don't have a mainnet client open yet 19:45:43 oh, my cjclient/ dir is using c:/users/apoelstra/Local Settings/Application Data/cjclient 19:45:43 Ah, looks like the copy finished 19:45:45 one moment 19:45:51 i don't think that Local Settings/ should be there 19:45:53 gmaxwell: loool 19:45:58 andytoshi: XP? 19:46:03 michagogo|cloud: wine 19:46:10 WineXP? 19:46:19 uh, i dunno 19:46:20 Or even earlier? 19:46:27 yeah, winecfg says XP 19:46:31 I know Wine lets you choose which version of Windows to pretend to be 19:46:43 And I know that Application\ Data is pre-Vista 19:47:19 ok, i'll figure out the glib function to get %APPDATA%.. 19:47:24 bitcoin is in %APPDATA%/Bitcoin yes? 19:47:29 Indeed 19:47:39 (C:\Users\Micha\AppData\Roaming) 19:49:37 ;;blocks 19:49:38 280495 19:50:26 andytoshi: oh, btw, it's not showing my coins 19:50:38 michagogo|cloud: yeah, it's looking for Bitcoin/ in the wrong place 19:50:52 Ah, I see 19:50:55 https://www.irccloud.com/pastebin/u9B6Gp0X 19:51:33 andytoshi: Ah, I see. Specifically, it's using %localappdata% 19:51:49 I guess it doesn't plant its folder unless it manages to find Bitcoin/? 19:52:57 michagogo|cloud: it doesn't plant its folder unless something changes, yeah 19:55:52 adam3us, gmaxwell: current bootstrap.dat @ block 279,000 is 14222116865 bytes 19:57:25 Hmm, I wonder how hard it would be to change linearize.py to allow it to be given an existing bootstrap.dat and have it detect the latest block in there 19:57:47 maaku, what were you thinking on getting from factor to add to joy ? 19:57:49 ;;blocks 19:57:50 280495 19:58:10 (so you can point it at an older bootstrap, and say "bring this up to 279,000") 19:58:12 fractastical has quit 19:58:27 Oh, wait, this is the wrong channel :S 19:58:33 or nothing concrete? 19:59:43 I'm thinking that joy should be easy to merklize, no? 20:04:02 asoltys has joined #bitcoin-wizards 20:08:11 michagogo|cloud: ok, i have refreshed the windows download to use %APPDATA% properly (and fixed the keep-on-top thing) 20:09:25 Ursium has joined #bitcoin-wizards 20:11:05 Hey, there're my coins 20:11:22 :D 20:12:05 andytoshi: Wait, so all this does is shuffle your coins around in your wallet? 20:12:20 michagogo|cloud: yeah, it doesn't do spends right now 20:12:26 i'm not sure how best to UI that 20:12:50 Imitate the Bitcoin-Qt UI? 20:13:16 andytoshi: Not working 20:13:21 Syncing with joiner, session ID unknown 20:13:21 Join server: error setting certificate verify locations: 20:13:21 CAfile: /usr/i686-w64-mingw32/sys-root/mingw/etc/pki/tls/certs/ca-bundle.crt 20:13:21 CApath: none 20:13:35 weeird 20:13:59 what if you delete the libcurl DLL? 20:14:48 The program can't start because libcurl-4.dll is missing from your computer. Try reinstalling the program to fix this problem. 20:15:07 <.< ok, i'll look into this 20:15:14 thx 20:15:22 np 20:22:58 spin123456 has joined #bitcoin-wizards 20:22:58 spinza has quit 20:27:34 orperelman has joined #bitcoin-wizards 20:28:52 harrow has quit 20:34:16 michagogo|cloud: ok, i have stolen some DLLs from msysgit, can you try redownloading? 20:35:18 * michagogo|cloud scrolls up a bunch 20:43:14 rdymac has joined #bitcoin-wizards 20:44:46 * michagogo|cloud slaps explorer.exe around a bit with a large trout 20:45:02 * sipa suggests installing an operating system 20:45:29 sipa: Hmm? 20:46:57 nevermind, silly joke :) 20:47:08 sipa: lol, be thankful that somebody on this channel has a normal system to test with 20:47:11 andytoshi: You messed up again 20:47:17 michagogo|cloud: what now? 20:47:22 Same message as when I renamed libcurl 20:47:33 Except that it's complaining about libcrypto.dll being missing 20:47:41 andytoshi: true that 20:47:54 michagogo|cloud: oops :} i forgot to put that one in the zip 20:48:02 (and it is, indeed, missing) 20:48:08 ..no i didn't .. it disappeared 20:49:06 michagogo|cloud: sorry about that, fixed, can you redownload? 20:50:09 * michagogo|cloud puts http://download.wpsoftware.net/bitcoin/cj-windows.zip at the bottom of the buffer 20:50:47 could you statically link these libs, andytoshi? 20:51:27 michagogo|cloud: not hard i would think, just scan backwards to find the last block 20:51:50 nsh: probably, but i'd have the same problems as i do with bundling DLLs, plus the usual problems (no upgradability, etc) of static linking, plus potentially bad linking issues 20:52:09 ;;cjs 20:52:10 Coinjoin Status: There is no currently open session. Visit https://www.wpsoftware.net/coinjoin/ or http://xnpjsvp7crbzlj3w.onion/ to start one. 20:52:17 * nsh nods 20:52:31 andytoshi: nope 20:52:34 Syncing with joiner, session ID unknown 20:52:34 Join server: SSL certificate problem, verify that the CA cert is OK. Details: 20:52:34 error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed 20:54:10 harrow has joined #bitcoin-wizards 20:54:23 jtimon: nothing concrete - just pointing out that Joy is a pure, simple academic language 20:54:34 which is very good for a consensus system 20:55:14 but in my experience, there is usually a handful of select hacks which offend purists but greatly simplify real world usage 20:55:36 and Factor is a practical language of the Forth tradition, so we should look at that to see if there's anything to borrow 20:55:46 andytoshi: I g2g to sleep now 20:55:50 maaku, any good examples of Joy in use? (that i might find accessible) 20:55:51 (or at least to bed...) 20:55:57 michagogo|cloud: ok, thanks for testing 20:55:57 Good luck. 20:56:00 'night 20:56:04 and yes, Joy - or any concatinative language - should be trivial to Merklize 20:56:15 I may be able to test more of future days 20:56:17 on* 20:59:57 nsh: any kind of covenant 21:00:35 e.g. i issue MarkBTC which is an IOU with 1% interest, but attach a covenant allowing my to buy it back at any time for principle + interest 21:01:26 http://www.reddit.com/r/Bitcoin/comments/1v7ayg/revolution_in_bitcoin_privacy_stealth_addresses/ <- getting good feedback on stealth addrs on reddit 21:03:27 fagmuffinz has quit 21:03:43 fagmuffinz has joined #bitcoin-wizards 21:05:15 * nsh nods, opens tabs 21:06:45 more generally, my musing on this started from trying to Etherium within the context of just changing bitcoin's scripting system 21:08:04 to Etherium? 21:10:58 heh, to do what is trying to be done with Etherium within a (minimally extended) bitcoin 21:11:08 e.g. turing-complete financial contracts 21:11:56 coin covenants, etc. 21:12:50 for example, with a couple of script extensions and re-enabled opcodes, petertodd could make mastercoin fully validating and spv-safe 21:12:57 (using covenants) 21:13:34 interesting 21:13:58 any notes or discussion online? 21:14:53 this is an idea only 12 hours old :P 21:15:01 ah, cool :) 21:15:06 maaku: at least you won't end up in the sad situation of having created a stack based language without roll or rotate. 21:15:19 maaku: actually months old - I proposed it for fidelity bonded bank stuff ages ago 21:15:54 gmaxwell: :\ 21:16:11 petertodd: yeah i figured you'd been working on this, based on our conversation 21:16:40 petertodd: did that involve quines? I thought that part was new 21:17:05 maaku: nah, it needed quines too, and actually credit may go to gmaxwell come to think of it - I'd have to check my IRC logs 21:17:18 ah i'll go read those threads then 21:17:30 ooo quines 21:17:32 poggy_ has joined #bitcoin-wizards 21:17:41 nsh: that's how the covenant workss 21:17:55 oh, fascinating 21:18:16 maaku: I *think* most of it was private conversation actually - wizards didn't exist back then 21:18:37 can you(s) elaborate? 21:18:39 maaku: (this was almost a year ago now) 21:18:43 Yea, well, my 'invention' in the covenant thread is that you could produce a quine SNARK transaction, which is slightly surprising since you don't know the validation key for a snark until you've finished the circuit. 21:18:43 mandate (some of) the outputs to have the same conditionals 21:18:56 Without the snark there are dumb ways to accomplish it. 21:19:14 With the snark it sounds impossible if you don't think about it from the right perspective. 21:19:20 ielo has quit 21:19:25 hmm 21:19:32 /dumb/boring/ 21:19:48 yea, fair enough. 21:20:47 nsh: yeah actually the coincovenant thread is basically a listing of what you could do with a turing-complete script language and introspective builtins 21:21:04 the snark is just a really cool addition 21:21:20 Yea, I think nothing there requires the snark except for efficiency. 21:21:33 might be good to add some examples that need zero knoweldge 21:25:58 petertodd gmaxwell: btw didn't mean to take credit for this old idea. i thought nsh meant the benefits of using Joy 21:27:15 i'm curious in general and specific :) 21:27:48 I'm curious if joy brings us any joy. 21:32:07 cdr=-\ 21:32:12 6jm 21:32:20 sorry 21:33:08 maaku: glad to see you have (formerly) strong passwords 21:33:18 haha, toddler found my keyboard 21:33:44 gmaxwell: well there are bounties. you'd need a zk proof to safely claim a sha256 collision 21:35:00 you can even design a covenant which forces revelation if the coins are to be actually used 21:35:16 * petertodd says hi to little maaku 21:36:58 cdr-=\ -> that's actually potentially valid C code 21:48:38 crispy has joined #bitcoin-wizards 21:57:26 orperelman has quit 22:07:07 orperelman has joined #bitcoin-wizards 22:08:44 Sorcier_FXK has joined #bitcoin-wizards 22:17:43 nessence has joined #bitcoin-wizards 22:22:13 eristisk has joined #bitcoin-wizards 22:34:51 adam3us: I just saw https://github.com/atoponce/d-note uses hashcash to generate a token before you can submit 22:36:07 shesek has quit 22:49:06 shesek has joined #bitcoin-wizards 22:58:29 orperelman has quit 22:58:47 andytoshi has quit 23:05:35 ok, so I need a name for the TC merklized extrospective scripting extension I just understood hours ago 23:05:36 fagmuffinz has quit 23:06:40 otherwise "the new thing" is taken and I cannot learn or think about anything else new too me 23:06:58 tc? 23:07:11 extrospective? 23:07:48 turing complete, no idea 23:08:11 network-external inputs maybe 23:08:15 tc = turing complete 23:09:12 extrospective = you can reference the scripts in the outputs of future transactions, parts in them, and maybe also the current utxo and the block header 23:09:33 jtimon: that's a pretty good description IMO 23:09:34 something outside the script itself 23:09:45 thank you 23:09:47 justanotheruser has quit 23:10:15 jtimon: more than current utxo too, but likely committed data of some kind within (to be clear) 23:11:52 although joy is a new addition and not necessary for the idea I like joyScripts, although I also like quineScripts, and we could also just maintain coincovenants (although not all uses use quines/covenants) 23:14:04 petertodd, you mean previous data in the chain? I guess it could work if people provide proofs to the miners, but for some reason I haven't found yet, that intuitively scares me 23:14:26 also I don't know any use et neither 23:14:41 *yet 23:15:03 jtimon: well, there's the model where it's proof based, referencing the prevblock hash, or you can have a model where miners are expected to actually have some set of data on hand. (that could take a lot of potential forms) 23:15:49 justanotheruser has joined #bitcoin-wizards 23:15:49 justanotheruser has quit 23:15:49 justanotheruser has joined #bitcoin-wizards 23:16:53 stateless validation is very attractive 23:17:33 I'm not sure what you mean by referencing the previous block hash 23:17:36 any stateful process can be reduced to a stateless one just by gathering up the state and presenting it as an input. 23:18:14 jtimon: IE, make your script take a proof in the form of a merkle path to the prevblockhash 23:18:57 petertodd: what kind of commited utxo are we assuming if any? 23:19:16 jtimon: could be a lot of forms, could be a committed MMR TXO too 23:19:42 I see, just one of them 23:20:15 jtimon: well, you can do both if you really want :P 23:20:31 jtimon: and actually, if you do expiration, both could make a lot of sense 23:21:56 well, I think expiration would be necessary for your TXI thing, but I don't know much about MMR 23:23:00 the advantages and stuff, I just read that once but I don't remember the motivation 23:23:12 I'm going to read again 23:24:10 but maybe a hybrid commited expired-TXI + UTXO would make sense too? 23:24:23 exactly 23:24:30 oh, I see 23:24:45 you use the MMR structure for the TXI ? 23:25:16 one interesting thing is that you probably want the PoW algorithm to be tightly coupled to some subset of blockchain data - perhaps the last year/GB of it - so a PoW on the UTXO set is an attractive idea 23:25:34 right, for long-term MMR works really well 23:26:34 note that when I say "UTXO" set that doesn't necessarily mean it the way you would mean in bitcoin - for some extrospective scripting consensus system your utxo set might mean a lot of things that may or may not be coins 23:27:21 to be honest, I'm thinking in freimarket's utxo 23:27:30 e.g. the absolute extreme you can take this idea is for the system to be essentially a key-value global consensus, where keys are H(script) and values the output of those scripts (basically) 23:27:38 with asset types, unique bitstrings... 23:27:43 yup 23:28:04 and mastercoin needs to look something like that if it's going to be useful 23:28:36 well, values also have refHeight for interest/demurrage and I guess some other minor details 23:28:56 right 23:29:00 why " you probably want the PoW algorithm to be tightly coupled to some subset of blockchain data"? 23:29:24 my extreme example, which I guess I could call MetaCoin, could be done such that the scripts themselves are what define consensus currency systems within MetaCoin 23:29:49 jtimon: because you want there to be incentive for miners to actually publish the contents of the blocks they mine, rather than just headers 23:30:32 jtimon: basically with stateless validation you can wind up with miners having no blockchain data at all, and then find out that only a single party has the data, and hence can assist others in creating transactions (or no-one has the data and the coin gets stuck!) 23:30:39 an interesting thing is that with unique tokens, you have effectively a per-asset namespace that you can use as generic key/value store 23:31:08 jtimon: yes, *but* that's only useful if either multiple values can be associated with a single key, or the keys are scripts 23:32:08 jtimon: see, you can view a decentralized consensus system's blockchain as a weird type of cryptographic accumulator - it's easy enough to create a proof that some tx-thing existed or didn't exist in that chain, but you must have blockchain data to update (and create) those proofs 23:32:59 but the holders could take care of keeping their data, no? 23:33:20 how can you keep data if miners aren't even sending you enough to update your copy? 23:34:22 gmaxwell: well, remember how with MMR TXO you can get transactions mined with the assistance of third-parties who create the txin proofs for you? of course, with the txin proofs, miners with no blockchain data at all can safely mine the txs 23:35:02 gmaxwell: hence, you can wind up with a system that appears to work just fine, until one day you realize only one entity has a copy of some or all blockchain data - even worse if you've got some sharded (U)TXO set scheme going on 23:35:06 gmaxwell I thought your part of the trie in which your data resides cannot be modified if not by you, maybe I misundertood something about maaku's updatable structure 23:36:14 I also don't understand this senstence "that's only useful if either multiple values can be associated with a single key, or the keys are scripts" 23:36:16 jtimon: yeah, but what forces miners to actually publish the content of blocks to other miners? nothing 23:36:45 jtimon: e.g. with my "one entity has a copy of the blockchain" example, miners could be just sending their blocks to that entity, but not to each other, and the system will appear to work just fine 23:36:58 jtimon: maybe that happens due to lazyness, maybe due to sybil attack, who knows? 23:37:20 they need to publish the new root of the trie, and they want other miners to believe them, so they will send all the proofs they used to update the tree 23:37:24 jtimon: in a sharded system, it means you can 51% attack some *subset* of the (U)TXO space, likely with less than 51% of hashing power 23:37:25 jtimon: your own coin could only be modified by you, but all the neghboring branches can be modified by the holders of 2^levels-up coins. 23:38:09 jtimon: nope. Miners will lose money if they mine invalid blocks, so we can trust them not too do that 95% of the time, and it's in your incentive to very quickly mine the longest chain so you're not wasting your time... 23:38:40 jtimon: and if tx's can provide proof that they are valid to include in a block, all the better! 23:38:52 you're trying to explain me the problem of relying on archive nodes 23:39:02 jtimon: or hell, imagine some scheme where we're using SCIP moon magic so that miners can prove their blocks *are* valid 23:39:28 jtimon: roughly speaking, but it's really even deeper than that 23:39:56 I thought that wasn't a problem with maaku's latest updatable utxo design 23:40:24 jtimon: no it is, it's just not as likely to be an actual problem as some sharded blockchain scheme. 23:40:44 jtimon: mainly I'm interested in solving that because I think it's an important part of making consensus schems more scalable 23:40:55 miner 1 receives all the proofs it needs from regular users to update from UTXOn-1 to UTXOn 23:41:12 tacotime_ has joined #bitcoin-wizards 23:41:21 he sends the mined block and all those proofs to all miners 23:41:38 I'm still missing the problem 23:42:12 it's simple: what forces him to actually send those proofs to other miners? they can mine just fine without them, and have incentives to skimp on doing proper validation 23:42:42 you said it yourself " Miners will lose money if they mine invalid blocks" 23:42:47 now systems where miners can mine pairs of blocks, one valid and one invalid, as gmaxwell has suggested, help here 23:42:58 jtimon: yes, which means we can trust them not too! 23:43:05 if you don't send me the proofs, I don't hash on top of your chain 23:43:28 why not? if I'm not hashing, I'm not making money 99% of the time where the block *was* valid 23:43:37 and because I want everybody to hash on top of my block, I send the proofs to every miner 23:43:38 I might as well take that risk 23:43:52 as I say, the incentive isn't as strong as you think 23:43:56 I prefer to mine block n-1 23:44:14 why? you'll make more money if you mine block n 99% of the time 23:44:47 ok, I don't trust your 99 but I get your point 23:45:24 remember, what the bitcoin sourcecode implements doesn't necessarily match what a rational miner will actually do 23:45:56 so miners would have the incentive to send fake invalid blocks to distract competition 23:46:13 right now that costs too much because you can only mine either a valid, or an invalid, block 23:46:23 they have an incentive to send fake invalid blocks to 49% of their competition... 23:46:25 now, if the system allows you to mine both simultaneously, perfect! 23:46:32 so that 99 turns into a 1 and everybody is happy again 23:46:59 yes 23:47:45 and/or tie your PoW scheme to some subset of blockchain data, and the other miners simply can't mine on your block unless you give them the data, therefore they'll mine on block n-1 and eventually overtake you (unless you have 51%, but we're screwed there...) 23:47:58 what's the problem then? we only need miners to spam each other so that they don't trust new blocks without the corresponding proofs 23:48:49 oh, I see, I guess your solution is better 23:49:20 well, actually I think both solutions are good, and for different reasons: the "firedrill" one helps test fraud proof code and ensure it actually works, which is valuable in of itself 23:49:27 panicearly has joined #bitcoin-wizards 23:49:49 sorry, I forgot you were trying to explain me the problem that justified the solution but I forgot you had a solution 23:50:00 heh 23:50:45 now here's the next problem: suppose we decide to shard the blockchain, we'll say UTXO's starting with MSB=0 go on one side, MSB=1 go on the other 23:51:12 so that's basically two parallel chains, and and they timestamp each other (really forming a *timestamp* chain over both) 23:51:22 sorry, what was sharding again? 23:51:39 jtimon: shard as in how databases are split up 23:52:31 like partitioning the blockchain? 23:52:33 now miners only mine one or the other chains contents, but %100 of the hashing power goes to the timestamp 23:52:36 jtimon: yes 23:53:09 sorry again, what's MSB=0 ? 23:53:18 MSG=most significant bit 23:53:25 ok 23:54:01 now, suppose somehow one entity controls 95% of the hashing power on chain 0, and they just don't publish block contents, but *do* contribute to the overall timestamping hashing power 23:54:33 they can't attack the timestamp - they only have 40% of the total hashing power - but they can make it impossible for any transactions to happen on chain 0 23:55:15 sorry, I got lost here "now miners only mine one or the other chains contents, but %100 of the hashing power goes to the timestamp" 23:55:36 suppose then they stop their attack - you're left with a bunch of blocks that have been timestamped, but the actual contents of them have vanished, which means you can't modify the state of the chain unless you "roll-back" to whatever data is publicly available, but what's the right rule to handle that? 23:56:05 the purpose of sharding is to have lighther miners, I guess 23:56:24 jtimon: suppose a block header for the timestamp contains hashes of the most recent header in the subchains 23:56:45 jtimon: exactly, specifically spread the bandiwdth out so that you don't need to keep up with all tx's to mine 23:56:56 and who pows the timestamp? 23:57:01 nobody? 23:57:27 well, one easy way is to say that the two chains are merge-mined with the timestamp 23:57:38 and then set the pow difficulty to be exactly half of the timestamp difficulty 23:57:59 isn't merged mining like the opposite of sharding? 23:58:48 jtimon: no! in this case it's just a way of having a very strong pow for what orders transactions - the timestamp chain - while allowing for two separate chains 23:59:30 e.g. a block header in this scheme consists of PrevTimestampHash, MergeMineRoot, Time, etc. 23:59:45 and the subblock headers are just PrevSubChainHash, MerkleRoot