Commit graph

77 commits

Author SHA1 Message Date
MMGen
df0385160b
XMR (Monero) key/address generation support and wallet generating utility
- Monero key-address files include spendkey, viewkey and wallet password
- Wallet password is first 16 bytes of SHA256x2(spendkey)
- Generate Monero wallets either by hand with:
    1) `monero-wallet-cli --generate-from-spend-key walletfile`, using the keyaddrfile data,
  or automatically, using:
    2) `mmgen-tool keyaddrlist2monerowallet keyaddrfile`
  The utility will generate a wallet for each key/address pair in the keyaddrfile and encrypt
  it using the password.  The password is supplied via stdin.

- Other feature: 32-byte hexadecimal password generation with `mmgen-passgen --hex`
2017-12-28 16:03:28 +03:00
MMGen
279e8872ef
Improve coin selection logic, allow coin disabling 2017-12-25 09:48:59 +03:00
MMGen
91ac2effb3
Key/address generation support for 144 altcoins
Support for these coins is EXPERIMENTAL, use at your own risk

    EXAMPLE: generate 10 Dogecoin key/address pairs with your default wallet:

        `mmgen-keygen --coin=doge 1-10`

    Keys for different coins are distinct, so users needn't worry about key reuse.

    Supported alts: 2give,42,611,ac,acoin,alf,anc,apex,arco,arg,aur,b2x,bcf,bch,blk,bmc,bqc,bsty,btcd,btq,bucks,cann,cash,cat,cbx,ccn,cdn,chc,clam,con,cpc,crps,csh,dash,dcr,dfc,dgb,dgc,doge,doged,dope,dvc,efl,emc,emd,enrg,esp,etc,eth,fai,fc2,fibre,fjc,flo,flt,fst,ftc,gcr,good,grc,gun,ham,html5,hyp,icash,infx,inpay,ipc,jbs,judge,lana,lat,ldoge,lmc,ltc,mars,mcar,mec,mint,mobi,mona,moon,mrs,mue,mxt,myr,myriad,mzc,neos,neva,nka,nlg,nmc,nto,nvc,ok,omc,omni,onion,onx,part,pink,pivx,pkb,pnd,pot,ppc,ptc,pxc,qrk,rain,rbt,rby,rdd,ric,sdc,sib,smly,song,spr,start,sys,taj,tit,tpc,trc,ttc,tx,uno,via,vpn,vtc,wash,wdc,wisc,wkc,wsx,xcn,xgb,xmg,xpm,xpoke,xred,xst,xvc,zec,zet,zlq,zoom,zrc

	Test the new functionality with `scripts/test-release.sh -Pn master alts`

B2X support disabled pending further testing
2017-12-24 15:26:23 +03:00
MMGen
4876ee47ed
View key support for Zcash z-addresses
- view keys are included in key-address lists
- tests updated to test the new functionality

- mmgen-tool: `compressed` and `segwit` args replaced by --type option
2017-12-18 20:19:01 +03:00
MMGen
1cc64e1eb9
Zcash z-address generation with custom sha256 implementation
- Tests have been updated, test with `scripts/test-release.sh -Pn master alts`
2017-12-16 12:48:47 +03:00
MMGen
bafea57134
Key/address generation for Ethereum, Eth Classic, DASH, and Zcash
- supported commands:
  - mmgen-addrgen
  - mmgen-keygen (decrypt encrypted key-addr files with `mmgen-tool decrypt`)
  - mmgen-tool addrfile_chksum, keyaddrfile_chksum

- ETH and ETC keys are distinct, so users needn't worry about key reuse
- Only Zcash-t addresses supported for now (but z-addresses coming soon)

