mirror of
https://github.com/bitcoinbook/bitcoinbook
synced 2024-11-01 21:19:17 +00:00
207 lines
8.7 KiB
Plaintext
207 lines
8.7 KiB
Plaintext
[[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.
|
|
|
|
----
|
|
|
|
Next, 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 reformat 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 are so called type-0 nondeterministic 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 regenerate 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. |