Commit graph

90 commits

Author SHA1 Message Date
b61d516acd
test-release.sh: change option names, alter behavior of '-f' (speedup) option 2019-02-28 13:57:35 +03:00
6a90340671
minor changes 2019-02-28 13:51:27 +03:00
7ac23b6bf3
create new uninstall script 2019-02-28 13:38:52 +03:00
729a547c7d
tool.py, main_tool.py: major rewrite, cleanup
- group tool commands into classes
- add docstrings to command classes and methods
- annotate command method args
- generate call signatures + help and usage screens on the fly

- API changes:
  - listaddresses,twview: new 'age_fmt' option replaces 'show_days' and 'show_age'
  - addrfile_chksum and friends: 'mmtype' option removed

- tooltest.py, tooltest2.py and test.py have been updated accordingly
2019-02-22 23:23:06 +03:00
26ba8baa97
test-release.sh, tooltest.py, tooltest2.py: minor changes, exception handling 2019-02-19 17:53:21 +03:00
514c1100ee Update copyright dates 2019-02-12 21:35:12 +03:00
8c1df23332 py3port: 'test.py autosign_live' - test device insertion/removal + LED 2019-02-12 13:41:27 +03:00
bbdefce0a2 py3port: minor fixes 2019-02-12 13:38:22 +03:00
44c529ae8d py3port: test-release.sh: add autosign_minimal test, --buf-keypress option 2019-02-10 22:26:22 +03:00
80564f6efd py3port: allow solc v0.5.1 or v0.5.3, update ethdev test vectors accordingly 2019-02-10 22:25:03 +03:00
fb07b089be py3port: ERC20: support/require Solidity compiler version 0.5.3 2019-02-06 14:05:37 +03:00
c2675c15ed
py3port: headers 2018-11-17 23:34:04 +03:00
0482594e7a
py3port: traceback_run fixes 2018-11-15 15:57:31 +03:00
44eb299442
py3port: revert some changes made by 2to3 2018-11-01 20:34:29 +03:00
0eff2811e1
py3port: update tests 2018-10-31 21:20:59 +03:00
53189f4469
py3port: Zcash and Monero-related changes 2018-10-31 21:12:07 +03:00
81548b9a35
py3port: exec, subprocess: 'python' -> 'python3' 2018-10-31 19:37:34 +03:00
04329b6757
py3port: use encode() and decode() where applicable 2018-10-31 17:16:00 +03:00
46f44b645b
py3port: use floor division where applicable 2018-10-31 16:38:21 +03:00
949e42ebf4
py3port: 2to3 on all files
The result of running 2to3-2.7 on all Python files in the repository.
2018-10-30 19:31:14 +03:00
f0fea335eb
py3port: update hashbangs
This is the first commit of the MMGen Python 3 port.  Branch 'py3port', against
master branch commit ab06ca4

Commits are groupings of similar or related changes: automatic changes first,
followed by repetitive and global changes, followed by specific ones

All commits until the final one will leave the branch in a broken state
2018-10-30 19:23:12 +03:00
ab06ca4ea8
Rename traceback file; bump version to 0.9.999 2018-10-30 18:50:18 +03:00
3b7fbc1462
test-release.sh: minor changes 2018-10-24 17:05:04 +03:00
7ebe50dc0b
Use Exception attributes: e.message, e.code 2018-10-16 18:39:33 +03:00
d4eb8f6ac0
Full Ethereum Classic (ETC) + ERC20 token support
As with ETH transacting support, this feature is in beta phase

All key functionality works, for both ETC and ETC tokens:
- Tracking wallet: getbalance, twview, listaddresses
- TX create, send, sign
- TX bumping
- ERC20 token creation, deployment

For usage details, see https://github.com/mmgen/mmgen/wiki/Altcoin-and-Forkcoin-Support

Differences from ETH:
- Start Parity with --jsonrpc-port=8555 (or --ports-shift=10) and --chain=classic
- Launch MMGen commands with --coin=etc
2018-10-02 21:09:48 +03:00
4df12def5f
autosign: support testnet, ERC20 tokens 2018-07-29 17:24:29 +03:00
881d55993f
ERC20 token support (create/deploy, TX create/sign/send)
This feature is EXPERIMENTAL.  Until v0.9.9 is released, mainnet use is
strictly at your own risk!

To test on dev chain, run 'test/test.py -e ethdev'

To test on Kovan, add '--testnet=1' option to all commands below

Transaction example:

    Generate some ETH addresses with your default wallet:
    $ mmgen-addrgen --coin=eth 1-5

    Create an EOS token tracking wallet and import the addresses into it:
    $ mmgen-addrimport --coin=eth --token=86fa049857e0209aa7d9e616f7eb3b3b78ecfdb0 ABCDABCD-ETH[1-5].addrs

    Send 10+ EOS from an exchange or another wallet to address ABCDABCD:E:1

    Create a TX sending 10 EOS to address aabbccdd..., with change to ABCDABCD:E:2:
    $ mmgen-txcreate --coin=eth --token=eos aabbccddaabbccddaabbccddaabbccddaabbccdd,10 ABCDABCD:E:2

    On your offline machine, sign the TX:
    $ mmgen-txsign --coin=eth --token=eos ABC123-EOS[10,50000].rawtx

    On your online machine, send the TX:
    $ mmgen-txsend --coin=eth --token=eos ABC123-EOS[10,50000].sigtx

    View your EOS tracking wallet:
    $ mmgen-tool --coin=eth --token=eos twview

