Pages:
Author

Topic: Coinbaser branch's new JSON-RPC method (Read 6062 times)

legendary
Activity: 1386
Merit: 1097
December 02, 2011, 11:00:45 AM
#45
I'm thinking to use it too, because nobody maintains original merged mining code. So yes, I vote for that, too.
legendary
Activity: 1260
Merit: 1000
December 02, 2011, 10:58:49 AM
#44
I am using it... so it's at least 2 people Smiley
legendary
Activity: 2576
Merit: 1186
November 30, 2011, 09:52:30 PM
#43
How about enabling it exclusively on testnet for the moment? It is possible that badly written merged mining systems might spam BitCoin with blocks of low difficulty while happily mining on their own chains. Having the DOS prevention code enabled would mitigate this risk.
This is not made possible with Coinbaser. All coinbaser does is allow modifying the content of your coinbase. Nothing else with the usual mining stuff is changed.
sr. member
Activity: 416
Merit: 277
November 30, 2011, 09:49:37 PM
#42
I don't know nuthin about merged mining-- anybody have objections to Luke-Jr's pull?

How about enabling it exclusively on testnet for the moment? It is possible that badly written merged mining systems might spam BitCoin with blocks of low difficulty while happily mining on their own chains. Having the DOS prevention code enabled would mitigate this risk.

ByteCoin
legendary
Activity: 1652
Merit: 2301
Chief Scientist
November 30, 2011, 08:52:30 PM
#41
I don't know nuthin about merged mining-- anybody have objections to Luke-Jr's pull?

My only concern is: will this be a "used by exactly one person (the Eligius pool)" feature?
legendary
Activity: 2576
Merit: 1186
November 21, 2011, 12:51:13 PM
#40
Back on topic, it's about time for 0.6 merging, and coinbaser is still cleanly mergable. Could we get the few people who voted against it to change their votes, or at least explain them?
hero member
Activity: 481
Merit: 529
October 16, 2011, 07:42:13 AM
#39
Right, I didn't think Lukes proposal through properly. It is simpler so I updated the wiki page to say that.
As I would have done, had not Luke himself preferred the other way.  No biggie, I think they're both fine, and the wiki page links here for the truly interested.
legendary
Activity: 1526
Merit: 1134
October 16, 2011, 06:40:27 AM
#38
Right, I didn't think Lukes proposal through properly. It is simpler so I updated the wiki page to say that.
legendary
Activity: 905
Merit: 1012
October 16, 2011, 12:32:07 AM
#37
Couldn't one of the rules of the aux-chains be to reject proof-of-works which have more than one aux-header in the Merkle tree for the same aux-chain?
hero member
Activity: 481
Merit: 529
October 15, 2011, 11:21:32 PM
#36
Yeah, that solution does look better. It'd be good to put that on the Alternative Chains wiki page too.
Done.  New section; created merged mining page as redirect to Alternative Chains.
legendary
Activity: 2576
Merit: 1186
October 15, 2011, 09:44:47 PM
#35
(off-topic, sorry) I think also Luke-Jr's proposal
Quote from: Luke-Jr
Why is it so hard to simply disallow a master-chain block from "vouching for" more than one block in each aux chain? :/
could use elaboration.  I take it to mean, have the aux chain software enforce uniqueness of its work-proving hashes.  I think that would work too and is a bit more elegant than sticking the value in the aux chain.
I think the latter is a better solution: it doesn't require looking up the hash in all the past blocks.
hero member
Activity: 481
Merit: 529
October 15, 2011, 09:25:47 PM
#34
Yeah, that solution does look better. It'd be good to put that on the Alternative Chains wiki page too.
Thanks, will update in my Copious Spare Time.  Cheesy

