mirror of https://github.com/hyperledger/besu
[PAN-2881] [PAN-2885] Updated onchain permissioning to include accounts and dapp (#1652)
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>pull/2/head
parent
286368bb7b
commit
1ccd3acbfe
@ -1,225 +0,0 @@ |
|||||||
description: Onchain Permissioning |
|
||||||
<!--- END of page meta data --> |
|
||||||
|
|
||||||
# Onchain Permissioning |
|
||||||
|
|
||||||
Onchain permissioning uses smart contracts to store and maintain the node whitelist. Using onchain permissioning |
|
||||||
enables all nodes to read the node whitelist from one location. |
|
||||||
|
|
||||||
!!! note |
|
||||||
Pantheon supports onchain permissioning for nodes. Onchain permissioning for accounts will be available |
|
||||||
in a future Pantheon release. |
|
||||||
|
|
||||||
We have provided a set of smart contracts that interface with onchain permissioning in the |
|
||||||
[PegaSysEng/permissioning-smart-contracts](https://github.com/PegaSysEng/permissioning-smart-contracts) repository. |
|
||||||
We have also provided a management interface to interact with the contracts. |
|
||||||
|
|
||||||
## Provided Contracts |
|
||||||
|
|
||||||
The following smart contracts are provided in the [PegaSysEng/permissioning-smart-contracts](https://github.com/PegaSysEng/permissioning-smart-contracts) repository: |
|
||||||
|
|
||||||
* Ingress - a simple contract functioning as a gateway to the Admin and Rules contracts. The Ingress contract is deployed |
|
||||||
to a static address. |
|
||||||
|
|
||||||
* Node Rules - stores the node whitelist and node whitelist operations (for example, add and remove). |
|
||||||
|
|
||||||
* Admin - stores the list of admin accounts and admin list operations (for example, add and remove). |
|
||||||
|
|
||||||
## Pre-requisites |
|
||||||
|
|
||||||
For nodes that are going to maintain the nodes whitelist or the list of admin accounts: |
|
||||||
|
|
||||||
* [NodeJS](https://nodejs.org/en/) v8.9.4 or later |
|
||||||
|
|
||||||
* [Truffle](https://truffleframework.com/docs/truffle/getting-started/installation) |
|
||||||
|
|
||||||
## Add Ingress Contract to Genesis File |
|
||||||
|
|
||||||
Add the Ingress contract to the genesis file for your network by copying it from [`genesis.json`](https://github.com/PegaSysEng/permissioning-smart-contracts/blob/master/genesis.json) |
|
||||||
in the [`permissioning-smart-contracts` repository](https://github.com/PegaSysEng/permissioning-smart-contracts): |
|
||||||
|
|
||||||
```json |
|
||||||
"0x0000000000000000000000000000000000009999": { |
|
||||||
"comment": "Ingress smart contract", |
|
||||||
"balance": "0", |
|
||||||
"code": <stripped>, |
|
||||||
"storage": { |
|
||||||
<stripped> |
|
||||||
} |
|
||||||
} |
|
||||||
``` |
|
||||||
|
|
||||||
!!! important |
|
||||||
To support the permissioning contracts, ensure your genesis file includes at least the `constantinopleFixBlock` milestone. |
|
||||||
|
|
||||||
## Onchain Permissioning Setup |
|
||||||
|
|
||||||
1. Start your Pantheon node including command line options: |
|
||||||
|
|
||||||
* [--permissions-nodes-contract-enabled](../Reference/Pantheon-CLI-Syntax.md#permissions-nodes-contract-enabled) |
|
||||||
to enable onchain permissioning |
|
||||||
|
|
||||||
* [--permissions-nodes-contract-address](../Reference/Pantheon-CLI-Syntax.md#permissions-nodes-contract-address) |
|
||||||
set to the address of the Ingress contract in the genesis file (`"0x0000000000000000000000000000000000009999"`) |
|
||||||
|
|
||||||
* [--rpc-http-enabled](../Reference/Pantheon-CLI-Syntax.md#rpc-http-enabled) to enable JSON-RPC |
|
||||||
|
|
||||||
1. Create the following environment variables and set to the specified values: |
|
||||||
|
|
||||||
* `PANTHEON_NODE_PERM_ACCOUNT` - address of account used to interact with the permissioning contracts. |
|
||||||
|
|
||||||
* `PANTHEON_NODE_PERM_KEY` - private key of the account used to interact with the permissioning contracts. |
|
||||||
|
|
||||||
* `NODE_INGRESS_CONTRACT_ADDRESS` - address of the Ingress contract in the genesis file. |
|
||||||
|
|
||||||
* `PANTHEON_NODE_PERM_ENDPOINT` - required only if your node is not using the default JSON-RPC host and port (`http://127.0.0.1:8545`). |
|
||||||
Set to JSON-RPC host and port. |
|
||||||
|
|
||||||
!!! note |
|
||||||
If your network is not a [free gas network](../Configuring-Pantheon/FreeGas.md), the account used to |
|
||||||
interact with the permissioning contracts must have a balance. |
|
||||||
|
|
||||||
1. Clone the `permissioning-smart-contracts` repository: |
|
||||||
|
|
||||||
```bash |
|
||||||
git clone https://github.com/PegaSysEng/permissioning-smart-contracts.git |
|
||||||
``` |
|
||||||
|
|
||||||
1. Change into the `permissioning-smart-contracts` directory and run: |
|
||||||
|
|
||||||
```bash |
|
||||||
npm install |
|
||||||
``` |
|
||||||
|
|
||||||
## Deploy Admin and Rules Contracts |
|
||||||
|
|
||||||
!!! important |
|
||||||
Only the first node deploys the admin and rules contract. Subsequent nodes do not migrate the contracts. |
|
||||||
|
|
||||||
The node deploying the admin and rules contracts must be a miner (PoW networks) or validator (PoA networks). |
|
||||||
|
|
||||||
In the `permissioning-smart-contracts` directory, deploy the Admin and Rules contracts: |
|
||||||
|
|
||||||
```bash |
|
||||||
truffle migrate --reset |
|
||||||
``` |
|
||||||
|
|
||||||
The Admin and Rules contracts are deployed and the Ingress contract updated with the name and version of the contracts. |
|
||||||
The migration logs the addresses of the Admin and Rules contracts. |
|
||||||
|
|
||||||
!!! important |
|
||||||
The account that deploys the contracts is automatically an [Admin account](#add-and-remove-admin-accounts). |
|
||||||
|
|
||||||
## Add and Remove Nodes from the Whitelist |
|
||||||
|
|
||||||
!!! note |
|
||||||
Only [Admin accounts](#add-and-remove-admin-accounts) can add or remove nodes from the whitelist. |
|
||||||
|
|
||||||
After deploying the admin and rules contracts, the first node must add itself to the whitelist before |
|
||||||
adding other nodes. |
|
||||||
|
|
||||||
To add or remove nodes: |
|
||||||
|
|
||||||
1. In the `permissioning-smart-contracts` directory, run the Truffle console: |
|
||||||
|
|
||||||
```bash |
|
||||||
truffle console |
|
||||||
``` |
|
||||||
|
|
||||||
1. Open https://permissioning-tools.pegasys.tech/ |
|
||||||
|
|
||||||
1. Enter the [enode URL](../Configuring-Pantheon/Node-Keys.md#enode-url) of the node to be added or removed. |
|
||||||
|
|
||||||
1. Click the *Add Node* or *Remove Node* button. The truffle command is displayed. |
|
||||||
|
|
||||||
1. Click the *Copy to clipboard* button. |
|
||||||
|
|
||||||
1. Paste the copied command into the Truffle Console. |
|
||||||
|
|
||||||
When the transaction is included in a block, the transaction receipt is displayed. |
|
||||||
|
|
||||||
|
|
||||||
!!! tip |
|
||||||
If you add a running node, the node does not attempt to reconnect to the bootnode and synchronize until |
|
||||||
peer discovery restarts. To add a whitelisted node as a peer without waiting for peer discovery to restart, use [`admin_addPeer`](../Reference/Pantheon-API-Methods.md#admin_addpeer). |
|
||||||
|
|
||||||
If the node is added to the whitelist before starting the node, using `admin_addPeer` is not required because |
|
||||||
peer discovery is run on node startup. |
|
||||||
|
|
||||||
## Display Nodes Whitelist |
|
||||||
|
|
||||||
To display the nodes whitelist, paste the following into the Truffle Console: |
|
||||||
|
|
||||||
```javascript |
|
||||||
NodeRules.deployed().then(function(instance) {instance.getSize().then(function(txCount) {console.log("size of whitelist: " + txCount); var i=txCount; while(i>=0) {instance.getByIndex(i--).then(function(tx) {console.log(tx)})}});}); |
|
||||||
``` |
|
||||||
|
|
||||||
## Start Other Network Nodes |
|
||||||
|
|
||||||
For participating nodes that are not going to add or remove nodes from the whitelist: |
|
||||||
|
|
||||||
1. Start the nodes including the following options: |
|
||||||
|
|
||||||
* [--permissions-nodes-contract-enabled](../Reference/Pantheon-CLI-Syntax.md#permissions-nodes-contract-enabled) |
|
||||||
to enable onhcain permissioning |
|
||||||
|
|
||||||
* [--permissions-nodes-contract-address](../Reference/Pantheon-CLI-Syntax.md#permissions-nodes-contract-address) |
|
||||||
set to the address of the Ingress contract in the genesis file (`"0x0000000000000000000000000000000000009999"`) |
|
||||||
|
|
||||||
* [--bootnodes](../Reference/Pantheon-CLI-Syntax.md#bootnodes) set to the first node (that is, the node that [deployed |
|
||||||
the Admin and Rules contracts](#deploy-admin-and-rules-contracts). |
|
||||||
|
|
||||||
1. Copy the [enode URL](../Configuring-Pantheon/Node-Keys.md#enode-url) and [have node added to the whitelist](#add-and-remove-nodes-from-the-whitelist). |
|
||||||
|
|
||||||
For participating nodes that are going to add or remove nodes from the whitelist: |
|
||||||
|
|
||||||
1. Ensure [prerequisites installed](#pre-requisites). |
|
||||||
|
|
||||||
1. Complete [permissioning setup](#onchain-permissioning-setup). |
|
||||||
|
|
||||||
1. Copy the [enode URL](../Configuring-Pantheon/Node-Keys.md#enode-url) and [have node added to the whitelist](#add-and-remove-nodes-from-the-whitelist). |
|
||||||
|
|
||||||
1. Have account for node that will interact with permissioning contracts added as an [admin account](#add-and-remove-admin-accounts). |
|
||||||
|
|
||||||
## Bootnodes |
|
||||||
|
|
||||||
When a node is added to the network, it connects to the bootnodes until it synchronizes to the chain head regardless of |
|
||||||
node permissions. Once in sync, the permissioning rules are applied and connections to bootnodes are dropped if not permitted by node |
|
||||||
permissions. |
|
||||||
|
|
||||||
If a sychronized node loses all peer connections (that is, it has 0 peers), it reconnects to the bootnodes regardless of node |
|
||||||
permissions. When the node has connected to 1 or more non-bootnodes, connections to bootnodes are dropped if not permitted by node |
|
||||||
permissions. |
|
||||||
|
|
||||||
## Add and Remove Admin Accounts |
|
||||||
|
|
||||||
The account that deploys the Rules contract is automatically an Admin account. Only Admin accounts can |
|
||||||
add or remove nodes from the whitelist. |
|
||||||
|
|
||||||
To add Admin accounts, paste the following commands into Truffle Console: |
|
||||||
|
|
||||||
```javascript tab="Truffle Console Command" |
|
||||||
Admin.deployed().then(function(instance) {instance.addAdmin("<Admin Account>").then(function(tx) {console.log(tx)});}); |
|
||||||
``` |
|
||||||
|
|
||||||
```javascript tab="Example" |
|
||||||
Admin.deployed().then(function(instance) {instance.addAdmin("0x627306090abaB3A6e1400e9345bC60c78a8BEf57").then(function(tx) {console.log(tx)});}); |
|
||||||
``` |
|
||||||
|
|
||||||
To remove Admin accounts, paste the following commands into Truffle Console: |
|
||||||
|
|
||||||
```javascript tab="Truffle Console Command" |
|
||||||
Admin.deployed().then(function(instance) {instance.removeAdmin("<Admin Account>").then(function(tx) {console.log(tx)});}); |
|
||||||
``` |
|
||||||
|
|
||||||
```javascript tab="Example" |
|
||||||
Admin.deployed().then(function(instance) {instance.removeAdmin("0x627306090abaB3A6e1400e9345bC60c78a8BEf57").then(function(tx) {console.log(tx)});}); |
|
||||||
``` |
|
||||||
|
|
||||||
### Display Admin Accounts |
|
||||||
|
|
||||||
To display the list of admin accounts, paste the following into the Truffle Console: |
|
||||||
|
|
||||||
```javascript |
|
||||||
Admin.deployed().then(function(instance) {instance.getAdmins().then(function(tx) {console.log(tx)});}); |
|
||||||
``` |
|
@ -0,0 +1,166 @@ |
|||||||
|
description: Setting up and using onchain Permissioning |
||||||
|
<!--- END of page meta data --> |
||||||
|
|
||||||
|
# Getting Started with Onchain Permissioning |
||||||
|
|
||||||
|
The following steps describe bootstrapping a local permissioned network using a Pantheon node and a |
||||||
|
development server to run the Permissioning Management Dapp. |
||||||
|
|
||||||
|
To start a network with onchain permissioning: |
||||||
|
|
||||||
|
1. [Install pre-requisites](#pre-requisites) |
||||||
|
1. [Add the ingress contracts to the genesis file](#add-ingress-contracts-to-genesis-file) |
||||||
|
1. [Set environment variables](#set-environment-variables) |
||||||
|
1. [Start first node with onchain permissioning and the JSON-RPC HTTP service enabled](#onchain-permissioning-command-line-options) |
||||||
|
1. [Clone the permissioning contracts repository and install dependencies](#clone-contracts-and-install-dependencies) |
||||||
|
1. [Deploy the permissioning contracts](#deploy-contracts) |
||||||
|
1. [Start the development server for the Permissioning Management Dapp](#start-the-permissioning-management-dapp) |
||||||
|
1. [Add the first node to the nodes whitelist](#update-nodes-whitelist) |
||||||
|
|
||||||
|
## Pre-requisites |
||||||
|
|
||||||
|
For the development server to run the dapp: |
||||||
|
|
||||||
|
* [NodeJS](https://nodejs.org/en/) v10.16.0 or later |
||||||
|
* [Yarn](https://yarnpkg.com/en/) v1.15 or later |
||||||
|
* Browser with [MetaMask installed](https://metamask.io/) |
||||||
|
|
||||||
|
To deploy the permissioning contracts: |
||||||
|
|
||||||
|
* [Truffle](https://truffleframework.com/docs/truffle/getting-started/installation) |
||||||
|
|
||||||
|
## Add Ingress Contracts to Genesis File |
||||||
|
|
||||||
|
!!! tip |
||||||
|
If the network is using only account or nodes permissioning, add only the relevant ingress contract to the |
||||||
|
genesis file. |
||||||
|
|
||||||
|
Add the Ingress contracts to the genesis file for your network by copying them from [`genesis.json`](https://github.com/PegaSysEng/permissioning-smart-contracts/blob/master/genesis.json) |
||||||
|
in the [`permissioning-smart-contracts` repository](https://github.com/PegaSysEng/permissioning-smart-contracts): |
||||||
|
|
||||||
|
```json |
||||||
|
|
||||||
|
"0x0000000000000000000000000000000000008888": { |
||||||
|
"comment": "Account Ingress smart contract", |
||||||
|
"balance": "0", |
||||||
|
"code": <stripped>, |
||||||
|
"storage": { |
||||||
|
<stripped> |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
"0x0000000000000000000000000000000000009999": { |
||||||
|
"comment": "Node Ingress smart contract", |
||||||
|
"balance": "0", |
||||||
|
"code": <stripped>, |
||||||
|
"storage": { |
||||||
|
<stripped> |
||||||
|
} |
||||||
|
} |
||||||
|
``` |
||||||
|
|
||||||
|
!!! important |
||||||
|
To support the permissioning contracts, ensure your genesis file includes at least the `constantinopleFixBlock` milestone. |
||||||
|
|
||||||
|
## Set Environment Variables |
||||||
|
|
||||||
|
Create the following environment variables and set to the specified values: |
||||||
|
|
||||||
|
* `PANTHEON_NODE_PERM_ACCOUNT` - account to deploy the permissioning contracts and become the first admin account. |
||||||
|
|
||||||
|
* `PANTHEON_NODE_PERM_KEY` - private key of the account to deploy the permissioning contracts. |
||||||
|
|
||||||
|
* `ACCOUNT_INGRESS_CONTRACT_ADDRESS` - address of the Account Ingress contract in the genesis file. |
||||||
|
|
||||||
|
* `NODE_INGRESS_CONTRACT_ADDRESS` - address of the Node Ingress contract in the genesis file. |
||||||
|
|
||||||
|
* `PANTHEON_NODE_PERM_ENDPOINT` - required only if your node is not using the default JSON-RPC host and port (`http://127.0.0.1:8545`). |
||||||
|
Set to JSON-RPC host and port. When bootstrapping the network, the specified node is used to deploy the contracts and is the first node |
||||||
|
in the network. |
||||||
|
|
||||||
|
!!! important |
||||||
|
The account specified must be a miner (PoW networks) or validator (PoA networks). |
||||||
|
|
||||||
|
If your network is not a [free gas network](../../Configuring-Pantheon/FreeGas.md), the account used to |
||||||
|
interact with the permissioning contracts must have a balance. |
||||||
|
|
||||||
|
## Onchain Permissioning Command Line Options |
||||||
|
|
||||||
|
All nodes participating in a permissioned network must include the command line options to enable account and/or |
||||||
|
node permissioning: |
||||||
|
|
||||||
|
* [--permissions-accounts-contract-enabled](../../Reference/Pantheon-CLI-Syntax.md#permissions-accounts-contract-enabled) |
||||||
|
to enable onchain accounts permissioning |
||||||
|
|
||||||
|
* [--permissions-accounts-contract-address](../../Reference/Pantheon-CLI-Syntax.md#permissions-accounts-contract-address) |
||||||
|
set to the address of the Account Ingress contract in the genesis file (`"0x0000000000000000000000000000000000008888"`) |
||||||
|
|
||||||
|
* [--permissions-nodes-contract-enabled](../../Reference/Pantheon-CLI-Syntax.md#permissions-nodes-contract-enabled) |
||||||
|
to enable onchain nodes permissioning |
||||||
|
|
||||||
|
* [--permissions-nodes-contract-address](../../Reference/Pantheon-CLI-Syntax.md#permissions-nodes-contract-address) |
||||||
|
set to the address of the Node Ingress contract in the genesis file (`"0x0000000000000000000000000000000000009999"`) |
||||||
|
|
||||||
|
## Clone Project and Install Dependencies |
||||||
|
|
||||||
|
1. Clone the `permissioning-smart-contracts` repository: |
||||||
|
|
||||||
|
```bash |
||||||
|
git clone https://github.com/PegaSysEng/permissioning-smart-contracts.git |
||||||
|
``` |
||||||
|
|
||||||
|
1. Change into the `permissioning-smart-contracts` directory and run: |
||||||
|
|
||||||
|
```bash |
||||||
|
yarn install |
||||||
|
``` |
||||||
|
|
||||||
|
## Build Project |
||||||
|
|
||||||
|
In the `permissioning-smart-contracts` directory, build the project: |
||||||
|
|
||||||
|
```bash |
||||||
|
yarn run build |
||||||
|
``` |
||||||
|
|
||||||
|
## Deploy Contracts |
||||||
|
|
||||||
|
In the `permissioning-smart-contracts` directory, deploy the Admin and Rules contracts: |
||||||
|
|
||||||
|
```bash |
||||||
|
truffle migrate --reset |
||||||
|
``` |
||||||
|
|
||||||
|
The Admin and Rules contracts are deployed and the Ingress contract updated with the name and version of the contracts. |
||||||
|
The migration logs the addresses of the Admin and Rules contracts. |
||||||
|
|
||||||
|
!!! important |
||||||
|
The account that deploys the contracts is automatically an [admin account](#update-accounts-or-admin-accounts-whitelists). |
||||||
|
|
||||||
|
## Start the Development Server for the Permissioning Management Dapp |
||||||
|
|
||||||
|
1. In the `permissioning-smart-contracts` directory, start the web server serving the Dapp: |
||||||
|
|
||||||
|
```bash |
||||||
|
yarn start |
||||||
|
``` |
||||||
|
|
||||||
|
The Dapp is displayed at [http://localhost:3000](http://localhost:3000). |
||||||
|
|
||||||
|
1. Ensure MetaMask is connected to your local node (by default `http://localhost:8545`). |
||||||
|
|
||||||
|
A MetaMask notification is displayed requesting permission for Pantheon Permissioning to |
||||||
|
connect to your account. |
||||||
|
|
||||||
|
1. Click the _Connect_ button. |
||||||
|
|
||||||
|
The Dapp is displayed with the account specified by the `PANTHEON_NODE_PERM_ACCOUNT` environment variable |
||||||
|
in the _Whitelisted Accounts_ and _Admin Accounts_ tabs. |
||||||
|
|
||||||
|
!!! note |
||||||
|
Only [admin accounts](#update-accounts-or-admin-accounts-whitelists) can add or remove nodes from the whitelist. |
||||||
|
|
||||||
|
## Add First Node to Whitelist |
||||||
|
|
||||||
|
The first node must [add itself to the whitelist](Updating-Whitelists.md#update-nodes-whitelist) before adding other nodes. |
||||||
|
|
@ -0,0 +1,55 @@ |
|||||||
|
description: Onchain Permissioning |
||||||
|
<!--- END of page meta data --> |
||||||
|
|
||||||
|
# Onchain Permissioning |
||||||
|
|
||||||
|
Onchain permissioning uses smart contracts to store and maintain the node, account, and admin whitelists. |
||||||
|
Using onchain permissioning enables all nodes to read the whitelists from a single source, the blockchain. |
||||||
|
|
||||||
|
!!! important |
||||||
|
The dependency chain for our implementation of onchain permissioning includes [web3j](https://github.com/web3j/web3j) which is |
||||||
|
LGPL licensed. |
||||||
|
|
||||||
|
## Permissioning Contracts |
||||||
|
|
||||||
|
The permissioning smart contracts are provided in the [PegaSysEng/permissioning-smart-contracts](https://github.com/PegaSysEng/permissioning-smart-contracts) repository: |
||||||
|
|
||||||
|
* Ingress contracts for nodes and accounts - proxy contracts defined in the genesis file that defer the permissioning logic to the |
||||||
|
Node Rules and Account Rules contracts. The Ingress contracts are deployed to static addresses. |
||||||
|
|
||||||
|
* Node Rules - stores the node whitelist and node whitelist operations (for example, add and remove). |
||||||
|
|
||||||
|
* Account Rules - stores the accounts whitelist and account whitelist operations (for example, add and remove). |
||||||
|
|
||||||
|
* Admin - stores the list of admin accounts and admin list operations (for example, add and remove). There is |
||||||
|
one list of admin accounts for node and accounts. |
||||||
|
|
||||||
|
## Permissioning Management Dapp |
||||||
|
|
||||||
|
The [Permissioning Management Dapp](Getting-Started-Onchain-Permissioning.md) is provided to view |
||||||
|
and maintain the whitelists. |
||||||
|
|
||||||
|
!!! tip |
||||||
|
Before v1.2, we provided a [management interface using Truffle](https://docs.pantheon.pegasys.tech/en/1.1.4/Permissions/Onchain-Permissioning/). |
||||||
|
The management interface using Truffle is deprecated and we recommend using the Dapp for an improved user experience. |
||||||
|
|
||||||
|
### Whitelists |
||||||
|
|
||||||
|
Permissioning implements three whitelists: |
||||||
|
|
||||||
|
* [Accounts](Getting-Started-Onchain-Permissioning.md#update-accounts-or-admin-accounts-whitelists) can submit |
||||||
|
transactions to the network |
||||||
|
|
||||||
|
* [Nodes](Getting-Started-Onchain-Permissioning.md#update-nodes-whitelist) can participate in the network |
||||||
|
|
||||||
|
* [Admins](Getting-Started-Onchain-Permissioning.md#update-accounts-or-admin-accounts-whitelists) are accounts that |
||||||
|
can update the accounts and nodes whitelists |
||||||
|
|
||||||
|
## Bootnodes |
||||||
|
|
||||||
|
When a node is added to the network, it connects to the bootnodes until it synchronizes to the chain head regardless of |
||||||
|
node permissions. Once in sync, the permissioning rules in the Account Rules and Node Rules smart contracts are applied. |
||||||
|
|
||||||
|
If a sychronized node loses all peer connections (that is, it has 0 peers), it reconnects to the bootnodes to |
||||||
|
rediscover peers. |
||||||
|
|
@ -0,0 +1,46 @@ |
|||||||
|
description: Updating onchain whitelists |
||||||
|
<!--- END of page meta data --> |
||||||
|
|
||||||
|
## Update Nodes Whitelist |
||||||
|
|
||||||
|
To add a node to the nodes whitelist: |
||||||
|
|
||||||
|
1. In the _Whitelisted Nodes_ tab of the Permissioning Management Dapp, click the _Add Whitelisted Nodes_ |
||||||
|
button. The add node window is displayed. |
||||||
|
|
||||||
|
2. Enter the [enode URL](../../Configuring-Pantheon/Node-Keys.md#enode-url) of the node to be added and click |
||||||
|
the _Add Whitelisted Node_ button. |
||||||
|
|
||||||
|
To remove a node from the nodes whitelist: |
||||||
|
|
||||||
|
1. In the _Whitelisted Nodes_ tab of the Permissioning Management Dapp, hover over the row of the node to remove. |
||||||
|
A trash can is displayed. |
||||||
|
|
||||||
|
1. Click on the trash can. |
||||||
|
|
||||||
|
!!! tip |
||||||
|
If you add a running node, the node does not attempt to reconnect to the bootnode and synchronize until |
||||||
|
peer discovery restarts. To add a whitelisted node as a peer without waiting for peer discovery to restart, use [`admin_addPeer`](../../Reference/Pantheon-API-Methods.md#admin_addpeer). |
||||||
|
|
||||||
|
If the node is added to the whitelist before starting the node, using `admin_addPeer` is not required because |
||||||
|
peer discovery is run on node startup. |
||||||
|
|
||||||
|
## Update Accounts Whitelists |
||||||
|
|
||||||
|
To add an account to the accounts whitelist: |
||||||
|
|
||||||
|
1. In the _Whitelisted Accounts_ tab of the Permissioning Management Dapp, click the _Add Whitelisted Account_ |
||||||
|
button. The add account window is displayed. |
||||||
|
|
||||||
|
1. Enter the account address in the _Account Address_ field and click the _Add Whitelisted Account_ button. |
||||||
|
|
||||||
|
To remove an account from the accounts whitelist: |
||||||
|
|
||||||
|
1. In the _Whitelisted Accounts_ tab of the Permissioning Management Dapp, hover over the |
||||||
|
row of the account to be removed. A trash can is displayed. |
||||||
|
|
||||||
|
1. Click on the trash can. |
||||||
|
|
||||||
|
## Update Admins |
||||||
|
|
||||||
|
Admins are added or removed in the same way as accounts except in the _Admin Accounts_ tab. |
Loading…
Reference in new issue