├── files
├── common
│ ├── logs
│ │ ├── besu
│ │ │ └── .gitignore
│ │ ├── quorum
│ │ │ └── .gitignore
│ │ └── tessera
│ │ │ └── .gitignore
│ ├── config
│ │ ├── ethsigner
│ │ │ ├── password
│ │ │ ├── createKey.js
│ │ │ └── key
│ │ ├── nodes
│ │ │ ├── member1
│ │ │ │ ├── accountPassword
│ │ │ │ ├── address
│ │ │ │ ├── tm.pub
│ │ │ │ ├── tma.pub
│ │ │ │ ├── nodekey
│ │ │ │ ├── accountPrivateKey
│ │ │ │ ├── tm.key
│ │ │ │ ├── tma.key
│ │ │ │ ├── nodekey.pub
│ │ │ │ └── accountKeystore
│ │ │ ├── member2
│ │ │ │ ├── accountPassword
│ │ │ │ ├── address
│ │ │ │ ├── tm.pub
│ │ │ │ ├── tma.pub
│ │ │ │ ├── nodekey
│ │ │ │ ├── accountPrivateKey
│ │ │ │ ├── tm.key
│ │ │ │ ├── tma.key
│ │ │ │ ├── nodekey.pub
│ │ │ │ └── accountKeystore
│ │ │ ├── member3
│ │ │ │ ├── accountPassword
│ │ │ │ ├── address
│ │ │ │ ├── tm.pub
│ │ │ │ ├── tma.pub
│ │ │ │ ├── nodekey
│ │ │ │ ├── accountPrivateKey
│ │ │ │ ├── tm.key
│ │ │ │ ├── tma.key
│ │ │ │ ├── nodekey.pub
│ │ │ │ └── accountKeystore
│ │ │ ├── rpcnode
│ │ │ │ ├── accountPassword
│ │ │ │ ├── address
│ │ │ │ ├── nodekey
│ │ │ │ ├── accountPrivateKey
│ │ │ │ ├── nodekey.pub
│ │ │ │ └── accountKeystore
│ │ │ ├── validator1
│ │ │ │ ├── accountPassword
│ │ │ │ ├── address
│ │ │ │ ├── nodekey
│ │ │ │ ├── accountPrivateKey
│ │ │ │ ├── nodekey.pub
│ │ │ │ └── accountKeystore
│ │ │ ├── validator2
│ │ │ │ ├── accountPassword
│ │ │ │ ├── address
│ │ │ │ ├── nodekey
│ │ │ │ ├── accountPrivateKey
│ │ │ │ ├── nodekey.pub
│ │ │ │ └── accountKeystore
│ │ │ ├── validator3
│ │ │ │ ├── accountPassword
│ │ │ │ ├── address
│ │ │ │ ├── nodekey
│ │ │ │ ├── accountPrivateKey
│ │ │ │ ├── nodekey.pub
│ │ │ │ └── accountKeystore
│ │ │ └── validator4
│ │ │ │ ├── accountPassword
│ │ │ │ ├── address
│ │ │ │ ├── nodekey
│ │ │ │ ├── accountPrivateKey
│ │ │ │ ├── nodekey.pub
│ │ │ │ └── accountKeystore
│ │ ├── grafana
│ │ │ └── provisioning
│ │ │ │ ├── dashboards
│ │ │ │ └── dashboard.yml
│ │ │ │ └── datasources
│ │ │ │ ├── loki.yml
│ │ │ │ └── prometheus.yml
│ │ └── tessera
│ │ │ ├── docker-entrypoint.sh
│ │ │ ├── Dockerfile
│ │ │ └── data
│ │ │ ├── logback.xml
│ │ │ └── tessera-config-template.json
│ ├── dapps
│ │ └── quorumToken
│ │ │ ├── frontend
│ │ │ ├── .eslintrc.json
│ │ │ ├── next.config.js
│ │ │ ├── styles
│ │ │ │ └── globals.css
│ │ │ ├── src
│ │ │ │ ├── pages
│ │ │ │ │ ├── _app.tsx
│ │ │ │ │ ├── _document.js
│ │ │ │ │ └── index.tsx
│ │ │ │ └── components
│ │ │ │ │ ├── quorumToken
│ │ │ │ │ ├── QuorumTokenABI.tsx
│ │ │ │ │ ├── TransferQuorumToken.tsx
│ │ │ │ │ └── ReadQuorumToken.tsx
│ │ │ │ │ ├── Layout.tsx
│ │ │ │ │ └── MMAccount.tsx
│ │ │ ├── .gitignore
│ │ │ ├── tsconfig.json
│ │ │ ├── package.json
│ │ │ └── public
│ │ │ │ ├── next.svg
│ │ │ │ └── favicon.svg
│ │ │ ├── .gitignore
│ │ │ ├── tsconfig.json
│ │ │ ├── contracts
│ │ │ └── QuorumToken.sol
│ │ │ ├── scripts
│ │ │ └── deploy_quorumtoken.ts
│ │ │ ├── hardhat.config.ts
│ │ │ ├── package.json
│ │ │ ├── test
│ │ │ └── QuorumToken.test.ts
│ │ │ └── README.md
│ ├── restart.sh
│ ├── static
│ │ ├── qs-dapp.png
│ │ ├── blockchain-network.png
│ │ ├── npm-send-private-tx.png
│ │ └── metamask-faucet-transfer.png
│ ├── logstash
│ │ ├── pipeline
│ │ │ ├── 10_filebeat_redis.conf
│ │ │ ├── 20_logstash.conf
│ │ │ ├── 10_metricbeat_redis.conf
│ │ │ ├── 20_besu.conf
│ │ │ ├── 20_tessera.conf
│ │ │ ├── 20_quorum.conf
│ │ │ └── 30_elasticsearch.conf
│ │ ├── config
│ │ │ ├── logstash.yml
│ │ │ └── log4j2.properties
│ │ └── Dockerfile
│ ├── smart_contracts
│ │ ├── contracts
│ │ │ ├── Counter.sol
│ │ │ └── SimpleStorage.sol
│ │ ├── package.json
│ │ └── scripts
│ │ │ └── compile.js
│ ├── filebeat
│ │ ├── Dockerfile
│ │ └── filebeat.yml
│ ├── metricbeat
│ │ ├── Dockerfile
│ │ └── metricbeat.yml
│ ├── chainlens
│ │ ├── nginx.conf
│ │ └── 5xx.html
│ ├── extra
│ │ ├── package.json
│ │ └── generate_node_details.js
│ ├── attach.sh
│ ├── loki
│ │ └── loki.yml
│ ├── .env
│ ├── splunk
│ │ ├── splunk.yml
│ │ └── log4j2.xml
│ ├── stop.sh
│ ├── resume.sh
│ ├── run.sh
│ ├── remove.sh
│ ├── promtail
│ │ └── promtail.yml
│ └── .common.sh
├── besu
│ ├── quorum-explorer
│ │ ├── .gitignore
│ │ ├── env
│ │ └── config.json
│ ├── config
│ │ ├── besu
│ │ │ ├── config.toml
│ │ │ ├── log-config.xml
│ │ │ ├── static-nodes.json
│ │ │ ├── permissions_config.toml
│ │ │ ├── log-config-splunk.xml
│ │ │ └── CLIQUEgenesis.json
│ │ └── prometheus
│ │ │ └── prometheus.yml
│ └── smart_contracts
│ │ └── scripts
│ │ ├── public
│ │ ├── hre_eth_tx.js
│ │ ├── web3_eth_tx.js
│ │ ├── hre_public_tx.js
│ │ └── hre_1559_public_tx.js
│ │ ├── keys.js
│ │ └── privacy
│ │ └── concurrent_private_txs.js
└── goquorum
│ ├── config
│ ├── permissions
│ │ └── .gitignore
│ ├── goquorum
│ │ ├── data
│ │ │ ├── passwords.txt
│ │ │ ├── disallowed-nodes.json
│ │ │ ├── static-nodes.json
│ │ │ ├── permissioned-nodes.json
│ │ │ ├── raft-standard-genesis.json
│ │ │ ├── raft-enhanced-genesis.json
│ │ │ ├── istanbul-standard-genesis.json
│ │ │ ├── qbft-enhanced-genesis.json
│ │ │ ├── qbft-standard-genesis.json
│ │ │ └── istanbul-enhanced-genesis.json
│ │ ├── Dockerfile
│ │ └── docker-entrypoint.sh
│ └── prometheus
│ │ └── prometheus.yml
│ ├── quorum-explorer
│ ├── .gitignore
│ ├── env
│ └── config.json
│ ├── smart_contracts
│ ├── permissioning
│ │ ├── scripts
│ │ │ ├── compile.sh
│ │ │ ├── copyAndRestart.sh
│ │ │ ├── deployEthers.js
│ │ │ └── keys.js
│ │ ├── package.json
│ │ └── contracts
│ │ │ ├── v1
│ │ │ └── PermissionsUpgradable.sol
│ │ │ └── v2
│ │ │ └── PermissionsUpgradable.sol
│ └── scripts
│ │ ├── compile.js
│ │ ├── public
│ │ ├── hre_eth_tx.js
│ │ └── hre_public_tx.js
│ │ └── keys.js
│ └── README.md
├── .gitattributes
├── .gitignore
├── .editorconfig
├── .github
└── workflows
│ ├── ci.yml
│ └── codeql-analysis.yml
├── templates
└── besu
│ └── config
│ └── besu
│ └── .env
├── index.js
├── package.json
└── src
├── questions
└── types.ts
├── networkBuilder.ts
├── spinner.ts
├── index.ts
└── fileRendering.ts
/files/common/logs/besu/.gitignore:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto eol=lf
2 |
--------------------------------------------------------------------------------
/files/common/logs/quorum/.gitignore:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/files/common/logs/tessera/.gitignore:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/files/besu/quorum-explorer/.gitignore:
--------------------------------------------------------------------------------
1 | !dist
2 |
--------------------------------------------------------------------------------
/files/common/config/ethsigner/password:
--------------------------------------------------------------------------------
1 | Password1
--------------------------------------------------------------------------------
/files/goquorum/config/permissions/.gitignore:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/files/common/config/nodes/member1/accountPassword:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/files/common/config/nodes/member2/accountPassword:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/files/common/config/nodes/member3/accountPassword:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/files/common/config/nodes/rpcnode/accountPassword:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/files/common/config/nodes/validator1/accountPassword:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/files/common/config/nodes/validator2/accountPassword:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/files/common/config/nodes/validator3/accountPassword:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/files/common/config/nodes/validator4/accountPassword:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/files/goquorum/config/goquorum/data/passwords.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/files/goquorum/quorum-explorer/.gitignore:
--------------------------------------------------------------------------------
1 | !dist
2 |
--------------------------------------------------------------------------------
/files/goquorum/config/goquorum/data/disallowed-nodes.json:
--------------------------------------------------------------------------------
1 | [
2 | ]
3 |
--------------------------------------------------------------------------------
/files/common/config/nodes/member1/address:
--------------------------------------------------------------------------------
1 | 0x13a52aab892e1322e8b52506276363d4754c122e
2 |
--------------------------------------------------------------------------------
/files/common/config/nodes/member1/tm.pub:
--------------------------------------------------------------------------------
1 | BULeR8JyUWhiuuCMU/HLA0Q5pzkYT+cHII3ZKBey3Bo=
--------------------------------------------------------------------------------
/files/common/config/nodes/member1/tma.pub:
--------------------------------------------------------------------------------
1 | 8SjRHlUBe4hAmTk3KDeJ96RhN+s10xRrHDrxEi1O5W0=
--------------------------------------------------------------------------------
/files/common/config/nodes/member2/address:
--------------------------------------------------------------------------------
1 | 0xe090a28b8a9d0a69ec259cb745036d5d1030e3ea
2 |
--------------------------------------------------------------------------------
/files/common/config/nodes/member2/tm.pub:
--------------------------------------------------------------------------------
1 | QfeDAys9MPDs2XHExtc84jKGHxZg/aj52DTh0vtA3Xc=
--------------------------------------------------------------------------------
/files/common/config/nodes/member2/tma.pub:
--------------------------------------------------------------------------------
1 | 2T7xkjblN568N1QmPeElTjoeoNT4tkWYOJYxSMDO5i0=
--------------------------------------------------------------------------------
/files/common/config/nodes/member3/address:
--------------------------------------------------------------------------------
1 | 0x401bdfcd9221cd790e7cd66eece303ed4d4b53b1
2 |
--------------------------------------------------------------------------------
/files/common/config/nodes/member3/tm.pub:
--------------------------------------------------------------------------------
1 | 1iTZde/ndBHvzhcl7V68x44Vx7pl8nwx9LqnM/AfJUg=
--------------------------------------------------------------------------------
/files/common/config/nodes/member3/tma.pub:
--------------------------------------------------------------------------------
1 | 3nLS1GSlPs3/AccoZ20WTBrYP/ua5KDlUM1uGrDKHTs=
--------------------------------------------------------------------------------
/files/common/config/nodes/rpcnode/address:
--------------------------------------------------------------------------------
1 | 0xdf8b560be949c229c821731554c33ead5e3888a4
2 |
--------------------------------------------------------------------------------
/files/common/config/nodes/validator1/address:
--------------------------------------------------------------------------------
1 | 0x93917cadbace5dfce132b991732c6cda9bcc5b8a
2 |
--------------------------------------------------------------------------------
/files/common/config/nodes/validator2/address:
--------------------------------------------------------------------------------
1 | 0x27a97c9aaf04f18f3014c32e036dd0ac76da5f18
2 |
--------------------------------------------------------------------------------
/files/common/config/nodes/validator3/address:
--------------------------------------------------------------------------------
1 | 0xce412f988377e31f4d0ff12d74df73b51c42d0ca
2 |
--------------------------------------------------------------------------------
/files/common/config/nodes/validator4/address:
--------------------------------------------------------------------------------
1 | 0x98c1334496614aed49d2e81526d089f7264fed9c
2 |
--------------------------------------------------------------------------------
/files/common/dapps/quorumToken/frontend/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "next/core-web-vitals"
3 | }
4 |
--------------------------------------------------------------------------------
/files/common/config/nodes/member1/nodekey:
--------------------------------------------------------------------------------
1 | b9a4bd1539c15bcc83fa9078fe89200b6e9e802ae992f13cd83c853f16e8bed4
2 |
--------------------------------------------------------------------------------
/files/common/config/nodes/member2/nodekey:
--------------------------------------------------------------------------------
1 | f18166704e19b895c1e2698ebc82b4e007e6d2933f4b31be23662dd0ec602570
2 |
--------------------------------------------------------------------------------
/files/common/config/nodes/member3/nodekey:
--------------------------------------------------------------------------------
1 | 4107f0b6bf67a3bc679a15fe36f640415cf4da6a4820affaac89c8b280dfd1b3
2 |
--------------------------------------------------------------------------------
/files/common/config/nodes/rpcnode/nodekey:
--------------------------------------------------------------------------------
1 | 0e93a540518eeb673d94fb496b746008ab56605463cb9212493997f5755124d1
2 |
--------------------------------------------------------------------------------
/files/common/config/nodes/validator1/nodekey:
--------------------------------------------------------------------------------
1 | 1a2c4ff0f1b38e2322658dba692816138eb22d002515df1fffca21278f406aa9
2 |
--------------------------------------------------------------------------------
/files/common/config/nodes/validator2/nodekey:
--------------------------------------------------------------------------------
1 | 7f9af699dd2bb1af76c90b3f67183dd48abae509c315eb8f2c55301ad90ba978
2 |
--------------------------------------------------------------------------------
/files/common/config/nodes/validator3/nodekey:
--------------------------------------------------------------------------------
1 | fe006b00c738e7e5af7f7623290ffc83f394741ae6fb6afc6081cab49e1e1a70
2 |
--------------------------------------------------------------------------------
/files/common/config/nodes/validator4/nodekey:
--------------------------------------------------------------------------------
1 | 8f6ae009cdbbf6e6fa739b91a4483f251bbe89f6570d34856554533b36c93c55
2 |
--------------------------------------------------------------------------------
/files/common/config/nodes/member1/accountPrivateKey:
--------------------------------------------------------------------------------
1 | 0x8bbbb1b345af56b560a5b20bd4b0ed1cd8cc9958a16262bc75118453cb546df7
--------------------------------------------------------------------------------
/files/common/config/nodes/member2/accountPrivateKey:
--------------------------------------------------------------------------------
1 | 0x4762e04d10832808a0aebdaa79c12de54afbe006bfffd228b3abcc494fe986f9
--------------------------------------------------------------------------------
/files/common/config/nodes/member3/accountPrivateKey:
--------------------------------------------------------------------------------
1 | 0x61dced5af778942996880120b303fc11ee28cc8e5036d2fdff619b5675ded3f0
--------------------------------------------------------------------------------
/files/common/config/nodes/rpcnode/accountPrivateKey:
--------------------------------------------------------------------------------
1 | 0x60bbe10a196a4e71451c0f6e9ec9beab454c2a5ac0542aa5b8b733ff5719fec3
--------------------------------------------------------------------------------
/files/common/config/nodes/member1/tm.key:
--------------------------------------------------------------------------------
1 | {"data":{"bytes":"Wl+xSyXVuuqzpvznOS7dOobhcn4C5auxkFRi7yLtgtA="},"type":"unlocked"}
--------------------------------------------------------------------------------
/files/common/config/nodes/member2/tm.key:
--------------------------------------------------------------------------------
1 | {"data":{"bytes":"nDFwJNHSiT1gNzKBy9WJvMhmYRkW3TzFUmPsNzR6oFk="},"type":"unlocked"}
--------------------------------------------------------------------------------
/files/common/config/nodes/member3/tm.key:
--------------------------------------------------------------------------------
1 | {"data":{"bytes":"tMxUVR8bX7aq/TbpVHc2QV3SN2iUuExBwefAuFsO0Lg="},"type":"unlocked"}
--------------------------------------------------------------------------------
/files/common/config/nodes/validator1/accountPrivateKey:
--------------------------------------------------------------------------------
1 | 0xe6181caaffff94a09d7e332fc8da9884d99902c7874eb74354bdcadf411929f1
--------------------------------------------------------------------------------
/files/common/config/nodes/validator2/accountPrivateKey:
--------------------------------------------------------------------------------
1 | 0x5ad8b28507578c429dfa9f178d7f742f4861716ee956eb75648a7dbc5ffe915d
--------------------------------------------------------------------------------
/files/common/config/nodes/validator3/accountPrivateKey:
--------------------------------------------------------------------------------
1 | 0xf23f92ed543046498d7616807b18a8f304855cb644df25bc7d0b0b37d8a66019
--------------------------------------------------------------------------------
/files/common/config/nodes/validator4/accountPrivateKey:
--------------------------------------------------------------------------------
1 | 0x7f012b2a11fc651c9a73ac13f0a298d89186c23c2c9a0e83206ad6e274ba3fc7
--------------------------------------------------------------------------------
/files/common/config/nodes/member1/tma.key:
--------------------------------------------------------------------------------
1 | {"data":{"bytes":"wGEar7J9G0JAgdisp61ZChyrJWeW2QPyKvecjjeVHOY="},"type":"unlocked"}
--------------------------------------------------------------------------------
/files/common/config/nodes/member2/tma.key:
--------------------------------------------------------------------------------
1 | {"data":{"bytes":"rwfJC1kNa8BjPfc+zZXug+it9sdWa0vbdN6pp6IXlAs="},"type":"unlocked"}
--------------------------------------------------------------------------------
/files/common/config/nodes/member3/tma.key:
--------------------------------------------------------------------------------
1 | {"data":{"bytes":"yLcbICXicELZOnvpkDXB2UkQUiNAMIfsEOsgtFOGkQU="},"type":"unlocked"}
--------------------------------------------------------------------------------
/files/common/restart.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | ./stop.sh
4 | echo "Waiting 30s for containers to stop"
5 | sleep 30
6 | ./resume.sh
7 |
--------------------------------------------------------------------------------
/files/common/static/qs-dapp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Consensys/quorum-dev-quickstart/HEAD/files/common/static/qs-dapp.png
--------------------------------------------------------------------------------
/files/common/static/blockchain-network.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Consensys/quorum-dev-quickstart/HEAD/files/common/static/blockchain-network.png
--------------------------------------------------------------------------------
/files/common/static/npm-send-private-tx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Consensys/quorum-dev-quickstart/HEAD/files/common/static/npm-send-private-tx.png
--------------------------------------------------------------------------------
/files/common/static/metamask-faucet-transfer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Consensys/quorum-dev-quickstart/HEAD/files/common/static/metamask-faucet-transfer.png
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea/
2 | .lh/
3 | *.iml
4 | *.lock
5 | *.log
6 | node_modules
7 | .vscode
8 | build
9 | logs/
10 | /volumes/
11 | .DS_Store
12 | quorum-test-network/*
13 |
--------------------------------------------------------------------------------
/files/common/config/nodes/member1/nodekey.pub:
--------------------------------------------------------------------------------
1 | 98496800174b3c73ae33cba59f8f5e686cd488f7897c2edb52e2cf46383d75cd03dbb58dde07185bc0953f98800ca9a89f4b5ef450c5e51292ea08ec6130ee0c
2 |
--------------------------------------------------------------------------------
/files/common/config/nodes/member2/nodekey.pub:
--------------------------------------------------------------------------------
1 | ad2c79c6561bc8212c2e8382611c62e406e767d1f3106c68ca206900f575cb8ba9a8be111c645cd9803701d684454c782c40d2361b000a32ed03d26228b30ec1
2 |
--------------------------------------------------------------------------------
/files/common/config/nodes/member3/nodekey.pub:
--------------------------------------------------------------------------------
1 | af19c92deb635bd7720634de9b2e7908208530d6f5e96eee003a8f1799e5be4037957d7e2fdbe3605e3a38dab05c961679c02133a0e624e23a72f7961e8af6ac
2 |
--------------------------------------------------------------------------------
/files/common/config/nodes/rpcnode/nodekey.pub:
--------------------------------------------------------------------------------
1 | 86fcc16f4730fbfd238dc17ea552854c0943923bb1d5e886e5601b8d884fb0519060e0023f495dd24ffe60a65660fb7fdcdebfceedd2b3673dfa63658825924b
2 |
--------------------------------------------------------------------------------
/files/common/config/nodes/validator1/nodekey.pub:
--------------------------------------------------------------------------------
1 | 8208a3f344695d44e9cf2c023683cbea7b9343e2f70a5e804bd2c93858e945f8f91439eef96a4ab6c47ff06637d6fbe6472f96de1655a1bee57ea896654f3a22
2 |
--------------------------------------------------------------------------------
/files/common/config/nodes/validator2/nodekey.pub:
--------------------------------------------------------------------------------
1 | b9050e002aa42464e6b07c811a1f9dfec01249af03f67b753e8415420649b184447bb2a784863ccbf327ad9e31aaba803464979dfe6a7facc669151a5fa6ad1b
2 |
--------------------------------------------------------------------------------
/files/common/config/nodes/validator3/nodekey.pub:
--------------------------------------------------------------------------------
1 | 59cf0c623c582fa9b19bdf70fb6bade07f4ae32218dd4d1c7e2c7e65acf87da45cf2ab55d16d27360aafef17622c37c09db60d7680ebcc17b78867f4c05bcaa4
2 |
--------------------------------------------------------------------------------
/files/common/config/nodes/validator4/nodekey.pub:
--------------------------------------------------------------------------------
1 | 2fd5b5b6ad529f55b71602026d1849d0036f06482368b5812fa793014195d3571b0840dbc4175617de2a12db8f1222c012420d471ae5c0d982118625cae58868
2 |
--------------------------------------------------------------------------------
/files/common/dapps/quorumToken/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .env
3 | coverage
4 | coverage.json
5 | typechain
6 | typechain-types
7 |
8 | # Hardhat files
9 | cache
10 | artifacts
11 |
12 |
--------------------------------------------------------------------------------
/files/common/dapps/quorumToken/frontend/next.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('next').NextConfig} */
2 | const nextConfig = {
3 | reactStrictMode: true,
4 | }
5 |
6 | module.exports = nextConfig
7 |
--------------------------------------------------------------------------------
/files/goquorum/smart_contracts/permissioning/scripts/compile.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | cd ./contracts/v2
3 | for f in *.sol
4 | do
5 | echo "Compiling $f contract..."
6 | solc --bin --abi --optimize --overwrite -o ./output $f
7 | done
--------------------------------------------------------------------------------
/files/common/logstash/pipeline/10_filebeat_redis.conf:
--------------------------------------------------------------------------------
1 | input {
2 | redis {
3 | host => "${REDIS_HOST}"
4 | port => "${REDIS_PORT}"
5 | codec => "json"
6 | data_type => "list"
7 | key => "filebeat"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/files/common/logstash/pipeline/20_logstash.conf:
--------------------------------------------------------------------------------
1 | filter {
2 | if [service_name] == "logstash" {
3 | json {
4 | source => "message"
5 | }
6 |
7 | date {
8 | match => [ "timeMillis", "UNIX_MS" ]
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/files/goquorum/smart_contracts/permissioning/scripts/copyAndRestart.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | echo "Copying permission-config.json file to the volume"
4 | cp permission-config.json ../../config/permissions/
5 | cd ../../
6 | echo "Restarting network stop"
7 | ./restart.sh
8 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # editorconfig.org
2 | root = true
3 |
4 | [*]
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | charset = utf-8
9 | trim_trailing_whitespace = true
10 | insert_final_newline = true
11 |
12 | [*.md]
13 | trim_trailing_whitespace = false
14 |
--------------------------------------------------------------------------------
/files/common/logstash/pipeline/10_metricbeat_redis.conf:
--------------------------------------------------------------------------------
1 | input {
2 | redis {
3 | host => "${REDIS_HOST}"
4 | port => "${REDIS_PORT}"
5 | codec => "json"
6 | data_type => "list"
7 | type => "metricbeat"
8 | key => "metricbeat"
9 | }
10 | }
11 |
12 |
--------------------------------------------------------------------------------
/files/common/logstash/pipeline/20_besu.conf:
--------------------------------------------------------------------------------
1 | filter {
2 | if [service_name] == "besu" {
3 | json {
4 | source => "message"
5 | }
6 | date {
7 | match => [ "timestamp" , "ISO8601" ]
8 | remove_field => [ "timestamp" ]
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/files/common/logstash/pipeline/20_tessera.conf:
--------------------------------------------------------------------------------
1 | filter {
2 | if [service_name] == "tessera" {
3 | json {
4 | source => "message"
5 | }
6 | date {
7 | match => [ "timestamp" , "ISO8601" ]
8 | remove_field => [ "timestamp" ]
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/files/common/config/grafana/provisioning/dashboards/dashboard.yml:
--------------------------------------------------------------------------------
1 | ---
2 | apiVersion: 1
3 |
4 | providers:
5 | - name: 'Prometheus'
6 | orgId: 1
7 | folder: ''
8 | type: file
9 | disableDeletion: false
10 | editable: true
11 | options:
12 | path: /etc/grafana/provisioning/dashboards
13 |
--------------------------------------------------------------------------------
/files/common/dapps/quorumToken/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es2020",
4 | "module": "commonjs",
5 | "esModuleInterop": true,
6 | "forceConsistentCasingInFileNames": true,
7 | "strict": true,
8 | "skipLibCheck": true,
9 | "resolveJsonModule": true
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/files/common/config/tessera/docker-entrypoint.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | mkdir -p /var/log/tessera/;
4 | mkdir -p /data/tm/;
5 |
6 | envsubst < /data/tessera-config-template.json > /data/tessera-config.json
7 |
8 | cat /data/tessera-config.json
9 |
10 | exec /tessera/bin/tessera \
11 | -configfile /data/tessera-config.json
12 |
13 |
--------------------------------------------------------------------------------
/files/common/logstash/config/logstash.yml:
--------------------------------------------------------------------------------
1 | # ensure name is set so that monitoring in Kibana is easy to identify
2 | node.name: "logstash-quorum"
3 |
4 | log.format: json
5 | path:
6 | config: /usr/share/logstash/pipeline
7 | logs: /usr/share/logstash/logs
8 |
9 | xpack:
10 | monitoring:
11 | enabled: true
12 | elasticsearch:
13 | hosts: ${ES_HOST}
--------------------------------------------------------------------------------
/files/common/dapps/quorumToken/contracts/QuorumToken.sol:
--------------------------------------------------------------------------------
1 | //SPDX-License-Identifier: Unlicense
2 | pragma solidity ^0.8.0;
3 |
4 | import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
5 |
6 | contract QuorumToken is ERC20 {
7 | constructor(uint256 initialSupply)
8 | ERC20("QuorumToken", "QT")
9 | {
10 | _mint(msg.sender, initialSupply);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/files/common/dapps/quorumToken/frontend/styles/globals.css:
--------------------------------------------------------------------------------
1 | :root,
2 | body {
3 | height: 100%;
4 | margin: 0;
5 | padding: 0;
6 | width: 100%;
7 | }
8 |
9 | #__next {
10 | display: flex;
11 | flex: 1;
12 | flex-direction: column;
13 | height: 100%;
14 | width: 100%;
15 | }
16 |
17 | main {
18 | display: flex;
19 | flex: 1;
20 | flex-direction: column;
21 | }
--------------------------------------------------------------------------------
/files/common/config/ethsigner/createKey.js:
--------------------------------------------------------------------------------
1 | const Web3 = require('web3')
2 |
3 | // Web3 initialization (should point to the JSON-RPC endpoint)
4 | const web3 = new Web3(new Web3.providers.HttpProvider('http://127.0.0.1:8545'))
5 |
6 | var V3KeyStore = web3.eth.accounts.encrypt("797bbe0373132e8c5483515b68ecbb6d3581b56f0205b653ad2b30a559e83891", "Password1");
7 | console.log(JSON.stringify(V3KeyStore));
8 | process.exit();
9 |
--------------------------------------------------------------------------------
/files/common/smart_contracts/contracts/Counter.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | pragma solidity ^0.8.10;
3 | contract Counter {
4 | int private count = 0;
5 | function incrementCounter() public {
6 | count += 1;
7 | }
8 | function decrementCounter() public {
9 | count -= 1;
10 | }
11 | function getCount() public view returns (int) {
12 | return count;
13 | }
14 | }
--------------------------------------------------------------------------------
/files/common/filebeat/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM docker.elastic.co/beats/filebeat:7.14.1
2 | ENV ENV_NAME dev
3 | ENV IP_ADDRESS "127.0.0.1"
4 | ENV REDIS_HOST localhost
5 | ENV REDIS_PORT 6379
6 |
7 | USER root
8 | ADD ./filebeat.yml /usr/share/filebeat/filebeat.yml
9 | RUN chown root:filebeat /usr/share/filebeat/filebeat.yml && chmod go-w /usr/share/filebeat/filebeat.yml
10 | USER filebeat
11 |
12 | CMD ["filebeat", "-c", "filebeat.yml"]
13 |
--------------------------------------------------------------------------------
/files/common/metricbeat/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM docker.elastic.co/beats/metricbeat:7.14.1
2 | ENV IP_ADDRESS "127.0.0.1"
3 | ENV REDIS_HOST localhost
4 | ENV REDIS_PORT 6379
5 |
6 | USER root
7 | ADD ./metricbeat.yml /usr/share/metricbeat/metricbeat.yml
8 | RUN chown root:metricbeat /usr/share/metricbeat/metricbeat.yml && chmod go-w /usr/share/metricbeat/metricbeat.yml
9 | USER metricbeat
10 |
11 | CMD ["metricbeat", "-c", "metricbeat.yml"]
12 |
--------------------------------------------------------------------------------
/files/common/chainlens/nginx.conf:
--------------------------------------------------------------------------------
1 | events { }
2 |
3 | http {
4 | server {
5 | listen 80;
6 | charset utf-8;
7 |
8 | location /api/ {
9 | proxy_pass http://chainlensapi:8090/;
10 | }
11 |
12 | location / {
13 | proxy_pass http://chainlensweb:3000/;
14 | }
15 |
16 | error_page 500 502 503 504 /5xx.html;
17 | location /5xx.html {
18 | root /www/error_pages/;
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/files/common/extra/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@consensys-software/generate_node_details",
3 | "version": "1.0.0",
4 | "description": "Example script to create nodekeys and address for a Quorum (Besu or GoQuorum) node",
5 | "scripts": {},
6 | "license": "Apache-2.0",
7 | "dependencies": {
8 | "secp256k1": "^4.0.0",
9 | "keccak": "^3.0.0",
10 | "ethereumjs-wallet": "^1.0.2",
11 | "yargs": "^17.2.1"
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/files/common/attach.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | MEMBER_NUMBER=$1
4 | MEMBER_NODE="member${MEMBER_NUMBER}quorum"
5 | echo "Attempting to connect to $MEMBER_NODE"
6 | if [ -z `docker compose -f docker-compose.yml ps -q ${MEMBER_NODE} 2>/dev/null` ] ; then
7 | echo "$MEMBER_NUMBER is not a valid member node. Must be between 1 and 3" >&2
8 | exit 1
9 | fi
10 |
11 | # can also do geth attach http://localhost:8545
12 | docker compose exec ${MEMBER_NODE} /bin/sh -c "geth attach /data/geth.ipc"
13 |
--------------------------------------------------------------------------------
/files/goquorum/README.md:
--------------------------------------------------------------------------------
1 | # Quorum Dev Quickstart
2 |
3 | Please go to our [official docs](https://consensys.net/docs/goquorum/en/latest/tutorials/quorum-dev-quickstart/)
4 |
5 |
6 | ## Moving to production
7 |
8 | When you are ready to move to production, please create new keys for your nodes using the
9 | [Quorum Genesis Tool](https://www.npmjs.com/package/quorum-genesis-tool) and read through the the
10 | [GoQuorum documentation](https://consensys.net/docs/goquorum/en/latest/deploy/install/)
11 |
--------------------------------------------------------------------------------
/files/common/config/ethsigner/key:
--------------------------------------------------------------------------------
1 | {"version":3,"id":"0e3d044a-26b4-429f-a5d3-def4a62a77ec","address":"9b790656b9ec0db1936ed84b3bea605873558198","crypto":{"ciphertext":"4d34be50618c36fb57349a8a7dc7b0c46f7c6883c817087863ff4f1fbc957582","cipherparams":{"iv":"723a6a815dcaf255ebd1da1bfb14e1b8"},"cipher":"aes-128-ctr","kdf":"scrypt","kdfparams":{"dklen":32,"salt":"3d04a3f225d3d5874388484730a30d45627399d69721a7c7fb653f8e0e90a67b","n":8192,"r":8,"p":1},"mac":"5c04e705196b35abace4da61700921d7762dba782ed68a4cd9917dd75badaacb"}}
--------------------------------------------------------------------------------
/files/goquorum/config/goquorum/Dockerfile:
--------------------------------------------------------------------------------
1 | ARG QUORUM_VERSION=latest
2 |
3 | FROM quorumengineering/quorum:${QUORUM_VERSION}
4 |
5 | RUN apk add --no-cache curl
6 |
7 | COPY docker-entrypoint.sh /usr/local/bin/
8 | COPY data data
9 |
10 | RUN mkdir -p /data /permissions /var/log/quorum \
11 | && addgroup -g 1000 quorum \
12 | && adduser -u 1000 -G quorum -s /bin/sh -D quorum \
13 | && chown -R quorum:quorum /data /permissions /var/log/quorum
14 | USER quorum
15 |
16 | ENTRYPOINT ["docker-entrypoint.sh"]
--------------------------------------------------------------------------------
/files/common/config/nodes/member2/accountKeystore:
--------------------------------------------------------------------------------
1 | {"address":"ca843569e3427144cead5e4d5999a3d0ccf92b8e","crypto":{"cipher":"aes-128-ctr","ciphertext":"01d409941ce57b83a18597058033657182ffb10ae15d7d0906b8a8c04c8d1e3a","cipherparams":{"iv":"0bfb6eadbe0ab7ffaac7e1be285fb4e5"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"7b90f455a95942c7c682e0ef080afc2b494ef71e749ba5b384700ecbe6f4a1bf"},"mac":"4cc851f9349972f851d03d75a96383a37557f7c0055763c673e922de55e9e307"},"id":"354e3b35-1fed-407d-a358-889a29111211","version":3}
--------------------------------------------------------------------------------
/files/common/config/nodes/member3/accountKeystore:
--------------------------------------------------------------------------------
1 | {"address":"0fbdc686b912d7722dc86510934589e0aaf3b55a","crypto":{"cipher":"aes-128-ctr","ciphertext":"6b2c72c6793f3da8185e36536e02f574805e41c18f551f24b58346ef4ecf3640","cipherparams":{"iv":"582f27a739f39580410faa108d5cc59f"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"1a79b0db3f8cb5c2ae4fa6ccb2b5917ce446bd5e42c8d61faeee512b97b4ad4a"},"mac":"cecb44d2797d6946805d5d744ff803805477195fab1d2209eddc3d1158f2e403"},"id":"f7292e90-af71-49af-a5b3-40e8493f4681","version":3}
--------------------------------------------------------------------------------
/files/common/config/nodes/validator1/accountKeystore:
--------------------------------------------------------------------------------
1 | {"address":"ed9d02e382b34818e88b88a309c7fe71e65f419d","crypto":{"cipher":"aes-128-ctr","ciphertext":"4e77046ba3f699e744acb4a89c36a3ea1158a1bd90a076d36675f4c883864377","cipherparams":{"iv":"a8932af2a3c0225ee8e872bc0e462c11"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"8ca49552b3e92f79c51f2cd3d38dfc723412c212e702bd337a3724e8937aff0f"},"mac":"6d1354fef5aa0418389b1a5d1f5ee0050d7273292a1171c51fd02f9ecff55264"},"id":"a65d1ac3-db7e-445d-a1cc-b6c5eeaa05e0","version":3}
--------------------------------------------------------------------------------
/files/common/config/nodes/member1/accountKeystore:
--------------------------------------------------------------------------------
1 | {"address":"f0e2db6c8dc6c681bb5d6ad121a107f300e9b2b5","crypto":{"cipher":"aes-128-ctr","ciphertext":"f2af258ee3733513333652be19197ae7eace4b5e79a346cf25b02a857e6043f3","cipherparams":{"iv":"587d7faaa6403b8a73273d0ad58dd71f"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"b93c7d69c5bb0a760c3b7fdf791c47896a552c5c977648b392a24d708674dcf3"},"mac":"d83bcb555c92fc5a32ceacabbb6b99f59515ec3986b9fe5995c67e027bd750c8"},"id":"5392d73f-08dd-42b8-bca9-6f6d35c419d9","version":3}
2 |
--------------------------------------------------------------------------------
/files/common/config/nodes/rpcnode/accountKeystore:
--------------------------------------------------------------------------------
1 | {"address":"c9c913c8c3c1cd416d80a0abf475db2062f161f6","crypto":{"cipher":"aes-128-ctr","ciphertext":"ce8e51e64e9f053414616c62b3924536f3f9144638359e2e2eb00e04ad095b0a","cipherparams":{"iv":"648343bce02b158eda9bb2074f8dc601"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"0982402da973d8176315aeae4415b328a7ce4393e217a0c4f45385f1cee9bc3e"},"mac":"5707caff457f930655849293dc1101e13ab32b175fdf5538869a2a3ffc716d8b"},"id":"8d031b90-ab7f-48dc-9b7a-ce41abd7f9c8","version":3}
2 |
--------------------------------------------------------------------------------
/files/common/config/nodes/validator2/accountKeystore:
--------------------------------------------------------------------------------
1 | {"address":"b30f304642de3fee4365ed5cd06ea2e69d3fd0ca","crypto":{"cipher":"aes-128-ctr","ciphertext":"cf7f44a86510c497f2a6727f62b8e89c8cd42dbfd8e3377658d659c776c75f30","cipherparams":{"iv":"5d320e3072939817faa2caefdb810239"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"e637b069dacfe77f3a495d8a0d3735544e73973c03e107976545df78e6f04289"},"mac":"e20c97b8ee7d54072b9cfac201d52ef360ecacdbd1f7187e7547b3cd9be00599"},"id":"5bf73d6b-340b-4e9f-a7f3-f9ab41f39726","version":3}
2 |
--------------------------------------------------------------------------------
/files/common/config/nodes/validator3/accountKeystore:
--------------------------------------------------------------------------------
1 | {"address":"0886328869e4e1f401e1052a5f4aae8b45f42610","crypto":{"cipher":"aes-128-ctr","ciphertext":"6e0e228b810a88f2cea85c439b005a92bba6220de8cd6ba73a8f7ecd681fde09","cipherparams":{"iv":"5264c2defa48f7f9fa103899acaea021"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"15ef956dab453387ddf7afd6775f3727fb560a77028b5a14d774c3bfff17f101"},"mac":"6ca1d88defee18378789d191ca7b32bbecbd6dd5a6c39427ed45b13c9595edc3"},"id":"734d1189-4e1e-44bf-854a-642485532715","version":3}
2 |
--------------------------------------------------------------------------------
/files/common/config/nodes/validator4/accountKeystore:
--------------------------------------------------------------------------------
1 | {"address":"f48de4a0c2939e62891f3c6aca68982975477e45","crypto":{"cipher":"aes-128-ctr","ciphertext":"402a2d8eb1ff6bab713ddb81f68142c4f0113d32e9f0cc8969347a4945cd1e5f","cipherparams":{"iv":"a1f708815212854c0c49081869198dd5"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"a24d95de8680d8d214ae5e9060e919eb563ce513bf63021497e0d218ed68f89d"},"mac":"571164da79472f210caeb45af2b9715fb22eef8d485ce5c6a4e0c52865398ea7"},"id":"d5723032-0a81-46ec-ac34-9d8362e2250c","version":3}
2 |
--------------------------------------------------------------------------------
/files/common/smart_contracts/contracts/SimpleStorage.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | pragma solidity ^0.8.10;
3 |
4 | contract SimpleStorage {
5 | uint public storedData;
6 | event stored(address _to, uint _amount);
7 | constructor(uint initVal) {
8 | emit stored(msg.sender, initVal);
9 | storedData = initVal;
10 | }
11 | function set(uint x) public {
12 | emit stored(msg.sender, x);
13 | storedData = x;
14 | }
15 | function get() view public returns (uint retVal) {
16 | return storedData;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/files/common/logstash/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM docker.elastic.co/logstash/logstash:7.14.1
2 |
3 | ENV ES_HOST http://localhost:9200
4 | ENV REDIS_HOST localhost
5 | ENV REDIS_PORT 6379
6 |
7 | # Remove exisiting file
8 | RUN mkdir -p /usr/share/logstash/logs && \
9 | rm -f /usr/share/logstash/pipeline/logstash.conf
10 |
11 | # Add pipeline files
12 | ADD pipeline/ /usr/share/logstash/pipeline/
13 |
14 | # Add configuration files
15 | ADD config/ /usr/share/logstash/config/
16 |
17 | # Test the configuration
18 | RUN /usr/share/logstash/bin/logstash -t
19 |
--------------------------------------------------------------------------------
/files/common/dapps/quorumToken/frontend/src/pages/_app.tsx:
--------------------------------------------------------------------------------
1 |
2 | import type { AppProps } from "next/app";
3 | import { ChakraProvider } from "@chakra-ui/react";
4 | import "../../styles/globals.css";
5 | import Layout from '../components/Layout';
6 |
7 | function MyApp({ Component, pageProps, router }: AppProps) {
8 |
9 | return (
10 |
11 | Quorum Quickstart DApp
12 |
13 |
14 |
15 |
16 | )
17 | }
18 |
19 | export default MyApp;
20 |
--------------------------------------------------------------------------------
/files/common/dapps/quorumToken/frontend/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # next.js
12 | /.next/
13 | /out/
14 |
15 | # production
16 | /build
17 |
18 | # misc
19 | .DS_Store
20 | *.pem
21 |
22 | # debug
23 | npm-debug.log*
24 | yarn-debug.log*
25 | yarn-error.log*
26 |
27 | # local env files
28 | .env*.local
29 |
30 | # vercel
31 | .vercel
32 |
33 | # typescript
34 | *.tsbuildinfo
35 | next-env.d.ts
36 |
--------------------------------------------------------------------------------
/files/common/dapps/quorumToken/scripts/deploy_quorumtoken.ts:
--------------------------------------------------------------------------------
1 | import { ethers } from "hardhat"
2 |
3 | async function main() {
4 | const initialSupply = ethers.parseEther('10000.0')
5 | const QuorumToken = await ethers.getContractFactory("QuorumToken")
6 | const deploy = await QuorumToken.deploy(initialSupply)
7 | console.log("Contract deploy at: %s", await deploy.getAddress());
8 | }
9 |
10 | // We recommend this pattern to be able to use async/await everywhere
11 | // and properly handle errors.
12 | main().catch((error) => {
13 | console.error(error)
14 | process.exitCode = 1
15 | })
--------------------------------------------------------------------------------
/files/common/dapps/quorumToken/frontend/src/pages/_document.js:
--------------------------------------------------------------------------------
1 | import { ColorModeScript } from "@chakra-ui/react";
2 | import NextDocument, { Html, Head, Main, NextScript } from "next/document";
3 |
4 | export default class Document extends NextDocument {
5 | render() {
6 | return (
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | );
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/files/common/config/tessera/Dockerfile:
--------------------------------------------------------------------------------
1 | ARG TESSERA_VERSION=latest
2 |
3 | FROM quorumengineering/tessera:${TESSERA_VERSION}
4 |
5 | # develop uses a debain container, all releases use an alpine container - this allows both to be used for the quickstart
6 | # set the version in ../../.env
7 | RUN if [ -e /sbin/apk ] ; then apk add gettext --no-cache ; else apt-get update && apt-get install -y gettext && rm -rf /var/lib/apt/lists/* ; fi
8 |
9 | ENV JAVA_OPTS="-Dlogback.configurationFile=/data/logback.xml"
10 |
11 | COPY docker-entrypoint.sh /usr/bin/
12 | COPY data data
13 |
14 | ENTRYPOINT ["docker-entrypoint.sh"]
15 |
16 |
--------------------------------------------------------------------------------
/.github/workflows/ci.yml:
--------------------------------------------------------------------------------
1 | name: CI
2 |
3 | on:
4 | push:
5 | branches: [ '*' ]
6 | pull_request:
7 | branches: [ master ]
8 |
9 | jobs:
10 | build:
11 |
12 | runs-on: ubuntu-latest
13 |
14 | strategy:
15 | matrix:
16 | node-version: [18.x]
17 |
18 | steps:
19 | - uses: actions/checkout@v2
20 | - name: Use Node.js ${{ matrix.node-version }}
21 | uses: actions/setup-node@v2
22 | with:
23 | node-version: ${{ matrix.node-version }}
24 | - name: Install dependencies
25 | run: npm ci
26 | - run: npm run build
27 | - run: npm run lint
28 |
--------------------------------------------------------------------------------
/files/common/dapps/quorumToken/frontend/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "lib": ["dom", "dom.iterable", "esnext"],
5 | "allowJs": true,
6 | "skipLibCheck": true,
7 | "strict": true,
8 | "noEmit": true,
9 | "esModuleInterop": true,
10 | "module": "esnext",
11 | "moduleResolution": "bundler",
12 | "resolveJsonModule": true,
13 | "isolatedModules": true,
14 | "jsx": "preserve",
15 | "incremental": true,
16 | "baseUrl": "./src"
17 | },
18 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
19 | "exclude": ["node_modules"]
20 | }
21 |
--------------------------------------------------------------------------------
/files/common/metricbeat/metricbeat.yml:
--------------------------------------------------------------------------------
1 |
2 | metricbeat.modules:
3 | - module: prometheus
4 | period: 15s
5 | hosts:
6 | - validator1:9545
7 | - validator2:9545
8 | - validator3:9545
9 | - validator4:9545
10 | - rpcnode:9545
11 | - member1besu:9545
12 | - member2besu:9545
13 | - member3besu:9545
14 | metrics_path: /metrics
15 |
16 | output.redis:
17 | enabled: true
18 | hosts: ["${REDIS_HOST}:${REDIS_PORT}"]
19 | key: metricbeat
20 |
21 |
22 | logging:
23 | level: error
24 | to_files: false
25 | json: true
26 | files:
27 | path: /var/log/metricbeat
28 | name: metricbeat-all.log
29 | keepfiles: 0
30 | #rotateonstartup: true
31 |
32 |
--------------------------------------------------------------------------------
/files/goquorum/smart_contracts/permissioning/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@consensys-software/smart_contracts",
3 | "version": "1.0.0",
4 | "description": "Example smart contracts for trying out Quorum",
5 | "scripts": {
6 | "compile": "node scripts/compile.js",
7 | "deploy": "node scripts/deploy.js",
8 | "public-transaction": "node scripts/public_tx.js",
9 | "private-transaction": "node scripts/private_tx.js"
10 | },
11 | "license": "Apache-2.0",
12 | "dependencies": {
13 | "async-promise-pool": "^1.0.3",
14 | "fs-extra": "^10.0.0",
15 | "solc": "0.7.6",
16 | "web3": "1.5.2",
17 | "ethers": "^5.6.1",
18 | "web3js-quorum": "21.7.0-rc1"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/files/common/logstash/pipeline/20_quorum.conf:
--------------------------------------------------------------------------------
1 | filter {
2 | if [service_name] == "quorum" {
3 | grok {
4 | match => { "message" => "%{GREEDYDATA:level}\[%{MONTHNUM:monthnum}\-%{DATA:monthday}\|%{TIME:time}\] %{GREEDYDATA:message}" }
5 | overwrite => [ "message" ]
6 | }
7 | mutate {
8 | add_field => {
9 | "timestamp" => "%{monthnum} %{monthday} %{time}"
10 | }
11 | }
12 | date {
13 | match => [ "timestamp" , "MM dd HH:mm:ss.SSS", "MM dd HH:mm:ss.SSS", "ISO8601"]
14 | remove_field => [ "timestamp" ]
15 | }
16 | mutate {
17 | remove_field => [ "time" ,"month","monthday","year","timestamp"]
18 | }
19 | }
20 | }
21 |
22 |
--------------------------------------------------------------------------------
/templates/besu/config/besu/.env:
--------------------------------------------------------------------------------
1 | {% if monitoring == "splunk" %}
2 | # OpenTelemetry metrics
3 | BESU_METRICS_ENABLED=true
4 | BESU_METRICS_PROTOCOL=opentelemetry
5 | OTEL_EXPORTER_OTLP_METRIC_ENDPOINT=otelcollector:55680
6 | OTEL_EXPORTER_OTLP_SPAN_ENDPOINT=otelcollector:55680
7 | OTEL_EXPORTER_OTLP_METRIC_INSECURE=true
8 | OTEL_EXPORTER_OTLP_SPAN_INSECURE=true
9 | # Splunk logging configuration
10 | BESU_LOGGING=info
11 | LOGGER=Splunk
12 | SPLUNK_URL=https://splunk:8088/
13 | SPLUNK_INDEX=logs
14 | SPLUNK_TOKEN=11111111-1111-1111-1111-1111111111113
15 | SPLUNK_SKIPTLSVERIFY=true
16 | LOG4J_CONFIGURATION_FILE=/config/log-config-splunk.xml
17 |
18 | {% else %}
19 | LOG4J_CONFIGURATION_FILE=/config/log-config.xml
20 |
21 | {% endif %}
22 |
--------------------------------------------------------------------------------
/files/common/dapps/quorumToken/frontend/src/components/quorumToken/QuorumTokenABI.tsx:
--------------------------------------------------------------------------------
1 | // In order to interact with a contract from js, we need the contract's ABI
2 | // Im using a human readable format here, but you can just as easily use the compiled output from HardHat
3 |
4 | export const QuorumTokenABI = [
5 | // Read-Only Functions
6 | "function balanceOf(address owner) view returns (uint256)",
7 | "function totalSupply() view returns (uint256)",
8 | "function decimals() view returns (uint8)",
9 | "function symbol() view returns (string)",
10 | // Authenticated Functions
11 | "function transfer(address to, uint amount) returns (bool)",
12 | // Events
13 | "event Transfer(address indexed from, address indexed to, uint amount)"
14 | ];
--------------------------------------------------------------------------------
/files/common/loki/loki.yml:
--------------------------------------------------------------------------------
1 | auth_enabled: false
2 |
3 | server:
4 | http_listen_port: 3100
5 | grpc_listen_port: 9096
6 |
7 | common:
8 | path_prefix: /tmp/loki
9 | storage:
10 | filesystem:
11 | chunks_directory: /tmp/loki/chunks
12 | rules_directory: /tmp/loki/rules
13 | replication_factor: 1
14 | ring:
15 | instance_addr: 127.0.0.1
16 | kvstore:
17 | store: inmemory
18 |
19 | schema_config:
20 | configs:
21 | - from: 2021-01-01
22 | store: boltdb-shipper
23 | object_store: filesystem
24 | schema: v11
25 | index:
26 | prefix: index_
27 | period: 24h
28 |
29 | # If you would like to disable reporting, uncomment the following lines:
30 | #analytics:
31 | # reporting_enabled: false
--------------------------------------------------------------------------------
/files/common/.env:
--------------------------------------------------------------------------------
1 | # This file defines environment variables defaults for Docker-compose
2 | # but we also use it for shell scripts as a sourced file
3 |
4 | BESU_VERSION=23.4.1
5 | QUORUM_VERSION=23.4.0
6 | TESSERA_VERSION=23.4.0
7 | ETHSIGNER_VERSION=22.1.3
8 | QUORUM_EXPLORER_VERSION=4f60191
9 |
10 | LOCK_FILE=.quorumDevQuickstart.lock
11 |
12 | # GoQuorum consensus algorithm
13 | # istanbul, qbft, raft
14 | # !!! lower case ONLY here
15 | GOQUORUM_CONS_ALGO=qbft
16 |
17 | # Besu consensus algorithm
18 | # IBFT, QBFT, CLIQUE
19 | # PLEASE NOTE: IBFT used here refers to IBFT2.0 and not IBFT1.0 More information can be found https://besu.hyperledger.org/en/latest/HowTo/Configure/Consensus-Protocols/IBFT/
20 | # We use IBFT here to keep the API names consistent
21 | # !!! upper case ONLY here
22 | BESU_CONS_ALGO=QBFT
23 |
--------------------------------------------------------------------------------
/files/common/dapps/quorumToken/frontend/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "webapp",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "dev": "next dev -p 3001",
7 | "build": "next build",
8 | "start": "next start",
9 | "lint": "next lint"
10 | },
11 | "dependencies": {
12 | "@chakra-ui/react": "^2.8.0",
13 | "@emotion/react": "^11.11.1",
14 | "@emotion/styled": "^11.11.0",
15 | "ethers": "6.7.1",
16 | "framer-motion": "^10.16.1",
17 | "next": "13.4.19",
18 | "react": "18.2.0",
19 | "react-dom": "18.2.0"
20 | },
21 | "devDependencies": {
22 | "@types/node": "20.5.4",
23 | "@types/react": "18.2.21",
24 | "@types/react-dom": "18.2.7",
25 | "eslint": "8.47.0",
26 | "eslint-config-next": "13.4.19",
27 | "typescript": "5.1.6"
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 | const main = require("./build").main;
3 |
4 | if (require.main === module) {
5 | // note: main returns a Promise, but we don't need to do anything
6 | // special with it, so we use the void operator to indicate to eslint that
7 | // we left this dangling intentionally...
8 | try {
9 | void main();
10 | } catch (err) {
11 | if (err && err.stack && process.argv.length >= 3 && process.argv[2] === "--stackTraceOnError") {
12 | console.error(`Fatal error: ${err.stack}`);
13 | } else if (err && err.message) {
14 | console.error(`Fatal error: ${err.message}`);
15 | } else if (err) {
16 | console.error(`Fatal error: ${err}`);
17 | } else {
18 | console.error(`Fatal error: unknown`);
19 | }
20 | process.exit(1);
21 | }
22 | }
--------------------------------------------------------------------------------
/files/common/dapps/quorumToken/frontend/src/components/Layout.tsx:
--------------------------------------------------------------------------------
1 | import React, { ReactNode } from 'react'
2 | import { Container, Flex, useColorModeValue, Spacer, Heading, Center, Text } from '@chakra-ui/react'
3 |
4 | interface LayoutProps {
5 | children: React.ReactNode;
6 | }
7 |
8 | export default function Layout({ children }: LayoutProps) {
9 | return (
10 |
11 |
12 |
13 | Quorum Quickstart DApp
14 |
15 |
16 |
17 |
18 | {children}
19 |
20 |
21 |
22 | © {new Date().getFullYear()} ConsenSys Software, Inc. All rights reserved.
23 |
24 |
25 |
26 | )
27 | }
--------------------------------------------------------------------------------
/files/common/smart_contracts/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@consensys-software/smart_contracts",
3 | "version": "1.0.0",
4 | "description": "Example smart contracts for trying out Quorum",
5 | "scripts": {
6 | "compile": "node scripts/compile.js",
7 | "deploy": "node scripts/deploy.js",
8 | "public-transaction": "node scripts/public_tx.js",
9 | "private-transaction": "node scripts/private_tx.js"
10 | },
11 | "license": "Apache-2.0",
12 | "dependencies": {
13 | "async-promise-pool": "^1.0.6",
14 | "fs-extra": "^10.0.0",
15 | "solc": "0.8.10",
16 | "@nomicfoundation/hardhat-ethers": "^3.0.0",
17 | "@nomicfoundation/hardhat-network-helpers": "^1.0.0",
18 | "@nomicfoundation/hardhat-toolbox": "^3.0.0",
19 | "@nomicfoundation/hardhat-verify": "^1.0.0",
20 | "ethers": "6.7.1",
21 | "hardhat-gas-reporter": "^1.0.8",
22 | "@ethereumjs/common": "^4.0.0",
23 | "@ethereumjs/tx": "^5.0.0",
24 | "web3js-quorum": "22.4.0",
25 | "web3": "1.10.2"
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/files/common/logstash/pipeline/30_elasticsearch.conf:
--------------------------------------------------------------------------------
1 | output {
2 | if [service_name] == "logstash" {
3 | elasticsearch {
4 | hosts => ["${ES_HOST}"]
5 | index => "logstash-%{+YYYY.MM.dd}"
6 | }
7 | }
8 |
9 | else if [service_name] == "besu" {
10 | elasticsearch {
11 | hosts => ["${ES_HOST}"]
12 | index => "besu-%{+YYYY.MM.dd}"
13 | }
14 | }
15 |
16 | else if [service_name] == "tessera" {
17 | elasticsearch {
18 | hosts => ["${ES_HOST}"]
19 | index => "tessera-%{+YYYY.MM.dd}"
20 | }
21 | }
22 |
23 | else if [service_name] == "quorum" {
24 | elasticsearch {
25 | hosts => ["${ES_HOST}"]
26 | index => "quorum-%{+YYYY.MM.dd}"
27 | }
28 | }
29 |
30 | else if [type] == "metricbeat" {
31 | elasticsearch {
32 | hosts => ["${ES_HOST}"]
33 | index => "metricbeat-%{+YYYY.MM.dd}"
34 | }
35 | }
36 |
37 | else {
38 | elasticsearch {
39 | hosts => ["${ES_HOST}"]
40 | index => "unknown-%{+YYYY.MM.dd}"
41 | }
42 | }
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/files/common/splunk/splunk.yml:
--------------------------------------------------------------------------------
1 | splunk:
2 | conf:
3 | indexes:
4 | directory: /opt/splunk/etc/apps/search/local
5 | content:
6 | ledger:
7 | coldPath: $SPLUNK_DB/ledger/colddb
8 | datatype: event
9 | homePath: $SPLUNK_DB/ledger/db
10 | maxTotalDataSizeMB: 4096
11 | thawedPath: $SPLUNK_DB/ledger/thaweddb
12 | logs:
13 | coldPath: $SPLUNK_DB/logs/colddb
14 | datatype: event
15 | homePath: $SPLUNK_DB/logs/db
16 | maxTotalDataSizeMB: 4096
17 | thawedPath: $SPLUNK_DB/logs/thaweddb
18 | metrics:
19 | coldPath: $SPLUNK_DB/metrics/colddb
20 | datatype: metric
21 | homePath: $SPLUNK_DB/metrics/db
22 | maxTotalDataSizeMB: 1024
23 | thawedPath: $SPLUNK_DB/metrics/thaweddb
24 | traces:
25 | coldPath: $SPLUNK_DB/traces/colddb
26 | datatype: event
27 | homePath: $SPLUNK_DB/traces/db
28 | maxTotalDataSizeMB: 1024
29 | thawedPath: $SPLUNK_DB/traces/thaweddb
30 |
31 |
--------------------------------------------------------------------------------
/files/common/dapps/quorumToken/frontend/src/components/MMAccount.tsx:
--------------------------------------------------------------------------------
1 |
2 | import React, {useEffect, useState } from 'react';
3 | import { Heading, Text, VStack, Box, Button, Input, Spacer, Flex } from '@chakra-ui/react'
4 |
5 | interface MMAccountProps {
6 | balance: string | undefined,
7 | chainId: number | undefined
8 | erc20ContractAddress: string
9 | deployedAddressHandler: any
10 | }
11 |
12 | export default function MMAccount(props:MMAccountProps){
13 |
14 | return (
15 |
16 | Account
17 | Details of the account connected to Metamask
18 | Balance of current account (ETH): {props.balance}
19 | ChainId: {props.chainId}
20 | {/* todo: fix formatting here */}
21 | Address that the QuorumToken was deployed to:
22 |
23 |
24 | )
25 | }
--------------------------------------------------------------------------------
/files/common/stop.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -u
2 |
3 | # Copyright 2018 ConsenSys AG.
4 | #
5 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
6 | # the License. You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
11 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
12 | # specific language governing permissions and limitations under the License.
13 |
14 | NO_LOCK_REQUIRED=false
15 |
16 | . ./.env
17 | . ./.common.sh
18 |
19 | echo "${bold}*************************************"
20 | echo "Quorum Dev Quickstart "
21 | echo "*************************************${normal}"
22 | echo "Stopping network"
23 | echo "----------------------------------"
24 |
25 |
26 | docker compose stop
27 |
28 | if [ -f "docker-compose-deps.yml" ]; then
29 | echo "Stopping dependencies..."
30 | docker compose -f docker-compose-deps.yml stop
31 | fi
32 |
33 |
--------------------------------------------------------------------------------
/files/besu/quorum-explorer/env:
--------------------------------------------------------------------------------
1 | QE_BASEPATH="/explorer"
2 | QE_CONFIG_PATH="/app/config.json"
3 | NODE_ENV=production
4 |
5 | DISABLE_AUTH=true
6 |
7 | NEXTAUTH_URL=http://localhost:25000
8 | NEXTAUTH_URL_INTERNAL=http://localhost:25000
9 | NEXTAUTH_SECRET=68134139e258058cd8c74fc362cec39db176aa17a359e2a63233b9c858947445
10 | # DO NOT RE-USE THE ABOVE GENERATED IN PRODUCTION
11 | # To generate NEXTAUTH_SECRET: `openssl rand -hex 32` or go to https://generate-secret.now.sh/32;
12 |
13 | local_username=
14 | local_password=
15 |
16 | GITHUB_ID=
17 | GITHUB_SECRET=
18 |
19 | AUTH0_ID=
20 | AUTH0_SECRET=
21 | AUTH0_DOMAIN=
22 |
23 | FACEBOOK_ID=
24 | FACEBOOK_SECRET=
25 |
26 | GOOGLE_ID=
27 | GOOGLE_SECRET=
28 |
29 | TWITTER_ID=
30 | TWITTER_SECRET=
31 |
32 | GITLAB_CLIENT_ID=
33 | GITLAB_CLIENT_SECRET=
34 |
35 | AZURE_AD_CLIENT_ID=
36 | AZURE_AD_CLIENT_SECRET=
37 | AZURE_AD_TENANT_ID=
38 |
39 | ATLASSIAN_CLIENT_ID=
40 | ATLASSIAN_CLIENT_SECRET=
41 |
42 | COGNITO_CLIENT_ID=
43 | COGNITO_CLIENT_SECRET=
44 | COGNITO_ISSUER=
45 |
46 | OKTA_CLIENT_ID=
47 | OKTA_CLIENT_SECRET=
48 | OKTA_ISSUER=
49 |
50 | SLACK_CLIENT_ID=
51 | SLACK_CLIENT_SECRET=
52 |
--------------------------------------------------------------------------------
/files/goquorum/quorum-explorer/env:
--------------------------------------------------------------------------------
1 | QE_BASEPATH="/explorer"
2 | QE_CONFIG_PATH="/app/config.json"
3 | NODE_ENV=production
4 |
5 | DISABLE_AUTH=true
6 |
7 | NEXTAUTH_URL=http://localhost:25000
8 | NEXTAUTH_URL_INTERNAL=http://localhost:25000
9 | NEXTAUTH_SECRET=68134139e258058cd8c74fc362cec39db176aa17a359e2a63233b9c858947445
10 | # DO NOT RE-USE THE ABOVE GENERATED IN PRODUCTION
11 | # To generate NEXTAUTH_SECRET: `openssl rand -hex 32` or go to https://generate-secret.now.sh/32;
12 |
13 | local_username=
14 | local_password=
15 |
16 | GITHUB_ID=
17 | GITHUB_SECRET=
18 |
19 | AUTH0_ID=
20 | AUTH0_SECRET=
21 | AUTH0_DOMAIN=
22 |
23 | FACEBOOK_ID=
24 | FACEBOOK_SECRET=
25 |
26 | GOOGLE_ID=
27 | GOOGLE_SECRET=
28 |
29 | TWITTER_ID=
30 | TWITTER_SECRET=
31 |
32 | GITLAB_CLIENT_ID=
33 | GITLAB_CLIENT_SECRET=
34 |
35 | AZURE_AD_CLIENT_ID=
36 | AZURE_AD_CLIENT_SECRET=
37 | AZURE_AD_TENANT_ID=
38 |
39 | ATLASSIAN_CLIENT_ID=
40 | ATLASSIAN_CLIENT_SECRET=
41 |
42 | COGNITO_CLIENT_ID=
43 | COGNITO_CLIENT_SECRET=
44 | COGNITO_ISSUER=
45 |
46 | OKTA_CLIENT_ID=
47 | OKTA_CLIENT_SECRET=
48 | OKTA_ISSUER=
49 |
50 | SLACK_CLIENT_ID=
51 | SLACK_CLIENT_SECRET=
52 |
--------------------------------------------------------------------------------
/files/common/resume.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -u
2 |
3 | # Copyright 2018 ConsenSys AG.
4 | #
5 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
6 | # the License. You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
11 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
12 | # specific language governing permissions and limitations under the License.
13 |
14 | NO_LOCK_REQUIRED=false
15 |
16 | . ./.env
17 | . ./.common.sh
18 |
19 | echo "${bold}*************************************"
20 | echo "Quorum Dev Quickstart "
21 | echo "*************************************${normal}"
22 | echo "Resuming network..."
23 | echo "----------------------------------"
24 |
25 | if [ -f "docker-compose-deps.yml" ]; then
26 | echo "Starting dependencies..."
27 | docker compose -f docker-compose-deps.yml start
28 | sleep 60
29 | fi
30 |
31 | docker compose start
32 |
33 |
--------------------------------------------------------------------------------
/files/common/dapps/quorumToken/hardhat.config.ts:
--------------------------------------------------------------------------------
1 | // https://hardhat.org/hardhat-runner/docs/config
2 | import { HardhatUserConfig } from "hardhat/config";
3 | import "@nomicfoundation/hardhat-toolbox";
4 |
5 | module.exports = {
6 | networks: {
7 | // in built test network to use when developing contracts
8 | hardhat: {
9 | chainId: 1337
10 | },
11 | quickstart: {
12 | url: "http://127.0.0.1:8545",
13 | chainId: 1337,
14 | // test accounts only, all good ;)
15 | accounts: [
16 | "0x8f2a55949038a9610f50fb23b5883af3b4ecb3c3bb792cbcefbd1542c692be63",
17 | "0xc87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3",
18 | "0xae6ae8e5ccbfb04590405997ee2d52d2b330726137b875053c36d94e974d162f"
19 | ]
20 | }
21 | },
22 | defaultNetwork: "hardhat",
23 | solidity: {
24 | version: "0.8.19",
25 | settings: {
26 | optimizer: {
27 | enabled: true,
28 | runs: 200
29 | }
30 | }
31 | },
32 | paths: {
33 | sources: "./contracts",
34 | tests: "./test",
35 | cache: "./cache",
36 | artifacts: "./artifacts"
37 | },
38 | mocha: {
39 | timeout: 40000
40 | }
41 | }
--------------------------------------------------------------------------------
/files/common/dapps/quorumToken/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "quorumToken",
3 | "version": "1.0.0",
4 | "main": "index.js",
5 | "license": "MIT",
6 | "scripts": {
7 | "compile": "npx hardhat compile",
8 | "test": "npx hardhat test",
9 | "deploy-quorumtoken": "npx hardhat run ./scripts/deploy_quorumtoken.ts --network quickstart "
10 | },
11 | "dependencies": {
12 | "@openzeppelin/contracts": "^4.9.3",
13 | "hardhat": "^2.17.1"
14 | },
15 | "devDependencies": {
16 | "@nomicfoundation/hardhat-chai-matchers": "^2.0.0",
17 | "@nomicfoundation/hardhat-ethers": "^3.0.0",
18 | "@nomicfoundation/hardhat-network-helpers": "^1.0.0",
19 | "@nomicfoundation/hardhat-toolbox": "^3.0.0",
20 | "@nomicfoundation/hardhat-verify": "^1.0.0",
21 | "@typechain/ethers-v6": "^0.4.0",
22 | "@typechain/hardhat": "^8.0.0",
23 | "@types/chai": "^4.2.0",
24 | "@types/mocha": ">=9.1.0",
25 | "@types/node": ">=16.0.0",
26 | "chai": "^4.2.0",
27 | "ethers": "6.7.1",
28 | "hardhat-gas-reporter": "^1.0.8",
29 | "solidity-coverage": "^0.8.0",
30 | "ts-node": ">=8.0.0",
31 | "typechain": "^8.1.0",
32 | "typescript": ">=4.5.0"
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/files/besu/config/besu/config.toml:
--------------------------------------------------------------------------------
1 |
2 | genesis-file="/config/genesis.json"
3 | node-private-key-file="/opt/besu/keys/nodekey"
4 | logging="INFO"
5 | data-path="/opt/besu/data"
6 | host-allowlist=["*"]
7 | min-gas-price=0
8 |
9 | # rpc
10 | rpc-http-enabled=true
11 | rpc-http-host="0.0.0.0"
12 | rpc-http-port=8545
13 | rpc-http-cors-origins=["*"]
14 |
15 | # ws
16 | rpc-ws-enabled=true
17 | rpc-ws-host="0.0.0.0"
18 | rpc-ws-port=8546
19 |
20 | # graphql
21 | graphql-http-enabled=true
22 | graphql-http-host="0.0.0.0"
23 | graphql-http-port=8547
24 | graphql-http-cors-origins=["*"]
25 |
26 | # metrics
27 | metrics-enabled=true
28 | metrics-host="0.0.0.0"
29 | metrics-port=9545
30 |
31 | # permissions
32 | permissions-nodes-config-file-enabled=true
33 | permissions-nodes-config-file="/config/permissions_config.toml"
34 |
35 | # bootnodes
36 | bootnodes=["enode://8208a3f344695d44e9cf2c023683cbea7b9343e2f70a5e804bd2c93858e945f8f91439eef96a4ab6c47ff06637d6fbe6472f96de1655a1bee57ea896654f3a22@172.16.239.11:30303"]
37 |
38 |
39 | # Discovery at boot is set to a list of static files, but will also discover new nodes should they be added
40 | # static nodes
41 | static-nodes-file="/config/static-nodes.json"
42 | discovery-enabled=true
43 |
--------------------------------------------------------------------------------
/files/besu/config/besu/log-config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | INFO
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/files/besu/config/besu/static-nodes.json:
--------------------------------------------------------------------------------
1 | [
2 | "enode://8208a3f344695d44e9cf2c023683cbea7b9343e2f70a5e804bd2c93858e945f8f91439eef96a4ab6c47ff06637d6fbe6472f96de1655a1bee57ea896654f3a22@172.16.239.11:30303",
3 | "enode://b9050e002aa42464e6b07c811a1f9dfec01249af03f67b753e8415420649b184447bb2a784863ccbf327ad9e31aaba803464979dfe6a7facc669151a5fa6ad1b@172.16.239.12:30303",
4 | "enode://59cf0c623c582fa9b19bdf70fb6bade07f4ae32218dd4d1c7e2c7e65acf87da45cf2ab55d16d27360aafef17622c37c09db60d7680ebcc17b78867f4c05bcaa4@172.16.239.13:30303",
5 | "enode://2fd5b5b6ad529f55b71602026d1849d0036f06482368b5812fa793014195d3571b0840dbc4175617de2a12db8f1222c012420d471ae5c0d982118625cae58868@172.16.239.14:30303",
6 | "enode://86fcc16f4730fbfd238dc17ea552854c0943923bb1d5e886e5601b8d884fb0519060e0023f495dd24ffe60a65660fb7fdcdebfceedd2b3673dfa63658825924b@172.16.239.15:30303",
7 | "enode://98496800174b3c73ae33cba59f8f5e686cd488f7897c2edb52e2cf46383d75cd03dbb58dde07185bc0953f98800ca9a89f4b5ef450c5e51292ea08ec6130ee0c@172.16.239.16:30303",
8 | "enode://ad2c79c6561bc8212c2e8382611c62e406e767d1f3106c68ca206900f575cb8ba9a8be111c645cd9803701d684454c782c40d2361b000a32ed03d26228b30ec1@172.16.239.17:30303",
9 | "enode://af19c92deb635bd7720634de9b2e7908208530d6f5e96eee003a8f1799e5be4037957d7e2fdbe3605e3a38dab05c961679c02133a0e624e23a72f7961e8af6ac@172.16.239.18:30303"
10 | ]
11 |
--------------------------------------------------------------------------------
/files/besu/config/besu/permissions_config.toml:
--------------------------------------------------------------------------------
1 | nodes-allowlist=[
2 | "enode://8208a3f344695d44e9cf2c023683cbea7b9343e2f70a5e804bd2c93858e945f8f91439eef96a4ab6c47ff06637d6fbe6472f96de1655a1bee57ea896654f3a22@172.16.239.11:30303",
3 | "enode://b9050e002aa42464e6b07c811a1f9dfec01249af03f67b753e8415420649b184447bb2a784863ccbf327ad9e31aaba803464979dfe6a7facc669151a5fa6ad1b@172.16.239.12:30303",
4 | "enode://59cf0c623c582fa9b19bdf70fb6bade07f4ae32218dd4d1c7e2c7e65acf87da45cf2ab55d16d27360aafef17622c37c09db60d7680ebcc17b78867f4c05bcaa4@172.16.239.13:30303",
5 | "enode://2fd5b5b6ad529f55b71602026d1849d0036f06482368b5812fa793014195d3571b0840dbc4175617de2a12db8f1222c012420d471ae5c0d982118625cae58868@172.16.239.14:30303",
6 | "enode://86fcc16f4730fbfd238dc17ea552854c0943923bb1d5e886e5601b8d884fb0519060e0023f495dd24ffe60a65660fb7fdcdebfceedd2b3673dfa63658825924b@172.16.239.15:30303",
7 | "enode://98496800174b3c73ae33cba59f8f5e686cd488f7897c2edb52e2cf46383d75cd03dbb58dde07185bc0953f98800ca9a89f4b5ef450c5e51292ea08ec6130ee0c@172.16.239.16:30303",
8 | "enode://ad2c79c6561bc8212c2e8382611c62e406e767d1f3106c68ca206900f575cb8ba9a8be111c645cd9803701d684454c782c40d2361b000a32ed03d26228b30ec1@172.16.239.17:30303",
9 | "enode://af19c92deb635bd7720634de9b2e7908208530d6f5e96eee003a8f1799e5be4037957d7e2fdbe3605e3a38dab05c961679c02133a0e624e23a72f7961e8af6ac@172.16.239.18:30303"
10 | ]
11 |
12 |
--------------------------------------------------------------------------------
/files/common/dapps/quorumToken/frontend/public/next.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/files/common/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -u
2 |
3 | # Copyright 2018 ConsenSys AG.
4 | #
5 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
6 | # the License. You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
11 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
12 | # specific language governing permissions and limitations under the License.
13 |
14 | NO_LOCK_REQUIRED=true
15 |
16 | . ./.env
17 | . ./.common.sh
18 |
19 | # create log folders with the user permissions so it won't conflict with container permissions
20 | mkdir -p logs/besu logs/quorum logs/tessera
21 |
22 | # Build and run containers and network
23 | echo "docker-compose.yml" > ${LOCK_FILE}
24 |
25 | echo "${bold}*************************************"
26 | echo "Quorum Dev Quickstart"
27 | echo "*************************************${normal}"
28 | echo "Start network"
29 | echo "--------------------"
30 |
31 | if [ -f "docker-compose-deps.yml" ]; then
32 | echo "Starting dependencies..."
33 | docker compose -f docker-compose-deps.yml up --detach
34 | sleep 60
35 | fi
36 |
37 | echo "Starting network..."
38 | docker compose build --pull
39 | docker compose up --detach
40 |
41 |
42 | #list services and endpoints
43 | ./list.sh
44 |
--------------------------------------------------------------------------------
/files/goquorum/config/goquorum/data/static-nodes.json:
--------------------------------------------------------------------------------
1 | [
2 | "enode://8208a3f344695d44e9cf2c023683cbea7b9343e2f70a5e804bd2c93858e945f8f91439eef96a4ab6c47ff06637d6fbe6472f96de1655a1bee57ea896654f3a22@172.16.239.11:30303?discport=0&raftport=53000",
3 | "enode://b9050e002aa42464e6b07c811a1f9dfec01249af03f67b753e8415420649b184447bb2a784863ccbf327ad9e31aaba803464979dfe6a7facc669151a5fa6ad1b@172.16.239.12:30303?discport=0&raftport=53000",
4 | "enode://59cf0c623c582fa9b19bdf70fb6bade07f4ae32218dd4d1c7e2c7e65acf87da45cf2ab55d16d27360aafef17622c37c09db60d7680ebcc17b78867f4c05bcaa4@172.16.239.13:30303?discport=0&raftport=53000",
5 | "enode://2fd5b5b6ad529f55b71602026d1849d0036f06482368b5812fa793014195d3571b0840dbc4175617de2a12db8f1222c012420d471ae5c0d982118625cae58868@172.16.239.14:30303?discport=0&raftport=53000",
6 | "enode://86fcc16f4730fbfd238dc17ea552854c0943923bb1d5e886e5601b8d884fb0519060e0023f495dd24ffe60a65660fb7fdcdebfceedd2b3673dfa63658825924b@172.16.239.15:30303?discport=0&raftport=53000",
7 | "enode://98496800174b3c73ae33cba59f8f5e686cd488f7897c2edb52e2cf46383d75cd03dbb58dde07185bc0953f98800ca9a89f4b5ef450c5e51292ea08ec6130ee0c@172.16.239.16:30303?discport=0&raftport=53000",
8 | "enode://ad2c79c6561bc8212c2e8382611c62e406e767d1f3106c68ca206900f575cb8ba9a8be111c645cd9803701d684454c782c40d2361b000a32ed03d26228b30ec1@172.16.239.17:30303?discport=0&raftport=53000",
9 | "enode://af19c92deb635bd7720634de9b2e7908208530d6f5e96eee003a8f1799e5be4037957d7e2fdbe3605e3a38dab05c961679c02133a0e624e23a72f7961e8af6ac@172.16.239.18:30303?discport=0&raftport=53000"
10 | ]
11 |
--------------------------------------------------------------------------------
/files/goquorum/config/goquorum/data/permissioned-nodes.json:
--------------------------------------------------------------------------------
1 | [
2 | "enode://8208a3f344695d44e9cf2c023683cbea7b9343e2f70a5e804bd2c93858e945f8f91439eef96a4ab6c47ff06637d6fbe6472f96de1655a1bee57ea896654f3a22@172.16.239.11:30303?discport=0&raftport=53000",
3 | "enode://b9050e002aa42464e6b07c811a1f9dfec01249af03f67b753e8415420649b184447bb2a784863ccbf327ad9e31aaba803464979dfe6a7facc669151a5fa6ad1b@172.16.239.12:30303?discport=0&raftport=53000",
4 | "enode://59cf0c623c582fa9b19bdf70fb6bade07f4ae32218dd4d1c7e2c7e65acf87da45cf2ab55d16d27360aafef17622c37c09db60d7680ebcc17b78867f4c05bcaa4@172.16.239.13:30303?discport=0&raftport=53000",
5 | "enode://2fd5b5b6ad529f55b71602026d1849d0036f06482368b5812fa793014195d3571b0840dbc4175617de2a12db8f1222c012420d471ae5c0d982118625cae58868@172.16.239.14:30303?discport=0&raftport=53000",
6 | "enode://86fcc16f4730fbfd238dc17ea552854c0943923bb1d5e886e5601b8d884fb0519060e0023f495dd24ffe60a65660fb7fdcdebfceedd2b3673dfa63658825924b@172.16.239.15:30303?discport=0&raftport=53000",
7 | "enode://98496800174b3c73ae33cba59f8f5e686cd488f7897c2edb52e2cf46383d75cd03dbb58dde07185bc0953f98800ca9a89f4b5ef450c5e51292ea08ec6130ee0c@172.16.239.16:30303?discport=0&raftport=53000",
8 | "enode://ad2c79c6561bc8212c2e8382611c62e406e767d1f3106c68ca206900f575cb8ba9a8be111c645cd9803701d684454c782c40d2361b000a32ed03d26228b30ec1@172.16.239.17:30303?discport=0&raftport=53000",
9 | "enode://af19c92deb635bd7720634de9b2e7908208530d6f5e96eee003a8f1799e5be4037957d7e2fdbe3605e3a38dab05c961679c02133a0e624e23a72f7961e8af6ac@172.16.239.18:30303?discport=0&raftport=53000"
10 | ]
11 |
--------------------------------------------------------------------------------
/files/goquorum/smart_contracts/scripts/compile.js:
--------------------------------------------------------------------------------
1 | const path = require('path');
2 | const fs = require('fs-extra');
3 | const solc = require('solc');
4 |
5 | const contractsPath = path.resolve(__dirname, '../', 'contracts');
6 |
7 | function buildSources() {
8 | const sources = {};
9 | const contractsFiles = fs.readdirSync(contractsPath);
10 | contractsFiles.forEach(file => {
11 | if(file.endsWith(".sol")){
12 | const contractFullPath = path.resolve(contractsPath, file);
13 | sources[file] = {
14 | content: fs.readFileSync(contractFullPath, 'utf8')
15 | };
16 | }
17 | });
18 | return sources;
19 | }
20 |
21 | const input = {
22 | language: 'Solidity',
23 | sources: buildSources(),
24 | settings: {
25 | outputSelection: {
26 | '*': {
27 | '*': [ '*', 'evm.bytecode' ]
28 | }
29 | }
30 | }
31 | }
32 |
33 | function compileContracts() {
34 | const stringifiedJson = JSON.stringify(input);
35 | const compilationResult = solc.compile(stringifiedJson);
36 | const output = JSON.parse(compilationResult);
37 | const compiledContracts = output.contracts;
38 | for (let contract in compiledContracts) {
39 | for(let contractName in compiledContracts[contract]) {
40 | fs.outputJsonSync(
41 | path.resolve(contractsPath, `${contractName}.json`),
42 | compiledContracts[contract][contractName], { spaces: 2 }
43 | )
44 | }
45 | }
46 | }
47 |
48 | const main = () => {
49 | compileContracts();
50 | }
51 |
52 | if (require.main === module) {
53 | main();
54 | }
55 |
56 | module.exports = exports = main
57 |
58 |
59 |
--------------------------------------------------------------------------------
/files/common/filebeat/filebeat.yml:
--------------------------------------------------------------------------------
1 |
2 | filebeat.modules:
3 |
4 | # List of inputs to fetch data.
5 | filebeat.inputs:
6 | - paths:
7 | - "/var/log/logstash/logstash-*.log"
8 | type: log
9 | enabled: true
10 | document_type: logstash
11 | fields_under_root: true
12 | fields:
13 | service_name: logstash
14 | env_name: ${ENV_NAME}
15 | ip_address: ${IP_ADDRESS}
16 |
17 | - paths:
18 | - "/var/log/besu/*.log"
19 | type: log
20 | enabled: true
21 | document_type: besu
22 | fields_under_root: true
23 | fields:
24 | service_name: besu
25 | env_name: ${ENV_NAME}
26 | ip_address: ${IP_ADDRESS}
27 |
28 | - paths:
29 | - "/var/log/quorum/*.log"
30 | type: log
31 | enabled: true
32 | document_type: quorum
33 | fields_under_root: true
34 | fields:
35 | service_name: quorum
36 | env_name: ${ENV_NAME}
37 | ip_address: ${IP_ADDRESS}
38 |
39 | - paths:
40 | - "/var/log/tessera/*.log"
41 | type: log
42 | enabled: true
43 | document_type: tessera
44 | fields_under_root: true
45 | fields:
46 | service_name: tessera
47 | env_name: ${ENV_NAME}
48 | ip_address: ${IP_ADDRESS}
49 |
50 | output.redis:
51 | enabled: true
52 | hosts: ["${REDIS_HOST}:${REDIS_PORT}"]
53 | key: filebeat
54 |
55 |
56 | logging:
57 | level: error
58 | metrics.enabled: false
59 | to_files: false
60 | json: true
61 | files:
62 | path: /var/log/filebeat
63 | name: filebeat-all.log
64 | keepfiles: 0
65 | #rotateonstartup: true
66 |
67 |
--------------------------------------------------------------------------------
/files/common/smart_contracts/scripts/compile.js:
--------------------------------------------------------------------------------
1 | const path = require('path');
2 | const fs = require('fs-extra');
3 | const solc = require('solc');
4 |
5 | const contractsPath = path.resolve(__dirname, '../', 'contracts');
6 |
7 | function buildSources() {
8 | const sources = {};
9 | const contractsFiles = fs.readdirSync(contractsPath);
10 | contractsFiles.forEach(file => {
11 | if(file.endsWith(".sol")){
12 | const contractFullPath = path.resolve(contractsPath, file);
13 | sources[file] = {
14 | content: fs.readFileSync(contractFullPath, 'utf8')
15 | };
16 | }
17 | });
18 | return sources;
19 | }
20 |
21 | const input = {
22 | language: 'Solidity',
23 | sources: buildSources(),
24 | settings: {
25 | outputSelection: {
26 | '*': {
27 | '*': [ '*', 'evm.bytecode' ]
28 | }
29 | }
30 | }
31 | }
32 |
33 | function compileContracts() {
34 | const stringifiedJson = JSON.stringify(input);
35 | console.log(stringifiedJson)
36 | const compilationResult = solc.compile(stringifiedJson);
37 | console.log(compilationResult)
38 | const output = JSON.parse(compilationResult);
39 | console.log(output)
40 | const compiledContracts = output.contracts;
41 | for (let contract in compiledContracts) {
42 | for(let contractName in compiledContracts[contract]) {
43 | console.log(contract)
44 | fs.outputJsonSync(
45 | path.resolve(contractsPath, `${contractName}.json`),
46 | compiledContracts[contract][contractName], { spaces: 2 }
47 | )
48 | }
49 | }
50 | }
51 |
52 | const main = () => {
53 | compileContracts();
54 | }
55 |
56 | if (require.main === module) {
57 | main();
58 | }
59 |
60 | module.exports = exports = main
61 |
62 |
63 |
--------------------------------------------------------------------------------
/files/common/config/tessera/data/logback.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | {"timestamp":"%d{ISO8601}","container":"${hostName}","level":"%level","thread":"%thread","logger":"%logger{36}","message":"%replace(%replace(%msg){'[\r\n]',''}){'"','\\"'}","throwable":"%replace(%replace(%throwable){'[\r\n]',''}){'"','\\"'}"}%n
9 |
10 |
11 |
12 |
13 | /var/log/tessera/tessera-${HOSTNAME}.log
14 | true
15 | true
16 |
17 | {"timestamp":"%d{ISO8601}","container":"${hostName}","level":"%level","thread":"%thread","class":"%c{1}","logger":"%logger{36}","message":"%replace(%msg){'[\r\n]', ''}","throwable":"%replace(%replace(%throwable){'[\r\n]',''}){'"','\\"'}"}%n
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "quorum-dev-quickstart",
3 | "version": "0.2.4",
4 | "description": "A utility that lets developers try out the new suite of Quorum tools from ConsenSys!",
5 | "main": "build/index.js",
6 | "repository": "git@github.com:ConsenSys/quorum-dev-quickstart.git",
7 | "contributors": [
8 | "Joshua Fernandes <3722503+joshuafernandes@users.noreply.github.com>",
9 | "Eric Lin <38420555+Ezzahhh@users.noreply.github.com>"
10 | ],
11 | "license": "Apache-2.0",
12 | "private": false,
13 | "bin": "./index.js",
14 | "scripts": {
15 | "build": "tsc",
16 | "lint": "eslint './src/**'",
17 | "lintAndFix": "eslint --fix './src/**'",
18 | "prepare": "tsc && eslint --fix './src/**'",
19 | "start": "node build/index.js"
20 | },
21 | "devDependencies": {
22 | "@types/express": "^4.17.7",
23 | "@types/express-session": "^1.17.0",
24 | "@types/got": "^9.6.11",
25 | "@types/node": "^14.0.24",
26 | "@types/nunjucks": "^3.2.0",
27 | "@types/tmp": "^0.2.0",
28 | "@types/yargs": "^17.0.0",
29 | "@typescript-eslint/eslint-plugin": "^3.7.0",
30 | "@typescript-eslint/parser": "^3.7.0",
31 | "eslint": "^7.32.0",
32 | "eslint-config-prettier": "^6.11.0",
33 | "eslint-plugin-import": "^2.22.0",
34 | "eslint-plugin-jsdoc": "^30.0.3",
35 | "eslint-plugin-prefer-arrow": "^1.2.1",
36 | "husky": "^7.0.2",
37 | "lint-staged": "^13.2.1",
38 | "typescript": "^3.9.7"
39 | },
40 | "dependencies": {
41 | "chalk": "^4.1.0",
42 | "cli-spinners": "^2.6.1",
43 | "express": "^4.17.1",
44 | "express-session": "^1.17.2",
45 | "got": "^11.8.2",
46 | "isbinaryfile": "^4.0.8",
47 | "log-update": "^4.0.0",
48 | "nunjucks": "^3.2.3",
49 | "open": "^8.3.0",
50 | "tmp": "^0.2.1",
51 | "yargs": "^17.2.1"
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/files/common/config/tessera/data/tessera-config-template.json:
--------------------------------------------------------------------------------
1 | {
2 | "mode": "${TESSERA_MODE}",
3 | "useWhiteList": false,
4 | "jdbc": {
5 | "username": "sa",
6 | "password": "",
7 | "url": "jdbc:h2:./data/tm/db;MODE=Oracle;TRACE_LEVEL_SYSTEM_OUT=0",
8 | "autoCreateTables": true
9 | },
10 | "serverConfigs": [
11 | {
12 | "app": "ThirdParty",
13 | "enabled": true,
14 | "serverAddress": "http://${HOSTNAME}:9080",
15 | "communicationType": "REST"
16 | },
17 | {
18 | "app": "Q2T",
19 | "enabled": true,
20 | "serverAddress": "http://${HOSTNAME}:9101",
21 | "sslConfig": {
22 | "tls": "OFF"
23 | },
24 | "communicationType": "REST"
25 | },
26 | {
27 | "app": "P2P",
28 | "enabled": true,
29 | "serverAddress": "http://${HOSTNAME}:9000",
30 | "sslConfig": {
31 | "tls": "OFF"
32 | },
33 | "communicationType": "REST"
34 | }
35 | ],
36 | "peer": [
37 | {
38 | "url": "http://member1tessera:9000"
39 | },
40 | {
41 | "url": "http://member2tessera:9000"
42 | },
43 | {
44 | "url": "http://member3tessera:9000"
45 | }
46 | ],
47 | "keys": {
48 | "passwords": [],
49 | "keyData": [
50 | {
51 | "privateKeyPath": "/config/keys/tm.key",
52 | "publicKeyPath": "/config/keys/tm.pub"
53 | }
54 | ]
55 | },
56 | "alwaysSendTo": [],
57 | "bootstrapNode": false,
58 | "features": {
59 | "enableRemoteKeyValidation": false,
60 | "enablePrivacyEnhancements": true
61 | }
62 | }
--------------------------------------------------------------------------------
/files/common/remove.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -u
2 |
3 | # Copyright 2018 ConsenSys AG.
4 | #
5 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
6 | # the License. You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
11 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
12 | # specific language governing permissions and limitations under the License.
13 |
14 | NO_LOCK_REQUIRED=false
15 |
16 | . ./.env
17 | . ./.common.sh
18 |
19 | removeDockerImage(){
20 | if [[ ! -z `docker ps -a | grep $1` ]]; then
21 | docker image rm $1
22 | fi
23 | }
24 |
25 | echo "${bold}*************************************"
26 | echo "Quorum Dev Quickstart "
27 | echo "*************************************${normal}"
28 | echo "Stop and remove network..."
29 |
30 | docker compose down -v
31 | docker compose rm -sfv
32 |
33 | if [ -f "docker-compose-deps.yml" ]; then
34 | echo "Stopping dependencies..."
35 | docker compose -f docker-compose-deps.yml down -v
36 | docker compose rm -sfv
37 | fi
38 | # pet shop dapp
39 | if [[ ! -z `docker ps -a | grep quorum-dev-quickstart_pet_shop` ]]; then
40 | docker stop quorum-dev-quickstart_pet_shop
41 | docker rm quorum-dev-quickstart_pet_shop
42 | removeDockerImage quorum-dev-quickstart_pet_shop
43 | fi
44 |
45 | if grep -q 'kibana:' docker-compose.yml 2> /dev/null ; then
46 | docker image rm quorum-test-network_elasticsearch
47 | docker image rm quorum-test-network_logstash
48 | docker image rm quorum-test-network_filebeat
49 | docker image rm quorum-test-network_metricbeat
50 | fi
51 |
52 | rm ${LOCK_FILE}
53 | echo "Lock file ${LOCK_FILE} removed"
54 |
--------------------------------------------------------------------------------
/files/besu/quorum-explorer/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "algorithm": "qbft",
3 | "nodes": [
4 | {
5 | "name": "rpcnode",
6 | "client": "besu",
7 | "rpcUrl": "http://rpcnode:8545",
8 | "privateTxUrl": ""
9 | },
10 | {
11 | "name": "validator1",
12 | "client": "besu",
13 | "rpcUrl": "http://validator1:8545",
14 | "privateTxUrl": ""
15 | },
16 | {
17 | "name": "validator2",
18 | "client": "besu",
19 | "rpcUrl": "http://validator2:8545",
20 | "privateTxUrl": ""
21 | },
22 | {
23 | "name": "validator3",
24 | "client": "besu",
25 | "rpcUrl": "http://validator3:8545",
26 | "privateTxUrl": ""
27 | },
28 | {
29 | "name": "validator4",
30 | "client": "besu",
31 | "rpcUrl": "http://validator4:8545",
32 | "privateTxUrl": ""
33 | },
34 | {
35 | "name": "member1",
36 | "client": "besu",
37 | "rpcUrl": "http://member1besu:8545",
38 | "privateTxUrl": "http://member1tessera:9080",
39 | "privateKey": "0x8f2a55949038a9610f50fb23b5883af3b4ecb3c3bb792cbcefbd1542c692be63",
40 | "accountAddress": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"
41 | },
42 | {
43 | "name": "member2",
44 | "client": "besu",
45 | "rpcUrl": "http://member2besu:8545",
46 | "privateTxUrl": "http://member2tessera:9080",
47 | "privateKey": "0xc87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3",
48 | "accountAddress": "0x627306090abaB3A6e1400e9345bC60c78a8BEf57"
49 | },
50 | {
51 | "name": "member3",
52 | "client": "besu",
53 | "rpcUrl": "http://member3besu:8545",
54 | "privateTxUrl": "http://member3tessera:9080",
55 | "privateKey": "0xae6ae8e5ccbfb04590405997ee2d52d2b330726137b875053c36d94e974d162f",
56 | "accountAddress": "0xf17f52151EbEF6C7334FAD080c5704D77216b732"
57 | }
58 | ]
59 | }
60 |
61 |
--------------------------------------------------------------------------------
/files/common/config/grafana/provisioning/datasources/loki.yml:
--------------------------------------------------------------------------------
1 | # config file version
2 | apiVersion: 1
3 |
4 | # list of datasources that should be deleted from the database
5 | deleteDatasources:
6 | - name: Graphite
7 | orgId: 1
8 |
9 | # list of datasources to insert/update depending
10 | # what's available in the database
11 | datasources:
12 | # name of the datasource. Required
13 | - name: Loki
14 | # datasource type. Required
15 | type: loki
16 | # access mode. proxy or direct (Server or Browser in the UI). Required
17 | access: proxy
18 | # org id. will default to orgId 1 if not specified
19 | orgId: 1
20 | # url
21 | url: http://loki:3100/
22 | # Deprecated, use secureJsonData.password
23 | password:
24 | # database user, if used
25 | user:
26 | # database name, if used
27 | database:
28 | # enable/disable basic auth
29 | basicAuth:
30 | # basic auth username
31 | basicAuthUser:
32 | # Deprecated, use secureJsonData.basicAuthPassword
33 | basicAuthPassword:
34 | # enable/disable with credentials headers
35 | withCredentials:
36 | # mark as default datasource. Max one per org
37 | isDefault: false
38 | #