- Test the new functionality with `scripts/test-release.sh -Pn master alts`
2017-12-16 09:31:00 +03:00
philemon
420d0e9699
B2X support, locktime-based coin splitting utility
- full support for B2X fork
- `mmgen-split` coin splitting utility for replayable forks
- `mmgen-regtest fork` command for testing forking scenarios
- `regtest_split` command added to `test/test.py` test suite
- timelock support for `txcreate` and `txdo`
- nlocktime and nsequence checks after signing and before sending
2017-11-13 22:50:35 +03:00
philemon
8fb3efd99c
mmgen-autosign: encrypt signing wallet with session key on removable device 2017-10-29 15:06:16 +03:00
philemon
35d1091159
Basic altcoin framework, full Litecoin support
- LTC: tested on mainnet, full test suite support
- simultaneous autosigning for all supported coins (BTC,BCH,LTC)
2017-10-28 00:11:00 +03:00
philemon
d3f0f26668
bitcoin.py -> protocol.py: CoinProtocol classes and methods
scripts/test-release.sh: BCH tests added
2017-10-03 22:26:24 +03:00
philemon
12ea12e4e2
mmgen-regtest: final implementation; additional test suite tests 2017-09-26 15:41:11 +03:00
philemon
49e1acfb74
mmgen-regtest: improvements + additional tests in test suite 2017-09-25 14:27:39 +03:00
philemon
50f55b9790
mmgen-regtest: test suite support, mswin bugfixes
tx.view(): refactor, bugfixes
new script: test-release.sh
2017-09-19 22:14:00 +03:00
philemon
99295adf20
mmgen-regtest: --empty option, improved debugging output
mmgen-tool: move help data to main_tool.py
2017-09-16 13:55:23 +03:00
philemon
b23b497d77
obj.py rewrite+test suite, Bob and Alice regtest mode, compressed addresses
- 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.
2017-08-14 13:04:25 +03:00
philemon
aae5f122b4
immutable attr improvements 2017-08-08 11:31:57 +03:00
philemon
52fdf29b67
new classes: KeyGenerator,AddrGenerator,PrivKey; read-only attrs rewrite
- 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
2017-08-07 22:02:24 +03:00
philemon
004536af63
Defer printing of help screens until global vars are initialized 2017-08-05 18:15:41 +03:00
philemon
057fe22f0c
test/test.py: refactor, remove interactive mode 2017-08-03 08:56:40 +03:00
philemon
b753ddee5a
Version 0.9.2rc1
- update Getting Started guide for Segwit and regtest
2017-07-29 15:53:04 +03:00
philemon
3b0257358b
Support for Segwit (P2SH-P2WPKH) addresses:
- 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.
2017-07-27 22:55:52 +03:00
philemon
919bd62a79 deleted: "test/ref/98831F3A-\321\204\321\203\320\261\320\260\321\200@crypto.org-base58-20[1,4,9-11,1100].pws" 2017-07-07 16:34:32 +03:00
philemon
fde885f55b
mmgen-passgen: generate passwords from your MMGen seed
- 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
2017-07-07 16:28:07 +03:00
philemon
85cf5b3cbb
The original implementation of mmgen-passgen, using sha256x10(seed+id_str)
Superseded by the current implementation using sha256x10(hmac(seed,id_str,hashlib.sha256))
2017-07-07 16:09:28 +03:00
philemon
0ab39e4a22
Update copyright dates 2017-05-31 18:16:08 +03:00
philemon
ccfa4b5738
test.py: test exit values of scripts
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.
2017-05-24 21:07:16 +03:00
philemon
93c99755a7
[tx]: BIP 125 replace-by-fee (RBF) support:
* 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
2017-05-17 15:37:30 +03:00
philemon
8556de2101
Pre-RBF changes, bugfixes 2017-05-14 21:54:05 +03:00
philemon
1d788752e5
Added Reddit link to footer 2017-02-23 10:55:39 +03:00
philemon
63ddd920cb
Version 0.9.0 2016-12-18 19:59:27 +03:00
philemon
02256664fb
[seed]: export seed to hexadecimal (mmhex) format 2016-12-15 20:53:29 +03:00
philemon
c7fcf448d9
[tool]: accept stdin input for selected utils
[bitcoin/seed]: input sanitizing and checking for base conversion routines
[test]: replace env var with --popen-spawn option
2016-12-15 14:08:03 +03:00
philemon
6bdb70b3e9
[tx]: new command: mmgen-txdo - create, sign and send tx in one operation
[tx]: tx file format change: txid now appended to file after tx is broadcast
2016-12-12 00:30:23 +03:00
philemon
5c53ab9455
Version 0.8.9 2016-12-10 16:09:06 +03:00
philemon
229845c8b6
Version 0.8.9rc1 2016-12-08 18:02:28 +03:00
philemon
48845020c3
[mswin]: full test suite support with pexpect (PopenSpawn)
[mswin]: secure wallet deletion with sdelete
[mswin]: keyaddrfile binary mode write bugfix (main_addrgen.py)
2016-12-05 21:53:16 +03:00
philemon
e5a7b51b4f
Version 0.8.8
Documentation updated
  [mswin]: colons removed from filenames in test/ref
  [mswin]: commas allowed in hidden incog filename parameter
