From 758bd08e8a598c1c7d3e369f440776c78ad279ac Mon Sep 17 00:00:00 2001 From: MMGen Date: Wed, 13 Feb 2019 15:20:21 +0000 Subject: [PATCH] Update documentation from wiki, amend release notes --- doc/release-notes/release-notes-v0.10.0.md | 13 +- ...Install-MMGen-on-Debian-or-Ubuntu-Linux.md | 10 +- .../Altcoin-and-Forkcoin-Support.md | 120 ++++++++++++------ 3 files changed, 96 insertions(+), 47 deletions(-) diff --git a/doc/release-notes/release-notes-v0.10.0.md b/doc/release-notes/release-notes-v0.10.0.md index 156cf645..b0b35228 100644 --- a/doc/release-notes/release-notes-v0.10.0.md +++ b/doc/release-notes/release-notes-v0.10.0.md @@ -9,9 +9,9 @@ sudo apt-get install python3-dev python3-ecdsa python3-pexpect python3-setuptools python3-crypto python3-nacl python3-pip sudo -H pip3 install scrypt - - Ethereum, ERC20 and Monero dependencies must be upgraded as well, if - support for these coins is desired. See the [Altcoin and Forkcoin - Support][f] wiki page for details. + - If support for Ethereum, ERC20 or Monero is required, their respective + dependencies must be upgraded as well. See the [Altcoin and Forkcoin + Support][f] wiki page for information. This is a Linux-only release. It has been tested on the following platforms: @@ -20,15 +20,16 @@ Armbian Bionic / Orange Pi PC2 Raspbian Stretch / Raspberry Pi B - with the following coin daemons: + and with the following coin daemon versions: Bitcoin Core v0.17.1 - Bitcoin ABC v0.18.8 + Bitcoin-ABC v0.18.8 Litecoin Core v0.16.3 Monerod v0.13.0.4 Parity Ethereum v1.11.1 & v2.3.2 - and the following altcoin libraries / address generation tools: + In addition, altcoin address generation has been tested using the following + altcoin libraries / address generation tools as references: pyethereum b704a5c (https://github.com/ethereum/pyethereum) zcash-mini a2b3504 (https://github.com/FiloSottile/zcash-mini) diff --git a/doc/wiki/install-linux/Install-MMGen-on-Debian-or-Ubuntu-Linux.md b/doc/wiki/install-linux/Install-MMGen-on-Debian-or-Ubuntu-Linux.md index aa8e99b4..b7f0f73e 100644 --- a/doc/wiki/install-linux/Install-MMGen-on-Debian-or-Ubuntu-Linux.md +++ b/doc/wiki/install-linux/Install-MMGen-on-Debian-or-Ubuntu-Linux.md @@ -2,11 +2,12 @@ > Install required Debian/Ubuntu packages: - $ sudo apt-get install python-dev python-pexpect python-ecdsa python-scrypt libssl-dev git autoconf libtool wipe python-setuptools libgmp-dev python-crypto python-nacl python-pysha3 python-pip + $ sudo apt-get install autoconf git libgmp-dev libssl-dev libtool wipe + $ sudo apt-get install python3-dev python3-ecdsa python3-pexpect python3-setuptools python3-crypto python3-nacl python3-pip -> Install fast ed25519 Python package (optional, but recommended for Monero addresses): +> Using the [pip3][P] installer, install the Python scrypt library: - $ sudo -H pip install ed25519ll + $ sudo -H pip3 install scrypt > Install the secp256k1 library: @@ -32,7 +33,7 @@ > To install prebuilt binaries, go [here][01]. To install from source, go > [here][02]. -#### Note for offline machines: +#### *Note for offline machines:* > Naturally, your offline machine must be connected to the Internet to retrieve > and install the above packages as described above. This is normally not a @@ -59,3 +60,4 @@ Started with MMGen**][gs]. [02]: Install-Bitcoind-from-Source-on-Debian-or-Ubuntu-Linux [gs]: Getting-Started-with-MMGen [03]: https://pypi.python.org/packages/source/p/pexpect/pexpect-3.1.tar.gz +[P]: https://pypi.org/project/pip diff --git a/doc/wiki/using-mmgen/Altcoin-and-Forkcoin-Support.md b/doc/wiki/using-mmgen/Altcoin-and-Forkcoin-Support.md index cad339b2..c50399b3 100644 --- a/doc/wiki/using-mmgen/Altcoin-and-Forkcoin-Support.md +++ b/doc/wiki/using-mmgen/Altcoin-and-Forkcoin-Support.md @@ -8,7 +8,9 @@ #### [Full support for Bcash (BCH) and Litecoin](#a_bch) -#### [Enhanced key/address generation support for Monero (XMR) and Zcash (ZEC)](#a_es) +#### [Key/address generation for Zcash (ZEC)](#a_zec) + +#### [Key/address generation and wallet creation/syncing for Monero (XMR)](#a_xmr) #### [Key/address generation support for 144 Bitcoin-derived altcoins](#a_kg) @@ -42,42 +44,38 @@ list. #### Install the Pyethereum library Signing of ETH and ETC transactions is handled by the [pyethereum][y] library. -Unfortunately, Python 2 is not reliably supported by recent versions of -pyethereum and some of its dependencies, so older versions must be installed. -This can be done easily with the [pip][P] Python package installer. -First install the following dependencies: +First, using the [pip3][P] Python package installer, install the following +dependencies: - $ pip install rlp==0.6.0 # the version is important here! - $ pip install future pysha3 PyYAML py_ecc +*Note: Ubuntu Xenial users will have to upgrade the Python interpreter and +Python dependencies listed in the [Install wiki][iw] from version 3.5 to 3.6 +before proceeding. This can be done by adding the Bionic repository to +'sources.list' and installing the relevant packages with '-t bionic'* -Now install the library itself. You could try doing this the usual way: + $ sudo -H pip3 install wheel future pysha3 PyYAML py_ecc rlp - $ pip install ethereum==2.1.2 # the version is important here! +As of this writing, the current “stable” version of pyethereum (2.3.2) is +broken, so we must check out a more recent version from Github: -However, pyethereum pulls in a whole bunch of silly dependencies, some of which -may fail to install, and we need only a subset of the library anyway, so it's -better to do the following instead: + $ git clone https://github.com/ethereum/pyethereum + $ cd pyethereum + $ git checkout b704a5c - $ pip download ethereum==2.1.2 +To prevent the library from auto-installing a lot of unneeded dependencies +(Pycryptodome in particular, which would stomp on our existing Pycrypto +installation) we need to edit the file 'requirements.txt' and remove the +following unneeded packages: -This will download the package archive and dependencies. When pip starts -downloading the dependency archives, just bail out with Ctrl-C, since you don't -need them. + coincurve + pbkdf2 + pyethash + pycryptodome + repoze.lru -Now unpack the ethereum-2.1.2.tar.gz archive and remove unneeded deps from -'requirements.txt', making the file look exactly like this: +Now we can proceed with the install: - pysha3>=1.0.1 - PyYAML - scrypt - py_ecc - rlp>=0.4.7 - future - -Now install: - - $ sudo python ./setup.py install + $ sudo python3 ./setup.py install #### Transacting and other basic operations @@ -136,11 +134,47 @@ To transact ETH instead of EOS, omit the `--token` arguments. #### Creating and deploying ERC20 tokens -Install the Solidity compiler (`solc`) on your system: +##### Install the Solidity compiler +To deploy Ethereum contracts with MMGen, you need between **v0.5.1** and +**v0.5.3** of the the Solidity compiler (`solc`) installed on your system. The +best way to ensure you have the correct version is to compile it from source. +Alternatively, on Ubuntu 18.04 systems a binary distribution is also available. +Instructions for installing it are provided below. + +##### *To compile solc from source:* + +Clone the repository and build: + + $ git clone --recursive https://github.com/ethereum/solidity.git + $ cd solidity + $ git checkout v0.5.1 # v0.5.3 doesn't build on Raspbian Stretch + $ ./scripts/install_deps.sh # Raspbian Stretch: add `DISTRO='Debian'` after line 55 + $ mkdir build + $ cd build + $ cmake -DUSE_CVC4=OFF -DUSE_Z3=OFF .. + $ make solc + $ sudo install -v --strip solc/solc /usr/local/bin + +##### *To install solc from binary distribution (Ubuntu 18.04):* + +First add the following line to your /etc/apt/sources.list: + + deb http://ppa.launchpad.net/ethereum/ethereum/ubuntu bionic main + +Now obtain the Ethereum PPA key `2A518C819BE37D2C2031944D1C52189C923F6CA9` +from a PGP keyserver using your method of choice. Save the key to file, and +then add it to your APT keyring as follows: + + $ sudo apt-key add + +Now you can proceed with the install: + + $ sudo apt-get update $ sudo apt-get install solc + $ solc --version # make sure the version is correct! -##### Token creation/deployment example: +##### Create and deploy a token *Note: All addresses and filenames in the examples to follow are bogus. You must replace them with real ones.* @@ -148,7 +182,7 @@ must replace them with real ones.* Create a token 'MFT' with default parameters, owned by `ddeeff...` (`ABCDABCD:E:1`): # Do this in the MMGen repository root: - $ scripts/create-token.py --symbol=MFT --name='My First Token' ddeeffddeeffddeeffddeeffddeeffddeeffddee + $ scripts/create-token.py --coin=ETH --symbol=MFT --name='My First Token' ddEEFFDdEEFfddEeffDDEefFdDeeFFDDEeFFddEe Deploy the token on the ETH blockchain: @@ -188,16 +222,15 @@ MMGen requires that the bitcoin-abc daemon be listening on non-standard Then just add the `--coin=bch` or `--coin=ltc` option to all your MMGen commands. It's that simple! -### Enhanced key/address generation support for Monero (XMR) and Zcash (ZEC) +### Key/address generation for Zcash (ZEC) -MMGen's enhanced key/address generation support for Zcash and Monero includes -**Zcash z-addresses** and automated Monero wallet creation. +MMGen's enhanced support for Zcash includes generation of **z-addresses.** Generate ten Zcash z-address key/address pairs from your default wallet: $ mmgen-keygen --coin=zec --type=zcash_z 1-10 -The addresses' view keys are included in the file as well. +The addresses' view keys are included in the output file as well. NOTE: Since your key/address file will probably be used on an online computer, you should encrypt it with a good password when prompted to do so. The file can @@ -208,6 +241,16 @@ To generate Zcash t-addresses, just omit the `--type` argument: $ mmgen-keygen --coin=zec 1-10 +### Key/address generation and wallet creation/syncing for Monero (XMR) + +MMGen's enhanced support for Monero includes automated Monero wallet creation +and syncing. + +Install the following dependencies: + + $ sudo -H pip3 install pysha3 + $ sudo -H pip3 install ed25519ll # optional, but greatly speeds up address generation + Generate ten Monero address pairs from your default wallet: $ mmgen-keygen --coin=xmr 1-10 @@ -219,8 +262,9 @@ key in the key/address file by running the following command: $ monero-wallet-cli --generate-from-spend-key MyMoneroWallet -and pasting in the key and password data when prompted. Monerod must be -running and `monero-wallet-cli` be located in your executable path. +and pasting in the key and password data when prompted. [Monerod][M] must be +installed and running and `monero-wallet-cli` be located in your executable +path. To save your time and labor, the `mmgen-tool` utility includes a command that completely automates this process: @@ -284,9 +328,11 @@ Project. [l]: https://github.com/mmgen/MMGenLive [y]: https://github.com/ethereum/pyethereum [P]: https://pypi.org/project/pip +[M]: https://getmonero.org/downloads/#linux [U]: https://github.com/mmgen/MMGenLive/blob/master/home.mmgen/bin/mmlive-daemon-upgrade [X]: autosign-[MMGen-command-help] [bo]: Getting-Started-with-MMGen#a_bo [si]: Install-Bitcoind-from-Source-on-Debian-or-Ubuntu-Linux [bi]: Install-Bitcoind#a_d [p8]: Install-Bitcoind#a_r +[iw]: Install-MMGen-on-Debian-or-Ubuntu-Linux