-
Notifications
You must be signed in to change notification settings - Fork 139
Editorial mdlint and vale updates in the Concepts/Privacy dir #183
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
MadelineMurray
merged 40 commits into
besu-eth:master
from
grantnoble:grantnoble-privacy-mklint-vale
Feb 25, 2020
Merged
Changes from all commits
Commits
Show all changes
40 commits
Select commit
Hold shift + click to select a range
4d535bc
Adding an update to the docs for the DApp container (#127)
joshuafernandes bedc17d
Refactor/contributor content (#126)
faraggi f1b6703
Added default data location (#123)
MadelineMurray c8d3cf9
Moved license note (#129)
MadelineMurray bf6a3fa
Windows is now supported in the quickstart (#143)
EdJoJob cbf566e
quickstart updates all round (#141)
joshuafernandes ddd7b96
Fixed typo (#150)
MadelineMurray b60b75d
Add multi-tenancy information. (#131)
bgravenorst 230dfd1
Apply renames for the quickstart repo (#152)
EdJoJob 8b6b180
Added content on protocol upgrades (#132)
MadelineMurray 07863e6
Fixed Ansible link and renamed topic (#168)
MadelineMurray 04748b4
permissioning (#170)
wslyvh 690c2d9
Vale and mdlint editorial updates - DCO.md (#162)
3c02628
updated CI and customised checks (#165)
NicolasMassart 4d41acf
Added new NAT options (#179)
MadelineMurray 1afef0b
Editorial mdlint vale updates for Concepts/Transactions directory (#185)
8fe0887
Added default data location (#123)
MadelineMurray ba4bfe3
Fixed typo (#150)
MadelineMurray 58ebe7c
Added content on protocol upgrades (#132)
MadelineMurray ad56e88
Fixed Ansible link and renamed topic (#168)
MadelineMurray 49767df
Added default data location (#123)
MadelineMurray fe7d330
Fixed typo (#150)
MadelineMurray 7c124dc
Editorial mklint and vale updates in Concepts/Permissioning dir (#181)
0092d8f
Added content on protocol upgrades (#132)
MadelineMurray 78955dc
Fixed Ansible link and renamed topic (#168)
MadelineMurray 9a52660
Editorial mdlint and vale updates in the Concepts/Privacy dir
5e992b2
minor description update
bb3542f
Updates based on review, included Multi-Tenancy.md
7bd7133
More Multi-Tenancy updates to fix vale issues
a404712
Sentence case heading
7a6fe53
mdlint and vale editorial updates in Concepts/Consensus-Protocols dir…
e4e095f
mdlint and vale editorial edits in the Concepts directory (#177)
485dbc9
vale and mklint editorial updates - CONTRIBUTING.md (#163)
2c3c006
mdlint and vale editorial updates - index.md (#169)
8755b2f
Added plugins_reloadPluginConfig (#184)
MadelineMurray 5311c0e
Link updates corresponding to changed heading in Privacy-Groups.md
495cc51
Minor punctuation change
67cb751
Merge branch 'master' into grantnoble-privacy-mklint-vale
33ea51b
Merge branch 'master' into grantnoble-privacy-mklint-vale
e48e711
Changed html comment after the metadata to a markdown comment
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,32 +1,37 @@ | ||
| --- | ||
| description: Multi-tenancy | ||
| <!--- END of page meta data --> | ||
| --- | ||
|
|
||
| # Multi-tenancy | ||
|
|
||
| By default, each participant in a privacy network uses its own Besu and Orion | ||
| node. | ||
| By default, each participant in a privacy network uses its own Besu and Orion node. | ||
|
|
||
| Multi-tenancy allows multiple participants to use the same Besu and | ||
| Orion node. Each participant is called a Tenant, and the Operator is the | ||
| owner of the Besu and Orion node. | ||
| Multi-tenancy allows multiple participants to use the same Besu and Orion node. Each participant is | ||
| a _tenant_, and the operator is the _owner_ of the Besu and Orion node. | ||
|
|
||
| !!! important | ||
| The Operator is responsible for [configuring multi-tenancy](../../Tutorials/Privacy/Configuring-Multi-Tenancy.md), and has | ||
|
|
||
| The operator is responsible for | ||
| [configuring multi-tenancy](../../Tutorials/Privacy/Configuring-Multi-Tenancy.md), and has | ||
| access to all tenant data. | ||
|
|
||
|  | ||
|
|
||
| !!! important | ||
| Ensure the multi-tenant Orion node client API is configured to allow access only by the multi-tenant Besu node. Access to your data is secured through Besu using multi-tenancy mode. | ||
|
|
||
| If not configured to allow access only by the multi-tenant Besu node, other | ||
| Orion clients including other Besu nodes may be able to access tenant data. | ||
| Ensure the multi-tenant Orion node client API is configured to allow access only by the | ||
| multi-tenant Besu node. Access to your data is secured through Besu using multi-tenancy mode. | ||
|
|
||
| If not configured to allow access only by the multi-tenant Besu node, other Orion clients, | ||
| including other Besu nodes, might be able to access tenant data. | ||
|
|
||
| You can [configure TLS between Besu and Orion](../TLS.md) with the [`whitelist`](https://docs.orion.pegasys.tech/en/latest/Tutorials/TLS/#clientconnectiontlsservertrust) trust mode to secure access. | ||
| To secure access, you can [configure TLS between Besu and Orion](../TLS.md) with the | ||
| [`whitelist`](https://docs.orion.pegasys.tech/en/latest/Tutorials/TLS/#clientconnectiontlsservertrust) | ||
| trust mode. | ||
|
|
||
| Multi-tenancy validates that tenants are permitted to use the specified HTTP or | ||
| Websocket JSON-RPC requests, and the tenant has access to the requested privacy | ||
| data. Private data is segregated, and each tenant uses a JWT token for | ||
| authentication. | ||
| Multi-tenancy validates that tenants have permission to use the specified HTTP or Websocket | ||
| JSON-RPC requests, and the tenant has access to the requested privacy data. There is segregation of | ||
| private data, and each tenant uses a JWT token for authentication. | ||
|
|
||
| The JWT token can be created [externally or internally](../../HowTo/Interact/APIs/Authentication.md). | ||
| You can create the JWT token either | ||
| [externally or internally](../../HowTo/Interact/APIs/Authentication.md). |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,76 +1,88 @@ | ||
| description: Privacy | ||
| <!--- END of page meta data --> | ||
| --- | ||
| description: Privacy groups | ||
| --- | ||
|
|
||
| # Privacy Groups | ||
| # Privacy groups | ||
|
|
||
| A privacy group is a group of nodes identified by a unique privacy group ID by Orion. Each private transaction is | ||
| stored in Orion with the privacy group ID. | ||
| A privacy group is a group of nodes identified by a unique privacy group ID by Orion. Each private | ||
| transaction is stored in Orion with the privacy group ID. | ||
|
|
||
| The Besu nodes maintain the public world state for the blockchain and a private state for each privacy group. | ||
| The private states contain data that is not shared in the globally replicated world state. | ||
| The Besu nodes maintain the public world state for the blockchain and a private state for each | ||
| privacy group. The private states contain data that is not shared in the globally replicated world | ||
| state. | ||
|
|
||
| ## Privacy Types | ||
| ## Privacy types | ||
|
|
||
| Besu implements two types of privacy: | ||
| Besu implements two types of privacy: | ||
|
|
||
| * EEA-compliant privacy - private transactions include `privateFor` as the recipient. | ||
| * Besu-extended privacy - private transactions include `privacyGroupId` as the recipient. | ||
| * Enterprise Ethereum Alliance (EEA) privacy, where private transactions include `privateFor` as | ||
| the recipient. | ||
| * Besu-extended privacy, where private transactions include `privacyGroupId` as the recipient. | ||
|
|
||
| Both privacy types create privacy groups and store private transactions with their privacy group in Orion. | ||
| Both privacy types create privacy groups and store private transactions with their privacy group in | ||
| Orion. | ||
|
|
||
|  | ||
|
|
||
| !!! note | ||
| The Orion nodes are not shown above for clarity only. To send private transactions, | ||
| each Besu node must have an associated Orion node. | ||
|
|
||
| ### Access between States | ||
| For clarity, the Orion nodes are not shown in the previous diagram. To send private | ||
| transactions, each Besu node must have an associated Orion node. | ||
|
|
||
| ### Access between states | ||
|
|
||
| A contract in a privacy group: | ||
|
|
||
| * Can read or write to a contract in the same privacy group. | ||
| * Can read from the public state including public contracts. | ||
| * Cannot access contracts from a different privacy group. | ||
| * Can read from the public state including public contracts. | ||
| * Cannot access contracts from a different privacy group. | ||
|
|
||
| A public contract cannot access a private contract. | ||
|
|
||
| ### EEA-compliant Privacy | ||
| ### Enterprise Ethereum Alliance privacy | ||
|
|
||
| In the privacy implementation complying with the | ||
| [EEA Client Specification](https://entethalliance.org/technical-documents/) the group of nodes | ||
| specified by `privateFrom` and `privateFor` form a privacy group with a unique privacy group ID | ||
| provided by Orion. | ||
|
|
||
| In our privacy implementation complying with the [EEA Client Specification](https://entethalliance.org/technical-documents/) | ||
| the group of nodes specified by `privateFrom`and `privateFor` form a privacy group and are given a unique | ||
| privacy group ID by Orion. | ||
| !!! example | ||
|
|
||
| !!! example | ||
| The diagram above illustrates two privacy groups enabling: | ||
| The previous diagram illustrates two privacy groups enabling: | ||
|
|
||
| * A, B, and C to send transactions that are private from D | ||
| * A, C, and D to send transactions that are private from B | ||
| * A, B, and C to send transactions that are private from D. | ||
| * A, C, and D to send transactions that are private from B. | ||
|
|
||
| Using EEA-compliant privacy, to send private transactions between A, B, and C, A initialises a contract in a private transaction with | ||
| B and C specified as the `privateFor` and A specified as the `privateFrom`. Initialising the contract | ||
| creates a privacy group consisting of A, B, and C. For the ABC private state to remain consistent, | ||
| A, B, and C must be included on transactions (as either `privateFrom` or `privateFor`) even if they are | ||
| between two of the three parties. | ||
| Using EEA-compliant privacy, to send private transactions between A, B, and C, A initializes a | ||
| contract in a private transaction with B and C specified as the `privateFor` and A specified as | ||
| the `privateFrom`. Initializing the contract creates a privacy group consisting of A, B, and C. | ||
| For the ABC private state to remain consistent, A, B, and C must be included on transactions | ||
| (as either `privateFrom` or `privateFor`) even if they are between only two of the three | ||
| parties. | ||
|
|
||
| To send private transactions between A, C, and D, C initialises a different contract in a private transaction with | ||
| A and D specified as the `privateFor` and C specified as the `privateFrom`. Initialising the contract | ||
| creates a privacy group consisting of A, C, and D. For the ACD private state to remain consistent, | ||
| A, C, and D must be included on transactions (as either `privateFrom` or `privateFor`) even if they are | ||
| between two of the three parties. | ||
| To send private transactions between A, C, and D, C initializes a different contract in a | ||
| private transaction with A and D specified as the `privateFor` and C specified as the | ||
| `privateFrom`. Initializing the contract creates a privacy group consisting of A, C, and D. | ||
| For the ACD private state to remain consistent, A, C, and D must be included on transactions | ||
| (as either `privateFrom` or `privateFor`) even if they are between only two of the three | ||
| parties. | ||
|
|
||
|
|
||
| ### Besu-extended Privacy | ||
| ### Besu-extended privacy | ||
|
|
||
| In our extended privacy implementation, a privacy group is created using [`priv_createPrivacyGroup`](../../Reference/API-Methods.md#priv_createprivacygroup) | ||
| and private transactions sent to the privacy group ID. | ||
| The Besu-extended privacy implementation creates a privacy group using | ||
| [`priv_createPrivacyGroup`](../../Reference/API-Methods.md#priv_createprivacygroup) with private | ||
| transactions sent to the privacy group ID. | ||
|
|
||
| !!! example | ||
|
|
||
| !!! example | ||
| Using the same privacy groups as above. | ||
| Using the same privacy groups as in the previous example. | ||
|
|
||
| Using Besu-extended privacy, to send private transactions between A, B, and C, A creates a privacy | ||
| group consisting of A, B, and C. The privacy group ID is specified when sending private transactions and | ||
| A, B, and C are recipients of all private transactions sent to the privacy group. | ||
| Using Besu-extended privacy, to send private transactions between A, B, and C, A creates a | ||
| privacy group consisting of A, B, and C. The privacy group ID is specified when sending private | ||
| transactions and A, B, and C are recipients of all private transactions sent to the privacy | ||
| group. | ||
|
|
||
| To send private transactions between A, C, and D, A creates a privacy group consisting of A, C, and D. | ||
| The privacy group ID of this group is specified when sending private transactions with A, C, and D | ||
| as recipients. | ||
| To send private transactions between A, C, and D, A creates a privacy group consisting of A, C, | ||
| and D. The privacy group ID of this group is specified when sending private transactions with A, | ||
| C, and D as recipients. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,35 +1,44 @@ | ||
| --- | ||
| description: Privacy | ||
| <!--- END of page meta data --> | ||
| --- | ||
|
|
||
| # Privacy | ||
|
|
||
| Privacy in Besu refers to the ability to keep transactions private between the involved participants. | ||
| Other participants cannot access the transaction content or list of participants. | ||
| In Besu, privacy refers to the ability to keep transactions private between the involved | ||
| participants. Other participants cannot access the transaction content or list of participants. | ||
|
|
||
| !!! important | ||
| For production systems requiring private transactions: | ||
| * We recommend using a network with a consensus mechanism supporting transaction finality. For example, | ||
| [IBFT 2.0](../../HowTo/Configure/Consensus-Protocols/IBFT.md). | ||
| * Orion must be [highly available and run in a separate instance to Besu](../../HowTo/Use-Privacy/Run-Orion-With-Besu.md). | ||
|
|
||
| !!! important | ||
|
|
||
| For production systems requiring private transactions: | ||
|
|
||
| * It is recommended you use a network with a consensus mechanism supporting transaction | ||
| finality, such as [IBFT 2.0](../../HowTo/Configure/Consensus-Protocols/IBFT.md). | ||
| * Orion must be [highly available and run in a separate instance to Besu]. | ||
|
|
||
| Using private transactions with [pruning](../Pruning.md) is not supported. | ||
|
|
||
| ## Private Transaction Manager | ||
| ## Private transaction manager | ||
|
|
||
| Besu uses a Private Transaction Manager to implement privacy. For example, [Orion](http://docs.orion.pegasys.tech). | ||
| Each Besu node that sends or receives private transactions requires an associated Orion node. | ||
| Besu uses a private transaction manager, [Orion](http://docs.orion.pegasys.tech), to implement | ||
| privacy. Each Besu node sending or receiving private transactions requires an associated Orion | ||
| node. | ||
|
|
||
|  | ||
|
|
||
| Private transactions are passed from the Besu node to the associated Orion node. The Orion node | ||
| encrypts and directly distributes (that is, point to point) the private transaction to Orion nodes | ||
| participating in the transaction. | ||
| Private transactions pass from the Besu node to the associated Orion node. The Orion node | ||
| encrypts and directly distributes (that is, point-to-point) the private transaction to the Orion | ||
| nodes participating in the transaction. | ||
|
|
||
| By default, each participant in a privacy network uses its own Besu and Orion node. | ||
| [Multi-tenancy](Multi-Tenancy.md) allows multiple participants to use the same Besu and Orion node. | ||
|
|
||
| By default, each participant in a privacy network uses its own Besu and Orion | ||
| node. [Multi-tenancy](Multi-Tenancy.md) allows multiple participants to use the same Besu and Orion | ||
| node. | ||
|
|
||
| !!! tip | ||
| Private Transaction Managers are also known as Enclaves. | ||
|
|
||
| Private Transaction Managers are also refered to as Enclaves. | ||
|
|
||
| <!-- Links --> | ||
| [highly available and run in a separate instance to Besu]: ../../HowTo/Use-Privacy/Run-Orion-With-Besu.md | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this paragraph included twice now? Could you check this by publishing locally?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I had various merge conflicts occuring. I suspect this could have popped in while I was trying to fix it. Duplicate removed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed.