Fix build failure (Update to mkdocs material 5 and fix tabs) (#489)

* update deps and theme
* update code block tabs on all doc
* fix trailing spaces

fixes #488

Signed-off-by: Nicolas MASSART <nicolas.massart@consensys.net>
pull/493/head
Nicolas MASSART 4 years ago committed by GitHub
parent c0e947225a
commit b31db53f03
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      CI/requirements.txt
  2. 109
      docs/Concepts/Consensus-Protocols/Overview-Consensus.md
  3. 100
      docs/HowTo/Configure/Consensus-Protocols/IBFT.md
  4. 16
      docs/HowTo/Configure/FreeGas.md
  5. 19
      docs/HowTo/Deploy/Production.md
  6. 2
      docs/HowTo/Get-Started/Install-Binaries.md
  7. 2
      docs/HowTo/Get-Started/Run-Docker-Image.md
  8. 56
      docs/HowTo/Interact/APIs/Authentication.md
  9. 62
      docs/HowTo/Interact/APIs/GraphQL.md
  10. 132
      docs/HowTo/Interact/APIs/RPC-PubSub.md
  11. 44
      docs/HowTo/Interact/APIs/Using-JSON-RPC-API.md
  12. 20
      docs/HowTo/Interact/Client-Libraries/web3js-eea.md
  13. 40
      docs/HowTo/Monitor/Metrics.md
  14. 6
      docs/HowTo/Send-Transactions/Revert-Reason.md
  15. 4
      docs/HowTo/Troubleshoot/Java-Flight-Recording.md
  16. 16
      docs/HowTo/Troubleshoot/Troubleshooting.md
  17. 6930
      docs/Reference/API-Methods.md
  18. 190
      docs/Reference/CLI/CLI-Subcommands.md
  19. 2984
      docs/Reference/CLI/CLI-Syntax.md
  20. 130
      docs/Reference/Trace-Types.md
  21. 26
      docs/Tutorials/Examples/Privacy-Example.md
  22. 4
      docs/Tutorials/Examples/Private-Network-Example-Azure.md
  23. 206
      docs/Tutorials/Examples/Private-Network-Example.md
  24. 82
      docs/Tutorials/Permissioning/Create-Permissioned-Network.md
  25. 10
      docs/Tutorials/Privacy/Configuring-Multi-Tenancy.md
  26. 98
      docs/Tutorials/Privacy/Configuring-Privacy.md
  27. 72
      docs/Tutorials/Private-Network/Create-IBFT-Network.md
  28. 66
      docs/Tutorials/Private-Network/Create-Private-Clique-Network.md
  29. 48
      docs/Tutorials/Private-Network/Create-Private-Network.md
  30. 2
      docs/custom_theme/assets/javascripts/custom_theme.js
  31. 4
      docs/custom_theme/assets/stylesheets/custom_theme.css
  32. BIN
      docs/custom_theme/favicon.ico
  33. 14
      docs/custom_theme/favicon.svg
  34. 80
      docs/custom_theme/partials/footer.html
  35. 80
      docs/custom_theme/partials/header.html
  36. 29
      docs/custom_theme/partials/logo.html
  37. 39
      docs/custom_theme/partials/toc.html
  38. 16
      mkdocs.yml

@ -1,5 +1,5 @@
mkdocs==1.1
mkdocs-material==4.6.3
mkdocs==1.1.2
mkdocs-material==5.4.0
Markdown==3.2.1
markdown-fenced-code-tabs==1.0.3
markdown-include==0.5.1
@ -8,3 +8,5 @@ mkdocs-markdownextradata-plugin==0.1.3
mkdocs-exclude==1.0.2
mkdocs-redirects==1.0.0
mkdocs-git-revision-date-localized-plugin==0.5.0
mkdocs-minify-plugin==0.3.0
plantuml-markdown==3.3.0

@ -11,53 +11,62 @@ Besu implements the following consensus protocols:
* [IBFT 2.0](../../HowTo/Configure/Consensus-Protocols/IBFT.md) (Proof of Authority)
* [Quorum IBFT 1.0](../../HowTo/Configure/Consensus-Protocols/QuorumIBFT.md) (Proof of Authority).
The `config` property in the genesis file specifies the consensus protocol for a chain. For
example:
```json tab="Ethash"
{
"config": {
...
"ethash": {
...
}
},
...
}
```
```json tab="Clique"
{
"config": {
...
"clique": {
...
}
},
...
}
```
```json tab="IBFT 2.0"
{
"config": {
...
"ibft2": {
...
}
},
...
}
```
```json tab="IBFT 1.0"
{
"config": {
...
"ibft": {
...
}
},
...
}
```
The `config` property in the genesis file specifies the consensus protocol for a chain.
!!! example
=== "Ethash"
```json
{
"config": {
...
"ethash": {
...
}
},
...
}
```
=== "Clique"
```json
{
"config": {
...
"clique": {
...
}
},
...
}
```
=== "IBFT 2.0"
```json
{
"config": {
...
"ibft2": {
...
}
},
...
}
```
=== "IBFT 1.0"
```json
{
"config": {
...
"ibft": {
...
}
},
...
}
```

@ -265,56 +265,60 @@ To add or remove validators without voting:
!!! example "Transitions object in the genesis file"
```bash tab="Syntax"
{
"config": {
...
"ibft2": {
"blockperiodseconds": 2,
"epochlength": 30000,
"requesttimeoutseconds": 4
},
"transitions": {
"ibft2": [
{
"block": <BlockNumber>,
"validators": [
<ValidatorAddressX>,
...
<ValidatorAddressZ>
]
}
]
}
},
...
}
```
```bash tab="Example"
{
"config": {
...
"ibft2": {
"blockperiodseconds": 2,
"epochlength": 30000,
"requesttimeoutseconds": 4
},
"transitions": {
"ibft2": [
{
"block": 25,
"validators": [
"0x372a70ace72b02cc7f1757183f98c620254f9c8d",
"0x9811ebc35d7b06b3fa8dc5809a1f9c52751e1deb"
]
=== "Syntax"
```bash
{
"config": {
...
"ibft2": {
"blockperiodseconds": 2,
"epochlength": 30000,
"requesttimeoutseconds": 4
},
"transitions": {
"ibft2": [
{
"block": <BlockNumber>,
"validators": [
<ValidatorAddressX>,
...
<ValidatorAddressZ>
]
}
]
}
},
...
}
```
=== "Example"
```bash
{
"config": {
...
"ibft2": {
"blockperiodseconds": 2,
"epochlength": 30000,
"requesttimeoutseconds": 4
},
"transitions": {
"ibft2": [
{
"block": 25,
"validators": [
"0x372a70ace72b02cc7f1757183f98c620254f9c8d",
"0x9811ebc35d7b06b3fa8dc5809a1f9c52751e1deb"
]
}
]
}
]
},
...
}
},
...
}
```
```
1. Restart all nodes in the network using the updated genesis file.
1. To verify the changes after the transition block, call

@ -77,13 +77,17 @@ size (in bytes).
When starting nodes, set the [minimum gas price](../../Reference/CLI/CLI-Syntax.md#min-gas-price)
to zero.
```bash tab="Command Line"
--min-gas-price=0
```
=== "Command Line"
```bash tab="Configuration File"
min-gas-price=0
```
```bash
--min-gas-price=0
```
=== "Configuration File"
```bash
min-gas-price=0
```
## Configuring free gas in Truffle

@ -13,13 +13,16 @@ To deploy the Permissioning Management Dapp for production:
1. In the root of the unpack directory, add a file called `config.json` replacing the placeholders
shown below.
```json tab="config.json"
{
"accountIngressAddress": "<Address of the account ingress contract>",
"nodeIngressAddress": "<Address of the node ingress contract>",
"networkId": "<ID of your Ethereum network>"
}
```
!!!example "config.json"
```json
{
"accountIngressAddress": "<Address of the account ingress contract>",
"nodeIngressAddress": "<Address of the node ingress contract>",
"networkId": "<ID of your Ethereum network>"
}
```
1. On your webserver, host the contents of the directory as static files and direct root requests
to `index.html`.
@ -32,4 +35,4 @@ procedure above to deploy the Permissioning Management Dapp to your webserver.
<!-- Links -->
[projects release page]: https://github.com/PegaSysEng/permissioning-smart-contracts/releases/latest
[Getting Started with Onchain Permissioning]: ../../Tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md
[Getting Started with Onchain Permissioning]: ../../Tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md

@ -71,6 +71,6 @@ Unpack the downloaded files and change into the `besu-<release>` directory.
Display Besu command line help to confirm installation:
```bash tab="Linux/macOS"
```bash
bin/besu --help
```

@ -22,7 +22,7 @@ Use this Docker image to run a single Besu node without installing Besu.
To run a Besu node in a container connected to the Ethereum MainNet:
```bash tab="latest"
```bash
docker run hyperledger/besu:latest
```

@ -89,25 +89,35 @@ respectively. HTTP and WS requires a different token.
!!! example
```bash tab="Generate a token for HTTP"
curl -X POST --data '{"username":"username1","password":"pegasys"}' <JSON-RPC-http-hostname:http-port>/login
```
=== "Generate a token for HTTP"
```bash tab="Example for HTTP"
curl -X POST --data '{"username":"username1","password":"pegasys"}' http://localhost:8545/login
```
```bash
curl -X POST --data '{"username":"username1","password":"pegasys"}' <JSON-RPC-http-hostname:http-port>/login
```
```bash tab="Generate a token for WS"
curl -X POST --data '{"username":"username1","password":"pegasys"}' <JSON-RPC-ws-hostname:ws-port>/login
```
=== "Example for HTTP"
```bash tab="Example for WS"
curl -X POST --data '{"username":"username1","password":"pegasys"}' http://localhost:8546/login
```
```bash
curl -X POST --data '{"username":"username1","password":"pegasys"}' http://localhost:8545/login
```
```json tab="JSON result"
{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJwZXJtaXNzaW9ucyI6WyIqOioiXSwidXNlcm5hbWUiOiJ1c2VyMiIsImlhdCI6MTU1MDQ2MDYwNCwiZXhwIjoxNTUwNDYwOTA0fQ.l2Ycqzl_AyvReXBeUSayOlOMS_E8-DCuz3q0Db0DKD7mqyl6q-giWoEtfdWzUEvZbRRi2_ecKO3N6JkXq7zMKQAJbVAEzobfbaaXWcQEpHOjtnK4_Yz-UPyKiXtu7HGdcdl5Tfx3dKoksbqkBl3U3vFWxzmFnuu3dAISfVJYUNA"}
```
=== "Generate a token for WS"
```bash
curl -X POST --data '{"username":"username1","password":"pegasys"}' <JSON-RPC-ws-hostname:ws-port>/login
```
=== "Example for WS"
```bash
curl -X POST --data '{"username":"username1","password":"pegasys"}' http://localhost:8546/login
```
=== "JSON result"
```json
{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJwZXJtaXNzaW9ucyI6WyIqOioiXSwidXNlcm5hbWUiOiJ1c2VyMiIsImlhdCI6MTU1MDQ2MDYwNCwiZXhwIjoxNTUwNDYwOTA0fQ.l2Ycqzl_AyvReXBeUSayOlOMS_E8-DCuz3q0Db0DKD7mqyl6q-giWoEtfdWzUEvZbRRi2_ecKO3N6JkXq7zMKQAJbVAEzobfbaaXWcQEpHOjtnK4_Yz-UPyKiXtu7HGdcdl5Tfx3dKoksbqkBl3U3vFWxzmFnuu3dAISfVJYUNA"}
```
Authentication tokens expire five minutes after generation. If you require access after the token
expires, you need to generate a new token.
@ -198,10 +208,14 @@ Specify the `Bearer` in the header.
!!! example
```bash tab="cURL Request with Authentication Placeholders"
curl -X POST -H 'Authorization: Bearer <JWT_TOKEN>' -d '{"jsonrpc":"2.0","method":"<API_METHOD>","params":[],"id":1}' <JSON-RPC-http-hostname:port>
```
=== "cURL Request with Authentication Placeholders"
```bash
curl -X POST -H 'Authorization: Bearer <JWT_TOKEN>' -d '{"jsonrpc":"2.0","method":"<API_METHOD>","params":[],"id":1}' <JSON-RPC-http-hostname:port>
```
=== "cURL Request with Authentication"
```bash tab="cURL Request with Authentication"
curl -X POST -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJwZXJtaXNzaW9ucyI6WyIqOioiXSwidXNlcm5hbWUiOiJ1c2VyMiIsImlhdCI6MTU1MDQ2MTQxNiwiZXhwIjoxNTUwNDYxNzE2fQ.WQ1mqpqzRLHaoL8gOSEZPvnRs_qf6j__7A3Sg8vf9RKvWdNTww_vRJF1gjcVy-FFh96AchVnQyXVx0aNUz9O0txt8VN3jqABVWbGMfSk2T_CFdSw5aDjuriCsves9BQpP70Vhj-tseaudg-XU5hCokX0tChbAqd9fB2138zYm5M' -d '{"jsonrpc":"2.0","method":"net_listening","params":[],"id":1}' http://localhost:8545
```
```bash
curl -X POST -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJwZXJtaXNzaW9ucyI6WyIqOioiXSwidXNlcm5hbWUiOiJ1c2VyMiIsImlhdCI6MTU1MDQ2MTQxNiwiZXhwIjoxNTUwNDYxNzE2fQ.WQ1mqpqzRLHaoL8gOSEZPvnRs_qf6j__7A3Sg8vf9RKvWdNTww_vRJF1gjcVy-FFh96AchVnQyXVx0aNUz9O0txt8VN3jqABVWbGMfSk2T_CFdSw5aDjuriCsves9BQpP70Vhj-tseaudg-XU5hCokX0tChbAqd9fB2138zYm5M' -d '{"jsonrpc":"2.0","method":"net_listening","params":[],"id":1}' http://localhost:8545
```

@ -52,39 +52,47 @@ the [Besu GraphQL schema] from within the app.
!!! example
```bash tab="Pending Transaction Count"
curl -X POST -H "Content-Type: application/json" --data '{ "query": "{pending {transactionCount}}"}' http://localhost:8547/graphql
```
=== "Pending Transaction Count"
```bash
curl -X POST -H "Content-Type: application/json" --data '{ "query": "{pending {transactionCount}}"}' http://localhost:8547/graphql
```
```bash tab="Result"
{
"data" : {
"pending" : {
"transactionCount" : 2
=== "Result"
```bash
{
"data" : {
"pending" : {
"transactionCount" : 2
}
}
}
}
}
```
```
!!! example
```bash tab="Pending Transactions"
curl -X POST -H "Content-Type: application/json" --data '{ "query": "{pending {transactions{hash}}}"}' http://localhost:8547/graphql
```
```bash tab="Result"
{
"data" : {
"pending" : {
"transactions" : [ {
"hash" : "0xbb3ab8e2113a4afdde9753782cb0680408c0d5b982572dda117a4c72fafbf3fa"
}, {
"hash" : "0xf6bd6b1bccf765024bd482a71c6855428e2903895982090ab5dbb0feda717af6"
} ]
=== "Pending Transactions"
```bash
curl -X POST -H "Content-Type: application/json" --data '{ "query": "{pending {transactions{hash}}}"}' http://localhost:8547/graphql
```
=== "Result"
```bash
{
"data" : {
"pending" : {
"transactions" : [ {
"hash" : "0xbb3ab8e2113a4afdde9753782cb0680408c0d5b982572dda117a4c72fafbf3fa"
}, {
"hash" : "0xf6bd6b1bccf765024bd482a71c6855428e2903895982090ab5dbb0feda717af6"
} ]
}
}
}
}
}
```
```
<!-- Links -->
[Besu GraphQL schema]: https://github.com/hyperledger/besu/blob/master/ethereum/api/src/main/resources/schema.graphqls

