mirror of
https://github.com/bitcoinbook/bitcoinbook
synced 2024-12-23 23:18:42 +00:00
Made changes to appdx-sx.asciidoc
This commit is contained in:
parent
ae46bf1ad8
commit
5c02ed6914
@ -1,202 +1,207 @@
|
||||
[[appdx_sx]]
|
||||
[appendix]
|
||||
== Appendix: Available commands with sx tools
|
||||
|
||||
----
|
||||
The sx commands are:
|
||||
|
||||
DEPRECATED
|
||||
ELECTRUM STYLE DETERMINISTIC KEYS AND ADDRESSES
|
||||
genaddr Generate a Bitcoin address deterministically from a wallet
|
||||
seed or master public key.
|
||||
genpriv Generate a private key deterministically from a seed.
|
||||
genpub Generate a public key deterministically from a wallet
|
||||
seed or master public key.
|
||||
mpk Extract a master public key from a deterministic wallet seed.
|
||||
newseed Create a new deterministic wallet seed.
|
||||
|
||||
EXPERIMENTAL
|
||||
APPS
|
||||
wallet Experimental command line wallet.
|
||||
|
||||
OFFLINE BLOCKCHAIN
|
||||
HEADERS
|
||||
showblkhead Show the details of a block header.
|
||||
|
||||
OFFLINE KEYS AND ADDRESSES
|
||||
BASIC
|
||||
addr See Bitcoin address of a public or private key.
|
||||
embed-addr Generate an address used for embedding record of data into the blockchain
|
||||
get-pubkey Get the pubkey of an address if available
|
||||
newkey Create a new private key.
|
||||
pubkey See the public part of a private key.
|
||||
validaddr Validate an address.
|
||||
BRAIN STORAGE
|
||||
brainwallet Make 256 bit bitcoin private key from an arbitrary passphrase.
|
||||
mnemonic Make 12 word mnemonic out of 128 bit electrum or bip32 seed.
|
||||
HD / BIP32
|
||||
hd-priv Create an private HD key from another HD private key.
|
||||
hd-pub Create an HD public key from another HD private or public key.
|
||||
hd-seed Create a random new HD key.
|
||||
hd-to-address Convert an HD public or private key to a Bitcoin address.
|
||||
hd-to-wif Convert an HD private key to a WIF private key.
|
||||
MULTISIG ADDRESSES
|
||||
scripthash Create BIP 16 script hash address from raw script hex.
|
||||
STEALTH
|
||||
stealth-addr See a stealth address from given input.
|
||||
stealth-initiate Initiate a new stealth payment.
|
||||
stealth-newkey Generate new stealth keys and an address.
|
||||
stealth-show-addr Show details for a stealth address.
|
||||
stealth-uncover Uncover a stealth address.
|
||||
stealth-uncover-secret Uncover a stealth secret.
|
||||
|
||||
OFFLINE TRANSACTIONS
|
||||
SCRIPTING
|
||||
mktx Create an unsigned tx.
|
||||
rawscript Create the raw hex representation from a script.
|
||||
set-input Set a transaction input.
|
||||
showscript Show the details of a raw script.
|
||||
showtx Show the details of a transaction.
|
||||
sign-input Sign a transaction input.
|
||||
unwrap Validates checksum and recovers version byte and original data from hexstring.
|
||||
validsig Validate a transaction input's signature.
|
||||
wrap Adds version byte and checksum to hexstring.
|
||||
|
||||
ONLINE (BITCOIN P2P)
|
||||
BLOCKCHAIN UPDATES
|
||||
sendtx-node Send transaction to a single node.
|
||||
sendtx-p2p Send tx to bitcoin network.
|
||||
|
||||
ONLINE (BLOCKCHAIN.INFO)
|
||||
BLOCKCHAIN QUERIES (blockchain.info)
|
||||
bci-fetch-last-height Fetch the last block height using blockchain.info.
|
||||
bci-history Get list of output points, values, and their spends
|
||||
from blockchain.info
|
||||
BLOCKCHAIN UPDATES
|
||||
sendtx-bci Send tx to blockchain.info/pushtx.
|
||||
|
||||
ONLINE (BLOCKEXPLORER.COM)
|
||||
BLOCKCHAIN QUERIES (blockexplorer.com)
|
||||
blke-fetch-transaction Fetches a transaction from blockexplorer.com
|
||||
|
||||
ONLINE (OBELISK)
|
||||
BLOCKCHAIN QUERIES
|
||||
balance Show balance of a Bitcoin address in satoshis.
|
||||
fetch-block-header Fetch raw block header.
|
||||
fetch-last-height Fetch the last block height.
|
||||
fetch-stealth Fetch a stealth information using a network connection to
|
||||
make requests against the obelisk load balancer backend.
|
||||
fetch-transaction Fetch a raw transaction using a network connection to
|
||||
make requests against the obelisk load balancer backend.
|
||||
fetch-transaction-index
|
||||
Fetch block height and index in block of transaction.
|
||||
get-utxo Get enough unspent transaction outputs from a given set of
|
||||
addresses to pay a given number of satoshis
|
||||
history Get list of output points, values, and their spends for an
|
||||
address. grep can filter for just unspent outputs which can
|
||||
be fed into mktx.
|
||||
validtx Validate a transaction.
|
||||
BLOCKCHAIN UPDATES
|
||||
sendtx-obelisk Send tx to obelisk server.
|
||||
BLOCKCHAIN WATCHING
|
||||
monitor Monitor an address.
|
||||
watchtx Watch transactions from the network searching for a certain hash.
|
||||
OBELISK ADMIN
|
||||
initchain Initialize a new blockchain.
|
||||
|
||||
UTILITY
|
||||
EC MATH
|
||||
ec-add-modp Calculate the result of INTEGER + INTEGER.
|
||||
ec-multiply Multiply an integer and a point together.
|
||||
ec-tweak-add Calculate the result of POINT + INTEGER * G.
|
||||
FORMAT (BASE 58)
|
||||
base58-decode Convert from base58 to hex
|
||||
base58-encode Convert from hex to base58
|
||||
FORMAT (BASE58CHECK)
|
||||
base58check-decode Convert from base58check to hex
|
||||
base58check-encode Convert from hex to base58check
|
||||
decode-addr Decode a address from base58check form to internal RIPEMD representation
|
||||
encode-addr Encode an address from internal RIPEMD representation to base58check form
|
||||
FORMAT (WIF)
|
||||
secret-to-wif Convert a secret exponent value to Wallet Import Format
|
||||
wif-to-secret Convert a Wallet Import Format to secret exponent value.
|
||||
HASHES
|
||||
ripemd-hash RIPEMD hash data from STDIN.
|
||||
sha256 Perform SHA256 hash of data.
|
||||
MISC
|
||||
qrcode Generate Bitcoin QR codes offline.
|
||||
SATOSHI MATH
|
||||
btc Convert Satoshis into Bitcoins.
|
||||
satoshi Convert Bitcoins into Satoshis.
|
||||
|
||||
See 'sx help COMMAND' for more information on a specific command.
|
||||
|
||||
----
|
||||
|
||||
Below, we look at some examples of using sx tools to experiment with keys and addresses.
|
||||
|
||||
Generate a new private key with the operating system's random number generator by using the +newkey+ command. We save the standard output into the file +private_key+:
|
||||
|
||||
----
|
||||
$ sx newkey > private_key
|
||||
$ cat private_key
|
||||
5Jgx3UAaXw8AcCQCi1j7uaTaqpz2fqNR9K3r4apxdYn6rTzR1PL
|
||||
----
|
||||
|
||||
Now, generate the public key from that private key using the +pubkey+ command. Pass the +private_key+ file into the standard input and save the standard output of the command into a new file +public_key+:
|
||||
|
||||
----
|
||||
$ sx pubkey < private_key > public_key
|
||||
$ cat public_key
|
||||
02fca46a6006a62dfdd2dbb2149359d0d97a04f430f12a7626dd409256c12be500
|
||||
----
|
||||
|
||||
We can re-format the public_key as an address using the +addr+ command. We pass the +public_key+ into standard input:
|
||||
|
||||
----
|
||||
$ sx addr < public_key
|
||||
17re1S4Q8ZHyCP8Kw7xQad1Lr6XUzWUnkG
|
||||
----
|
||||
|
||||
The keys generated above are so called type-0 non-deterministic keys. That means that each one is generated from a random number generator. The sx tools also support type-2 deterministic keys, where a "master" key is created and then extended to produce a chain or tree of subkeys.
|
||||
|
||||
First, we generate a "seed" that will be used as the basis to derive a chain of keys, compatible with the Electrum wallet and other similar implementations. We use the +newseed+ command to produce a seed value:
|
||||
|
||||
----
|
||||
$ sx newseed > seed
|
||||
$ cat seed
|
||||
eb68ee9f3df6bd4441a9feadec179ff1
|
||||
----
|
||||
|
||||
The seed value can also be exported as a word mnemonic that is human readable and easier to store and type than a hexadecimal string
|
||||
using the +mnemonic+ command:
|
||||
|
||||
----
|
||||
$ sx mnemonic < seed > words
|
||||
$ cat words
|
||||
adore repeat vision worst especially veil inch woman cast recall dwell appreciate
|
||||
----
|
||||
|
||||
The mnemonic words can be used to reproduce the seed using the +mnemonic+ command again:
|
||||
|
||||
----
|
||||
$ sx mnemonic < words
|
||||
eb68ee9f3df6bd4441a9feadec179ff1
|
||||
----
|
||||
|
||||
With the seed, we can now generate a sequence of private and public keys, a key chain. We use the +genpriv+ command to generate a sequence of private keys from a seed and the +addr+ command to generate the corresponding public key.
|
||||
|
||||
[source,bash]
|
||||
----
|
||||
$ sx genpriv 0 < seed
|
||||
5JzY2cPZGViPGgXZ4Syb9Y4eUGjJpVt6sR8noxrpEcqgyj7LK7i
|
||||
$ sx genpriv 0 < seed | sx addr
|
||||
1esVQV2vR9JZPhFeRaeWkAhzmWq7Fi7t7
|
||||
|
||||
$ sx genpriv 1 < seed
|
||||
5JdtL7ckAn3iFBFyVG1Bs3A5TqziFTaB9f8NeyNo8crnE2Sw5Mz
|
||||
$ sx genpriv 1 < seed | sx addr
|
||||
1G1oTeXitk76c2fvQWny4pryTdH1RTqSPW
|
||||
----
|
||||
|
||||
[[appdx_sx]]
|
||||
[appendix]
|
||||
== Available Commands with sx Tools
|
||||
|
||||
----
|
||||
The sx commands are:
|
||||
|
||||
DEPRECATED
|
||||
ELECTRUM STYLE DETERMINISTIC KEYS AND ADDRESSES
|
||||
genaddr Generate a Bitcoin address deterministically from a wallet
|
||||
seed or master public key.
|
||||
genpriv Generate a private key deterministically from a seed.
|
||||
genpub Generate a public key deterministically from a wallet
|
||||
seed or master public key.
|
||||
mpk Extract a master public key from a deterministic wallet seed.
|
||||
newseed Create a new deterministic wallet seed.
|
||||
|
||||
EXPERIMENTAL
|
||||
APPS
|
||||
wallet Experimental command line wallet.
|
||||
|
||||
OFFLINE BLOCKCHAIN
|
||||
HEADERS
|
||||
showblkhead Show the details of a block header.
|
||||
|
||||
OFFLINE KEYS AND ADDRESSES
|
||||
BASIC
|
||||
addr See Bitcoin address of a public or private key.
|
||||
embed-addr Generate an address used for embedding record of data into the
|
||||
blockchain
|
||||
get-pubkey Get the pubkey of an address if available
|
||||
newkey Create a new private key.
|
||||
pubkey See the public part of a private key.
|
||||
validaddr Validate an address.
|
||||
BRAIN STORAGE
|
||||
brainwallet Make 256 bit bitcoin private key from an arbitrary passphrase.
|
||||
mnemonic Make 12 word mnemonic out of 128 bit electrum or bip32 seed.
|
||||
HD / BIP32
|
||||
hd-priv Create an private HD key from another HD private key.
|
||||
hd-pub Create an HD public key from another HD private or public key.
|
||||
hd-seed Create a random new HD key.
|
||||
hd-to-address Convert an HD public or private key to a Bitcoin address.
|
||||
hd-to-wif Convert an HD private key to a WIF private key.
|
||||
MULTISIG ADDRESSES
|
||||
scripthash Create BIP 16 script hash address from raw script hex.
|
||||
STEALTH
|
||||
stealth-addr See a stealth address from given input.
|
||||
stealth-initiate Initiate a new stealth payment.
|
||||
stealth-newkey Generate new stealth keys and an address.
|
||||
stealth-show-addr Show details for a stealth address.
|
||||
stealth-uncover Uncover a stealth address.
|
||||
stealth-uncover-secret Uncover a stealth secret.
|
||||
|
||||
OFFLINE TRANSACTIONS
|
||||
SCRIPTING
|
||||
mktx Create an unsigned tx.
|
||||
rawscript Create the raw hex representation from a script.
|
||||
set-input Set a transaction input.
|
||||
showscript Show the details of a raw script.
|
||||
showtx Show the details of a transaction.
|
||||
sign-input Sign a transaction input.
|
||||
unwrap Validates checksum and recovers version byte and original data
|
||||
from hexstring.
|
||||
validsig Validate a transaction input's signature.
|
||||
wrap Adds version byte and checksum to hexstring.
|
||||
|
||||
ONLINE (BITCOIN P2P)
|
||||
BLOCKCHAIN UPDATES
|
||||
sendtx-node Send transaction to a single node.
|
||||
sendtx-p2p Send tx to bitcoin network.
|
||||
|
||||
ONLINE (BLOCKCHAIN.INFO)
|
||||
BLOCKCHAIN QUERIES (blockchain.info)
|
||||
bci-fetch-last-height Fetch the last block height using blockchain.info.
|
||||
bci-history Get list of output points, values, and their spends
|
||||
from blockchain.info
|
||||
BLOCKCHAIN UPDATES
|
||||
sendtx-bci Send tx to blockchain.info/pushtx.
|
||||
|
||||
ONLINE (BLOCKEXPLORER.COM)
|
||||
BLOCKCHAIN QUERIES (blockexplorer.com)
|
||||
blke-fetch-transaction Fetches a transaction from blockexplorer.com
|
||||
|
||||
ONLINE (OBELISK)
|
||||
BLOCKCHAIN QUERIES
|
||||
balance Show balance of a Bitcoin address in satoshis.
|
||||
fetch-block-header Fetch raw block header.
|
||||
fetch-last-height Fetch the last block height.
|
||||
fetch-stealth Fetch a stealth information using a network connection
|
||||
to make requests against the obelisk load balancer backend.
|
||||
fetch-transaction Fetch a raw transaction using a network connection to
|
||||
make requests against the obelisk load balancer backend.
|
||||
fetch-transaction-index
|
||||
Fetch block height and index in block of transaction.
|
||||
get-utxo Get enough unspent transaction outputs from a given set
|
||||
of addresses to pay a given number of satoshis.
|
||||
history Get list of output points, values, and their spends for
|
||||
an address. grep can filter for just unspent outputs which can
|
||||
be fed into mktx.
|
||||
validtx Validate a transaction.
|
||||
BLOCKCHAIN UPDATES
|
||||
sendtx-obelisk Send tx to obelisk server.
|
||||
BLOCKCHAIN WATCHING
|
||||
monitor Monitor an address.
|
||||
watchtx Watch transactions from the network searching for a certain
|
||||
hash.
|
||||
OBELISK ADMIN
|
||||
initchain Initialize a new blockchain.
|
||||
|
||||
UTILITY
|
||||
EC MATH
|
||||
ec-add-modp Calculate the result of INTEGER + INTEGER.
|
||||
ec-multiply Multiply an integer and a point together.
|
||||
ec-tweak-add Calculate the result of POINT + INTEGER * G.
|
||||
FORMAT (BASE 58)
|
||||
base58-decode Convert from base58 to hex.
|
||||
base58-encode Convert from hex to base58.
|
||||
FORMAT (BASE58CHECK)
|
||||
base58check-decode Convert from base58check to hex.
|
||||
base58check-encode Convert from hex to base58check.
|
||||
decode-addr Decode a address from base58check form to internal RIPEMD
|
||||
representation.
|
||||
encode-addr Encode an address from internal RIPEMD representation to
|
||||
base58check form.
|
||||
FORMAT (WIF)
|
||||
secret-to-wif Convert a secret exponent value to Wallet Import Format
|
||||
wif-to-secret Convert a Wallet Import Format to secret exponent value.
|
||||
HASHES
|
||||
ripemd-hash RIPEMD hash data from STDIN.
|
||||
sha256 Perform SHA256 hash of data.
|
||||
MISC
|
||||
qrcode Generate Bitcoin QR codes offline.
|
||||
SATOSHI MATH
|
||||
btc Convert Satoshis into Bitcoins.
|
||||
satoshi Convert Bitcoins into Satoshis.
|
||||
|
||||
See 'sx help COMMAND' for more information on a specific command.
|
||||
|
||||
----
|
||||
|
||||
Below, we look at some examples of using sx tools to experiment with keys and addresses.
|
||||
|
||||
Generate a new private key with the operating system's random number generator by using the +newkey+ command. We save the standard output into the file +private_key+:
|
||||
|
||||
----
|
||||
$ sx newkey > private_key
|
||||
$ cat private_key
|
||||
5Jgx3UAaXw8AcCQCi1j7uaTaqpz2fqNR9K3r4apxdYn6rTzR1PL
|
||||
----
|
||||
|
||||
Now, generate the public key from that private key using the +pubkey+ command. Pass the +private_key+ file into the standard input and save the standard output of the command into a new file +public_key+:
|
||||
|
||||
----
|
||||
$ sx pubkey < private_key > public_key
|
||||
$ cat public_key
|
||||
02fca46a6006a62dfdd2dbb2149359d0d97a04f430f12a7626dd409256c12be500
|
||||
----
|
||||
|
||||
We can re-format the public_key as an address using the +addr+ command. We pass the +public_key+ into standard input:
|
||||
|
||||
----
|
||||
$ sx addr < public_key
|
||||
17re1S4Q8ZHyCP8Kw7xQad1Lr6XUzWUnkG
|
||||
----
|
||||
|
||||
The keys generated above are so called type-0 non-deterministic keys. That means that each one is generated from a random number generator. The sx tools also support type-2 deterministic keys, where a "master" key is created and then extended to produce a chain or tree of subkeys.
|
||||
|
||||
First, we generate a "seed" that will be used as the basis to derive a chain of keys, compatible with the Electrum wallet and other similar implementations. We use the +newseed+ command to produce a seed value:
|
||||
|
||||
----
|
||||
$ sx newseed > seed
|
||||
$ cat seed
|
||||
eb68ee9f3df6bd4441a9feadec179ff1
|
||||
----
|
||||
|
||||
The seed value can also be exported as a word mnemonic that is human readable and easier to store and type than a hexadecimal string
|
||||
using the +mnemonic+ command:
|
||||
|
||||
----
|
||||
$ sx mnemonic < seed > words
|
||||
$ cat words
|
||||
adore repeat vision worst especially veil inch woman cast recall dwell appreciate
|
||||
----
|
||||
|
||||
The mnemonic words can be used to reproduce the seed using the +mnemonic+ command again:
|
||||
|
||||
----
|
||||
$ sx mnemonic < words
|
||||
eb68ee9f3df6bd4441a9feadec179ff1
|
||||
----
|
||||
|
||||
With the seed, we can now generate a sequence of private and public keys, a key chain. We use the +genpriv+ command to generate a sequence of private keys from a seed and the +addr+ command to generate the corresponding public key.
|
||||
|
||||
[source,bash]
|
||||
----
|
||||
$ sx genpriv 0 < seed
|
||||
5JzY2cPZGViPGgXZ4Syb9Y4eUGjJpVt6sR8noxrpEcqgyj7LK7i
|
||||
$ sx genpriv 0 < seed | sx addr
|
||||
1esVQV2vR9JZPhFeRaeWkAhzmWq7Fi7t7
|
||||
|
||||
$ sx genpriv 1 < seed
|
||||
5JdtL7ckAn3iFBFyVG1Bs3A5TqziFTaB9f8NeyNo8crnE2Sw5Mz
|
||||
$ sx genpriv 1 < seed | sx addr
|
||||
1G1oTeXitk76c2fvQWny4pryTdH1RTqSPW
|
||||
----
|
||||
|
||||
With deterministic keys we can generate and re-generate thousands of keys, all derived from a single seed in a deterministic chain. This technique is used in many wallet applications to generate keys that can be backed up and restored with a simple multi-word mnemonic. This is easier than having to back up the wallet with all its randomly generated keys every time a new key is created.
|
Loading…
Reference in New Issue
Block a user