From 0a59935664a8992583c6fa43d1693a22442f4e04 Mon Sep 17 00:00:00 2001 From: Krish1979 <39480483+Krish1979@users.noreply.github.com> Date: Mon, 20 May 2019 12:41:37 +0100 Subject: [PATCH 1/9] Update mkdocs.yml --- mkdocs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/mkdocs.yml b/mkdocs.yml index 1c5ea2ec8..669f42642 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -52,6 +52,7 @@ nav: - How it works: Privacy/Constellation/How constellation works.md - Sample Configuration: Privacy/Constellation/Sample Configuration.md - Running Constellation: Privacy/Constellation/Installation & Running.md + - FAQ: FAQ.md theme: name: 'material' From 0957ec24863b21feecf52840e701d3e6457a3b6f Mon Sep 17 00:00:00 2001 From: Krish1979 <39480483+Krish1979@users.noreply.github.com> Date: Mon, 20 May 2019 12:42:36 +0100 Subject: [PATCH 2/9] Create FAQ.md --- docs/FAQ.md | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 docs/FAQ.md diff --git a/docs/FAQ.md b/docs/FAQ.md new file mode 100644 index 000000000..ca89eb04d --- /dev/null +++ b/docs/FAQ.md @@ -0,0 +1,50 @@ +* [I've ran into an issue with Quorum, where do I get support?](#faq0) +* [How does Quorum achieve Transaction Privacy?](#faq1) +* [How does Quorum achieve consensus on Private Transactions?](#faq2) +* [Are there any restrictions on the transaction size for private transactions (since they are encrypted)?](#faq3) +* [Should I include originating node in private transaction?](#faq4) +* [Is it possible to run a Quorum node without Transaction Manager?](#faq5) +* [Known Raft consensus node misconfiguration](#faq6) +* [Is there an official docker image for Quorum/Constellation/Tessera?](#faq7) +* [Can I mix Quorum nodes with different consensus configuration?](#faq8) + + +### I've ran into an issue with Quorum, where do I get support? +There are two places Quorum engineering team monitors on an on-going basis: issues in this and related repositories and on Quorum Slack. Quorum Slack is the best place to query the community and get immediate help. Auto-inviter is available [here](https://clh7rniov2.execute-api.us-east-1.amazonaws.com/Express/). + +### How does Quorum achieve Transaction Privacy? +Quorum achieves Transaction Privacy by: + 1. Enabling transaction Senders to create a private transaction by marking who is privy to that transaction via the `privateFor` parameter + 2. Replacing the payload of a private transaction with a hash of the encrypted payload, such that the original payload is not visible to participants who are not privy to the transaction + 3. Storing encrypted private data off-chain in a separate component called the Transaction Manager (provided by [Constellation](https://github.com/jpmorganchase/constellation) or [Tessera](https://github.com/jpmorganchase/tessera)). The Transaction Manager distributes the encrypted data to other parties that are privy to the transaction and returns the decrypted payload to those parties + +Please see the [[Transaction Processing & Privacy|Transaction Processing]] page for more info. + +### How does Quorum achieve consensus on Private Transactions? +In standard Ethereum, all nodes process all transactions and so each node has the same state root. In Quorum, nodes process all 'public' transactions (which might include reference data or market data contracts for example) but only process the private transactions that they are party to. + +Quorum nodes maintain two Patricia Merkle Tries: one for private state and one for public state. As a result, block validation includes a **state** check on the new-to-Quorum 'public state root'. Block validation also includes a check of the 'global Transaction hash', which is a hash of **all** Transactions in a block - private and public. This means that each node is able to validate that it has the same set of Transactions as other nodes. Since the EVM is provably deterministic through the synchronized public state root, and that the Private Transaction inputs are known to be in sync across nodes (global Transaction Hash), private state synchronization across nodes can be implied. In addition, Quorum provides an API call, `eth_storageRoot`, that returns the private state hash for a given transaction at a given block height, that can optionally be called at the application layer to specifically perform an off-chain state validation with a counterparty. + +Please see the [[Quorum Consensus|Quorum Consensus]] and [[Transaction Processing & Privacy|Transaction Processing]] pages for more info. + +### Are there any restrictions on the transaction size for private transactions (since they are encrypted)? +The only restriction is the gas limit on the transaction. Constellation/Tessera does not have a size limit (although maybe it should be possible to set one). If anything, performing large transactions as private transactions will improve performance because most of the network only sees hash digests. In terms of performance of transferring large data blobs between geographically distributed nodes, it would be equivalent performance to PGP encrypting the file and transferring it over http/https..so very fast. If you are doing sequential transactions then of course you will have to wait for those transfers, but there is no special overhead by the payload being large if you are doing separate/concurrent transactions, subject to network bandwidth limits. Constellation/Tessera does everything in parallel. + +### Should I include originating node in private transaction? +No, you should not. In Quorum, including originating node's `privateFor` will result in an error. If you would like to create a private contract that is visible to the originating node only please use this format: `privateFor: []` per https://github.com/jpmorganchase/quorum/pull/165 + +### Is it possible to run a Quorum node without Transaction Manager? +It is possible to run a node without a corresponding Transaction Manager, to do this instead of a matching Tessera/Constellation node's socket configuration should be set to `PRIVATE_CONFIG=ignore ...`. The node running such configuration is not going to broadcast matching private keys (please ensure that there is no transaction manager running for it) and will be unable to participate in any private transactions. + +### Known Raft consensus node misconfiguration +Please see https://github.com/jpmorganchase/quorum/issues/410 + +### Is there an official docker image for Quorum/Constellation/Tessera? +Yes! The [official docker containers](https://hub.docker.com/u/quorumengineering/): + +`quorumengineering/quorum:latest` +`quorumengineering/constellation:latest` +`quorumengineering/tessera:latest` + +### Can I mix Quorum nodes with different consensus configuration? +Unfortunately, that is not possible. Quorum nodes configured with raft will only be able to work correctly with other nodes running raft consensus. This applies to all other supported consensus algorithms. From bc68fc4dd433942d628c04c92dc511a7586a4e9f Mon Sep 17 00:00:00 2001 From: Krish1979 <39480483+Krish1979@users.noreply.github.com> Date: Mon, 20 May 2019 12:54:07 +0100 Subject: [PATCH 3/9] Update FAQ.md --- docs/FAQ.md | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/FAQ.md b/docs/FAQ.md index ca89eb04d..566a897e9 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -1,18 +1,18 @@ -* [I've ran into an issue with Quorum, where do I get support?](#faq0) -* [How does Quorum achieve Transaction Privacy?](#faq1) -* [How does Quorum achieve consensus on Private Transactions?](#faq2) -* [Are there any restrictions on the transaction size for private transactions (since they are encrypted)?](#faq3) -* [Should I include originating node in private transaction?](#faq4) -* [Is it possible to run a Quorum node without Transaction Manager?](#faq5) -* [Known Raft consensus node misconfiguration](#faq6) -* [Is there an official docker image for Quorum/Constellation/Tessera?](#faq7) -* [Can I mix Quorum nodes with different consensus configuration?](#faq8) +### [I've ran into an issue with Quorum, where do I get support?](#faq0) +### [How does Quorum achieve Transaction Privacy?](#faq1) +### [How does Quorum achieve consensus on Private Transactions?](#faq2) +### [Are there any restrictions on the transaction size for private transactions (since they are encrypted)?](#faq3) +### [Should I include originating node in private transaction?](#faq4) +### [Is it possible to run a Quorum node without Transaction Manager?](#faq5) +### [Known Raft consensus node misconfiguration](#faq6) +### [Is there an official docker image for Quorum/Constellation/Tessera?](#faq7) +### [Can I mix Quorum nodes with different consensus configuration?](#faq8) -### I've ran into an issue with Quorum, where do I get support? +#### I've ran into an issue with Quorum, where do I get support? There are two places Quorum engineering team monitors on an on-going basis: issues in this and related repositories and on Quorum Slack. Quorum Slack is the best place to query the community and get immediate help. Auto-inviter is available [here](https://clh7rniov2.execute-api.us-east-1.amazonaws.com/Express/). -### How does Quorum achieve Transaction Privacy? +#### How does Quorum achieve Transaction Privacy? Quorum achieves Transaction Privacy by: 1. Enabling transaction Senders to create a private transaction by marking who is privy to that transaction via the `privateFor` parameter 2. Replacing the payload of a private transaction with a hash of the encrypted payload, such that the original payload is not visible to participants who are not privy to the transaction @@ -20,31 +20,31 @@ Quorum achieves Transaction Privacy by: Please see the [[Transaction Processing & Privacy|Transaction Processing]] page for more info. -### How does Quorum achieve consensus on Private Transactions? +#### How does Quorum achieve consensus on Private Transactions? In standard Ethereum, all nodes process all transactions and so each node has the same state root. In Quorum, nodes process all 'public' transactions (which might include reference data or market data contracts for example) but only process the private transactions that they are party to. Quorum nodes maintain two Patricia Merkle Tries: one for private state and one for public state. As a result, block validation includes a **state** check on the new-to-Quorum 'public state root'. Block validation also includes a check of the 'global Transaction hash', which is a hash of **all** Transactions in a block - private and public. This means that each node is able to validate that it has the same set of Transactions as other nodes. Since the EVM is provably deterministic through the synchronized public state root, and that the Private Transaction inputs are known to be in sync across nodes (global Transaction Hash), private state synchronization across nodes can be implied. In addition, Quorum provides an API call, `eth_storageRoot`, that returns the private state hash for a given transaction at a given block height, that can optionally be called at the application layer to specifically perform an off-chain state validation with a counterparty. Please see the [[Quorum Consensus|Quorum Consensus]] and [[Transaction Processing & Privacy|Transaction Processing]] pages for more info. -### Are there any restrictions on the transaction size for private transactions (since they are encrypted)? +#### Are there any restrictions on the transaction size for private transactions (since they are encrypted)? The only restriction is the gas limit on the transaction. Constellation/Tessera does not have a size limit (although maybe it should be possible to set one). If anything, performing large transactions as private transactions will improve performance because most of the network only sees hash digests. In terms of performance of transferring large data blobs between geographically distributed nodes, it would be equivalent performance to PGP encrypting the file and transferring it over http/https..so very fast. If you are doing sequential transactions then of course you will have to wait for those transfers, but there is no special overhead by the payload being large if you are doing separate/concurrent transactions, subject to network bandwidth limits. Constellation/Tessera does everything in parallel. -### Should I include originating node in private transaction? +#### Should I include originating node in private transaction? No, you should not. In Quorum, including originating node's `privateFor` will result in an error. If you would like to create a private contract that is visible to the originating node only please use this format: `privateFor: []` per https://github.com/jpmorganchase/quorum/pull/165 -### Is it possible to run a Quorum node without Transaction Manager? +#### Is it possible to run a Quorum node without Transaction Manager? It is possible to run a node without a corresponding Transaction Manager, to do this instead of a matching Tessera/Constellation node's socket configuration should be set to `PRIVATE_CONFIG=ignore ...`. The node running such configuration is not going to broadcast matching private keys (please ensure that there is no transaction manager running for it) and will be unable to participate in any private transactions. -### Known Raft consensus node misconfiguration +#### Known Raft consensus node misconfiguration Please see https://github.com/jpmorganchase/quorum/issues/410 -### Is there an official docker image for Quorum/Constellation/Tessera? +#### Is there an official docker image for Quorum/Constellation/Tessera? Yes! The [official docker containers](https://hub.docker.com/u/quorumengineering/): `quorumengineering/quorum:latest` `quorumengineering/constellation:latest` `quorumengineering/tessera:latest` -### Can I mix Quorum nodes with different consensus configuration? +#### Can I mix Quorum nodes with different consensus configuration? Unfortunately, that is not possible. Quorum nodes configured with raft will only be able to work correctly with other nodes running raft consensus. This applies to all other supported consensus algorithms. From 48273602f5798a748c2a5b62d0080cfa03aa1a2f Mon Sep 17 00:00:00 2001 From: namtruong Date: Mon, 20 May 2019 13:44:45 +0100 Subject: [PATCH 4/9] update faq styling --- docs/FAQ.md | 81 +++++++++++++++++++++++------------------------------ 1 file changed, 35 insertions(+), 46 deletions(-) diff --git a/docs/FAQ.md b/docs/FAQ.md index 566a897e9..9c68f0598 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -1,50 +1,39 @@ -### [I've ran into an issue with Quorum, where do I get support?](#faq0) -### [How does Quorum achieve Transaction Privacy?](#faq1) -### [How does Quorum achieve consensus on Private Transactions?](#faq2) -### [Are there any restrictions on the transaction size for private transactions (since they are encrypted)?](#faq3) -### [Should I include originating node in private transaction?](#faq4) -### [Is it possible to run a Quorum node without Transaction Manager?](#faq5) -### [Known Raft consensus node misconfiguration](#faq6) -### [Is there an official docker image for Quorum/Constellation/Tessera?](#faq7) -### [Can I mix Quorum nodes with different consensus configuration?](#faq8) +??? question "I've ran into an issue with Quorum, where do I get support?" + There are two places Quorum engineering team monitors on an on-going basis: issues in this and related repositories and on Quorum Slack. Quorum Slack is the best place to query the community and get immediate help. Auto-inviter is available [here](https://clh7rniov2.execute-api.us-east-1.amazonaws.com/Express/). +??? question "How does Quorum achieve Transaction Privacy?" + Quorum achieves Transaction Privacy by: + + 1. Enabling transaction Senders to create a private transaction by marking who is privy to that transaction via the `privateFor` parameter + 2. Replacing the payload of a private transaction with a hash of the encrypted payload, such that the original payload is not visible to participants who are not privy to the transaction + 3. Storing encrypted private data off-chain in a separate component called the Transaction Manager (provided by [Constellation](https://github.com/jpmorganchase/constellation) or [Tessera](https://github.com/jpmorganchase/tessera)). The Transaction Manager distributes the encrypted data to other parties that are privy to the transaction and returns the decrypted payload to those parties + + Please see the [[Transaction Processing & Privacy|Transaction Processing]] page for more info. + +??? question "How does Quorum achieve consensus on Private Transactions?" + In standard Ethereum, all nodes process all transactions and so each node has the same state root. In Quorum, nodes process all 'public' transactions (which might include reference data or market data contracts for example) but only process the private transactions that they are party to. + + Quorum nodes maintain two Patricia Merkle Tries: one for private state and one for public state. As a result, block validation includes a **state** check on the new-to-Quorum `public state root`. Block validation also includes a check of the `global Transaction hash`, which is a hash of **all** Transactions in a block - private and public. This means that each node is able to validate that it has the same set of Transactions as other nodes. Since the EVM is provably deterministic through the synchronized public state root, and that the Private Transaction inputs are known to be in sync across nodes (global Transaction Hash), private state synchronization across nodes can be implied. In addition, Quorum provides an API call, `eth_storageRoot`, that returns the private state hash for a given transaction at a given block height, that can optionally be called at the application layer to specifically perform an off-chain state validation with a counterparty. + + Please see the [[Quorum Consensus|Quorum Consensus]] and [[Transaction Processing & Privacy|Transaction Processing]] pages for more info. +??? question "Are there any restrictions on the transaction size for private transactions (since they are encrypted)?" + The only restriction is the gas limit on the transaction. Constellation/Tessera does not have a size limit (although maybe it should be possible to set one). If anything, performing large transactions as private transactions will improve performance because most of the network only sees hash digests. In terms of performance of transferring large data blobs between geographically distributed nodes, it would be equivalent performance to PGP encrypting the file and transferring it over http/https..so very fast. If you are doing sequential transactions then of course you will have to wait for those transfers, but there is no special overhead by the payload being large if you are doing separate/concurrent transactions, subject to network bandwidth limits. Constellation/Tessera does everything in parallel. -#### I've ran into an issue with Quorum, where do I get support? -There are two places Quorum engineering team monitors on an on-going basis: issues in this and related repositories and on Quorum Slack. Quorum Slack is the best place to query the community and get immediate help. Auto-inviter is available [here](https://clh7rniov2.execute-api.us-east-1.amazonaws.com/Express/). +??? question "Should I include originating node in private transaction?" + No, you should not. In Quorum, including originating node's `privateFor` will result in an error. If you would like to create a private contract that is visible to the originating node only please use this format: `privateFor: []` per https://github.com/jpmorganchase/quorum/pull/165 -#### How does Quorum achieve Transaction Privacy? -Quorum achieves Transaction Privacy by: - 1. Enabling transaction Senders to create a private transaction by marking who is privy to that transaction via the `privateFor` parameter - 2. Replacing the payload of a private transaction with a hash of the encrypted payload, such that the original payload is not visible to participants who are not privy to the transaction - 3. Storing encrypted private data off-chain in a separate component called the Transaction Manager (provided by [Constellation](https://github.com/jpmorganchase/constellation) or [Tessera](https://github.com/jpmorganchase/tessera)). The Transaction Manager distributes the encrypted data to other parties that are privy to the transaction and returns the decrypted payload to those parties +??? question "Is it possible to run a Quorum node without Transaction Manager?" + It is possible to run a node without a corresponding Transaction Manager, to do this instead of a matching Tessera/Constellation node's socket configuration should be set to `PRIVATE_CONFIG=ignore ...`. The node running such configuration is not going to broadcast matching private keys (please ensure that there is no transaction manager running for it) and will be unable to participate in any private transactions. -Please see the [[Transaction Processing & Privacy|Transaction Processing]] page for more info. - -#### How does Quorum achieve consensus on Private Transactions? -In standard Ethereum, all nodes process all transactions and so each node has the same state root. In Quorum, nodes process all 'public' transactions (which might include reference data or market data contracts for example) but only process the private transactions that they are party to. - -Quorum nodes maintain two Patricia Merkle Tries: one for private state and one for public state. As a result, block validation includes a **state** check on the new-to-Quorum 'public state root'. Block validation also includes a check of the 'global Transaction hash', which is a hash of **all** Transactions in a block - private and public. This means that each node is able to validate that it has the same set of Transactions as other nodes. Since the EVM is provably deterministic through the synchronized public state root, and that the Private Transaction inputs are known to be in sync across nodes (global Transaction Hash), private state synchronization across nodes can be implied. In addition, Quorum provides an API call, `eth_storageRoot`, that returns the private state hash for a given transaction at a given block height, that can optionally be called at the application layer to specifically perform an off-chain state validation with a counterparty. - -Please see the [[Quorum Consensus|Quorum Consensus]] and [[Transaction Processing & Privacy|Transaction Processing]] pages for more info. - -#### Are there any restrictions on the transaction size for private transactions (since they are encrypted)? -The only restriction is the gas limit on the transaction. Constellation/Tessera does not have a size limit (although maybe it should be possible to set one). If anything, performing large transactions as private transactions will improve performance because most of the network only sees hash digests. In terms of performance of transferring large data blobs between geographically distributed nodes, it would be equivalent performance to PGP encrypting the file and transferring it over http/https..so very fast. If you are doing sequential transactions then of course you will have to wait for those transfers, but there is no special overhead by the payload being large if you are doing separate/concurrent transactions, subject to network bandwidth limits. Constellation/Tessera does everything in parallel. - -#### Should I include originating node in private transaction? -No, you should not. In Quorum, including originating node's `privateFor` will result in an error. If you would like to create a private contract that is visible to the originating node only please use this format: `privateFor: []` per https://github.com/jpmorganchase/quorum/pull/165 - -#### Is it possible to run a Quorum node without Transaction Manager? -It is possible to run a node without a corresponding Transaction Manager, to do this instead of a matching Tessera/Constellation node's socket configuration should be set to `PRIVATE_CONFIG=ignore ...`. The node running such configuration is not going to broadcast matching private keys (please ensure that there is no transaction manager running for it) and will be unable to participate in any private transactions. - -#### Known Raft consensus node misconfiguration -Please see https://github.com/jpmorganchase/quorum/issues/410 - -#### Is there an official docker image for Quorum/Constellation/Tessera? -Yes! The [official docker containers](https://hub.docker.com/u/quorumengineering/): - -`quorumengineering/quorum:latest` -`quorumengineering/constellation:latest` -`quorumengineering/tessera:latest` - -#### Can I mix Quorum nodes with different consensus configuration? -Unfortunately, that is not possible. Quorum nodes configured with raft will only be able to work correctly with other nodes running raft consensus. This applies to all other supported consensus algorithms. +??? danger "Known Raft consensus node misconfiguration" + Please see https://github.com/jpmorganchase/quorum/issues/410 + +??? question "Is there an official docker image for Quorum/Constellation/Tessera?" + Yes! The [official docker containers](https://hub.docker.com/u/quorumengineering/): + + `quorumengineering/quorum:latest` + `quorumengineering/constellation:latest` + `quorumengineering/tessera:latest` + +??? question "Can I mix Quorum nodes with different consensus configuration?" + Unfortunately, that is not possible. Quorum nodes configured with raft will only be able to work correctly with other nodes running raft consensus. This applies to all other supported consensus algorithms. From 4f6ae6ac9749e1a5f54a6de11ff25cc8d1212ff9 Mon Sep 17 00:00:00 2001 From: Krish1979 <39480483+Krish1979@users.noreply.github.com> Date: Mon, 20 May 2019 13:52:37 +0100 Subject: [PATCH 5/9] Update FAQ.md --- docs/FAQ.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/FAQ.md b/docs/FAQ.md index 9c68f0598..c49cff394 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -1,5 +1,6 @@ ??? question "I've ran into an issue with Quorum, where do I get support?" There are two places Quorum engineering team monitors on an on-going basis: issues in this and related repositories and on Quorum Slack. Quorum Slack is the best place to query the community and get immediate help. Auto-inviter is available [here](https://clh7rniov2.execute-api.us-east-1.amazonaws.com/Express/). + ??? question "How does Quorum achieve Transaction Privacy?" Quorum achieves Transaction Privacy by: From 148381a952be368f37bc672b719609b55ba42f77 Mon Sep 17 00:00:00 2001 From: Krish1979 <39480483+Krish1979@users.noreply.github.com> Date: Mon, 20 May 2019 13:54:07 +0100 Subject: [PATCH 6/9] Update FAQ.md --- docs/FAQ.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/FAQ.md b/docs/FAQ.md index c49cff394..ec278ea30 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -8,14 +8,14 @@ 2. Replacing the payload of a private transaction with a hash of the encrypted payload, such that the original payload is not visible to participants who are not privy to the transaction 3. Storing encrypted private data off-chain in a separate component called the Transaction Manager (provided by [Constellation](https://github.com/jpmorganchase/constellation) or [Tessera](https://github.com/jpmorganchase/tessera)). The Transaction Manager distributes the encrypted data to other parties that are privy to the transaction and returns the decrypted payload to those parties - Please see the [[Transaction Processing & Privacy|Transaction Processing]] page for more info. + Please see the [Transaction Processing](https://github.com/Krish1979/quorum/blob/master/docs/Transaction%20Processing/Transaction%20Processing.md) page for more info. ??? question "How does Quorum achieve consensus on Private Transactions?" In standard Ethereum, all nodes process all transactions and so each node has the same state root. In Quorum, nodes process all 'public' transactions (which might include reference data or market data contracts for example) but only process the private transactions that they are party to. Quorum nodes maintain two Patricia Merkle Tries: one for private state and one for public state. As a result, block validation includes a **state** check on the new-to-Quorum `public state root`. Block validation also includes a check of the `global Transaction hash`, which is a hash of **all** Transactions in a block - private and public. This means that each node is able to validate that it has the same set of Transactions as other nodes. Since the EVM is provably deterministic through the synchronized public state root, and that the Private Transaction inputs are known to be in sync across nodes (global Transaction Hash), private state synchronization across nodes can be implied. In addition, Quorum provides an API call, `eth_storageRoot`, that returns the private state hash for a given transaction at a given block height, that can optionally be called at the application layer to specifically perform an off-chain state validation with a counterparty. - Please see the [[Quorum Consensus|Quorum Consensus]] and [[Transaction Processing & Privacy|Transaction Processing]] pages for more info. + Please see the [[Quorum Consensus|Quorum Consensus]] and [Transaction Processing](https://github.com/Krish1979/quorum/blob/master/docs/Transaction%20Processing/Transaction%20Processing.md) pages for more info. ??? question "Are there any restrictions on the transaction size for private transactions (since they are encrypted)?" The only restriction is the gas limit on the transaction. Constellation/Tessera does not have a size limit (although maybe it should be possible to set one). If anything, performing large transactions as private transactions will improve performance because most of the network only sees hash digests. In terms of performance of transferring large data blobs between geographically distributed nodes, it would be equivalent performance to PGP encrypting the file and transferring it over http/https..so very fast. If you are doing sequential transactions then of course you will have to wait for those transfers, but there is no special overhead by the payload being large if you are doing separate/concurrent transactions, subject to network bandwidth limits. Constellation/Tessera does everything in parallel. From fe7ef9177a266f3c00103aa18688aaf132d5f350 Mon Sep 17 00:00:00 2001 From: namtruong Date: Mon, 20 May 2019 13:58:57 +0100 Subject: [PATCH 7/9] update relative links --- docs/FAQ.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/FAQ.md b/docs/FAQ.md index ec278ea30..9eca78d05 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -8,14 +8,14 @@ 2. Replacing the payload of a private transaction with a hash of the encrypted payload, such that the original payload is not visible to participants who are not privy to the transaction 3. Storing encrypted private data off-chain in a separate component called the Transaction Manager (provided by [Constellation](https://github.com/jpmorganchase/constellation) or [Tessera](https://github.com/jpmorganchase/tessera)). The Transaction Manager distributes the encrypted data to other parties that are privy to the transaction and returns the decrypted payload to those parties - Please see the [Transaction Processing](https://github.com/Krish1979/quorum/blob/master/docs/Transaction%20Processing/Transaction%20Processing.md) page for more info. + Please see the [Transaction Processing](../Transaction%20Processing/Transaction%20Processing) page for more info. ??? question "How does Quorum achieve consensus on Private Transactions?" In standard Ethereum, all nodes process all transactions and so each node has the same state root. In Quorum, nodes process all 'public' transactions (which might include reference data or market data contracts for example) but only process the private transactions that they are party to. Quorum nodes maintain two Patricia Merkle Tries: one for private state and one for public state. As a result, block validation includes a **state** check on the new-to-Quorum `public state root`. Block validation also includes a check of the `global Transaction hash`, which is a hash of **all** Transactions in a block - private and public. This means that each node is able to validate that it has the same set of Transactions as other nodes. Since the EVM is provably deterministic through the synchronized public state root, and that the Private Transaction inputs are known to be in sync across nodes (global Transaction Hash), private state synchronization across nodes can be implied. In addition, Quorum provides an API call, `eth_storageRoot`, that returns the private state hash for a given transaction at a given block height, that can optionally be called at the application layer to specifically perform an off-chain state validation with a counterparty. - Please see the [[Quorum Consensus|Quorum Consensus]] and [Transaction Processing](https://github.com/Krish1979/quorum/blob/master/docs/Transaction%20Processing/Transaction%20Processing.md) pages for more info. + Please see the [Quorum Consensus](../Consensus/Consensus) and [Transaction Processing](../Transaction%20Processing/Transaction%20Processing) pages for more info. ??? question "Are there any restrictions on the transaction size for private transactions (since they are encrypted)?" The only restriction is the gas limit on the transaction. Constellation/Tessera does not have a size limit (although maybe it should be possible to set one). If anything, performing large transactions as private transactions will improve performance because most of the network only sees hash digests. In terms of performance of transferring large data blobs between geographically distributed nodes, it would be equivalent performance to PGP encrypting the file and transferring it over http/https..so very fast. If you are doing sequential transactions then of course you will have to wait for those transfers, but there is no special overhead by the payload being large if you are doing separate/concurrent transactions, subject to network bandwidth limits. Constellation/Tessera does everything in parallel. From b2aa415eb9b7849f7cfeb2b6d420fccafd3ee19e Mon Sep 17 00:00:00 2001 From: namtruong Date: Mon, 20 May 2019 14:11:27 +0100 Subject: [PATCH 8/9] info admonition --- docs/FAQ.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/FAQ.md b/docs/FAQ.md index 9eca78d05..c3157a17f 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -26,7 +26,7 @@ ??? question "Is it possible to run a Quorum node without Transaction Manager?" It is possible to run a node without a corresponding Transaction Manager, to do this instead of a matching Tessera/Constellation node's socket configuration should be set to `PRIVATE_CONFIG=ignore ...`. The node running such configuration is not going to broadcast matching private keys (please ensure that there is no transaction manager running for it) and will be unable to participate in any private transactions. -??? danger "Known Raft consensus node misconfiguration" +??? info "Known Raft consensus node misconfiguration" Please see https://github.com/jpmorganchase/quorum/issues/410 ??? question "Is there an official docker image for Quorum/Constellation/Tessera?" From 31d7309a86bf5c98102debe7dd983b728a83ab13 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Mon, 20 May 2019 16:50:12 -0400 Subject: [PATCH 9/9] updated quorum examples docs --- docs/Getting Started/Quorum-Examples.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/docs/Getting Started/Quorum-Examples.md b/docs/Getting Started/Quorum-Examples.md index e2c9a9c1a..936e9a3ec 100644 --- a/docs/Getting Started/Quorum-Examples.md +++ b/docs/Getting Started/Quorum-Examples.md @@ -54,8 +54,9 @@ issues with the version of curl bundled with Vagrant. ### Setting up Docker 1. Install Docker (https://www.docker.com/get-started) - * If your Docker distribution does not contain `docker-compose`, follow [this](https://docs.docker.com/compose/install/) to install Docker Compose - * Make sure your Docker daemon has at least 4G memory + - If your Docker distribution does not contain `docker-compose`, follow [this](https://docs.docker.com/compose/install/) to install Docker Compose + - Make sure your Docker daemon has at least 4G memory + - Required Docker Engine 18.02.0+ and Docker Compose 1.21+ 1. Download and run `docker-compose` ```sh git clone https://github.com/jpmorganchase/quorum-examples @@ -88,13 +89,14 @@ issues with the version of curl bundled with Vagrant. #### Troubleshooting Docker 1. Docker is frozen - * Check if your Docker daemon is allocated enough memory (minimum 4G) + - Check if your Docker daemon is allocated enough memory (minimum 4G) 1. Tessera is crashed due to missing file/directory - * This is due to the location of `quorum-examples` folder is not shared - * Please refer to Docker documentation for more details: - * [Docker Desktop for Windows](https://docs.docker.com/docker-for-windows/troubleshoot/#shared-drives) - * [Docker Desktop for Mac](https://docs.docker.com/docker-for-mac/#file-sharing) - * [Docker Machine](https://docs.docker.com/machine/overview/): this depends on what Docker machine provider is used. Please refer to its documentation on how to configure shared folders/drives + - This is due to the location of `quorum-examples` folder is not shared + - Please refer to Docker documentation for more details: + - [Docker Desktop for Windows](https://docs.docker.com/docker-for-windows/troubleshoot/#shared-drives) + - [Docker Desktop for Mac](https://docs.docker.com/docker-for-mac/#file-sharing) + - [Docker Machine](https://docs.docker.com/machine/overview/): this depends on what Docker machine provider is used. Please refer to its documentation on how to configure shared folders/drives +1. If you run Docker inside Docker, make sure to run the container with `--privileged` ### Setting up locally