@ -202,74 +202,90 @@ The logs subscription returns [log objects](../../../Reference/API-Objects.md#lo
!!!example "Public logs"
```json tab="All logs"
{"id": 1, "method": "eth_subscribe", "params": ["logs",{}]}
```
=== "All logs"
```json tab="Specific address and topic"
{"id": 1, "method": "eth_subscribe", "params": ["logs", {"address": "0x8320fe7702b96808f7bbc0d4a888ed1468216cfd", "topics": ["0xd78a0cb8bb633d06981248b816e7bd33c2a35a6089241d099fa519e361cab902"]}]}
```
```json
{"id": 1, "method": "eth_subscribe", "params": ["logs",{}]}
```
```json tab="Result"
{"jsonrpc":"2.0","id":1,"result":"0x2"}
```
=== "Specific address and topic"
```json tab="Notification"
{
"jsonrpc":"2.0",
"method":"eth_subscription",
"params":{
"subscription":"0x2",
"result":{
"logIndex":"0x0",
"removed":false,
"blockNumber":"0x2174",
"blockHash":"0x7bc83837534aa13df55ff7db77784b1d1ba666d4c4bdd223cae9fe09c7c37eba",
"transactionHash":"0x942179373e413824c6bc7045e92295aff91b679215446549b4aeb084da46495b",
"transactionIndex":"0x0",
"address":"0x9b8397f1b0fecd3a1a40cdd5e8221fa461898517",
"data":"0x",
"topics":["0x199cd93e851e4c78c437891155e2112093f8f15394aa89dab09e38d6ca072787","0x0000000000000000000000000000000000000000000000000000000000000005"]
}
}
}
```
```json
{"id": 1, "method": "eth_subscribe", "params": ["logs", {"address": "0x8320fe7702b96808f7bbc0d4a888ed1468216cfd", "topics": ["0xd78a0cb8bb633d06981248b816e7bd33c2a35a6089241d099fa519e361cab902"]}]}
```
=== "Result"
```json
{"jsonrpc":"2.0","id":1,"result":"0x2"}
```
=== "Notification"
```json
{
"jsonrpc":"2.0",
"method":"eth_subscription",
"params":{
"subscription":"0x2",
"result":{
"logIndex":"0x0",
"removed":false,
"blockNumber":"0x2174",
"blockHash":"0x7bc83837534aa13df55ff7db77784b1d1ba666d4c4bdd223cae9fe09c7c37eba",
"transactionHash":"0x942179373e413824c6bc7045e92295aff91b679215446549b4aeb084da46495b",
"transactionIndex":"0x0",
"address":"0x9b8397f1b0fecd3a1a40cdd5e8221fa461898517",
"data":"0x",
"topics":["0x199cd93e851e4c78c437891155e2112093f8f15394aa89dab09e38d6ca072787","0x0000000000000000000000000000000000000000000000000000000000000005"]
}
}
}
```
!!!example "Private logs"
```json tab="All logs for privacy group"
{"id": 1, "method": "priv_subscribe", "params": ["4sSv8eqB6/0lV9I0tBGUhPjjHtLEf3z0eeMc8Lokkyo=", "logs",{}]}
```
=== "All logs for privacy group"
```json tab="Specific address and topic"
{"id": 1, "method": "priv_subscribe", "params": ["4sSv8eqB6/0lV9I0tBGUhPjjHtLEf3z0eeMc8Lokkyo=", "logs", {"address": "0x8320fe7702b96808f7bbc0d4a888ed1468216cfd", "topics": ["0xd78a0cb8bb633d06981248b816e7bd33c2a35a6089241d099fa519e361cab902"]}]}
```
```json
{"id": 1, "method": "priv_subscribe", "params": ["4sSv8eqB6/0lV9I0tBGUhPjjHtLEf3z0eeMc8Lokkyo=", "logs",{}]}
```
```json tab="Result"
{"jsonrpc":"2.0","id":1,"result":"0x1"}
```
=== "Specific address and topic"
```json tab="Notification"
{
"jsonrpc":"2.0",
"method":"priv_subscription",
"params":{
"subscription":"0x1",
"privacyGroupId":"4sSv8eqB6/0lV9I0tBGUhPjjHtLEf3z0eeMc8Lokkyo=",
"result":{
"logIndex":"0x0",
"removed":false,
"blockNumber":"0x285",
"blockHash":"0x98490766b16de2a4d044c04d92599d71e626bc96e42f0c74274ef4e03fafd579",
"transactionHash":"0x40034ef14e3a22946693dd2a11efddf3a8850ddcad46b408198df6c176c53ffb",
"transactionIndex":"0x0",
"address":"0x61f96a7ed09877197d4fff0c29b8e523913651a9",
"data":"0x",
"topics":["0x85bea11d86cefb165374e0f727bacf21dc2f4ea816493981ecf72dcfb212a410","0x0000000000000000000000000000000000000000000000000000000000000002"]
```json
{"id": 1, "method": "priv_subscribe", "params": ["4sSv8eqB6/0lV9I0tBGUhPjjHtLEf3z0eeMc8Lokkyo=", "logs", {"address": "0x8320fe7702b96808f7bbc0d4a888ed1468216cfd", "topics": ["0xd78a0cb8bb633d06981248b816e7bd33c2a35a6089241d099fa519e361cab902"]}]}
```
=== "Result"
```json
{"jsonrpc":"2.0","id":1,"result":"0x1"}
```
=== "Notification"
```json
{
"jsonrpc":"2.0",
"method":"priv_subscription",
"params":{
"subscription":"0x1",
"privacyGroupId":"4sSv8eqB6/0lV9I0tBGUhPjjHtLEf3z0eeMc8Lokkyo=",
"result":{
"logIndex":"0x0",
"removed":false,
"blockNumber":"0x285",
"blockHash":"0x98490766b16de2a4d044c04d92599d71e626bc96e42f0c74274ef4e03fafd579",
"transactionHash":"0x40034ef14e3a22946693dd2a11efddf3a8850ddcad46b408198df6c176c53ffb",
"transactionIndex":"0x0",
"address":"0x61f96a7ed09877197d4fff0c29b8e523913651a9",
"data":"0x",
"topics":["0x85bea11d86cefb165374e0f727bacf21dc2f4ea816493981ecf72dcfb212a410","0x0000000000000000000000000000000000000000000000000000000000000002"]
}
}
}
}
}
```
```
### Pending transactions

