{% include title.html doc=page coll=page.collection %}
+{% endif %}
+ {{ content }}
+
+
+
diff --git a/docs/_doc/Code-Review-Guidelines.md b/docs/_developers/Code-Review-Guidelines.md
similarity index 100%
rename from docs/_doc/Code-Review-Guidelines.md
rename to docs/_developers/Code-Review-Guidelines.md
diff --git a/docs/_doc/Cross-compiling-Ethereum.md b/docs/_developers/Cross-compiling-Ethereum.md
similarity index 100%
rename from docs/_doc/Cross-compiling-Ethereum.md
rename to docs/_developers/Cross-compiling-Ethereum.md
diff --git a/docs/_doc/Developer-Guide.md b/docs/_developers/Developer-Guide.md
similarity index 54%
rename from docs/_doc/Developer-Guide.md
rename to docs/_developers/Developer-Guide.md
index 113857acf3..3c9c48c37a 100644
--- a/docs/_doc/Developer-Guide.md
+++ b/docs/_developers/Developer-Guide.md
@@ -13,12 +13,3 @@ title: Developer guide
[Account management](Mobile:-Account-management)
-### Transaction tracing
-
-[Introduction and basics](Tracing:-Introduction)
-
-[Custom in-node tracers](Tracing:-Custom-tracers)
-
-[Full blockchain tracing](Tracing:-Blockchain-tracing)
-
-[Dependency exfiltration](Tracing:-Exfiltration)
\ No newline at end of file
diff --git a/docs/_doc/Peer-to-Peer.md b/docs/_developers/Peer-to-Peer.md
similarity index 100%
rename from docs/_doc/Peer-to-Peer.md
rename to docs/_developers/Peer-to-Peer.md
diff --git a/docs/_doc/RPC-PUB-SUB.md b/docs/_developers/RPC-PUB-SUB.md
similarity index 100%
rename from docs/_doc/RPC-PUB-SUB.md
rename to docs/_developers/RPC-PUB-SUB.md
diff --git a/docs/_doc/Tracing_Introduction.md b/docs/_developers/Tracing_Introduction.md
similarity index 100%
rename from docs/_doc/Tracing_Introduction.md
rename to docs/_developers/Tracing_Introduction.md
diff --git a/docs/_doc/Gas-Price-Oracle.md b/docs/_doc/Gas-Price-Oracle.md
index 7b0c9f3498..c3672130ba 100644
--- a/docs/_doc/Gas-Price-Oracle.md
+++ b/docs/_doc/Gas-Price-Oracle.md
@@ -3,20 +3,20 @@ title: Gas price oracle
---
The gas price oracle is a helper function of the Geth client that tries to find an appropriate default gas price when sending transactions. It can be parametrized with the following command line options:
-- gpomin: lower limit of suggested gas price. This should be set at least as high as the "gasprice" setting usually used by miners so that your transactions will not be rejected automatically because of a too low price.
+- `gpomin`: lower limit of suggested gas price. This should be set at least as high as the `gasprice` setting usually used by miners so that your transactions will not be rejected automatically because of a too low price.
-- gpomax: higher limit of suggested gas price. During load peaks when there is a competition between transactions to get into the blocks, the price needs to be limited, otherwise the oracle would eventually try to overbid everyone else at any price.
+- `gpomax`: higher limit of suggested gas price. During load peaks when there is a competition between transactions to get into the blocks, the price needs to be limited, otherwise the oracle would eventually try to overbid everyone else at any price.
-- gpofull: a block is considered "full" when a certain percentage of the block gas limit (specified in percents) is used up by transactions. If a block is not "full", that means that a transaction could have been accepted even with a minimal price offered.
+- `gpofull`: a block is considered "full" when a certain percentage of the block gas limit (specified in percents) is used up by transactions. If a block is not "full", that means that a transaction could have been accepted even with a minimal price offered.
-- gpobasedown: an exponential ratio (specified in 1/1000ths) by which the base price decreases when the lowest acceptable price of the last block is below the last base price.
+- `gpobasedown`: an exponential ratio (specified in `1/1000ths`) by which the base price decreases when the lowest acceptable price of the last block is below the last base price.
-- gpobaseup: an exponential ratio (specified in 1/1000ths) by which the base price increases when the lowest acceptable price of the last block is over the last base price.
+- `gpobaseup`: an exponential ratio (specified in `1/1000ths`) by which the base price increases when the lowest acceptable price of the last block is over the last base price.
-- gpobasecf: a correction factor (specified in percents) of the base price. The suggested price is the corrected base price, limited by gpomin and gpomax.
+- `gpobasecf`: a correction factor (specified in percents) of the base price. The suggested price is the corrected base price, limited by `gpomin` and `gpomax`.
The lowest acceptable price is defined as a price that could have been enough to insert a transaction into a certain block. Although this value varies slightly with the gas used by the particular transaction, it is aproximated as follows: if the block is full, it is the lowest transaction gas price found in that block. If the block is not full, it equals to gpomin.
The base price is a moving value that is adjusted from block to block, up if it was lower than the lowest acceptable price, down otherwise. Note that there is a slight amount of randomness added to the correction factors so that your client will not behave absolutely predictable on the market.
-If you want to specify a constant for the default gas price and not use the oracle, set both gpomin and gpomax to the same value.
\ No newline at end of file
+If you want to specify a constant for the default gas price and not use the oracle, set both `gpomin` and `gpomax` to the same value.
\ No newline at end of file
diff --git a/docs/_doc/Installation-Instructions-for-Ubuntu.md b/docs/_doc/Installation-Instructions-for-Ubuntu.md
deleted file mode 100644
index daea005991..0000000000
--- a/docs/_doc/Installation-Instructions-for-Ubuntu.md
+++ /dev/null
@@ -1,48 +0,0 @@
----
-title: Installation instructions for Ubuntu
----
-## Installing from PPA
-
-```shell
-sudo apt-get install software-properties-common
-sudo add-apt-repository -y ppa:ethereum/ethereum
-sudo apt-get update
-sudo apt-get install ethereum
-```
-
-If you want to stay on the bleeding edge, install the `ethereum-unstable` package instead.
-
-After installing, run `geth account new` to create an account on your node.
-
-You should now be able to run `geth` and connect to the network.
-
-Make sure to check the different options and commands with `geth --help`
-
-You can alternatively install only the `geth` CLI with `apt-get install geth` if you don't want to install the other utilities (`bootnode`, `evm`, `disasm`, `rlpdump`, `ethtest`).
-
-## Building from source
-
-### Building Geth (command line client)
-
-Clone the repository to a directory of your choosing:
-
-```shell
-git clone https://github.com/ethereum/go-ethereum
-```
-Install latest distribution of Go (v1.12.1) if you don't have it already:
-
-[See instructions](Installing-Go#ubuntu-1404)
-
-Building `geth` requires Go and C compilers to be installed:
-
-```shell
-sudo apt-get install -y build-essential golang
-```
-
-Finally, build the `geth` program using the following command.
-```shell
-cd go-ethereum
-make geth
-```
-
-You can now run `build/bin/geth` to start your node.
diff --git a/docs/_doc/Installation-instructions-for-Windows.md b/docs/_doc/Installation-instructions-for-Windows.md
deleted file mode 100644
index 1e121ed1bb..0000000000
--- a/docs/_doc/Installation-instructions-for-Windows.md
+++ /dev/null
@@ -1,66 +0,0 @@
----
-title: Installation instructions for Windows
----
-# Binaries
-
-## Download stable binaries
-
-All versions of Geth are built and available for download at https://geth.ethereum.org/downloads/.
-
-The download page provides an installer as well as a zip file. The installer puts geth into your
-PATH automatically. The zip file contains the command .exe files and can be used without installing.
-
-1. Download zip file
-1. Extract geth.exe from zip
-1. Open a command prompt
-1. chdir
-1. open geth.exe
-
-# Source
-
-## Compiling geth with tools from chocolatey
-
-The Chocolatey package manager provides an easy way to get
-the required build tools installed. If you don't have chocolatey yet,
-follow the instructions on https://chocolatey.org to install it first.
-
-Then open an Administrator command prompt and install the build tools
-we need:
-
-```text
-C:\Windows\system32> choco install git
-C:\Windows\system32> choco install golang
-C:\Windows\system32> choco install mingw
-```
-
-Installing these packages will set up the `Path` environment variable.
-Open a new command prompt to get the new `Path`. The following steps don't
-need Administrator privileges.
-
-Please ensure that the installed Go version is 1.7 (or any later version).
-
-First we'll create and set up a Go workspace directory layout,
-then clone the source.
-
-***OBS*** If, during the commands below, you get the following message:
-```
- WARNING: The data being saved is truncated to 1024 characters.
-```
-Then that means that the `setx` command will fail, and proceeding will truncate the `Path`/`GOPATH`. If this happens, it's better to abort, and try to make some more room in `Path` before trying again.
-
-```text
-C:\Users\xxx> set "GOPATH=%USERPROFILE%"
-C:\Users\xxx> set "Path=%USERPROFILE%\bin;%Path%"
-C:\Users\xxx> setx GOPATH "%GOPATH%"
-C:\Users\xxx> setx Path "%Path%"
-C:\Users\xxx> mkdir src\github.com\ethereum
-C:\Users\xxx> git clone https://github.com/ethereum/go-ethereum src\github.com\ethereum\go-ethereum
-C:\Users\xxx> cd src\github.com\ethereum\go-ethereum
-C:\Users\xxx> go get -u -v golang.org/x/net/context
-```
-
-Finally, the command to compile geth is:
-
-```text
-C:\Users\xxx\src\github.com\ethereum\go-ethereum> go install -v ./cmd/...
-```
\ No newline at end of file
diff --git a/docs/_doc/Backup--restore.md b/docs/_install-and-build/Backup--restore.md
similarity index 100%
rename from docs/_doc/Backup--restore.md
rename to docs/_install-and-build/Backup--restore.md
diff --git a/docs/_install-and-build/Building-Ethereum.md b/docs/_install-and-build/Building-Ethereum.md
index 7d2ed284f3..8128e5e853 100644
--- a/docs/_install-and-build/Building-Ethereum.md
+++ b/docs/_install-and-build/Building-Ethereum.md
@@ -1,22 +1,22 @@
---
-title: Building Ethereum
+title: Building Geth
---
## Installation Instructions
Follow the appropriate link below to find installation instructions for
your platform.
-* [Installation Instructions for Mac OS X](../doc/Installation-Instructions-for-Mac)
-* [Installation Instructions for Windows](../doc/Installation-instructions-for-Windows)
+* [Installation Instructions for Mac OS X](Installation-Instructions-for-Mac)
+* [Installation Instructions for Windows](Installing-Geth)
* Installation Instructions for Linux/Unix
- * [Ubuntu](../doc/Installation-Instructions-for-Ubuntu)
- * [Arch](../doc/Installation-Instructions-for-Arch)
- * [FreeBSD](../doc/Installation-Instructions-for-FreeBSD)
+ * [Ubuntu](Installing-Geth)
+ * [Arch](Installation-Instructions-for-Arch)
+ * [FreeBSD](Installation-Instructions-for-FreeBSD)
* [Setup for Raspberry Pi](https://github.com/ethereum/wiki/wiki/Raspberry-Pi-instructions)
- * [ARM](../doc/Installation-Instructions-for-ARM)
-* [Usage instructions for Docker](../doc/Running-in-Docker)
+ * [ARM](Installation-Instructions-for-ARM)
+* [Usage instructions for Docker](Running-in-Docker)
## Quick Links
* [Ubuntu PPA](https://launchpad.net/~ethereum/+archive/ubuntu/ethereum)
-* [Download Page](https://geth.ethereum.org/downloads)
\ No newline at end of file
+* [Download Page](https://geth.ethereum.org/downloads)
diff --git a/docs/_doc/Installation-Instructions-for-ARM.md b/docs/_install-and-build/Installation-Instructions-for-ARM.md
similarity index 100%
rename from docs/_doc/Installation-Instructions-for-ARM.md
rename to docs/_install-and-build/Installation-Instructions-for-ARM.md
diff --git a/docs/_doc/Installation-Instructions-for-Arch.md b/docs/_install-and-build/Installation-Instructions-for-Arch.md
similarity index 100%
rename from docs/_doc/Installation-Instructions-for-Arch.md
rename to docs/_install-and-build/Installation-Instructions-for-Arch.md
diff --git a/docs/_doc/Installation-Instructions-for-FreeBSD.md b/docs/_install-and-build/Installation-Instructions-for-FreeBSD.md
similarity index 100%
rename from docs/_doc/Installation-Instructions-for-FreeBSD.md
rename to docs/_install-and-build/Installation-Instructions-for-FreeBSD.md
diff --git a/docs/_doc/Installation-Instructions-for-Mac.md b/docs/_install-and-build/Installation-Instructions-for-Mac.md
similarity index 100%
rename from docs/_doc/Installation-Instructions-for-Mac.md
rename to docs/_install-and-build/Installation-Instructions-for-Mac.md
diff --git a/docs/_doc/Installing-Geth.md b/docs/_install-and-build/Installing-Geth.md
similarity index 100%
rename from docs/_doc/Installing-Geth.md
rename to docs/_install-and-build/Installing-Geth.md
diff --git a/docs/_doc/Installing-Go.md b/docs/_install-and-build/Installing-Go.md
similarity index 100%
rename from docs/_doc/Installing-Go.md
rename to docs/_install-and-build/Installing-Go.md
diff --git a/docs/_doc/Running-in-Docker.md b/docs/_install-and-build/Running-in-Docker.md
similarity index 100%
rename from docs/_doc/Running-in-Docker.md
rename to docs/_install-and-build/Running-in-Docker.md
diff --git a/docs/_interface/JavaScript-Console.md b/docs/_interface/JavaScript-Console.md
index 15bcccc934..0387b68581 100644
--- a/docs/_interface/JavaScript-Console.md
+++ b/docs/_interface/JavaScript-Console.md
@@ -14,7 +14,7 @@ The `ethereum CLI` executable `geth` has a JavaScript console (a **Read, Evaluat
The attach node accepts an endpoint in case the geth node is running with a non default ipc endpoint or you would like to connect over the rpc interface.
- $ geth attach ipc:/some/custom/path
+ $ geth attach /some/custom/path.ipc
$ geth attach http://191.168.1.1:8545
$ geth attach ws://191.168.1.1:8546
@@ -26,7 +26,7 @@ If you need log information, start with:
Otherwise mute your logs, so that it does not pollute your console:
- $ geth console 2>> /dev/null
+ $ geth console 2> /dev/null
or
@@ -59,7 +59,7 @@ You can exit the console cleanly by typing `exit` or simply with `CTRL-C`.
The go-ethereum JSRE uses the [Otto JS VM](https://github.com/robertkrimen/otto) which has some limitations:
-* "use strict" will parse, but does nothing.
+* `"use strict"` will parse, but does nothing.
* The regular expression engine (re2/regexp) is not fully compatible with the ECMA5 specification.
Note that the other known limitation of Otto (namely the lack of timers) is taken care of. Ethereum JSRE implements both `setTimeout` and `setInterval`. In addition to this, the console provides `admin.sleep(seconds)` as well as a "blocktime sleep" method `admin.sleepBlocks(number)`.
diff --git a/docs/_how-to/Managing-your-accounts.md b/docs/_interface/Managing-your-accounts.md
similarity index 100%
rename from docs/_how-to/Managing-your-accounts.md
rename to docs/_interface/Managing-your-accounts.md
diff --git a/docs/_how-to/Contract-Tutorial.md b/docs/_legacy/Contract-Tutorial.md
similarity index 100%
rename from docs/_how-to/Contract-Tutorial.md
rename to docs/_legacy/Contract-Tutorial.md
diff --git a/docs/_doc/Creating-your-own-Ethereum-apps-using-Eth-go.md b/docs/_legacy/Creating-your-own-Ethereum-apps-using-Eth-go.md
similarity index 100%
rename from docs/_doc/Creating-your-own-Ethereum-apps-using-Eth-go.md
rename to docs/_legacy/Creating-your-own-Ethereum-apps-using-Eth-go.md
diff --git a/docs/_how-to/Mining.md b/docs/_legacy/Mining.md
similarity index 100%
rename from docs/_how-to/Mining.md
rename to docs/_legacy/Mining.md
diff --git a/docs/_doc/geth.md b/docs/_legacy/geth.md
similarity index 100%
rename from docs/_doc/geth.md
rename to docs/_legacy/geth.md
diff --git a/docs/_support/FAQ.md b/docs/_support/FAQ.md
index 4dbb06d57d..9879bc79b4 100644
--- a/docs/_support/FAQ.md
+++ b/docs/_support/FAQ.md
@@ -1,17 +1,19 @@
---
title: FAQ
---
-***
+
**Q.** I noticed my peercount slowly decrease, and now it is at 0. Restarting doesn't get any peers.
**A.** Check and sync your clock with ntp. [Example](http://askubuntu.com/questions/254826/how-to-force-a-clock-update-using-ntp) `sudo ntpdate -s time.nist.gov`
-***
+---
**Q.** I would like to run multiple geth instances but got the error "Fatal: blockchain db err: resource temporarily unavailable".
**A.** Geth uses a datadir to store the blockchain, accounts and some additional information. This directory cannot be shared between running instances. If you would like to run multiple instances follow [these](../doc/Setting-up-private-network-or-local-cluster) instructions.
+---
+
**Q.** How do Ethereum syncing work?
**A.** The current default mode of sync for Geth is called fast sync. Instead of starting from the genesis block and reprocessing all the transactions that ever occurred (which could take weeks), fast sync downloads the blocks, and only verifies the associated proof-of-works. Downloading all the blocks is a straightforward and fast procedure and will relatively quickly reassemble the entire chain.
@@ -22,7 +24,9 @@ So, what's the state trie? In the Ethereum mainnet, there are a ton of accounts
Ok, so why does this pose a problem? This trie data structure is an intricate interlink of hundreds of millions of tiny cryptographic proofs (trie nodes). To truly have a synchronized node, you need to download all the account data, as well as all the tiny cryptographic proofs to verify that noone in the network is trying to cheat you. This itself is already a crazy number of data items. The part where it gets even messier is that this data is constantly morphing: at every block (15s), about 1000 nodes are deleted from this trie and about 2000 new ones are added. This means your node needs to synchronize a dataset that is changing 200 times per second. The worst part is that while you are synchronizing, the network is moving forward, and state that you begun to download might disappear while you're downloading, so your node needs to constantly follow the network while trying to gather all the recent data. But until you actually do gather all the data, your local node is not usable since it cannot cryptographically prove anything about any accounts.
-If you see that you are 64 blocks behind mainnet, you aren't yet synchronized, not even close. You are just done with the block download phase and still running the state downloads. You can see this yourself via the seemingly endless Imported state entries [...] stream of logs. You'll need to wait that out too before your node comes truly online.
+If you see that you are 64 blocks behind mainnet, you aren't yet synchronized, not even close. You are just done with the block download phase and still running the state downloads. You can see this yourself via the seemingly endless `Imported state entries [...]` stream of logs. You'll need to wait that out too before your node comes truly online.
+
+---
**Q: The node just hangs on importing state enties?!**
@@ -30,10 +34,14 @@ If you see that you are 64 blocks behind mainnet, you aren't yet synchronized, n
The reason is that a block in Ethereum only contains the state root, a single hash of the root node. When the node begins synchronizing, it knows about exactly 1 node and tries to download it. That node, can refer up to 16 new nodes, so in the next step, we'll know about 16 new nodes and try to download those. As we go along the download, most of the nodes will reference new ones that we didn't know about until then. This is why you might be tempted to think it's stuck on the same numbers. It is not, rather it's discovering and downloading the trie as it goes along.
+---
+
**Q: I'm stuck at 64 blocks behind mainnet?!**
*A:* As explained above, you are not stuck, just finished with the block download phase, waiting for the state download phase to complete too. This latter phase nowadays take a lot longer than just getting the blocks.
+---
+
**Q: Why does downloading the state take so long, I have good bandwidth?**
**A:** State sync is mostly limited by disk IO, not bandwidth.
@@ -42,8 +50,10 @@ The state trie in Ethereum contains hundreds of millions of nodes, most of which
Not only is storing the data very suboptimal, but due to the 200 modification / second and pruning of past data, we cannot even download it is a properly pre-processed way to make it import faster without the underlying database shuffling it around too much. The end result is that even a fast sync nowadays incurs a huge disk IO cost, which is too much for a mechanical hard drive.
+---
+
**Q: Wait, so I can't run a full node on an HDD?**
**A:** Unfortunately not. Doing a fast sync on an HDD will take more time than you're willing to wait with the current data schema. Even if you do wait it out, an HDD will not be able to keep up with the read/write requirements of transaction processing on mainnet.
-You however should be able to run a light client on an HDD with minimal impact on system resources. If you wish to run a full node however, an SSD is your only option.
\ No newline at end of file
+You however should be able to run a light client on an HDD with minimal impact on system resources. If you wish to run a full node however, an SSD is your only option.
diff --git a/docs/_doc/IPFS--SWARM.md b/docs/_swarm/IPFS--SWARM.md
similarity index 100%
rename from docs/_doc/IPFS--SWARM.md
rename to docs/_swarm/IPFS--SWARM.md
diff --git a/docs/_doc/Swarm---TODO.md b/docs/_swarm/Swarm---TODO.md
similarity index 100%
rename from docs/_doc/Swarm---TODO.md
rename to docs/_swarm/Swarm---TODO.md
diff --git a/docs/_doc/Swarm---distributed-preimage-archive.md b/docs/_swarm/Swarm---distributed-preimage-archive.md
similarity index 100%
rename from docs/_doc/Swarm---distributed-preimage-archive.md
rename to docs/_swarm/Swarm---distributed-preimage-archive.md
diff --git a/docs/_doc/Swarm-Channels,-Namereg-resolution-draft.md b/docs/_swarm/Swarm-Channels,-Namereg-resolution-draft.md
similarity index 100%
rename from docs/_doc/Swarm-Channels,-Namereg-resolution-draft.md
rename to docs/_swarm/Swarm-Channels,-Namereg-resolution-draft.md
diff --git a/docs/_doc/Swarm-Contract.md b/docs/_swarm/Swarm-Contract.md
similarity index 100%
rename from docs/_doc/Swarm-Contract.md
rename to docs/_swarm/Swarm-Contract.md
diff --git a/docs/_doc/swarm---POC-series.md b/docs/_swarm/swarm---POC-series.md
similarity index 100%
rename from docs/_doc/swarm---POC-series.md
rename to docs/_swarm/swarm---POC-series.md
diff --git a/docs/_doc/swarm-dev-progress.md b/docs/_swarm/swarm-dev-progress.md
similarity index 100%
rename from docs/_doc/swarm-dev-progress.md
rename to docs/_swarm/swarm-dev-progress.md
diff --git a/docs/_doc/swarm-roadmap.md b/docs/_swarm/swarm-roadmap.md
similarity index 100%
rename from docs/_doc/swarm-roadmap.md
rename to docs/_swarm/swarm-roadmap.md
diff --git a/docs/_whisper/Whisper-Overview.md b/docs/_whisper/Whisper-Overview.md
index 7530c7c00a..43ffb968ea 100644
--- a/docs/_whisper/Whisper-Overview.md
+++ b/docs/_whisper/Whisper-Overview.md
@@ -1,7 +1,6 @@
---
title: Overview
---
-## Whisper Overview
Whisper is a pure identity-based messaging system. Whisper provides a simple low-level API without being based upon or influenced by the low-level hardware attributes and characteristics. Peer-to-peer communication between the nodes of Whisper network uses the underlying [ÐΞVp2p Wire Protocol](https://github.com/ethereum/wiki/wiki/%C3%90%CE%9EVp2p-Wire-Protocol). Whisper was not designed to provide a connection-oriented system, nor for simply delivering data between a pair of particular network endpoints. However, this might be necessary in some very specific cases (e.g. delivering the expired messages in case they were missed), and Whisper protocol will accommodate for that. Whisper is designed for easy and efficient broadcasting, and also for low-level asynchronous communications. It is designed to be a building block in next generation of unstoppable ÐApps. It was designed to provide resilience and privacy at considerable expense. At its most secure mode of operation, Whisper can theoretically deliver 100% darkness. Whisper should also allow the users to configure the level of privacy (how much information it leaks concerning the ÐApp content and ultimately, user activities) as a trade-off for performance.