Guide - wallet section updates

Misc other changes
This commit is contained in:
thephez 2017-11-15 10:59:34 -05:00
parent f19c6f7800
commit 40fbb25c80
4 changed files with 34 additions and 47 deletions

View file

@ -198,12 +198,13 @@ For larger payments, Dash transaction fees are very low as a
percentage of the total transaction value, so it makes more sense to percentage of the total transaction value, so it makes more sense to
protect payments with immediately-broadcast separate transactions. protect payments with immediately-broadcast separate transactions.
<!-- dashj _may_ support the bitcoinj micropayment functions, but has not been tested
**Resource:** The [dashj][] Java library **Resource:** The [dashj][] Java library
provides a complete set of micropayment functions, an example provides a complete set of micropayment functions, an example
implementation, and [a implementation, and [a
tutorial (from bitcoinj)][bitcoinj micropayment tutorial] tutorial (from bitcoinj)][bitcoinj micropayment tutorial]
all under an Apache license. all under an Apache license.
-->
{% endautocrossref %} {% endautocrossref %}
<!-- Obsolesced by PrivateSend <!-- Obsolesced by PrivateSend

View file

@ -9,9 +9,9 @@ http://opensource.org/licenses/MIT.
{% autocrossref %} {% autocrossref %}
A Bitcoin wallet can refer to either a wallet program or a wallet file. A Dash wallet can refer to either a wallet program or a wallet file.
Wallet programs create public keys to receive satoshis and use the Wallet programs create public keys to receive duffs and use the
corresponding private keys to spend those satoshis. Wallet files corresponding private keys to spend those duffs. Wallet files
store private keys and (optionally) other information related to store private keys and (optionally) other information related to
transactions for the wallet program. transactions for the wallet program.
@ -26,11 +26,11 @@ we're talking about wallet programs or wallet files.
{% autocrossref %} {% autocrossref %}
Permitting receiving and spending of satoshis is the only essential Permitting receiving and spending of duffs is the only essential
feature of wallet software---but a particular wallet program doesn't feature of wallet software---but a particular wallet program doesn't
need to do both things. Two wallet programs can work together, one need to do both things. Two wallet programs can work together, one
program distributing public keys in order to receive satoshis and program distributing public keys in order to receive duffs and
another program signing transactions spending those satoshis. another program signing transactions spending those duffs.
Wallet programs also need to interact with the peer-to-peer network to Wallet programs also need to interact with the peer-to-peer network to
get information from the block chain and to broadcast new transactions. get information from the block chain and to broadcast new transactions.
@ -67,7 +67,7 @@ full-service wallets.
The main advantage of full-service wallets is that they are easy to use. The main advantage of full-service wallets is that they are easy to use.
A single program does everything the user needs to receive and spend A single program does everything the user needs to receive and spend
satoshis. duffs.
The main disadvantage of full-service wallets is that they store the The main disadvantage of full-service wallets is that they store the
private keys on a device connected to the Internet. The compromise of private keys on a device connected to the Internet. The compromise of
@ -82,7 +82,6 @@ key or to read the decrypted keys from memory.
{% endautocrossref %} {% endautocrossref %}
#### Signing-Only Wallets #### Signing-Only Wallets
{% include helpers/subhead-links.md %} {% include helpers/subhead-links.md %}
@ -146,7 +145,7 @@ drives. The user's workflow is something like:
2. (Online) Install the wallet software on another device, this one 2. (Online) Install the wallet software on another device, this one
connected to the Internet, and import the parent public key from the connected to the Internet, and import the parent public key from the
removable media. As you would with a full-service wallet, distribute removable media. As you would with a full-service wallet, distribute
public keys to receive payment. When ready to spend satoshis, fill in public keys to receive payment. When ready to spend duffs, fill in
the output details and save the unsigned transaction generated by the the output details and save the unsigned transaction generated by the
wallet to removable media. wallet to removable media.
@ -163,7 +162,7 @@ drives. The user's workflow is something like:
The primary advantage of offline wallets is their possibility for The primary advantage of offline wallets is their possibility for
greatly improved security over full-service wallets. As long as the greatly improved security over full-service wallets. As long as the
offline wallet is not compromised (or flawed) and the user reviews all outgoing offline wallet is not compromised (or flawed) and the user reviews all outgoing
transactions before signing, the user's satoshis are safe even if the transactions before signing, the user's duffs are safe even if the
online wallet is compromised. online wallet is compromised.
The primary disadvantage of offline wallets is hassle. For maximum The primary disadvantage of offline wallets is hassle. For maximum
@ -174,8 +173,6 @@ device and back.
{% endautocrossref %} {% endautocrossref %}
##### Hardware Wallets ##### Hardware Wallets
{% include helpers/subhead-links.md %} {% include helpers/subhead-links.md %}
@ -191,7 +188,7 @@ transfer data manually. The user's workflow is something like:
wallet to a networked device so it can get the parent public key. wallet to a networked device so it can get the parent public key.
2. (Networked) As you would with a full-service wallet, distribute 2. (Networked) As you would with a full-service wallet, distribute
public keys to receive payment. When ready to spend satoshis, fill in public keys to receive payment. When ready to spend duffs, fill in
the transaction details, connect the hardware wallet, and click the transaction details, connect the hardware wallet, and click
Spend. The networked wallet will automatically send the transaction Spend. The networked wallet will automatically send the transaction
details to the hardware wallet. details to the hardware wallet.
@ -220,9 +217,6 @@ their intention to support at least one model of hardware wallet.
{% endautocrossref %} {% endautocrossref %}
#### Distributing-Only Wallets #### Distributing-Only Wallets
{% include helpers/subhead-links.md %} {% include helpers/subhead-links.md %}
@ -256,7 +250,6 @@ Processing][devguide payment processing] section for details.
{% endautocrossref %} {% endautocrossref %}
### Wallet Files ### Wallet Files
{% include helpers/subhead-links.md %} {% include helpers/subhead-links.md %}
@ -273,9 +266,9 @@ stored on pieces of paper.
{% autocrossref %} {% autocrossref %}
Private keys are what are used to unlock satoshis from a particular address. In Bitcoin, a private key in standard format is simply a 256-bit number, between the values: Private keys are what are used to unlock duffs from a particular address. In Dash, a private key in standard format is simply a 256-bit number, between the values:
0x01 and 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4140, representing nearly the entire range of 2<sup>256</sup>-1 values. The range is governed by the secp256k1 ECDSA encryption standard used by Bitcoin. 0x01 and 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4140, representing nearly the entire range of 2<sup>256</sup>-1 values. The range is governed by the secp256k1 ECDSA encryption standard used by Dash.
{% endautocrossref %} {% endautocrossref %}
@ -284,7 +277,7 @@ Private keys are what are used to unlock satoshis from a particular address. In
{% autocrossref %} {% autocrossref %}
In order to make copying of private keys less prone to error, [Wallet Import Format][/en/glossary/wallet-import-format]{:#term-wallet-import-format}{:.term} may be utilized. WIF uses base58Check encoding on an private key, greatly decreasing the chance of copying error, much like standard Bitcoin addresses. In order to make copying of private keys less prone to error, [Wallet Import Format][/en/glossary/wallet-import-format]{:#term-wallet-import-format}{:.term} may be utilized. WIF uses base58Check encoding on an private key, greatly decreasing the chance of copying error, much like standard Dash addresses.
1. Take a private key. 1. Take a private key.
@ -313,13 +306,13 @@ The process is easily reversible, using the Base58 decoding function, and removi
{% autocrossref %} {% autocrossref %}
Mini private key format is a method for encoding a private key in under 30 characters, enabling keys to be embedded in a small physical space, such as physical bitcoin tokens, and more damage-resistant QR codes. Mini private key format is a method for encoding a private key in under 30 characters, enabling keys to be embedded in a small physical space and more damage-resistant QR codes.
1. The first character of mini keys is 'S'. 1. The first character of mini keys is 'S'.
2. In order to determine if a mini private key is well-formatted, a question mark is added to the private key. 2. In order to determine if a mini private key is well-formatted, a question mark is added to the private key.
3. The SHA256 hash is calculated. If the first byte produced is a `00, it is well-formatted. This key restriction acts as a typo-checking mechanism. A user brute forces the process using random numbers until a well-formatted mini private key is produced. 3. The SHA256 hash is calculated. If the first byte produced is a `00`, it is well-formatted. This key restriction acts as a typo-checking mechanism. A user brute forces the process using random numbers until a well-formatted mini private key is produced.
4. In order to derive the full private key, the user simply takes a single SHA256 hash of the original mini private key. This process is one-way: it is intractable to compute the mini private key format from the derived key. 4. In order to derive the full private key, the user simply takes a single SHA256 hash of the original mini private key. This process is one-way: it is intractable to compute the mini private key format from the derived key.
@ -330,15 +323,12 @@ address utility].
{% endautocrossref %} {% endautocrossref %}
#### Public Key Formats #### Public Key Formats
{% include helpers/subhead-links.md %} {% include helpers/subhead-links.md %}
{% autocrossref %} {% autocrossref %}
Bitcoin ECDSA public keys represent a point on a particular Elliptic Dash ECDSA public keys represent a point on a particular Elliptic
Curve (EC) defined in secp256k1. In their traditional uncompressed form, Curve (EC) defined in secp256k1. In their traditional uncompressed form,
public keys contain an identification byte, a 32-byte X coordinate, and public keys contain an identification byte, a 32-byte X coordinate, and
a 32-byte Y coordinate. The extremely simplified illustration below a 32-byte Y coordinate. The extremely simplified illustration below
@ -367,8 +357,8 @@ default in the widely-used OpenSSL library.
Because they're easy to use, and because they reduce almost by half Because they're easy to use, and because they reduce almost by half
the block chain space used to store public keys for every spent output, the block chain space used to store public keys for every spent output,
compressed public keys are the default in Bitcoin Core and are the compressed public keys are the default in Dash Core and are the
recommended default for all Bitcoin software. recommended default for all Dash software.
However, Bitcoin Core prior to 0.6 used uncompressed keys. This creates However, Bitcoin Core prior to 0.6 used uncompressed keys. This creates
a few complications, as the hashed form of an uncompressed key is a few complications, as the hashed form of an uncompressed key is
@ -377,7 +367,7 @@ works with two different P2PKH addresses. This also means that the key
must be submitted in the correct format in the signature script so it must be submitted in the correct format in the signature script so it
matches the hash in the previous output's pubkey script. matches the hash in the previous output's pubkey script.
For this reason, Bitcoin Core uses several different identifier bytes to For this reason, Bitcoin Core (and Dash Core) uses several different identifier bytes to
help programs identify how keys should be used: help programs identify how keys should be used:
* Private keys meant to be used with compressed public keys have 0x01 * Private keys meant to be used with compressed public keys have 0x01
@ -391,7 +381,6 @@ help programs identify how keys should be used:
{% endautocrossref %} {% endautocrossref %}
#### Hierarchical Deterministic Key Creation #### Hierarchical Deterministic Key Creation
{% include helpers/subhead-links.md %} {% include helpers/subhead-links.md %}
@ -429,7 +418,7 @@ existing [(parent) public key][/en/glossary/parent-key]{:#term-parent-public-key
integer (*i*) value. This child public key is the same public key which integer (*i*) value. This child public key is the same public key which
would be created by the `point()` function if you added the *i* value to would be created by the `point()` function if you added the *i* value to
the original (parent) private key and then found the remainder of that the original (parent) private key and then found the remainder of that
sum divided by a global constant used by all Bitcoin software (*p*): sum divided by a global constant used by all Dash software (*p*):
{% endautocrossref %} {% endautocrossref %}
@ -606,7 +595,7 @@ make descriptions easy, many developers use the [prime symbol][] to indicate
hardened keys, so the first normal key (0x00) is 0 and the first hardened hardened keys, so the first normal key (0x00) is 0 and the first hardened
key (0x80000000) is 0´. key (0x80000000) is 0´.
(Bitcoin developers typically use the ASCII apostrophe rather than (Dash developers typically use the ASCII apostrophe rather than
the unicode prime symbol, a convention we will henceforth follow.) the unicode prime symbol, a convention we will henceforth follow.)
This compact description is further combined with slashes prefixed by This compact description is further combined with slashes prefixed by
@ -667,21 +656,19 @@ For implementation details, please see BIP39.
{% endautocrossref %} {% endautocrossref %}
#### Loose-Key Wallets #### Loose-Key Wallets
{% include helpers/subhead-links.md %} {% include helpers/subhead-links.md %}
{% autocrossref %} {% autocrossref %}
Loose-Key wallets, also called "Just a Bunch Of Keys (JBOK)", are a deprecated form of wallet that originated from the Bitcoin Core client wallet. The Bitcoin Core client wallet would create 100 private key/public key pairs automatically via a Pseudo-Random-Number Generator (PRNG) for later use. Loose-Key wallets, also called "Just a Bunch Of Keys (JBOK)", are a form of wallet that originated from the Bitcoin Core client wallet. The Dash Core client wallet creates 1000 private key/public key pairs automatically via a Pseudo-Random-Number Generator (PRNG) for later use.
These unused private keys are stored in a virtual "key pool", with new These unused private keys are stored in a virtual "key pool", with new
keys being generated whenever a previously-generated key was used, keys being generated whenever a previously-generated key was used,
ensuring the pool maintained 100 unused keys. (If the wallet is ensuring the pool maintained 1000 unused keys. (If the wallet is
encrypted, new keys are only generated while the wallet is unlocked.) encrypted, new keys are only generated while the wallet is unlocked.)
This created considerable difficulty<!--noref--> in backing up ones keys, considering backups have to be run manually to save the newly-generated private keys. If a new key pair set is generated, used, and then lost prior to a backup, the stored satoshis are likely lost forever. Many older-style mobile wallets followed a similar format, but only generated a new private key upon user demand. This creates considerable difficulty<!--noref--> in backing up ones keys, considering backups have to be run manually to save the newly-generated private keys. If a new key pair set is generated, used, and then lost prior to a backup, the stored duffs are likely lost forever. Many older-style mobile wallets followed a similar format, but only generated a new private key upon user demand.
This wallet type is being actively phased out and discouraged from being used due to the backup hassle. This wallet type is being actively phased out and discouraged from being used due to the backup hassle.

View file

@ -1318,10 +1318,10 @@ Defined Sporks (per [`src/spork.h`][spork.h])
| 10002 | 3 | `INSTANTSEND_BLOCK_FILTERING` | Turns on and off InstantSend block filtering | 10002 | 3 | `INSTANTSEND_BLOCK_FILTERING` | Turns on and off InstantSend block filtering
| 10004 | 5 | `INSTANTSEND_MAX_VALUE` | Controls the max value for an InstantSend transaction (currently 2000 dash) | 10004 | 5 | `INSTANTSEND_MAX_VALUE` | Controls the max value for an InstantSend transaction (currently 2000 dash)
| 10007 | 8 | `MASTERNODE_PAYMENT_ENFORCEMENT` | Requires masternodes to be paid by miners when blocks are processed | 10007 | 8 | `MASTERNODE_PAYMENT_ENFORCEMENT` | Requires masternodes to be paid by miners when blocks are processed
| 10008 | 9 | `SUPERBLOCKS_ENABLED` | Superblocks are enabled (the 10% comes to fund the dash treasury) | 10008 | 9 | `SUPERBLOCKS_ENABLED` | Superblocks are enabled (10% of the block reward allocated to fund the dash treasury for funding approved proposals)
| 10009 | 10 | `MASTERNODE_PAY_UPDATED_NODES` | Only current protocol version masternode's will be paid (not older nodes) | 10009 | 10 | `MASTERNODE_PAY_UPDATED_NODES` | Only current protocol version masternode's will be paid (not older nodes)
| 10011 | 12 | `RECONSIDER_BLOCKS` | | 10011 | 12 | `RECONSIDER_BLOCKS` | Forces reindex of a specified number of blocks to recover from unintentional network forks
| 10012 | 13 | `OLD_SUPERBLOCK_FLAG` | | 10012 | 13 | `OLD_SUPERBLOCK_FLAG` | Deprecated. No network function since block 614820
| 10013 | 14 | `REQUIRE_SENTINEL_FLAG` | Only masternode's running sentinel will be paid | 10013 | 14 | `REQUIRE_SENTINEL_FLAG` | Only masternode's running sentinel will be paid
To verify `vchSig`, compare the hard-coded spork public key (`strSporkPubKey` To verify `vchSig`, compare the hard-coded spork public key (`strSporkPubKey`

View file

@ -5,7 +5,6 @@
layout: base layout: base
lang: en lang: en
breadcrumbs: breadcrumbs:
- bitcoin
- dev docs - dev docs
- glossary - glossary
- GLOSSARY_ENTRY_TITLE - GLOSSARY_ENTRY_TITLE