Commit graph

20 commits

Author SHA1 Message Date
f840069ecb
update copyright dates 2026-02-11 13:02:12 +00:00
e0d5463ea7
test suite: EtherscanServer: return correct TxID 2025-06-16 14:35:30 +00:00
ff28d39a3c
THORChain ERC20 token swap support
Examples:

    # List available assets:
    $ mmgen-swaptxcreate -S

    # Create a Tether-to-LTC swap transaction for autosigning, connecting to the
    # swap quote server via Tor:
    $ mmgen-swaptxcreate --autosign --proxy=localhost:9050 ETH.USDT 1000 LTC

    # After signing, send the transaction via public Etherscan proxy over Tor:
    $ mmgen-txsend --autosign --quiet --tx-proxy=etherscan --proxy=localhost:9050

    # After sending, check the transaction status and receipt:
    $ mmgen-txsend --autosign --verbose --status

    # Create a Tether-to-DAI swap transaction, with explicit destination account:
    $ mmgen-swaptxcreate ETH.USDT 1000 ETH.DAI E:01234ABC:3

Testing:

    $ test/cmdtest.py -e ethswap
2025-04-27 11:53:49 +00:00
21fb6a8195
cmdtest ethdev: use single dev address for all daemons 2025-04-09 09:16:01 +00:00
6a369f79d7
test suite: replace invalid transaction file 2025-03-17 10:16:18 +00:00
1eb0de7938
ETH: transaction sending via Etherscan
- the HTML transaction broadcast form is used, so no API key is required
- the request can be proxied through Tor
- availability of the service can be checked with the --test option

Example:

    # check availability:
    $ mmgen-txsend --autosign --coin=eth --tx-proxy=etherscan --proxy=localhost:9050 --test

    # send:
    $ mmgen-txsend --autosign --coin=eth --tx-proxy=etherscan --proxy=localhost:9050

Testing:

    $ test/cmdtest.py --coin=eth -e -X txsend_etherscan ethdev
2025-03-15 18:24:54 +00:00
1e422b2c2b
support Rust Ethereum client (Reth)
Tested on Linux only

Testing:

    $ test/cmdtest.py --coin=eth --daemon-id=reth ethdev
2025-03-10 14:28:55 +00:00
5f22d2fbde
scripts/create-token.py: support solc version 0.8.26 2024-07-08 10:51:21 +00:00
096f363dbc
mmgen-tool: add extract_key_from_geth_wallet command
- decrypt the encrypted private key in a Geth keystore wallet and output
  the decrypted key in hexadecimal format

Usage:

    $ mmgen-tool extract_key_from_geth_wallet geth-keystore-wallet.json

Testing:

    $ test/test.py -e tool_extract_key_from_geth_wallet
2022-04-28 11:00:53 +00:00
eaeeef97c0
test.py ethdev: update solc to v0.8.7, update precompiled contract data 2021-09-03 20:17:25 +00:00
f9a483f34f
asyncio/aiohttp support
Asynchronous HTTP significantly speeds up operations involving multiple
JSON-RPC calls to the server, such as tracking wallet views for wallets
with a large number of outputs.

This patch adds base-level asyncio infrastructure plus aiohttp support to all
applicable MMGen commands.

The aiohttp package is not currently supported by MSYS2, so Windows users will
have to choose one of the other backends ('curl' is the default).

Tested on: Linux, Armbian, Windows; Python 3.6, 3.7, 3.8

New user features:

    - configurable RPC backends via the 'rpc_backend' option.  Supported
      options are 'aiohttp' (Linux-only), 'httplib', 'requests' and 'curl'

    - configurable RPC queue size via the 'aiohttp_rpc_queue_len' option

The patch also includes a rewrite/redesign of large parts of the MMGen code
base, most importantly:

    - rpc.py - full rewrite of RPC library, new RPCBackends class
    - main_addrimport.py - full rewrite
    - main_autosign.py - LED code now handled by new LEDControl class
    - eth/tw.py, eth/tx.py - reworked logic for resolving token symbols and
      addresses
    - eth/tx.py - separate classes for signed and unsigned transactions

Testing:

    # Set a backend (choose one):
    $ export MMGEN_RPC_BACKEND='aiohttp' # Linux-only
    $ export MMGEN_RPC_BACKEND='curl'    # Windows
    $ export MMGEN_RPC_BACKEND='httplib' # compare performance with 'aiohttp'

    # Bitcoin:
    $ test/unit_tests.py rpc btc
    $ test/test.py main regtest autosign

    # Ethereum:
    $ test/unit_tests.py rpc eth
    $ test/tooltest2.py --coin=eth --testnet=1 txview
    $ test/test.py --coin=eth ethdev

    # Monero wallet:
    $ test/unit_tests.py rpc xmr_wallet
    $ test/test-release.sh -F xmr
2020-05-10 14:07:54 +00:00
3d9bcd7876
test.py ethdev: auto-use precompiled contract data if solc not available 2019-12-08 18:38:31 +00:00
d0f8c44b20
TrackingWallet: balance caching, Parity light client optimizations
- activated for Ethereum only, but framework exists for all coins
- both session caching and persistent caching in the wallet are supported
- network-destined RPC calls are never repeated in a given invocation
- RPC balance lookups can be suppressed entirely with --cached-balances
2019-07-05 16:03:03 +03:00
4df12def5f
autosign: support testnet, ERC20 tokens 2018-07-29 17:24:29 +03:00
e0dad2e108
test/test.py: update eth ref tx files 2018-07-25 14:08:58 +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
2c97f61ea4
Ethereum autosigning 2018-05-31 22:02:00 +03:00
f14606669e
Ethereum wallet passwords
- A password is now generated for each privkey in Ethereum key-address list
  - As with Monero wallet passwords (df03851), password is first 16 bytes of
    SHA256x2(privkey)
  - Password can be used with geth's private.importRawKey() method to create a
    relatively secure online wallet.  Unlock using private.unlockAccount()
2018-05-16 18:35:23 +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