Skip to content
This repository was archived by the owner on Feb 7, 2018. It is now read-only.

Commit 9a2a1de

Browse files
committed
Merge remote-tracking branch 'origin/develop' into release
2 parents 998f43e + bc93486 commit 9a2a1de

33 files changed

+1549
-9
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ include(EthPolicy)
1414
eth_policy()
1515

1616
# project name and version should be set after cmake_policy CMP0048
17-
project(cpp-ethereum VERSION "1.1.4")
17+
project(cpp-ethereum VERSION "1.2.0")
1818

1919
include(EthCompilerSettings)
2020

doc/gitbook/README.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
TurboEthereum Guide
2+
=======
3+
4+
This book is intended as a practical user guide for the "Turbo" Ethereum software distribution, originally named after the language in which it is written, C++.
5+
6+
TurboEthereum is a large distribution of software including a number of diverse tools. This book begins with the installation instructions, before proceeding to introductions, walk-throughs and references for the various tools that make up TurboEthereum.
7+
8+
The full software suite of TurboEthereum includes:
9+
10+
- **AlethOne** (`alethone`, "A1") The mainline Ethereum desktop miner. It connects and syncs to the Ethereum network and lets you mine, and send transactions. It will also let you do pool mining.
11+
- **AlethZero** (`alethzero`, "AZ") The power-user Ethereum client. It connects and syncs to the Ethereum network and lets you mine, make transactions, run DApps and inspect the blockchain. It has plugins to allow arbitrary extension.
12+
- **++eth** (`eth`) The mainline CLI Ethereum client. Run it in the background and it will connect to the Ethereum network; you can mine, make transactions and inspect the blockchain.
13+
- **Mix** (`mix`) The integrated development environment for DApp authoring. Quickly prototype and debug decentralised applications on the Ethereum platform.
14+
- `ethkey` A key/wallet management tool for Ethereum keys. This lets you add, remove and change your keys as well as *cold wallet device*-friendly transaction inspection and signing.
15+
- `ethminer` A standalone miner. This can be used to check how fast you can mine and will mine for you in concert with `eth`, `geth` and `pyethereum`.
16+
- `ethvm` The Ethereum virtual machine emulator. You can use this to run EVM code.
17+
- `solc` The Solidity compiler. You can use this to compile Solidity programs into assembly or machine code.
18+
- `rlp` An serialisation/deserialisation tool for the Recursive Length Prefix format.
19+

doc/gitbook/SUMMARY.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Summary
2+
3+
* [Introduction](README.md)
4+
* [Installation](chapter1.md)
5+
* [CLI Tools](cli_tools.md)
6+
* [Getting started](getting_started.md)
7+
* [Interactive Console](interactive_console.md)
8+
* [Mining](mining.md)
9+
* [PoA Private Chains](poa.md)
10+
* [ethkey](ethkey.md)
11+
* [Mix](mix.md)
12+
* [Project Editor](project_editor.md)
13+
* [Scenarios Editor](scenarios_editor.md)
14+
* [State Viewer](state_viewer.md)
15+
* [Transaction Explorer](transaction_explorer.md)
16+
* [JavaScript console](javascript_console.md)
17+
* [Transaction debugger](transaction_debugger.md)
18+
* [Dapps deployment](dapps_deployment.md)
19+
* [Code Editor](code_editor.md)
20+
* [Whisper](whisper.md)
21+
* Recipes and How-tos
22+
* [Cold Wallet Storage Device](cold_wallet_storage_device.md)
23+

doc/gitbook/book.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{}

