Skip to content
This repository has been archived by the owner on Sep 26, 2019. It is now read-only.

Commit

Permalink
Reorganised privacy section (#1732)
Browse files Browse the repository at this point in the history
  • Loading branch information
MadelineMurray authored Jul 22, 2019
1 parent a6fcd16 commit 6110cf4
Show file tree
Hide file tree
Showing 12 changed files with 41 additions and 39 deletions.
2 changes: 1 addition & 1 deletion docs/Deploying-Pantheon/High-Availability.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ are sent to multiple nodes, the [`eth_getTransactionCount`](../Reference/Pantheo
results can be incorrect.

!!! note
If using [private transactions](../Privacy/Privacy-Overview.md), `eea_getTransactionCount` is used to obtain
If using [private transactions](../Privacy/Explanation/Privacy-Overview.md), `eea_getTransactionCount` is used to obtain
the account nonce and [`eea_sendRawTransaction`](../Reference/Pantheon-API-Methods.md#eea_sendrawtransaction)
to send private transactions.

Expand Down
2 changes: 1 addition & 1 deletion docs/Permissions/Permissioning-Overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ account permissioning on the network.
follow the rules. A single bad actor can decide not to follow the rules. Nodes can take action
to prevent the bad actor adding to the chain but they cannot prevent the bad actor from allowing access to the chain.

Pantheon also implements [privacy](../Privacy/Privacy-Overview.md).
Pantheon also implements [privacy](../Privacy/Explanation/Privacy-Overview.md).

## Node Permissioning

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@ Other parties cannot access the transaction content, sending party, or list of p

!!! important
For production systems requiring private transactions, we recommend using a network
with a consensus mechanism supporting transaction finality. For example, [IBFT 2.0](../Consensus-Protocols/IBFT.md).
with a consensus mechanism supporting transaction finality. For example, [IBFT 2.0](../../Consensus-Protocols/IBFT.md).

## Private Transaction Manager

Pantheon uses a Private Transaction Manager to implement privacy. For example, [Orion](http://docs.orion.pegasys.tech).
Each Pantheon node that sends or receives private transactions requires an associated Orion node.

![Orion Nodes](../images/OrionNodes.png)
![Orion Nodes](../../images/OrionNodes.png)

Private transactions are passed from the Pantheon node to the associated Orion node. The Orion node
encrypts and directly distributes (that is, point to point) the private transaction to Orion nodes
Expand Down Expand Up @@ -48,7 +48,7 @@ Private transactions have additional attributes to public Ethereum transactions:
Pantheon and Orion nodes both have public/private key pairs identifying them. The private transaction
submitted from the Pantheon node to the Orion node is signed with the Pantheon node private key. The
`privateFrom` and `privateFor` attributes specified in the RLP-encoded transaction string for
[`eea_sendRawTransaction`](../Reference/Pantheon-API-Methods.md#eea_sendrawtransaction) are the public keys
[`eea_sendRawTransaction`](../../Reference/Pantheon-API-Methods.md#eea_sendrawtransaction) are the public keys
of the Orion nodes sending and receiving the transaction.

!!! important
Expand All @@ -64,7 +64,7 @@ The Pantheon nodes maintain the public world state for the blockchain and a priv
The private states contain data that is not shared in the globally replicated world state. Private transactions read
and write to the private world state for the privacy group, and read from the public world state.

![Privacy Groups](../images/PrivacyGroups.png)
![Privacy Groups](../../images/PrivacyGroups.png)

!!! note
The Orion nodes are not shown above for clarity only. To send private transactions,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ Ethereum node for later execution.

- **Privacy Marker Transaction**: Public Ethereum transaction with a payload of the transaction hash of the
private transaction. The `to` attribute of the Privacy Marker Transaction is the address of the privacy precompile contract.
The Privacy Marker Transaction is signed with the [Ethereum node private key](../Configuring-Pantheon/Node-Keys.md#node-private-key).
The Privacy Marker Transaction is signed with the [Ethereum node private key](../../Configuring-Pantheon/Node-Keys.md#node-private-key).

Private transactions are processed as illustrated and described below.

![Processing Private Transctions](../images/PrivateTransactionProcessing.png)
![Processing Private Transctions](../../images/PrivateTransactionProcessing.png)

1. A private transaction is submitted using [eea_sendRawTransaction](../Reference/Pantheon-API-Methods.md#eea_sendrawtransaction).
1. A private transaction is submitted using [eea_sendRawTransaction](../../Reference/Pantheon-API-Methods.md#eea_sendrawtransaction).
The signed transaction includes transaction attributes that are specific to private transactions:

* `privateFor` specifies the list of recipients
Expand Down Expand Up @@ -57,4 +57,4 @@ the private world state, and read from the public world state.

!!! important
For production systems requiring private transactions, we recommend using a network
with a consensus mechanism supporting transaction finality. For example, [IBFT 2.0](../Consensus-Protocols/IBFT.md).
with a consensus mechanism supporting transaction finality. For example, [IBFT 2.0](../../Consensus-Protocols/IBFT.md).
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ Configuring a network that supports private transactions requires starting an Or
Pantheon node. Pantheon command line options associate the Pantheon node with the Orion node.

This tutorial assumes you have completed setting up an IBFT 2.0 network to the point where you have
[created the genesis file](../Tutorials/Create-IBFT-Network.md#5-create-genesis-file). If not, complete
steps 1 to 5 of the [Create an IBFT 2.0](../Tutorials/Create-IBFT-Network.md) tutorial before continuing.
[created the genesis file](../../Tutorials/Create-IBFT-Network.md#5-create-genesis-file). If not, complete
steps 1 to 5 of the [Create an IBFT 2.0](../../Tutorials/Create-IBFT-Network.md) tutorial before continuing.

!!! important
To support privacy, ensure your genesis file includes at least the `constantinopleFixBlock` milestone.
Expand Down Expand Up @@ -119,18 +119,18 @@ pantheon --data-path=data --genesis-file=..\ibftGenesis.json --rpc-http-enabled

The command line specifies privacy options:

* [`--privacy-enabled`](../Reference/Pantheon-CLI-Syntax.md#privacy-enabled) enables privacy
* [`--privacy-url`](../Reference/Pantheon-CLI-Syntax.md#privacy-url) specifies the Orion node URL (`clienturl` in `orion.conf`)
* [`--privacy-public-key-file`](../Reference/Pantheon-CLI-Syntax.md#privacy-public-key-file) specifies the file containing
* [`--privacy-enabled`](../../Reference/Pantheon-CLI-Syntax.md#privacy-enabled) enables privacy
* [`--privacy-url`](../../Reference/Pantheon-CLI-Syntax.md#privacy-url) specifies the Orion node URL (`clienturl` in `orion.conf`)
* [`--privacy-public-key-file`](../../Reference/Pantheon-CLI-Syntax.md#privacy-public-key-file) specifies the file containing
Orion node public key (created in [3. Generate Orion Keys](#3-generate-orion-keys))
* [`--rpc-http-api`](../Reference/Pantheon-CLI-Syntax.md#rpc-http-api) includes `EEA` in the list of
* [`--rpc-http-api`](../../Reference/Pantheon-CLI-Syntax.md#rpc-http-api) includes `EEA` in the list of
JSON-RPC APIs to enable privacy JSON-RPC API methods.
* [`--min-gas-price`](../Reference/Pantheon-CLI-Syntax.md#min-gas-price) set to 0 for a [free gas network](../Configuring-Pantheon/FreeGas.md).
* [`--min-gas-price`](../../Reference/Pantheon-CLI-Syntax.md#min-gas-price) set to 0 for a [free gas network](../../Configuring-Pantheon/FreeGas.md).

When the node starts, the [enode URL](../Configuring-Pantheon/Node-Keys.md#enode-url) is displayed.
When the node starts, the [enode URL](../../Configuring-Pantheon/Node-Keys.md#enode-url) is displayed.
Copy the enode URL to specify Node-1 as the bootnode in the following steps.

![Node 1 Enode URL](../images/EnodeStartup.png)
![Node 1 Enode URL](../../images/EnodeStartup.png)

### 7. Start Pantheon Node-2

Expand All @@ -145,10 +145,10 @@ pantheon --data-path=data --genesis-file=..\ibftGenesis.json --bootnodes=<Node-1
```

The command line specifies the same options as for Node-1 with different ports and Orion node URL. The
[`--bootnodes`](../Reference/Pantheon-CLI-Syntax.md#bootnodes) option specifies the enode URL for Node-1.
[`--bootnodes`](../../Reference/Pantheon-CLI-Syntax.md#bootnodes) option specifies the enode URL for Node-1.

!!!note
When running Pantheon from the [Docker image](../Getting-Started/Run-Docker-Image.md), [expose ports](../Getting-Started/Run-Docker-Image.md#exposing-ports).
When running Pantheon from the [Docker image](../../Getting-Started/Run-Docker-Image.md), [expose ports](../../Getting-Started/Run-Docker-Image.md#exposing-ports).

### 8. Start Pantheon Node-3

Expand All @@ -163,5 +163,5 @@ pantheon --data-path=data --genesis-file=..\ibftGenesis.json --bootnodes=<Node-1
```

The command line specifies the same options as for Node-1 with different ports and Orion node URL. The
[`--bootnodes`](../Reference/Pantheon-CLI-Syntax.md#bootnodes) option specifies the enode URL for Node-1.
[`--bootnodes`](../../Reference/Pantheon-CLI-Syntax.md#bootnodes) option specifies the enode URL for Node-1.

Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ description: web3.js-eea client library multinode example

# Using Multinode Example in web3.js-eea Client Library

To use the examples provided in EEA JS library with [your privacy network](../Configuring-Privacy.md):
To use the examples provided in EEA JS library with [your privacy network](Configuring-Privacy.md):

1. Clone the **PegaSysEng/eeajs** repository:
```bash
Expand Down
8 changes: 4 additions & 4 deletions docs/Reference/Pantheon-CLI-Syntax.md
Original file line number Diff line number Diff line change
Expand Up @@ -932,7 +932,7 @@ PANTHEON_PRIVACY_ENABLED=false
privacy-enabled=false
```

Set to enable [private transactions](../Privacy/Privacy-Overview.md).
Set to enable [private transactions](../Privacy/Explanation/Privacy-Overview.md).
The default is false.

### privacy-precompiled-address
Expand All @@ -941,7 +941,7 @@ The default is false.
--privacy-precompiled-address=<privacyPrecompiledAddress>
```

Address to which the [privacy pre-compiled contract](../Privacy/Private-Transaction-Processing.md) is mapped.
Address to which the [privacy pre-compiled contract](../Privacy/Explanation/Private-Transaction-Processing.md) is mapped.
The default is 126.

### privacy-public-key-file
Expand All @@ -962,7 +962,7 @@ PANTHEON_PRIVACY_PUBLIC_KEY_FILE=Orion/nodeKey.pub
privacy-public-key-file="Orion/nodeKey.pub"
```

Path to the [public key of the Orion node](../Privacy/Privacy-Overview.md#pantheon-and-orion-keys).
Path to the [public key of the Orion node](../Privacy/Explanation/Privacy-Overview.md#pantheon-and-orion-keys).

### privacy-url

Expand All @@ -982,7 +982,7 @@ PANTHEON_PRIVACY_URL=http://127.0.0.1:8888
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.
URL on which the [Orion node](../Privacy/Tutorials/Configuring-Privacy.md#4-create-orion-configuration-files) is running.

### revert-reason-enabled

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ description: Pantheon private network with privacy enabled quickstart tutorial
# Private Network with Privacy Enabled Quickstart Tutorial

The Private Network with Privacy Enabled Quickstart runs a private network of Pantheon and Orion nodes managed by Docker Compose.
It is an expanded version of the [Private Network Quickstart](../Tutorials/Private-Network-Quickstart.md).
It is an expanded version of the [Private Network Quickstart](Private-Network-Quickstart.md).

You can use the [Block Explorer](../Tutorials/Private-Network-Quickstart.md#block-explorer),
make [JSON-RPC requests](../Tutorials/Private-Network-Quickstart.md#run-json-rpc-requests), and
create [transactions using Metamask](../Tutorials/Private-Network-Quickstart.md#creating-a-transaction-using-metamask)
as described in the [Private Network Quickstart tutorial](../Tutorials/Private-Network-Quickstart.md).
as described in the [Private Network Quickstart tutorial](Private-Network-Quickstart.md).
This tutorial describes how to use the examples provided in the EEAJS library to [create and send private transactions](#send-private-transactions-and-read-values).

!!! important
Expand Down Expand Up @@ -143,7 +143,7 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","para
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0xe0776de9a9d4e30be0025c1308eed8bc45502cba9fe22c504a56e2fd95343e6f"],"id":1}' http://localhost:32771/jsonrpc
```
The transaction receipt for the [privacy marker transaction](Private-Transaction-Processing.md) is displayed with a `contractAddress` of `null`.
The transaction receipt for the [privacy marker transaction](../Privacy/Explanation/Private-Transaction-Processing.md) is displayed with a `contractAddress` of `null`.
```json
{
Expand Down
2 changes: 1 addition & 1 deletion docs/Using-Pantheon/Account-Management.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ In Pantheon, you can use the JSON-RPC methods:

* [`eth_getBalance`](../Reference/Pantheon-API-Methods.md#eth_getbalance) to obtain the account balance
* [`eth_sendRawTransaction`](../Reference/Pantheon-API-Methods.md#eth_sendrawtransaction) to transfer ether or create and interact with contracts (for more information, refer to [Transactions](Transactions/Transactions.md#transactions)).
* [`eea_sendRawTransaction`](../Reference/Pantheon-API-Methods.md#eea_sendrawtransaction) to send [private transactions](../Privacy/Private-Transactions/Creating-Sending-Private-Transactions.md).
* [`eea_sendRawTransaction`](../Reference/Pantheon-API-Methods.md#eea_sendrawtransaction) to send [private transactions](../Privacy/How-To/Creating-Sending-Private-Transactions.md).

!!! tip
[EthSigner](http://docs.ethsigner.pegasys.tech/en/latest/) implements [`eth_sendTransaction`](http://docs.ethsigner.pegasys.tech/en/latest/Using-EthSigner/Using-EthSigner/#eth_sendtransaction)
Expand Down
18 changes: 10 additions & 8 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ nav:
- Running Pantheon from Docker Image: Getting-Started/Run-Docker-Image.md
- Tutorials:
- Private Network Quickstart: Tutorials/Private-Network-Quickstart.md
- Private Network Quickstart for Private Transactions: Tutorials/Privacy-Quickstart.md
- Private Network Quickstart On Azure: Tutorials/Azure/Azure-Private-Network-Quickstart.md
- Create a Private Network using Ethash (Pow): Tutorials/Create-Private-Network.md
- Create a Private Network using Clique (PoA): Tutorials/Create-Private-Clique-Network.md
Expand Down Expand Up @@ -98,14 +99,15 @@ nav:
- IBFT 2.0: Consensus-Protocols/IBFT.md
- Quorum IBFT 1.0: Consensus-Protocols/QuorumIBFT.md
- Privacy:
- Overview: Privacy/Privacy-Overview.md
- Processing Private Transactions: Privacy/Private-Transaction-Processing.md
- Configuring a Privacy-Enabled Network: Privacy/Configuring-Privacy.md
- Creating and Sending Private Transactions:
- Overview: Privacy/Private-Transactions/Creating-Sending-Private-Transactions.md
- web3.js-eea Client Library: Privacy/Private-Transactions/eeajs.md
- web3.js-eea Multinode Example: Privacy/Private-Transactions/eeajs-Multinode-example.md
- Quickstart for Private Transactions: Privacy/Privacy-Quickstart.md
- Tutorials:
- Configuring a Privacy-Enabled Network: Privacy/Tutorials/Configuring-Privacy.md
- Using web3.js-eea Multinode Example: Privacy/Tutorials/eeajs-Multinode-example.md
- How To:
- Create and Send Private Transactions: Privacy/How-To/Creating-Sending-Private-Transactions.md
- Use the web3.js-eea Client Library: Privacy/How-To/eeajs.md
- Explanation:
- Privacy Overview: Privacy/Explanation/Privacy-Overview.md
- Processing Private Transactions: Privacy/Explanation/Private-Transaction-Processing.md
- Permissions:
- Overview: Permissions/Permissioning-Overview.md
- Local Permissions: Permissions/Local-Permissioning.md
Expand Down

0 comments on commit 6110cf4

Please sign in to comment.