2016-11-23 22:04:17 +03:00
philemon
17060351fb
Version 0.8.8rc1
Windows configuration and test suite fixes
2016-11-23 17:17:08 +03:00
philemon
978565f5bf
Data directory, config file and default wallet support:
* Under Linux, data directory is '~/.mmgen'; config file is 'mmgen.cfg'.
 * If default wallet is enabled, specifying the wallet on the command line is
   no longer necessary.  If not, all MMGen commands behave as previously.
 * The datadir structure mirrors that of Bitcoin Core: mainnet and testnet
   share a common config file, but testnet puts its other files including its
   default wallet in a separate subdirectory 'testnet3'.

New routines have been added to the test suite to test these features.
Tested only under Linux.
2016-11-21 19:59:03 +03:00
philemon
456cc1f76c
Long (common) opts added for setting global vars; display with '--longhelp'.
Datadir '~/.mmgen' and config file 'mmgen.cfg' added:
  * Global vars are now overriden in this order:
    1) config file
    2) environmental variables beginning with 'MMGEN_' (listed in globalvars.py)
    3) command line

Always get user entropy, even for non-critical randomness, unless '-r0'.

rpcuser,rpcpassword now override cookie authentication, as with Core.

RPC to remote daemon now supported with '--rpc-host' option.
2016-11-17 18:10:27 +03:00
philemon
3897ec3297
Version 0.8.7a
--testnet option added to all relevant scripts
  utility scripts under scripts/ updated
2016-11-14 14:45:08 +03:00
philemon
73ca40ea8d
Assorted fixes/improvements:
- Importing addresses with --rescan working again
- Tracking and spending non-MMGen addresses now fully functional
- mmgen-txcreate: improvements in unspent outputs display
- mmgen-txsign: use bitcoind wallet dump as keylist fixed

- Testnet support:
  - Practice sending transactions without risking funds
  	(free testnet coins: https://tpfaucet.appspot.com/)
  - Test suite fully supported
  - To enable, set MMGEN_TESTNET environment variable
2016-11-11 16:05:27 +03:00
philemon
0be6059674 Version 0.8.6
New features/improvements:

	* Address generation using secp256k1 library (Linux only)

Instructions for installing the secp256k1 library on your system:

	doc/wiki/install-linux/Install-MMGen-on-Debian-or-Ubuntu-Linux.md

If secp256k1 is not installed on the system, MMGen remains usable. It just falls
back to 'keyconv', or failing that, python-ecdsa for generating addresses.
2016-08-24 17:20:48 +03:00
philemon
5676d7a3f9
addr generation with secp256k1mod 2016-08-22 14:20:46 +03:00
philemon
9eb4152ece Fix UTF-8 ref tx label 2016-07-31 19:57:54 +03:00
philemon
a6547be82c Label editing in mmgen-txcreate 2016-07-30 14:42:22 +03:00
philemon
7affd8ebea Version 0.8.5rc1 2016-07-27 22:55:47 +03:00
philemon
8ab9ae7ea3 Windows bugfixes, including read/write corruption with incog format
Windows test suite runs without errors
2016-07-26 22:43:24 +03:00
philemon
680ea8a5fc OO rewrite mostly done
Colored output
2016-07-26 22:16:25 +03:00
philemon
5ca6412b23 object-oriented tracking wallet code
updates for oo tx code
updates for test/test.py
2016-07-12 22:25:53 +03:00