(off-topic, sorry) I think also Luke-Jr's proposal
Quote from: Luke-Jr
Why is it so hard to simply disallow a master-chain block from "vouching for" more than one block in each aux chain? :/
could use elaboration.  I take it to mean, have the aux chain software enforce uniqueness of its work-proving hashes.  I think that would work too and is a bit more elegant than sticking the value in the aux chain.
legendary
Activity: 1526
Merit: 1134
October 15, 2011, 10:25:53 AM
#33
Yeah, that solution does look better. It'd be good to put that on the Alternative Chains wiki page too.
hero member
Activity: 481
Merit: 529
October 13, 2011, 12:36:27 PM
#32
Maybe there's something I missed, after all I haven't actually implemented this.

This thread touches on it.  I'm curious what you'd think of it.

Quote from: johntobey253
Quote from: vinced
Quote from: nodemaster
Quote from: Luke-Jr
Why is it so hard to simply disallow a master-chain block from "vouching for" more than one block in each aux chain? :/
Mhmm, If I understand it correctly this might be undesirable because it might be (and is common) that you solve several AUX chain blocks and have one master-block vouching for them, right? This problem would only be solved if the difficulty of both blockchains draw levels.

This was solved in the current code by requiring each chain to appear in a specific (pseudo-random) spot in the aux chain merkle tree, based on the chain ID.  So for a specific chain ID, you would only be able to "solve" one aux chain block per parent block.

It's good to see you all evaluating the details of the implementation and I appreciate the feedback.  The more eyes on this the better.

There is a more flexible solution to the problem.

The problem is that, with MM as first implemented, a miner could cheat the proof-of-work system by putting more than one Namecoin block header into one Bitcoin block.  This "cheating" would not cause a problem if the Namecoin blocks all had the same previous-block hash: one or another would win the race, as happens when competing blocks enter the network.  The problem would arise if a linked series of Namecoin blocks all existed in one Bitcoin block's aux Merkle trees.  The miner could work on them all at once, getting more from his hashes than difficulty warrants.

Vince's solution is to constrain the paths by which Namecoin blocks may be embedded in Bitcoin blocks.  This works, but it complicates the picture for miners and chain designers in a future with many merged-mining chains.

A better solution for new chains is to prevent the existence of linked series of aux chain blocks which lack proof of work.  You might do that by requiring each aux chain block to refer (perhaps via its own coinbase or a new header field) to the "solution" (target-meeting hash of parent chain block) as well as the hash of the previous block in the aux chain.  In Bitcoin, these two are the same, namely hashPrevBlock.  Force blocks to refer not just to the previous block in the chain but to the proof of work on that block.  A series of aux blocks all being worked on would not make sense, because the second block in the series would have to reference the first block's solution, so the first block would have to have been solved.
legendary
Activity: 1526
Merit: 1134
October 13, 2011, 07:59:49 AM
#31
I don't understand either approach to be honest. The alt chains wiki page laid out how that's supposed to work. You tie your aux block to the coinbase hash with a merkle branch to the value in the coinbase transaction and an index into that coinbase scriptSig. There's no need for magic markers or some kind of "uber-merkle-tree" for all aux chains.

Maybe there's something I missed, after all I haven't actually implemented this.
 
legendary
Activity: 2576
Merit: 1186
October 13, 2011, 07:55:44 AM
#30
Quote
And those blocks without magic prefix are accepted by the rest of the nmc network?  If so that's my concern dealt with.

That's weird. What is the prefix for, if Namecoin doesn't actually need it?
It was originally proposed as a way to prevent multiple MM hashes in the same coinbase. After a few people (myself included) made a fuss over the inelegance of it, I presume it was changed to the current (not too much better) method of forcing a specific slot in the aux merkle tree.
legendary
Activity: 1526
Merit: 1134
October 13, 2011, 07:51:43 AM
#29
Quote
And those blocks without magic prefix are accepted by the rest of the nmc network?  If so that's my concern dealt with.

That's weird. What is the prefix for, if Namecoin doesn't actually need it?
sr. member
Activity: 266
Merit: 254
October 12, 2011, 10:49:44 AM
#28
*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.
legendary
Activity: 2576
Merit: 1186
October 12, 2011, 10:31:28 AM
#27
*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...
sr. member
Activity: 266
Merit: 254
October 12, 2011, 10:19:32 AM
#26
*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...

Pages:
Jump to: