Gold collapsing. Bitcoin UP.

awemany

Well-Known Member
Aug 19, 2015
1,387
5,054
@Roger_Murdock :
Off to the slaughter you go.
I am glad that Greg as one of the most vocal small-blockers is on record stating that VISA-level scaling 'as an extreme example' would work with Bitcoin. Now, he might not like it but it would work.

So really, small-block miners, what are you still waiting for?

Regarding the AD deemphasis, I tend to think it is a good idea - but lets explore ways to keep the interface as simple as possible (as well as not give the trolls who want to say 'BU pivots and changes EC1!!' any fuel)
 

AdrianX

Well-Known Member
Aug 28, 2015
2,097
5,797
bitco.in
The main reason for you to run a full node as a regular user is to know when you've been paid.
@go1111111 I consider the vast majority of bitcoin users to be regular users and I don't believe they run nodes.

so that seems like a false premise, when you consider Coinbase has over 6,000,000 customers, 4,000,000 before they started selling altcoins, I think the estimates that peg bitcoin users above 10,000,000 have some validity.

I have empirical evidence of 1 approximately 0.014% of users that run a public node don't run a node for the reason you say.

All your Scenario's are fictitious and improbable, miners don't mine multiple chains they mine the longest chain based on valid blocks. Relay nodes follow that chain, they can't reorganize the chain they can just follow,

The EB setting is just a setting at which point they effectively close port 8333 and stop relaying blocks and transactions. but they always follow the blocks the miners produce exactly the same way it happens today.

I do agree with your Option B, It's not a better option because it's susceptible to being hijacked and the reason it failed mid 2015 was because of social engendering. but I would go for it in a hear beat.
 
Last edited:

go1111111

Active Member
BU has been working to correct this error in public perception. The new website doesn't mention AD anywhere outside of the FAQs and @freetrader has just written a BUIP to make it easier to disable AD. I'd also like to see AD signalling dropped from the user-agent and coinbase strings.
I otherwise liked this video on Emergent Consensus: ,

...but I think it also gives too much emphasis to AD. Specifically, it says "by defining this AD, he can adapt his behavior to that of the network, like a bird in a flock reacts to the movement of the birds around it." This presents AD as the primary mechanism allowing users to coordinate with each other and produce emergent consensus. As discussed above, in reality emergent consensus will mostly result from people proposing changes outside of the protocol, and humans deciding on their own whether they like that change or not.

But I still don't understand how you can argue that AD is "flawed" or how that statement even makes sense. Many node operators like the AD feature, including myself. What's wrong with providing it?
My argument is that AD is worse than alternative settings that could have been made available when it comes to allowing most users to specify the behavior they want. Given that BU only exposes two settings, I don't think AD is in most users' "top 2" for the reasons I listed. It might be around ~5 for me. If I had to pick two types of setting, I'd go with EB and EB@<block height> to allow coordination.

The problem is not in providing AD as an option to people who like it, the problem is in thinking it's one of the more important parameters if you only provide 2. From your other statements, it does seem like you might prefer a way to specify that EB should change in the future if you had to choose between that and AD.

FE8@500000 tells the network the miner is wiling to accept <8MB blocks at a certain time, blk50000
...
FE8@75% tells the network the miner is wiling to accept <8MB blocks, at a certain majority; 75% in the future, but the timing is uncertain
I suggest that these settings be combined, such that they can both be specified together, or separately.

To fully decouple block size settings from dev teams what we really need is a general 'language' that can be used to express a wide variety of such behavior. Something a little more in this direction would be the following. The stuff after "//" explains the meaning.

EB=1 // excessive block is 1 MB

EB=2@500000 // EB should change to 2 MB at block 500000

EB=4#75,1000,2000 // EB should change to 4 MB once 75% of the last 1000 blocks signal support, with a delay of 2000 blocks after the 75% threshold is reached

EB=4@500000#75,1000,2000 // same as the previous case, except the new 4 MB limit can't take effect earlier than block 500000

Having multiple such lines in your config file allows you to specify the current EB and specify an arbitrary number of planned future increases or conditional increases. Some proposed scaling plans might need many lines to represent them, but most people would just download recommended settings.

Btw, I suggest not creating a new setting called 'FE' if it simply means 'EB in the future'. You can specify settings for EB in the future by using syntax like above without introducing a new parameter.

