Bitcoin Forum
June 08, 2024, 07:50:50 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
  Home Help Search Login Register More  
  Show Posts
Pages: « 1 2 3 4 5 6 7 8 9 [10] 11 12 13 14 15 16 17 18 19 »
181  Bitcoin / Mining / Re: [ATTN: POOL OPERATORS] PoolServerJ - scalable java mining pool backend on: October 15, 2011, 11:51:15 AM
Quick question on poolserverj - is there by chance a config setting that will let me change the difficulty for 'accepted work'?  Haven't had a chance to take a closer look at the source yet, figured somebody else might know.

The reason I'm asking is I'm considering porting it to make a pool for litecoins, but of course would ask permission if I had to modify any of the source (I did manage to take a brief look at license.txt while perusing a bit of the poolserverj code Wink ).

I'd prefer this over pushpool because I like Java.  Cheesy

As far as I can tell anything other than share difficulty would have an easy workaround to get litecoind and poolserverj to work together (in terms of, if I run into an issue, I can make another program of my own to translate between the two, or modify litecoind).

No need to ask permission to modify psj.  It's GPL.  Earlier versions were no-derivs creative commons license but that's long gone.  However, I don't think you'll need to. Take a look at the very end of the sample properties file.  There is actually an option to set difficulty though no one's ever used it in production as far as I know.  I would recommend after setting you do a manual getwork and inspect the target to ensure the endianess is correct.

I don't know anything about litecoin but psj has been successfully used on several alt chains.  The only real requirement is that the alt chain uses the same hashing algorithm as bitcoin, if so poolserverj won't know the difference and will happily do it's thing.

One this to watch with alt chains though is whether or not they've got the duplicate work bug.  Have search back in this thread for an explanation of it...
182  Bitcoin / Pools / Re: Bandwidth of a Pool on: October 15, 2011, 10:44:33 AM
A getwork request is about 600 bytes, and a submit work is about 40 bytes.

submit work should be a lot more than 40 bytes... Unless you mean outbound...

Getwork could be reduced to about 40 bytes + maybe another 40 for tcp overhead with a proper differential binary protocol.  80/640 = 88% reduction.  I'm thinking of working on that as part of the next phase of poolserverj development but I'd be interested to hear if bandwidth costs really are an issue for pool ops... If so just have to hope some miner devs will step up and implement the client side of it.

basically first request contains all the stuff in a normal getwork (though in binary) except midstate which is redundant.  Subsequent requests only contain a new merkle root and timestamp.  These are the only fields that actually change except at longpoll time.
183  Alternate cryptocurrencies / Altcoin Discussion / Re: SolidCoin Now officially most secure p2p currency on: October 13, 2011, 03:36:57 AM
hmm the very 1st assertion in the article:

Quote
Well that is the 51% attack, and it basically means you can wake up tomorrow with zero Bitcoins in your wallet.

And it's a blatant lie.  I'd prefer to put it down to stupidity rather than outright deception but I have trouble believing someone who's key marketing feature is 51% immunity could get this so completely wrong.

Either the stupid is off the scale or the deception is blatant.
184  Bitcoin / Development & Technical Discussion / Re: Coinbaser branch's new JSON-RPC method on: October 12, 2011, 03:49:44 PM
*If* a reasonable limit on coinbase outputs could be added then for what it's worth I'd be happy to add my vote in favour on the change.  Without said limits then my vote is in favour of the 'setworkaux' part of the change only.
And what reasonable limit would that be? There are at least legitimate circumstances for having tiny-amount outputs (I always include a single 1 Satoshi output so it shows up on my pool's listtransactions). I suppose there could be a hard-cap on total count of outputs, but what should that be? Maybe 1% of the current block size limit? That gives 294 outputs max at 1 MB (the current hard-coded block size limit)-- an average of ~0.17 BTC each.

Well I can see two approaches to determining limit.  Both have issues but just because it's tricky to enforce a limit sensibly isn't a good reason to allow open slather...

1/ Tx outpoint size is relatively constant.  Yes it can vary but for 99% of use cases it will the same type of script which is the same length.  So from simple easy to enfore rule that would probably be the better option.  I notice eligius already has some notion of a payout queue and I thought that might be somehow related to this issue.  I was quite suprised when I started looking a eligius coinbases to find the number of outputs was always far far less than what I'd guess yr total miners would be.  That's actually what got me thinking about this as a potential problem.  When I saw that I thought you were limiting it for that very reason.
The original reason for that was simply to help miners avoid a lot of tiny payouts they have to pay large fees to spend.

2/ min tx value would be easier from a pool ops point of view.  And whilst the size of the outputs would be more variable it would at least prevent extreme accidental abuse.
As I said, valid values can be as low as 1 satoshi...

Well I just don't think encouraging/facilitating tiny payouts is a good idea... perhaps this is the way to go: "Maybe 1% of the current block size limit? That gives 294 outputs max at 1 MB (the current hard-coded block size limit)"

It's more tricky for pool ops to calculate but it is a sensible number.
185  Bitcoin / Development & Technical Discussion / Re: Coinbaser branch's new JSON-RPC method on: October 12, 2011, 03:19:32 PM
*If* a reasonable limit on coinbase outputs could be added then for what it's worth I'd be happy to add my vote in favour on the change.  Without said limits then my vote is in favour of the 'setworkaux' part of the change only.
And what reasonable limit would that be? There are at least legitimate circumstances for having tiny-amount outputs (I always include a single 1 Satoshi output so it shows up on my pool's listtransactions). I suppose there could be a hard-cap on total count of outputs, but what should that be? Maybe 1% of the current block size limit? That gives 294 outputs max at 1 MB (the current hard-coded block size limit)-- an average of ~0.17 BTC each.

Well I can see two approaches to determining limit.  Both have issues but just because it's tricky to enforce a limit sensibly isn't a good reason to allow open slather...

1/ Tx outpoint size is relatively constant.  Yes it can vary but for 99% of use cases it will the same type of script which is the same length.  So from simple easy to enfore rule that would probably be the better option.  I notice eligius already has some notion of a payout queue and I thought that might be somehow related to this issue.  I was quite suprised when I started looking a eligius coinbases to find the number of outputs was always far far less than what I'd guess yr total miners would be.  That's actually what got me thinking about this as a potential problem.  When I saw that I thought you were limiting it for that very reason.

2/ min tx value would be easier from a pool ops point of view.  And whilst the size of the outputs would be more variable it would at least prevent extreme accidental abuse.

Those are the options I can think of... not sure which is the best or if there's a better one or if I'm even worrying about a non-issue.  Hoping someone else will step up with an opinion...

186  Bitcoin / Development & Technical Discussion / Re: Coinbaser branch's new JSON-RPC method on: October 12, 2011, 01:27:50 PM
The remain concerns are:  Does the -coinbase <cmd> enforce either a minimum tx output value or a max number of tx outputs?  If not it should.  The primary use case for this for pools to payout their miners and have invalid blocks dealt with automagically.  It there are no limits it's only a matter of time before some pools start paying out tiny balances to masses of miners.  This could bloat the coinbase a lot unless I'm missing something.
There is nothing anyone can do to stop block-makers from producing tiny coins. Coinbaser does prevent invalid outputs, though-- if the output is not consistent (ie, tries to pay too much, to an invalid address, etc) it fails over the the default behaviour.
True anyone could create a monster coinbase transaction if they had the knowledge to construct a block from scratch and feed it into the network via p2p protocol.  But if you knew enough to do that you'd probably know why it's a bad idea.  A simple command line switch doesn't require any real knowledge of the network to use successfully and that's where the danger lies.  A relatively technically unskilled pool op decides to payout every single miner on every won block.  This is quite feasible and without any enforcement it just makes the problem accessible to people more likely to make the mistake.

Quote
My second concern is that Luke has made the following comment in the wiki:

Quote
Insert exactly one of these headers into the scriptSig of the coinbase on the parent chain. vinced's code always inserts an OP_2, 0xfa, 0xbe, 'm', 'm' in front of it, but you don't have to.

As far as I can see this patch doesn't deal with validation of the aux blocks.  Presumably this will be left to vinced's original code as you'd require an update to all namecoin miners to alter it's validation rules.  So the question is, will the absence of OP_2, 0xfa, 0xbe, 'm', 'm' before the aux header prevent vinced's validation from working?  If so then the rpc call should check this and return an error if it doesn't.
No, the reason I changed this to say optional is because I am successfully using it on Eligius without that magic prefix.

And those blocks without magic prefix are accepted by the rest of the nmc network?  If so that's my concern dealt with.

*If* a reasonable limit on coinbase outputs could be added then for what it's worth I'd be happy to add my vote in favour on the change.  Without said limits then my vote is in favour of the 'setworkaux' part of the change only.
187  Bitcoin / Development & Technical Discussion / Re: Coinbaser branch's new JSON-RPC method on: October 12, 2011, 09:33:31 AM
I've only got two concerns left with this patch.  Luke's done some good doco for both parts of it.  And now that he's explained how you'd use a bit better I can see this becoming an eventual replacements for most of vinced's implementation.   It is a much cleaner way in the long run.

The remain concerns are:  Does the -coinbase <cmd> enforce either a minimum tx output value or a max number of tx outputs?  If not it should.  The primary use case for this for pools to payout their miners and have invalid blocks dealt with automagically.  It there are no limits it's only a matter of time before some pools start paying out tiny balances to masses of miners.  This could bloat the coinbase a lot unless I'm missing something. 

My second concern is that Luke has made the following comment in the wiki:

Quote
Insert exactly one of these headers into the scriptSig of the coinbase on the parent chain. vinced's code always inserts an OP_2, 0xfa, 0xbe, 'm', 'm' in front of it, but you don't have to.

As far as I can see this patch doesn't deal with validation of the aux blocks.  Presumably this will be left to vinced's original code as you'd require an update to all namecoin miners to alter it's validation rules.  So the question is, will the absence of OP_2, 0xfa, 0xbe, 'm', 'm' before the aux header prevent vinced's validation from working?  If so then the rpc call should check this and return an error if it doesn't.
188  Bitcoin / Development & Technical Discussion / Re: Request to remove getmemorypool before it gets beyond being a release candidate on: October 11, 2011, 02:28:36 PM
This is not required for the current merged mining implementation.  In fact it doesn't allow you to tell bitcoind what to put into the coinbase.  It's a read only operation.  I see where you're coming from but blocking this feature is not to going to stop people generating blocks with their own data.  There's nothing to stop someone collecting transactions by listening to the p2p protocol and generating their blocks that way.  This gives the opportunity to leverage code in bitcoind i.e. you can assume what's contained in the response of getmemorypool has passed bitcoind's validations but there's nothing stopping you from implementing this yourself or even accepting transactions with different criteria.

At the end of the day your concerns can't be addressed by blocking features in one client.  They need to be addressed at the protocol level.  If the protocol and therefore the majority of block generating clients define > n bytes in coinbase to be invalid then that's the way it is.  Simply preventing one client from generating blocks like that doesn't stop anyone else from doing it.

If you wanted to block merged mining for example all you'd have to do is create a patch to reject blocks with more than 39 bytes of arbitrary data in the coinbase.  Then get enough pools to represent 51% to run the patch.  It's not part of the official client but it becomes the defacto protocol by virtue of adoption.
189  Bitcoin / Pools / Re: backdoor-merged-mining with cheating miners on: October 11, 2011, 02:22:04 AM
However if a pool op wanted to hide it all they'd have to do is when they won a bitcoin block don't send the solution to the aux chain.  Then there's no link... They lose 1 block on the aux chain but they get all the aux chain blocks that meet aux difficulty but not bitcoin difficulty, which is most of the.

Nonsense. Everytime pool is doing MM on BTC network, his coinbase is different (much longer) than usual. So you can detect if pool is doin MM, lets watch "raw data" of his blocks. There's no way ho to hide this information.

Example of coinbase while merge mining: http://blockexplorer.com/rawblock/00000000000008371089fddbdee1f7cf580d98e64c276c649102d2ab95fd9844

Fair call...  A pool op would still have plausible deniability.  You can insert any old junk into the coinbase.   Correct me if I'm wrong but the MM specific stuff in the coinbase is the merkle root + tree size + nonce so with a random nonce the only real signature is the tree size and length of the data.

However, plausible deniability is probably largely academic since any pool up with unexplained data in their coinbases will no doubt come under suspicion now.

BTW this looks wrong to me: coinbase":"045dee091a03ac8701522cfabe6d6defb6519b6439e5852d2cdba258fe21438204f3eb6f69001fc d74e884ee87482b0100000000000000"

it indicates a tree size of 0?
190  Bitcoin / Mining / Re: [EXPERIMENTAL] Patch to move work generation to pushpoold, faster pools? on: October 11, 2011, 02:09:41 AM
I hear that luke-jr has been working on something vaguely similar too, and shadders is developing another approach to poolserver work generation in PoolServerJ as well.

Actually I'm implementing a work generator module that can either run embedded inside poolserverj or as a standalone.  The reason for the latter is that psj can get pretty busy with other things as well so you may still want to spread that load across two servers... The standalone will not use rpc.  It will simply stream work to psj in a compact binary format and psj controls the flow by sending stop/start signals.
191  Bitcoin / Pools / Re: backdoor-merged-mining with cheating miners on: October 10, 2011, 03:35:53 PM
The only way I can think you can detect it is after the parent chain has made a block... if the aux chain has a lower difficulty there should be a corresponding block.  Both block contain the data needed to confirm they linked.  However if a pool op wanted to hide it all they'd have to do is when they won a bitcoin block don't send the solution to the aux chain.  Then there's no link... They lose 1 block on the aux chain but they get all the aux chain blocks that meet aux difficulty but not bitcoin difficulty, which is most of the.
192  Other / Archival / Re: delete on: October 09, 2011, 02:23:35 PM
Quote from: Matthew N. Wright
Stop wasting the internet.

rofl...

sig

|
V
193  Bitcoin / Mining / Re: [ATTN: POOL OPERATORS] PoolServerJ - scalable java mining pool backend on: October 09, 2011, 11:31:31 AM
just the address in my sig is fine...

Just uploading rev .02 atm.  Found a deadlock in the work submit thread.  There's some awfully convoluted syncing that has to go on there.

about 6 mins to go on my lightning internet connection.

also, recommend that you set 'forceAllSubmitsUpstream' until it's proven that it detects winning shares.  There will be a log file created in yr launch directory called 'real-share-submits.log' that tracks the progress of a suspected winning share through the server and gives the info we need to prove it's going to work without the force option switched on.
194  Bitcoin / Mining / Re: Merged mining now live on: October 09, 2011, 11:21:37 AM
Why would deepbit risk the mass exodus if found out?

Because the odds of "finding out" are zero?

Because most miners wouldn't care or even know why they should care?


If you have corresponding bitcoin and aux chain blocks you can prove they are connected.  All you'd need to do is wait for a pool to find a bitcoin block then see if an alt chain had one about the same time.  Do a bit of cryptoacrobatics and you've got yr proof.

The way it could be hidden is if when you win a block on high diff chain don't submit the work to lower diff chain.  You lose the alt chain's block but then there's no link.  Just keep all the alt chain blocks that solve for the alt chain but not the main chain.
195  Bitcoin / Mining / Re: [ATTN: POOL OPERATORS] PoolServerJ - scalable java mining pool backend on: October 09, 2011, 09:51:18 AM
4hrs left for 300 BTC  Shocked

Committed...

Well we may have to wait a while to decide if that counts as working.  Of course I can actually test if winning blocks are accepted without winning one on my 50MH rig.

196  Bitcoin / Mining / Re: [ATTN: POOL OPERATORS] PoolServerJ - scalable java mining pool backend on: October 09, 2011, 06:52:51 AM
4hrs left for 300 BTC  Shocked

been going at this damn thing for 6 hrs straight now.  I remember why I've been putting it off for so long.

BTW I told Davinci that I wouldn't release this publicly for at least a week after he got it which I think is fair given the hefty bounty he's posted.  However he generously declined the offer and requested I make it available to everyone immediately so if you do use it please consider making a donation to Davinci because I certainly wouldn't have gotten off my lazy arse to finish if he hadn't dangled the carrot in front of me.
197  Bitcoin / Mining / Re: Merged mining now live on: October 09, 2011, 05:41:49 AM
but a few pool operators are complaining its to complicated to configure, nevermind the fact there has been 2-3 months to ask questions and try and get ready for it.

You can't get answers to your questions.  And you can't figure it out because there is no documented spec and interpreting the source code leaves many ambiguities.
198  Bitcoin / Mining / Re: Merged mining now live on: October 09, 2011, 04:10:10 AM
It's quite possible (I'd say even likely) there's something wrong with the way solutions are being submitted to the NMC daemon.  It's hideously complex process to submit and there's plenty of place where it could go wrong.
199  Bitcoin / Mining / Re: [ATTN: POOL OPERATORS] PoolServerJ - scalable java mining pool backend on: October 08, 2011, 04:26:18 PM
18hrs... I gotta sleep Wink
18 hrs then triple BTC, 24 hrs double.

After that my offer expires and I will stick to the original agreement.

k well I better stop playing with merkle trees and get some sleep then Smiley
200  Bitcoin / Mining / Re: [ATTN: POOL OPERATORS] PoolServerJ - scalable java mining pool backend on: October 08, 2011, 04:06:07 PM
18hrs... I gotta sleep Wink
Pages: « 1 2 3 4 5 6 7 8 9 [10] 11 12 13 14 15 16 17 18 19 »
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!