vazaki3
Well-known member
"High Collateral Masternodes". The DCG misleadingly names them "High Performance Masternodes"What is HCMN ?
Read here. https://www.dash.org/forum/index.ph...orm-run-only-on-high-performance-nodes.53374/
"High Collateral Masternodes". The DCG misleadingly names them "High Performance Masternodes"What is HCMN ?
And what is the usage of BLS signatures? Do we need them for the 4k HCMNs or not?It was not 4K MNs that caused the chain halt, stop spreading misinfo, it was the BLS signatures.
Yes exactly.the problem is not the bug. the problem is the network fragility that a single bug could create a halt like this. The hard forking path no longer seems acceptable.
@GrandMasterDash
If you want a change, do it.
Do it yourself, organize a new group or propose an alternative solution and put it for voting.
Constant complaining without realistic solutions is just graphomania.
Telling the others what they should do, without doing anything yourself is just showing off.
No it doesn't, which is exactly why dash got itself in the mess it did. Only got themselves to blame. Chose arrogance and pride over function.Why are you expecting DCG to do whatever you tell them and want from them?
Since when ANYTHING in this world works this way @GrandMasterDash?
Yes exactly.
On several occasions I have publicly asked for alternatives to the server side code.
The problem is, dash is not a protocol, it is a product. I understand many people here like to think it's a protocol but in reality it is not and never has been. DCG is supposedly producing reference code for others but there are no incentives for others to build alternatives based on the protocol. The end result is that everyone involved stupidly treats DCG code as an official and trusted product, which is exactly why dash is a security. The chain halt as produced by DCG demonstrates the network's dependence for both the problem and the fix.
And what is the usage of BLS signatures? Do we need them for the 4k HCMNs or not?
You should first point to the code that caused the blockchain halt, and then we will discover whether it is related or not to the HCMN.
Since it being asked of me sure part of the code at issue is here
if (dmn->pdmnState->pubKeyOperator.Get().IsValid() && !DeleteUniqueProperty(*dmn, dmn->pdmnState->pubKeyOperator)) {
mnUniquePropertyMap = mnUniquePropertyMapSaved;
throw(std::runtime_error(strprintf("%s: Can't delete a masternode %s with a pubKeyOperator=%s", __func__,
proTxHash.ToString(), dmn->pdmnState->pubKeyOperator.Get().ToString())));
}
Line 602 in deterministicmns.cpp
CDeterministicMNList CDeterministicMNList::ApplyDiff(const CBlockIndex* pindex, const CDeterministicMNListDiff& diff) const
{
CDeterministicMNList result = *this;
result.blockHash = pindex->GetBlockHash();
result.nHeight = pindex->nHeight;
for (const auto& id : diff.removedMns) {
auto dmn = result.GetMNByInternalId(id);
if (!dmn) {
throw(std::runtime_error(strprintf("%s: can't find a removed masternode, id=%d", __func__, id)));
}
result.RemoveMN(dmn->proTxHash);
}
for (const auto& dmn : diff.addedMNs) {
result.AddMN(dmn);
}
for (const auto& p : diff.updatedMNs) {
auto dmn = result.GetMNByInternalId(p.first);
result.UpdateMN(*dmn, p.second);
}
return result;
}
Line 405 in deterministicmns.cpp
the collateralOutpoint of the ProRegTx might refer to an external collateral or to an output which is part of the ProRegTx itself.
In the case of type 1:
- collateralOutpoint hash is null but an output with 4000 DASH is not present at position n of the ProRegTx outputs
- collateralOutpoint hash is not null but an output with 4000 DASH can't be found in the UTXO specified by the hash and n
While operating under very stressful circumstances, there was some internal miscommunication regarding the new activation date for the v19 hard fork. Some previous communication mentioned June 14 as the v19 activation date; however, the patch provided in Dash Core v19.1.0 changed the start time of the v19 activation process to June 14. This results in the earliest activation being on July 6 after completing the typical lock-in period. The v19.1.0 release notes communicated a start date on June 14th with the earliest activation being 2 weeks later.
See : https://github.com/dashpay/dash/pull/5392In further news, we are pleased to announce that we are beginning to test a resolution for the uncovered issue as of tomorrow. This fix, set to be included in v19.2.0 prior to activation, will necessitate a mandatory upgrade.
Thoughts ?Once we have established confidence in the robustness and effectiveness of this solution, we plan to consult the community about the potential of expediting the activation date.
54.33% of total blocks payed correctly (57.2% and latest protocolblock version)
And the Dash Network was down due to a bug in code meant to directly support Dash Platform.
I really wish you would try to stick to the facts, the BLS serialisation issue not part of the platform release and was not required for Platform to go live, it is a nice to have, but not strictly required. The HCMN had nothing to do with this issue.
That would be true if the issue is only to do with BLS serialisation. However if we look at the Github pull request itself (https://github.com/dashpay/dash/pull/5392/commits), then there are a number of issues getting addressed :
fix: Rework bls_legacy_scheme switch points
chore: drop RepopulateUniquePropertyMap
feat: store protx version in CDeterministicMNState and use it to ser/deser pubKeyOperator
feat: show pubKeyOperator according to nVersion to match CDeterministicMNState serialization
test: check pubkeyoperator in masternodelist rpc (internal test i assume)
Sam already stated that part of the problem lays with the deterministicmns.cpp file (line 602 and line 405), a file which in my view was adjusted to either support Evo nodes and their higher 4K collateral directly or to support Dash Platform in general, introducing more code complexity.
Since Dash Core v19 is mostly about supporting Evo nodes, and the issues occurred with Dash Core v19 activation, i do think part of the issues are caused by increased code complexity, in order to support Evo nodes.
Unless all the issues that are getting addressed by above mentioned Github pull request, are all related to BLS serialisation and BLS serialisation only. A postponement of the update of BLS basic to BLS enhanced (?) to future Dash Core v21 for example, would then have avoided the Dash chain halt during v19 activation. The bug(s) would then have materialized during Dash Core v21 activation.
It depends on how you define compelling.@vazaki3 is there a compelling Dash alternative?
That would be true if the issue is only to do with BLS serialisation. However if we look at the Github pull request itself (https://github.com/dashpay/dash/pull/5392/commits), then there are a number of issues getting addressed :
fix: Rework bls_legacy_scheme switch points
chore: drop RepopulateUniquePropertyMap
feat: store protx version in CDeterministicMNState and use it to ser/deser pubKeyOperator
feat: show pubKeyOperator according to nVersion to match CDeterministicMNState serialization
test: check pubkeyoperator in masternodelist rpc (internal test i assume)
Sam already stated that part of the problem lays with the deterministicmns.cpp file (line 602 and line 405), a file which in my view was adjusted to either support Evo nodes and their higher 4K collateral directly or to support Dash Platform in general, introducing more code complexity.
Since Dash Core v19 is mostly about supporting Evo nodes, and the issues occurred with Dash Core v19 activation, i do think part of the issues are caused by increased code complexity, in order to support Evo nodes.
Unless all the issues that are getting addressed by above mentioned Github pull request, are all related to BLS serialisation and BLS serialisation only. A postponement of the update of BLS basic to BLS legacy to a future Dash Core v21 for example, would then have avoided the Dash chain halt during v19 activation. The bug(s) would then have materialized during Dash Core v21 activation.
You're halfway there then making assumptions about the rest, why would it be better if it occurred during v21 activation? This entire PR and all those commits are to do with BLS serialization, the bug was an edge case in the serialization, in the masternodelist, which involves protxs and pubKeyOperators. Those 5 commits you've posted are actually helping xk's point and aren't "a number of issues getting addressed" - it's the same issue.
Bad BLS conversion on "ghost" nodes caused dashd to trip over them, using legacy keys instead of the new basic style on nodes that went away ~1000 blocks or so before the fork and are still in the mnlist.
What you have here is protxs, pubKeyOperator, nVersion, and dropping the repopulate (because it repopulated the mnlist and then failed) which is all related to the same issue, just in multiple places in the codebase. Would you rather we patched it in two lines of code or actually fixed the thing so this won't happen again?