As I've written before, "emergent (i.e.,decentralized) consensus" is just a buzzword. It's not a new model; it's the way Bitcoin has always worked and the only way it could work. To me, EC doesn't imply AD!
There is a convention that lots of people use, which I assumed people on this forum were on board with, where "emergent consensus" means the nebulous concept, and "Emergent Consensus" (capitalized) is the specific BU algorithm, using EB and AD. It seems that many BU supporters use the terms in this way, but apparently some don't. I agree with you that this convention is kind of unfortunate because it tarnishes emergent consensus (no caps) by associating it with a specific algorithm.
 

Peter R

Well-Known Member
Aug 28, 2015
1,398
5,595
@go1111111

"If I had to pick two types of setting, I'd go with EB and EB@<block height> to allow coordination."

Are you speaking for yourself as a node operator, or are you trying to look out for miners? I don't understand why operators of non-mining nodes would be overly concerned with coordination.

The way I see it, if I'm wearing my "node operator hat," the most important tools to me are (1) EB and (2) AD -- I hardly care about coordination because I'm probably running with an EB greater than the miners anyways, and if not, then my AD will ensure I don't fork.

If I'm wearning my "miner hat," then the most important tools to me are (1) EB and (2) a way to coordinate changes in EB. But as a miner I still like AD because it gives me peace of mind that I won't mine on a minority chain for too long in case the coordination scheme breaks down.

But, yeah, I agree that it's time for BU to add one or more block size limit coordination tools for miners.

"EB=1 // excessive block is 1 MB

EB=2@500000 // EB should change to 2 MB at block 500000

EB=4#75,1000,2000 // EB should change to 4 MB once 75% of the last 1000 blocks signal support, with a delay of 2000 blocks after the 75% threshold is reached

EB=4@500000#75,1000,2000 // same as the previous case, except the new 4 MB limit can't take effect earlier than block 500000"


Nice ideas!

"Btw, I suggest not creating a new setting called 'FE' if it simply means 'EB in the future'. You can specify settings for EB in the future by using syntax like above without introducing a new parameter."

Yeah, I'd prefer using EB for both too. I think it would be easy to infer the context as you point out. In fact, I started out using "EB" for both but then people told me that it was confusing and that I should use "FE." C'est la vie.
 

painlord2k

Member
Sep 13, 2015
30
47
When we talk about Emergent Consensus we should focus on full nodes (miners).
Non mining nodes will just follow the branch with more PoW (before or later).

EB1 just signal what a miner accepts. Don't help the miners coordinate a change of EB.

Miners have a strong incentive to move from EB1 to EB2 in lockstep, in converse, without the ability to coordinate they have a strong incentive to not move independently one from the other.

Other parameters signalled should help miners to get an agreement about the block when they should switch the EB parameter all at once.

FE4#75, 1000, 2000 should signal "I will signal EB4 (I accept blocks<4MB) when 75% of the last 1000 blocks signal FE4 after a delay of 2000 blocks".

FG4#80, 100, 200 should signal "I will create blocks<4MB when 80% of the last 100 blocks signal EB4 with a delay of 200 blocks.

FE is fundamental because we MUST allow the majority to coordinate the change of EB. In this way we make sure the large majority of the miner's hash rate change all at the same time.
If 40% blocks signal FE4 and 40% blocks signal EB4 should be counted together as 80% blocks signal FE4. The 40% FE4 will switch all together.

In this way, the first to change the setting don't risk to fork because a malicious miner release a large block before EB2 get the majority or when the majority is very thin.

FG4 just advertises when the miner will start to build larger blocks AFTER he sees the specified majority of blocks declaring EB4. But nothing prevents him or someone else from mining earlier a larger block.

It would be a good idea to set some safe default values for the majority, the length of the voting and the delay of activation.

E.G. (Probably overly prudent)

For FE
75% should be a good threshold
2000 blocks (two weeks) as the period of voting should be safe
4000 blocks (four weeks) as the period before activation should be safe.

For FG
75% should be a good threshold
200 blocks for the period of observation
400 blocks of delay.
 

awemany

Well-Known Member
Aug 19, 2015
1,387
5,054
It appears the number of unconfirmed TXN in the mempool seems to make even the masochistic rBitcoin crowd somewhat tired of their cock-blocking kink.

Again. They seem to quickly forget, however.
 

xhiggy

Active Member
Mar 29, 2016
124
277
One way to market what BU is offering would be to say that it is a "set your own spam control" feature. This communicates that the EB is expected to be much larger than transaction traffic.
 

awemany

Well-Known Member
Aug 19, 2015
1,387
5,054
Greg seems to remember from his time with Wikipedia that he doesn't like larger nor extended blocks. :)
 

