Skip to content

Conversation

@thephez
Copy link
Collaborator

@thephez thephez commented Dec 3, 2025

Add new DIPs to the README, fix lint, and misc other cleanup.

Summary by CodeRabbit

  • Documentation
    • Added two new DIPs to the proposal index and README.
    • Expanded wallet derivation path guidance with explicit hardened/unhardened semantics, account/key-class/index usage, and watch-only handling.
    • Clarified hardware wallet labeling and behavior expectations.
    • Updated address encoding and validation steps, test vectors, and cross-references for clearer implementation guidance.
    • General formatting and structure improvements for readability.

✏️ Tip: You can customize this high-level summary in your review settings.

Add Prior Work sections referencing DIP-0009, BIP-0032, and BIP-0044 in DIP-17 and DIP-0017 in DIP-18. Convert path examples to table format, add key_class forward compatibility note, and fix minor formatting.
@coderabbitai
Copy link

coderabbitai bot commented Dec 3, 2025

Walkthrough

Documentation updates adding DIP-0017 and DIP-0018 entries and refining both proposals: added Prior Work sections, converted list formatting, standardized references (cross-linking to DIP-9, DIP-17, DIP-18), and made derivation-path syntax explicit (hardened account' and key_class' with non-hardened index) plus related reference-implementation and test-vector wording edits.

Changes

Cohort / File(s) Summary
Derivation Path & DIP-0017 doc
dip-0017.md
Added Prior Work; replaced inline DIP references with cross-links (e.g., DIP-9, DIP-18); reworked Derivation Path Definition to use explicit hardened segments account' and key_class' plus non-hardened index; converted many sections to star-bullets; expanded Wallet/Hardware Wallet Behavior, Rationale, Security/Privacy considerations to reflect path syntax and xpub/watch-only guidance; updated Test Vectors, Reference Implementation signature/path construction, and formatting/copyright.
Address Encoding & DIP-0018 doc
dip-0018.md
Added Prior Work; standardized references to DIP-17 and DIP-0017 where applicable; reformatted Address Types/Encoding/Validation to numbered/list bullets and added explicit Base58Check encoding step; expanded Reference Implementation and examples, adjusted test vectors and section headings, and updated copyright/metadata.
Repository index / README
README.md
Inserted new rows for DIP-0017 and DIP-0018 into the DIP summary table and list; adjusted ordering between existing DIPs.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10–15 minutes

  • Inspect dip-0017.md for correctness of the explicit derivation-path notation (hardened vs non-hardened semantics) and the updated Reference Implementation signature/logic.
  • Verify cross-links and references (DIP-9, DIP-17, DIP-18) are consistent and point to intended sections.
  • Confirm README table additions render correctly and numbering/order is consistent.

Pre-merge checks and finishing touches

❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'chore: dip-17/18 suggestions' is vague and generic, using 'suggestions' without specifying what changes are being made or what improvements are suggested. Clarify the title to describe the specific improvements or changes (e.g., 'docs: update DIP-17/18 with hardened path semantics and cross-references' or 'docs: restructure DIP-17/18 derivation paths and formatting').
✅ Passed checks (2 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/dip17-update

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@thephez
Copy link
Collaborator Author

thephez commented Dec 3, 2025

@coderabbitai review

@coderabbitai
Copy link

coderabbitai bot commented Dec 3, 2025

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@thephez thephez marked this pull request as ready for review December 3, 2025 21:31
@thephez
Copy link
Collaborator Author

thephez commented Dec 3, 2025

@coderabbitai review

@coderabbitai
Copy link

coderabbitai bot commented Dec 3, 2025

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@thephez thephez changed the title chore: dip-17/18 suggestions (WIP) chore: dip-17/18 suggestions Dec 3, 2025
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (2)
dip-0017.md (2)

53-53: Simplify redundant phrase.

Line 53 contains the phrase "hold value outside of any identity," which is slightly redundant. Simplifying to "hold value outside any identity" improves conciseness without losing meaning.

-They function as standalone payment keys that hold value outside of any identity. They use a single secp256k1 key pair and are not script-based.
+They function as standalone payment keys that hold value outside any identity. They use a single secp256k1 key pair and are not script-based.

65-71: Consider rewording repetitive normative phrasing for style.

Lines 65–71 contain multiple successive bullets beginning with "* ... MUST", which LanguageTool flags as repetitive sentence structure. While this format is intentional for normative clarity, minor rewording could improve readability without reducing normative weight. For example, combine closely related requirements or vary the phrasing slightly (e.g., "The key_class' MUST be hardened and SHOULD default to 0'..." instead of repeating "* key_class' MUST..." patterns).

This is a low-priority style improvement suitable for future polish and is not critical to clarity or correctness.

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e4da274 and 77c077f.

📒 Files selected for processing (3)
  • README.md (1 hunks)
  • dip-0017.md (5 hunks)
  • dip-0018.md (5 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • dip-0018.md
🧰 Additional context used
🪛 GitHub Actions: .github/workflows/markdownlint.yml
README.md

[error] 5-5: MD059/descriptive-link-text Link text should be descriptive [Context: "[here]"]

🪛 LanguageTool
dip-0017.md

[style] ~53-~53: This phrase is redundant. Consider using “outside”.
Context: ...standalone payment keys that hold value outside of any identity. They use a single secp256...

(OUTSIDE_OF)


[style] ~67-~67: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...t with BIP-44 conventions. * feature' MUST be 17' (Platform payment feature). * ...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~68-~68: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...Platform payment feature). * account' MUST be hardened. 0' is the default accoun...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~89-~89: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...t of 20 is RECOMMENDED for discovery. * Wallets MAY support watch-only by exporting the...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~90-~90: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...account'/key_class'` (test networks). * Wallets MAY present multiple accounts following...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

🔇 Additional comments (9)
README.md (1)

36-37: DIP entries properly integrated into table.

The new DIP-0017 and DIP-0018 entries are correctly sequenced, well-formatted, and follow existing table conventions. Link text is descriptive and metadata (layer, type, status, author) is accurate.

dip-0017.md (8)

35-39: Improved cross-linking and clarity in Abstract and Motivation.

The additions of DIP-9, DIP-13, DIP-15, and DIP-18 cross-links contextualize the Platform payment specification within the broader DIP ecosystem and enhance clarity for readers.


41-47: Prior Work section well-researched.

The new Prior Work section appropriately references foundational specifications (DIP-9, DIP-13, DIP-15, BIP-32, BIP-44), helping readers understand the lineage and design decisions behind the Platform payment derivation paths.


57-80: Derivation path definition is explicit and comprehensive.

The canonical path specification, normative requirements, default account table, and watch-only xpub guidance are clear and provide actionable direction for wallet implementers. The hardened/unhardened structure is well-reasoned and properly explained.


86-93: Wallet and hardware wallet behavior guidance is thorough.

Clear, specific requirements for derivation paths, address separation, address rotation, xpub export, multi-account support, and hardware wallet labeling will aid implementation consistency across wallets and hardware devices.


144-156: Security, Privacy, and Rationale sections are well-reformatted.

The shift to bullet-driven presentation in the Security Considerations, Privacy Considerations, and Rationale sections improves scannability and aligns formatting with the normative requirements elsewhere in the DIP. The explicit xpub boundary clarity (line 145) and practical privacy guidance (lines 153–155) are valuable for implementers.


162-162: Cross-references to DIP-18 and DIP-17 are consistent.

The Test Vectors and DIP-9 Registry Update sections correctly reference DIP-18 for address encoding and DIP-17 for feature index reservation. These cross-links will help readers navigate the related specifications.

Also applies to: 172-172, 176-176


159-168: Test vectors table is clear and complete.

The test vectors provide three diverse paths (default, alternative key_class', and mainnet/testnet variants), supporting implementation validation. The hex representation and HASH160 columns are appropriate for verification and reference implementation guidance.


1-180: Overall structure and comprehensiveness are strong.

This DIP is well-organized, technically sound, and provides clear guidance for wallet and hardware wallet implementers. The integration of cross-links, explicit path syntax, normative requirements, practical examples, and security/privacy considerations makes the specification implementable and reduces ambiguity across the Dash ecosystem.

@thephez thephez merged commit 20b2044 into feat/dip17 Dec 3, 2025
2 checks passed
@thephez thephez deleted the feat/dip17-update branch December 3, 2025 21:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants