BUIP173: Join and support BMP for BCH development

BUIP173: Join and support BMP for BCH development

Submitted By: Javier Gonzalez
Sponsored By: Griffith
Date: 2021/08/29

Summary
Bitcoin Unlimited should support the BMP protocol for communication and decision making for BCH development.

Proposal
It is proposed that Bitcoin Unlimited take the following steps to join other implementations in signaling support for and participating in BMP. Knuth already supports BMP and it is important that miners see support of BMP by BU and BCHN to make BMP a success.

  1. Launch an independent BMP node under the bitcoin unlimited domain (bmp.bitcoinunlimited.info).
  2. Make an initial participation in BMP chat with some HP by mining.
  3. Maintain a public list of addresses for protocol devs who want to participate and the organisation as a whole.

For convenience here is a link to relevant BMP resources:
https://bmp.virtualpol.com
https://github.com/JavierGonzalez/BMP
https://nakamoto.observer/papers

Note: participation in BMP might require some rented hashpower because it is required that an address BU controls is inside a coinbase output in the last 4032 blocks of BCH.

Motivation
I think it’s worthwhile -and we still have time- to retry BU’s participation in the decision-making of Bitcoin Cash blockchain development.
How much decision-making power should BU have in BCH?
I don’t know, and it is not my role to determine. But I think it should be greater than 0%.
And with the BMP we can achieve that without causing another split (division of people, talent, market cap and adoption)It is only necessary to say YES to the following question: Can we accept a decision made by a majority of hashpower?

Budget
$10.000

1 Like

I would recommend the following edits:

  1. You need to propose an actual budget.
  2. Change “Make an initial participation in BMP chat with some HP by mining on P2Pool.” to “Make an initial participation in BMP chat with some HP by renting hashpower, such as on P2Pool.” Don’t lock the executor into P2Pool unless that is your intention.

What does “Maintain a public list of addresses for protocol devs who want to participate and the organisation as a whole.” mean?

Motivation section:

“Making a blockchain from scratch (NextChain) is facing a very hard challenge. Too many competing blockchains.
I think it’s worthwhile -and we still have time- to retry BU’s participation in the decision-making of Bitcoin Cash blockchain development.”

I do not see this comment about NextChain as relevant to this BUIP, and might be detrimental, in the sense that people may disagree with your opinion on this and so vote no. However since BU still supports BCH there is no either/or here.

The issue that blocked my participation last time should be addressed. Specifically, this is that the BMP software requires the use of a hardware wallet that we don’t have. I never found the time to solve this (we just need software to produce a properly formatted tx to be fed into “signmessage” or equivalent, I think) due to other work, maybe you have solved this? Regardless I think this BUIP would benefit from laying out this step.

My personal take on the BMP is that I like the idea but that it is currently nascent – nobody is ACTUALLY using it to determine decision making power in BCH – in preference to the CHIP process. Has this changed? If not, I would rephrase this BUIP more in lines of “encourage BMP use as a decision maker…”, rather than assuming what you are trying to achieve.

On that note, Is there any hope that the mining community would actually get involved?

And more importantly can BU positively impact participation?

Or are we wasting our time here on a wishful feature? This is why I didn’t spend effort to construct the special voting tx software that was needed to not use a hardware wallet. I don’t see BU as having any influence to encourage miner participation.

At this point does the larger (non-mining) community even WANT the miners to take over decision making authority?

Finally, I would like to see this fit into the CHIP process. I think that this might fit together well, because the CHIP process doesn’t have a clear yes/no resolution, other than hash power voting. Perhaps the BMP technique fits well there.

1 Like

Hi Andrew, thanks for your feedback.

About the budget: You can put an address on coinbase with P2Pool on BCH from as little as 30 dollars of rented HP. But to do it properly and with several addresses for different participants I would estimate a budget of $1000.

About P2Pool (point 2) I agree.

About the public list of participant addresses: I try to have miners participate directly or delegate % of their hashpower to devs or other actors for them to participate. To achieve the latter, miners must know addresses of participants who wish to participate. I think it is logical and simple for the different dev teams to maintain public lists of these addresses. It is a zero cost action, which will show support and availability of talent for miners to delegate their power to them.

I agree that the comment about NextChain is irrelevant here. We will change the text.

On how to make the TXs to participate… I am waiting for feedback on how I can facilitate this. I don’t know exactly what is needed. The transaction is like memo.cash with a specific address. I didn’t imagine this would be a problem. Obviously I am open to collaborate, but I need the minimum feedback to determine what is needed to facilitate making these TX. I think this is part of the content of the initiative.