albin

Active Member
Nov 8, 2015
931
4,008
@Zangelbert Bingledack

One thing I know for sure is that Peter Todd's conception of it is certainly a myth, because the actual paper by Sirer and Eyal combined block withholding with a sybil attack to arrive at their threshhold hashrate numbers, whereas Todd just pretends those numbers exist in the wild purely as a function of hashrate alone with no gaming of network propagation.
 

go1111111

Active Member
Are you speaking for yourself as a node operator, or are you trying to look out for miners? I don't understand why operators of non-mining nodes would be overly concerned with coordination.
I'm speaking about my preferences as a regular node operator. Chain splits that I didn't know about should be rare enough that I don't want my node to automatically do anything without my input in that case. If there has been a chain split, I want my node to ask me "Yo, a longer chain with larger blocks exists than your current settings are configured to accept exists. Want to switch to that chain? Y/N." I can then do any investigation I need to do regarding the fork.

(An ideal wallet would actually track both chains if they continued to exist and let me separately manage my coins on each, but that's much more complex.)

The way I see it, if I'm wearing my "node operator hat," the most important tools to me are (1) EB and (2) AD -- I hardly care about coordination because I'm probably running with an EB greater than the miners anyways, and if not, then my AD will ensure I don't fork.
I believe avoiding the 'scenario #1' and 'scenario #3' that I outlined in my original post are worth not wanting to use an EB greater than the current consensus max block size and not use AD at all, respectively. @Roger_Murdock replied casting doubt on the likelihood of those scenarios and I didn't dive into details with him, but I'll now explain why I think he underestimates the risks (even though they're still small):

First, it's claimed that only one > 1 MB block has ever been mined, so it's so rare as to not be worth worrying about. The reason that this is the case is that throughout Bitcoin's history, most people haven't been using EC. If the entire network migrated to EC, then situations where a new block was mined that is larger than all previous blocks in the chain would be more common.

Second, Roger assumes that any > 1 MB block would be mined accidentally, but it may be a deliberate attack, especially if lots of people use EB > current max block size. The attack is profitable if you can trick some portion of ~2000 people (or ~4000, or more depending on the block size) into sending you value whose sum across all people is greater than the expected normal block reward. As a miner you can try to trick one person for every transaction that you can include in the block. If blocks were 4 MB, then attackers could try to trick 8,000 people and would only need to extract $2.50 of value from each one.

Maybe this attack wouldn't actually be profitable, but running EB > the current max block size doesn't give enough benefit that it seems worth it. If these attacks occasionally happened, then even if I'm not a target of the attack, 1-confirmation transactions suddenly become less meaningful to me just because of the settings I happen to be running. If I change EB = the current max block size, then I can be a little more confident about 1-confirmation transactions. Not a huge deal, but again the benefit of setting EB > the max block size is also minuscule because (a) I will have heard about any fork, (b) if I hadn't, I much prefer if the software just warns me so I can manually make a choice.

Also, if I was so nonchalant about whether confirmed transactions were valid that you think I should ignore this, why was I running a full node in the first place? The "oh, that's unlikely, don't worry about it" argument applies to anyone who wants to run a full node instead of SPV, since SPV security is actually quite good.

For 'scenario 3' where a hash rate majority starts producing blocks above my EB, it doesn't need to be an especially malicious group of miners resulting in Bitcoin's security model completely breaking. I bet if Jihan and his mining friends got 65% of hash power and decided to unilaterally hard fork to 32 MB blocks, most people in this forum would go along with it and not see it as an "attack" that break's Bitcoin's security model. In this case, I don't want my software to just assume I want to follow the 32 MB chain. Maybe I will end up following it, but what I really want to do is follow the chain that the economic majority will follow. Perhaps after investigating the fork a bit, I decide that I think Jihan was a bit too aggressive with the 32 MB thing, and I think the economic majority will go against his chain. This kind of contentious chain split where both sides have sincere believers is a real possibility, and I definitely prefer making a manual choice in this case.

As discussed previously, if there was such a contentious split the AD setting wouldn't actually harm me much because it's likely that I would have been paying attention, but that just means that AD would be unnecessary. If I am paying attention, I don't need AD. If I'm not paying attention for some strange reason, then I definitely want to be prompted to make a manual choice and not have my software silently follow the hash rate majority no matter what.

I think part of what causes people on this forum to not see problems with AD is the belief that you actually do want to follow the hash rate majority almost no matter what.


Yeah, I'd prefer using EB for both too. I think it would be easy to infer the context as you point out. In fact, I started out using "EB" for both but then people told me that it was confusing and that I should use "FE." C'est la vie.
Cool, I feel pretty strongly that "FE", "FG" (whatever that is) are messier and add unnecessary complexity. If EB@500000 means "the EB setting at block 500000 or later", then coming up with a new parameter name seems pointless. Can someone who thinks "FE" and "FG" are somehow useful terms please explain why?
 
Last edited:
  • Like
Reactions: AdrianX

Peter R

Well-Known Member
Aug 28, 2015
1,398
5,595
I just read the article.

In the first sentence, CSW says that the selfish-mining attack is a false belief due to people's misunderstanding of "bitcoin blocks."

He then presents some well-understood properties of mining and bitcoin blocks as though they were profound new insights. For example, he explains that the block that Miner A is working on is very unlikely to be identical (in terms of the transaction set and its order) to the block that Miner B is working on, as though this is something new that many people never realized.

The article ends without ever attempting to back up the claim from the first sentence that the selfish mining attack is a false belief.
 

go1111111

Active Member
This was the post that made me 99.9% sure that Craig is not Satoshi. He doesn't seem to understand the selfish mining attack enough to properly critique it. His attempt to write technically about Bitcoin looks like some high school student who researched it for a few weeks. The contrast between that blog post and the clarity of thought in Satoshi's writings is huge.

the actual paper by Sirer and Eyal combined block withholding with a sybil attack to arrive at their threshhold hashrate numbers, whereas Todd just pretends those numbers exist in the wild purely as a function of hashrate alone with no gaming of network propagation.
Sirer and Eyal's selfish mining algorithm gives a benefit to miners who use it even if they don't do any sybil attacking. They have a graph showing this in the original paper (the parameter gamma represents the degree of sybil attack).
 
  • Like
Reactions: Peter R

Zangelbert Bingledack

Well-Known Member
Aug 29, 2015
1,485
5,585
I thought CSW's article on the tulip bubble was pretty cogent.

As for selfish mining, reading more of CSW's writing on the Slack channel I've noticed he often assumes a lot of knowledge in the reader, having a classic problem of overcoming inferential distance that is fairly typical in those with pretty deep autistic tendencies. He does seem to have studied a pretty huge range of things so it would make sense. So I'm not ready to write off something he says because of it appearing to merely re-explain the obvious and then failing to connect the dots to his more substantive claims. I have seen that pattern in too many people who turned out to be correct but just bad at estimating what the listener/reader is likely to know or is able to discern from the details given.

I think with the whitepaper, if CSW wrote it, he had help (CSW obviously delegates a huge amount as it is). There are actually several cases I can think of in both the whitepaper and the Satoshi forum posts where he essentially pulls the same trick of saying something without enough clarification. Said before the fact, it become a major issue of controversy (e.g., is mining supposed to determine block validity or just order of transactions in valid blocks?). Said after the fact, people assume he is either saying something obvious as if it were insight or simply making an error (is this not pretty much how claims that miners decide blocksize are treated by Core?).

Of course this *also* pattern-matches (in a roundabout and otherwise kind of improbable but still of course possible-for-a-dedicated-long-con-fraudster way) with someone who doesn't know what they're talking about.

I think people vastly overestimate how disappointing geniuses can be in their less careful moments, especially if they suck at managing their public image. Most of the geniuses we know about are people we only got to know about *because* they were excellent at managing their public image. Satoshi is a special case, famous not because he possesses Hilbertian (or Maxwellian) levels of optics management, but mainly because of his invention and a short whitepaper he probably had help with.
 
Last edited:

Peter R

Well-Known Member
Aug 28, 2015
1,398
5,595
Sirer and Eyal's selfish mining algorithm gives a benefit to miners who use it even if they don't do any sybil attacking. They have a graph showing this in the original paper (the parameter gamma represents the degree of sybil attack).
Right, if the sybil attacking is perfect such that the selfish miner wins all block races, the strategy is profitable for even small miners (blue line). If the selfish miner loses all the block races, the strategy is profitable for miners who control more than 1/3rd of the hash power (red line). If block races are a draw, selfish mining is profitable for miners who control more than 1/4th of the network hash power (green line) [pdf].



I've always wanted to figure out why Peter Todd gets a different result than Eyal and Sirer. As far as I can tell, the model Todd uses is one where the selfish miner loses all block races, and so according to Eyal and Sirer the strategy should not be profitable until the selfish miner has 1/3rd the network hash power. However, Peter Todd calculates that 29.2% is all that is required: