Removed available in 1.1 notes and added links from CLI options (#1294)

Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
pull/2/head
MadelineMurray 6 years ago committed by GitHub
parent a4b473ad6f
commit 36650aff55
  1. 3
      docs/Getting-Started/Run-Docker-Image.md
  2. 3
      docs/JSON-RPC-API/Using-JSON-RPC-API.md
  3. 3
      docs/Privacy/Privacy-Overview.md
  4. 3
      docs/Privacy/Private-Transaction-Processing.md
  5. 352
      docs/Privacy/Start-Pantheon-Privacy.md
  6. 4
      docs/Reference/JSON-RPC-API-Methods.md
  7. 42
      docs/Reference/Pantheon-CLI-Syntax.md
  8. 1
      mkdocs.yml

@ -180,9 +180,6 @@ Where `myprivacypublickeyfile` is the file containing the public key and `path`
docker run --mount type=bind,source=/Users/username/pantheon/keyfile,target=/etc/pantheon/privacy_public_key pegasyseng/pantheon:latest
```
!!!note
Privacy is under development and will be available in v1.1.
## Credentials Files
Specify a [credentials file](../JSON-RPC-API/Authentication.md#credentials-file) for JSON-RPC API [authentication](../JSON-RPC-API/Authentication.md).

@ -118,9 +118,6 @@ The `ETH`, `NET`, and `WEB3` API methods are enabled by default.
Use the [`--rpc-http-api`](../Reference/Pantheon-CLI-Syntax.md#rpc-http-api) or [`--rpc-ws-api`](../Reference/Pantheon-CLI-Syntax.md#rpc-ws-api)
options to enable the `ADMIN`, `CLIQUE`, `DEBUG`, `EEA`, `IBFT`, `MINER`, `PERM`, and `TXPOOL` API methods.
!!!note
EEA methods are for privacy features. Privacy features are under development and will be available in v1.1.
## Block Parameter
When you make requests that might have different results depending on the block accessed,

@ -3,9 +3,6 @@ description: Privacy
# Privacy
!!!note
Privacy is under development and will be available in v1.1.
Privacy in Pantheon refers to the ability to keep transactions private between the involved parties.
Other parties cannot access the transaction content, sending party, or list of participating parties.

@ -3,9 +3,6 @@ description: Private Transaction Processing
# Processing Private Transactions
!!!note
Privacy is under development and will be available in v1.1.
Processing private transactions involves the following:
- **Precompiled Contract**: Smart contract compiled from the source language to EVM bytecode and stored by an

@ -1,352 +0,0 @@
## Start Pantheon with Privacy
The EEA methods are not enabled by default, follow the steps above to
use the command line options. Pantheon/Enclave(Orion) needs to be started
when using privacy.
### Pantheon
#### rpc-http-api
```bash tab="Example Command Line"
--rpc-http-api=EEA
```
```bash tab="Example Configuration File"
rpc-http-api=["EEA"]
```
Comma-separated APIs to enable on the HTTP JSON-RPC channel.
When you use this option, the `--rpc-http-enabled` option must also be specified.
The available API options are: `ADMIN`, `ETH`, `NET`, `WEB3`, `CLIQUE`, `IBFT`, `PERM`, `DEBUG`, `MINER`, and `EEA`.
The default is: `ETH`, `NET`, `WEB3`.
!!!note
EEA methods are for privacy features. Privacy features are under development and will be available in v1.1.
!!!tip
The singular `--rpc-http-api` and plural `--rpc-http-apis` are available and are just two
names for the same option.
#### privacy-enabled
```bash tab="Example Command Line"
--privacy-enabled=true
```
```bash tab="Example Configuration File"
privacy-enabled=true
```
Set to enable private transactions.
The default is false.
!!!note
Privacy is under development and will be available in v1.1.
#### privacy-precompiled-address
```bash tab="Example Command Line"
--privacy-precompiled-address=125
```
```bash tab="Example Configuration File"
privacy-precompiled-address=125
```
Address to which the privacy pre-compiled contract is mapped.
The default is 126.
!!!note
Privacy is under development and will be available in v1.1.
### Enclave (Orion)
#### privacy-public-key-file
```bash tab="Syntax"
--privacy-public-key-file=<privacyPublicKeyFile>
```
Path to the public key for the enclave.
!!!note
Privacy is under development and will be available in v1.1.
!!!note
This option is not used when running Pantheon from the [Docker image](../Getting-Started/Run-Docker-Image.md#privacy-public-key-file).
#### privacy-url
```bash tab="Syntax"
--privacy-url=<privacyUrl>
```
URL on which the Enclave is running.
!!!note
Privacy is under development and will be available in v1.1.
### Privacy JSON-RPC API method
The [EEA methods](../Reference/JSON-RPC-API-Methods.md#eea_sendRawTransaction) were created to
provide and support privacy.
### Set-up Privacy
## Prerequisites
[Pantheon](../Installation/Install-Binaries.md)
[Curl (or similar web service client)](https://curl.haxx.se/download.html)
## Steps
To create a private network:
1. [Create Folders](#1-create-folders)
2. [Create Genesis File](#2-create-genesis-file)
3. [Start instances of Orion for each node](#3-start-instances-of-orion-for-each-node)
4. [Get Public Key of First Node](#4-get-public-key-of-first-node)
5. [Start First Node as Bootnode](#5-restart-first-node-as-bootnode)
6. [Start Node-2](#6-start-node-2)
7. [Start Node-3-non-privacy](#7-start-node-3)
8. [Confirm the private network is working](#8-confirm-private-network-is-working)
9. [Create a Private Transaction between Node-1 with Node-2](#9-create-a-private-transaction-node-1-with-node-2)
10. [Confirm Node-3 can't interact with private Transaction](#10-confirm-node-3-can't-interact-with-private-transaction)
### 1. Create Folders
Each node requires a data directory for the blockchain data. When the
node is started, the node key is saved in this directory.
Create directories for your private network, each of the three nodes, and a data directory for each node:
```bash
Private-Network/
├── Node-1
   ├── Node-1-data-path
├── Node-2
   ├── Node-2-data-path
└── Node-3-non-privacy
├── Node-3-data-path
```
### 2. Create Genesis File
The genesis file defines the genesis block of the blockchain (that is, the initial state of the blockchain).
The genesis file includes entries for configuring the blockchain such as the mining difficulty and initial
accounts and balances.
All nodes in a network must use the same genesis file. The [network ID](../Configuring-Pantheon/NetworkID-And-ChainID.md)
defaults to the `chainID` in the genesis file. The `fixeddifficulty` enables blocks to be mined quickly.
Copy the following genesis definition to a file called `privateNetworkGenesis.json` and save it in the `Private-Network` directory:
```json
{
"config": {
"constantinoplefixblock": 0,
"ethash": {
"fixeddifficulty": 1000
},
"chainID": 1981
},
"nonce": "0x42",
"gasLimit": "0x1000000",
"difficulty": "0x10000",
"alloc": {
"fe3b557e8fb62b89f4916b721be55ceb828dbd73": {
"privateKey": "8f2a55949038a9610f50fb23b5883af3b4ecb3c3bb792cbcefbd1542c692be63",
"comment": "private key and this comment are ignored. In a real chain, the private key should NOT be stored",
"balance": "0xad78ebc5ac6200000"
},
"f17f52151EbEF6C7334FAD080c5704D77216b732": {
"privateKey": "ae6ae8e5ccbfb04590405997ee2d52d2b330726137b875053c36d94e974d162f",
"comment": "private key and this comment are ignored. In a real chain, the private key should NOT be stored",
"balance": "90000000000000000000000"
}
}
}
```
!!! warning
Do not use the accounts in the genesis file above on mainnet or any public network except for testing.
The private keys are displayed so the accounts are not secure.
### 3. Start instances of Orion for each node
Download and install [*Orion*](https://github.com/PegaSysEng/orion/blob/master/documentation/install/running.md)
to be used as an enclave to store and communicate the private transactions in Pantheon.
We can generate key pairs for Orion to use using the following command `orion -f foo`. This will generate
a public-private key pair which will be used to connect to Orion instance. The public key generated
link the Pantheon node to Orion instance.
Refer to [Configuring Orion](https://github.com/PegaSysEng/orion/blob/master/documentation/install/configure.md)
for a detailed configuration options.
Start one instance of Orion for each Pantheon node which we intend to perform private transactions using
`orion foo.conf`
### 4. Get Public Key of First Node
To enable nodes to discover each other, a network requires one or more nodes to be bootnodes.
For this private network, we will use Node-1 as the bootnode. This requires obtaining the public key for the [enode URL](../Configuring-Pantheon/Node-Keys.md#enode-url).
In the `Node-1` directory, use the [`public-key` subcommand](../Reference/Pantheon-CLI-Syntax.md#public-key) to write
the [node public key](../Configuring-Pantheon/Node-Keys.md#node-public-key) to the specified file (`publicKeyNode1` in this example):
```bash tab="MacOS"
pantheon --data-path=Node-1-data-path --genesis-file=../privateNetworkGenesis.json public-key export --to=Node-1-data-path/publicKeyNode1
```
```bash tab="Windows"
pantheon --data-path=Node-1-data-path --genesis-file=..\privateNetworkGenesis.json public-key export --to=Node-1-data-path\publicKeyNode1
```
!!!note
The [`--data-path`](../Reference/Pantheon-CLI-Syntax.md#data-path) and [`--genesis-file`](../Reference/Pantheon-CLI-Syntax.md#genesis-file)
options are not used when running Pantheon from the [Docker image](../Getting-Started/Run-Docker-Image.md).
Use a bind mount to [specify a configuration file with Docker](../Getting-Started/Run-Docker-Image.md#custom-genesis-file)
and volume to [specify the data directory](../Getting-Started/Run-Docker-Image.md#data-directory).
Your node 1 directory now contains:
```bash
├── Node-1
   ├── Node-1-data-path
├── database
      ├── key
      ├── publicKeyNode1
```
The `database` directory contains the blockchain data.
### 5. Start First Node as Bootnode
Start Node-1:
```bash tab="MacOS"
pantheon --data-path=Node-1-data-path --genesis-file=../privateNetworkGenesis.json --bootnodes
--miner-enabled --miner-coinbase fe3b557e8fb62b89f4916b721be55ceb828dbd73 --rpc-http-enabled
--host-whitelist=* --rpc-http-cors-origins="all" --privacy-enabled=true --privacy-precompiled-address=125
--privacy-url=127.0.0.1:8888 --privacy-public-key-file=../pathToOrion1PublicKey.pub --rpc-http-api=EEA
```
```bash tab="Windows"
pantheon --data-path=Node-1-data-path --genesis-file=..\privateNetworkGenesis.json --bootnodes
--miner-enabled --miner-coinbase fe3b557e8fb62b89f4916b721be55ceb828dbd73 --rpc-http-enabled
--host-whitelist=* --rpc-http-cors-origins="all" --privacy-enabled=true --privacy-precompiled-address=125
--privacy-url=127.0.0.1:8888 --privacy-public-key-file=..\pathToOrion1PublicKey.pub --rpc-http-api=EEA
```
The command line specifies:
* No arguments for the [`--bootnodes`](../Reference/Pantheon-CLI-Syntax.md#bootnodes) option because this is your bootnode.
* Mining is enabled and the account to which mining rewards are paid using the [`--miner-enabled`](../Reference/Pantheon-CLI-Syntax.md#miner-enabled)
and [`--miner-coinbase`](../Reference/Pantheon-CLI-Syntax.md#miner-coinbase) options.
* JSON-RPC API is enabled using the [`--rpc-http-enabled`](../Reference/Pantheon-CLI-Syntax.md#rpc-http-enabled) option.
* All hosts can access the HTTP JSON-RPC API using the [`--host-whitelist`](../Reference/Pantheon-CLI-Syntax.md#host-whitelist) option.
* All domains can access the node using the HTTP JSON-RPC API using the [`--rpc-http-cors-origins`](../Reference/Pantheon-CLI-Syntax.md#rpc-http-cors-origins) option.
* [`--privacy-enabled=true`](../Reference/Pantheon-CLI-Syntax.md#privacy-enabled)
set true to enable the privacy.
* Changes the default Privacy PreCompiled address
[`--privacy-precompiled-address=125`](../Reference/Pantheon-CLI-Syntax.md#privacy-precompiled-address)
* Setup the enclave(orion) URL
[`--privacy-url=127.0.0.1:8888`](../Reference/Pantheon-CLI-Syntax.md#privacy-url)
* Pass the enclave(orion) public Key
[`--privacy-public-key-file`](../Reference/Pantheon-CLI-Syntax.md#privacy-public-key-file)
* Enable EEA methods
[`--rpc-http-api=EEA`](../Reference/Pantheon-CLI-Syntax.md#rpc-http-api)
!!! info The miner coinbase account is one of the accounts defined in
the genesis file.
!!! info The Privacy PreCompiled address need to be
the same address for each node interacting through the private
transaction.
### 6. Start Node-2
You need the [enode URL](../Configuring-Pantheon/Node-Keys.md#enode-url) for Node-1 to specify Node-1 as the bootnode for Node-2 and Node-3.
Start another terminal, change to the `Node-2` directory and start Node-2 replacing the enode URL with your bootnode:
```bash tab="MacOS"
pantheon --data-path=Node-2-data-path --genesis-file=../privateNetworkGenesis.json
--bootnodes="enode://<node public key ex 0x>@127.0.0.1:30303" --p2p-port=30304
--privacy-enabled=true --privacy-precompiled-address=125
--privacy-url=127.0.0.1:8888 --privacy-public-key-file=../pathToOrion2PublicKey.pub --rpc-http-api=EEA
```
```bash tab="Windows"
pantheon --data-path=Node-2-data-path --genesis-file=..\privateNetworkGenesis.json --bootnodes="enode://<node public key ex 0x>@127.0.0.1:30303" --p2p-port=30304
--privacy-enabled=true --privacy-precompiled-address=125 --privacy-url=127.0.0.1:8888 --privacy-public-key-file=..\pathToOrion2PublicKey.pub --rpc-http-api=EEA
```
The command line specifies:
* Different port to Node-1 for P2P peer discovery using the [`--p2p-port`](../Reference/Pantheon-CLI-Syntax.md#p2p-port) option.
* Enode URL for Node-1 using the [`--bootnodes`](../Reference/Pantheon-CLI-Syntax.md#bootnodes) option.
* Data directory for Node-2 using the [`--data-path`](../Reference/Pantheon-CLI-Syntax.md#data-path) option.
* Genesis file as for Node-1.confirm-private-network-is-working
* [`--privacy-enabled=true`](../Reference/Pantheon-CLI-Syntax.md#privacy-enabled)
set true to enable privacy.
* Changes the default Privacy PreCompiled address
[`--privacy-precompiled-address=125`](../Reference/Pantheon-CLI-Syntax.md#privacy-precompiled-address)
* Setup the enclave(orion) URL
[`--privacy-url=127.0.0.1:8888`](../Reference/Pantheon-CLI-Syntax.md#privacy-url)
* Enable EEA methods
[`--rpc-http-api=EEA`](../Reference/Pantheon-CLI-Syntax.md#rpc-http-api)
### 7. Start Node-3
Start another terminal, change to the `Node-3` directory and start Node-3 replacing the enode URL with your bootnode:
```bash tab="MacOS"
pantheon --data-path=Node-3-data-path --genesis-file=../privateNetworkGenesis.json
--bootnodes="enode://<node public key ex 0x>@127.0.0.1:30303" --p2p-port30305
```
```bash tab="Windows"
pantheon --data-path=Node-3-data-path --genesis-file=..\privateNetworkGenesis.json
--bootnodes="enode://<node public key ex 0x>@127.0.0.1:30303" --p2p-port=30305
```
The command line specifies:
* Different port to Node-1 and Node-2 for P2P peer discovery.
* Data directory for Node-3 using the [`--data-path`](../Reference/Pantheon-CLI-Syntax.md#data-path) option.
* Bootnode and genesis file as for Node-2.
* Without privacy commandline.
### 8. Confirm Private Network is Working
Start another terminal, use curl to call the JSON-RPC API [`net_peerCount`](../Reference/JSON-RPC-API-Methods.md#net_peercount) method and confirm the nodes are functioning as peers:
```bash
curl -X POST --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":1}' localhost:8545
```
The result confirms Node-1 (the node running the JSON-RPC service) has two peers (Node-2 and Node-3):
```json
{
"jsonrpc" : "2.0",
"id" : 1,
"result" : "0x2"
}
```
### 9. Create a Private Transaction between Node-1 with Node-2
### 10. Confirm Node-3 can't interact with private Transaction
!!!note EEA methods are for privacy features. Privacy features are under development and will be available in v1.1.

@ -2586,10 +2586,6 @@ None
## EEA Methods
!!!note
EEA methods are for [privacy](../Privacy/Privacy-Overview.md) features. Privacy features are under
development and will be available in v1.1.
!!! note
The `EEA` API methods are not enabled by default. Use the [`--rpc-http-api`](Pantheon-CLI-Syntax.md#rpc-http-api)
or [`--rpc-ws-api`](Pantheon-CLI-Syntax.md#rpc-ws-api) options to enable the `EEA` API methods.

@ -682,11 +682,8 @@ Set to enable contract-based node level permissions. Default is `false`.
privacy-enabled=false
```
Set to enable private transactions.
The default is false.
!!!note
Privacy is under development and will be available in v1.1.
Set to enable [private transactions](../Privacy/Privacy-Overview.md).
The default is false.
### privacy-precompiled-address
@ -694,11 +691,8 @@ The default is false.
--privacy-precompiled-address=<privacyPrecompiledAddress>
```
Address to which the privacy pre-compiled contract is mapped.
The default is 126.
!!!note
Privacy is under development and will be available in v1.1.
Address to which the [privacy pre-compiled contract](../Privacy/Private-Transaction-Processing.md) is mapped.
The default is 126.
### privacy-public-key-file
@ -706,10 +700,15 @@ The default is 126.
--privacy-public-key-file=<privacyPublicKeyFile>
```
Path to the public key for the enclave.
```bash tab="Example Command Line"
--privacy-public-key-file=Orion/nodeKey.pub
```
```bash tab="Example Configuration File"
privacy-public-key-file="Orion/nodeKey.pub"
```
!!!note
Privacy is under development and will be available in v1.1.
Path to the [public key of the Orion node](../Privacy/Privacy-Overview.md#pantheon-and-orion-keys).
!!!note
This option is not used when running Pantheon from the [Docker image](../Getting-Started/Run-Docker-Image.md#privacy-public-key-file).
@ -720,10 +719,15 @@ Path to the public key for the enclave.
--privacy-url=<privacyUrl>
```
URL on which enclave is running.
```bash tab="Example Command Line"
--privacy-url=http://127.0.0.1:8888
```
!!!note
Privacy is under development and will be available in v1.1.
```bash tab="Example Configuration File"
privacy-url="http://127.0.0.1:8888"
```
URL on which the [Orion node](../Privacy/Configuring-Privacy.md#4-create-orion-configuration-files) is running.
### rpc-http-api
@ -744,9 +748,6 @@ When you use this option, the `--rpc-http-enabled` option must also be specified
The available API options are: `ADMIN`, `ETH`, `NET`, `WEB3`, `CLIQUE`, `IBFT`, `PERM`, `DEBUG`, `MINER`, `EEA`, and `TXPOOL`.
The default is: `ETH`, `NET`, `WEB3`.
!!!note
EEA methods are for privacy features. Privacy features are under development and will be available in v1.1.
!!!tip
The singular `--rpc-http-api` and plural `--rpc-http-apis` are available and are two
names for the same option.
@ -906,9 +907,6 @@ When you use this option, the `--rpc-ws-enabled` option must also be specified.
The available API options are: `ADMIN`,`ETH`, `NET`, `WEB3`, `CLIQUE`, `IBFT`, `PERM', DEBUG`, `MINER`, `EEA`, and `TXPOOL`.
The default is: `ETH`, `NET`, `WEB3`.
!!!note
EEA methods are for privacy features. Privacy features are under development and will be available in v1.1.
!!!tip
The singular `--rpc-ws-api` and plural `--rpc-ws-apis` are available and are just two
names for the same option.

@ -88,6 +88,7 @@ nav:
- Privacy:
- Overview: Privacy/Privacy-Overview.md
- Processing Private Transactions: Privacy/Private-Transaction-Processing.md
- Configuring a Privacy-Enabled Network: Privacy/Configuring-Privacy.md
- Permissions:
- Overview: Permissions/Permissioning-Overview.md
- Local Permissions: Permissions/Local-Permissioning.md

Loading…
Cancel
Save