Gold collapsing. Bitcoin UP.

jessquit

Member
Feb 24, 2018
71
312
It's a really great pity we missed all that in Bitcoin.
Yeah but... The way I think that "should" have happened in Bitcoin is this:

1. Vitalik: hey I have these great ideas

2. Core: cool. Those are really big changes. Can we help you code a fork? That way the original plan can go forward, AND your stuff can happen too.

3. Vitalik: sure, that works

4. Core: welcome to the team

5. Hodlers: rejoice, we now hodl Original Bitcoins and BitEthercoins.

6. Market: wow, we should be holding Bitcoins!

^ that could be BCH in the future. For example: Bitcoin-NG? Why shouldn't there be a BCH->Bitcoin-NG spinoff? Etc.

Let's not fall into the trap that says the existing devs have to do all the work and that we have to create a monolithic product. Think BIG TENT.
 

hodl

Active Member
Feb 13, 2017
151
608
The way I see how ethereum went down is that, yes, they were forced offchain by core. But that didn't hurt Bitcoin at all as evidenced by the many subsequent years where Bitcoin continued to grow like crazy while ethereum stagnated. The blocksize debate and hitting the 1mb ceiling is what side tracked bitcoins advance and nothing more. Ethereum benefitted only because we didn't scale onchain. I consider it somewhat disingenuous that Counterparty tries to characterize bitcoins current failure as being because core didn't allow them or ethereum to have developed onchain.
 

freetrader

Moderator
Staff member
Dec 16, 2015
2,806
6,088
@awemany : that's a good point there about the compatibility of GPL and MIT, and implications on those wanting to make use of GPL'd code.

A little look across Bitcoin protocol implementations and tools:
  • MIT: Bitcoin Core, ABC, BUCash, XT, bitcrust, bitcore, pybitcointools
  • ISC: btcd, bchd
  • AGPLv3: libbitcoin
  • Apache: bitcoinj-cash
  • GPLv3: parity-bitcoin, Flowee The Hub
  • custom non-commercial: gocoin
 
Last edited:

deadalnix