doc/gitbook/chapter1.md

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# Installation
2+
3+
Installation is a different process dependent on which platform you run. At present, TurboEthereum supports three platforms: Ubuntu, Mac OS X and Windows.
4+
5+
For installing the desktop tools on Windows and Mac, just grab the [latest release](https://github.com/ethereum/webthree-umbrella/releases). (For Windows you might also need [this](http://www.microsoft.com/en-US/download/details.aspx?id=40784).)
6+
7+
For installing on Ubuntu or Homebrew, instructions follow.
8+
9+
# Installing on Ubuntu 14.04 and later (64-bit)
10+
11+
**Warning: The `ethereum-qt` PPA will upgrade your system-wide Qt5 installation, from 5.2 on Trusty and 5.3 on Utopic, to 5.5.**
12+
13+
For the latest stable version:
14+
```
15+
sudo add-apt-repository ppa:ethereum/ethereum-qt
16+
sudo add-apt-repository ppa:ethereum/ethereum
17+
sudo apt-get update
18+
sudo apt-get install cpp-ethereum
19+
```
20+
21+
If you want to use the cutting edge developer version:
22+
```
23+
sudo add-apt-repository ppa:ethereum/ethereum-qt
24+
sudo add-apt-repository ppa:ethereum/ethereum
25+
sudo add-apt-repository ppa:ethereum/ethereum-dev
26+
sudo apt-get update
27+
sudo apt-get install cpp-ethereum
28+
```
29+
30+
## Installing the Mix IDE
31+
32+
Mix, the developer IDE is still in its infancy and still needs a lot of work. If you are adventurous, you can try to run Mix by installing the cutting edge developer version of cpp-ethereum (see above) and then add this:
33+
34+
```
35+
sudo add-apt-repository ppa:ethereum/ethereum-qt
36+
sudo add-apt-repository ppa:ethereum/ethereum
37+
sudo add-apt-repository ppa:ethereum/ethereum-dev
38+
sudo apt-get update
39+
sudo apt-get install mix
40+
mix
41+
```
42+
43+
<!--
44+
## Installing an Ethereum node server
45+
46+
To run a node server on Ubuntu, run:
47+
48+
```
49+
wget http://opensecrecy.com/setupeth.sh && source ./setupeth.sh BRANCH NODE_IP NODE_NAME && rm -f setupeth.sh && reboot
50+
```
51+
52+
- `BRANCH` should be substituted for either `master` or `develop`, depending on whether you want a stable or bleeding-edge version.
53+
- `NODE_IP` should be substituted for the 4-digit, dot-deliminated IP address of the node. For example `1.2.3.4` or `192.168.1.69`.
54+
- `NODE_NAME` should be substituted for the name of the node, quoted if it contains spaces. Avoid using symbols. e.g. `"Gavs Server Node"` or `Release_Node_1`.
55+
56+
Wait for it to reboot and you'll be running a node.
57+
-->
58+
59+
# Installing on OS X and Homebrew
60+
61+
If you want the full suite of CLI tools, include `eth` and `ethminer`, you'll need [Homebrew](brew.sh).
62+
63+
Once you've got Homebrew installed, tap the ethereum brew:
64+
```
65+
brew tap ethereum/ethereum
66+
```
67+
68+
Then, for the stable version:
69+
```
70+
brew install cpp-ethereum
71+
brew linkapps cpp-ethereum
72+
```
73+
74+
or, for the latest cutting edge developer version:
75+
```
76+
brew reinstall cpp-ethereum --devel
77+
brew linkapps cpp-ethereum
78+
```
79+
80+
Add the `--with-gui` option to include the AlethZero and the Mix IDE in the installation; you can then find `AlethZero` and `Mix` in your Applications folder.
81+
82+
For options and patches, see: https://github.com/ethereum/homebrew-ethereum
83+

doc/gitbook/cli_tools.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# CLI Tools
2+

doc/gitbook/code_editor.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Code Editor
2+
3+
This editor provides basic functionalities of a code editor.
4+
5+
- In Solidity or JavaScript mode, an autocompletion plugin is available (Ctrl + Space).
6+
7+
- Increasing/decreasing the font size (Ctrl +, Ctrl -)
8+
9+
- In Solidity mode, you can display the gas estimation (Tools -> Display Gas Estimation). This will highlight all statements which requires a minimum amount of gas. Color turns to red if the gas required becomes important.
10+
It will also display the max execution cost of a transaction (for each function).
11+
12+
13+
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
# Cold Wallet Storage Device
2+
3+
A Cold Wallet Storage Device (CWSD) is a device (duh) used to store keys and sign transactions which never touches the internet, or indeed any communications channels excepting those solely for basic user interaction. The use of such a device is pretty much necessary for storing any large sum of value or other blockchain-based asset, promise or instrument. For example, a device like this has been used for operating blockchain-based keys worth many millions of dollars.
4+
5+
For this how-to, we'll assume that the CWSD is a simple Ubuntu-based computer (a netbook works pretty well) with TurboEthereum preinstalled as per the first chapter; I will assume that you've taken the proper precautions to avoid any malware getting on to the machine (though without an internet connection, there's not too much damage malware can realistically cause).
6+
7+
### Kill the network
8+
9+
The first thing to do is to make sure you've disabled any network connection, wireless or otherwise. Maybe compile a kernel without ICP/IP and Bluetooth, maybe just destroy or remove the network hardware of the computer. It is this precaution that puts the 'C' in CWSD.
10+
11+
### Generate the keys
12+
13+
The next thing to do is to generate the key (or keys) that this machine will store. Run `ethkey` to create a wallet and then again to make as many keys as you would like to use. You can always make more later. For now I'll make one:
14+
15+
```
16+
> ethkey createwallet
17+
Please enter a MASTER passphrase to protect your key store (make it strong!): password
18+
Please confirm the passphrase by entering it again: password
19+
> ethkey new supersecret
20+
Enter a passphrase with which to secure this account (or nothing to use the master passphrase): password
21+
Please confirm the passphrase by entering it again: password
22+
Enter a hint to help you remember this passphrase: just 'password'
23+
Created key 055dde03-47ff-dded-8950-0fe39b1fa101
24+
Name: supersecret
25+
Password hint: just 'password'
26+
ICAP: XE472EVKU3CGMJF2YQ0J9RO1Y90BC0LDFZ
27+
Raw hex: 0092e965928626f8880629cec353d3fd7ca5974f
28+
```
29+
30+
It will prompt for a password and confirmation for both commands. I'm just going to use the password "password" for both.
31+
32+
This "supersecret" key has an address of `XE472EVKU3CGMJF2YQ0J9RO1Y90BC0LDFZ`.
33+
34+
### Signing with the keys
35+
36+
Signing with the keys can happen in two ways: The first is to export a transaction to sign from e.g. AlethZero, perhaps saving to a USB pendrive. Let's assume that is what we have done and we have the hex-encoded transaction at `/mnt/paygav.tx`.
37+
38+
In order to sign this transaction we just need a single `ethkey` invocation:
39+
40+
```
41+
> ethkey sign supersecret /tmp/paygav.tx
42+
```
43+
44+
It will prompt you for the passphrase and finally place the signed hex in a file `/mnt/paygav.tx.signed`. Easy. If we just want to copy and paste the hex (we're too paranoid to use pen drives!) then we would just do:
45+
46+
```
47+
> echo "<hex-encoded transaction here>" | ethkey sign supersecret
48+
```
49+
50+
At which it will ask for your passphrase and spit out the hex of the signed transaction.
51+
52+
Alternatively, if we don't yet have an unsigned transaction, but we actually want to construct a transactions locally, we can do that too.
53+
54+
Let's assume our "supersecret" account has received some ether in the meantime and we want to pay somebody 2.1 grand of this ether (2100 ether for those not used to my English colloquialisms). That's easy, too.
55+
56+
```
57+
> ethkey sign supersecret --tx-dest <destination address> --tx-gas 55000 --tx-gasprice 50000000000 --tx-value 2100000000000000000 --tx-nonce 0
58+
```
59+
60+
Note the `--tx-value` (the amount to transfer) and the `--tx-gasprice` (the price we pay for a single unit of gas) must be specified in Wei, hence the large numbers there. `--tx-nonce` only needs to be specified if it's not the first transaction sent from this account.
61+
62+
### Importing the key
63+
64+
You may want to eventually import the key to your everyday device. This may be to use it directly there or simply to facilitate the creation of unsigned transactions for later signing on the CWSD. Assuming you have a strong passphrase, importing the key on to a hot device itself should not compromise the secret's safety too much (though obviously it's materially less secure than being on a physically isolated machine).
65+
66+
To do this, simply copy the JSON file(s) in your `~/.web3/keys` path to somewhere accessible on your other (non-CWSD) computer. Let's assume this other computer now has our "supersecret" key at `/mnt/supersecret.json`. There are two ways of importing it into your Ethereum wallet. The first is simplest:
67+
68+
```
69+
> ethkey import /mnt/supersecret.json supersecret
70+
Enter the passphrase for the key: password
71+
Enter a hint to help you remember the key's passphrase: just 'password'
72+
Imported key 055dde03-47ff-dded-8950-0fe39b1fa101
73+
Name: supersecret
74+
Password hint: just 'password'
75+
ICAP: XE472EVKU3CGMJF2YQ0J9RO1Y90BC0LDFZ
76+
Raw hex: 0092e965928626f8880629cec353d3fd7ca5974f
77+
```
78+
79+
A key can only be added to the wallet whose address is known; to figure out the address, `ethkey` will you to type your passphrase.
80+
81+
This is less than ideal since if the machine is actually compromised (perhaps with a keylogger), then an attacker could slurp up your passphrase and key JSON and be able to fraudulently use that account as they pleased. Ouch.
82+
83+
A more secure way, especially if you're not planning on using the key directly from this hot machine in the near future, is to provide the address manually on import. It won't ask you for the passphrase and thus potentially compromise the secret's integrity (assuming the machine is actually compromised in the first place!).
84+
85+
To do this, I would remember the "supersecret" account was `XE472EVKU3CGMJF2YQ0J9RO1Y90BC0LDFZ` and tell `ethkey` as such while importing:
86+
87+
```
88+
> ethkey importwithaddress XE472EVKU3CGMJF2YQ0J9RO1Y90BC0LDFZ supersecret
89+
Enter a hint to help you remember the key's passphrase: just 'password'
90+
Imported key 055dde03-47ff-dded-8950-0fe39b1fa101
91+
Name: supersecret
92+
Password hint: just 'password'
93+
ICAP: XE472EVKU3CGMJF2YQ0J9RO1Y90BC0LDFZ
94+
Raw hex: 0092e965928626f8880629cec353d3fd7ca5974f
95+
```
96+
97+
In both cases, we'll be able to see the key in e.g. AlethZero as one of our own, though we will not be able to sign with it without entering the passphrase. Assuming you never enter the passphrase on the hot machine (but rather do all signing on the CWSD) then you should be reasonably safe. Just be warned that the security of the secret is lieing on the network security of your hot machine *and* the strength of your key's passphrase. I really wouldn't count on the former.

doc/gitbook/dapps_deployment.md

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# Dapps deployment
2+
3+
4+
This feature allows users to deploy the current project as a Dapp in the main blockchain.
5+
This will deploy contracts and register frontend resources.
6+
7+
The deployment process includes three steps:
8+
9+
- **Deploy contract**:
10+
This step will deploy contracts in the main blockchain.
11+
12+
- **Package dapp**:
13+
This step is used to package and upload frontend resources.
14+
15+
- **Register**:
16+
To render the Dapp, the Ethereum browser (Mist or AlethZero) needs to access this package. This step will register the URL where the resources are stored.
17+
18+
To Deploy your Dapp, Please follow these instructions:
19+
20+
Click on `Deploy`, `Deploy to Network`.
21+
This modal dialog displays three parts (see above):
22+
23+
- **Deploy contract**
24+
25+
- *Select Scenario*
26+
27+
"Ethereum node URL" is the location where a node is running, there must be a node running in order to initiate deployment.
28+
29+
"Pick Scenario to deploy" is a mandatory step. Mix will execute transactions that are in the selected scenario (all transactions except transactions that are not related to contract creation or contract call). Mix will display all the transactions in the panel below with all associated input parameters.
30+
31+
"Gas Used": depending on the selected scenario, Mix will display the total gas used.
32+
33+
- *Deploy Scenario*
34+
35+
"Deployment account" allow selecting the account that Mix will use to execute transactions.
36+
37+
"Gas Price" shows the default gas price of the network. You can also specify a different value.
38+
39+
"Deployment cost": depending on the value of the gas price that you want to use and the selected scenario. this will display the amount ether that the deployment need.
40+
41+
"Deployed Contract": before any deployment this part is empty. This will be filled once the deployment is finished by all contract addresses that have been created.
42+
43+
"Verifications". This will shows the number of verifications (number of blocks generated on top of the last block which contains the last deployed transactions). Mix keep track of all the transactions. If one is missing (unvalidated) it will be displayed in this panel.
44+
45+
- **Package dapp**
46+
47+
- *Generate local package*
48+
49+
The action "Generate Package" will create the package.dapp in the specified folder
50+
51+
"Local package Url" the content of this field can be pasted directly in AlethZero in order to use the dapp before uploading it.
52+
53+
- *Upload and share package*
54+
55+
This step has to be done outside of Mix. package.dapp file has to be hosted by a server in order to be available by all users.
56+
57+
"Copy Base64" will copy the base64 value of the package to the clipboard.
58+
59+
"Host in pastebin.com" will open pastebin.com in a browser (you can then host your package as base64).
60+
61+
- **Package dapp**
62+
63+
"Root Registrar address" is the account address of the root registrar contract
64+
65+
"Http URL" is the url where resources are hosted (pastebin.com or similar)
66+
67+
"Ethereum URL" is the url that users will use in AlethZero or Mist to access your dapp.
68+
69+
"Formatted Ethereum URL" is the url that users will use in AlethZero or Mist to access your dapp.
70+
71+
"Gas Price" shows the default gas price of the network. You can also specify a different value.
72+
73+
"Registration Cost" will display the amount of ether you need to register your dapp url.
74+
75+

0 commit comments

Comments
 (0)