About using Trezor, it gives the most comfortable experience. More than enough to prove the concept. I chose Trezor because there can be no risk of massive PK theft by JS injection or similar.

About BMP being incipient: nobody uses it because nobody uses it. The BMP tries to solve a problem that is 90% political and 10% technological. Other miners have privately shown interest to me. But it’s true, in the end no one takes the first step because no one does. But Knuth and 2 other people have already done it.

On that note, Is there any hope that the mining community would actually get involved?

Yes. Zhuoer recommended the use of the BMP in IFPv2. Other miners will readily support it when others do. Recently 90% of the BCH hashpower signaled. I have seen miners try to organize on several occasions (unsuccessfully, but they want to).

And more importantly can BU positively impact participation?

It’s always the same.

Giant miner: “I also want others to decide, not only me”
Big miners: “but why doesn’t someone else start first?”
Medium miners: “but why don’t the big miners use it?”
Small miners: “I’m irrelevant, I can’t impact participation”
Devs: “I’m irrelevant, I can’t impact participation”

Obviously BU can impact participation!

It would be enough if at some point miners discover that there are BU devs saying “hello” with hashpower in a decentralized chat room, and lists of participants who want to participate with delegated HP.

Or are we wasting our time here on a wishful feature? This is why I didn’t spend effort to construct the special voting tx software that was needed to not use a hardware wallet. I don’t see BU as having any influence to encourage miner participation.

Thank you for giving me that feedback now.

At this point does the larger (non-mining) community even WANT the miners to take over decision making authority?

I understand you are talking about BCHN. That’s an interesting question. I’m opening a CHIP just like this one there.

But the whitepaper was not created for a group of central devs to be in power. I’m sure you all agree on this (Well, we’ll have to ask).

In any case, it is in BU’s interest to try something that has such low cost and so little risk.

Finally, I would like to see this fit into the CHIP process. I think that this might fit together well, because the CHIP process doesn’t have a clear yes/no resolution, other than hash power voting. Perhaps the BMP technique fits well there.

The BMP obviously fits into that part of the CHIP.
And I have sent a CHIP to open the discussion.

But there is no way that the BMP should be limited to just being an element within the regulation of a single dev team, when the potential of the BMP is to address the root cause of all the divisions that have occurred due to centralized decision making and allow for a larger, more stable organization by extending the original consensus mechanism.

On how to make the TXs to participate… I am waiting for feedback on how I can facilitate this. I don’t know exactly what is needed.

A tool or website that would generate the tx hex (unsigned) would be one solution, since you can use bitcoind’s signrawtransaction (and/or fundrawtransaction) to do the signing. Another solution would be to add that functionality to bitcoind as a RPC call. If the website seems to be the best option, we could integrate this functionality with our explorer. If bitcoind, we could merge a pull request. I think that it would be useful to specify this work in this BUIP, so we can get it done as part of it.

Or are we wasting our time here on a wishful feature? This is why I didn’t spend effort to construct the special voting tx software that was needed to not use a hardware wallet. I don’t see BU as having any influence to encourage miner participation.

Thank you for giving me that feedback now.

I think I’ve already mentioned to you privately that BU has no substantive contact with miners or mining pools. They are not running our software AFAIK, etc. Our software seems mostly to be run by individuals and as a business back end.

About BMP being incipient: nobody uses it because nobody uses it.

I understand that. And if I had 10% hash I’d be enthused about using and pushing others to use this. But what will 0.00001% (or whatever) do compared to BU as an org just announcing that they support feature X?

At this point does the larger (non-mining) community even WANT the miners to take over decision making authority?

I understand you are talking about BCHN. That’s an interesting question. I’m opening a CHIP just like this one there.

I’m not talking about BCHN specifically although they are a major player. I’m talking about every non-miner participating in, and feeling empowered by, the CHIP process. These people will have no voice in BMP. This is why I was interested in some kind of CHIP BMP fusion.

On a procedural note, if you can’t edit the OP with changes, repost the full document with your modifications and one of the mods will replace the OP with it.

If you type in the BMP chat input you will see that it provides OP_RETURN in real-time. I can better it to build the transaction to facilitate the signature. I have never done this, but I can do it with your technical support.

One technical question I have is that a BMP action needs the address input and output to be the same (works exactly the same as memo.cash). This implies selecting the right UTXO. It is at this point where I have elementary technical doubts, that you can surely solve me quickly.

My last message in the BMP has 2 TH/s associated, which represents 0.000075% of the power over BCH.

Obviously this power is insignificant. I knew from the beginning that this would not impress anyone. But it is a verifiable fact and it is a statement of intent.

And the difference is that if you do it officially BU and with a little bit of diffusion, we will get the attention of the miners. From a political point of view, it could be decisive.

I can’t please everyone. Not even Jesus Christ could do it.

I simply try to apply Bitcoin’s native dispute resolution mechanism, using hashpower voting.

In any case, miners can delegate hashpower to hundreds of people if they want. The BMP protocol is scalable. My idea is to create a forum, kanban controlled with HP, positions, responsibilities, ideas, etc. All configured on-chain, decentralized.

Literally Jihan asked me to involve the devs in the process.

Please edit it yourself. I liked your feedback. Make this initiative yours. Thanks.

One technical question I have is that a BMP action needs the address input and output to be the same (works exactly the same as memo.cash).

Hmm, this is awkward for bitcoind and most other wallets because they are generally specifically coded to NOT do this. So some custom code or override flag may be needed. On the other hand, a “raw” transaction could be made that implements this. I’ve asked @sickpig whether our explorer has an API to retrieve UTXOs by address.

Please edit it yourself. I liked your feedback. Make this initiative yours. Thanks.

There are so many reasons why this should not happen, the top 2 being:

  1. You might not like my edits and forever blame me for screwing your BUIP (which is why the Articles disallow this)
  2. You need to show initiative, energy, and willingness to work with BU should this pass. You may not understand how BU’s system works, so I’ll just summarize: If a BUIP passes, it gives permission for a feature to be incorporated into BU. But someone must still actually make it happen (what that means will differ for each BUIP). That someone could be anyone, but the BUIP author is obviously the best choice to see his/her vision delivered. This is part of the checks-and-balances that make our system function.

I feel like you may have said $1000 to propose the smallest amount for mining. If we are going to do this I’d feel that $10000, not spent for simultaneous hash power (with the mining proceeds to be re-spent for more hash power until it runs out), would be more commensurate to the effort someone puts into managing it. But of course, IDK how other voters would feel, and I’d be interested in details about how much hash certain monetary levels would actually buy us for how much time (with 1 year being a good target).

Thanks Andrew.

About how to generate TX raw: I am waiting for your technical advice, because obviously I am very interested in facilitating the participation. The info on how a transaction looks like and examples is here (How-To, point 2).

I will be here actively and energetically, of course. We will make the changes quickly.

10k is a more decent amount, true.

For renting HP I have used miningrigrentals.com It allows renting HP from amounts as small as 11 TH/s. And for times from 3 hours, up to 1500 hours. With prices right now around: 0.00067359 BCH per TH per day. Accepts payments with BCH.

There will be many other providers to explore.

It occurs to me that all you need is blockchain utxo information (given an address) to produce a raw unsigned tx. We are looking into the possibility of making a simple web API in explorer.bitcoinunlimited.info to act as your data source. How capable is your code of producing and submitting raw transactions?

I agree.
I have the addresses with HP.

That sounds very good for ease of participation!
For my part, I will quickly implement the process of connecting to that API and pre-generate the TX.

I would like the BMP not to depend on central points (like Trezor or explorer API), even to build the TX, but we will improve that in the future. The priority now is to facilitate participation.

A BMP TX is exactly the same as a memo.cash TX. I suggest to check how they have solved this.

Fully capable.

I have never signed a TX raw, but with the right UTXO and your guidance I will learn quickly.

Updated the OP with the requested changes

2 Likes

@griffith
I will add this BUIP to the voting list unless you advise otherwise. Although your membership expired a few days ago, you sponsored this while still a member. Also, the BUIP has significant feedback by @AndrewStone, whereupon you and @JavierGonzalez have revised it based upon his feedback.
I feel the BUIP is supportive of BMP’s constructive effort to progress BCH, which is in need of feature upgrades as it is being leapfrogged by other coins lately, such as Solana. If this BUIP is successful, I hope you will commit to assisting with the development/setup work needed in BU.

1 Like

Thank you.

I will actively collaborate in completing the goals of this initiative. This goals are easily achievable. Low cost and low risk. But at the same time, with the potential to involve every team of devs and miners together. In a neutral space.

Then, if Satoshi’s original consensus mechanism is accepted (hashpower voting) we could unlock for the first time decentralized decision making for Bitcoin Cash.

1 Like

Can someone give me an ElI7 (explain like I’m seven) overview for the objectives of the Bitcoin Mining Parliament?

Bitcoin is a consensus mechanism enforced by hashpower.

