Editorial vale updates on CI/README.md (#259)

* Editorial vale fixes on the CI/README file

Doing just this one file, to give me an updated vale.out file which I can then use for all the rest of the files

Signed-off-by: grantnoble <grant.noble@consensys.net>

* The remaining editorial vale updates

Mostly passive voice to active voice, but some other changes too.

Signed-off-by: grantnoble <grant.noble@consensys.net>

* One last set of changes to a file

Signed-off-by: grantnoble <grant.noble@consensys.net>
pull/274/head
Grant Noble 5 years ago committed by GitHub
parent b0dc2c66f1
commit 8eb3d964be
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 24
      CI/scripts/README.md
  2. 6
      docs/Concepts/Permissioning/Onchain-Permissioning.md
  3. 4
      docs/Concepts/Permissioning/Permissioning-Overview.md
  4. 34
      docs/Concepts/Privacy/Onchain-PrivacyGroups.md
  5. 9
      docs/Concepts/Privacy/Privacy-Groups.md
  6. 26
      docs/Concepts/Privacy/Privacy-Overview.md
  7. 3
      docs/Concepts/Privacy/Private-Transactions.md
  8. 72
      docs/Concepts/Transactions/Trace-Types.md
  9. 8
      docs/HowTo/Backup/Backup.md
  10. 8
      docs/HowTo/Configure/Configure-HA/High-Availability.md
  11. 4
      docs/HowTo/Configure/Consensus-Protocols/QuorumIBFT.md
  12. 2
      docs/HowTo/Find-and-Connect/Configuring-Ports.md
  13. 4
      docs/HowTo/Find-and-Connect/Managing-Peers.md
  14. 6
      docs/HowTo/Find-and-Connect/Specifying-NAT.md
  15. 2
      docs/HowTo/Get-Started/Starting-node.md
  16. 18
      docs/HowTo/Get-Started/System-Requirements.md
  17. 2
      docs/HowTo/Interact/APIs/API.md
  18. 2
      docs/HowTo/Monitor/Logging.md
  19. 44
      docs/HowTo/Use-Privacy/Use-OnChainPrivacy.md
  20. 2
      docs/Reference/API-Objects.md
  21. 2
      docs/Tutorials/Examples/Private-Network-Example.md
  22. 2
      docs/Tutorials/Private-Network/Create-IBFT-Network.md

@ -1,25 +1,25 @@
# Doc quality testing scripts
Scripts in this directory can be used to run CircleCI jobs on your local machine before pushing your
work to the Github repos.
Use the scripts in this directory to run CircleCI jobs on your local machine before pushing your
work to the GitHub repositories.
## Requirements
* Install the [Circle CI local CLI](https://circleci.com/docs/2.0/local-cli/).
* Install [Docker](https://docs.docker.com/install/)
* Install the [Circle CI local CLI](https://circleci.com/docs/2.0/local-cli/)
* Install [Docker](https://docs.docker.com/install/).
## Running the scripts
Go to the besu-doc project root directory and run one of the following scripts:
* `CI/scripts/test_build.sh` will run the doc build with MkDocs
* `CI/scripts/test_guidelines.sh` will test the doc with Vale and our custom rules.
* `CI/scripts/test_links.sh` will test links in the doc. Internal and external links are checked.
If a link is incorrect or the targeted web page is unavailable (for external sites), the test will
fail and display the faulty link.
* `CI/scripts/test_lint.sh` will test the Markdown syntax for issues. Sometimes they are not visible
* `CI/scripts/test_build.sh` runs the doc build with MkDocs.
* `CI/scripts/test_guidelines.sh` tests the doc with Vale and our custom rules.
* `CI/scripts/test_links.sh` tests the internal and external links in the doc. If a link is
incorrect or the targeted web page is unavailable (for external sites), the test will fail and
display the faulty link.
* `CI/scripts/test_lint.sh` tests the Markdown syntax for issues. Sometimes they are not visible
but making sure the markdown is correct helps to make it readable and bug free.
* `CI/scripts/test_all.sh` will test run all the test in one pass.
* `CI/scripts/test_all.sh` runs all the tests in one pass.
## Known issues
@ -33,4 +33,4 @@ Skipping cache - error checking storage: not supported
Step failed
```
This is normal, Circle CI doesn't support some of the features the server version does. Ignore them.
This is normal. Circle CI doesn't support some of the features the server version does. Ignore them.

@ -44,8 +44,8 @@ The [Permissioning Management Dapp] provides view and maintain access to the whi
Permissioning implements three whitelists:
* Accounts, which can submit transactions to the network.
* Nodes, which can participate in the network.
* Admins, which are accounts that can update the accounts and nodes whitelists.
* Nodes, which can join the network.
* Admins, which are accounts able to update the accounts and nodes whitelists.
!!! caution "Using account permissioning and privacy"
@ -59,7 +59,7 @@ Permissioning implements three whitelists:
## Bootnodes
When a node is added to the network, the node connects to the bootnodes until it synchronizes to
When a node joins the network, the node connects to the bootnodes until it synchronizes to
the chain head, regardless of node permissions. After synchronization, the Account Rules and Node
Rules smart contracts apply the permissioning rules.

@ -4,8 +4,8 @@ description: Besu permissioning feature
# Permissioning
A permissioned network permits only specified nodes and accounts to participate by enabling
node permissioning and account permissioning on the network.
A permissioned network enables node permissioning and account permissioning, allowing only
specified nodes and accounts to access the network.
!!! important "Permissioning is not Privacy"

@ -4,41 +4,45 @@ description: Onchain Privacy Groups
# Onchain Privacy Groups
Onchain privacy groups use smart contracts to store and maintain the group membership.
You can add and remove members to and from onchain privacy groups.
Onchain privacy groups use smart contracts to store and maintain the group membership. You can add
and remove members to and from onchain privacy groups.
!!! important
Onchain privacy groups are an early access feature in v1.4. Do not use in production networks.
The onchain privacy group interfaces may change between v1.4 and v1.5. There may not be an upgrade
path from onchain privacy groups created using v1.4 to enable use of onchain privacy group functionality
in future versions.
The onchain privacy group interfaces might change between v1.4 and v1.5. There might not be an
upgrade path from onchain privacy groups created using v1.4 to enable use of onchain privacy
group functionality in future versions.
We do not recommend creating onchain privacy groups in a chain with existing [offchain privacy groups](Privacy-Groups.md).
It's not recommended to create onchain privacy groups in a chain with existing
[offchain privacy groups](Privacy-Groups.md).
## Group Management Contracts
The privacy group management contract bytecode is hard-coded into Hyperledger Besu and when a privacy
group is created, the contract bytecode is part of the genesis state of the privacy group.
The privacy group management contract bytecode is hard-coded into Hyperledger Besu and when you
create a privacy group, the contract bytecode is part of the genesis state of the privacy group.
!!! caution
All members of an onchain privacy group must be using the same version of Hyperledger Besu. If
using different versions, the private state within the privacy group may become inconsistent.
The provided group management contracts do not enforce any permissioning on group members. That is, any
member of a group can make transactions in the group, and add or remove group members.
The provided group management contracts do not enforce any permissioning on group members. That is,
any member of a group can make transactions in the group, and add or remove group members.
## Onchain Privacy Group IDs
Privacy group IDs for onchain privacy group must be generated outside of Hyperledger Besu and are passed
as a parameter when creating an onchain privacy group.
When creating an onchain privacy group, generate the privacy group ID for the group outside of Besu
and pass the ID as a parameter.
The [web3js-eea library](../../HowTo/Use-Privacy/Use-OnChainPrivacy.md) generates a unique privacy
group ID and passes the ID to Hyperledger Besu when creating a privacy group.
group ID and passes the ID to Besu when creating a privacy group.
!!! caution
When generating a privacy group ID, you must ensure the ID is unique across all network
participants. If a privacy group is created with an existing privacy group ID, the existing
participants. If you create a privacy group with an existing privacy group ID, the existing
privacy group is overwritten.
We recommend using 256 bit SecureRandom to ensure unique privacy group IDs.
To ensure unique privacy group IDs, using 256-bit SecureRandom is recommended.

@ -4,16 +4,17 @@ description: 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. Orion stores
each private transaction 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.
!!! important
The privacy group implementations described below are offchain privacy groups and cannot have their
group membership updated.
The privacy group implementations described below are offchain privacy groups and cannot have
their group membership updated.
[Onchain privacy groups are an early access feature in v1.4](Onchain-PrivacyGroups.md).

@ -8,14 +8,15 @@ In Besu, privacy refers to the ability to keep transactions private between the
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).
For production environments requiring private transactions:
Using private transactions with [pruning](../Pruning.md) or [fast sync](../../Reference/CLI/CLI-Syntax.md#sync-mode)
is not supported.
* 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].
Using private transactions with [pruning](../Pruning.md) or
[fast sync](../../Reference/CLI/CLI-Syntax.md#sync-mode) is not supported.
## Private transaction manager
@ -30,18 +31,21 @@ encrypts and directly distributes (that is, point-to-point) the private transact
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.
[Multi-tenancy](Multi-Tenancy.md) allows more than one participant to use the same Besu and Orion
node.
!!! tip
Private Transaction Managers are also known as Enclaves.
## Reorg Compatible Privacy
## Reorg-compatible privacy
In v1.4, using private transactions in a network using a consensus mechanism
where forks occur (that is, PoW or Clique) is an early access feature. For example, using private
In v1.4, using private transactions in a network using a consensus mechanism where forks occur
(that is, PoW algorithms or Clique) is an early access feature. For example, using private
transactions on Ropsten.
Do not use private transctions in production networks using consensus mechanisms that fork.
Do not use private transctions in production environments using consensus mechanisms where forks
occur.
<!-- Links -->
[highly available and run in a separate instance to Besu]: ../../HowTo/Use-Privacy/Run-Orion-With-Besu.md

@ -4,7 +4,7 @@ description: Private transaction overview
# Private transactions
Private transactions have additional attributes to public Ethereum transactions:
Private transactions have extra attributes to public Ethereum transactions:
* `privateFrom` - The Orion public key of the transaction sender
* `privateFor` - The Orion public keys of the transaction recipients, or
@ -17,6 +17,7 @@ Private transactions have additional attributes to public Ethereum transactions:
transaction.
!!! important
Besu implements `restricted` private transactions only.
For more information about creating and sending private transactions, see the

@ -2,14 +2,15 @@
description: Tracing transactions
---
# Transaction Trace Types
# Transaction trace types
When using [`trace_replayBlockTransactions`](../../Reference/API-Methods.md#trace_replayblocktransactions)
the trace options are [`trace`](#trace), [`vmTrace`](#vmtrace), and [`stateDiff`](#statediff).
When using
[`trace_replayBlockTransactions`](../../Reference/API-Methods.md#trace_replayblocktransactions) the
trace options are [`trace`](#trace), [`vmTrace`](#vmtrace), and [`stateDiff`](#statediff).
## trace
Ordered list of calls to other contracts excluding precompiled contracts.
An ordered list of calls to other contracts, excluding precompiled contracts.
```json tab="trace Example"
"trace":[
@ -34,37 +35,38 @@ Ordered list of calls to other contracts excluding precompiled contracts.
]
```
| Key | Value |
|----------------| --------------------------------------------------------------------------------------|
| Key | Value |
|----------------| -------------------------------------------------------------------------------|
| `action` | Transaction details.
| `callType` | Indicates whether the transaction is `call` or `create`.
| `from` | Address from which transaction was sent.
| `callType` | Whether the transaction is `call` or `create`.
| `from` | Address of the transaction sender.
| `gas` | Gas provided by sender.
| `input` | Transaction data.
| `to` | Target of the transaction.
| `value` | Value transferred in transaction.
| `value` | Value transferred in the transaction.
| `result` | Transaction result.
| `gasUsed` | Gas used by the transaction. Includes any refunds of unused gas.
| `output` | Return value of contract call. Contains only the actual value sent by a `RETURN` operation. If a `RETURN` was not executed, the output is empty bytes.
| `output` | Return value of the contract call. Contains only the actual value sent by a `RETURN` operation. If a `RETURN` was not executed, the output is empty bytes.
| `subTraces` | Traces of contract calls made by the transaction.
| `traceAddress` | Tree list address of where the call occurred, address of the parents, and order of the current sub call.
| `type` | Indicates whether the transaction is a `CALL` or `CREATE` series operation.
| `type` | Whether the transaction is a `CALL` or `CREATE` series operation.
## vmTrace
Ordered list of EVM actions when processing the transaction.
An ordered list of EVM actions when processing the transaction.
Besu only reports actual data returned from a `RETURN` opcode. Besu does not
return the contents of the reserved output space for the call operations. As a result:
`vmTrace` only reports actual data returned from a `RETURN` opcode and does not return the
contents of the reserved output space for the call operations. As a result:
* Besu reports null when a call operation ends because of a `STOP`, `HALT`, `REVERT`, running out of
instructions, or any exceptional halts.
* When a `RETURN` operation returns data of a different length to the space reserved by the call, only
the data passed to the `RETURN` operation is reported. Besu does not include pre-existing memory data
or trim the returned data.
* `vmTrace` reports `null` when a call operation ends because of a `STOP`, `HALT`, `REVERT`,
running out of instructions, or any exceptional halts.
* When a `RETURN` operation returns data of a different length to the space reserved by the call,
`vmTrace` reports only the data passed to the `RETURN` operation and does not include
pre-existing memory data or trim the returned data.
For out of gas operations, Besu reports the operation that caused the out of gas exception including
the calculated gas cost. No `ex` values are reported because the operation is not executed.
For out of gas operations, `vmTrace` reports the operation that caused the out of gas exception,
including the calculated gas cost. `vmTrace` does not report `ex` values because the operation is
not executed.
```json tab="vmTrace Example"
"vmTrace":{
@ -88,14 +90,14 @@ the calculated gas cost. No `ex` values are reported because the operation is no
}
```
| Key | Value |
|-----------| --------------------------------------------------------------------------------------|
| Key | Value |
|-----------| ------------------------------------------------------------------------------------|
| `code` | Code executed by the EVM.
| `ops` | Sequence of EVM operations (opcodes) executed in the transaction.
| `cost` | Gas cost of the opcode. Includes memory expansion costs but not gas refunds. For precompiled contract calls, reports only the actual cost.
| `ex` | Executed operations.
| `mem` | Memory read or written by the operation.
| `push` | Adjusted stack items. For swap, includes all intermediate values and end result. Otherwise, is the value pushed onto stack.
| `push` | Adjusted stack items. For swap, includes all intermediate values and the result. Otherwise, is the value pushed onto the stack.
| `store` | Account storage written by the operation.
| `used` | Remaining gas taking into account the all but 1/64th rule for calls.
| `pc` | Program counter.
@ -103,15 +105,15 @@ the calculated gas cost. No `ex` values are reported because the operation is no
## stateDiff
State changes in the requested block for each transaction represented as
a map of accounts to an object. The balance, code, nonce, and storage changes are enumerated
from immediately before the transaction to after the transaction. For the `key:value` pairs:
State changes in the requested block for each transaction represented as a map of accounts to an
object. Besu lists the balance, code, nonce, and storage changes from immediately before the
transaction to after the transaction. For the `key:value` pairs:
* `+` indicates the field didn’t exist before and now has the specified value
* `-` indicates the value was deleted
* `-` indicates a deleted value
* `*` has a from and a to value.
An absent value is distinct from zero when accounts or storage are created or cleared.
An absent value is distinct from zero when creating accounts or clearing storage.
```json tab="stateDiff Example"
"stateDiff":{
@ -135,13 +137,13 @@ An absent value is distinct from zero when accounts or storage are created or cl
}
```
| Key | Value |
|----------- | --------------------------------------------------------------------------------------|
| Key | Value |
|----------- | -------------------------------------------------------------------------------|
| `balance` | Change of balance event.
| `balance.from` | Balance before transaction.
| `balance.to` | Balance after transaction.
| `balance.from` | Balance before the transaction.
| `balance.to` | Balance after the transaction.
| `code` | Changes to code. None in this example.
| `nonce` | Change of nonce.
| `nonce.from` | Nonce before transaction.
| `nonce.to` | Nonce after transaction.
| `nonce.from` | Nonce before the transaction.
| `nonce.to` | Nonce after the transaction.
| `storage` | Changes to storage. None in this example.

@ -4,13 +4,13 @@ description: Backing up and restoring Besu
# Backups
In a decentralized blockchain, data replicates between nodes so it is not lost. However,backing up
In a decentralized blockchain, data replicates between nodes so it's not lost. But backing up
configuration and data ensures a smoother recovery from corrupted data or other failures.
## Genesis file
The genesis file for a network must be accessible on every node. We recommend the genesis file is
stored under source control.
The genesis file for a network must be accessible on every node. We recommend storing the genesis
file under source control.
## Data backups
@ -35,7 +35,7 @@ To restore data:
1. If the node is running, stop the node.
1. If required, move the data directory to another location for analysis.
1. Restore the data from your last known good backup to the same directory.
1. Ensure user permissions are valid so the data directory can be read from and written to.
1. Ensure user permissions are valid so you can read from and write to the data directory.
1. Restart the node.
## Corrupted data

@ -6,9 +6,9 @@ description: Hyperledger Besu high availability
To enable high availability to the
[RPC Pub/Sub API over WebSockets](../../Interact/APIs/RPC-PubSub.md) or the
[JSON-RPC API](../../Interact/APIs/Using-JSON-RPC-API.md), run and synchronize multiple Hyperledger
Besu nodes to the network. Use a load balancer to distribute requests across nodes in the cluster
that are ready to receive requests.
[JSON-RPC API](../../Interact/APIs/Using-JSON-RPC-API.md), run and synchronize more than one
Hyperledger Besu nodes to the network. Use a load balancer to distribute requests across nodes in
the cluster that are ready to receive requests.
![Load Balancer](../../../images/LoadBalancer.png)
@ -35,7 +35,7 @@ depends on the transactions in the
[transaction pool](../../../Concepts/Transactions/Transaction-Pool.md). If sending
[`eth_getTransactionCount`](../../../Reference/API-Methods.md#eth_gettransactioncount) and
[`eth_sendRawTransaction`](../../../Reference/API-Methods.md#eth_sendrawtransaction) requests for a
specific account to multiple nodes, the
specific account to more than one node, the
[`eth_getTransactionCount`](../../../Reference/API-Methods.md#eth_gettransactioncount) results
might be incorrect.

@ -4,8 +4,8 @@ description: Hyperledger Besu consensus protocols
# IBFT 1.0
Besu nodes can participate (that is, submit transactions and receive blocks) in a Quorum
[IBFT 1.0](https://github.com/ethereum/EIPs/issues/650) network, but cannot be a validator.
Besu nodes can operate (that is, submit transactions and receive blocks) in a Quorum
[IBFT 1.0](https://github.com/ethereum/EIPs/issues/650) network, but cannot be validators.
To connect to a Quorum IBFT 1.0 network:

@ -24,7 +24,7 @@ port using the [`--p2p-port`](../../Reference/CLI/CLI-Syntax.md#p2p-port) option
`30303`.
We also recommended opening the P2P TCP port for inbound connections. This is not strictly required
because Besu attempts to initiate outbound TCP connections. But if no nodes on the network are
because Besu attempts to open outbound TCP connections. But if no nodes on the network are
accepting inbound TCP connections, nodes cannot communicate.
Combine the P2P port with the values for the

@ -19,8 +19,8 @@ To disable P2P peer discovery, use the
With discovery disabled, peers that have already discovered or are otherwise configured to connect
to the local node (for example, using
[`admin_addPeer`](../../Reference/API-Methods.md#admin_addpeer)) can initiate connections.
[Static nodes](Static-Nodes.md) can also initiate connections.
[`admin_addPeer`](../../Reference/API-Methods.md#admin_addpeer)) can open connections.
[Static nodes](Static-Nodes.md) can also open connections.
## Monitoring peer connections

@ -48,9 +48,9 @@ By specifying `MANUAL`:
## Kubernetes
Specify `KUBERNETES` to explicitly specify Hyperledger Besu is running inside a Kubernetes cluster.
Besu automatically detects if it is running inside of a Kubernetes cluster and interacts with
Kubernetes APIs as required to determine external IP addresses and exposed ports. The configuration
is stored in `/opt/besu/shared/kube-config`.
Besu automatically detects if it's running inside of a Kubernetes cluster and interacts with
Kubernetes APIs as required to determine external IP addresses and exposed ports. Besue stores the
configuration in `/opt/besu/shared/kube-config`.
## Docker

@ -80,7 +80,7 @@ To run a node that mines blocks at a rate suitable for testing purposes:
besu --network=dev --miner-enabled --miner-coinbase=0xfe3b557e8fb62b89f4916b721be55ceb828dbd73 --rpc-http-cors-origins="all" --host-whitelist="*" --rpc-ws-enabled --rpc-http-enabled --data-path=/tmp/tmpDatdir
```
Alternatively, use the following [configuration file](../Configure/Using-Configuration-File.md)
You can also use the following [configuration file](../Configure/Using-Configuration-File.md)
on the command line to start a node with the same options as above:
```toml

@ -5,18 +5,18 @@ description: System requirements to sync and run Besu
# System requirements
The system requirements for Hyperledger Besu depend on various factors:
The system requirements for Hyperledger Besu depend on different factors, including the:
* Size of the world state for the network
* Number of transactions submitted to the network
* [Block gas limit](../../Reference/Config-Items.md#genesis-block-parameters)
* Size of the world state for the network.
* Number of transactions submitted to the network.
* [Block gas limit](../../Reference/Config-Items.md#genesis-block-parameters).
* Number and complexity of [JSON-RPC](../Interact/APIs/Using-JSON-RPC-API.md),
[PubSub](../Interact/APIs/RPC-PubSub.md), or [GraphQL](../Interact/APIs/GraphQL.md) queries
handled by the node
handled by the node.
## Determining system requirements
To determine system requirements, monitor CPU and disk space requirements using
To determine system requirements, check CPU and disk space requirements using
[Prometheus](../Monitor/Metrics.md#monitor-node-performance-using-prometheus). Grafana provides a
[sample dashboard](https://grafana.com/grafana/dashboards/10273) for Besu.
@ -40,9 +40,9 @@ Ropsten, Besu requires a minimum of 8GB of RAM.
If using fast sync in v1.4.0, explicitly disable pruning using
[`--pruning-enabled=false`](../../Reference/CLI/CLI-Syntax.md#pruning-enabled).
Syncing to the Ethereum Mainnet requires 3TB for a full sync. To reduce the requirement, use
[pruning](../../Concepts/Pruning.md). With pruning, we recommend approximately 750GB of available
disk space.
Syncing to the Ethereum Mainnet requires 3TB for a full sync. To reduce the disk space required,
use [pruning](../../Concepts/Pruning.md). With pruning, we recommend approximately 750GB
of available disk space.
## VM requirements

@ -85,4 +85,4 @@ For [account management](../../Send-Transactions/Account-Management.md), use thi
### Protocols
Besu does not implement the Whisper and Swarm protocols.
Besu does not support the Whisper and Swarm protocols.

@ -22,7 +22,7 @@ logging verbosity. The [`--logging`](../../Reference/CLI/CLI-Syntax.md#logging)
volume of events displayed in the log. Valid log levels are `OFF`, `FATAL`, `ERROR`, `WARN`,
`INFO`, `DEBUG`, `TRACE`, `ALL`. The default level is `INFO`.
For most use-cases, the basic method provides sufficient configurability.
For most use-cases, the basic method provides enough configurability.
!!! tip

@ -2,33 +2,36 @@
description: Use Onchain Privacy
---
# Using Onchain Privacy Groups
# Using onchain privacy groups
Use the [web3.js-eea library](https://github.com/PegaSysEng/web3js-eea) to create and update
membership of onchain privacy groups.
To create and update membership of onchain privacy groups, use the
[web3.js-eea library](https://github.com/PegaSysEng/web3js-eea).
!!! important
Onchain privacy groups are an early access feature in v1.4. Do not use in production networks.
The onchain privacy group interfaces may change between v1.4 and v1.5. There may not be an upgrade
path from onchain privacy groups created using v1.4 to enable use of onchain privacy group functionality
in future versions.
The onchain privacy group interfaces may change between v1.4 and v1.5. There may not be an
upgrade path from onchain privacy groups created using v1.4 to enable use of onchain privacy
group functionality in future versions.
We do not recommend creating onchain privacy groups in a chain with existing
[offchain privacy groups](../../Concepts/Privacy/Privacy-Groups.md).
## Enabling onchain privacy groups
Use the [`--privacy-onchain-groups-enabled`](../../Reference/CLI/CLI-Syntax.md#privacy-onchain-groups-enabled)
command line option to enable onchain privacy groups. When onchain privacy groups are enabled, the
To enable onchain privacy groups, use the
[`--privacy-onchain-groups-enabled`](../../Reference/CLI/CLI-Syntax.md#privacy-onchain-groups-enabled)
command line option. When you enable onchain privacy groups, you disable the
[`priv_createPrivacyGroup`](../../Reference/API-Methods.md#priv_createprivacygroup),
[`priv_deletePrivacyGroup`](../../Reference/API-Methods.md#priv_deleteprivacygroup),
and [`priv_findPrivacyGroup`](../../Reference/API-Methods.md#priv_findprivacygroup) methods for
[offchain privacy groups](../../Concepts/Privacy/Privacy-Groups.md) are disabled.
[offchain privacy groups](../../Concepts/Privacy/Privacy-Groups.md).
## Simple onchain privacy group example
To create and find an onchain privacy group using the [web3.js-eea library](https://github.com/PegaSysEng/web3js-eea):
To create and find an onchain privacy group using the
[web3.js-eea library](https://github.com/PegaSysEng/web3js-eea):
1. Update the `example/keys.js` file to match your network configuration.
1. Run:
@ -37,20 +40,23 @@ To create and find an onchain privacy group using the [web3.js-eea library](http
node simpleOnChainPrivacy.js
```
The onchain privacy group is created with two members. `findPrivacyGroup` finds and displays the
created privacy group.
This script creates the onchain privacy group with two members. `findPrivacyGroup` finds and
displays the created privacy group.
!!! tip
In the Orion logs for Orion 1 and Orion 2, `PrivacyGroupNotFound` errors are displayed. The errors
are expected behaviour and occur because private transactions check offchain and onchain to find
the privacy group for a private transaction.
The Orion logs for Orion 1 and Orion 2 displays `PrivacyGroupNotFound` errors. This is expected
behavior because private transactions check offchain and onchain to find the privacy group for
a private transaction.
## Adding and removing members
To add and remove members from an onchain privacy group, use the `addToPrivacyGroup` and
`removeFromPrivayGroup` methods in the [web3.js-eea library](https://github.com/PegaSysEng/web3js-eea)
client library.
`removeFromPrivayGroup` methods in the
[web3.js-eea library](https://github.com/PegaSysEng/web3js-eea) client library.
!!! note
When a member is added, all existing group transactions are pushed to the new member and processed.
If there are a large number of existing transactions, adding the member may take some time.
When adding a member, Besu pushes all existing group transactions to the new member and
processes them. If there are a large number of existing transactions, adding the member might
take some time.

@ -79,7 +79,7 @@ Returned by [`priv_getPrivateTransaction`](API-Methods.md#priv_getprivatetransac
| **gas** | Quantity | Gas provided by the sender. |
| **gasPrice** | Quantity | Gas price, in Wei, provided by the sender. |
| **hash** | Data, 32&nbsp;bytes | Hash of the transaction. |
| **input** | Data | Data to create or invoke a contract. |
| **input** | Data | The data to create or invoke a contract. |
| **nonce** | Quantity | Number of transactions made by the sender to the privacy group before this one. |
| **to** | Data, 20&nbsp;bytes | `null` if a contract creation transaction; otherwise, the contract address. |
| **value** | Quantity | `null` because private transactions cannot transfer Ether. |

@ -352,7 +352,7 @@ running and Metamask connected to it via the browser, run the command below to s
The script first compiles the contract, then performs a migration to the blockchain network and
then runs some tests. You can then search for the deployed contracts and transactions in the Web
Block Explorer using the addresses displayed in your output earlier `http://localhost:32768/`
(your port will differ). Output similar to the following displays (your addresses will differ).
(your port will differ). Similar output to the following displays (your addresses will differ).
!!! example

@ -51,7 +51,7 @@ The configuration file defines the
number of node key pairs to generate.
The configuration file has two subnested JSON nodes. The first is the `genesis` property defining
the IBFT 2.0 genesis file, except for the `extraData` string, which is generated automatically in
the IBFT 2.0 genesis file, except for the `extraData` string, which Besu generates automatically in
the resulting genesis file. The second is the `blockchain` property defining the number of key
pairs to generate.

Loading…
Cancel
Save