Token creation/deployment example:

    Install the Solidity compiler ('solc') on your system.

    Create a token 'MFT' with default parameters, owned by ddeeff... (ABCDABCD:E:1):
    $ scripts/create-token.py --symbol=MFT --name='My First Token' ddeeffddeeffddeeffddeeffddeeffddeeffddee

    Deploy the token on the ETH blockchain:
    $ mmgen-txdo --coin=eth --tx-gas=200000 --contract-data=SafeMath.bin
    $ mmgen-txdo --coin=eth --tx-gas=250000 --contract-data=Owned.bin
    $ mmgen-txdo --coin=eth --tx-gas=1100000 --contract-data=Token.bin
    ...
    Token address: abcd1234abcd1234abcd1234abcd1234abcd1234

    Create an MFT token tracking wallet and import your ETH addresses into it:
    $ mmgen-addrimport --coin=eth --token=abcd1234abcd1234abcd1234abcd1234abcd1234 ABCDABCD-ETH[1-5].addrs

    View your MFT tracking wallet:
    $ mmgen-tool --coin=eth --token=mft twview
2018-07-25 15:57:04 +03:00
e978b759d8
test/test.py,scripts/test-release.py: minor changes 2018-07-25 15:34:50 +03:00
fad573eccd
tx.py,tw.py: cleanups, support tx inputs from cmdline 2018-07-24 00:17:05 +03:00
9d04a244ec
test.py: rewrite create_ref_tx, update reference tx files 2018-06-05 00:15:52 +03:00
dcd4e31cf1
test-release.sh: add test.py ethdev tests 2018-06-04 12:16:32 +03:00
1b54d425bd
addr.py,rpc.py,tw.py,tx.py,traceback.py: minor cleanups and refactoring 2018-05-28 12:39:49 +03:00
06af7342cf
Pre-0.9.7 seed-stealing exploit
Versions of MMGen prior to 0.9.7 were vulnerable to an attack whereby a
compromised MMGen installation on the network-connected machine could trick
an offline installation into revealing the user's seed via a specially crafted
transaction file.

Since sufficient time has passed for users to upgrade, we now deem it safe to
publish the exploit, implemented as a patch against v0.9.6.  Instructions for
use are in the patch itself.
2018-05-22 11:47:24 +03:00
6526aa7ed4
test.py: altcoin generation tests 2018-05-16 18:36:51 +03:00
6972153248
Test UTF-8 passwords; add release notes 2018-05-14 19:36:08 +03:00
1b25452c8e
Rename some tests and test groups 2018-05-12 18:52:35 +03:00
9f2153c3a8
Require UTF-8 for brainwallet; other UTF-8 fixes
- This commit introduces a backwards incompatibility.  Users with non-UTF-8
  brainwallets (if there are any, which is very unlikely) must export them to
  another MMGen wallet format using an older version of MMGen.
2018-05-12 18:26:54 +03:00
2cb4df72c4
Litecoin Bech32 address support 2018-05-09 17:37:18 +03:00
21042737fe
Support UTF-8 wallet labels; new UTF-8 restrictions
- this means .mmdat wallet file itself is now UTF-8 (formerly ASCII-only)
- control and combining characters are now forbidden in all labels
2018-05-08 14:00:16 +03:00
351f5f9118
Use new-style string formatting 2018-03-07 12:59:35 +03:00
b80b059815
Use map() instead of list comprehension where possible 2018-03-07 12:55:06 +03:00
a201aeae94
Minor fixes, cleanups 2018-03-07 12:51:24 +03:00
3cfcd45d59
test/gentest.py: add p2sh-segwit wallet dump 2018-03-06 10:31:57 +03:00
6f572cddde
Bech32: additional tests 2018-03-06 10:28:41 +03:00
e4114eedf3
Bech32 address support
- Address type code is 'B'
- Generate with `--type=B` or `--type=bech32`
2018-03-05 12:46:35 +03:00
e2d51469e6
scrambletest.py: add coverage support
test.py altcoin_ref: enable internal ed25519
2018-02-26 20:01:20 +03:00
282fec8054
addrgen,keygen: use internal ed25519 module by user request 2018-02-24 21:43:55 +03:00
8fe92de627
Coverage support for tests via Python trace module 2018-02-24 14:39:49 +03:00
4009e1794f
test-release.sh: indentation fixes 2018-02-24 14:34:30 +03:00
MMGen
6b9df0ea44
Change all eval() calls to ast.literal_eval()
- closes an exploit whereby an infected online MMGen installation could craft
  a special TX file to trick an offline signing MMGen into executing an
  arbitrary expression
- update TX file format (to v3) to permit calling literal_eval() on unmodified
  inputs and outputs data (old v2 file format continues to be supported)
- new TX file conversion script: `scripts/tx-v2-to-v3.py`
- `scripts/tx-old2new.py` modified and renamed to `scripts/tx-v1-to-v3.py`
2018-02-17 15:35:45 +03:00