diff --git a/docs/Deploying-Pantheon/High-Availability.md b/docs/Deploying-Pantheon/High-Availability.md index 99c69a36e7..7f4cacddb0 100644 --- a/docs/Deploying-Pantheon/High-Availability.md +++ b/docs/Deploying-Pantheon/High-Availability.md @@ -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. diff --git a/docs/Permissions/Permissioning-Overview.md b/docs/Permissions/Permissioning-Overview.md index b2bbf6edc4..436abade97 100644 --- a/docs/Permissions/Permissioning-Overview.md +++ b/docs/Permissions/Permissioning-Overview.md @@ -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 diff --git a/docs/Privacy/Privacy-Overview.md b/docs/Privacy/Explanation/Privacy-Overview.md similarity index 94% rename from docs/Privacy/Privacy-Overview.md rename to docs/Privacy/Explanation/Privacy-Overview.md index 01aa841124..5cdc299aee 100644 --- a/docs/Privacy/Privacy-Overview.md +++ b/docs/Privacy/Explanation/Privacy-Overview.md @@ -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 @@ -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 @@ -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, diff --git a/docs/Privacy/Private-Transaction-Processing.md b/docs/Privacy/Explanation/Private-Transaction-Processing.md similarity index 91% rename from docs/Privacy/Private-Transaction-Processing.md rename to docs/Privacy/Explanation/Private-Transaction-Processing.md index ebda2a0bf0..9aa175d82c 100644 --- a/docs/Privacy/Private-Transaction-Processing.md +++ b/docs/Privacy/Explanation/Private-Transaction-Processing.md @@ -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 @@ -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). diff --git a/docs/Privacy/Private-Transactions/Creating-Sending-Private-Transactions.md b/docs/Privacy/How-To/Creating-Sending-Private-Transactions.md similarity index 100% rename from docs/Privacy/Private-Transactions/Creating-Sending-Private-Transactions.md rename to docs/Privacy/How-To/Creating-Sending-Private-Transactions.md diff --git a/docs/Privacy/Private-Transactions/eeajs.md b/docs/Privacy/How-To/eeajs.md similarity index 100% rename from docs/Privacy/Private-Transactions/eeajs.md rename to docs/Privacy/How-To/eeajs.md diff --git a/docs/Privacy/Configuring-Privacy.md b/docs/Privacy/Tutorials/Configuring-Privacy.md similarity index 81% rename from docs/Privacy/Configuring-Privacy.md rename to docs/Privacy/Tutorials/Configuring-Privacy.md index 880e881fc6..5a6072a176 100644 --- a/docs/Privacy/Configuring-Privacy.md +++ b/docs/Privacy/Tutorials/Configuring-Privacy.md @@ -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. @@ -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 @@ -145,10 +145,10 @@ pantheon --data-path=data --genesis-file=..\ibftGenesis.json --bootnodes= ``` -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 @@ -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 @@ -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 diff --git a/docs/Privacy/Privacy-Quickstart.md b/docs/Tutorials/Privacy-Quickstart.md similarity index 96% rename from docs/Privacy/Privacy-Quickstart.md rename to docs/Tutorials/Privacy-Quickstart.md index 8594efc0cc..b17028dca4 100644 --- a/docs/Privacy/Privacy-Quickstart.md +++ b/docs/Tutorials/Privacy-Quickstart.md @@ -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 @@ -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 { diff --git a/docs/Using-Pantheon/Account-Management.md b/docs/Using-Pantheon/Account-Management.md index 693d8428d9..d5cea14988 100644 --- a/docs/Using-Pantheon/Account-Management.md +++ b/docs/Using-Pantheon/Account-Management.md @@ -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) diff --git a/mkdocs.yml b/mkdocs.yml index 19bf4bd096..fc56a9050f 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -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 @@ -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