@ -79,6 +79,8 @@ JSON data package at each prompt:
Besu provides readiness and liveness endpoints to confirm the Besu node status. Both return a
`200 OK` status when ready or live and a `503 Service Unavailable` status if not ready or live.
### Readiness
By default, the readiness check requires a connected peer and the node to be within two blocks of
the best known block. If you have
[disabled p2p communication](../../../Reference/CLI/CLI-Syntax.md#p2p-enabled), you do not need
@ -87,27 +89,39 @@ peers. A live node with p2p disabled is always ready.
Use the query parameters `minPeers` and `maxBlocksBehind` to adjust the number of peers required
and the number of blocks tolerance.
```bash tab="Readiness Endpoint"
http://<JSON-RPC-HTTP-endpoint:port>/readiness
```
=== "Readiness Endpoint"
```bash tab="curl Request Example"
curl -v 'http://localhost:8545/readiness'
```
```bash
http://<JSON-RPC-HTTP-endpoint:port>/readiness
```
```bash tab="Query Parameters Example"
curl -v 'http://localhost:8545/readiness?minPeers=0&maxBlocksBehind=10'
```
=== "curl Request Example"
```bash
curl -v 'http://localhost:8545/readiness'
```
=== "Query Parameters Example"
```bash
curl -v 'http://localhost:8545/readiness?minPeers=0&maxBlocksBehind=10'
```
### Liveness
The liveness check requires the JSON-RPC server to be up.
```bash tab="Liveness Endpoint"
http://<JSON-RPC-HTTP-endpoint:port>/liveness
```
=== "Liveness Endpoint"
```bash tab="curl Request Example"
curl -v 'http://localhost:8545/liveness'
```
```bash
http://<JSON-RPC-HTTP-endpoint:port>/liveness
```
=== "curl Request Example"
```bash
curl -v 'http://localhost:8545/liveness'
```
## API methods enabled by default

@ -32,15 +32,19 @@ Initialize your EEA client where:
!!! example
```js tab="Syntax"
const EEAClient = require("web3-eea");
const web3 = new EEAClient(new Web3("<JSON-RPC HTTP endpoint>"), <chain_id>);
```
=== "Syntax"
```js tab="Example"
const EEAClient = require("web3-eea");
const web3 = new EEAClient(new Web3("http://localhost:8545"), 2018);
```
```js
const EEAClient = require("web3-eea");
const web3 = new EEAClient(new Web3("<JSON-RPC HTTP endpoint>"), <chain_id>);
```
=== "Example"
```js
const EEAClient = require("web3-eea");
const web3 = new EEAClient(new Web3("http://localhost:8545"), 2018);
```
## Deploying a contract with sendRawTransaction

@ -47,7 +47,9 @@ To configure Prometheus and run with Besu:
1. Configure Prometheus to poll Besu. For example, add the following yaml fragment to the
`scrape_configs` block of the `prometheus.yml` file:
```yml tab="Example"
!!!example
```yml
job_name: besu-dev
scrape_interval: 15s
scrape_timeout: 10s
@ -65,9 +67,17 @@ To configure Prometheus and run with Besu:
[`--metrics-enabled`](../../Reference/CLI/CLI-Syntax.md#metrics-enabled) option. To start a
single node for testing with metrics enabled:
```bash tab="Example"
besu --network=dev --miner-enabled --miner-coinbase fe3b557e8fb62b89f4916b721be55ceb828dbd73 --rpc-http-cors-origins="all" --rpc-http-enabled --metrics-enabled
```
=== "Command syntax"
```bash
besu --network=dev --miner-enabled --miner-coinbase <COINBASE ADDRESS> --rpc-http-cors-origins="all" --rpc-http-enabled --metrics-enabled
```
=== "Example"
```bash
besu --network=dev --miner-enabled --miner-coinbase fe3b557e8fb62b89f4916b721be55ceb828dbd73 --rpc-http-cors-origins="all" --rpc-http-enabled --metrics-enabled
```
To specify the host and port on which Prometheus accesses Besu, use the
[`--metrics-host`](../../Reference/CLI/CLI-Syntax.md#metrics-host) and
@ -76,7 +86,7 @@ To configure Prometheus and run with Besu:
1. In another terminal, run Prometheus specifying the `prometheus.yml` file:
```bash tab="Example"
```bash
prometheus --config.file=prometheus.yml
```
@ -100,7 +110,7 @@ To configure Prometheus and run with Besu pushing to a push gateway:
1. Configure Prometheus to read from a push gateway. For example, add the following yaml fragment
to the `scrape_configs` block of the `prometheus.yml` file:
```yml tab="Example"
```yml
- job_name: push-gateway
metrics_path: /metrics
scheme: http
@ -111,20 +121,28 @@ To configure Prometheus and run with Besu pushing to a push gateway:
1. Start the push gateway. You can deploy the push gateway using the Docker image:
```bash tab="Example"
```bash
docker pull prom/pushgateway
docker run -d -p 9091:9091 prom/pushgateway
```
1. Start Besu specifying the `--metrics-push-enabled` option and port of the push gateway:
```bash tab="Example"
besu --network=dev --miner-enabled --miner-coinbase fe3b557e8fb62b89f4916b721be55ceb828dbd73 --rpc-http-cors-origins="all" --rpc-http-enabled --metrics-push-enabled --metrics-push-port=9091 --metrics-push-host=127.0.0.1
```
=== "Command syntax"
```bash
besu --network=dev --miner-enabled --miner-coinbase <COINBASE ADDRESS> --rpc-http-cors-origins="all" --rpc-http-enabled --metrics-push-enabled --metrics-push-port=9091 --metrics-push-host=127.0.0.1
```
=== "Example"
```bash
besu --network=dev --miner-enabled --miner-coinbase fe3b557e8fb62b89f4916b721be55ceb828dbd73 --rpc-http-cors-origins="all" --rpc-http-enabled --metrics-push-enabled --metrics-push-port=9091 --metrics-push-host=127.0.0.1
```
1. In another terminal, run Prometheus specifying the `prometheus.yml` file:
```bash tab="Example"
```bash
prometheus --config.file=prometheus.yml
```

@ -88,9 +88,9 @@ an ABI-encoded string consisting of:
0x4e6f7420656e6f7567682045746865722070726f76696465642e000000000000 // String data
```
!!! example
!!! example "Example of revert reason string for \"Not enough Ether provided.\""
```bash tab="Revert reason string for Not enough Ether provided."
```bash
"0x08c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001a4e6f7420656e6f7567682045746865722070726f76696465642e000000000000"
```
@ -101,4 +101,4 @@ receipt. To extract the revert reason your Dapp must interact directly with Besu
JSON -> Object converter.
<!-- Links -->
[Solidity documentation]: https://solidity.readthedocs.io/en/v0.5.10/control-structures.html#revert
[Solidity documentation]: https://solidity.readthedocs.io/en/v0.5.10/control-structures.html#revert

@ -1,5 +1,5 @@
---
description: Using Java Flight Recorder with Hyperledger Besu
description: Using Java Flight Recorder with Hyperledger Besu
---
# Java Flight Recorder
@ -29,4 +29,4 @@ Inspect the file written to `/tmp/recording.jfr` with tools such as [Mission Con
If providing the output file to [PegaSys support](https://pegasys.zendesk.com/hc/en-us/restricted?return_to=https%3A%2F%2Fpegasys.zendesk.com%2Fhc%2Fen-us),
be aware that while JFR files do not contain secrets such as private keys, some details about the
user configuration can be inferred from the JFR output.
user configuration can be inferred from the JFR output.

@ -88,13 +88,17 @@ WARNING: All illegal access operations will be denied in a future release
To stop the message displaying, add the following to the environment:
```bash tab="Linux / Mac OS"
export BESU_OPTS="--add-opens java.base/sun.security.provider=ALL-UNNAMED"
```
=== "Linux / Mac OS"
```bash tab="Windows"
set BESU_OPTS="--add-opens java.base/sun.security.provider=ALL-UNNAMED"
```
```bash
export BESU_OPTS="--add-opens java.base/sun.security.provider=ALL-UNNAMED"
```
=== "Windows"
```bash
set BESU_OPTS="--add-opens java.base/sun.security.provider=ALL-UNNAMED"
```
## Command line options

File diff suppressed because it is too large Load Diff

@ -10,25 +10,33 @@ Provides blocks related actions.
### import
```bash tab="Syntax"
besu blocks import --from=<block-file>
```
=== "Syntax"
```bash tab="Example"
besu blocks import --from=/home/me/me_project/mainnet.blocks
```
```bash
besu blocks import --from=<block-file>
```
=== "Example"
```bash
besu blocks import --from=/home/me/me_project/mainnet.blocks
```
Imports blocks from the specified file into the blockchain database.
### export
```bash tab="Syntax"
besu blocks export [--start-block=<LONG>] [--end-block=<LONG>] --to=<block-file>
```
=== "Syntax"
```bash
besu blocks export [--start-block=<LONG>] [--end-block=<LONG>] --to=<block-file>
```
=== "Example"
```bash tab="Example"
besu --network=rinkeby --data-path=/home/data/ blocks export --start-block=100 --end-block=300 --to=/home/exportblock.bin
```
```bash
besu --network=rinkeby --data-path=/home/data/ blocks export --start-block=100 --end-block=300 --to=/home/exportblock.bin
```
Exports a block, or list of blocks from storage to a file in RLP format.
@ -52,33 +60,45 @@ This command provides node public key related actions.
### export
```bash tab="Syntax"
besu public-key export [--to=<key-file>]
```
=== "Syntax"
```bash
besu public-key export [--to=<key-file>]
```
=== "Example (to standard output)"
```bash
besu --data-path=<node data path> public-key export
```
```bash tab="Example (to standard output)"
besu --data-path=<node data path> public-key export
```
=== "Example (to file)"
```bash tab="Example (to file)"
besu --data-path=<node data path> public-key export --to=/home/me/me_project/not_precious_pub_key
```
```bash
besu --data-path=<node data path> public-key export --to=/home/me/me_project/not_precious_pub_key
```
Outputs the node public key to standard output or to the file specified by `--to=<key-file>`.
### export-address
```bash tab="Syntax"
besu public-key export-address [--to=<address-file>]
```
=== "Syntax"
```bash tab="Example (to standard output)"
besu --data-path=<node data path> public-key export-address
```
```bash
besu public-key export-address [--to=<address-file>]
```
```bash tab="Example (to file)"
besu --data-path=<node data path> public-key export-address --to=/home/me/me_project/me_node_address
```
=== "Example (to standard output)"
```bash
besu --data-path=<node data path> public-key export-address
```
=== "Example (to file)"
```bash
besu --data-path=<node data path> public-key export-address --to=/home/me/me_project/me_node_address
```
Outputs the node address to standard output or to the file specified by `--to=<address-file>`.
@ -92,13 +112,17 @@ This command generates the hash of a given password. Include the hash in the
[credentials file](../../HowTo/Interact/APIs/Authentication.md#credentials-file) for JSON-RPC API
[authentication](../../HowTo/Interact/APIs/Authentication.md).
```bash tab="Syntax"
besu password hash --password=<my-password>
```
=== "Syntax"
```bash
besu password hash --password=<my-password>
```
```bash tab="Example"
besu password hash --password=myPassword123
```
=== "Example"
```bash
besu password hash --password=myPassword123
```
## operator
@ -109,13 +133,17 @@ Provides operator actions.
This command generates
[IBFT 2.0 configuration files](../../Tutorials/Private-Network/Create-IBFT-Network.md).
```bash tab="Syntax"
besu operator generate-blockchain-config --config-file=<FILE> --to=<DIRECTORY> [--genesis-file-name=<FILE>] [--private-key-file-name=<FILE>] [--public-key-file-name=<FILE>]
```
=== "Syntax"
```bash
besu operator generate-blockchain-config --config-file=<FILE> --to=<DIRECTORY> [--genesis-file-name=<FILE>] [--private-key-file-name=<FILE>] [--public-key-file-name=<FILE>]
```
=== "Example"
```bash tab="Example"
besu operator generate-blockchain-config --config-file=config.json --to=myNetworkFiles
```
```bash
besu operator generate-blockchain-config --config-file=config.json --to=myNetworkFiles
```
The configuration file has 2 subnested JSON nodes. The first is the `genesis` property defining the
[IBFT 2.0 genesis file](../../HowTo/Configure/Consensus-Protocols/IBFT.md#genesis-file) except for
@ -141,13 +169,17 @@ performance.
To generate cached log bloom indexes while the node is running, use the
[`admin_generateLogBloomCache`](../API-Methods.md#admin_generatelogbloomcache) API.
```bash tab="Syntax"
besu operator generate-log-bloom-cache [--start-block=<BLOCK_NUMBER>] [--end-block=<BLOCK_NUMBER>]
```
=== "Syntax"
```bash tab="Example"
besu --network=goerli --data-path=/project/goerli operator generate-log-bloom-cache --start-block=0 --end-block=100000
```
```bash
besu operator generate-log-bloom-cache [--start-block=<BLOCK_NUMBER>] [--end-block=<BLOCK_NUMBER>]
```
=== "Example"
```bash
besu --network=goerli --data-path=/project/goerli operator generate-log-bloom-cache --start-block=0 --end-block=100000
```
## rlp
@ -158,17 +190,23 @@ Provides RLP related actions.
This command encodes a typed JSON value from a file or from the standard input into an RLP
hexadecimal string.
```bash tab="Syntax"
besu rlp encode [--from=<FILE>] [--to=<FILE>] [--type=<type>]
```
=== "Syntax"
```bash
besu rlp encode [--from=<FILE>] [--to=<FILE>] [--type=<type>]
```
=== "File Example"
```bash tab="File Example"
besu rlp encode --from=ibft_extra_data.json --to=extra_data_for_ibft_genesis.txt --type=IBFT_EXTRA_DATA
```
```bash
besu rlp encode --from=ibft_extra_data.json --to=extra_data_for_ibft_genesis.txt --type=IBFT_EXTRA_DATA
```
```bash tab="Standart Input/Output Example"
cat extra_data.json | besu rlp encode > rlp.txt
```
=== "Standard Input/Output Example"
```bash
cat extra_data.json | besu rlp encode > rlp.txt
```
The `IBFT_EXTRA_DATA` type is the only type supported for RLP encoding. The
[IBFT 2.0 genesis file](../../HowTo/Configure/Consensus-Protocols/IBFT.md#genesis-file) includes
@ -209,16 +247,20 @@ the `IBFT_EXTRA_DATA` type.
!!!example "Example IBFT_EXTRA_DATA encoding"
```json tab="JSON Input"
[
"be068f726a13c8d46c44be6ce9d275600e1735a4",
"5ff6f4b66a46a2b2310a6f3a93aaddc0d9a1c193"
]
```
=== "JSON Input"
``` tab="RLP Output"
0xf853a00000000000000000000000000000000000000000000000000000000000000000ea94be068f726a13c8d46c44be6ce9d275600e1735a4945ff6f4b66a46a2b2310a6f3a93aaddc0d9a1c193808400000000c0
```
```json
[
"be068f726a13c8d46c44be6ce9d275600e1735a4",
"5ff6f4b66a46a2b2310a6f3a93aaddc0d9a1c193"
]
```
=== "RLP Output"
```
0xf853a00000000000000000000000000000000000000000000000000000000000000000ea94be068f726a13c8d46c44be6ce9d275600e1735a4945ff6f4b66a46a2b2310a6f3a93aaddc0d9a1c193808400000000c0
```
## retesteth
@ -234,10 +276,14 @@ The command accepts the following command line options:
* [\--rpc-http-port](./CLI-Syntax.md#rpc-http-port)
* [\--logging](./CLI-Syntax.md#logging)
```bash tab="Syntax"
besu retesteth [--data-path=<PATH>] [--rpc-http-host=<HOST>] [--rpc-http-port=<PORT>] [-l=<LOG VERBOSITY LEVEL>] [--host-allowlist=<hostname>[,<hostname>…]… or * or all]
```
=== "Syntax"
```bash
besu retesteth [--data-path=<PATH>] [--rpc-http-host=<HOST>] [--rpc-http-port=<PORT>] [-l=<LOG VERBOSITY LEVEL>] [--host-allowlist=<hostname>[,<hostname>…]… or * or all]
```
=== "Example"
```bash tab="Example"
besu retesteth --data-path=/home/me/me_node --rpc-http-port=8590 --host-allowlist=*
```
```bash
besu retesteth --data-path=/home/me/me_node --rpc-http-port=8590 --host-allowlist=*
```

File diff suppressed because it is too large Load Diff

@ -15,28 +15,30 @@ retrieve only the [`trace`](#trace) option.
An ordered list of calls to other contracts, excluding precompiled contracts.
```json tab="trace Example"
"trace":[
{
"action":{
"callType":"call",
"from":"0xfe3b557e8fb62b89f4916b721be55ceb828dbd73",
"gas":"0xffadea",
"input":"0x",
"to":"0x0100000000000000000000000000000000000000",
"value":"0x0"
},
"result":{
"gasUsed":"0x1e",
"output":"0x"
},
"subtraces":0,
"traceAddress":[
],
"type":"call"
}
]
```
!!!example "trace Example"
```json
"trace":[
{
"action":{
"callType":"call",
"from":"0xfe3b557e8fb62b89f4916b721be55ceb828dbd73",
"gas":"0xffadea",
"input":"0x",
"to":"0x0100000000000000000000000000000000000000",
"value":"0x0"
},
"result":{
"gasUsed":"0x1e",
"output":"0x"
},
"subtraces":0,
"traceAddress":[
],
"type":"call"
}
]
```
| Key | Value |
|----------------| -------------------------------------------------------------------------------|
@ -71,27 +73,29 @@ For out of gas operations, `vmTrace` reports the operation that caused the out o
including the calculated gas cost. `vmTrace` does not report `ex` values because the operation is
not executed.
```json tab="vmTrace Example"
"vmTrace":{
"code":"0x7f3940be4289e4c3587d88c1856cc95352461992db0a584c281226faefe560b3016000527f14c4d2c102bdeb2354bfc3dc96a95e4512cf3a8461e0560e2272dbf884ef3905601052600851",
"ops":[
{
"cost":3,
"ex":{
"mem":null,
"push":[
"0x8"
],
"store":null,
"used":16756175
},
"pc":72,
"sub":null
},
...
]
}
```
!!!example "vmTrace Example"
```json
"vmTrace":{
"code":"0x7f3940be4289e4c3587d88c1856cc95352461992db0a584c281226faefe560b3016000527f14c4d2c102bdeb2354bfc3dc96a95e4512cf3a8461e0560e2272dbf884ef3905601052600851",
"ops":[
{
"cost":3,
"ex":{
"mem":null,
"push":[
"0x8"
],
"store":null,
"used":16756175
},
"pc":72,
"sub":null
},
...
]
}
```
| Key | Value |
|-----------| ------------------------------------------------------------------------------------|
@ -118,27 +122,29 @@ transaction to after the transaction. For the `key:value` pairs:
An absent value is distinct from zero when creating accounts or clearing storage.
```json tab="stateDiff Example"
"stateDiff":{
"0xfe3b557e8fb62b89f4916b721be55ceb828dbd73":{
"balance":{
"*":{
"from":"0xffffffffffffffffffffffffffffffffc3e12a20b",
"to":"0xffffffffffffffffffffffffffffffffc3dc5f091"
}
},
"code":"=",
"nonce":{
"*":{
"from":"0x14",
"to":"0x15"
!!!example "stateDiff Example"
```json
"stateDiff":{
"0xfe3b557e8fb62b89f4916b721be55ceb828dbd73":{
"balance":{
"*":{
"from":"0xffffffffffffffffffffffffffffffffc3e12a20b",
"to":"0xffffffffffffffffffffffffffffffffc3dc5f091"
}
},
"code":"=",
"nonce":{
"*":{
"from":"0x14",
"to":"0x15"
}
},
"storage":{
}
}
},
"storage":{
}
}
}
```
```
| Key | Value |
|----------- | -------------------------------------------------------------------------------|

@ -40,9 +40,11 @@ To run this tutorial, you must have the following installed:
Clone the repository from the `besu-` repository.
```bash tab="Linux/MacOS"
git clone https://github.com/PegaSysEng/besu-sample-networks.git
```
=== "Linux/MacOS"
```bash
git clone https://github.com/PegaSysEng/besu-sample-networks.git
```
!!!note
@ -142,13 +144,17 @@ Call [`eth_getTransactionReceipt`](../../Reference/API-Methods.md#eth_gettransac
* `<TransactionHash>` is the transaction hash displayed in the Event Emitter logs.
* `<JSON-RPC Endpoint>` is the JSON-RPC HTTP service endpoint displayed when starting the network.
```bash tab="curl HTTP request"
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["<TransactionHash>"],"id":1}' <JSON-RPC Endpoint>
```
=== "curl HTTP request"
```bash tab="Example"
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0xe0776de9a9d4e30be0025c1308eed8bc45502cba9fe22c504a56e2fd95343e6f"],"id":1}' http://localhost:8545
```
```bash
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["<TransactionHash>"],"id":1}' <JSON-RPC Endpoint>
```
=== "Example"
```bash
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0xe0776de9a9d4e30be0025c1308eed8bc45502cba9fe22c504a56e2fd95343e6f"],"id":1}' http://localhost:8545
```
The transaction receipt for the
[privacy marker transaction](../../Concepts/Privacy/Private-Transaction-Processing.md) displays
@ -198,4 +204,4 @@ Do one of the following to stop the network:
```
<!-- Links -->
[create transactions using Metamask]: Private-Network-Example.md#create-a-transaction-using-metamask
[create transactions using Metamask]: Private-Network-Example.md#create-a-transaction-using-metamask

@ -1,5 +1,5 @@
---
description: Hyperledger Besu private network example on Azure
description: Hyperledger Besu private network example on Azure
---
# Deploy private network example on Azure
@ -107,4 +107,4 @@ earlier and your preferred client:
To list all containers running, run `docker ps`. Find the complete setup in `/home/<username>/besu-quickstart`.
![Image ssh](../../images/mp_10_ssh.png)
![Image ssh](../../images/mp_10_ssh.png)

@ -33,9 +33,11 @@ To run this tutorial, you must have the following installed:
Clone the repository from the `besu-sample-networks` repository:
```bash tab="Linux/MacOS"
git clone https://github.com/PegaSysEng/besu-sample-networks.git
```
=== "Linux/MacOS"
```bash
git clone https://github.com/PegaSysEng/besu-sample-networks.git
```
!!!note
@ -51,9 +53,11 @@ This tutorial uses [Docker Compose](https://docs.docker.com/compose/) to assembl
run the private network. To build the docker images and run the containers, go to the
`besu-sample-networks` directory and run:
```bash tab="Linux/MacOS"
./run.sh
```
=== "Linux/MacOS"
```bash
./run.sh
```
The script builds the images, and runs the containers. It also scales the regular node container to
four containers to simulate a network with enough peers to synchronize.
@ -120,9 +124,11 @@ Followed by a list of the endpoints:
To display the list of endpoints again, run:
```bash tab="Linux/MacOS"
./list.sh
```
=== "Linux/MacOS"
```bash
./list.sh
```
## Block explorer
@ -356,82 +362,86 @@ Block Explorer using the addresses displayed in your output earlier `http://loca
!!! example
```bash tab="Linux/MacOS command"
./run-dapp.sh
```
```log tab="DApp result"
Compiling your contracts...
===========================
> Compiling ./contracts/Adoption.sol
> Compiling ./contracts/Migrations.sol
Starting migrations...
======================
> Network name: 'quickstartWallet'
> Network id: 2018
> Block gas limit: 0xf7b760
1_initial_migration.js
======================
Replacing 'Migrations'
----------------------
> transaction hash: 0x10f5ebaca0e89fa84bcae19d6848dde19817ea3cf270be0fd0ab52f041a02c61
> Blocks: 0 Seconds: 0
> contract address: 0x8CdaF0CD259887258Bc13a92C0a6dA92698644C0
> block number: 64
> block timestamp: 1579833316
> account: 0x627306090abaB3A6e1400e9345bC60c78a8BEf57
> balance: 89999.99472518
> gas used: 263741
> gas price: 20 gwei
> value sent: 0 ETH
> total cost: 0.00527482 ETH
> Saving migration to chain.
> Saving artifacts
-------------------------------------
> Total cost: 0.00527482 ETH
2_deploy_contracts.js
=====================
Replacing 'Adoption'
--------------------
> transaction hash: 0x56f39e2411f2e95b89832c6ff81b619815ee83db1c54d2b166ecdc3ceda633a8
> Blocks: 0 Seconds: 0
> contract address: 0x345cA3e014Aaf5dcA488057592ee47305D9B3e10
> block number: 66
> block timestamp: 1579833320
> account: 0x627306090abaB3A6e1400e9345bC60c78a8BEf57
> balance: 89999.9890877
> gas used: 239851
> gas price: 20 gwei
> value sent: 0 ETH
> total cost: 0.00479702 ETH
> Saving migration to chain.
> Saving artifacts
-------------------------------------
> Total cost: 0.00479702 ETH
Summary
=======
> Total deployments: 2
> Final cost: 0.01007184 ETH
Compiling your contracts...
===========================
> Compiling ./test/TestAdoption.sol
TestAdoption
✓ testUserCanAdoptPet (2071ms)
✓ testGetAdopterAddressByPetId (6070ms)
✓ testGetAdopterAddressByPetIdInArray (6077ms)
3 passing (37s)
```
=== "Linux/MacOS command"
```bash
./run-dapp.sh
```
=== "DApp result"
```log
Compiling your contracts...
===========================
> Compiling ./contracts/Adoption.sol
> Compiling ./contracts/Migrations.sol
Starting migrations...
======================
> Network name: 'quickstartWallet'
> Network id: 2018
> Block gas limit: 0xf7b760
1_initial_migration.js
======================
Replacing 'Migrations'
----------------------
> transaction hash: 0x10f5ebaca0e89fa84bcae19d6848dde19817ea3cf270be0fd0ab52f041a02c61
> Blocks: 0 Seconds: 0
> contract address: 0x8CdaF0CD259887258Bc13a92C0a6dA92698644C0
> block number: 64
> block timestamp: 1579833316
> account: 0x627306090abaB3A6e1400e9345bC60c78a8BEf57
> balance: 89999.99472518
> gas used: 263741
> gas price: 20 gwei
> value sent: 0 ETH
> total cost: 0.00527482 ETH
> Saving migration to chain.
> Saving artifacts
-------------------------------------
> Total cost: 0.00527482 ETH
2_deploy_contracts.js
=====================
Replacing 'Adoption'
--------------------
> transaction hash: 0x56f39e2411f2e95b89832c6ff81b619815ee83db1c54d2b166ecdc3ceda633a8
> Blocks: 0 Seconds: 0
> contract address: 0x345cA3e014Aaf5dcA488057592ee47305D9B3e10
> block number: 66
> block timestamp: 1579833320
> account: 0x627306090abaB3A6e1400e9345bC60c78a8BEf57
> balance: 89999.9890877
> gas used: 239851
> gas price: 20 gwei
> value sent: 0 ETH
> total cost: 0.00479702 ETH
> Saving migration to chain.
> Saving artifacts
-------------------------------------
> Total cost: 0.00479702 ETH
Summary
=======
> Total deployments: 2
> Final cost: 0.01007184 ETH
Compiling your contracts...
===========================
> Compiling ./test/TestAdoption.sol
TestAdoption
✓ testUserCanAdoptPet (2071ms)
✓ testGetAdopterAddressByPetId (6070ms)
✓ testGetAdopterAddressByPetIdInArray (6077ms)
3 passing (37s)
```
After these tests are successful, it builds a container for the Pet Shop DApp and deployes it,
binding it to port 3001 on your system.
@ -457,28 +467,34 @@ The Metmask UI also keeps a record of the transaction.
To shut down the private network without deleting the containers:
```bash tab="Linux/MacOS"
./stop.sh
```
=== "Linux/MacOS"
```bash
./stop.sh
```
This command stops the containers related to the services specified in the `docker-compose.yml`
file.
To restart the private network:
```bash tab="Linux/MacOS"
./resume.sh
```
=== "Linux/MacOS"
```bash
./resume.sh
```
## Stop the private network and remove containers
To shut down the private network and delete all containers and images created from running the
sample network:
```bash tab="Linux/MacOS"
./remove.sh
```
=== "Linux/MacOS"
```bash
./remove.sh
```
<!-- Links -->
[Import one of the existing accounts above into MetaMask]: https://metamask.zendesk.com/hc/en-us/articles/360015489331-Importing-an-Account-New-UI-
[create another account from scratch]: https://metamask.zendesk.com/hc/en-us/articles/360015289452-Creating-Additional-MetaMask-Wallets-New-UI-
[create another account from scratch]: https://metamask.zendesk.com/hc/en-us/articles/360015289452-Creating-Additional-MetaMask-Wallets-New-UI-

@ -50,13 +50,17 @@ To retrieve the address for Node-1, in the `Node-1` directory, use the
[`public-key export-address`](../../Reference/CLI/CLI-Syntax.md#public-key) subcommand to write the
node address to the specified file (`nodeAddress1` in this example).
```bash tab="MacOS"
besu --data-path=data public-key export-address --to=data/nodeAddress1
```
=== "MacOS"
```bash tab="Windows"
besu --data-path=data public-key export-address --to=data\nodeAddress1
```
```bash
besu --data-path=data public-key export-address --to=data/nodeAddress1
```
=== "Windows"
```bash
besu --data-path=data public-key export-address --to=data\nodeAddress1
```
### 3. Create the genesis file
@ -157,13 +161,17 @@ Use the JSON-RPC API to add permissioned nodes after starting the nodes.
Use the following command:
```bash tab="MacOS"
besu --data-path=data --genesis-file=../cliqueGenesis.json --permissions-nodes-config-file-enabled --permissions-accounts-config-file-enabled --rpc-http-enabled --rpc-http-api=ADMIN,ETH,NET,PERM,CLIQUE --host-allowlist="*" --rpc-http-cors-origins="*"
```
=== "MacOS"
```bash tab="Windows"
besu --data-path=data --genesis-file=..\cliqueGenesis.json --permissions-nodes-config-file-enabled --permissions-accounts-config-file-enabled --rpc-http-enabled --rpc-http-api=ADMIN,ETH,NET,PERM,CLIQUE --host-allowlist="*" --rpc-http-cors-origins="*"
```
```bash
besu --data-path=data --genesis-file=../cliqueGenesis.json --permissions-nodes-config-file-enabled --permissions-accounts-config-file-enabled --rpc-http-enabled --rpc-http-api=ADMIN,ETH,NET,PERM,CLIQUE --host-allowlist="*" --rpc-http-cors-origins="*"
```
=== "Windows"
```bash
besu --data-path=data --genesis-file=..\cliqueGenesis.json --permissions-nodes-config-file-enabled --permissions-accounts-config-file-enabled --rpc-http-enabled --rpc-http-api=ADMIN,ETH,NET,PERM,CLIQUE --host-allowlist="*" --rpc-http-cors-origins="*"
```
The command line allows you to enable:
@ -188,13 +196,17 @@ following steps.
Start another terminal, change to the `Node-2` directory, and start Node-2:
```bash tab="MacOS"
besu --data-path=data --genesis-file=../cliqueGenesis.json --permissions-nodes-config-file-enabled --permissions-accounts-config-file-enabled --rpc-http-enabled --rpc-http-api=ADMIN,ETH,NET,PERM,CLIQUE --host-allowlist="*" --rpc-http-cors-origins="*" --p2p-port=30304 --rpc-http-port=8546
```
=== "MacOS"
```bash tab="Windows"
besu --data-path=data --genesis-file=..\cliqueGenesis.json --permissions-nodes-config-file-enabled --permissions-accounts-config-file-enabled --rpc-http-enabled --rpc-http-api=ADMIN,ETH,NET,PERM,CLIQUE --host-allowlist="*" --rpc-http-cors-origins="*" --p2p-port=30304 --rpc-http-port=8546
```
```bash
besu --data-path=data --genesis-file=../cliqueGenesis.json --permissions-nodes-config-file-enabled --permissions-accounts-config-file-enabled --rpc-http-enabled --rpc-http-api=ADMIN,ETH,NET,PERM,CLIQUE --host-allowlist="*" --rpc-http-cors-origins="*" --p2p-port=30304 --rpc-http-port=8546
```
=== "Windows"
```bash
besu --data-path=data --genesis-file=..\cliqueGenesis.json --permissions-nodes-config-file-enabled --permissions-accounts-config-file-enabled --rpc-http-enabled --rpc-http-api=ADMIN,ETH,NET,PERM,CLIQUE --host-allowlist="*" --rpc-http-cors-origins="*" --p2p-port=30304 --rpc-http-port=8546
```
The command line specifies:
@ -213,13 +225,17 @@ the enode URL to update the permissions configuration file in the following step
Start another terminal, change to the `Node-3` directory, and start Node-3:
```bash tab="MacOS"
besu --data-path=data --genesis-file=../cliqueGenesis.json --permissions-nodes-config-file-enabled --permissions-accounts-config-file-enabled --rpc-http-enabled --rpc-http-api=ADMIN,ETH,NET,PERM,CLIQUE --host-allowlist="*" --rpc-http-cors-origins="*" --p2p-port=30305 --rpc-http-port=8547
```
=== "MacOS"
```bash tab="Windows"
besu --data-path=data --genesis-file=..\cliqueGenesis.json --permissions-nodes-config-file-enabled --permissions-accounts-config-file-enabled --rpc-http-enabled --rpc-http-api=ADMIN,ETH,NET,PERM,CLIQUE --host-allowlist="*" --rpc-http-cors-origins="*" --p2p-port=30305 --rpc-http-port=8547
```
```bash
besu --data-path=data --genesis-file=../cliqueGenesis.json --permissions-nodes-config-file-enabled --permissions-accounts-config-file-enabled --rpc-http-enabled --rpc-http-api=ADMIN,ETH,NET,PERM,CLIQUE --host-allowlist="*" --rpc-http-cors-origins="*" --p2p-port=30305 --rpc-http-port=8547
```
=== "Windows"
```bash
besu --data-path=data --genesis-file=..\cliqueGenesis.json --permissions-nodes-config-file-enabled --permissions-accounts-config-file-enabled --rpc-http-enabled --rpc-http-api=ADMIN,ETH,NET,PERM,CLIQUE --host-allowlist="*" --rpc-http-cors-origins="*" --p2p-port=30305 --rpc-http-port=8547
```
The command line specifies:
@ -352,13 +368,17 @@ it.
Change to the `Node-4` directory and start Node-4 specifying the Node-1 enode URL as the bootnode:
```bash tab="MacOS"
besu --data-path=data --bootnodes="<EnodeNode1>" --genesis-file=../cliqueGenesis.json --rpc-http-enabled --rpc-http-api=ADMIN,ETH,NET,PERM,CLIQUE --host-allowlist="*" --rpc-http-cors-origins="*" --p2p-port=30306 --rpc-http-port=8548
```
=== "MacOS"
```bash tab="Windows"
besu --data-path=data --bootnodes="<EnodeNode1>" --genesis-file=..\cliqueGenesis.json --rpc-http-enabled --rpc-http-api=ADMIN,ETH,NET,PERM,CLIQUE --host-allowlist="*" --rpc-http-cors-origins="*" --p2p-port=30306 --rpc-http-port=8548
```
```bash
besu --data-path=data --bootnodes="<EnodeNode1>" --genesis-file=../cliqueGenesis.json --rpc-http-enabled --rpc-http-api=ADMIN,ETH,NET,PERM,CLIQUE --host-allowlist="*" --rpc-http-cors-origins="*" --p2p-port=30306 --rpc-http-port=8548
```
=== "Windows"
```bash
besu --data-path=data --bootnodes="<EnodeNode1>" --genesis-file=..\cliqueGenesis.json --rpc-http-enabled --rpc-http-api=ADMIN,ETH,NET,PERM,CLIQUE --host-allowlist="*" --rpc-http-cors-origins="*" --p2p-port=30306 --rpc-http-port=8548
```
Start another terminal and use cURL to call the JSON-RPC API
[`net_peerCount`](../../Reference/API-Methods.md#net_peercount) method:
@ -392,4 +412,4 @@ window.
[`permissions_config.toml`]: ../../HowTo/Limit-Access/Local-Permissioning.md#permissions-configuration-file
[`--permissions-nodes-config-file-enabled`]: ../../Reference/CLI/CLI-Syntax.md#permissions-nodes-config-file-enabled
[`--permissions-accounts-config-file-enabled`]: ../../Reference/CLI/CLI-Syntax.md#permissions-accounts-config-file-enabled
[Private network example tutorial]: ../Examples/Private-Network-Example.md#create-a-transaction-using-metamask
[Private network example tutorial]: ../Examples/Private-Network-Example.md#create-a-transaction-using-metamask

@ -81,9 +81,11 @@ the configuration file.
In the `Node-1` directory, start Besu Node-1:
```bash tab="MacOS"
besu --data-path=data --genesis-file=../genesis.json --rpc-http-authentication-enabled --rpc-http-authentication-jwt-public-key-file=publicKey.pem --rpc-http-enabled --rpc-http-api=ETH,NET,IBFT,EEA,PRIV --host-allowlist="*" --rpc-http-cors-origins="all" --privacy-enabled --privacy-url=http://127.0.0.1:8888 --privacy-multi-tenancy-enabled --min-gas-price=0
```
=== "MacOS"
```bash
besu --data-path=data --genesis-file=../genesis.json --rpc-http-authentication-enabled --rpc-http-authentication-jwt-public-key-file=publicKey.pem --rpc-http-enabled --rpc-http-api=ETH,NET,IBFT,EEA,PRIV --host-allowlist="*" --rpc-http-cors-origins="all" --privacy-enabled --privacy-url=http://127.0.0.1:8888 --privacy-multi-tenancy-enabled --min-gas-price=0
```
The command line specifies privacy options:
@ -129,4 +131,4 @@ token. For example, ensure you enable the `PRIV` and `EEA` APIs for privacy.
[JSON Web Token (JWT) public key authentication]: ../../HowTo/Interact/APIs/Authentication.md#jwt-public-key-authentication
[username and password authentication]: ../../HowTo/Interact/APIs/Authentication.md#username-and-password-authentication
[generate the private and public key pair]: ../../HowTo/Interact/APIs/Authentication.md#1-generate-a-private-and-public-key-pair
[Use the authentication token to make requests]: ../../HowTo/Interact/APIs/Authentication.md#using-an-authentication-token-to-make-requests
[Use the authentication token to make requests]: ../../HowTo/Interact/APIs/Authentication.md#using-an-authentication-token-to-make-requests

@ -90,29 +90,33 @@ In the `Node-2/Orion` and `Node-3/Orion` directories, create `orion.conf` files
* The Node-1 Orion node as the bootnode (specified by
[`othernodes`](https://docs.orion.pegasys.tech/en/latest/Reference/Configuration-File/)).
```bash tab="Node-2"
nodeurl = "http://127.0.0.1:8081/"
nodeport = 8081
clienturl = "http://127.0.0.1:8889/"
clientport = 8889
publickeys = ["nodeKey.pub"]
privatekeys = ["nodeKey.key"]
passwords = "passwordFile"
othernodes = ["http://127.0.0.1:8080/"]
tls = "off"
```
```bash tab="Node-3"
nodeurl = "http://127.0.0.1:8082/"
nodeport = 8082
clienturl = "http://127.0.0.1:8890/"
clientport = 8890
publickeys = ["nodeKey.pub"]
privatekeys = ["nodeKey.key"]
passwords = "passwordFile"
othernodes = ["http://127.0.0.1:8080/"]
tls = "off"
```
=== "Node-2"
```bash
nodeurl = "http://127.0.0.1:8081/"
nodeport = 8081
clienturl = "http://127.0.0.1:8889/"
clientport = 8889
publickeys = ["nodeKey.pub"]
privatekeys = ["nodeKey.key"]
passwords = "passwordFile"
othernodes = ["http://127.0.0.1:8080/"]
tls = "off"
```
=== "Node-3"
```bash
nodeurl = "http://127.0.0.1:8082/"
nodeport = 8082
clienturl = "http://127.0.0.1:8890/"
clientport = 8890
publickeys = ["nodeKey.pub"]
privatekeys = ["nodeKey.key"]
passwords = "passwordFile"
othernodes = ["http://127.0.0.1:8080/"]
tls = "off"
```
## 5. Start the Orion nodes
@ -127,13 +131,17 @@ orion orion.conf
In the `Node-1` directory, start Besu Node-1:
```bash tab="MacOS"
besu --data-path=data --genesis-file=../genesis.json --rpc-http-enabled --rpc-http-api=ETH,NET,IBFT,EEA,PRIV --host-allowlist="*" --rpc-http-cors-origins="all" --privacy-enabled --privacy-url=http://127.0.0.1:8888 --privacy-public-key-file=Orion/nodeKey.pub --min-gas-price=0
```
=== "MacOS"
```bash tab="Windows"
besu --data-path=data --genesis-file=..\genesis.json --rpc-http-enabled --rpc-http-api=ETH,NET,IBFT,EEA,PRIV --host-allowlist="*" --rpc-http-cors-origins="all" --privacy-enabled --privacy-url=http://127.0.0.1:8888 --privacy-public-key-file=Orion\nodeKey.pub --min-gas-price=0
```
```bash
besu --data-path=data --genesis-file=../genesis.json --rpc-http-enabled --rpc-http-api=ETH,NET,IBFT,EEA,PRIV --host-allowlist="*" --rpc-http-cors-origins="all" --privacy-enabled --privacy-url=http://127.0.0.1:8888 --privacy-public-key-file=Orion/nodeKey.pub --min-gas-price=0
```
=== "Windows"
```bash
besu --data-path=data --genesis-file=..\genesis.json --rpc-http-enabled --rpc-http-api=ETH,NET,IBFT,EEA,PRIV --host-allowlist="*" --rpc-http-cors-origins="all" --privacy-enabled --privacy-url=http://127.0.0.1:8888 --privacy-public-key-file=Orion\nodeKey.pub --min-gas-price=0
```
The command line specifies privacy options:
@ -166,13 +174,17 @@ enode URL to specify Node-1 as the bootnode in the following steps.
In the `Node-2` directory, start Besu Node-2 specifying the Node-1 enode URL copied when starting
Node-1 as the bootnode:
```bash tab="MacOS"
besu --data-path=data --genesis-file=../genesis.json --bootnodes=<Node-1 Enode URL> --p2p-port=30304 --rpc-http-enabled --rpc-http-api=ETH,NET,IBFT,EEA,PRIV --host-allowlist="*" --rpc-http-cors-origins="all" --rpc-http-port=8546 --privacy-enabled --privacy-url=http://127.0.0.1:8889 --privacy-public-key-file=Orion/nodeKey.pub --min-gas-price=0
```
=== "MacOS"
```bash tab="Windows"
besu --data-path=data --genesis-file=..\genesis.json --bootnodes=<Node-1 Enode URL> --p2p-port=30304 --rpc-http-enabled --rpc-http-api=ETH,NET,IBFT,EEA,PRIV --host-allowlist="*" --rpc-http-cors-origins="all" --rpc-http-port=8546 --privacy-enabled --privacy-url=http://127.0.0.1:8889 --privacy-public-key-file=Orion\nodeKey.pub --min-gas-price=0
```
```bash
besu --data-path=data --genesis-file=../genesis.json --bootnodes=<Node-1 Enode URL> --p2p-port=30304 --rpc-http-enabled --rpc-http-api=ETH,NET,IBFT,EEA,PRIV --host-allowlist="*" --rpc-http-cors-origins="all" --rpc-http-port=8546 --privacy-enabled --privacy-url=http://127.0.0.1:8889 --privacy-public-key-file=Orion/nodeKey.pub --min-gas-price=0
```
=== "Windows"
```bash
besu --data-path=data --genesis-file=..\genesis.json --bootnodes=<Node-1 Enode URL> --p2p-port=30304 --rpc-http-enabled --rpc-http-api=ETH,NET,IBFT,EEA,PRIV --host-allowlist="*" --rpc-http-cors-origins="all" --rpc-http-port=8546 --privacy-enabled --privacy-url=http://127.0.0.1:8889 --privacy-public-key-file=Orion\nodeKey.pub --min-gas-price=0
```
The command line specifies the same options as for Node-1 with different ports and Orion node URL.
The [`--bootnodes`](../../Reference/CLI/CLI-Syntax.md#bootnodes) option specifies the enode URL for
@ -188,13 +200,17 @@ Node-1.
In the `Node-3` directory, start Besu Node-3 specifying the Node-1 enode URL copied when starting
Node-1 as the bootnode:
```bash tab="MacOS"
besu --data-path=data --genesis-file=../genesis.json --bootnodes=<Node-1 Enode URL> --p2p-port=30305 --rpc-http-enabled --rpc-http-api=ETH,NET,IBFT,EEA,PRIV --host-allowlist="*" --rpc-http-cors-origins="all" --rpc-http-port=8547 --privacy-enabled --privacy-url=http://127.0.0.1:8890 --privacy-public-key-file=Orion/nodeKey.pub --min-gas-price=0
```
=== "MacOS"
```bash tab="Windows"
besu --data-path=data --genesis-file=..\genesis.json --bootnodes=<Node-1 Enode URL> --p2p-port=30305 --rpc-http-enabled --rpc-http-api=ETH,NET,IBFT,EEA,PRIV --host-allowlist="*" --rpc-http-cors-origins="all" --rpc-http-port=8547 --privacy-enabled --privacy-url=http://127.0.0.1:8890 --privacy-public-key-file=Orion\nodeKey.pub --min-gas-price=0
```
```bash
besu --data-path=data --genesis-file=../genesis.json --bootnodes=<Node-1 Enode URL> --p2p-port=30305 --rpc-http-enabled --rpc-http-api=ETH,NET,IBFT,EEA,PRIV --host-allowlist="*" --rpc-http-cors-origins="all" --rpc-http-port=8547 --privacy-enabled --privacy-url=http://127.0.0.1:8890 --privacy-public-key-file=Orion/nodeKey.pub --min-gas-price=0
```
=== "Windows"
```bash
besu --data-path=data --genesis-file=..\genesis.json --bootnodes=<Node-1 Enode URL> --p2p-port=30305 --rpc-http-enabled --rpc-http-api=ETH,NET,IBFT,EEA,PRIV --host-allowlist="*" --rpc-http-cors-origins="all" --rpc-http-port=8547 --privacy-enabled --privacy-url=http://127.0.0.1:8890 --privacy-public-key-file=Orion\nodeKey.pub --min-gas-price=0
```
The command line specifies the same options as for Node-1 with different ports and Orion node URL.
The [`--bootnodes`](../../Reference/CLI/CLI-Syntax.md#bootnodes) option specifies the enode URL for

@ -112,9 +112,11 @@ in the `IBFT-Network` directory:
In the `IBFT-Network` directory, generate the node key and genesis file:
```bash tab="MacOS"
besu operator generate-blockchain-config --config-file=ibftConfigFile.json --to=networkFiles --private-key-file-name=key
```
=== "MacOS"
```bash
besu operator generate-blockchain-config --config-file=ibftConfigFile.json --to=networkFiles --private-key-file-name=key
```
Besu creates the following in the `networkFiles` directory:
@ -174,13 +176,17 @@ IBFT-Network/
In the `Node-1` directory, start Node-1:
```bash tab="MacOS"
besu --data-path=data --genesis-file=../genesis.json --rpc-http-enabled --rpc-http-api=ETH,NET,IBFT --host-allowlist="*" --rpc-http-cors-origins="all"
```
=== "MacOS"
```bash tab="Windows"
besu --data-path=data --genesis-file=..\genesis.json --rpc-http-enabled --rpc-http-api=ETH,NET,IBFT --host-allowlist="*" --rpc-http-cors-origins="all"
```
```bash
besu --data-path=data --genesis-file=../genesis.json --rpc-http-enabled --rpc-http-api=ETH,NET,IBFT --host-allowlist="*" --rpc-http-cors-origins="all"
```
=== "Windows"
```bash
besu --data-path=data --genesis-file=..\genesis.json --rpc-http-enabled --rpc-http-api=ETH,NET,IBFT --host-allowlist="*" --rpc-http-cors-origins="all"
```
The command line:
@ -205,13 +211,17 @@ enode URL to specify Node-1 as the bootnode in the following steps.
Start another terminal, change to the `Node-2` directory and start Node-2 specifying the Node-1
enode URL copied when starting Node-1 as the bootnode:
```bash tab="MacOS"
besu --data-path=data --genesis-file=../genesis.json --bootnodes=<Node-1 Enode URL> --p2p-port=30304 --rpc-http-enabled --rpc-http-api=ETH,NET,IBFT --host-allowlist="*" --rpc-http-cors-origins="all" --rpc-http-port=8546
```
=== "MacOS"
```bash tab="Windows"
besu --data-path=data --genesis-file=..\genesis.json --bootnodes=<Node-1 Enode URL> --p2p-port=30304 --rpc-http-enabled --rpc-http-api=ETH,NET,IBFT --host-allowlist="*" --rpc-http-cors-origins="all" --rpc-http-port=8546
```
```bash
besu --data-path=data --genesis-file=../genesis.json --bootnodes=<Node-1 Enode URL> --p2p-port=30304 --rpc-http-enabled --rpc-http-api=ETH,NET,IBFT --host-allowlist="*" --rpc-http-cors-origins="all" --rpc-http-port=8546
```
=== "Windows"
```bash
besu --data-path=data --genesis-file=..\genesis.json --bootnodes=<Node-1 Enode URL> --p2p-port=30304 --rpc-http-enabled --rpc-http-api=ETH,NET,IBFT --host-allowlist="*" --rpc-http-cors-origins="all" --rpc-http-port=8546
```
The command line specifies:
@ -230,13 +240,17 @@ The command line specifies:
Start another terminal, change to the `Node-3` directory and start Node-3 specifying the Node-1
enode URL copied when starting Node-1 as the bootnode:
```bash tab="MacOS"
besu --data-path=data --genesis-file=../genesis.json --bootnodes=<Node-1 Enode URL> --p2p-port=30305 --rpc-http-enabled --rpc-http-api=ETH,NET,IBFT --host-allowlist="*" --rpc-http-cors-origins="all" --rpc-http-port=8547
```
=== "MacOS"
```bash tab="Windows"
besu --data-path=data --genesis-file=..\genesis.json --bootnodes=<Node-1 Enode URL> --p2p-port=30305 --rpc-http-enabled --rpc-http-api=ETH,NET,IBFT --host-allowlist="*" --rpc-http-cors-origins="all" --rpc-http-port=8547
```
```bash
besu --data-path=data --genesis-file=../genesis.json --bootnodes=<Node-1 Enode URL> --p2p-port=30305 --rpc-http-enabled --rpc-http-api=ETH,NET,IBFT --host-allowlist="*" --rpc-http-cors-origins="all" --rpc-http-port=8547
```
=== "Windows"
```bash
besu --data-path=data --genesis-file=..\genesis.json --bootnodes=<Node-1 Enode URL> --p2p-port=30305 --rpc-http-enabled --rpc-http-api=ETH,NET,IBFT --host-allowlist="*" --rpc-http-cors-origins="all" --rpc-http-port=8547
```
The command line specifies:
@ -254,13 +268,17 @@ The command line specifies:
Start another terminal, change to the `Node-4` directory and start Node-4 specifying the Node-1
enode URL copied when starting Node-1 as the bootnode:
```bash tab="MacOS"
besu --data-path=data --genesis-file=../genesis.json --bootnodes=<Node-1 Enode URL> --p2p-port=30306 --rpc-http-enabled --rpc-http-api=ETH,NET,IBFT --host-allowlist="*" --rpc-http-cors-origins="all" --rpc-http-port=8548
```
=== "MacOS"
```bash tab="Windows"
besu --data-path=data --genesis-file=..\genesis.json --bootnodes=<Node-1 Enode URL> --p2p-port=30306 --rpc-http-enabled --rpc-http-api=ETH,NET,IBFT --host-allowlist="*" --rpc-http-cors-origins="all" --rpc-http-port=8548
```
```bash
besu --data-path=data --genesis-file=../genesis.json --bootnodes=<Node-1 Enode URL> --p2p-port=30306 --rpc-http-enabled --rpc-http-api=ETH,NET,IBFT --host-allowlist="*" --rpc-http-cors-origins="all" --rpc-http-port=8548
```
=== "Windows"
```bash
besu --data-path=data --genesis-file=..\genesis.json --bootnodes=<Node-1 Enode URL> --p2p-port=30306 --rpc-http-enabled --rpc-http-api=ETH,NET,IBFT --host-allowlist="*" --rpc-http-cors-origins="all" --rpc-http-port=8548
```
The command line specifies:

@ -49,13 +49,17 @@ To get the address for Node-1, in the `Node-1` directory, use the
[`public-key export-address`](../../Reference/CLI/CLI-Subcommands.md#export-address) subcommand to
write the node address to the specified file (`node1Address` in this example).
```bash tab="MacOS"
besu --data-path=data public-key export-address --to=data/node1Address
```
=== "MacOS"
```bash tab="Windows"
besu --data-path=data public-key export-address --to=data\node1Address
```
```bash
besu --data-path=data public-key export-address --to=data/node1Address
```
=== "Windows"
```bash
besu --data-path=data public-key export-address --to=data\node1Address
```
### 3. Create the genesis file
@ -132,13 +136,17 @@ In `extraData`, replace `<Node 1 Address>` with the
Start Node-1:
```bash tab="MacOS"
besu --data-path=data --genesis-file=../cliqueGenesis.json --network-id 123 --rpc-http-enabled --rpc-http-api=ETH,NET,CLIQUE --host-allowlist="*" --rpc-http-cors-origins="all"
```
=== "MacOS"
```bash tab="Windows"
besu --data-path=data --genesis-file=..\cliqueGenesis.json --network-id 123 --rpc-http-enabled --rpc-http-api=ETH,NET,CLIQUE --host-allowlist="*" --rpc-http-cors-origins="all"
```
```bash
besu --data-path=data --genesis-file=../cliqueGenesis.json --network-id 123 --rpc-http-enabled --rpc-http-api=ETH,NET,CLIQUE --host-allowlist="*" --rpc-http-cors-origins="all"
```
=== "Windows"
```bash
besu --data-path=data --genesis-file=..\cliqueGenesis.json --network-id 123 --rpc-http-enabled --rpc-http-api=ETH,NET,CLIQUE --host-allowlist="*" --rpc-http-cors-origins="all"
```
The command line enables:
@ -161,13 +169,17 @@ Copy the enode URL to specify Node-1 as the bootnode in the following steps.
Start another terminal, change to the `Node-2` directory and start Node-2 specifying the Node-1
enode URL copied when starting Node-1 as the bootnode:
```bash tab="MacOS"
besu --data-path=data --genesis-file=../cliqueGenesis.json --bootnodes=<Node-1 Enode URL> --network-id 123 --p2p-port=30304 --rpc-http-enabled --rpc-http-api=ETH,NET,CLIQUE --host-allowlist="*" --rpc-http-cors-origins="all" --rpc-http-port=8546
```
=== "MacOS"
```bash tab="Windows"
besu --data-path=data --genesis-file=..\cliqueGenesis.json --bootnodes=<Node-1 Enode URL> --network-id 123 --p2p-port=30304 --rpc-http-enabled --rpc-http-api=ETH,NET,CLIQUE --host-allowlist="*" --rpc-http-cors-origins="all" --rpc-http-port=8546
```
```bash
besu --data-path=data --genesis-file=../cliqueGenesis.json --bootnodes=<Node-1 Enode URL> --network-id 123 --p2p-port=30304 --rpc-http-enabled --rpc-http-api=ETH,NET,CLIQUE --host-allowlist="*" --rpc-http-cors-origins="all" --rpc-http-port=8546
```
=== "Windows"
```bash
besu --data-path=data --genesis-file=..\cliqueGenesis.json --bootnodes=<Node-1 Enode URL> --network-id 123 --p2p-port=30304 --rpc-http-enabled --rpc-http-api=ETH,NET,CLIQUE --host-allowlist="*" --rpc-http-cors-origins="all" --rpc-http-port=8546
```
The command line specifies:
@ -186,13 +198,17 @@ The command line specifies:
Start another terminal, change to the `Node-3` directory and start Node-3 specifying the Node-1
enode URL copied when starting Node-1 as the bootnode:
```bash tab="MacOS"
besu --data-path=data --genesis-file=../cliqueGenesis.json --bootnodes=<Node-1 Enode URL> --network-id 123 --p2p-port=30305 --rpc-http-enabled --rpc-http-api=ETH,NET,CLIQUE --host-allowlist="*" --rpc-http-cors-origins="all" --rpc-http-port=8547
```
=== "MacOS"
```bash tab="Windows"
besu --data-path=data --genesis-file=..\cliqueGenesis.json --bootnodes=<Node-1 Enode URL> --network-id 123 --p2p-port=30305 --rpc-http-enabled --rpc-http-api=ETH,NET,CLIQUE --host-allowlist="*" --rpc-http-cors-origins="all" --rpc-http-port=8547
```
```bash
besu --data-path=data --genesis-file=../cliqueGenesis.json --bootnodes=<Node-1 Enode URL> --network-id 123 --p2p-port=30305 --rpc-http-enabled --rpc-http-api=ETH,NET,CLIQUE --host-allowlist="*" --rpc-http-cors-origins="all" --rpc-http-port=8547
```
=== "Windows"
```bash
besu --data-path=data --genesis-file=..\cliqueGenesis.json --bootnodes=<Node-1 Enode URL> --network-id 123 --p2p-port=30305 --rpc-http-enabled --rpc-http-api=ETH,NET,CLIQUE --host-allowlist="*" --rpc-http-cors-origins="all" --rpc-http-port=8547
```
The command line specifies:
@ -257,4 +273,4 @@ When finished using the private network, stop all nodes using ++ctrl+c++ in each
<!-- Links -->
[Clique (Proof of Authority) consensus protocol]: ../../HowTo/Configure/Consensus-Protocols/Clique.md
[Clique API to add]: ../../HowTo/Configure/Consensus-Protocols/Clique.md#adding-and-removing-signers
[private network example tutorial]: ../Examples/Private-Network-Example.md#creating-a-transaction-using-metamask
[private network example tutorial]: ../Examples/Private-Network-Example.md#creating-a-transaction-using-metamask

@ -91,13 +91,17 @@ the `Private-Network` directory:
Start Node-1:
```bash tab="MacOS"
besu --data-path=data --genesis-file=../privateNetworkGenesis.json --miner-enabled --miner-coinbase fe3b557e8fb62b89f4916b721be55ceb828dbd73 --rpc-http-enabled --host-allowlist="*" --rpc-http-cors-origins="all"
```
=== "MacOS"
```bash tab="Windows"
besu --data-path=data --genesis-file=..\privateNetworkGenesis.json --miner-enabled --miner-coinbase fe3b557e8fb62b89f4916b721be55ceb828dbd73 --rpc-http-enabled --host-allowlist="*" --rpc-http-cors-origins="all"
```
```bash
besu --data-path=data --genesis-file=../privateNetworkGenesis.json --miner-enabled --miner-coinbase fe3b557e8fb62b89f4916b721be55ceb828dbd73 --rpc-http-enabled --host-allowlist="*" --rpc-http-cors-origins="all"
```
=== "Windows"
```bash
besu --data-path=data --genesis-file=..\privateNetworkGenesis.json --miner-enabled --miner-coinbase fe3b557e8fb62b89f4916b721be55ceb828dbd73 --rpc-http-enabled --host-allowlist="*" --rpc-http-cors-origins="all"
```
The command line enables:
@ -125,13 +129,17 @@ enode URL to specify Node-1 as the bootnode in the following steps.
Start another terminal, change to the `Node-2` directory and start Node-2 specifying the Node-1
enode URL copied when starting Node-1 as the bootnode:
```bash tab="MacOS"
besu --data-path=data --genesis-file=../privateNetworkGenesis.json --bootnodes=<Node-1 Enode URL> --p2p-port=30304
```
=== "MacOS"
```bash tab="Windows"
besu --data-path=data --genesis-file=..\privateNetworkGenesis.json --bootnodes=<Node-1 Enode URL> --p2p-port=30304
```
```bash
besu --data-path=data --genesis-file=../privateNetworkGenesis.json --bootnodes=<Node-1 Enode URL> --p2p-port=30304
```
=== "Windows"
```bash
besu --data-path=data --genesis-file=..\privateNetworkGenesis.json --bootnodes=<Node-1 Enode URL> --p2p-port=30304
```
The command line specifies:
@ -148,13 +156,17 @@ The command line specifies:
Start another terminal, change to the `Node-3` directory and start Node-3 specifying the Node-1
enode URL copied when starting Node-1 as the bootnode:
```bash tab="MacOS"
besu --data-path=data --genesis-file=../privateNetworkGenesis.json --bootnodes=<Node-1 Enode URL> --p2p-port=30305
```
=== "MacOS"
```bash tab="Windows"
besu --data-path=data --genesis-file=..\privateNetworkGenesis.json --bootnodes=<Node-1 Enode URL> --p2p-port=30305
```
```bash
besu --data-path=data --genesis-file=../privateNetworkGenesis.json --bootnodes=<Node-1 Enode URL> --p2p-port=30305
```
=== "Windows"
```bash
besu --data-path=data --genesis-file=..\privateNetworkGenesis.json --bootnodes=<Node-1 Enode URL> --p2p-port=30305
```
The command line specifies:

@ -8,7 +8,7 @@ $(window).on('hashchange', function(){
});
function displayLatestWarning(){
$( ".latest-warning" ).css( "display", $(location).attr('href').includes(latestWarningTrigger)?"inherit":"none" );
$( ".latest-warning" ).css( "display", $(location).attr('href').includes(latestWarningTrigger)?"block":"none" );
}
function makeImagesZoomable(){

@ -53,3 +53,7 @@
font-size: small;
content: " \f360";
}
#header-logo{
width: auto;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<svg viewBox="0.93 0.07 68.65 95.22" width="68.65" height="95.22" xmlns="http://www.w3.org/2000/svg">
<style>
path {
fill: black;
}
@media (prefers-color-scheme: dark) {
path {
fill: white;
}
}
</style>
<path d="M69.58,39.36 L69.58,39.13 C69.58,36.65 67.57,34.63 65.08,34.63 L64.85,34.63 C63.87,34.63 62.97,34.94 62.24,35.47 L39.87,22.56 C39.88,22.45 39.89,22.33 39.89,22.22 L39.89,21.99 C39.89,19.51 37.88,17.49 35.39,17.49 L35.16,17.49 C32.68,17.49 30.66,19.5 30.66,21.99 L30.66,22.22 C30.66,22.33 30.67,22.45 30.68,22.56 L8.31,35.47 C8.05,35.29 7.78,35.13 7.48,35 L7.48,8.93 C9.09,8.2 10.21,6.59 10.21,4.71 C10.21,2.15 8.13,0.07 5.57,0.07 C3.01,0.07 0.93,2.15 0.93,4.71 C0.93,6.59 2.05,8.21 3.66,8.93 L3.66,35 C2.07,35.69 0.95,37.28 0.95,39.13 L0.95,39.36 C0.95,41.21 2.07,42.79 3.66,43.49 L3.66,69.29 C2.07,69.98 0.95,71.57 0.95,73.42 L0.95,73.65 C0.95,76.13 2.96,78.15 5.45,78.15 L5.68,78.15 C6.65,78.15 7.55,77.84 8.29,77.31 L30.66,90.22 C30.65,90.33 30.64,90.44 30.64,90.56 L30.64,90.79 C30.64,93.27 32.65,95.29 35.14,95.29 L35.37,95.29 C37.85,95.29 39.87,93.28 39.87,90.79 L39.87,90.56 C39.87,90.44 39.86,90.33 39.85,90.22 L62.23,77.3 C62.97,77.83 63.87,78.14 64.84,78.14 L65.07,78.14 C67.55,78.14 69.57,76.13 69.57,73.64 L69.57,73.41 C69.57,71.56 68.45,69.98 66.86,69.28 L66.86,43.48 C68.46,42.79 69.58,41.21 69.58,39.36 Z M63.06,68.57 C60.93,65.08 57.31,61.29 52.88,57.61 C51.86,58.42 50.82,59.22 49.77,60 C55.44,64.65 59.09,68.96 60.58,72 C60.43,72.44 60.35,72.92 60.35,73.41 L60.35,73.64 C60.35,73.75 60.36,73.87 60.37,73.98 L38,86.89 C37.43,86.48 36.75,86.2 36.02,86.1 C33.19,81.42 30.48,70.81 30.48,56.38 C30.48,54.14 30.55,52 30.67,49.96 C29.39,49.32 28.16,48.73 26.97,48.2 C26.77,50.89 26.67,53.64 26.67,56.38 C26.67,67.99 28.45,79.69 31.9,86.52 L11.3,74.62 C15.15,74.62 20.16,73.43 25.75,71.25 C25.57,69.97 25.42,68.66 25.3,67.34 C17.93,70.33 12.26,71.25 9.25,70.64 C8.79,70.05 8.19,69.58 7.5,69.28 L7.5,43.48 C8.2,43.18 8.8,42.7 9.26,42.12 C13.87,41.2 24.68,43.84 38.26,51.96 C40.07,53.04 41.78,54.14 43.39,55.23 C44.54,54.43 45.62,53.63 46.64,52.85 C44.57,51.4 42.41,50.01 40.21,48.69 C29.06,42.03 18.27,38.15 11.31,38.14 L31.92,26.24 C30.11,29.83 28.76,34.76 27.89,40.31 C29.07,40.8 30.28,41.33 31.51,41.9 C32.55,34.84 34.27,29.59 36.04,26.66 C36.77,26.56 37.45,26.28 38.02,25.87 L60.39,38.78 C60.38,38.89 60.37,39 60.37,39.12 L60.37,39.35 C60.37,39.85 60.45,40.32 60.6,40.77 C58.26,45.54 50.62,53.41 38.26,60.8 C36.34,61.95 34.47,62.99 32.66,63.92 C32.76,65.34 32.89,66.7 33.03,68 C35.38,66.83 37.78,65.51 40.2,64.07 C50.05,58.18 59.11,50.66 63.07,44.2 L63.07,68.57 L63.06,68.57 Z" id="Shape"/>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

@ -33,54 +33,44 @@
<!-- Link to previous and/or next page -->
{% if page.previous_page or page.next_page %}
<div class="md-footer-nav">
<nav class="md-footer-nav__inner md-grid">
<div class="md-footer-nav">
<nav class="md-footer-nav__inner md-grid" aria-label="{{ lang.t('footer.title') }}">
<!-- Link to previous page -->
{% if page.previous_page %}
<a href="{{ page.previous_page.url | url }}"
title="{{ page.previous_page.title }}"
class="md-flex md-footer-nav__link md-footer-nav__link--prev"
rel="prev">
<div class="md-flex__cell md-flex__cell--shrink">
<i class="md-icon md-icon--arrow-back
md-footer-nav__button"></i>
</div>
<div class="md-flex__cell md-flex__cell--stretch
md-footer-nav__title">
<span class="md-flex__ellipsis">
<!-- Link to previous page -->
{% if page.previous_page %}
<a href="{{ page.previous_page.url | url }}" title="{{ page.previous_page.title | striptags }}" class="md-footer-nav__link md-footer-nav__link--prev" rel="prev">
<div class="md-footer-nav__button md-icon">
{% include ".icons/material/arrow-left.svg" %}
</div>
<div class="md-footer-nav__title">
<div class="md-ellipsis">
<span class="md-footer-nav__direction">
{{ lang.t("footer.previous") }}
</span>
{{ page.previous_page.title }}
</span>
</div>
</a>
{% endif %}
{{ page.previous_page.title }}
</div>
</div>
</a>
{% endif %}
<!-- Link to next page -->
{% if page.next_page %}
<a href="{{ page.next_page.url | url }}"
title="{{ page.next_page.title }}"
class="md-flex md-footer-nav__link md-footer-nav__link--next"
rel="next">
<div class="md-flex__cell md-flex__cell--stretch
md-footer-nav__title">
<span class="md-flex__ellipsis">
<!-- Link to next page -->
{% if page.next_page %}
<a href="{{ page.next_page.url | url }}" title="{{ page.next_page.title | striptags }}" class="md-footer-nav__link md-footer-nav__link--next" rel="next">
<div class="md-footer-nav__title">
<div class="md-ellipsis">
<span class="md-footer-nav__direction">
{{ lang.t("footer.next") }}
</span>
{{ page.next_page.title }}
</span>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<i class="md-icon md-icon--arrow-forward
md-footer-nav__button"></i>
</div>
</a>
{% endif %}
</nav>
</div>
{{ page.next_page.title }}
</div>
</div>
<div class="md-footer-nav__button md-icon">
{% include ".icons/material/arrow-right.svg" %}
</div>
</a>
{% endif %}
</nav>
</div>
{% endif %}
<!-- Further information -->
@ -90,16 +80,16 @@
<!-- Copyright and theme information -->
<div class="md-footer-copyright" style="padding-top: 0px; padding-bottom: 0px;">
{% if config.copyright %}
<div class="md-footer-copyright__highlight">
{{ config.copyright }}
</div>
<div class="md-footer-copyright__highlight">
{{ config.copyright }}
</div>
{% endif %}
</div>
<!-- Social links -->
{% block social %}
{% include "partials/social.html" %}
{% include "partials/social.html" %}
{% endblock %}
</div>
</div>
</footer>
</footer>

@ -22,57 +22,43 @@
<!-- Application header -->
<header class="md-header" data-md-component="header">
<!-- Top-level navigation -->
<nav class="md-header-nav md-grid">
<div class="md-flex">
<!-- Link to home -->
<div class="md-flex__cell md-flex__cell--shrink">
<a href="{{ config.site_url | default(nav.homepage.url, true) | url }}"
title="{{ config.site_name }}"
class="md-header-nav__button md-logo">
{% if config.theme.logo.icon %}
<i class="md-icon">{{ config.theme.logo.icon }}</i>
{% else %}
<img src="{{ config.theme.logo | url }}" height="24" />
{% endif %}
</a>
</div>
<!-- Button to toggle drawer -->
<div class="md-flex__cell md-flex__cell--shrink">
<label class="md-icon md-icon--menu md-header-nav__button"
for="__drawer"></label>
</div>
<!-- Header title -->
<div class="md-flex__cell md-flex__cell--stretch">
<div class="md-flex__ellipsis md-header-nav__title"
data-md-component="title">
{{ page.title }}
</div>
<nav class="md-header-nav md-grid" aria-label="{{ lang.t('header.title') }}">
<a href="{{ config.site_url | default(nav.homepage.url, true) | url }}" title="{{ config.site_name }}" class="md-header-nav__button md-logo" aria-label="{{ config.site_name }}">
{% include "partials/logo.html" %}
</a>
<label class="md-header-nav__button md-icon" for="__drawer">
{% include ".icons/material/menu" ~ ".svg" %}
</label>
<div class="md-header-nav__title" data-md-component="header-title">
{% if config.site_name == page.title %}
<div class="md-header-nav__ellipsis md-ellipsis">
{% if not config.extra.logo_is_text %}{{ config.site_name }}{% endif %}
</div>
<!-- Button to open search dialogue -->
<div class="md-flex__cell md-flex__cell--shrink">
{% if "search" in config["plugins"] %}
<label class="md-icon md-icon--search md-header-nav__button"
for="__search"></label>
<!-- Search interface -->
{% include "partials/search.html" %}
{% else %}
<div class="md-header-nav__ellipsis">
{% if config.site_name == page.title %}
{% if not config.extra.logo_is_text %}{{ config.site_name }}{% endif %}
{% else %}
<span class="md-header-nav__topic md-ellipsis">
{% if not config.extra.logo_is_text %}{{ config.site_name }}{% endif %}
</span>
<span class="md-header-nav__topic md-ellipsis">
{{ page.title }}
</span>
{% endif %}
</div>
<!-- Repository containing source -->
{% if config.repo_url %}
<div class="md-flex__cell md-flex__cell--shrink">
<div class="md-header-nav__source">
{% include "partials/source.html" %}
</div>
</div>
{% endif %}
</div>
{% if "search" in config["plugins"] %}
<label class="md-header-nav__button md-icon" for="__search">
{% include ".icons/material/magnify.svg" %}
</label>
{% include "partials/search.html" %}
{% endif %}
{% if config.repo_url %}
<div class="md-header-nav__source">
{% include "partials/source.html" %}
</div>
{% endif %}
</nav>
</header>

@ -0,0 +1,29 @@
<!--
Copyright (c) 2016-2020 Martin Donath <martin.donath@squidfunk.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.
-->
<!-- Logo -->
{% if config.theme.logo %}
<img src="{{ config.theme.logo | url }}" alt="logo" id="header-logo"/>
{% else %}
{% set icon = config.theme.icon.logo or "material/library" %}
{% include ".icons/" ~ icon ~ ".svg" %}
{% endif %}

@ -1,33 +1,14 @@
{% import "partials/language.html" as lang with context %}
<nav class="md-nav md-nav--secondary">
{% set toc_ = page.toc %}
{% if toc_ | first is defined and "\x3ch1 id=" in page.content %}
{% set toc_ = (toc_ | first).children %}
<nav class="md-nav md-nav--secondary" aria-label="{{ lang.t('toc.title') }}">
{% set toc = page.toc %}
{% if toc | first is defined and "\x3ch1 id=" in page.content %}
{% set toc = (toc | first).children %}
{% endif %}
{% if toc_ | first is defined %}
<!--<label class="md-nav__title" for="__toc">{{ lang.t("toc.title") }}</label>-->
<ul class="md-nav__list" data-md-scrollfix>
{% for toc_item in toc_ %}
{% include "partials/toc-item.html" %}
{% endfor %}
{% if page.meta.source and page.meta.source | length > 0 %}
<li class="md-nav__item">
<a href="#__source" title="{{ lang.t('meta.source') }}" class="md-nav__link md-nav__link--active">
{{ lang.t("meta.source") }}
</a>
</li>
{% endif %}
{% set disqus = config.extra.disqus %}
{% if page and page.meta and page.meta.disqus is string %}
{% set disqus = page.meta.disqus %}
{% endif %}
{% if not page.is_homepage and disqus %}
<li class="md-nav__item">
<a href="#__comments" title="{{ lang.t('meta.comments') }}" class="md-nav__link md-nav__link--active">
{{ lang.t("meta.comments") }}
</a>
</li>
{% endif %}
</ul>
{% if toc | first is defined %}
<ul class="md-nav__list" data-md-scrollfix>
{% for toc_item in toc %}
{% include "partials/toc-item.html" %}
{% endfor %}
</ul>
{% endif %}
</nav>

@ -33,9 +33,6 @@ extra:
google:
site_verification: 'sGzYdFR_AYDRtsC-SNxMRwjellnfTgs5ZA0q7GIM5j0'
tag_manager: 'GTM-TS3WLJM'
search:
language: 'en'
tokenizer: '[\s]+'
logo_regular: logo.svg
logo_reversed: &logo_reversed logo-reversed.svg
@ -49,7 +46,7 @@ theme:
palette:
primary: blue-grey
accent: teal
favicon: favicon.ico
favicon: favicon.svg
logo: *logo_reversed
nav:
- How To:
@ -199,6 +196,8 @@ markdown_extensions:
permalink:
toc_depth: 3
- codehilite
- pymdownx.tabbed
- pymdownx.superfences
- markdown_include.include:
base_path: docs
- admonition
@ -214,11 +213,6 @@ markdown_extensions:
- pymdownx.magiclink
- pymdownx.mark
- pymdownx.smartsymbols
# pymdownx.superfences is deprecated.
# It must be replaced with pymdownx.tabbed but it requires new CSS
# TODO with material 5 update
- pymdownx.superfences:
legacy_tab_classes: true
- pymdownx.tasklist:
custom_checkbox: true
- pymdownx.tilde
@ -226,7 +220,9 @@ markdown_extensions:
- smarty
plugins:
- search
- search:
lang: 'en'
separator: '[\s]+'
- markdownextradata
- exclude:
glob:

Loading…
Cancel
Save