Active Member
Sep 18, 2016
115
196
- making it more CPU efficient and/or parallelize (e.g. ParVar from ptschip and the giganet changes from thezerg et all)
- making it more network efficient (graphene, xthin, ...)
Both would benefit immensely of removing the transaction ordering constraints (in fact, graphene doesn't work at all with the current transaction ordering). This also has implication for sharding as it allows proof of absence. Peter Rizun and Tom Zander are in opposition to this change, so if you want to move this forward, talk to them.
 

Tom Zander

Active Member
Jun 2, 2016
208
455
And to me, that honestly quickly becomes quite hand-wavy.
Sure, I hope you can read the massive amounts of docs/backlogs etc scattered around the net.

I can however, separate the transaction kernel and the mempool and the network layer from each other and thus simplify debugging each thing.
In most codebases we use flags for this. Same effect solving the issue you seem to have.

That's great and I'll certainly have a closer look at some point again. Do you have comprehensive documentation for your changes?
What are you looking for? There are extensive API docs, in-class docs, lots of unit tests and naturally git logs.
Please note that the work has been very little more than creating a multi-threaded framework after which the existing validation code has mostly just been moved. No rewrites have happened, just refactoring it to fit in the multi-threaded framework. Check the 'validation' subdirs.

I should also say that license issues will keep me from basing any work on your code.
Your code, your preference. I don't judge :)

For me the GPLv3 serves two purposes. First is that I want code I write in my spare time to stay free and not some company or clone-coin or government to adopt it and make it closed source. Second is that this license is much more friendly to the authors wrt patenting. As this is a hot topic, maybe you don't want to reject this license so quickly.

If you are in doubt; feel free to dual-license your work. MIT code can be relicensed into almost anything. Including closed source. It can certainly be used in a GPL work.

The other way around doesn't work, and its a fact that the majority of the successful open source projects use GPL, code flowee can now copy. The benefits are real.

Licensing issues can be completely avoided as well for extra components. The idea of having different components run in different processes also isolates them from licensing issues. You can write a closed source, an MIT or whatever license and still communicate with Flowee to get all the info you want.
[doublepost=1519559523,1519558823][/doublepost]
Both would benefit immensely of removing the transaction ordering constraints (in fact, graphene doesn't work at all with the current transaction ordering). This also has implication for sharding as it allows proof of absence. Peter Rizun and Tom Zander are in opposition to this change, so if you want to move this forward, talk to them.
I think that removal or tx ordering is an excellent "devs want to dev" example.

The fun part is that the two people you talk about are representatives of the two implementations that actually HAVE today a lot of multithreading already in their validation process.
So us opposing your rather intrusive change based on actual field experience is something you should definitely value higher than you seem to be doing.

I know from actually having worked on the code for a year now that the actual benefit of removing the transaction ordering will be trivial. Additionally, 99% of that gain can be had without changing the actual protocol but by doing proper engineering.
 

bitsko

Active Member
Aug 31, 2015
730
1,532
Whether or not that is true in this instance many core fans have thrown their hat into the halong mining venture, and as such are inclined to oppose.
 

Tom Zander

Active Member
Jun 2, 2016
208
455
This is why we are a minority fork. Strategically, we suck, you and a few other being an exception.
Must I be the one to point out the obvious?

Individuals can't automagically get a strategy unless you actually have strategic talks (in private) and build trust between the participants of that strategy.

Reading the last couple of pages, the only thing you do in here is blaming others... What is your strategy supposed to achieve?
[doublepost=1519566744][/doublepost]
Whether or not that is true in this instance many core fans have thrown their hat into the halong mining venture, and as such are inclined to oppose.
Evil suggestion; suggest they fork off ;)
 
  • Like
Reactions: Dusty and majamalu

awemany

Well-Known Member
Aug 19, 2015
1,387
5,054
Both would benefit immensely of removing the transaction ordering constraints (in fact, graphene doesn't work at all with the current transaction ordering).
Really? I thought they'd just additionally transmit the ordering. There's a pending PR for BU, so I guess they have a plan to work around that. But I didn't look into the details yet.

This also has implication for sharding as it allows proof of absence. Peter Rizun and Tom Zander are in opposition to this change, so if you want to move this forward, talk to them.
I talked to @Peter R regarding this and AFAIR he was hesitant, like I am, but not 100% opposed forever. I am not sure yet whether we have all the implications on the map yet regarding changing the ordering. For example, lexicographic by-hash ordering would make some operations regarding weakblocks O(n log n) instead of O(n) and generally introduce more complexity.

Might be a worthwhile trade-off for improvements in other areas such as proof absence - but yeah, I must say it is exactly one of these things that we should let stew a bit more, IMO.

I also don't see how it is fundamental to address the improvement suggestions that I made above. I see at least a dozen fruits hanging low enough to fix first without changing this.
==================
Sure, I hope you can read the massive amounts of docs/backlogs etc scattered around the net.
But that is the issue. I am looking for an architectural introduction, overview documentation. Below, you write "has been very little more than creating a multi-threaded framework" but where is the documentation on that?

That the issue. "The code is the documentation" doesn't cut it anymore IMO. It might have been o.k. for Satoshi's initial release, but some doxygen doc hints plus gitlogs plus unit tests is a mess to read.

Sorry for being so blunt. But that's simply not how it should work regarding docs and I think this is also the main issue that keeps you from gaining more followers and devs for flowee, if that is what you intend.

What I imagine is something like the "Protocol" page on the bitcoin wiki, but for your multi-threaded hub thingy in flowee.

And don't take it the wrong way: I am not aiming to shoot down flowee here, nor I am trying to downplay what you did. I simply do not know what is available in flowee - and then there's the license issue.

In most codebases we use flags for this. Same effect solving the issue you seem to have.
So I can set a flag and have a bitcoin-mempoold talking to a bitcoin-networkd? That's news to me ...
Is that possible in flowee? Where can I find that out? What is the protocol spoken between mempoold and networkd? Where is that documented? See above ... :)

For me the GPLv3 serves two purposes. First is that I want code I write in my spare time to stay free and not some company or clone-coin or government to adopt it and make it closed source.
I understand. I made the voting tool for BU GPL-licensed, after all. (And I even got paid by BU for writing parts of it; there's also other reasons why I think the GPL is a good fit). But with BCH, I see some positive effect on my net worth from the coins I hold and thus I am incentivized even when companies 'steal' my code. And MIT is simply default.

Second is that this license is much more friendly to the authors wrt patenting. As this is a hot topic, maybe you don't want to reject this license so quickly.
Fair point, but that is not to say that patent issues can not be addressed outside the scope of the GPL!

The other way around doesn't work, and its a fact that the majority of the successful open source projects use GPL, code flowee can now copy. The benefits are real.
I understand. But the same symmetry keeps me from basing off of flowee. I hope you can see why.

Licensing issues can be completely avoided as well for extra components. The idea of having different components run in different processes also isolates them from licensing issues.
Agreed. But for that we need independent daemons. Also the protocols between them (likely a set of IPC calls with 0mq or so...) need to be ... properly defined and documented ... :D
==================
This is why we are a minority fork. Strategically, we suck, you and a few other being an exception.
I don't think we suck, and also not strategically. Stuff takes time. As Tom said, you won't get a coherent message from all BCHlers. What do you expect here, that people are all shutting their mouths about Core going towards POW forks or cheering them on?

If I look on reddit, I see half of the folks cheering on Core doing a POW fork, and half of the folks saying that it is stupid and will backfire.

It is the public. It is the market place of ideas. You'll hear a lot of noise, a lot of different opinions and, unless it is a very contrived, arcane or otherwise obscure plan, chances are that your "Monte Carlo sampling of opinions" will cover most angles.
 
Last edited:

deadalnix

Active Member
Sep 18, 2016
115
196
Individuals can't automagically get a strategy unless you actually have strategic talks (in private) and build trust between the participants of that strategy.
Tom, you destroyed all possible trust the day you banned me from you channel and complained on social media to be out of the loop. If you are all into this build trust thing, you should know that trust is easier to build than to rebuild. So get to work, because you have a lot to rebuild.

Or maybe you want to add one more smoking crater to your carrier after KOffice and classic ? Everything you touches dies, Tom, one day you got to wonder why (hint, because you are toxic).
[doublepost=1519575913][/doublepost]
Really? I thought they'd just additionally transmit the ordering. There's a pending PR for BU, so I guess they have a plan to work around that. But I didn't look into the details yet.
Transmitting that ordering makes the message almost as big as CB. Considering the work to reconstruct the block is more intensive with graphene, the way it's be submitted in the PR is not very interesting.
 

awemany

Well-Known Member
Aug 19, 2015
1,387
5,054
@deadalnix:
Transmitting that ordering makes the message almost as big as CB. Considering the work to reconstruct the block is more intensive with graphene, the way it's be submitted in the PR is not very interesting.
That disagrees with what they said in their paper:
Even with this extra data, our approach is much more efficient than Compact Blocks. In terms of the example above, if Graphene was to impose an ordering, the additional cost for n = 2000 transactions would be n log_2 ( n ) bits = 2000 × log_2 (2000) bits =2.74 KB. This increases the cost of Graphene to 5.34KB, still almost half of Compact Blocks.
Emphasis mine.
Did that analysis change?
 

deadalnix

Active Member
Sep 18, 2016
115
196
@awemany graphene block are significantly more expensive to reconstruct than compact block and require one extra round trip, so a 50% win in size is absolutely not worth it. What you are trying to achieve is to propagate a block as fast as possible, not to reduce bandwidth use at all costs.

If anything, one should use it's own mempool as heuristic to size the BF + some extra margin as to save a roundtrip in graphene. You'd lose a bit of bandwidth, but save one roundtrip, which is most likely the tradeof you want.
 

awemany

Well-Known Member
Aug 19, 2015
1,387
5,054
@deadalnix: Are you sure reconstruction time (so CPU) comes into play?
Otherwise it would be a 2D trade-off between bandwidth and latency. Your argument might turn out to be right, but did you factor in all the values?

If you assume an inter-miner link with 100ms RTT, that amounts to just 10MB that would need to be saved by graphene over compact blocks to be worthwhile with 1GBps link bandwidth. I think that might well turn out to be a realistic scenario.
 

Richy_T

Well-Known Member
Dec 27, 2015
1,085
2,741
I saw an interesting suggestion on Reddit that the development teams should set up pools and miners could direct hashrate at the teams with ideas that they supported. This seems like it could be an idea worth exploring. What does anyone feel about a BU pool?

Edit: This would also (presumably) mean that a particular client software was actually being used for mining which would make miners more inclined to use it.
 
Last edited:

Tom Zander

Active Member
Jun 2, 2016
208
455
But that is the issue. I am looking for an architectural introduction, overview documentation. Below, you write "has been very little more than creating a multi-threaded framework" but where is the documentation on that?
Fair enough.

Notice that you mixed up threads with what you quoted. What you missed was that I wrote that in Flowee there is actually a lot of API docs, high-level (in-class) docs and naturally git logs. On-the-wire protocols are also documented in headers.

But you are still correct that this belongs in the forefront and I'll put that on the tasklist to make it more available.

----

For everyone except Deadalnix:
Please notice that he stated everyone but him can improve on our strategic messaging and when I pointed out a common strategy starts with trust, the first thing he did was go on the attack again. With an actually impressive list of ad hominems :)
Pointing the finger again at anyone but himself.

Draw your own conclusions.
 

Peter R

Well-Known Member
Aug 28, 2015
1,398
5,595
Great to see all the discussion here lately. And welcome to the forum @jessquit!

To chime in on a couple recent topics:

1. Regarding op codes and consensus changes, I align more with @hodl and @awemany. Better money is Bitcoin's killer app. All Bitcoin needs to thrive is for the bottlenecks to growth to be systematically removed. This means doing the R&D needed to scale the network up to thousands of transactions per second, as well as user-facing stuff such as building simpler wallets and improving private-key security.

That said -- and although I'm not really interested in the latest crypto scheme or blockchain token -- a lot of people love this stuff. Is not one reason that Ethereum attracted so much mind share because of all the random stuff developers could build and experiment with? So I guess I worry that we risk losing mind share and community if good people are forced off to other blockchains to do what they wanted to do on Bitcoin.


2. Regarding removing the causal ordering requirement of transactions within a block, this is not needed for Graphene. Graphene just needs to define a canonical ordering, which can be done today without a hard or soft fork. I have yet to see an example of how by removing the causal ordering requirement that much faster block propagation or block validation will be possible. But going forward with such a proposal seems like huge change to the structure of the blockchain, with possible unknown unknowns that will bite us later.

The blockchain today is causal: you can start with the genesis transaction and move through the blockchain transaction-by-transaction, validating the entire history by moving through the blockchain in only the forward direction. If A sends a coin to B and B sends that coin to C, the transaction from A to B always appears before the transaction from B to C. If causal ordering is removed, then the transaction from B to C could appear before the transaction from A to B. Validating can no longer be done purely in the forward direction.

Admittedly, I cannot think of why this is necessarily bad, so maybe I'll come around to support this proposal, but I do see it as a huge change to the very structure of the blockchain, and so I think we should proceed very cautiously.
 

deadalnix

Active Member
Sep 18, 2016
115
196
For everyone except Deadalnix:
Please notice that he stated everyone but him can improve on our strategic messaging and when I pointed out a common strategy starts with trust, the first thing he did was go on the attack again. With an actually impressive list of ad hominems :)
Pointing the finger again at anyone but himself.

Draw your own conclusions.
Once again lie about what I said in order to push your own agenda. You are toxic Tom.