The definition of this consensus (aka The Nakamoto Consensus) has never been decentralized. For now, it is based on informal off-chain meetings in centralized spaces like slack, telegram, reddit, hotels, etc. With participants whose power emanates from nowhere or is not verifiable. In the context of the whitepaper they are like “financial institutions”. And they can’t avoid mediating disputes. Blockstream Core, nChain, ABC… causing cyclical splits. Making impossible the global adoption as cash.

Satoshi’s original solution is hashpower voting.

BMP is like a front-end for hashpower. A decentralized tool that allows to talk and vote with hashpower. And much more in the future.

The BMP is a decentralized on-chain space that no one can control.

It also allows hashpower delegation of arbitrary percentages to any address, in a very simple and clear way.

In this way, we can access the next level as an organization involving devs and miners together for coordination and decision making in the Bitcoin Cash blockchain.

1 Like

Objective 1 is accomplished. https://BMP.bitcoinunlimited.info is running stable for months and always showing independently the same global view as my node.

Objective 2 is for someone from BU (not me) to use the 10k USD allocated in mining in P2Pool and make a TX using the BMP protocol to say something. This is not achieved, but I can’t do more.

Objective 3 is simply to publish a list of address of people who wish to participate in the BMP so that miners understand that devs can be involved in the Nakamoto Consensus by voting with hashpower.

Unfortunately, I have not found the interest that I expected from miners and devs to make Bitcoin Cash decision-making truly decentralized for first time.

This is the end of my mission.

Many thanks to @griffith and other BU members for trying.

I put a chat message into the BMP chat a couple of days ago achieving this goal. The manual process of forming a TX (without a trezor) is a bit annoying but not that complicated. I wrote these instructions for myself so that it will be easier next time. I will share them here as they might also be useful for others.

createrawtransaction "[{\"txid\": \"<tx hash containing mined coinbase>\", \"<vout mined by mining address>\":##}]" "{\"<mining address in coinbase>\":<coinbase output amount>, \"data\":\"<len> 9D <command> <epoch time> <channel> <message hex>\"}"

How to get data hex:

- BMP code is 9D (length 1)
- chat command is 02 (length 1)
- epoch time has a length of 5
- channel is 00 (length of 1)
- message in hex (use ascii to hex converter)
- change back to mining address in vout0, chat data in vout1

example: for the message "BU has joined the BMP" using the time 1646589806 

9D 02 1646589806 00 425520686173206A6F696E65642074686520424D50

then len is 1 (9d, BMP signal) + 1 (02, chat action) + 5 (1646589806, epoch time)
+ 1 (00, channel) + 21 (425520686173206A6F696E65642074686520424D50, BU has joined the BMP)
= 29. convert length to hex 29 -> 1D and add to front

result:
1D9D02164658980600425520686173206A6F696E65642074686520424D50

once then length is found the output amount needs to be adjusted, 
add length + 1 (op return script code) + 8 (CTxOut nValue size) and 
remove that amount from the vout. 

example: 
using a coinbase that mined 0.01617838, select the intput in Qt coincontrol, make a 1 input
1 output tx to self. get that fee and subtract. In this case fee was 226 resulting in a vout value of 0.01617612. 
This output amount does not include a fee for the chata data output as that
was not part of the tx. use the formula above to get what will be the fee for the data output.
In this example it is 38 sats. Subtract that from the vout to get a new value of 0.01617574
which is enough fee for the entire transaction.

full command:

createrawtransaction "[{\"txid\": \"27993f8e9386abf537b65838394ae63f98556230fc43a2a9ee6a0e9e8fb27be6\", \"vout\":7}]" "{\"bitcoincash:qphxs8fk39twj7chxlteq0thgkl5cuclqsa7zmuv2s\":0.01617574, \"data\":\"1D9D02164658980600425520686173206A6F696E65642074686520424D50\"}"

Get the output hex, pass that hex into signrawtransaction. 
Then get that output hex and pass that into sendrawtransaction and the 
tx will be broadcast to the network
2 Likes

How nice @griffith thanks!

Your message has been accepted as valid on both BMP nodes:
bmp.bitcoinunlimited.info
bmp.virtualpol.com

This means that you have talked with hashpower. Exactly 43 TH/s. Without a central authority. Universally verifiable.

This means that step 2 is now successfully completed.

I’m going to mining a little to be able to answer.

Greetings!

1 Like

I have added your example in the README (commit).

And I have added the preview of the “createrawtransaction” command in real time with javascript to make it easier. Example:

image

Thanks.

1 Like