Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

CLI Reference Tools for converting and validating DASH Private Keys and Payment Addresses

Features

  • Validate Base58Check addresses
    • WIF (Wallet Import Format for Private Keys)
    • PayAddr
  • WIF to Addr
  • Addr (Base58Check) to PubKeyHash (PKH)
  • Output as text or JSON
  • API

See Dash HD for Extended Private Key (xprv) and Extended Public Key (xpub) features.

Install

  1. Install node.js
    # Mac, Linux
    curl -sS https://webi.sh/node | sh
    # Windows 10+curl.exe https://webi.ms/node | powershell
  2. Install dashkeys-cli via npm
    npm install --location=global dashkeys-cli

Usage

See dashkeys help for the most up-to-date info:

dashkkeys help

Usage:
dashkeys address <./file.wif> convert WIF to Pay Addr
dashkeys generate create WIF [DEV TOOL]
dashkeys inspect <addr-or-file> decode base58check
dashkeys verify <addr-or-file> validate checksum
dashkeys help show this menu
dashkeys version show version
Global Flags:
--json machine-friendly json to stdout
--unsafe no private key mask, accept as string

Convert WIF to Payment Address

From a file:

# File contents: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
dashkeys address ./XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif
Pay Addr is XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9

From a string (unsafe), as JSON:

dashkeys address --json --unsafe 'XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK'
{
"address": "XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9"
}

Verify an Addr (string) or WIF (file)

Verify a PubKeyHash:

dashkeys verify 'XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9'
Pay Addr string is valid
(Pub Key Hash: ae14c8728915b492d9d77813bd8fddd91ce70948)

Verify a WIF file:

# File contents: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
dashkeys verify ./XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif
Private Key file valid

Inspect a Key

Inspect a PubKeyHash (as json):

dashkeys inspect --json 'XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9'
{
"valid": true,
"version": "4c",
"pubKeyHash": "ae14c8728915b492d9d77813bd8fddd91ce70948",
"check": "ce08541e",
"compressed": true
}

Inspect a WIF (masked):

# File contents: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
dashkeys inspect --json ./XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif
{
"address": "XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9",
"valid": true,
"version": "cc",
"privateKey": "1d************************************************************50",
"compressed": true,
"check": "ec533f80",
"publicKey": "0245ddd5edaa25313bb88ee0abd359f6f58ac38ed597d33a981f1799903633d902",
"pubKeyHash": "ae14c8728915b492d9d77813bd8fddd91ce70948",
"pubKeySha256": "8e5abfc42a6d7529b860ce2b4b8889380db893438dc96430f597ddb455e85fdd"
}

Inspect a WIF (unmasked):

# File contents: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
dashkeys inspect --json --unmask ./XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif
{
"address": "XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9",
"valid": true,
"version": "cc",
"privateKey": "1d2a6b22fcb5a29a5357eaf27b1444c623e5e580b66ac5f1109e2778a0ffb950",
"compressed": true,
"check": "ec533f80",
"publicKey": "0245ddd5edaa25313bb88ee0abd359f6f58ac38ed597d33a981f1799903633d902",
"pubKeyHash": "ae14c8728915b492d9d77813bd8fddd91ce70948",
"pubKeySha256": "8e5abfc42a6d7529b860ce2b4b8889380db893438dc96430f597ddb455e85fdd"
}

note: the _xy* debug fields show incorrect values that are common mistakes - to help those developing their own PubKeyHash or Base58Check key library in other languages.

Generate a Key

Note: This is just for DEVELOPMENT. Generally speaking, you should use generate recoverable keys using Dash Wallet or Dash HD instead.

