--- Log opened Tue Mar 19 00:00:04 2013 --- Day changed Tue Mar 19 2013 00:00 <@gmaxwell> right. though as noted the wallet software isn't a complete rube, it'll whine when it sees a longer but "invalid" chain. 00:00 <@gmaxwell> so if you can't isolate them too they may be safe. and if you can isolate them you could have skipped the forking fun 00:00 < warren> It seems the other attack is more insidious. Very difficult to do, but fatal. 00:01 <@gmaxwell> warren: there are a bunch of other attacks altcoins are vulnerable too, some similar but easier to pull off. 00:01 < warren> gmaxwell: moral ... they should hardfork to avoid this particular risk entirely. 00:02 <@gmaxwell> ::shrugs:: maybe. who knows. Why bother if they're not fixing other stuff. 00:02 <@gmaxwell> They should all be really glad there is no effective way to short their currencies. 00:03 <@gmaxwell> - if there was I expect they'd all be dead. 00:03 < warren> There is a way to short LTC now. 00:03 <@gmaxwell> ... 00:03 <@gmaxwell> really? 00:03 < warren> yeah, it isn't well known yet. 00:03 * gmaxwell starts his stopwatch 00:04 < warren> One of those "stock exchanges" has options and margin borrowing backed by the arbitrary "securities" (mostly "bonds") in the exchange, but they added LTC recently. 00:04 < warren> Deposit 1 LTC, you get one share. 00:04 <@gmaxwell> I guess one problem is that if you blow up litecoin, people won't be able to move their litecoin to the exchanges to sell it until litecoin is fixed again. 00:05 < warren> the money in the exchange is rather large now, and can cause a perception of a crash. That and Litecoin's lack of devs and uncoordinated miners means they can't fix this. 00:05 <@gmaxwell> well, if it's mpex I think history suggests that MP will renig on contracts to protect his own hide when he's on the losing side of a trade... so I guess you have to factor in the counterparty risk on such things. 00:05 < warren> they won't even realize a fork happened until 100+ blocks later 00:06 < warren> it isn't mpex 00:06 <@gmaxwell> in any case, yea, viable shorting produces the missing piece for attacking it: an economic incentive. 00:08 < warren> It seemed like Luke-Jr tried to attack Litecoin earlier for lulz. 00:09 <@gmaxwell> I don't believe thats the case? 00:10 <@gmaxwell> you have to be really careful in reading alt currency posts.. there are a lot of real idiots posting. They hate luke (for multiple reasons, including the fact that luke keeps calling their currencies scams). 00:11 < warren> Oh, Luke mentiond it himself. 00:11 <@gmaxwell> link? 00:11 < warren> hmm 00:11 <@gmaxwell> The only thing that luke 'attacked' that I'm aware of was "CLC" and his attack pretty much consisted of mining all the coins so no one else could. :P 00:12 < warren> It wasn't in -dev, and this was like 2-3 weeks ago. 00:12 <@gmaxwell> (this was a cryptocurrency which basically was created by taking an early version of the P2SH stuff in bitcoin while it was in development, adding a huge premine, paying btc-e to list it on the exchange, and announcing it as a huge advance over bitcoin.) 00:12 < warren> He was responding derisively about Litecoin (as usual), then pointed out a CVE, then lamented that coblee patched it too fast. 00:13 < warren> CLC? 00:13 < warren> sounds like novacoin 00:13 <@gmaxwell> "new scam same as old scam" 00:13 * jgarzik wonders if there is a nice list of all these 00:13 < jgarzik> i.e. alt-coins, and their problems ;p 00:13 <@gmaxwell> jgarzik: I asked that in #bitcoin-dev earlier todayish. 00:14 < jgarzik> need to troll MPOE-PR into writing one 00:14 < warren> I don't understand MPOE-PR's agenda. 00:14 < warren> on the forum 00:15 <@gmaxwell> 13:15 <+gmaxwell> gavinandresen: that page is kind of distorting because it 00:15 <@gmaxwell> doesn't list all the failed ones. 00:15 <@gmaxwell> 13:15 <+gmaxwell> gigitrix: e.g. where is WEEDS and BEERCOIN and LiquidCoin 00:15 <@gmaxwell> warren: current bets is that MPOE-PR is MP though that only explains a little. 00:20 <@gmaxwell> jgarzik: only a few have had informative failures. LQC == time between block matters, CLC == merged mining is not a pancea (/paying exchanges to list you pisses people off!), SLC1.0 == 'stupid fee rules make you vulnerable to spam attacks' 00:22 <@gmaxwell> doublec would probably be a good resource, considering hes run a bunch of these things and gotten ripped off by the big reorg attack on i?coin. 00:22 <@gmaxwell> https://en.bitcoin.it/wiki/List_of_alternative_cryptocurrencies 00:25 < jgarzik> MP's blog had a quite excellent list of bitcoin scams to date. A bit unfair at times, but for the most part accurate and exhaustive 00:26 < Diablo-D3> yeah, mp still considers DMC a scam 00:26 < Diablo-D3> although we're quickly approaching breaking even again 00:31 < warren> DMC? 00:32 < jgarzik> DMC seemed more like lack of competence, than a scam. But hey, it has ASICMINER shares, so might still come out ok. 00:40 < warren> LQC == time between block matters ... I can only guess what happened. 00:41 < Diablo-D3> heh, jgarzik is stil ltrolling 00:41 < Diablo-D3> warren: DMC was a company I started that was trying to focus on high density computing in data centers built for the task 00:42 < warren> Diablo-D3: and it turned into an ETF that holds ASICMINER? 00:42 < Diablo-D3> warren: well, not quite 00:42 < Diablo-D3> warren: part of the plan was to also mine 00:42 < Diablo-D3> ergo the M in DMC 00:43 < warren> Do you also sell gull wing cars? 00:43 < Diablo-D3> we didn't have enough money to afford the DC, so I was buying mining power through other ways 00:43 < Diablo-D3> so we could pay dividends early on to get more investments 00:43 < Diablo-D3> problem is nefario lied about how he was vetting companies listed on his exchange 00:44 < Diablo-D3> DMC pulled out a lot of its money before the mining market on GLBSE crashed and ended up making a profit 00:44 < Diablo-D3> nefaro then tried to remove me as CEO of the company (which … well, it just doesn't make any sense, legal or otherwise) and left it up to a shareholder vote 00:45 < Diablo-D3> majority of eligible shares voted, majority voted in favor of me 00:45 < Diablo-D3> and then shortly after nefario closed down GLBSE 00:45 < warren> It seems that investments in mining is only profitable under two conditions: 1) Mine while the coin value is perceived to be depressed, trusting that you can sell all the coins later at a high price. 2) Sell the shovels. 00:45 < warren> Any other investment is sure to have diminishing returns. 00:45 < Diablo-D3> warren: yes, and thats why a lot of money was invested into asicminer 00:45 < Diablo-D3> they sell the shovels 00:45 <@gmaxwell> warren: lots of people made money selling random land to mine on too. :) 00:45 < warren> hahaha 00:46 < Diablo-D3> warren: DMC bought the majority of the 1000 shares at the original 0.10, and the rest under 0.15 00:46 < warren> Diablo-D3: nice 00:46 < warren> how long ago was that? 00:46 < Diablo-D3> theres no reason to believe it wont go past 1 BTC per share 00:46 < Diablo-D3> during the original IPO 00:46 < Diablo-D3> asicminer IPOed on GLBSE 00:46 < warren> I wasn't around back then, I have no idea. 00:46 < Diablo-D3> it hasn't been put back on a new exchange yet 00:46 < Diablo-D3> DMC has relisted since, however 00:47 <@gmaxwell> Diablo-D3: so you're not deathly afraid of asicminer having >50% of the hashpower under one roof throughly undermining confidence in bitcoin if it becomes widely known that one guy with a gun (/court order) could throughly hose things up? 00:47 < Diablo-D3> gmaxwell: no, its not a problem for now 00:48 < warren> huh? asicminer has >50% now? 00:48 < Diablo-D3> gmaxwell: I think 2 more dividend payments and we've gotten back our original money anyhow 00:48 < Diablo-D3> gmaxwell: and they're doing weekly payments 00:48 <@gmaxwell> How so? by the reported numbers asicminer is >50% already. 00:48 <@gmaxwell> Diablo-D3: uh yea, but if this undermines confidence in bitcoin all your retured payments lose value. 00:48 < warren> Diablo-D3: you were damned lucky to have chose the asic company that mined first. Good job. 00:48 <@gmaxwell> so they can still screw you even after paying you back 00:49 < Diablo-D3> gmaxwell: well, now that avalon units are arriving 00:49 < Diablo-D3> they cant get 51% yet 00:49 < Diablo-D3> and batch 2 and 3 of avalon will prevent 51% later on 00:49 <@gmaxwell> all the avalon units only add up to about 19TH/s. 00:50 < Diablo-D3> 300 + 600 + 600 of 68gh each 00:50 < Diablo-D3> ;;calc 1500 * 68 / 1000 00:50 < warren> ASICMINER has how much hashing capacity? 00:50 < Diablo-D3> fuck no gribble 00:50 < Diablo-D3> 102TH 00:50 < warren> oh 00:50 < Diablo-D3> no that was the math 00:50 < Diablo-D3> asicminer has about 5th atm 00:50 < Diablo-D3> they're still installing the rest of the 15, they're only one third done 00:51 < Diablo-D3> by the time all the units are finished at the end of april, they'll have 60TH on hand but not fully installed 00:51 < Diablo-D3> and its all already paid for 00:51 < Diablo-D3> these first two generations are serving as beta units 00:52 < Diablo-D3> like, they undersized a few components on the 15th, which they increased on the second gen 00:52 < Diablo-D3> the second and first gens use identical asics though 00:52 < Diablo-D3> its only the parts on the board thats being upgraded 00:52 < warren> How is that >50%? 00:53 < Diablo-D3> apparently the asics have a lot more overclocking capability than they originally designed for 00:53 < Diablo-D3> warren: well 00:53 < Diablo-D3> before asics 00:53 < Diablo-D3> we only had 25th 00:53 < Diablo-D3> if asicminer was the only one, 60th is waaaaaaay past 51% 00:53 < warren> It seems that Avalon is coming online, and BFL is close enough to beat late-April 60TH. 00:54 < Diablo-D3> pre asic 25 + avalon's first 300 units is 45th 00:54 < Diablo-D3> so even with 60th, its just barely past 51% 00:54 <@gmaxwell> Diablo-D3: I was told asicminer had ~27TH/s up now. very few avalon units have been recieved, I'd estimate asic miner at about 70% based on that. 00:54 < Diablo-D3> the other 1200 mashes that 00:54 < Diablo-D3> gmaxwell: not 27 00:54 < Diablo-D3> gmaxwell: they only have the parts for 15 00:54 < Diablo-D3> and not all of it is up yet 00:55 < jgarzik> Where is ASICMINER physically located? 00:55 < Diablo-D3> jgarzik: not sure where the DC is 00:55 < jgarzik> I saw friedcat(sp?) post that they had a layer of physical security in their building 00:55 <@gmaxwell> Diablo-D3: well, thats not what they're telling some people at least. 00:55 < Diablo-D3> gmaxwell: I only listen to friedcat's official posts 00:55 < Diablo-D3> the rest of its speculation 00:55 <@gmaxwell> but perhaps the numbers I saw were somewhat forward looking. 00:55 <@gmaxwell> Diablo-D3: I think I can trust friedcat to not speculate. :P 00:55 < Diablo-D3> like people were saying that huge ozcoin miner was asicminer 00:56 < Diablo-D3> its not, its some huge avalon customer 00:56 < Graet> yes, i been saying that 00:56 < Diablo-D3> oh hai Graet 00:56 < Graet> asicminer was 3 x 800gh ish miners 00:56 < Graet> hey Diablo-D3 :) 00:56 < Diablo-D3> gmaxwell: yeah, I meant, the other people speculate 00:56 < Graet> using the bitfountaun name a sthey state in thread :) 00:56 < warren> If you have that kind of hash power, why use a public pool? 00:56 < Diablo-D3> gmaxwell: thye only have the parts for 15, and they're doing a lot of physical work in the DC to prepare it for the rest 00:57 < warren> It seems the public users + public visibility would make the pool less reliable for the big miners. 00:57 < Graet> warren, for a private company it "makes them more accountable" 00:57 < Diablo-D3> yeah 00:57 < Diablo-D3> its about accountability 00:57 < Graet> + no issues with softwarte bitcionds etc 00:57 < Diablo-D3> you cant 51% attack even if you control all the hashpower int he world 00:57 < Diablo-D3> because you dont control the actual mining, just the hardware 00:57 < warren> oh. 00:57 < Diablo-D3> someone else is setting up your mining attempts 00:58 <@gmaxwell> Diablo-D3: ... thats throughly confused. god no wonder freidcat is indifferent to concerns if you're his biggest shareholder. 00:58 < warren> So physical security of the mining operator is the weak link. 00:58 < Diablo-D3> gmaxwell: no, you want to say they can switch to solo mining and fuck people 00:58 < Diablo-D3> friedcat is only fucking himself if he does that 00:59 <@gmaxwell> Diablo-D3: that actually _reduces_ security, because either the pool being compromised _or_ the farm being compromised is sufficent to attack— and the farm being compromised is always sufficient. 00:59 < Diablo-D3> gmaxwell: yes, but thats why Im against monolithic pools 00:59 <@gmaxwell> It's not about friedcat. geesh. Why are people so freeking broken about security. 00:59 < Diablo-D3> which is a different problem 00:59 < Diablo-D3> Im 100% pro p2pool 00:59 <@gmaxwell> Friedcat gets hacked, friedat gets kidnapped, etc. Friedcat himself isn't a concern except that he's a point of failure. 01:00 < Diablo-D3> gmaxwell: no, I agree there 01:00 < warren> I gave up on p2pool yesterday. It breaks far too often. I tried for over a month to fix it. I'll get back to fixing it later. 01:00 < Diablo-D3> thats also a different problem 01:00 < Graet> bottom line, if it worked better and was easier to use there would be no monolithic pools 01:00 < Diablo-D3> we're discussing 51% itself alone 01:00 <@gmaxwell> warren: breaks? 01:00 < Diablo-D3> dont get me wrong, those are important concerns 01:00 < Diablo-D3> but it has nothing to do with 51% 01:00 < jgarzik> I got a lot of stales, but never broke p2pool 01:00 < Diablo-D3> warren: p2pool has never broken for me 01:01 < Diablo-D3> and I follow p2pool from git 01:01 < warren> jgarzik: yeah, lots of stales, but htat isn't what I'm referring to. 01:01 < Diablo-D3> warren: the stale problem was avalon's cgminer build is broken 01:01 < Diablo-D3> forrest fixed it on his side, but wants avalon to still update their cgminer build 01:01 < Diablo-D3> con already fixed the problem upstream 01:02 <@gmaxwell> luke has been basically begging to get on an avalon box in order to get bfgminer working. 01:02 < Graet> p2pool has less than 1% of the network for a reason, and it has nothing to do with asics 01:02 < Diablo-D3> gmaxwell: yeah, but that wont fix it 01:02 <@gmaxwell> he was told he'd be able to get on the foundation one for development, but apparently he's just getting evasion now. 01:02 < Diablo-D3> Graet: yes, its because theres no advertising 01:02 < Diablo-D3> Graet: the thing is all the important people use it 01:02 < Diablo-D3> which is more important than anything else 01:02 < Graet> anyway i'm going for a nap so i can be awake to do more bitcoind updates when i should be asleep 01:02 < Diablo-D3> gmaxwell: luke is a dick sometimes, I dont know why 01:03 < warren> It's stratum implementation has some bug in communicating the pseudoshare target difficulty, I am uncertain if it is related, but it causes random tracebacks within stratum.py. 01:03 < Graet> lol Diablo-D3 p2pool fanbois spam it all through the forums, the devs tell ppl to mine there if they want to mine... like i said before bottom line, if it worked better and was easier to use there would be no monolithic pools 01:03 < Diablo-D3> warren: thats the bug 01:03 < Diablo-D3> Graet: people are lazy, thats why they have monolithic pools 01:04 < Diablo-D3> I mean, fuck, people pay fees to pools 01:04 < Diablo-D3> what the hell is that shit 01:04 < Graet> yeah coz the hardware and time it takes to run a pool is free too? 01:04 < Diablo-D3> installing p2pool costs no money 01:04 < Graet> asking miners for donations owesnt work, i tried..... 01:04 < Diablo-D3> installing p2pool costs no money 01:04 < Graet> still comes back to ease of use 01:04 < warren> If you have more p2pool peers, it slows down the time between receiving a share and new work to miners. 01:04 < Diablo-D3> p2pool is extremely easy to use 01:05 < Graet> its not easy for most people to use 01:05 < Diablo-D3> warren: not entirely true. 01:05 <@gmaxwell> warren: and? 01:05 < Graet> apparentlyu not, the network share shows that 01:05 < warren> sorry, that's a really minor problem, it doesn't hurt the block finding, only your personal shares. 01:05 < Diablo-D3> warren: miner to p2pool is still completely local 01:05 <@gmaxwell> warren: we've gone over this, the miners queue work. This doesn't cause a loss of work. 01:05 <@gmaxwell> warren: right, and it's something thats roughly equal for most users. 01:05 < Diablo-D3> the only problem I see with p2pool is that its python 01:05 < warren> Graet: yes, p2pool's biggest problems is it doesn't explain itself to users well enough. 01:06 < Diablo-D3> Ill agree with that 01:06 < Diablo-D3> the docs suck 01:06 < Diablo-D3> but its STILL easy to use 01:06 <@gmaxwell> It's not extremely easy to use and can probably never be. 01:06 < warren> gmaxwell: It seems if you are unlucky, you can get stuck with tons of orphans despite unlimited bandwidth. I've been measuring things and fiddling it for weeks. 01:06 < Diablo-D3> gmaxwell: I dunno, all you have to do is enable bitcoind's rpc, and then start run_p2poo.py 01:06 < Graet> so it will never be hugs, and wyou will have to live with monlithic pools 01:06 <@gmaxwell> It could certantly be easier... but its even _less_ monetizable than other pooling things, while being harder to make easy. 01:06 < Graet> huge* 01:07 < warren> gmaxwell: part of that is because the p2pool client connects forever to nodes no matter how good or bad they are. 01:07 < Diablo-D3> warren: well, thats because p2pool doesnt use enough async networking magic 01:07 <@gmaxwell> Graet: seems likely asic deployments are going to change the threshold for easy of use some. 01:07 < Diablo-D3> which is largely because its python 01:07 < Diablo-D3> and I already said we'd be better off if it was C 01:08 <@gmaxwell> Graet: after all, 20 minutes installing software isn't a big deal vs thousands of dollars in specialized hardware. 01:08 <@gmaxwell> though it certantly is vs a couple GPUs. 01:08 < warren> The underlying design of p2pool is brilliant. It is just a little fragile in its current implementation. 01:08 < Graet> indeed gmaxwell , interesting times ahead on many fronts 01:08 <@gmaxwell> but yea, who knows. 01:08 < Diablo-D3> I should look and see if I can clone p2pool 01:08 < Graet> will be interesting to see how the hashrate settles out once a decent number of asic are out 01:08 <@gmaxwell> well, and when the new wave of DOS attacks begin. :P 01:08 < warren> Getting "lucky" to be connected to the good p2pool peers and you can have > 100% efficiency easy for weeks in a row. 01:08 < Graet> and that 01:09 < Diablo-D3> warren: yeah but I regularly do 01:09 < Diablo-D3> I never see p2pool efficiency below 100% 01:09 < Diablo-D3> Shares: 59 total (6 orphaned, 1 dead) Efficiency: 114.6% 01:09 < warren> Diablo-D3: that limits adoption though, because people get frustrated and quit, partly because the docs suck and they don't understand it. 01:09 <@gmaxwell> Diablo-D3: where is the rest of the line? 01:09 < Diablo-D3> gmaxwell: thats from the web ui 01:10 <@gmaxwell> in any case 59 isn't much of a sample. 01:10 < Diablo-D3> I asked forrest to add the whole line to the web ui but he hasnt yet 01:10 < warren> Diablo-D3: the "people get frustrated and quit" part makes more people quit because variance is too high and they don't understand probability. 01:10 < Diablo-D3> warren: thats their problem, really 01:11 <@gmaxwell> warren: well also because of unfortunate things like calling p2pool stales "stales" 01:11 < Diablo-D3> monolithic pools have the same issue really 01:11 < warren> shit 01:11 < Diablo-D3> wb warren 01:11 <@gmaxwell> warren: well also because of unfortunate things like calling p2pool stales "stales" 01:11 < Diablo-D3> monolithic pools have the same issue really 01:11 < warren> sorry, wrong button 01:11 < warren> gmaxwell: yeah, if the UI and docs were better it would scare fewer people away 01:11 < warren> gmaxwell: plus it needs to mix up the peer connections more often 01:12 <@gmaxwell> warren: I never noticed any issues with that, but I had a very well established node. 01:12 < warren> gmaxwell: once you get locked into a network of good peers, you're golden. you crowd out less well connected peers by orphaning them more often. 01:12 <@gmaxwell> My initial node started when p2pool was <10GH and I more than doubled it myself. 01:12 <@gmaxwell> and p2pool prefers older nodes to connect to. 01:12 < warren> That's what I'm seeing on LTC. It might be because there are much fewer nodes there. 01:13 <@gmaxwell> plus I had established private peering with 2 of the other larger p2pool users. 01:13 < warren> At first I was getting > 110% efficiency for weeks. Then my network of nodes got very unlucky together. 01:13 < Diablo-D3> gmaxwell: explain something to me 01:14 < Diablo-D3> why does p2pool actually use a chain for shares? 01:14 < warren> gmaxwell: yeah, with some minor hacking and node cooperation you can have an edge over ordinary p2pool nodes 01:14 <@gmaxwell> because there needs to be a consensus on which users should be paid. 01:14 < Diablo-D3> yeah, but shares are like tx in bitcoin 01:14 < warren> Diablo-D3: the share chain is a difficult to fake way of distributing the payouts to be generated on a random bitcoind elsewhere. 01:15 <@gmaxwell> no, they're not— to create a share you have to agree with all the other p2pool nodes what the shares before that one were. 01:15 < Diablo-D3> hrm 01:15 <@gmaxwell> (so they agree you're paying the right amount) 01:15 < Diablo-D3> gmaxwell: so how can we have multiple heads on the chain? 01:15 <@gmaxwell> Now— the sharechain doesn't have to be linear. 01:15 <@gmaxwell> Diablo-D3: same way you can have multiple forks in bitcoin 01:15 <@gmaxwell> but they're more likely due to the fast time between shares. 01:15 < Diablo-D3> yeah but bitcoin only recgonizes one fork 01:15 <@gmaxwell> Diablo-D3: well bitcoin sees more than one fork... it just doesn't tell you about it. 01:16 <@gmaxwell> p2pool does. 01:16 <@gmaxwell> but it only extends one fork. 01:16 < Diablo-D3> well wait 01:16 < warren> Another issue that we see with lots of small p2pool users is quasi-dust payouts. 01:16 < Diablo-D3> what stops me from putting my shares on multiple forks 01:16 < Diablo-D3> warren: thats an issue with pool mining in general 01:16 <@gmaxwell> warren: thats a litecoin specific problem mostly- the minimum payout size was an intentional parameter of the system 01:16 < warren> Diablo-D3: most pools can optimize that by setting a higher withdrawal threshold 01:17 <@gmaxwell> p2pool payouts can't go smaller than one share per miner... 01:17 < Diablo-D3> warren: yeah, but then you have to hope the pool owner doesnt fuck people 01:17 <@gmaxwell> warren: basically no pools except eligius do the forced thresholding thing, dumb.. but ::shrugs:: 01:18 <@gmaxwell> warren: basically the reason the number of shares in the sharechain is what it is .. is partially to control the size of the smallest payouts. 01:18 < warren> understood 01:18 <@gmaxwell> maybe forrest picked bad parameters,— but it is controlled. 01:18 < Diablo-D3> gmaxwell: so what stops me from putting my shares on multiple chain heads? 01:19 < warren> It seems appropriate for BTC, (although the block expected time being close to 24 hour scares people now) 01:19 <@gmaxwell> down side is there is a variance tradeoff, but thats also true for other pools.. if you can only get paid X often that similar to mining with higher variance. 01:19 <@gmaxwell> Diablo-D3: because your share commits to its prior share, same as bitcoin. 01:19 < Diablo-D3> gmaxwell: how exactly? 01:19 < Diablo-D3> a garbage tx in the block's tx list? 01:19 <@gmaxwell> Diablo-D3: the funny p2pool output is effectively the hash of the prior share in the chain you're extending. 01:20 <@gmaxwell> yes. 01:20 < warren> gmaxwell: the folks who are on the losing side of efficiency are psychologically scared away from p2pool, especially when they can get stuck there for a long time. That can be improved a bit by adding a little randomness to peer connections. 01:20 <@gmaxwell> warren: dunno about that, it's unclear to me what is causing that. 01:20 < Diablo-D3> hrm 01:20 < warren> gmaxwell: I've been on both sides of that, it felt great on the winning side. =) 01:20 < Diablo-D3> gmaxwell: I need to look into how p2pool works 01:21 < Diablo-D3> maybe it can be efficiently rewritten 01:21 <@gmaxwell> but I also have not seen many people remark on that. I don't think they understand that stale!=payout and efficiency==payout since thats opposite normal pool parlance. 01:21 < warren> needs different names. 01:21 < Diablo-D3> gmaxwell: well, efficiency should really be based on actual network efficiency 01:22 < Diablo-D3> like, count the dead heads as already known inefficiency 01:22 <@gmaxwell> "Charm" and "Beauty" 01:22 < warren> jgarzik: btw, conman says the Avalon hardware design is such that 1.4 seconds is the minimum work return latency. Do you know if this is true? 01:22 < jgarzik> 01:22 < warren> jgarzik: if true, that's why your reject rate would be high on p2pool. 01:22 < Diablo-D3> gmaxwell: beauty is not a quark flavor 01:23 < Diablo-D3> charm, strange, top, bottom 01:23 <@gmaxwell> Diablo-D3: right, its a p2pool stat. 01:24 < Diablo-D3> and then strawberry 01:24 < jgarzik> warren: p2pool also saw a metric _ton_ of duplicates, absent a manual change to increase the difficulty 01:24 < warren> New names and better docs would help. It also needs to break the temporary efficiency collusion that scares new users away. 01:24 < warren> jgarzik: the / change? 01:24 < Diablo-D3> gmaxwell: how is p2pool building blocks with bullshit tx? 01:24 < warren> jgarzik: part of that might be its broken difficulty handling. it is broken in different ways in stratum and getwork. 01:26 < warren> If we want p2pool to succeed, it needs a few key improvements to keep people from quitting in frustration like they do now. 01:26 < Diablo-D3> well 01:26 < Diablo-D3> a rewrite in C would be nice 01:26 < Diablo-D3> I should look into that 01:26 * jgarzik would prefer p2pool 01:26 < jgarzik> if it worked 01:26 <@gmaxwell> warren: 1 BTC bet says that there is no brokeness in p2pool getwork difficulty handling and that you're full of it 01:27 < Diablo-D3> I agree with gmaxwell 01:27 < Diablo-D3> jgarzik: you still have me on ignore? 01:27 <@gmaxwell> jgarzik: it's probably not going to work until someone who gives a shit about it is hacking on miner software for it. 01:28 <@gmaxwell> Conman only cares if someone pays him. 01:28 <@gmaxwell> or trolls him 01:28 < warren> The difference between stratum/getwork might be a scrypt-only problem. There is the separate problem where it fails to tell the miner the correct pseudoshare target and is correlated with tracebacks. 01:28 < warren> I am uncertain if the "fails to tell the miner the correct pseudoshare target" is causing the tracebacks. 01:28 < jgarzik> Diablo-D3: what happens if I say no? :) 01:29 < Diablo-D3> then.. I… dont know? 01:29 < jgarzik> hehe 01:29 < Diablo-D3> jgarzik: I was going to say, if p2pool was written in C it might be small enough to run on the avalon 01:29 <@gmaxwell> warren: did forrest reenable the non-constant targets? 01:29 < warren> gmaxwell: not sure 01:30 < jgarzik> Diablo-D3: true... 01:30 <@gmaxwell> Diablo-D3: not likely.. the sharechain management uses a lot of memory somewhat fundimentally. (well, a lot for the hardware in avalon) 01:30 < warren> Diablo-D3: gmaxwell: do you see any "hash > target" errors in your log? 01:30 < Diablo-D3> warren: lemme look 01:30 < Diablo-D3> gmaxwell: still, it'd be faster than pythonese 01:30 < warren> Diablo-D3: p2pool BTC would regularly use > 500MB RAM here. 01:30 < jgarzik> more than 32MB? hrm 01:30 < jgarzik> warren: in python sure ;p 01:31 <@gmaxwell> arguable people trying to run p2pool nodes and bitcoin nodes on hardware like that is somethat of a moral hazard. It creates an installed base invested in severely and unreasonably underpowered hardware who would resist sane improvements to the network that increase resource consumption. 01:31 < Diablo-D3> warren: thats because forrest is caching decoded shit 01:31 < Diablo-D3> and he shouldnt be 01:31 < Diablo-D3> he should switch to a faster language 01:31 < warren> decoded shit? 01:31 < warren> is what? 01:31 < Diablo-D3> p2pool sharechain tx related stuff 01:31 <@gmaxwell> well perhaps not more than 32 MB (go go generational GC) but IIRC thats _all_ the avalon has, 32mb. 01:31 < Diablo-D3> gmaxwell: but yeah 01:31 < Diablo-D3> 32 is too little 01:31 < Diablo-D3> 64 might be too little 01:31 < Diablo-D3> and you'd still need an external bitcoind 01:32 < Diablo-D3> because that sure as hell aint fitting on there 01:32 <@gmaxwell> warren: right out the door with no leaking python's gc method pretty much instantly results in 2x memory usage. 01:32 < Diablo-D3> but still, a fast sane C p2pool might be nice 01:32 < warren> gmaxwell: it seems we still have some kind of peer connection related twisted leakage 01:33 < warren> Diablo-D3: if it happens, I'd like to work on the peer selection code, I already been experimenting with that a lot in p2pool. 01:33 < Diablo-D3> warren: the literal phrase "hash > target" is not in my log 01:33 < warren> Diablo-D3: it's pretty rare for BTC, not sure why. 01:33 < warren> Diablo-D3: no tracebacks about "JSON" anywhere? 01:34 < Diablo-D3> there might be tracebacks, but thats because I should just quit merged mining 01:34 < Diablo-D3> it doesnt like merged mining with p2pool for some reason 01:34 < Diablo-D3> er 01:34 < Diablo-D3> with devcoin I mean 01:34 <@gmaxwell> thats due to devcoin not responding, god knows why 01:35 < Diablo-D3> is namecoin dead now? 01:35 < warren> Diablo-D3: it seems that way, but somehow its exchange value is up 3x 01:35 <@gmaxwell> "it's only /mostly/ dead" 01:36 < Diablo-D3> I still have not managed to solo mine a block on that yet in months 01:36 <@gmaxwell> fwiw: 01:36 <@gmaxwell> 22:36 < xiangfu> gmaxwell: we can configure it to <1 second. but we may lose some nonce. but I never test < 1 second. 01:37 < warren> interesting 01:37 <@gmaxwell> Diablo-D3: any idea what the latency of responding to a longpoll a typical gpu is at high intensity? 01:38 < Diablo-D3> gmaxwell: depends 01:38 < Diablo-D3> in DM I can do -f 1 01:38 < Diablo-D3> and its 1 second 01:38 < Diablo-D3> -f 1 is also an insane waste 01:38 < warren> Funny thing about that. On high intensity here with identical configs, I have 5% DOA in Linux and ~1% in Windows. Fiddled with it a lot. Can't get Linux to do better. 01:38 < Diablo-D3> you turn -f up (using divisors of 60) until you get full speed 01:39 < warren> (scrypt. diablo was fine) 01:39 <@gmaxwell> I know it's never especially fast, but I'm thinking more like 100ms. 01:39 < Diablo-D3> intensity in cgminer and shit is the opposite 01:39 < Diablo-D3> -f 1 is higher than -f 60 01:39 <@gmaxwell> stupid driver/gpu turnaround sucks. 01:39 < Diablo-D3> gmaxwell: 100ms? no 01:39 < Diablo-D3> if you're using -f 60 in DM its 16.6ms 01:39 < Diablo-D3> I use -f 120 to preserve desktop performance, so its 8ms 01:40 <@gmaxwell> I suppose this might be a reason to implement share merging. 01:40 < Diablo-D3> gmaxwell: well 01:40 < warren> gmaxwell: what is that? 01:40 < Diablo-D3> thats why I was asking about multiple heads 01:40 < Diablo-D3> warren: more bullshit tx in the block that say "hey remember my share on that other chain? thats mine too" 01:41 <@gmaxwell> warren: say you have multiple ties for the last share on the same best chain you are mining. You make a new share that has all of those shares as parents. You are incentivized to do this because your chain is longer by including them. 01:41 <@gmaxwell> warren: this hides the latency. 01:41 <@gmaxwell> Too much latency hiding is bad because then p2pool would overpay overly latent miners. 01:41 < Diablo-D3> gmaxwell: well wait, why do it that way and not my way 01:42 <@gmaxwell> Diablo-D3: the history much be unique. 01:42 < warren> either of these ways would multiply the amount of p2p traffic 01:42 < Diablo-D3> yeah, but it makes dead chains merged into the main chain 01:42 <@gmaxwell> Diablo-D3: otherwise you mine a long chain that only pays you.. then you merge it in.... 01:42 < Diablo-D3> warren: no it wouldnt 01:42 < jgarzik> Woah! 01:42 < jgarzik> A halpost 01:42 < Diablo-D3> gmaxwell: yeah, and then that means nothing 01:42 < jgarzik> https://bitcointalk.org/index.php?topic=154290.0 01:43 <@gmaxwell> warren: no because the difficulty control algorithim still counts the extra shares. 01:43 < warren> ooh, ok. 01:43 < Diablo-D3> jgarzik: woah, ahvent seen him for awhile 01:43 <@gmaxwell> warren: so the difficulty just goes up and the total number of shares stays the same. 01:43 < Diablo-D3> gmaxwell: yeah, but difficulty would count shares in my system 01:43 <@gmaxwell> 22:42 <@gmaxwell> Diablo-D3: otherwise you mine a long chain that only pays you.. then you merge it in.... 01:43 < Diablo-D3> gmaxwell: yeah and that doesnt DO anything 01:43 <@gmaxwell> ... 01:43 <@gmaxwell> die 01:43 < Diablo-D3> it just means you get paid a lot for the next few blocks 01:44 < Diablo-D3> for work you already have and are credited for 01:44 <@gmaxwell> FOR WORK YOU WERE SELFISHLY DOING ONLY FOR YOURSELF. 01:44 < warren> gmaxwell: hmm, that's pretty good. 01:44 < Diablo-D3> gmaxwell: not really 01:44 <@gmaxwell> GOD THIS IS NOT ROCKET SCIENCE DIE DIE DIE 01:44 < Diablo-D3> you cant ... 01:44 < Diablo-D3> oh 01:44 <@gmaxwell> :P 01:44 < Diablo-D3> gmaxwell: was your guy withholding bitcoin blocks too? 01:44 < Diablo-D3> because thats a dick move 01:45 <@gmaxwell> Diablo-D3: he's only trying to mine blocks that pay him so p2pool should not credit him. 01:45 < Diablo-D3> ….. oh wow 01:45 < Diablo-D3> thats bad 01:45 < Diablo-D3> because I just realized 01:45 <@gmaxwell> You never want to pay people who were mining a different history than you. 01:45 < Diablo-D3> lets say I hack my p2pool variant to do that 01:45 < Diablo-D3> I mine myself until I get 25btc in credit 01:45 <@gmaxwell> Diablo-D3: if you do its no problem, other p2pool miners will not pay you. 01:45 < Diablo-D3> then merge my chain 01:45 < Diablo-D3> every time I dont get a block 01:45 <@gmaxwell> Right. Thats why your idea was a nonstarter. 01:45 < Diablo-D3> but if I DO ge ta block 01:46 < Diablo-D3> I get to keep the 25btc 01:46 < Diablo-D3> and I obviously had less than 25btc in credit at that point 01:46 < Diablo-D3> gmaxwell: could have a maximum length of merging 01:46 < Diablo-D3> you merge a share, but it ignores further merges 01:46 <@gmaxwell> yes, which was why I suggested 1. :P thats sufficient to hide ~10 seconds of latency. 01:46 <@gmaxwell> Hide more than that and you overpay latent miners. 01:46 < warren> how much should it hide? 01:47 < Diablo-D3> gmaxwell: yeah, then your and my technique are identical 01:47 <@gmaxwell> warren: it's a tradeoff with overpaying people who are late enough that it impacts bitcoin returns. 01:47 < Diablo-D3> gmaxwell: and this could be done automatically, ALWAYS name your previous share 01:47 < Diablo-D3> gmaxwell: even if its in your chain 01:47 < warren> I haven't had shell access to remote nodes, so I haven't been able to measure typical share propagation latency. 01:48 < Diablo-D3> and use a bloom filter or whatever to select for uniqueness when paying 01:48 < warren> On my own nodes I sometimes see gaps of 40 seconds during those unlucky times when good peers don't like me. 01:48 < Diablo-D3> gmaxwell: this could be used for main chain signaling too 01:48 < Diablo-D3> gmaxwell: like "ignore all shares on that chain because it just merged into ours" 01:48 < Diablo-D3> so dead heads are trimmed early 01:50 < warren> I wasted a lot of time fiddling with p2pool when I don't own hashing hardware. 01:50 < Diablo-D3> warren: you were port forwarding p2pool's port, right? 01:50 < warren> Diablo-D3: no 01:50 < Diablo-D3> warren: you really should 01:50 < Diablo-D3> p2pool sorta punishes you for that 01:51 < warren> Diablo-D3: oh wait, not port forwarding per se, I have a IPv4 address. 01:51 < Diablo-D3> yeah so? 01:51 < warren> Diablo-D3: it punishes you? where in the code? 01:51 < Diablo-D3> not in the code 01:51 < Diablo-D3> you're just limiting your ability to connect to other nodes 01:51 < Diablo-D3> there are good nodes behind NAT without their ports forwarded 01:52 < Diablo-D3> so you cant connect to them, they can only connect to you 01:52 < Diablo-D3> and if you dont have your port forwarded, they cant connect to you 01:52 < warren> Diablo-D3: oh. that. I know. Sometimes I have 5 nodes running. 01:52 < warren> Diablo-D3: I found the good nodes who don't port forward and blocked incoming connections from nodes that were measured as consistently bad for 24 hours. 01:53 < warren> Diablo-D3: you can make it a little better by manually trimming useless peers so your connections try others 01:54 <@gmaxwell> I wonder if p2pool share delivery would actually be a serious application for network coding. 01:54 < Diablo-D3> gmaxwell: I think so 01:54 < Diablo-D3> but Im going to have to think about this problem for awhile 01:54 <@gmaxwell> Diablo-D3: do you even know what network coding is? 01:54 < Diablo-D3> gmaxwell: I think you're talking about a different kind 01:55 <@gmaxwell> https://en.wikipedia.org/wiki/Network_coding#Random_network_coding 01:55 < Diablo-D3> gmaxwell: I was thinking in the utorrent bandwidth flooding protection sense 01:56 < Diablo-D3> https://en.wikipedia.org/wiki/Avalanche_filesystem 01:56 < Diablo-D3> THAT looks interesting 01:57 < egecko> except for that whole part about microsoft being involved 01:57 < warren> Diablo-D3: I have code to automatically trim bad peers, and move the good peers to the front of a queue, both with a random bias. 01:57 < Diablo-D3> egecko: yeah, but ideas exist to be stolen 01:57 < warren> I'm not certain this would be good for all clients though. It may exacerbate the good peer collusion. 01:57 < Diablo-D3> warren: I would have done that anyways based on latency of response 01:57 * jgarzik grins 01:57 < jgarzik> warren: You are wholly and completely sucked into bitcoin algorithm cool-ness at this point, aren't you? :) 01:58 < warren> jgarzik: =( 01:58 < Diablo-D3> lol 01:58 < Diablo-D3> gmaxwell: well, I think an optimum network would prioritize peers that have the farthest latency 01:58 < Diablo-D3> gmaxwell: before nearest 01:59 < Diablo-D3> so its less likely for you to have chain forks 01:59 < warren> Diablo-D3: it's hard to enforce that though 01:59 < Diablo-D3> warren: enforcing isnt the issue 01:59 < Diablo-D3> detecting it is 01:59 < warren> how the heck would you detect that? 01:59 < Diablo-D3> the utorrent method work similarly 01:59 < Diablo-D3> warren: ping as part of the protocol 01:59 < warren> ping *is* part of this protocol, I think. 01:59 < warren> TCP ping 02:00 < Diablo-D3> utorrent's bandwidth auto-sizing thing works like this 02:00 < Diablo-D3> you're over UDP 02:00 < Diablo-D3> if you start getting high packet loss overall, throttle back 02:00 < Diablo-D3> if peers are taking absurd times to respond, throttle back 02:01 < Diablo-D3> utorrent selects to prioritize peers that have less latency (which implies closer and more bandwidth) 02:01 < Diablo-D3> my way would do all of that, but select for FARTHEST peers 02:01 < warren> gmaxwell: I mainly gave up on p2pool for now because I need to finish my thesis and I couldn't figure out what the hell is wrong with stratum. 02:01 < Diablo-D3> and to throttle back, I just repeat shares to less peers 02:01 < Diablo-D3> warren: 2 bytes is whats wrong with stratum 02:02 < Diablo-D3> warren: and its an upstream bug in cgminer which was already fixed 02:02 < warren> huh? I've been using cgminer git. 02:03 < warren> Diablo-D3: which commit? 02:03 < Diablo-D3> warren: dunno 02:03 < Diablo-D3> forrest fixed it in p2pool until avalon gets their shit together 02:03 < warren> Diablo-D3: how long ago? 02:04 < warren> Diablo-D3: i've been using git of both cgminer and p2pool 02:04 < Diablo-D3> huh not sure 02:05 < Diablo-D3> I swear I saw the commit for it 02:05 < Diablo-D3> but its not in my copy of the repo and my repo is up to date 02:05 < Diablo-D3> warren: ask forrest 02:05 < warren> Diablo-D3: as of a week ago, forrest and conman were blaming each other for this. 02:06 < Diablo-D3> they had differing intepretations of the spec 02:06 < Diablo-D3> con expected 4 bytes for the stratum nonce, forrest was sending 2 02:07 < warren> Diablo-D3: that's the tracebacks I'm seeing, the nonce is an odd-length or some other problem 02:07 < warren> it crashes on two different lines 02:07 < Diablo-D3> warren: yeah, but I dont know where the hell the commit went 02:07 < Diablo-D3> I swear I saw it in #p2pool on the commit bot 02:08 < warren> uh.... 02:08 < Diablo-D3> maybe I was seeing things 02:08 < warren> Diablo-D3: some other scrypt coin fork run by Balthazar apparently has a forked p2pool which disables stratum for this reason 02:08 < Diablo-D3> yeah, I can see why he'd do that 02:10 < Diablo-D3> gmaxwell: so wait 02:10 < Diablo-D3> gmaxwell: your way 02:10 < Diablo-D3> I send the share header in clear text 02:10 < warren> p2pool/bitcoin/stratum.py: 02:10 < warren> coinb_nonce = extranonce2.decode('hex') 02:10 < warren> assert len(coinb_nonce) == self.wb.COINBASE_NONCE_LENGTH 02:10 < warren> it crashes on either of these lines 02:11 < Diablo-D3> gmaxwell: and then I send the share body as reed solomon codes? 02:11 < Diablo-D3> gmaxwell: so remote peers can reconstruct the body without all the codes? 02:12 < Diablo-D3> gmaxwell: well, reed solomon as an erasure code 02:12 <@gmaxwell> Diablo-D3: the idea is that you get X share chunks from X peers and can reconstruct X shares. .. without the risk that two peers sent you the same thing. 02:13 < Diablo-D3> gmaxwell: yeah, but you dont need X shares for X peers 02:13 < Diablo-D3> with a proper erasure code setup you can do, say, X-1 blocks from X-1 peers 02:13 < Diablo-D3> and reconstruct the missing one 02:14 <@gmaxwell> Diablo-D3: forget x-1. 02:14 < Diablo-D3> and if you dont get enough to reconstruct you select random low latency peers "I have 1, 2, 3, …, n, randomly send me one I dont have" 02:14 < Diablo-D3> gmaxwell: well, if this was DiabloPool, it'd be over UDP 02:14 <@gmaxwell> For an N,M code you can get any N out of M syndromes and recover N shares. 02:14 < Diablo-D3> gmaxwell: oh, you're doing it that way 02:14 < Diablo-D3> I was doing it for the share body 02:15 <@gmaxwell> forget the body, we're latency not throughput limited. 02:15 < Diablo-D3> no, if we wre throughput limited I'd be throwing lz4 on top of this 02:15 < Diablo-D3> or full scale gzip 02:16 < jrmithdobbs> gmaxwell: i thought you were trolling me, this is really where the interesting conversation from -dev went ;p 02:17 < Diablo-D3> gmaxwell: wait, is M less than N? or more than? 02:17 < jrmithdobbs> M *of* N 02:17 < jrmithdobbs> so <= 02:18 < Diablo-D3> ahh kay 02:18 < jrmithdobbs> err wait, actually i'm confused which you were using for which in that sentence too 02:18 < jrmithdobbs> gmaxwell: ^ 02:18 < Diablo-D3> oh heh 02:18 < Diablo-D3> [02:14:41] For an N,M code you can get any N out of M syndromes and recover N shares. 02:18 < Diablo-D3> I assume M is > N 02:19 < Diablo-D3> well >= 02:20 < jrmithdobbs> n >= m, it's n of m, so n shares to combine, m total shares in existence 02:20 < jrmithdobbs> err n <= m 02:21 < jrmithdobbs> damn it 02:21 < Diablo-D3> so I was right 02:21 < jrmithdobbs> yes, i'm dyslexic tonight apparently 02:21 < Diablo-D3> happens 02:21 < jrmithdobbs> i hate m/n x/y etc naming in this crap :P 02:21 < jrmithdobbs> i/j is the worst 02:22 < Diablo-D3> yeah so do I 02:22 < Diablo-D3> heh i 02:22 < warren> Diablo-D3: if you do find that patch it would be very appreciated. I haven't seen anything like it anywhere. 02:22 < Diablo-D3> the only time I use i as a variable in code 02:22 < jrmithdobbs> i&j actually kind of anger me when i see them outside of very very simple loop counters ;p 02:22 < Diablo-D3> is if its an obvious foreach loop 02:22 < Diablo-D3> I dont even like using j 02:22 < jrmithdobbs> ya either/or in isolation is fine 02:22 < jrmithdobbs> but both at once is just NO 02:22 < Diablo-D3> because if I use j, I almost invariably have to rename j to k 02:23 < Diablo-D3> because I have to insert a loop between i and k 02:23 < Diablo-D3> happens every fucking time 02:23 < Diablo-D3> and then, of course 02:23 < Diablo-D3> I always miss one 02:23 < Diablo-D3> and then wonder why my code isnt working for ten minutes 02:23 < warren> Although I didn't quit p2pool because of the tracebacks, I think the tracebacks are only on pseudoshares that are invalid, so you're not losing anything. 02:23 < jrmithdobbs> and you can't :%s///g because that will end in hilarity 02:24 < jrmithdobbs> that's the worst part ;p 02:24 < jrmithdobbs> and yet, EVERYONE KEEPS DOING IT 02:24 < Diablo-D3> jrmithdobbs: and on my vim, for some reason 02:24 < Diablo-D3> g isnt g 02:25 < jrmithdobbs> seriously, this should be day one of hs/undergrad cs classes (because the formally "educated" seem worst about it;p) 02:25 < Diablo-D3> it doesnt replace every occurance on each line 02:25 < Diablo-D3> and I havent been assed to figure out why 02:25 < jrmithdobbs> 'IF YOU EVER THINK YOU SHOULD USE A ONE LETTER VARIABLE NAME YOU ARE WRONG AND WILL FAIL THIS AND ALL FUTURE CS CLASSES!' 02:25 < jrmithdobbs> and enforce it as part of the code of conduct 02:25 < Diablo-D3> but yeah 02:25 < Diablo-D3> i only exists for obvious foreach loops 02:25 < jrmithdobbs> for the love of god 02:25 < Diablo-D3> jrmithdobbs: hell, people dont even realize they can do linked list shit with for 02:26 < jrmithdobbs> i'd be willing to give up i for that use to get rid of the rest of it! 02:26 < jrmithdobbs> ;p 02:26 < jrmithdobbs> i shall henceforth be called iterator 02:26 < jrmithdobbs> DONE 02:27 < jrmithdobbs> that's how it reads anyways. 02:27 < Diablo-D3> for(your_struct **head = &your_head; *head; *head; **head = (*head)>next) or some shit like that 02:27 < jrmithdobbs> (should*) 02:27 < Diablo-D3> er, ignore the doubled middle arg there 02:29 < jrmithdobbs> Diablo-D3: dude things like size_t end=strlen(input)+1;/*horrible*/for(src=&input,end=src+end;src well, mainly because of your lack of whitespace 02:29 < jrmithdobbs> no even with the whitespace 02:30 < Diablo-D3> er, +1? you sure about that? 02:30 < Diablo-D3> why do you want to see the end null? 02:30 < jrmithdobbs> positive 02:30 < jrmithdobbs> because i'm copying it 02:30 < Diablo-D3> because if you're just copying it use memcpy 02:30 < jrmithdobbs> also, such a construct is obv not useful on anything you can run strlen on in the first place 02:30 < Diablo-D3> then you get the wide copy enhanced versions 02:30 < Diablo-D3> OR 02:31 < Diablo-D3> if you're doing it for read only 02:31 < jrmithdobbs> the strlen was just for ilustration 02:31 < jrmithdobbs> ;p 02:31 < Diablo-D3> just make another pointer jumped into the string 02:31 < Diablo-D3> jrmithdobbs: you know whats interesting? 02:31 < Diablo-D3> strlen can be done extremely fast 02:31 < Diablo-D3> you can check 8 bytes at a time to see if any of them have a zero byte nearly for free 02:31 < jrmithdobbs> sure but any data you'd want a loop like that for is most likely not a null terminated string 02:32 < jrmithdobbs> because if it was, you already have super highly optimized libc routines to do 99% of what you need to with it ;p 02:32 < Diablo-D3> yeah 02:32 < jrmithdobbs> (assuming your platform doesn't suck) 02:32 < Diablo-D3> I cant think of a good example where that makes sense 02:33 < jrmithdobbs> also i never said it was useful, i just said simple loop constructions like that confuse people, of course trying to do linked list traversal in your control variables is going to confuse people 02:33 < jrmithdobbs> that was my point :) 02:33 < Diablo-D3> well, it confuses me to as why anyone would write that 02:33 < Diablo-D3> if I was syntax parsing, thats not what I'd use 02:34 < jrmithdobbs> it confuses me as to why anyone would traverse a linked list like you showed too 02:34 < jrmithdobbs> heh 02:34 < jrmithdobbs> Diablo-D3: anyways, it's useful for things like inplace byte string reversal 02:35 < Diablo-D3> jrmithdobbs: here 02:35 < Diablo-D3> http://wordaligned.org/articles/two-star-programming 02:35 < Diablo-D3> this is why. 02:35 < jrmithdobbs> (if you pretend you live in a world without SIMD and/or need portability) 02:35 < Diablo-D3> Ive known about the trick for years, but thats a good explaination why 02:35 < Diablo-D3> jrmithdobbs: heh, if it was bit reversal 02:36 < Diablo-D3> that can be done quickly 02:39 < jrmithdobbs> err, what he's talking about doesn't have to do with the silly-ish loop usage necessarily ... but when you put it in context of deletes i see what you were originally getting at 02:45 < warren> Diablo-D3: The hash > target and tracebacks bug happens in p2pool BTC, but it is so rare that you almost never see it. A month of p2pool BTC here and I saw it only once. 02:49 < Diablo-D3> warren: I have several months of logs 02:49 < Diablo-D3> its not on mine 02:49 < Diablo-D3> jrmithdobbs: I dunno, I think doing it linus's way is more elegant 02:50 < jrmithdobbs> ya but that's not the thing you said, the loop in that article makes sense ;p 03:08 < Diablo-D3> yeah I think I fucked that one up 03:08 < Diablo-D3> I wasnt doing the if on the next though 03:12 < jrmithdobbs> ya i see what you were getting at now :) 03:59 < jgarzik> On legality of IRC micropayment bots: https://bitcointalk.org/index.php?topic=154754.msg1640873#msg1640873 03:59 < jgarzik> I still think he's overly optimistic 04:00 < jgarzik> but maybe that just means I'm overly pessimistic :) 04:00 < petertodd> Heh, who knows really. 04:00 < petertodd> I still wouldn't run one myself. 04:02 < petertodd> Has FinCEN said anything about more general logging requirements? Chaum tokens are an obvious counter-example... Transaction limits are pretty much meaningless when identities are cheap and you can just do thousands of transactions instead of one. 04:03 < jgarzik> petertodd: You are required to file a Suspicious Activity Report (SAR) for a transaction >= $10k, anything that might be a group of transactions >= $10k, or anything that might be an attempt to evade these limits by breaking up transactions 04:04 < petertodd> Per-vendor volume requirements are strange too... what happens with your herd of bots ideas when each one is processing a tiny volume, or collaboratively processing a tiny volume? 04:04 < warren> Why are people trusting a random person on a forum for legal advice? 04:04 < petertodd> warren: It's better than the alternative of having no advice at all. 04:04 < jgarzik> petertodd: I've heard that banks err on the side of the caution, and file SARs for just about anything 04:04 < jgarzik> warren: gathering additional data != trust 04:04 < petertodd> jgarzik: DDoS attack against the regulators... althoguh their analytics tools are probably pretty good. 04:04 < warren> petertodd: if this person is pointing at citations so you can learn more yourself, then OK. 04:05 < petertodd> jgarzik: Chaum tokens definitely evade the "group of transactions" principle, and probably anythign automated does. 04:05 < jgarzik> petertodd: I imagine a truly decentralized bot network would fall outside these regulatory params 04:05 < jgarzik> petertodd: a simple one-owner IRC bot OTOH... 04:05 < petertodd> jgarzik: Yeah, at least the act of *writing* one is probably safe... running one, who knows? 04:06 < warren> jgarzik: the encrypted RAM-only bot? 04:06 < petertodd> jgarzik: Let alone your AI organism stuff... 04:07 < jgarzik> warren: thereabouts 04:08 < jgarzik> I wonder if North Carolina has any laws that would nix an escrow bot 04:09 < petertodd> What exaclty do you see an escrow bot doing? 04:11 < warren> Hmm, by those regulations things like localbitcoin are pretty illegal 04:11 < petertodd> warren: Good point. 04:11 < warren> unless each person registers and follows regulations 04:11 < petertodd> Bitcoin-otc too probably 04:12 < warren> petertodd: I see nothing in there that makes virtual/virtual regulated by that agency though. 04:13 < petertodd> warren: That particular ruling no, but what others might there be? Regardless I suspect there is nothing other than inertia protecting virtual/virtual from regulation. 04:13 < warren> petertodd: yeah, especially otc, given you almost never verify someone's identity. in-person has what the legal scholars called "self-authenticating" properties. Like you obviously don't sell cigarettes to someone who looks too young. 04:14 < petertodd> warren: Yes and no. OTC involves either virtual/virtual, or virtual/online-real, or virtual/in-person. The former is allegedly unregulated. (for now) The latter two either give you dientity by the service (PayPal for instance) or by the person-to-person contact. Legally the last of the three is probably not enough. 04:15 < petertodd> warren: Also interesting how OTC has some people doing fiat/fiat conversions via paypal and similar. 04:15 < warren> yeah, wtf? 04:15 < warren> and why are people trading with non-hard transfers? 04:15 < petertodd> Lack of alternatives. 04:16 < warren> what's the point of fiat/fiat? 04:16 < petertodd> Trust works too with well-known community members - I've had an easy time buying BTC with paypal myself. 04:16 < warren> that seems more fishy 04:17 < petertodd> Presumably the exchange rates on paypal make it make sense; haven't looked. 04:19 < warren> Graet: btw, if I make 0.01 LTC per round on ozcoin and I opt to be paid at say 5 LTC, will the payment be from the rounds I participated in (lots of dust), or is it some more optimal tx? 04:30 < jgarzik> petertodd: an escrow bot[net] would be an open source bot run by a neutral party, that holds funds until some predefined conditions are met 04:31 < petertodd> jgarzik: I guess the key issue is if the bot can spend the funds without consent of either party. (non-multisig) 04:32 < Graet> warren, it isnt split up by round, 04:32 < jgarzik> warren: It's not strictly fiat/fiat. It's fiat-service/fiat-service. Each fiat service has its own barriers to entry and exit. 04:32 < jgarzik> and fees 04:32 < petertodd> jgarzik: After all, there are always scriptPubKeys of the form OP_HASH OP_EQUALVERIFY {other ops} where the escrow bot is really just providing an oracle service. 04:33 < jgarzik> yep 04:33 < jgarzik> petertodd: in a component sense, I would rather have the escrow bot be a very dump transaction approval machine, that would query oracle bot(s) for the necessary information 04:33 < jgarzik> *dumb 04:34 < jgarzik> anyway, way too late here :) 04:34 < petertodd> ha, same 04:34 < petertodd> Quick q: do you have any code yet? 04:34 < petertodd> Especially for more general off-chain tx stuff... 05:56 < Diablo-D3> can I ask bitcoind to compute a transaction but not send it? 09:10 < warren> Diablo-D3: can coin control? 09:14 < Diablo-D3> I think I found what I wanted in the rpc 09:14 < Diablo-D3> https://en.bitcoin.it/wiki/Raw_Transactions 10:20 < sipa> Diablo-D3: createrawtransaction can do that 10:20 < Diablo-D3> sipa: see above url =P 10:20 < Diablo-D3> details that whole family of api 10:46 * sipa will attend the conference 18:05 < warren> "lead developer" implies he has a lot of decision making power, which makes me kind of nervous by who pays for his paycheck. should I be concerned? 18:07 < warren> nevermind 18:23 < jgarzik> warren: ? --- Log closed Wed Mar 20 00:00:37 2013