- once set up, requires no monitor or keyboard input; just insert USB stick,
wait for signing to complete and remove
- LED status signaling on Raspberry Pi and Orange Pi
TX hexdata switch attack protection:
- Protect against an exotic but theoretically possible attack where a
malicious, compromised or malfunctioning coin daemon could alter hex
transaction data. An integrity check is performed during both signing and
sending. Needless to say, a user should always view a transaction and
double-check its outputs before broadcasting.
New features:
- Bob and Alice regtest mode for testing MMGen in a mock two-user environment.
Documented in the wiki, tests added to test suite
- Compressed P2PKH address support (address type 'C')
- BCH (Bitcoin Cash) support
- Segwit (address type 'S') support deployed after Segwit activation on mainnet
- and, of course, numerous bugfixes and small improvements
- basic data types in obj.py rewritten
- new test suite 'test/objtest.py' for testing basic data types
- new compressed address type with the 'C' identifier
- Bob and Alice regtest mode for testing MMGen in a mock two-user environment
* All MMGen commands are available in this mode.
* Set up with 'mmgen-regtest setup'. Bob and Alice's wallets are funded with
500 BTC each. Use the --mixed switch to import mixed address types in
Bob and Alice's tracking wallets.
* Transact as Bob by adding --bob switch to MMGen commands
* Transact as Alice by adding --alice switch to MMGen commands
* After sending a transaction, mine a block to confirm it with
'mmgen-regtest generate'
The bitcoin daemon is stopped and restarted automatically when switching
between users.
- OO rewrite of key/addr generation interface (KeyGenerator,AddrGenerator)
- New data objects: PrivKey,PubKey,WifKey
- rewrite of read-only attr implementation for addr/tx/tw list entries
(MMGenImmutableAttr,MMGenListItemAttr descriptors)
- txsign: build key list of addrlist objects rather than addr,key tuples
* Deprecate the --aug1hf option
* Use --coin=bch option to select BCH chain; works with all MMGen commands
* All BCH amounts now correctly display with 'BCH' instead of 'BTC'
* use non-standard RPC ports (8442,18442) for BCH mainnet/testnet to allow
dual-node operation. Use 'mmlive-node-start' and '-stop' scripts
(home.mmgen/bin/mmlive-node-{start,stop} in the MMGenLive repo)
to start daemons with correct RPC ports; the --coin option automatically
configures the correct ports for all MMGen scripts.
* mmgen-txsend: new --status option checks confirmation/mempool status of TXs
Brief instructions for Linux (Windows users may adapt to fit):
Make a copy of your Bitcoin data directory, including the blockchain and
your tracking wallet (the blockchain must have been synced last BEFORE
12:20 UTC Aug. 1). This can be done as follows:
$ mkdir ~/.bitcoin-abc
$ rsync -av ~/.bitcoin/* ~/.bitcoin-abc
If you messed up and synced your blockchain AFTER the HF, then do the
following, after which you'll have to sync the ABC chain from scratch:
$ mkdir ~/.bitcoin-abc
$ cp ~/.bitcoin/{bitcoin.conf,*wallet*.dat} ~/.bitcoin-abc
Download the Bitcoin ABC binary, but DON'T let it install automatically.
Or alternatively, clone the source from Github and compile it yourself:
Binary: https://download.bitcoinabc.org/0.14.6
Source: git clone https://github.com/Bitcoin-ABC/bitcoin-abc
Install the Bitcoin ABC daemon BY HAND into your exec path as 'bitcoind-abc':
$ sudo cp bitcoind /usr/local/bin/bitcoind-abc
Start the daemon and let it sync the ABC chain:
$ bitcoind-abc -datadir=$HOME/.bitcoin-abc -daemon
Don't forget to always start the ABC daemon with the -datadir argument.
Otherwise you could trash your Core blockchain!
Once the HF has activated, you sign or create-sign-send transactions on the
ABC chain by invoking 'mmgen-txsign' or 'mmgen-txdo' with the --aug1hf
switch.
All other commands, including 'mmgen-txcreate' and 'mmgen-txsend', are
invoked as usual, with no additional command-line switches. Your address
balances and unspent outputs will display correctly for whatever chain
you're on at the moment.
To switch back to the Core chain, just stop the ABC daemon and restart the
Core daemon (WITHOUT the -datadir argument).
After the Aug. 1 HF, Core transactions and ABC transactions will be
incompatible, as they use an incompatible sighash type. This prevents
transactions from being broadcast (and hence replayed) on the wrong chain.
So if you use the --aug1hf switch on the Core chain, or forget to use it on
the ABC chain, nothing bad will happen; your sign or send operation will
just fail with an error message.
The main danger is forgetting which daemon is running at the moment and
therefore which chain you're on. This can be checked on Linux with the
command `pgrep -a bitcoind` or on Windows by examining the task manager.
In case you were wondering, all the --aug1hf switch does is perform a few
sanity checks and call signrawtransaction with 'ALL|FORKID' as the
'sighashtype' argument. There's nothing more to it than that!
- Generate Segwit addresses by invoking 'mmgen-addrgen' with the
'--type segwit' option
- Import Segwit addresses into the tracking wallet as usual
- Segwit and legacy MMGen addresses are distinguished by 'S' and 'L'
identifiers in the tracking wallet and command line
Transaction example:
mmgen-txcreate F00BAA12:L:21,1.23 F00BAA12:S:1
(spend 1.23 BTC to legacy address 21 of your default wallet (with Seed ID
F00BAA12) and send the change to Segwit address 1)
Segwit and legacy addresses for a given seed are generated from different
sub-seeds so are cryptographically unrelated to each other.
Since MMGen's legacy P2PKH addresses are uncompressed, use of the new Segwit
addresses significantly reduces transaction size.
Until Segwit activation on mainnet, users can try out the new functionality on
testnet or in regtest mode.
- frees you from having to back up or remember passwords
- generate passwords in either base32 or base58 format
- user-configurable password length
- password generation is keyed to an ID string, allowing you to generate
separate sets of passwords for each online account
EXAMPLE:
mmgen-passgen yourname@nowhere.com 1-10
(generates ten passwords for your email account using your default wallet)
For more examples and detailed usage information, type 'mmgen-passgen --help'
This is the new implementation using hmac. It supersedes commit 85cf5b3
Mnemonic entry mode:
- Word-by-word mnemonic entry at the prompt
- Each word is checked individually, user is re-prompted in case of error
- Activated automatically if stdin is a terminal
test.py is pexpect-based, testing the output rather than return values of
scripts. However, a script may crash even after producing the expected output,
so test for return values too.
* create replaceable transactions with 'mmgen-txcreate' and 'mmgen-txdo'
using the '--rbf' option
* create replacement transactions from existing MMGen transactions
using the new, optionally scriptable 'mmgen-txbump' command
* Bitcoind must be started with the '-walletrbf' option to enable RBF
functionality
[tx]: Command scriptability:
* New '--yes' option makes 'txbump' and 'txsign' fully non-interactive
and 'txcreate' and 'txsend' mostly non-interactive
[tx]: Satoshis-per-byte format:
* Tx fees, both on the command line and at the interactive prompt, may be
specified either as absolute BTC amounts or in satoshis-per-byte format
(an integer followed by the letter 's')
[tx]: Fees
* Completely reworked fee-handling code with better fee checking
* default tx fee eliminated, max_tx_fee configurable in mmgen.cfg
Bugfixes and usability improvements:
* 'mmgen-tool listaddresses' now list addresses from multiple seeds
correctly
* Improved user interaction with all 'mmgen-tx*' commands