(there's nothing wrong with these keys - they're fully tested, they're just not HD keys)

dashkeys generate
Saved new private key to './XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif'

The name of the file is the Pay Addr (Base58Check-encoded Public Key Hash) and the contents are the WIF (private key).

The leading X for each is because they are base58check-encoded.

API

See DashKeys.js.

Fixtures

For troubleshooting, debugging, etc, the keys used in this example come from the canonical Dash "Zoomonic":

Passphrase (Mnemonic) : zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo wrong
Secret (Salt Password) : TREZOR
HD Path : m/44'/5'/0'/0/0:
WIF : XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
Addr : XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9

Correct PubKeyHash Values

dashkeys inspect --unmask ./examples/m44_5_0_0-0.wif
 Version: cc
Private Key: 1d2a6b22fcb5a29a5357eaf27b1444c623e5e580b66ac5f1109e2778a0ffb950
Compressed: 01
Pay Addr: XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9
Check: ec533f80
Valid: true

Private Key (Debug Info):

PrivateKey: cc011d2a6b22fcb5a29a5357eaf27b1444c623e5e580b66ac5f1109e2778a0ffb950
--------
Version: cc
Comp Flag: 01 (Compressed)
Priv Key: 1d2a6b22fcb5a29a5357eaf27b1444c623e5e580b66ac5f1109e2778a0ffb950
--------
WIF: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK

Public Key Hash (Debug Info):

PubKey: 0245ddd5edaa25313bb88ee0abd359f6f58ac38ed597d33a981f1799903633d902
--------
Comp Flag: 02 (Quadrant 2)
X: 45ddd5edaa25313bb88ee0abd359f6f58ac38ed597d33a981f1799903633d902
SHA256: 8e5abfc42a6d7529b860ce2b4b8889380db893438dc96430f597ddb455e85fdd
*RMD160: 54408a877b83cb9706373918a430728f72f3d001 (*not used)
PubKeyHash: ae14c8728915b492d9d77813bd8fddd91ce70948
Check: ce08541e
Version: 4c
--------
Pay Address: XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9

LICENSE

Copyright (c) 2023 Dash Incubator
Copyright (c) 2023 AJ ONeal

MIT License

About

Dash Keys CLI - generate, validate, and convert WIFs and PayAddress (Private Keys and Public Key Hashes)

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - dashhive/dashkeys-cli: Dash Keys CLI - generate, validate, and convert WIFs and PayAddress (Private Keys and Public Key Hashes) · GitHub
Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

CLI Reference Tools for converting and validating DASH Private Keys and Payment Addresses

Features

  • Validate Base58Check addresses
    • WIF (Wallet Import Format for Private Keys)
    • PayAddr
  • WIF to Addr
  • Addr (Base58Check) to PubKeyHash (PKH)
  • Output as text or JSON
  • API

See Dash HD for Extended Private Key (xprv) and Extended Public Key (xpub) features.

Install

  1. Install node.js
    # Mac, Linux
    curl -sS https://webi.sh/node | sh
    # Windows 10+curl.exe https://webi.ms/node | powershell
  2. Install dashkeys-cli via npm
    npm install --location=global dashkeys-cli

Usage

See dashkeys help for the most up-to-date info:

dashkkeys help

Usage:
dashkeys address <./file.wif> convert WIF to Pay Addr
dashkeys generate create WIF [DEV TOOL]
dashkeys inspect <addr-or-file> decode base58check
dashkeys verify <addr-or-file> validate checksum
dashkeys help show this menu
dashkeys version show version
Global Flags:
--json machine-friendly json to stdout
--unsafe no private key mask, accept as string

Convert WIF to Payment Address

From a file:

# File contents: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
dashkeys address ./XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif
Pay Addr is XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9

From a string (unsafe), as JSON:

dashkeys address --json --unsafe 'XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK'
{
"address": "XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9"
}

Verify an Addr (string) or WIF (file)

Verify a PubKeyHash:

dashkeys verify 'XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9'
Pay Addr string is valid
(Pub Key Hash: ae14c8728915b492d9d77813bd8fddd91ce70948)

Verify a WIF file:

# File contents: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
dashkeys verify ./XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif
Private Key file valid

Inspect a Key

Inspect a PubKeyHash (as json):

dashkeys inspect --json 'XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9'
{
"valid": true,
"version": "4c",
"pubKeyHash": "ae14c8728915b492d9d77813bd8fddd91ce70948",
"check": "ce08541e",
"compressed": true
}

Inspect a WIF (masked):

# File contents: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
dashkeys inspect --json ./XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif
{
"address": "XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9",
"valid": true,
"version": "cc",
"privateKey": "1d************************************************************50",
"compressed": true,
"check": "ec533f80",
"publicKey": "0245ddd5edaa25313bb88ee0abd359f6f58ac38ed597d33a981f1799903633d902",
"pubKeyHash": "ae14c8728915b492d9d77813bd8fddd91ce70948",
"pubKeySha256": "8e5abfc42a6d7529b860ce2b4b8889380db893438dc96430f597ddb455e85fdd"
}

Inspect a WIF (unmasked):

# File contents: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
dashkeys inspect --json --unmask ./XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif
{
"address": "XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9",
"valid": true,
"version": "cc",
"privateKey": "1d2a6b22fcb5a29a5357eaf27b1444c623e5e580b66ac5f1109e2778a0ffb950",
"compressed": true,
"check": "ec533f80",
"publicKey": "0245ddd5edaa25313bb88ee0abd359f6f58ac38ed597d33a981f1799903633d902",
"pubKeyHash": "ae14c8728915b492d9d77813bd8fddd91ce70948",
"pubKeySha256": "8e5abfc42a6d7529b860ce2b4b8889380db893438dc96430f597ddb455e85fdd"
}

note: the _xy* debug fields show incorrect values that are common mistakes - to help those developing their own PubKeyHash or Base58Check key library in other languages.

Generate a Key

Note: This is just for DEVELOPMENT. Generally speaking, you should use generate recoverable keys using Dash Wallet or Dash HD instead.

(there's nothing wrong with these keys - they're fully tested, they're just not HD keys)

dashkeys generate
Saved new private key to './XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif'

The name of the file is the Pay Addr (Base58Check-encoded Public Key Hash) and the contents are the WIF (private key).

The leading X for each is because they are base58check-encoded.

API

See DashKeys.js.

Fixtures

For troubleshooting, debugging, etc, the keys used in this example come from the canonical Dash "Zoomonic":

Passphrase (Mnemonic) : zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo wrong
Secret (Salt Password) : TREZOR
HD Path : m/44'/5'/0'/0/0:
WIF : XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
Addr : XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9

Correct PubKeyHash Values

dashkeys inspect --unmask ./examples/m44_5_0_0-0.wif
 Version: cc
Private Key: 1d2a6b22fcb5a29a5357eaf27b1444c623e5e580b66ac5f1109e2778a0ffb950
Compressed: 01
Pay Addr: XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9
Check: ec533f80
Valid: true

Private Key (Debug Info):

PrivateKey: cc011d2a6b22fcb5a29a5357eaf27b1444c623e5e580b66ac5f1109e2778a0ffb950
--------
Version: cc
Comp Flag: 01 (Compressed)
Priv Key: 1d2a6b22fcb5a29a5357eaf27b1444c623e5e580b66ac5f1109e2778a0ffb950
--------
WIF: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK

Public Key Hash (Debug Info):

PubKey: 0245ddd5edaa25313bb88ee0abd359f6f58ac38ed597d33a981f1799903633d902
--------
Comp Flag: 02 (Quadrant 2)
X: 45ddd5edaa25313bb88ee0abd359f6f58ac38ed597d33a981f1799903633d902
SHA256: 8e5abfc42a6d7529b860ce2b4b8889380db893438dc96430f597ddb455e85fdd
*RMD160: 54408a877b83cb9706373918a430728f72f3d001 (*not used)
PubKeyHash: ae14c8728915b492d9d77813bd8fddd91ce70948
Check: ce08541e
Version: 4c
--------
Pay Address: XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9

LICENSE

Copyright (c) 2023 Dash Incubator
Copyright (c) 2023 AJ ONeal

MIT License

About

Dash Keys CLI - generate, validate, and convert WIFs and PayAddress (Private Keys and Public Key Hashes)

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - dashhive/dashkeys-cli: Dash Keys CLI - generate, validate, and convert WIFs and PayAddress (Private Keys and Public Key Hashes) · GitHub
Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

CLI Reference Tools for converting and validating DASH Private Keys and Payment Addresses

Features

  • Validate Base58Check addresses
    • WIF (Wallet Import Format for Private Keys)
    • PayAddr
  • WIF to Addr
  • Addr (Base58Check) to PubKeyHash (PKH)
  • Output as text or JSON
  • API

See Dash HD for Extended Private Key (xprv) and Extended Public Key (xpub) features.

Install

  1. Install node.js
    # Mac, Linux
    curl -sS https://webi.sh/node | sh
    # Windows 10+curl.exe https://webi.ms/node | powershell
  2. Install dashkeys-cli via npm
    npm install --location=global dashkeys-cli

Usage

See dashkeys help for the most up-to-date info:

dashkkeys help

Usage:
dashkeys address <./file.wif> convert WIF to Pay Addr
dashkeys generate create WIF [DEV TOOL]
dashkeys inspect <addr-or-file> decode base58check
dashkeys verify <addr-or-file> validate checksum
dashkeys help show this menu
dashkeys version show version
Global Flags:
--json machine-friendly json to stdout
--unsafe no private key mask, accept as string

Convert WIF to Payment Address

From a file:

# File contents: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
dashkeys address ./XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif
Pay Addr is XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9

From a string (unsafe), as JSON:

dashkeys address --json --unsafe 'XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK'
{
"address": "XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9"
}

Verify an Addr (string) or WIF (file)

Verify a PubKeyHash:

dashkeys verify 'XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9'
Pay Addr string is valid
(Pub Key Hash: ae14c8728915b492d9d77813bd8fddd91ce70948)

Verify a WIF file:

# File contents: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
dashkeys verify ./XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif
Private Key file valid

Inspect a Key

Inspect a PubKeyHash (as json):

dashkeys inspect --json 'XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9'
{
"valid": true,
"version": "4c",
"pubKeyHash": "ae14c8728915b492d9d77813bd8fddd91ce70948",
"check": "ce08541e",
"compressed": true
}

Inspect a WIF (masked):

# File contents: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
dashkeys inspect --json ./XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif
{
"address": "XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9",
"valid": true,
"version": "cc",
"privateKey": "1d************************************************************50",
"compressed": true,
"check": "ec533f80",
"publicKey": "0245ddd5edaa25313bb88ee0abd359f6f58ac38ed597d33a981f1799903633d902",
"pubKeyHash": "ae14c8728915b492d9d77813bd8fddd91ce70948",
"pubKeySha256": "8e5abfc42a6d7529b860ce2b4b8889380db893438dc96430f597ddb455e85fdd"
}

Inspect a WIF (unmasked):

# File contents: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
dashkeys inspect --json --unmask ./XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif
{
"address": "XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9",
"valid": true,
"version": "cc",
"privateKey": "1d2a6b22fcb5a29a5357eaf27b1444c623e5e580b66ac5f1109e2778a0ffb950",
"compressed": true,
"check": "ec533f80",
"publicKey": "0245ddd5edaa25313bb88ee0abd359f6f58ac38ed597d33a981f1799903633d902",
"pubKeyHash": "ae14c8728915b492d9d77813bd8fddd91ce70948",
"pubKeySha256": "8e5abfc42a6d7529b860ce2b4b8889380db893438dc96430f597ddb455e85fdd"
}

note: the _xy* debug fields show incorrect values that are common mistakes - to help those developing their own PubKeyHash or Base58Check key library in other languages.

Generate a Key

Note: This is just for DEVELOPMENT. Generally speaking, you should use generate recoverable keys using Dash Wallet or Dash HD instead.

(there's nothing wrong with these keys - they're fully tested, they're just not HD keys)

dashkeys generate
Saved new private key to './XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif'

The name of the file is the Pay Addr (Base58Check-encoded Public Key Hash) and the contents are the WIF (private key).

The leading X for each is because they are base58check-encoded.

API

See DashKeys.js.

Fixtures

For troubleshooting, debugging, etc, the keys used in this example come from the canonical Dash "Zoomonic":

Passphrase (Mnemonic) : zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo wrong
Secret (Salt Password) : TREZOR
HD Path : m/44'/5'/0'/0/0:
WIF : XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
Addr : XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9

Correct PubKeyHash Values

dashkeys inspect --unmask ./examples/m44_5_0_0-0.wif
 Version: cc
Private Key: 1d2a6b22fcb5a29a5357eaf27b1444c623e5e580b66ac5f1109e2778a0ffb950
Compressed: 01
Pay Addr: XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9
Check: ec533f80
Valid: true

Private Key (Debug Info):

PrivateKey: cc011d2a6b22fcb5a29a5357eaf27b1444c623e5e580b66ac5f1109e2778a0ffb950
--------
Version: cc
Comp Flag: 01 (Compressed)
Priv Key: 1d2a6b22fcb5a29a5357eaf27b1444c623e5e580b66ac5f1109e2778a0ffb950
--------
WIF: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK

Public Key Hash (Debug Info):

PubKey: 0245ddd5edaa25313bb88ee0abd359f6f58ac38ed597d33a981f1799903633d902
--------
Comp Flag: 02 (Quadrant 2)
X: 45ddd5edaa25313bb88ee0abd359f6f58ac38ed597d33a981f1799903633d902
SHA256: 8e5abfc42a6d7529b860ce2b4b8889380db893438dc96430f597ddb455e85fdd
*RMD160: 54408a877b83cb9706373918a430728f72f3d001 (*not used)
PubKeyHash: ae14c8728915b492d9d77813bd8fddd91ce70948
Check: ce08541e
Version: 4c
--------
Pay Address: XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9

LICENSE

Copyright (c) 2023 Dash Incubator
Copyright (c) 2023 AJ ONeal

MIT License

About

Dash Keys CLI - generate, validate, and convert WIFs and PayAddress (Private Keys and Public Key Hashes)

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - dashhive/dashkeys-cli: Dash Keys CLI - generate, validate, and convert WIFs and PayAddress (Private Keys and Public Key Hashes) · GitHub
Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

CLI Reference Tools for converting and validating DASH Private Keys and Payment Addresses

Features

  • Validate Base58Check addresses
    • WIF (Wallet Import Format for Private Keys)
    • PayAddr
  • WIF to Addr
  • Addr (Base58Check) to PubKeyHash (PKH)
  • Output as text or JSON
  • API

See Dash HD for Extended Private Key (xprv) and Extended Public Key (xpub) features.

Install

  1. Install node.js
    # Mac, Linux
    curl -sS https://webi.sh/node | sh
    # Windows 10+curl.exe https://webi.ms/node | powershell
  2. Install dashkeys-cli via npm
    npm install --location=global dashkeys-cli

Usage

See dashkeys help for the most up-to-date info:

dashkkeys help

Usage:
dashkeys address <./file.wif> convert WIF to Pay Addr
dashkeys generate create WIF [DEV TOOL]
dashkeys inspect <addr-or-file> decode base58check
dashkeys verify <addr-or-file> validate checksum
dashkeys help show this menu
dashkeys version show version
Global Flags:
--json machine-friendly json to stdout
--unsafe no private key mask, accept as string

Convert WIF to Payment Address

From a file:

# File contents: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
dashkeys address ./XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif
Pay Addr is XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9

From a string (unsafe), as JSON:

dashkeys address --json --unsafe 'XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK'
{
"address": "XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9"
}

Verify an Addr (string) or WIF (file)

Verify a PubKeyHash:

dashkeys verify 'XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9'
Pay Addr string is valid
(Pub Key Hash: ae14c8728915b492d9d77813bd8fddd91ce70948)

Verify a WIF file:

# File contents: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
dashkeys verify ./XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif
Private Key file valid

Inspect a Key

Inspect a PubKeyHash (as json):

dashkeys inspect --json 'XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9'
{
"valid": true,
"version": "4c",
"pubKeyHash": "ae14c8728915b492d9d77813bd8fddd91ce70948",
"check": "ce08541e",
"compressed": true
}

Inspect a WIF (masked):

# File contents: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
dashkeys inspect --json ./XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif
{
"address": "XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9",
"valid": true,
"version": "cc",
"privateKey": "1d************************************************************50",
"compressed": true,
"check": "ec533f80",
"publicKey": "0245ddd5edaa25313bb88ee0abd359f6f58ac38ed597d33a981f1799903633d902",
"pubKeyHash": "ae14c8728915b492d9d77813bd8fddd91ce70948",
"pubKeySha256": "8e5abfc42a6d7529b860ce2b4b8889380db893438dc96430f597ddb455e85fdd"
}

Inspect a WIF (unmasked):

# File contents: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
dashkeys inspect --json --unmask ./XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif
{
"address": "XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9",
"valid": true,
"version": "cc",
"privateKey": "1d2a6b22fcb5a29a5357eaf27b1444c623e5e580b66ac5f1109e2778a0ffb950",
"compressed": true,
"check": "ec533f80",
"publicKey": "0245ddd5edaa25313bb88ee0abd359f6f58ac38ed597d33a981f1799903633d902",
"pubKeyHash": "ae14c8728915b492d9d77813bd8fddd91ce70948",
"pubKeySha256": "8e5abfc42a6d7529b860ce2b4b8889380db893438dc96430f597ddb455e85fdd"
}

note: the _xy* debug fields show incorrect values that are common mistakes - to help those developing their own PubKeyHash or Base58Check key library in other languages.

Generate a Key

Note: This is just for DEVELOPMENT. Generally speaking, you should use generate recoverable keys using Dash Wallet or Dash HD instead.

(there's nothing wrong with these keys - they're fully tested, they're just not HD keys)

dashkeys generate
Saved new private key to './XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif'

The name of the file is the Pay Addr (Base58Check-encoded Public Key Hash) and the contents are the WIF (private key).

The leading X for each is because they are base58check-encoded.

API

See DashKeys.js.

Fixtures

For troubleshooting, debugging, etc, the keys used in this example come from the canonical Dash "Zoomonic":

Passphrase (Mnemonic) : zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo wrong
Secret (Salt Password) : TREZOR
HD Path : m/44'/5'/0'/0/0:
WIF : XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
Addr : XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9

Correct PubKeyHash Values

dashkeys inspect --unmask ./examples/m44_5_0_0-0.wif
 Version: cc
Private Key: 1d2a6b22fcb5a29a5357eaf27b1444c623e5e580b66ac5f1109e2778a0ffb950
Compressed: 01
Pay Addr: XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9
Check: ec533f80
Valid: true

Private Key (Debug Info):

PrivateKey: cc011d2a6b22fcb5a29a5357eaf27b1444c623e5e580b66ac5f1109e2778a0ffb950
--------
Version: cc
Comp Flag: 01 (Compressed)
Priv Key: 1d2a6b22fcb5a29a5357eaf27b1444c623e5e580b66ac5f1109e2778a0ffb950
--------
WIF: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK

Public Key Hash (Debug Info):

PubKey: 0245ddd5edaa25313bb88ee0abd359f6f58ac38ed597d33a981f1799903633d902
--------
Comp Flag: 02 (Quadrant 2)
X: 45ddd5edaa25313bb88ee0abd359f6f58ac38ed597d33a981f1799903633d902
SHA256: 8e5abfc42a6d7529b860ce2b4b8889380db893438dc96430f597ddb455e85fdd
*RMD160: 54408a877b83cb9706373918a430728f72f3d001 (*not used)
PubKeyHash: ae14c8728915b492d9d77813bd8fddd91ce70948
Check: ce08541e
Version: 4c
--------
Pay Address: XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9

LICENSE

Copyright (c) 2023 Dash Incubator
Copyright (c) 2023 AJ ONeal

MIT License

About

Dash Keys CLI - generate, validate, and convert WIFs and PayAddress (Private Keys and Public Key Hashes)

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - dashhive/dashkeys-cli: Dash Keys CLI - generate, validate, and convert WIFs and PayAddress (Private Keys and Public Key Hashes) · GitHub
Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

CLI Reference Tools for converting and validating DASH Private Keys and Payment Addresses

Features

  • Validate Base58Check addresses
    • WIF (Wallet Import Format for Private Keys)
    • PayAddr
  • WIF to Addr
  • Addr (Base58Check) to PubKeyHash (PKH)
  • Output as text or JSON
  • API

See Dash HD for Extended Private Key (xprv) and Extended Public Key (xpub) features.

Install

  1. Install node.js
    # Mac, Linux
    curl -sS https://webi.sh/node | sh
    # Windows 10+curl.exe https://webi.ms/node | powershell
  2. Install dashkeys-cli via npm
    npm install --location=global dashkeys-cli

Usage

See dashkeys help for the most up-to-date info:

dashkkeys help

Usage:
dashkeys address <./file.wif> convert WIF to Pay Addr
dashkeys generate create WIF [DEV TOOL]
dashkeys inspect <addr-or-file> decode base58check
dashkeys verify <addr-or-file> validate checksum
dashkeys help show this menu
dashkeys version show version
Global Flags:
--json machine-friendly json to stdout
--unsafe no private key mask, accept as string

Convert WIF to Payment Address

From a file:

# File contents: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
dashkeys address ./XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif
Pay Addr is XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9

From a string (unsafe), as JSON:

dashkeys address --json --unsafe 'XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK'
{
"address": "XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9"
}

Verify an Addr (string) or WIF (file)

Verify a PubKeyHash:

dashkeys verify 'XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9'
Pay Addr string is valid
(Pub Key Hash: ae14c8728915b492d9d77813bd8fddd91ce70948)

Verify a WIF file:

# File contents: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
dashkeys verify ./XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif
Private Key file valid

Inspect a Key

Inspect a PubKeyHash (as json):

dashkeys inspect --json 'XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9'
{
"valid": true,
"version": "4c",
"pubKeyHash": "ae14c8728915b492d9d77813bd8fddd91ce70948",
"check": "ce08541e",
"compressed": true
}

Inspect a WIF (masked):

# File contents: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
dashkeys inspect --json ./XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif
{
"address": "XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9",
"valid": true,
"version": "cc",
"privateKey": "1d************************************************************50",
"compressed": true,
"check": "ec533f80",
"publicKey": "0245ddd5edaa25313bb88ee0abd359f6f58ac38ed597d33a981f1799903633d902",
"pubKeyHash": "ae14c8728915b492d9d77813bd8fddd91ce70948",
"pubKeySha256": "8e5abfc42a6d7529b860ce2b4b8889380db893438dc96430f597ddb455e85fdd"
}

Inspect a WIF (unmasked):

# File contents: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
dashkeys inspect --json --unmask ./XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif
{
"address": "XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9",
"valid": true,
"version": "cc",
"privateKey": "1d2a6b22fcb5a29a5357eaf27b1444c623e5e580b66ac5f1109e2778a0ffb950",
"compressed": true,
"check": "ec533f80",
"publicKey": "0245ddd5edaa25313bb88ee0abd359f6f58ac38ed597d33a981f1799903633d902",
"pubKeyHash": "ae14c8728915b492d9d77813bd8fddd91ce70948",
"pubKeySha256": "8e5abfc42a6d7529b860ce2b4b8889380db893438dc96430f597ddb455e85fdd"
}

note: the _xy* debug fields show incorrect values that are common mistakes - to help those developing their own PubKeyHash or Base58Check key library in other languages.

Generate a Key

Note: This is just for DEVELOPMENT. Generally speaking, you should use generate recoverable keys using Dash Wallet or Dash HD instead.

(there's nothing wrong with these keys - they're fully tested, they're just not HD keys)

dashkeys generate
Saved new private key to './XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif'

The name of the file is the Pay Addr (Base58Check-encoded Public Key Hash) and the contents are the WIF (private key).

The leading X for each is because they are base58check-encoded.

API

See DashKeys.js.

Fixtures

For troubleshooting, debugging, etc, the keys used in this example come from the canonical Dash "Zoomonic":

Passphrase (Mnemonic) : zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo wrong
Secret (Salt Password) : TREZOR
HD Path : m/44'/5'/0'/0/0:
WIF : XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
Addr : XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9

Correct PubKeyHash Values

dashkeys inspect --unmask ./examples/m44_5_0_0-0.wif
 Version: cc
Private Key: 1d2a6b22fcb5a29a5357eaf27b1444c623e5e580b66ac5f1109e2778a0ffb950
Compressed: 01
Pay Addr: XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9
Check: ec533f80
Valid: true

Private Key (Debug Info):

PrivateKey: cc011d2a6b22fcb5a29a5357eaf27b1444c623e5e580b66ac5f1109e2778a0ffb950
--------
Version: cc
Comp Flag: 01 (Compressed)
Priv Key: 1d2a6b22fcb5a29a5357eaf27b1444c623e5e580b66ac5f1109e2778a0ffb950
--------
WIF: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK

Public Key Hash (Debug Info):

PubKey: 0245ddd5edaa25313bb88ee0abd359f6f58ac38ed597d33a981f1799903633d902
--------
Comp Flag: 02 (Quadrant 2)
X: 45ddd5edaa25313bb88ee0abd359f6f58ac38ed597d33a981f1799903633d902
SHA256: 8e5abfc42a6d7529b860ce2b4b8889380db893438dc96430f597ddb455e85fdd
*RMD160: 54408a877b83cb9706373918a430728f72f3d001 (*not used)
PubKeyHash: ae14c8728915b492d9d77813bd8fddd91ce70948
Check: ce08541e
Version: 4c
--------
Pay Address: XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9

LICENSE

Copyright (c) 2023 Dash Incubator
Copyright (c) 2023 AJ ONeal

MIT License

About

Dash Keys CLI - generate, validate, and convert WIFs and PayAddress (Private Keys and Public Key Hashes)

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - dashhive/dashkeys-cli: Dash Keys CLI - generate, validate, and convert WIFs and PayAddress (Private Keys and Public Key Hashes) · GitHub
Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

CLI Reference Tools for converting and validating DASH Private Keys and Payment Addresses

Features

  • Validate Base58Check addresses
    • WIF (Wallet Import Format for Private Keys)
    • PayAddr
  • WIF to Addr
  • Addr (Base58Check) to PubKeyHash (PKH)
  • Output as text or JSON
  • API

See Dash HD for Extended Private Key (xprv) and Extended Public Key (xpub) features.

Install

  1. Install node.js
    # Mac, Linux
    curl -sS https://webi.sh/node | sh
    # Windows 10+curl.exe https://webi.ms/node | powershell
  2. Install dashkeys-cli via npm
    npm install --location=global dashkeys-cli

Usage

See dashkeys help for the most up-to-date info:

dashkkeys help

Usage:
dashkeys address <./file.wif> convert WIF to Pay Addr
dashkeys generate create WIF [DEV TOOL]
dashkeys inspect <addr-or-file> decode base58check
dashkeys verify <addr-or-file> validate checksum
dashkeys help show this menu
dashkeys version show version
Global Flags:
--json machine-friendly json to stdout
--unsafe no private key mask, accept as string

Convert WIF to Payment Address

From a file:

# File contents: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
dashkeys address ./XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif
Pay Addr is XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9

From a string (unsafe), as JSON:

dashkeys address --json --unsafe 'XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK'
{
"address": "XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9"
}

Verify an Addr (string) or WIF (file)

Verify a PubKeyHash:

dashkeys verify 'XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9'
Pay Addr string is valid
(Pub Key Hash: ae14c8728915b492d9d77813bd8fddd91ce70948)

Verify a WIF file:

# File contents: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
dashkeys verify ./XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif
Private Key file valid

Inspect a Key

Inspect a PubKeyHash (as json):

dashkeys inspect --json 'XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9'
{
"valid": true,
"version": "4c",
"pubKeyHash": "ae14c8728915b492d9d77813bd8fddd91ce70948",
"check": "ce08541e",
"compressed": true
}

Inspect a WIF (masked):

# File contents: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
dashkeys inspect --json ./XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif
{
"address": "XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9",
"valid": true,
"version": "cc",
"privateKey": "1d************************************************************50",
"compressed": true,
"check": "ec533f80",
"publicKey": "0245ddd5edaa25313bb88ee0abd359f6f58ac38ed597d33a981f1799903633d902",
"pubKeyHash": "ae14c8728915b492d9d77813bd8fddd91ce70948",
"pubKeySha256": "8e5abfc42a6d7529b860ce2b4b8889380db893438dc96430f597ddb455e85fdd"
}

Inspect a WIF (unmasked):

# File contents: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
dashkeys inspect --json --unmask ./XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif
{
"address": "XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9",
"valid": true,
"version": "cc",
"privateKey": "1d2a6b22fcb5a29a5357eaf27b1444c623e5e580b66ac5f1109e2778a0ffb950",
"compressed": true,
"check": "ec533f80",
"publicKey": "0245ddd5edaa25313bb88ee0abd359f6f58ac38ed597d33a981f1799903633d902",
"pubKeyHash": "ae14c8728915b492d9d77813bd8fddd91ce70948",
"pubKeySha256": "8e5abfc42a6d7529b860ce2b4b8889380db893438dc96430f597ddb455e85fdd"
}

note: the _xy* debug fields show incorrect values that are common mistakes - to help those developing their own PubKeyHash or Base58Check key library in other languages.

Generate a Key

Note: This is just for DEVELOPMENT. Generally speaking, you should use generate recoverable keys using Dash Wallet or Dash HD instead.

(there's nothing wrong with these keys - they're fully tested, they're just not HD keys)

dashkeys generate
Saved new private key to './XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif'

The name of the file is the Pay Addr (Base58Check-encoded Public Key Hash) and the contents are the WIF (private key).

The leading X for each is because they are base58check-encoded.

API

See DashKeys.js.

Fixtures

For troubleshooting, debugging, etc, the keys used in this example come from the canonical Dash "Zoomonic":

Passphrase (Mnemonic) : zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo wrong
Secret (Salt Password) : TREZOR
HD Path : m/44'/5'/0'/0/0:
WIF : XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
Addr : XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9

Correct PubKeyHash Values

dashkeys inspect --unmask ./examples/m44_5_0_0-0.wif
 Version: cc
Private Key: 1d2a6b22fcb5a29a5357eaf27b1444c623e5e580b66ac5f1109e2778a0ffb950
Compressed: 01
Pay Addr: XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9
Check: ec533f80
Valid: true

Private Key (Debug Info):

PrivateKey: cc011d2a6b22fcb5a29a5357eaf27b1444c623e5e580b66ac5f1109e2778a0ffb950
--------
Version: cc
Comp Flag: 01 (Compressed)
Priv Key: 1d2a6b22fcb5a29a5357eaf27b1444c623e5e580b66ac5f1109e2778a0ffb950
--------
WIF: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK

Public Key Hash (Debug Info):

PubKey: 0245ddd5edaa25313bb88ee0abd359f6f58ac38ed597d33a981f1799903633d902
--------
Comp Flag: 02 (Quadrant 2)
X: 45ddd5edaa25313bb88ee0abd359f6f58ac38ed597d33a981f1799903633d902
SHA256: 8e5abfc42a6d7529b860ce2b4b8889380db893438dc96430f597ddb455e85fdd
*RMD160: 54408a877b83cb9706373918a430728f72f3d001 (*not used)
PubKeyHash: ae14c8728915b492d9d77813bd8fddd91ce70948
Check: ce08541e
Version: 4c
--------
Pay Address: XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9

LICENSE

Copyright (c) 2023 Dash Incubator
Copyright (c) 2023 AJ ONeal

MIT License

About

Dash Keys CLI - generate, validate, and convert WIFs and PayAddress (Private Keys and Public Key Hashes)

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); GitHub - dashhive/dashkeys-cli: Dash Keys CLI - generate, validate, and convert WIFs and PayAddress (Private Keys and Public Key Hashes) · GitHub
Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

CLI Reference Tools for converting and validating DASH Private Keys and Payment Addresses

Features

  • Validate Base58Check addresses
    • WIF (Wallet Import Format for Private Keys)
    • PayAddr
  • WIF to Addr
  • Addr (Base58Check) to PubKeyHash (PKH)
  • Output as text or JSON
  • API

See Dash HD for Extended Private Key (xprv) and Extended Public Key (xpub) features.

Install

  1. Install node.js
    # Mac, Linux
    curl -sS https://webi.sh/node | sh
    # Windows 10+curl.exe https://webi.ms/node | powershell
  2. Install dashkeys-cli via npm
    npm install --location=global dashkeys-cli

Usage

See dashkeys help for the most up-to-date info:

dashkkeys help

Usage:
dashkeys address <./file.wif> convert WIF to Pay Addr
dashkeys generate create WIF [DEV TOOL]
dashkeys inspect <addr-or-file> decode base58check
dashkeys verify <addr-or-file> validate checksum
dashkeys help show this menu
dashkeys version show version
Global Flags:
--json machine-friendly json to stdout
--unsafe no private key mask, accept as string

Convert WIF to Payment Address

From a file:

# File contents: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
dashkeys address ./XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif
Pay Addr is XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9

From a string (unsafe), as JSON:

dashkeys address --json --unsafe 'XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK'
{
"address": "XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9"
}

Verify an Addr (string) or WIF (file)

Verify a PubKeyHash:

dashkeys verify 'XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9'
Pay Addr string is valid
(Pub Key Hash: ae14c8728915b492d9d77813bd8fddd91ce70948)

Verify a WIF file:

# File contents: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
dashkeys verify ./XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif
Private Key file valid

Inspect a Key

Inspect a PubKeyHash (as json):

dashkeys inspect --json 'XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9'
{
"valid": true,
"version": "4c",
"pubKeyHash": "ae14c8728915b492d9d77813bd8fddd91ce70948",
"check": "ce08541e",
"compressed": true
}

Inspect a WIF (masked):

# File contents: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
dashkeys inspect --json ./XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif
{
"address": "XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9",
"valid": true,
"version": "cc",
"privateKey": "1d************************************************************50",
"compressed": true,
"check": "ec533f80",
"publicKey": "0245ddd5edaa25313bb88ee0abd359f6f58ac38ed597d33a981f1799903633d902",
"pubKeyHash": "ae14c8728915b492d9d77813bd8fddd91ce70948",
"pubKeySha256": "8e5abfc42a6d7529b860ce2b4b8889380db893438dc96430f597ddb455e85fdd"
}

Inspect a WIF (unmasked):

# File contents: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
dashkeys inspect --json --unmask ./XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif
{
"address": "XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9",
"valid": true,
"version": "cc",
"privateKey": "1d2a6b22fcb5a29a5357eaf27b1444c623e5e580b66ac5f1109e2778a0ffb950",
"compressed": true,
"check": "ec533f80",
"publicKey": "0245ddd5edaa25313bb88ee0abd359f6f58ac38ed597d33a981f1799903633d902",
"pubKeyHash": "ae14c8728915b492d9d77813bd8fddd91ce70948",
"pubKeySha256": "8e5abfc42a6d7529b860ce2b4b8889380db893438dc96430f597ddb455e85fdd"
}

note: the _xy* debug fields show incorrect values that are common mistakes - to help those developing their own PubKeyHash or Base58Check key library in other languages.

Generate a Key

Note: This is just for DEVELOPMENT. Generally speaking, you should use generate recoverable keys using Dash Wallet or Dash HD instead.

(there's nothing wrong with these keys - they're fully tested, they're just not HD keys)

dashkeys generate
Saved new private key to './XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9.wif'

The name of the file is the Pay Addr (Base58Check-encoded Public Key Hash) and the contents are the WIF (private key).

The leading X for each is because they are base58check-encoded.

API

See DashKeys.js.

Fixtures

For troubleshooting, debugging, etc, the keys used in this example come from the canonical Dash "Zoomonic":

Passphrase (Mnemonic) : zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo wrong
Secret (Salt Password) : TREZOR
HD Path : m/44'/5'/0'/0/0:
WIF : XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK
Addr : XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9

Correct PubKeyHash Values

dashkeys inspect --unmask ./examples/m44_5_0_0-0.wif
 Version: cc
Private Key: 1d2a6b22fcb5a29a5357eaf27b1444c623e5e580b66ac5f1109e2778a0ffb950
Compressed: 01
Pay Addr: XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9
Check: ec533f80
Valid: true

Private Key (Debug Info):

PrivateKey: cc011d2a6b22fcb5a29a5357eaf27b1444c623e5e580b66ac5f1109e2778a0ffb950
--------
Version: cc
Comp Flag: 01 (Compressed)
Priv Key: 1d2a6b22fcb5a29a5357eaf27b1444c623e5e580b66ac5f1109e2778a0ffb950
--------
WIF: XCGKuZcKDjNhx8DaNKK4xwMMNzspaoToT6CafJAbBfQTi57buhLK

Public Key Hash (Debug Info):

PubKey: 0245ddd5edaa25313bb88ee0abd359f6f58ac38ed597d33a981f1799903633d902
--------
Comp Flag: 02 (Quadrant 2)
X: 45ddd5edaa25313bb88ee0abd359f6f58ac38ed597d33a981f1799903633d902
SHA256: 8e5abfc42a6d7529b860ce2b4b8889380db893438dc96430f597ddb455e85fdd
*RMD160: 54408a877b83cb9706373918a430728f72f3d001 (*not used)
PubKeyHash: ae14c8728915b492d9d77813bd8fddd91ce70948
Check: ce08541e
Version: 4c
--------
Pay Address: XrZJJfEKRNobcuwWKTD3bDu8ou7XSWPbc9

LICENSE

Copyright (c) 2023 Dash Incubator
Copyright (c) 2023 AJ ONeal

MIT License

About

Dash Keys CLI - generate, validate, and convert WIFs and PayAddress (Private Keys and Public Key Hashes)

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages