Background
rust-dashcore#808 introduced a new Simplified Masternode List (SML) structure for Core 23 (DEPLOYMENT_V24): masternode platform endpoints move into a nested addresses object (MasternodeAddresses) that decouples the platform host/ports from the core service address, and the flat platformP2PPort / platformHTTPPort fields become deprecated (legacy_*). Only the incremental protx listdiff path is affected (full-state addedMNs still reconstructs the legacy shape).
Platform PR #3936 migrated drive-abci to this structure:
- resolved masternode platform ports through the new
platform_p2p_address() / platform_http_address() accessors (nested-first, non-zero legacy fallback) so Core 23 (ProTx v3) entries are no longer dropped from validator sets;
- corrected the incremental-diff validator refresh/removal trigger;
- persisted the split platform/core host via a new versioned
MasternodeStateV1 / Masternode::V1, gated to protocol v12 (a drive_abci.structs.masternode struct-version bump) — a consensus-version-coupled change.
Decision
The temporary SML changes are being reverted from dashcore for now, so we avoid a consensus / protocol-version change at this time. The corresponding platform changes — the Core 23 port resolution and especially the MasternodeStateV1 / v12 struct-version bump — are being reverted from #3936. #3936 stays scoped to the dashcore rev bump for rust-dashcore#813 (DashPay account-index derivation path).
What needs to happen (this issue)
When dashcore re-introduces the new SML structure (permanently), migrate platform to it:
Reference: the reverted implementation
The full implementation is preserved in #3936's history and can be re-applied:
| Concern |
Commit |
| Core 23 port-resolution hardening |
369f563b94 |
Split-host persistence (MasternodeStateV1, v12-gated) |
a05da4d36c |
| Validator-reconcile refactor (function of state) |
073d68c11a |
| IPv6 host bracketing (v0 + v1) |
2979a26613 |
| Design + 4-agent consensus-safety analysis |
docs/CORE23_SPLIT_HOST_PERSISTENCE_SPEC.md |
References
Background
rust-dashcore#808 introduced a new Simplified Masternode List (SML) structure for Core 23 (
DEPLOYMENT_V24): masternode platform endpoints move into a nestedaddressesobject (MasternodeAddresses) that decouples the platform host/ports from the coreserviceaddress, and the flatplatformP2PPort/platformHTTPPortfields become deprecated (legacy_*). Only the incrementalprotx listdiffpath is affected (full-stateaddedMNsstill reconstructs the legacy shape).Platform PR #3936 migrated
drive-abcito this structure:platform_p2p_address()/platform_http_address()accessors (nested-first, non-zero legacy fallback) so Core 23 (ProTx v3) entries are no longer dropped from validator sets;MasternodeStateV1/Masternode::V1, gated to protocol v12 (adrive_abci.structs.masternodestruct-version bump) — a consensus-version-coupled change.Decision
The temporary SML changes are being reverted from dashcore for now, so we avoid a consensus / protocol-version change at this time. The corresponding platform changes — the Core 23 port resolution and especially the
MasternodeStateV1/ v12 struct-version bump — are being reverted from #3936. #3936 stays scoped to the dashcore rev bump for rust-dashcore#813 (DashPay account-index derivation path).What needs to happen (this issue)
When dashcore re-introduces the new SML structure (permanently), migrate platform to it:
rust-dashcoreto the rev that lands the new SML structure.addressesaccessors (drop the flat-port assumption), keeping the Core 22 legacy fallback.platform_node_iddeltas the port resolvers drop).MasternodeStateV1+ a struct-version bump tied to the protocol version that activates the new SML). Note: the persisted masternode/validator-set state is local, non-consensus aux-CF state (not inapp_hash), but the struct-version bump must still ride a protocol version per convention.addresses(round-trip safety — an unbracketed2001:db8::1:443is unparsable and drops the HPMN).Reference: the reverted implementation
The full implementation is preserved in #3936's history and can be re-applied:
369f563b94MasternodeStateV1, v12-gated)a05da4d36c073d68c11a2979a26613docs/CORE23_SPLIT_HOST_PERSISTENCE_SPEC.mdReferences