From 37c2b84a9f62ab2d72150ee5f9a7c681c645e821 Mon Sep 17 00:00:00 2001 From: Andrey Butusov Date: Mon, 9 Dec 2024 12:03:34 +0300 Subject: [PATCH 1/3] docker: remove version from docker compose files Warn: `the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion`. Signed-off-by: Andrey Butusov --- services/basenet/docker-compose.yml | 1 - services/chain/docker-compose.yml | 1 - services/ir/docker-compose.yml | 1 - services/rest_gate/docker-compose.yml | 1 - services/s3_gate/docker-compose.yml | 1 - services/storage/docker-compose.yml | 1 - 6 files changed, 6 deletions(-) diff --git a/services/basenet/docker-compose.yml b/services/basenet/docker-compose.yml index bb0b2ed..3d87dca 100644 --- a/services/basenet/docker-compose.yml +++ b/services/basenet/docker-compose.yml @@ -1,6 +1,5 @@ --- -version: "2.4" services: basenet: diff --git a/services/chain/docker-compose.yml b/services/chain/docker-compose.yml index 91d53cf..9d6bcba 100644 --- a/services/chain/docker-compose.yml +++ b/services/chain/docker-compose.yml @@ -1,6 +1,5 @@ --- -version: "2.4" services: neofs_main_chain: image: ${NEOGO_IMAGE}:${NEOGO_VERSION} diff --git a/services/ir/docker-compose.yml b/services/ir/docker-compose.yml index b1c015a..42966b3 100644 --- a/services/ir/docker-compose.yml +++ b/services/ir/docker-compose.yml @@ -1,6 +1,5 @@ --- -version: "2.4" services: ir01: diff --git a/services/rest_gate/docker-compose.yml b/services/rest_gate/docker-compose.yml index 12bcc1f..d825b27 100644 --- a/services/rest_gate/docker-compose.yml +++ b/services/rest_gate/docker-compose.yml @@ -1,6 +1,5 @@ --- -version: "2.4" services: rest_gate: image: ${REST_GW_IMAGE}:${REST_GW_VERSION} diff --git a/services/s3_gate/docker-compose.yml b/services/s3_gate/docker-compose.yml index cb0a67b..711e02a 100644 --- a/services/s3_gate/docker-compose.yml +++ b/services/s3_gate/docker-compose.yml @@ -1,6 +1,5 @@ --- -version: "2.4" services: s3_gate: image: ${S3_GW_IMAGE}:${S3_GW_VERSION} diff --git a/services/storage/docker-compose.yml b/services/storage/docker-compose.yml index 85f9914..427879f 100644 --- a/services/storage/docker-compose.yml +++ b/services/storage/docker-compose.yml @@ -1,6 +1,5 @@ --- -version: "2.4" services: storage01: image: ${NODE_IMAGE}:${NODE_VERSION} From 1fe126d7fb41231c29e554b8797c3745329b8125 Mon Sep 17 00:00:00 2001 From: Andrey Butusov Date: Thu, 12 Dec 2024 19:58:41 +0300 Subject: [PATCH 2/3] bin: use `neofs-adm` for `newEpoch` and `setConfig` txs Before that, `neo-go` was used to invoke transactions, but now `neofs-adm` is conveniently used. Signed-off-by: Andrey Butusov --- Makefile | 2 +- bin/config.sh | 40 +++++++++------------------------------- bin/tick.sh | 41 +++++------------------------------------ neofs_config.mk | 20 ++++++++++---------- 4 files changed, 25 insertions(+), 78 deletions(-) diff --git a/Makefile b/Makefile index a23d6c0..ab57fbb 100644 --- a/Makefile +++ b/Makefile @@ -105,7 +105,7 @@ up/basic: up/bootstrap docker-compose -f services/$${svc}/docker-compose.yml up -d 2>&1 | tee -a docker-compose.err; \ done @./bin/tick.sh - @./bin/config.sh string SystemDNS container + @./bin/config.sh SystemDNS container $(call error_handler,$@); @echo "Basic NeoFS Developer Environment is ready" diff --git a/bin/config.sh b/bin/config.sh index 93559e9..def6573 100755 --- a/bin/config.sh +++ b/bin/config.sh @@ -4,47 +4,25 @@ echo "Running bin/config.sh" # Source env settings . .env -. services/ir/.ir.env source bin/helper.sh -# NeoGo binary path. -NEOGO="${NEOGO:-docker exec main_chain neo-go}" +# NeoFS ADM binary path and config path. +NEOFS_ADM="${NEOFS_ADM:-./vendor/neofs-adm}" +CONFIG_ADM="${CONFIG_ADM:-./neofs-adm.yml}" -# Wallet files to change config value -WALLET="${WALLET:-services/chain/node-wallet.json}" -CONFIG_IMG="${CONFIG_IMG:-/wallets/config.yml}" +# NeoFS configuration record: +# key is a string and value is a constant of [string|int|etc] type +KEY=${1} +VALUE="${2}" -NETMAP_ADDR=$(bin/resolve.sh netmap.neofs) || die "Failed to resolve 'netmap.neofs' domain name" - -# NeoFS configuration record: variable type [string|int|etc], -# key is a string and value is a constant of given type -TYPE=${1} -KEY=${2} -VALUE="${3}" - -[ -z "$TYPE" ] && echo "Empty config value type" && exit 1 [ -z "$KEY" ] && echo "Empty config key" && exit 1 [ -z "$VALUE" ] && echo "Empty config value" && exit 1 -# Internal variables -if [[ -z "${NEOFS_NOTARY_DISABLED}" ]]; then - ADDR=$(jq -r .accounts[1].address < "${WALLET}" || die "Cannot get address from ${WALLET}") -else - ADDR=$(jq -r .accounts[0].address < "${WALLET}" || die "Cannot get address from ${WALLET}") -fi - # Change config value in side chain echo "Changing ${KEY} configuration value to ${VALUE}" -# shellcheck disable=SC2086 -${NEOGO} contract invokefunction \ - --wallet-config ${CONFIG_IMG} \ - -a ${ADDR} --force --await \ - -r http://ir01.${LOCAL_DOMAIN}:30333 \ - ${NETMAP_ADDR} \ - setConfig bytes:beefcafe \ - string:${KEY} \ - ${TYPE}:${VALUE} -- ${ADDR} || exit 1 +${NEOFS_ADM} fschain set-config --alphabet-wallets services/ir${IR_NUMBER_OF_NODES}/alphabet \ + -r http://ir01.${LOCAL_DOMAIN}:30333 -c ${CONFIG_ADM} ${KEY}=${VALUE} --force # Update epoch to apply new configuration value ./bin/tick.sh diff --git a/bin/tick.sh b/bin/tick.sh index b16123e..aa0de1f 100755 --- a/bin/tick.sh +++ b/bin/tick.sh @@ -4,42 +4,11 @@ echo "Running bin/tick.sh" # Source env settings . .env -. services/ir/.ir.env source bin/helper.sh -# NeoGo binary path. -NEOGO="${NEOGO:-docker exec main_chain neo-go}" +# NeoFS ADM binary path and config path. +NEOFS_ADM="${NEOFS_ADM:-./vendor/neofs-adm}" +CONFIG_ADM="${CONFIG_ADM:-./neofs-adm.yml}" -# Wallet files to change config value -WALLET="${WALLET:-services/chain/node-wallet.json}" -CONFIG_IMG="${CONFIG_IMG:-/wallets/config.yml}" - -# Internal variables -if [[ -z "${NEOFS_NOTARY_DISABLED}" ]]; then - ADDR=$(jq -r .accounts[1].address < "${WALLET}" || die "Cannot get address from ${WALLET}") -else - ADDR=$(jq -r .accounts[0].address < "${WALLET}" || die "Cannot get address from ${WALLET}") -fi - -# Grep NeoFS chain block time -NEOFS_CHAIN_PROTO="${NEOFS_CHAIN_PROTO:-services/ir/cfg/config.yml}" -BLOCK_DURATION=$(grep time_per_block < "$NEOFS_CHAIN_PROTO" | awk '{print $2}') \ - || die "Cannot fetch block duration" -NETMAP_ADDR=$(bin/resolve.sh netmap.neofs) || die "Cannot resolve netmap.neofs" - -# Fetch current epoch value -EPOCH=$(${NEOGO} contract testinvokefunction \ - -r "http://ir01.${LOCAL_DOMAIN}:30333" "${NETMAP_ADDR}" epoch \ - | grep 'value' | awk -F'"' '{ print $4 }') \ - || die "Cannot fetch epoch from netmap contract" - -echo "Updating NeoFS epoch to $((EPOCH+1))" - -# shellcheck disable=SC2086 -${NEOGO} contract invokefunction \ - --wallet-config ${CONFIG_IMG} \ - -a ${ADDR} --force --await \ - -r http://ir01.${LOCAL_DOMAIN}:30333 \ - ${NETMAP_ADDR} \ - newEpoch int:$((EPOCH+1)) -- ${ADDR}:Global \ - || die "Cannot increment an epoch" +${NEOFS_ADM} fschain force-new-epoch --alphabet-wallets services/ir${IR_NUMBER_OF_NODES}/alphabet \ + -r http://ir01.${LOCAL_DOMAIN}:30333 -c ${CONFIG_ADM} diff --git a/neofs_config.mk b/neofs_config.mk index 8f164d1..c672b5d 100644 --- a/neofs_config.mk +++ b/neofs_config.mk @@ -1,43 +1,43 @@ # Update epoch duration in side chain blocks (make update.epoch_duration val=30) update.epoch_duration: - @./bin/config.sh int EpochDuration $(val) + @./bin/config.sh EpochDuration $(val) # Update max object size in bytes (make update.max_object_size val=1000) update.max_object_size: - @./bin/config.sh int MaxObjectSize $(val) + @./bin/config.sh MaxObjectSize $(val) # Update audit fee per result in fixed 12 (make update.audit_fee val=100) update.audit_fee: - @./bin/config.sh int AuditFee $(val) + @./bin/config.sh AuditFee $(val) # Update container fee per alphabet node in fixed 12 (make update.container_fee val=500) update.container_fee: - @./bin/config.sh int ContainerFee $(val) + @./bin/config.sh ContainerFee $(val) # Update container alias fee per alphabet node in fixed 12 (make update.container_alias_fee val=100) update.container_alias_fee: - @./bin/config.sh int ContainerAliasFee $(val) + @./bin/config.sh ContainerAliasFee $(val) # Update amount of EigenTrust iterations (make update.eigen_trust_iterations val=2) update.eigen_trust_iterations: - @./bin/config.sh int EigenTrustIterations $(val) + @./bin/config.sh EigenTrustIterations $(val) # Update system dns to resolve container names (make update.system_dns val=container) update.system_dns: - @./bin/config.sh string SystemDNS $(val) + @./bin/config.sh SystemDNS $(val) # Update alpha parameter of EigenTrust algorithm in 0 <= f <= 1.0 (make update.eigen_trust_alpha val=0.2) update.eigen_trust_alpha: - @./bin/config.sh string EigenTrustAlpha $(val) + @./bin/config.sh EigenTrustAlpha $(val) # Update basic income rate in fixed 12 (make update.basic_income_rate val=1000) update.basic_income_rate: - @./bin/config.sh int BasicIncomeRate $(val) + @./bin/config.sh BasicIncomeRate $(val) # Update homomorphic hashing disabled flag (make update.homomorphic_hashing_disable val=true) update.homomorphic_hashing_disable: - @./bin/config.sh bool HomomorphicHashingDisabled $(val) + @./bin/config.sh HomomorphicHashingDisabled $(val) # Tick new epoch in side chain tick.epoch: From 7fb1d2cb6c147b48ff84508dcb9fade5c16d3ae7 Mon Sep 17 00:00:00 2001 From: Andrey Butusov Date: Tue, 10 Dec 2024 14:42:52 +0300 Subject: [PATCH 3/3] ir: add configuration for 4 and 7 IR nodes Use env variable `IR_NUMBER_OF_NODES` to configure 1, 4 or 7 IR nodes. Closes #73. Signed-off-by: Andrey Butusov --- .env | 9 +- .gitignore | 2 +- Makefile | 25 +- bin/deposit.sh | 2 +- docs/ir.md | 4 + neofs-adm.yml | 6 + services/chain/docker-compose.yml | 2 +- ...ocol.privnet.yml => protocol.privnet1.yml} | 0 services/chain/protocol.privnet4.yml | 77 ++++++ services/chain/protocol.privnet7.yml | 83 ++++++ services/ir/.hosts | 6 + services/ir/artifacts.mk | 2 +- services/{ir => ir1}/.env | 0 services/{ir => ir1/alphabet}/az.json | 0 services/{ir => ir1}/cfg/config.yml | 0 services/{ir => ir1}/cli-cfg.yml | 0 services/{ir => ir1}/contract.json | 0 services/{ir => ir1}/docker-compose.yml | 6 +- services/ir4/.env | 1 + services/ir4/alphabet/az.json | 80 ++++++ services/ir4/alphabet/buky.json | 80 ++++++ services/ir4/alphabet/glagoli.json | 80 ++++++ services/ir4/alphabet/vedi.json | 80 ++++++ services/ir4/cfg/config.yml | 89 ++++++ services/ir4/cli-cfg.yml | 2 + services/ir4/docker-compose.yml | 153 +++++++++++ services/ir7/.env | 1 + services/ir7/alphabet/az.json | 92 +++++++ services/ir7/alphabet/buky.json | 92 +++++++ services/ir7/alphabet/dobro.json | 92 +++++++ services/ir7/alphabet/glagoli.json | 92 +++++++ services/ir7/alphabet/vedi.json | 92 +++++++ services/ir7/alphabet/yest.json | 92 +++++++ services/ir7/alphabet/zhivete.json | 92 +++++++ services/ir7/cfg/config.yml | 95 +++++++ services/ir7/cli-cfg.yml | 2 + services/ir7/docker-compose.yml | 255 ++++++++++++++++++ 37 files changed, 1773 insertions(+), 13 deletions(-) rename services/chain/{protocol.privnet.yml => protocol.privnet1.yml} (100%) create mode 100644 services/chain/protocol.privnet4.yml create mode 100644 services/chain/protocol.privnet7.yml rename services/{ir => ir1}/.env (100%) rename services/{ir => ir1/alphabet}/az.json (100%) rename services/{ir => ir1}/cfg/config.yml (100%) rename services/{ir => ir1}/cli-cfg.yml (100%) rename services/{ir => ir1}/contract.json (100%) rename services/{ir => ir1}/docker-compose.yml (88%) create mode 120000 services/ir4/.env create mode 100644 services/ir4/alphabet/az.json create mode 100644 services/ir4/alphabet/buky.json create mode 100644 services/ir4/alphabet/glagoli.json create mode 100644 services/ir4/alphabet/vedi.json create mode 100644 services/ir4/cfg/config.yml create mode 100644 services/ir4/cli-cfg.yml create mode 100644 services/ir4/docker-compose.yml create mode 120000 services/ir7/.env create mode 100644 services/ir7/alphabet/az.json create mode 100644 services/ir7/alphabet/buky.json create mode 100644 services/ir7/alphabet/dobro.json create mode 100644 services/ir7/alphabet/glagoli.json create mode 100644 services/ir7/alphabet/vedi.json create mode 100644 services/ir7/alphabet/yest.json create mode 100644 services/ir7/alphabet/zhivete.json create mode 100644 services/ir7/cfg/config.yml create mode 100644 services/ir7/cli-cfg.yml create mode 100644 services/ir7/docker-compose.yml diff --git a/.env b/.env index f33a5df..509ee51 100644 --- a/.env +++ b/.env @@ -16,6 +16,7 @@ NEO_GO_URL=https://github.com/nspcc-dev/neo-go/releases/download/v${NEOGO_VERSIO # NeoFS InnerRing nodes IR_VERSION=0.44.1 IR_IMAGE=nspccdev/neofs-ir +IR_NUMBER_OF_NODES=1 # NeoFS Storage nodes NODE_VERSION=0.44.1 @@ -47,7 +48,13 @@ NEOFS_CONTRACTS_URL=https://github.com/nspcc-dev/neofs-contract/releases/downloa #NEOFS_CONTRACTS_PATH=/path/to/unpacked/neofs-contracts-dir # Control service addresses used for healthchecks -NEOFS_IR_CONTROL_GRPC_ENDPOINT=127.0.0.1:16512 +NEOFS_IR_CONTROL_GRPC_ENDPOINT_1=ir01.${LOCAL_DOMAIN}:16512 +NEOFS_IR_CONTROL_GRPC_ENDPOINT_2=ir02.${LOCAL_DOMAIN}:16512 +NEOFS_IR_CONTROL_GRPC_ENDPOINT_3=ir03.${LOCAL_DOMAIN}:16512 +NEOFS_IR_CONTROL_GRPC_ENDPOINT_4=ir04.${LOCAL_DOMAIN}:16512 +NEOFS_IR_CONTROL_GRPC_ENDPOINT_5=ir05.${LOCAL_DOMAIN}:16512 +NEOFS_IR_CONTROL_GRPC_ENDPOINT_6=ir06.${LOCAL_DOMAIN}:16512 +NEOFS_IR_CONTROL_GRPC_ENDPOINT_7=ir07.${LOCAL_DOMAIN}:16512 NEOFS_STORAGE_CONTROL_GRPC_ENDPOINT_1=s01.${LOCAL_DOMAIN}:8081 NEOFS_STORAGE_CONTROL_GRPC_ENDPOINT_2=s02.${LOCAL_DOMAIN}:8081 NEOFS_STORAGE_CONTROL_GRPC_ENDPOINT_3=s03.${LOCAL_DOMAIN}:8081 diff --git a/.gitignore b/.gitignore index 2b6e991..0e1c7bf 100644 --- a/.gitignore +++ b/.gitignore @@ -18,4 +18,4 @@ services/storage/*tls.crt services/storage/*tls.key # IR NeoFS contract configuration -services/ir/.ir.env +.ir.env diff --git a/Makefile b/Makefile index ab57fbb..5fd594f 100644 --- a/Makefile +++ b/Makefile @@ -22,10 +22,10 @@ include services/*/prepare.mk # List of services to run START_SVCS = $(shell cat .services | grep -v '\#') START_BASIC = $(shell cat .basic_services | grep -ve '\#') -START_BOOTSTRAP = $(shell cat .bootstrap_services | grep -v '\#') +START_BOOTSTRAP = $(shell cat .bootstrap_services | grep -v '\#' | sed 's/^ir$$/&$(IR_NUMBER_OF_NODES)/') STOP_SVCS = $(shell tac .services | grep -v '\#') STOP_BASIC = $(shell tac .basic_services | grep -v '\#') -STOP_BOOTSTRAP = $(shell tac .bootstrap_services | grep -v '\#') +STOP_BOOTSTRAP = $(shell tac .bootstrap_services | grep -v '\#' | sed 's/^ir$$/&$(IR_NUMBER_OF_NODES)/') # Enabled services dirs ENABLED_SVCS_DIRS = $(shell echo "${START_BOOTSTRAP} ${START_BASIC} ${START_SVCS}" | sed 's|[^ ]* *|./services/&|g') @@ -46,6 +46,8 @@ CHAIN_PROTOCOL = './services/chain/protocol.privnet.yml' # List of grepped environment variables from *.env GREP_DOTENV = $(shell find . -name '*.env' -exec grep -rhv -e '^\#' -e '^$$' {} + | sort -u ) +AVAILABLE_NUMBER_OF_NODES = 1 4 7 + # Error handling function define error_handler ret_val=$$?;\ @@ -67,6 +69,14 @@ define error_handler fi endef +# Check if number of IR nodes from .env file is correct +.PHONY: check_nodes +check_nodes: + @if ! echo "$(AVAILABLE_NUMBER_OF_NODES)" | grep -wq "$(IR_NUMBER_OF_NODES)"; then \ + echo "Invalid IR number $(IR_NUMBER_OF_NODES); supported numbers: ($(AVAILABLE_NUMBER_OF_NODES))"; \ + exit 1; \ + fi + # Pull all required Docker images .PHONY: pull pull: @@ -111,17 +121,20 @@ up/basic: up/bootstrap # Start bootstrap services .PHONY: up/bootstrap -up/bootstrap: get vendor/hosts - @echo "NEOFS_IR_CONTRACTS_NEOFS="`./vendor/neo-go contract calc-hash -s NbUgTSFvPmsRxmGeWpuuGeJUoRoi6PErcM --in vendor/contracts/neofs/contract.nef -m vendor/contracts/neofs/manifest.json | grep -Eo '[a-fA-F0-9]{40}'` > services/ir/.ir.env +up/bootstrap: check_nodes get vendor/hosts + @echo "NEOFS_IR_CONTRACTS_NEOFS="`./vendor/neo-go contract calc-hash -s NbUgTSFvPmsRxmGeWpuuGeJUoRoi6PErcM --in vendor/contracts/neofs/contract.nef -m vendor/contracts/neofs/manifest.json | grep -Eo '[a-fA-F0-9]{40}'` > services/ir${IR_NUMBER_OF_NODES}/.ir.env @for svc in $(START_BOOTSTRAP); do \ echo "$@ for service: $${svc}"; \ docker-compose -f services/$${svc}/docker-compose.yml up -d 2>&1 | tee -a docker-compose.err; \ done @source ./bin/helper.sh - @docker exec main_chain neo-go wallet nep17 transfer --force --await --wallet-config /wallets/config.yml -r http://main-chain.neofs.devenv:30333 --from NfgHwwTi3wHAS8aFAN243C5vGbkYDpqLHP --to NbUgTSFvPmsRxmGeWpuuGeJUoRoi6PErcM --token GAS --amount 1000 + @docker exec main_chain neo-go wallet nep17 transfer --force --await --wallet-config /wallets/config.yml -r http://main-chain.neofs.devenv:30333 --from NfgHwwTi3wHAS8aFAN243C5vGbkYDpqLHP --to NbUgTSFvPmsRxmGeWpuuGeJUoRoi6PErcM --token GAS --amount 1000 @./vendor/neo-go contract deploy --wallet-config wallets/config.yml --in vendor/contracts/neofs/contract.nef --manifest vendor/contracts/neofs/manifest.json --force --await -r http://main-chain.neofs.devenv:30333 [ true ffffffffffffffffffffffffffffffffffffffff [ 02b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc2 ] [ InnerRingCandidateFee 10000000000 WithdrawFee 100000000 ] ] @NEOGO=vendor/neo-go WALLET=wallets/wallet.json CONFIG=wallets/config.yml ./bin/deposit.sh - @for f in ./services/storage/wallet*.json; do echo "Transfer GAS to wallet $${f}" && ./vendor/neofs-adm -c neofs-adm.yml fschain refill-gas --storage-wallet $${f} --gas 10.0 --alphabet-wallets services/ir || die "Failed to transfer GAS to alphabet wallets"; done + @for f in ./services/storage/wallet*.json; do \ + echo "Transfer GAS to wallet $${f}" && \ + ./vendor/neofs-adm -c neofs-adm.yml fschain refill-gas --storage-wallet $${f} --gas 10.0 --alphabet-wallets services/ir${IR_NUMBER_OF_NODES}/alphabet || die "Failed to transfer GAS to alphabet wallets"; \ + done $(call error_handler,$@); @echo "NeoFS chain environment is deployed" diff --git a/bin/deposit.sh b/bin/deposit.sh index 07610a5..e183b98 100755 --- a/bin/deposit.sh +++ b/bin/deposit.sh @@ -4,7 +4,7 @@ echo "Running bin/deposit.sh" # Source env settings . .env -. services/ir/.ir.env +. services/ir${IR_NUMBER_OF_NODES}/.ir.env source bin/helper.sh # NeoGo binary path. diff --git a/docs/ir.md b/docs/ir.md index 798e0b2..a09b4fc 100644 --- a/docs/ir.md +++ b/docs/ir.md @@ -24,6 +24,10 @@ pulling from DockerHub, the local image will be used. Image label prefix to use for Inner Ring docker containers. +### IR_NUMBER_OF_NODES + +The number of IR nodes that will work. The value must be either 1, 4, or 7. + ## NeoFS global config NeoFS uses global configuration to store epoch duration, maximum object size, diff --git a/neofs-adm.yml b/neofs-adm.yml index 117e228..81d1b7b 100644 --- a/neofs-adm.yml +++ b/neofs-adm.yml @@ -1,4 +1,10 @@ rpc-endpoint: http://ir01.neofs.devenv:30333 credentials: az: "one" + buky: "one" + glagoli: "one" + vedi: "one" + dobro: "one" + yest: "one" + zhivete: "one" contract: "one" diff --git a/services/chain/docker-compose.yml b/services/chain/docker-compose.yml index 9d6bcba..bfc0242 100644 --- a/services/chain/docker-compose.yml +++ b/services/chain/docker-compose.yml @@ -20,7 +20,7 @@ services: ipv4_address: ${IPV4_PREFIX}.50 stop_signal: SIGKILL volumes: - - ./protocol.privnet.yml:/config/protocol.privnet.yml + - ./protocol.privnet${IR_NUMBER_OF_NODES}.yml:/config/protocol.privnet.yml - ./node-wallet.json:/wallets/node-wallet.json - ./config.yml:/wallets/config.yml - ./../../vendor/hosts:/etc/hosts diff --git a/services/chain/protocol.privnet.yml b/services/chain/protocol.privnet1.yml similarity index 100% rename from services/chain/protocol.privnet.yml rename to services/chain/protocol.privnet1.yml diff --git a/services/chain/protocol.privnet4.yml b/services/chain/protocol.privnet4.yml new file mode 100644 index 0000000..25ef4b0 --- /dev/null +++ b/services/chain/protocol.privnet4.yml @@ -0,0 +1,77 @@ +ProtocolConfiguration: + Magic: 56753 + MaxTraceableBlocks: 200000 + TimePerBlock: 1s + MemPoolSize: 50000 + StandbyCommittee: + - 02b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc2 + ValidatorsCount: 1 + VerifyTransactions: true + P2PSigExtensions: false + Genesis: + Roles: + NeoFSAlphabet: + - 0345eefc50545e83dfc7ec9ab648210dddbeb3996912a8ff6416e2d3ec51a8e324 + - 039a1c33ed18bb57f6e6b3e712b54b924d2b9137c4906cf433ee8693a3810e380e + - 02d3088931c034a390c5bea16d19ef2debe9702019270c94913528a8ac30e17373 + - 02fb7531661401222dcf2711bbd78597e8152ba886612e44ea530a08bbe4eba810 + P2PNotary: + - 0345eefc50545e83dfc7ec9ab648210dddbeb3996912a8ff6416e2d3ec51a8e324 + - 039a1c33ed18bb57f6e6b3e712b54b924d2b9137c4906cf433ee8693a3810e380e + - 02d3088931c034a390c5bea16d19ef2debe9702019270c94913528a8ac30e17373 + - 02fb7531661401222dcf2711bbd78597e8152ba886612e44ea530a08bbe4eba810 + + +ApplicationConfiguration: + SkipBlockVerification: false + DBConfiguration: + Type: "boltdb" + BoltDBOptions: + FilePath: "./db/privnet.bolt" + P2P: + Addresses: + - ":20333" + DialTimeout: 3s + ProtoTickInterval: 2s + PingInterval: 30s + PingTimeout: 90s + MaxPeers: 10 + AttemptConnPeers: 5 + MinPeers: 0 + Relay: true + RPC: + Addresses: + - ":30333" + Enabled: true + SessionEnabled: true + EnableCORSWorkaround: false + MaxGasInvoke: 15 + Prometheus: + Addresses: + - ":20001" + Enabled: true + Pprof: + Addresses: + - ":20011" + Enabled: true + Consensus: + Enabled: true + UnlockWallet: + Path: "./wallets/node-wallet.json" + Password: "one" + Oracle: + Enabled: true + NeoFS: + Nodes: + - s01.neofs.devenv:8080 + - s02.neofs.devenv:8080 + - s03.neofs.devenv:8080 + - s04.neofs.devenv:8080 + UnlockWallet: + Path: "./wallets/node-wallet.json" + Password: "one" + P2PNotary: + Enabled: false + UnlockWallet: + Path: "./wallets/node-wallet.json" + Password: "one" diff --git a/services/chain/protocol.privnet7.yml b/services/chain/protocol.privnet7.yml new file mode 100644 index 0000000..f51276d --- /dev/null +++ b/services/chain/protocol.privnet7.yml @@ -0,0 +1,83 @@ +ProtocolConfiguration: + Magic: 56753 + MaxTraceableBlocks: 200000 + TimePerBlock: 1s + MemPoolSize: 50000 + StandbyCommittee: + - 02b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc2 + ValidatorsCount: 1 + VerifyTransactions: true + P2PSigExtensions: false + Genesis: + Roles: + NeoFSAlphabet: + - 022c0bf9e1a0c864905d2b8909555ae421db9a52f86ab268a84d9be42a6ad9d858 + - 024a640c8cbe3e34f0cd927950c64f6d0d239770397fe645d52bf920fddd655bf8 + - 024f19ec7a8e35722c8cdd7d21fcc2090f2658b2fd67b7b23f1936dc5e7b54b216 + - 03797de54a6abb6d19c22a5afabf30d320a9348b0f294315e74cb3b423b1ac9dc9 + - 03a90f6e7dcb49cf9603dde786781c4fdbd43f8a57c5b23fe93d4ecc33952599fd + - 03c7aa35ab64aad9b85a35647b1f0aec59344271a6c2ed7644faf1997ee098bbab + - 02ca9097295d28e28e2ae55eb62ca0b1ac48b2d9b6dcb64ddb936a64d80cb8b795 + P2PNotary: + - 022c0bf9e1a0c864905d2b8909555ae421db9a52f86ab268a84d9be42a6ad9d858 + - 024a640c8cbe3e34f0cd927950c64f6d0d239770397fe645d52bf920fddd655bf8 + - 024f19ec7a8e35722c8cdd7d21fcc2090f2658b2fd67b7b23f1936dc5e7b54b216 + - 03797de54a6abb6d19c22a5afabf30d320a9348b0f294315e74cb3b423b1ac9dc9 + - 03a90f6e7dcb49cf9603dde786781c4fdbd43f8a57c5b23fe93d4ecc33952599fd + - 03c7aa35ab64aad9b85a35647b1f0aec59344271a6c2ed7644faf1997ee098bbab + - 02ca9097295d28e28e2ae55eb62ca0b1ac48b2d9b6dcb64ddb936a64d80cb8b795 + + +ApplicationConfiguration: + SkipBlockVerification: false + DBConfiguration: + Type: "boltdb" + BoltDBOptions: + FilePath: "./db/privnet.bolt" + P2P: + Addresses: + - ":20333" + DialTimeout: 3s + ProtoTickInterval: 2s + PingInterval: 30s + PingTimeout: 90s + MaxPeers: 10 + AttemptConnPeers: 5 + MinPeers: 0 + Relay: true + RPC: + Addresses: + - ":30333" + Enabled: true + SessionEnabled: true + EnableCORSWorkaround: false + MaxGasInvoke: 15 + Prometheus: + Addresses: + - ":20001" + Enabled: true + Pprof: + Addresses: + - ":20011" + Enabled: true + Consensus: + Enabled: true + UnlockWallet: + Path: "./wallets/node-wallet.json" + Password: "one" + Oracle: + Enabled: true + NeoFS: + Nodes: + - s01.neofs.devenv:8080 + - s02.neofs.devenv:8080 + - s03.neofs.devenv:8080 + - s04.neofs.devenv:8080 + UnlockWallet: + Path: "./wallets/node-wallet.json" + Password: "one" + P2PNotary: + Enabled: false + UnlockWallet: + Path: "./wallets/node-wallet.json" + Password: "one" diff --git a/services/ir/.hosts b/services/ir/.hosts index 2649849..77d5bd3 100644 --- a/services/ir/.hosts +++ b/services/ir/.hosts @@ -1 +1,7 @@ IPV4_PREFIX.61 ir01.LOCAL_DOMAIN +IPV4_PREFIX.62 ir02.LOCAL_DOMAIN +IPV4_PREFIX.63 ir03.LOCAL_DOMAIN +IPV4_PREFIX.64 ir04.LOCAL_DOMAIN +IPV4_PREFIX.65 ir05.LOCAL_DOMAIN +IPV4_PREFIX.66 ir06.LOCAL_DOMAIN +IPV4_PREFIX.67 ir07.LOCAL_DOMAIN diff --git a/services/ir/artifacts.mk b/services/ir/artifacts.mk index 41d5860..1192995 100644 --- a/services/ir/artifacts.mk +++ b/services/ir/artifacts.mk @@ -7,7 +7,7 @@ get.ir: get.cli get.contracts get.adm get.storage prepare.storage get.cli: NEOFS_CLI_FILE=./vendor/neofs-cli get.cli: NEOFS_CLI_PATH?= get.cli: - @touch services/ir/.ir.env # https://github.com/docker/compose/issues/3560 + @touch services/ir${IR_NUMBER_OF_NODES}/.ir.env # https://github.com/docker/compose/issues/3560 @mkdir -p ./vendor ifeq (${NEOFS_CLI_PATH},) diff --git a/services/ir/.env b/services/ir1/.env similarity index 100% rename from services/ir/.env rename to services/ir1/.env diff --git a/services/ir/az.json b/services/ir1/alphabet/az.json similarity index 100% rename from services/ir/az.json rename to services/ir1/alphabet/az.json diff --git a/services/ir/cfg/config.yml b/services/ir1/cfg/config.yml similarity index 100% rename from services/ir/cfg/config.yml rename to services/ir1/cfg/config.yml diff --git a/services/ir/cli-cfg.yml b/services/ir1/cli-cfg.yml similarity index 100% rename from services/ir/cli-cfg.yml rename to services/ir1/cli-cfg.yml diff --git a/services/ir/contract.json b/services/ir1/contract.json similarity index 100% rename from services/ir/contract.json rename to services/ir1/contract.json diff --git a/services/ir/docker-compose.yml b/services/ir1/docker-compose.yml similarity index 88% rename from services/ir/docker-compose.yml rename to services/ir1/docker-compose.yml index 42966b3..b28b483 100644 --- a/services/ir/docker-compose.yml +++ b/services/ir1/docker-compose.yml @@ -13,9 +13,11 @@ services: internet: ipv4_address: ${IPV4_PREFIX}.61 stop_signal: SIGKILL + environment: + - NEOFS_IR_CONTROL_GRPC_ENDPOINT=${NEOFS_IR_CONTROL_GRPC_ENDPOINT_1} volumes: - neofs_chain_ir01:/neofs_chain/ - - ./az.json:/wallet.json + - ./alphabet/az.json:/wallet.json - ./../../vendor/hosts:/etc/hosts - ./../../vendor/neofs-cli:/neofs-cli - ./cli-cfg.yml:/cli-cfg.yml @@ -24,7 +26,7 @@ services: env_file: [ ".env", ".ir.env" ] command: [ "neofs-ir", "--config", "/etc/neofs/ir/config.yml" ] healthcheck: - test: ["CMD", "/neofs-cli", "control", "healthcheck", "-c", "/cli-cfg.yml", "--endpoint", "${NEOFS_IR_CONTROL_GRPC_ENDPOINT}", "--ir"] + test: ["CMD", "/neofs-cli", "control", "healthcheck", "-c", "/cli-cfg.yml", "--endpoint", "${NEOFS_IR_CONTROL_GRPC_ENDPOINT_1}", "--ir"] interval: 1s timeout: 1s retries: 300 diff --git a/services/ir4/.env b/services/ir4/.env new file mode 120000 index 0000000..c7360fb --- /dev/null +++ b/services/ir4/.env @@ -0,0 +1 @@ +../../.env \ No newline at end of file diff --git a/services/ir4/alphabet/az.json b/services/ir4/alphabet/az.json new file mode 100644 index 0000000..5dfe3c2 --- /dev/null +++ b/services/ir4/alphabet/az.json @@ -0,0 +1,80 @@ +{ + "version": "1.0", + "accounts": [ + { + "address": "NVvgwaqoKJKWe9JYZbUH2pDNSuHdMvCayr", + "key": "6PYRvQ8JfJrAgviGtGLXXDVcBFWksLHo8DUT3a2vBSe6EvBmpUyQ21XSPU", + "label": "single", + "contract": { + "script": "DCEDRe78UFReg9/H7Jq2SCEN3b6zmWkSqP9kFuLT7FGo4yRBVuezJw==", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + }, + { + "address": "NWXweiZSaJ31iCDD8VpuxoWfoMwUkJnaXC", + "key": "6PYRvQ8JfJrAgviGtGLXXDVcBFWksLHo8DUT3a2vBSe6EvBmpUyQ21XSPU", + "label": "committee", + "contract": { + "script": "EwwhA0Xu/FBUXoPfx+yatkghDd2+s5lpEqj/ZBbi0+xRqOMkDCEDmhwz7Ri7V/bms+cStUuSTSuRN8SQbPQz7oaTo4EOOA4MIQLTCIkxwDSjkMW+oW0Z7y3r6XAgGScMlJE1KKisMOFzcwwhAvt1MWYUASItzycRu9eFl+gVK6iGYS5E6lMKCLvk66gQFEGe0Nw6", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + }, + { + "name": "parameter1", + "type": "Signature" + }, + { + "name": "parameter2", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + }, + { + "address": "NWXweiZSaJ31iCDD8VpuxoWfoMwUkJnaXC", + "key": "6PYRvQ8JfJrAgviGtGLXXDVcBFWksLHo8DUT3a2vBSe6EvBmpUyQ21XSPU", + "label": "consensus", + "contract": { + "script": "EwwhA0Xu/FBUXoPfx+yatkghDd2+s5lpEqj/ZBbi0+xRqOMkDCEDmhwz7Ri7V/bms+cStUuSTSuRN8SQbPQz7oaTo4EOOA4MIQLTCIkxwDSjkMW+oW0Z7y3r6XAgGScMlJE1KKisMOFzcwwhAvt1MWYUASItzycRu9eFl+gVK6iGYS5E6lMKCLvk66gQFEGe0Nw6", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + }, + { + "name": "parameter1", + "type": "Signature" + }, + { + "name": "parameter2", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + } + ], + "scrypt": { + "n": 16384, + "r": 8, + "p": 8 + }, + "extra": { + "Tokens": null + } +} \ No newline at end of file diff --git a/services/ir4/alphabet/buky.json b/services/ir4/alphabet/buky.json new file mode 100644 index 0000000..3b384fe --- /dev/null +++ b/services/ir4/alphabet/buky.json @@ -0,0 +1,80 @@ +{ + "version": "1.0", + "accounts": [ + { + "address": "NYsJkMH9nPd6K345PNxLtWRdzNwKYy4KY7", + "key": "6PYT2HbyT9cUBeV1jpoWXLhfSkVCHGnqig2qhmAY1ipKMtCFj7YfaDHWVu", + "label": "single", + "contract": { + "script": "DCEDmhwz7Ri7V/bms+cStUuSTSuRN8SQbPQz7oaTo4EOOA5BVuezJw==", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + }, + { + "address": "NWXweiZSaJ31iCDD8VpuxoWfoMwUkJnaXC", + "key": "6PYT2HbyT9cUBeV1jpoWXLhfSkVCHGnqig2qhmAY1ipKMtCFj7YfaDHWVu", + "label": "committee", + "contract": { + "script": "EwwhA0Xu/FBUXoPfx+yatkghDd2+s5lpEqj/ZBbi0+xRqOMkDCEDmhwz7Ri7V/bms+cStUuSTSuRN8SQbPQz7oaTo4EOOA4MIQLTCIkxwDSjkMW+oW0Z7y3r6XAgGScMlJE1KKisMOFzcwwhAvt1MWYUASItzycRu9eFl+gVK6iGYS5E6lMKCLvk66gQFEGe0Nw6", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + }, + { + "name": "parameter1", + "type": "Signature" + }, + { + "name": "parameter2", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + }, + { + "address": "NWXweiZSaJ31iCDD8VpuxoWfoMwUkJnaXC", + "key": "6PYT2HbyT9cUBeV1jpoWXLhfSkVCHGnqig2qhmAY1ipKMtCFj7YfaDHWVu", + "label": "consensus", + "contract": { + "script": "EwwhA0Xu/FBUXoPfx+yatkghDd2+s5lpEqj/ZBbi0+xRqOMkDCEDmhwz7Ri7V/bms+cStUuSTSuRN8SQbPQz7oaTo4EOOA4MIQLTCIkxwDSjkMW+oW0Z7y3r6XAgGScMlJE1KKisMOFzcwwhAvt1MWYUASItzycRu9eFl+gVK6iGYS5E6lMKCLvk66gQFEGe0Nw6", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + }, + { + "name": "parameter1", + "type": "Signature" + }, + { + "name": "parameter2", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + } + ], + "scrypt": { + "n": 16384, + "r": 8, + "p": 8 + }, + "extra": { + "Tokens": null + } +} \ No newline at end of file diff --git a/services/ir4/alphabet/glagoli.json b/services/ir4/alphabet/glagoli.json new file mode 100644 index 0000000..a34008b --- /dev/null +++ b/services/ir4/alphabet/glagoli.json @@ -0,0 +1,80 @@ +{ + "version": "1.0", + "accounts": [ + { + "address": "NLcjoCwaoKN5Uz5QB7sqcwLfszoJuiCyzZ", + "key": "6PYSVxG38nYuKj9rLZy7JinkNgnm3aZXWAQdx2QWB7PPYKymruybsjMqKC", + "label": "single", + "contract": { + "script": "DCEC0wiJMcA0o5DFvqFtGe8t6+lwIBknDJSRNSiorDDhc3NBVuezJw==", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + }, + { + "address": "NWXweiZSaJ31iCDD8VpuxoWfoMwUkJnaXC", + "key": "6PYSVxG38nYuKj9rLZy7JinkNgnm3aZXWAQdx2QWB7PPYKymruybsjMqKC", + "label": "committee", + "contract": { + "script": "EwwhA0Xu/FBUXoPfx+yatkghDd2+s5lpEqj/ZBbi0+xRqOMkDCEDmhwz7Ri7V/bms+cStUuSTSuRN8SQbPQz7oaTo4EOOA4MIQLTCIkxwDSjkMW+oW0Z7y3r6XAgGScMlJE1KKisMOFzcwwhAvt1MWYUASItzycRu9eFl+gVK6iGYS5E6lMKCLvk66gQFEGe0Nw6", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + }, + { + "name": "parameter1", + "type": "Signature" + }, + { + "name": "parameter2", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + }, + { + "address": "NWXweiZSaJ31iCDD8VpuxoWfoMwUkJnaXC", + "key": "6PYSVxG38nYuKj9rLZy7JinkNgnm3aZXWAQdx2QWB7PPYKymruybsjMqKC", + "label": "consensus", + "contract": { + "script": "EwwhA0Xu/FBUXoPfx+yatkghDd2+s5lpEqj/ZBbi0+xRqOMkDCEDmhwz7Ri7V/bms+cStUuSTSuRN8SQbPQz7oaTo4EOOA4MIQLTCIkxwDSjkMW+oW0Z7y3r6XAgGScMlJE1KKisMOFzcwwhAvt1MWYUASItzycRu9eFl+gVK6iGYS5E6lMKCLvk66gQFEGe0Nw6", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + }, + { + "name": "parameter1", + "type": "Signature" + }, + { + "name": "parameter2", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + } + ], + "scrypt": { + "n": 16384, + "r": 8, + "p": 8 + }, + "extra": { + "Tokens": null + } +} \ No newline at end of file diff --git a/services/ir4/alphabet/vedi.json b/services/ir4/alphabet/vedi.json new file mode 100644 index 0000000..4a34087 --- /dev/null +++ b/services/ir4/alphabet/vedi.json @@ -0,0 +1,80 @@ +{ + "version": "1.0", + "accounts": [ + { + "address": "NbMyB2qx4EBSsMmjxnSpvJ8FD43tLyfGMq", + "key": "6PYXXyCMHSXy1tttqPkBeZ3yJEojJTWRKKPQiXbPCwiBZ4Kki8GosrMsbv", + "label": "single", + "contract": { + "script": "DCEC+3UxZhQBIi3PJxG714WX6BUrqIZhLkTqUwoIu+TrqBBBVuezJw==", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + }, + { + "address": "NWXweiZSaJ31iCDD8VpuxoWfoMwUkJnaXC", + "key": "6PYXXyCMHSXy1tttqPkBeZ3yJEojJTWRKKPQiXbPCwiBZ4Kki8GosrMsbv", + "label": "committee", + "contract": { + "script": "EwwhA0Xu/FBUXoPfx+yatkghDd2+s5lpEqj/ZBbi0+xRqOMkDCEDmhwz7Ri7V/bms+cStUuSTSuRN8SQbPQz7oaTo4EOOA4MIQLTCIkxwDSjkMW+oW0Z7y3r6XAgGScMlJE1KKisMOFzcwwhAvt1MWYUASItzycRu9eFl+gVK6iGYS5E6lMKCLvk66gQFEGe0Nw6", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + }, + { + "name": "parameter1", + "type": "Signature" + }, + { + "name": "parameter2", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + }, + { + "address": "NWXweiZSaJ31iCDD8VpuxoWfoMwUkJnaXC", + "key": "6PYXXyCMHSXy1tttqPkBeZ3yJEojJTWRKKPQiXbPCwiBZ4Kki8GosrMsbv", + "label": "consensus", + "contract": { + "script": "EwwhA0Xu/FBUXoPfx+yatkghDd2+s5lpEqj/ZBbi0+xRqOMkDCEDmhwz7Ri7V/bms+cStUuSTSuRN8SQbPQz7oaTo4EOOA4MIQLTCIkxwDSjkMW+oW0Z7y3r6XAgGScMlJE1KKisMOFzcwwhAvt1MWYUASItzycRu9eFl+gVK6iGYS5E6lMKCLvk66gQFEGe0Nw6", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + }, + { + "name": "parameter1", + "type": "Signature" + }, + { + "name": "parameter2", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + } + ], + "scrypt": { + "n": 16384, + "r": 8, + "p": 8 + }, + "extra": { + "Tokens": null + } +} \ No newline at end of file diff --git a/services/ir4/cfg/config.yml b/services/ir4/cfg/config.yml new file mode 100644 index 0000000..7cace37 --- /dev/null +++ b/services/ir4/cfg/config.yml @@ -0,0 +1,89 @@ +# Logger section +logger: + level: debug # Minimum enabled logging level + +# Wallet settings +wallet: + path: /wallet.json # Path to NEP-6 NEO wallet file + password: one # Account password in the wallet + +# Profiler section +pprof: + enabled: true + address: :6060 # Endpoint for application pprof profiling; disabled by default + shutdown_timeout: 30s # Timeout for profiling HTTP server graceful shutdown + +# Application metrics section +prometheus: + enabled: true + address: :9090 # Endpoint for application prometheus metrics; disabled by default + shutdown_timeout: 30s # Timeout for metrics HTTP server graceful shutdown + +# Toggling the sidechain-only mode +without_mainnet: false + +# Neo main chain RPC settings +mainnet: + endpoints: # List of websocket RPC endpoints in mainchain; ignore if mainchain is disabled + - ws://main-chain:30333/ws + +# NeoFS chain RPC settings +fschain: + consensus: + magic: 15405 + committee: + - 0345eefc50545e83dfc7ec9ab648210dddbeb3996912a8ff6416e2d3ec51a8e324 + - 039a1c33ed18bb57f6e6b3e712b54b924d2b9137c4906cf433ee8693a3810e380e + - 02d3088931c034a390c5bea16d19ef2debe9702019270c94913528a8ac30e17373 + - 02fb7531661401222dcf2711bbd78597e8152ba886612e44ea530a08bbe4eba810 + storage: + type: boltdb + path: /neofs_chain/db.bolt + time_per_block: 1s + max_traceable_blocks: 200000 + seed_nodes: + - ir01 + - ir02 + - ir03 + - ir04 + rpc: + listen: + - ":30333" + p2p: + listen: + - ":20333" + set_roles_in_genesis: true + +fschain_autodeploy: true + +# Network time settings +timers: + stop_estimation: + mul: 1 # Multiplier in x/y relation of when to stop basic income estimation within the epoch + div: 4 # Divider in x/y relation of when to stop basic income estimation within the epoch + collect_basic_income: + mul: 1 # Multiplier in x/y relation of when to start basic income asset collection within the epoch + div: 2 # Divider in x/y relation of when to start basic income asset collecting within the epoch + distribute_basic_income: + mul: 3 # Multiplier in x/y relation of when to start basic income asset distribution within the epoch + div: 4 # Divider in x/y relation of when to start basic income asset distribution within the epoch + +# Storage node GAS emission settings +emit: + storage: + amount: 1000000000 # Fixed8 value of sidechain GAS emitted to all storage nodes once per GAS emission cycle; disabled by default + +# Storage node removal settings +netmap_cleaner: + enabled: true # Enable voting for removing stale storage nodes from network map + threshold: 3 # Number of NeoFS epoch without bootstrap request from storage node before it considered stale + +# Audit settings +audit: + pdp: + max_sleep_interval: 100ms # Maximum timeout between object.RangeHash requests to the storage node + +# Settlement settings +settlement: + basic_income_rate: 100000000 # Optional: override basic income rate value from network config; applied only in debug mode + audit_fee: 100000 # Optional: override audit fee value from network config; applied only in debug mode diff --git a/services/ir4/cli-cfg.yml b/services/ir4/cli-cfg.yml new file mode 100644 index 0000000..1b4dfa2 --- /dev/null +++ b/services/ir4/cli-cfg.yml @@ -0,0 +1,2 @@ +wallet: /wallet.json +password: "one" diff --git a/services/ir4/docker-compose.yml b/services/ir4/docker-compose.yml new file mode 100644 index 0000000..dd4e232 --- /dev/null +++ b/services/ir4/docker-compose.yml @@ -0,0 +1,153 @@ +--- + +services: + + ir01: + image: ${IR_IMAGE}:${IR_VERSION} + domainname: ${LOCAL_DOMAIN} + hostname: ir01 + container_name: ir01 + restart: "no" + networks: + ir_int: + internet: + ipv4_address: ${IPV4_PREFIX}.61 + stop_signal: SIGKILL + environment: + - NEOFS_IR_WALLET_ADDRESS=NVvgwaqoKJKWe9JYZbUH2pDNSuHdMvCayr + - NEOFS_IR_CONTROL_GRPC_ENDPOINT=${NEOFS_IR_CONTROL_GRPC_ENDPOINT_1} + volumes: + - neofs_chain_ir01:/neofs_chain/ + - ./alphabet/az.json:/wallet.json + - ./../../vendor/hosts:/etc/hosts + - ./../../vendor/neofs-cli:/neofs-cli + - ./cli-cfg.yml:/cli-cfg.yml + - ./cfg/config.yml:/etc/neofs/ir/config.yml + - ${CA_CERTS_TRUSTED_STORE}/s04.${LOCAL_DOMAIN}.tls.crt:/etc/ssl/certs/s04tls.crt + env_file: [ ".env", ".ir.env" ] + command: [ "neofs-ir", "--config", "/etc/neofs/ir/config.yml" ] + healthcheck: + test: ["CMD", "/neofs-cli", "control", "healthcheck", "-c", "/cli-cfg.yml", "--endpoint", "${NEOFS_IR_CONTROL_GRPC_ENDPOINT_1}", "--ir"] + interval: 1s + timeout: 1s + retries: 300 + start_period: 5s + + ir02: + image: ${IR_IMAGE}:${IR_VERSION} + domainname: ${LOCAL_DOMAIN} + hostname: ir02 + container_name: ir02 + restart: "no" + networks: + ir_int: + internet: + ipv4_address: ${IPV4_PREFIX}.62 + stop_signal: SIGKILL + environment: + - NEOFS_IR_WALLET_ADDRESS=NYsJkMH9nPd6K345PNxLtWRdzNwKYy4KY7 + - NEOFS_IR_CONTROL_GRPC_ENDPOINT=${NEOFS_IR_CONTROL_GRPC_ENDPOINT_2} + volumes: + - neofs_chain_ir02:/neofs_chain/ + - ./alphabet/buky.json:/wallet.json + - ./../../vendor/hosts:/etc/hosts + - ./../../vendor/neofs-cli:/neofs-cli + - ./cli-cfg.yml:/cli-cfg.yml + - ./cfg/config.yml:/etc/neofs/ir/config.yml + - ${CA_CERTS_TRUSTED_STORE}/s04.${LOCAL_DOMAIN}.tls.crt:/etc/ssl/certs/s04tls.crt + env_file: [ ".env", ".ir.env" ] + command: [ "neofs-ir", "--config", "/etc/neofs/ir/config.yml" ] + healthcheck: + test: ["CMD", "/neofs-cli", "control", "healthcheck", "-c", "/cli-cfg.yml", "--endpoint", "${NEOFS_IR_CONTROL_GRPC_ENDPOINT_2}", "--ir"] + interval: 1s + timeout: 1s + retries: 300 + start_period: 5s + + ir03: + image: ${IR_IMAGE}:${IR_VERSION} + domainname: ${LOCAL_DOMAIN} + hostname: ir03 + container_name: ir03 + restart: "no" + networks: + ir_int: + internet: + ipv4_address: ${IPV4_PREFIX}.63 + stop_signal: SIGKILL + environment: + - NEOFS_IR_WALLET_ADDRESS=NbMyB2qx4EBSsMmjxnSpvJ8FD43tLyfGMq + - NEOFS_IR_CONTROL_GRPC_ENDPOINT=${NEOFS_IR_CONTROL_GRPC_ENDPOINT_3} + volumes: + - neofs_chain_ir03:/neofs_chain/ + - ./alphabet/vedi.json:/wallet.json + - ./../../vendor/hosts:/etc/hosts + - ./../../vendor/neofs-cli:/neofs-cli + - ./cli-cfg.yml:/cli-cfg.yml + - ./cfg/config.yml:/etc/neofs/ir/config.yml + - ${CA_CERTS_TRUSTED_STORE}/s04.${LOCAL_DOMAIN}.tls.crt:/etc/ssl/certs/s04tls.crt + env_file: [ ".env", ".ir.env" ] + command: [ "neofs-ir", "--config", "/etc/neofs/ir/config.yml" ] + healthcheck: + test: ["CMD", "/neofs-cli", "control", "healthcheck", "-c", "/cli-cfg.yml", "--endpoint", "${NEOFS_IR_CONTROL_GRPC_ENDPOINT_3}", "--ir"] + interval: 1s + timeout: 1s + retries: 300 + start_period: 5s + + ir04: + image: ${IR_IMAGE}:${IR_VERSION} + domainname: ${LOCAL_DOMAIN} + hostname: ir04 + container_name: ir04 + restart: "no" + networks: + ir_int: + internet: + ipv4_address: ${IPV4_PREFIX}.64 + stop_signal: SIGKILL + environment: + - NEOFS_IR_WALLET_ADDRESS=NLcjoCwaoKN5Uz5QB7sqcwLfszoJuiCyzZ + - NEOFS_IR_CONTROL_GRPC_ENDPOINT=${NEOFS_IR_CONTROL_GRPC_ENDPOINT_4} + volumes: + - neofs_chain_ir04:/neofs_chain/ + - ./alphabet/glagoli.json:/wallet.json + - ./../../vendor/hosts:/etc/hosts + - ./../../vendor/neofs-cli:/neofs-cli + - ./cli-cfg.yml:/cli-cfg.yml + - ./cfg/config.yml:/etc/neofs/ir/config.yml + - ${CA_CERTS_TRUSTED_STORE}/s04.${LOCAL_DOMAIN}.tls.crt:/etc/ssl/certs/s04tls.crt + env_file: [ ".env", ".ir.env" ] + command: [ "neofs-ir", "--config", "/etc/neofs/ir/config.yml" ] + healthcheck: + test: ["CMD", "/neofs-cli", "control", "healthcheck", "-c", "/cli-cfg.yml", "--endpoint", "${NEOFS_IR_CONTROL_GRPC_ENDPOINT_4}", "--ir"] + interval: 1s + timeout: 1s + retries: 300 + start_period: 5s + + ir-healthcheck: + container_name: ir-healthcheck + image: debian:10 + depends_on: + ir01: + condition: service_healthy + ir02: + condition: service_healthy + ir03: + condition: service_healthy + ir04: + condition: service_healthy + +networks: + ir_int: + internet: + external: true + name: basenet_internet + +volumes: + neofs_chain_ir01: + neofs_chain_ir02: + neofs_chain_ir03: + neofs_chain_ir04: + diff --git a/services/ir7/.env b/services/ir7/.env new file mode 120000 index 0000000..c7360fb --- /dev/null +++ b/services/ir7/.env @@ -0,0 +1 @@ +../../.env \ No newline at end of file diff --git a/services/ir7/alphabet/az.json b/services/ir7/alphabet/az.json new file mode 100644 index 0000000..b834b6e --- /dev/null +++ b/services/ir7/alphabet/az.json @@ -0,0 +1,92 @@ +{ + "version": "1.0", + "accounts": [ + { + "address": "NPa49xr5Fp3wZrvUqbdW1SArhpSGRqKS8d", + "key": "6PYNhVyQuRgZWjM9oeTV9ESrybsJ57aQ6zfydm1jaRn7cvn5A7XgJyMLRG", + "label": "single", + "contract": { + "script": "DCECSmQMjL4+NPDNknlQxk9tDSOXcDl/5kXVK/kg/d1lW/hBVuezJw==", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + }, + { + "address": "NMkB37Z5ey3Lygck273aU2TQHTK6NhL8hC", + "key": "6PYNhVyQuRgZWjM9oeTV9ESrybsJ57aQ6zfydm1jaRn7cvn5A7XgJyMLRG", + "label": "committee", + "contract": { + "script": "FAwhAiwL+eGgyGSQXSuJCVVa5CHbmlL4arJoqE2b5Cpq2dhYDCECSmQMjL4+NPDNknlQxk9tDSOXcDl/5kXVK/kg/d1lW/gMIQJPGex6jjVyLIzdfSH8wgkPJliy/We3sj8ZNtxee1SyFgwhA3l95Upqu20Zwipa+r8w0yCpNIsPKUMV50yztCOxrJ3JDCEDqQ9ufctJz5YD3eeGeBxP29Q/ilfFsj/pPU7MM5Ulmf0MIQPHqjWrZKrZuFo1ZHsfCuxZNEJxpsLtdkT68Zl+4Ji7qwwhAsqQlyldKOKOKuVetiygsaxIstm23LZN25NqZNgMuLeVF0Ge0Nw6", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + }, + { + "name": "parameter1", + "type": "Signature" + }, + { + "name": "parameter2", + "type": "Signature" + }, + { + "name": "parameter3", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + }, + { + "address": "NZxoqHeWp6XfKwHNMqJsdzFyHQMDPnKqAW", + "key": "6PYNhVyQuRgZWjM9oeTV9ESrybsJ57aQ6zfydm1jaRn7cvn5A7XgJyMLRG", + "label": "consensus", + "contract": { + "script": "FQwhAiwL+eGgyGSQXSuJCVVa5CHbmlL4arJoqE2b5Cpq2dhYDCECSmQMjL4+NPDNknlQxk9tDSOXcDl/5kXVK/kg/d1lW/gMIQJPGex6jjVyLIzdfSH8wgkPJliy/We3sj8ZNtxee1SyFgwhA3l95Upqu20Zwipa+r8w0yCpNIsPKUMV50yztCOxrJ3JDCEDqQ9ufctJz5YD3eeGeBxP29Q/ilfFsj/pPU7MM5Ulmf0MIQPHqjWrZKrZuFo1ZHsfCuxZNEJxpsLtdkT68Zl+4Ji7qwwhAsqQlyldKOKOKuVetiygsaxIstm23LZN25NqZNgMuLeVF0Ge0Nw6", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + }, + { + "name": "parameter1", + "type": "Signature" + }, + { + "name": "parameter2", + "type": "Signature" + }, + { + "name": "parameter3", + "type": "Signature" + }, + { + "name": "parameter4", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + } + ], + "scrypt": { + "n": 16384, + "r": 8, + "p": 8 + }, + "extra": { + "Tokens": null + } +} \ No newline at end of file diff --git a/services/ir7/alphabet/buky.json b/services/ir7/alphabet/buky.json new file mode 100644 index 0000000..379d129 --- /dev/null +++ b/services/ir7/alphabet/buky.json @@ -0,0 +1,92 @@ +{ + "version": "1.0", + "accounts": [ + { + "address": "NhGnZcSeSsXG4wU1uKfCLatSFYNf4ufaF9", + "key": "6PYVzjqEm4DMdNq8hPxDfbgAqKuSKzEcGSUCxRSpp8EGzXrkTbvao8ejfn", + "label": "single", + "contract": { + "script": "DCEDx6o1q2Sq2bhaNWR7HwrsWTRCcabC7XZE+vGZfuCYu6tBVuezJw==", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + }, + { + "address": "NMkB37Z5ey3Lygck273aU2TQHTK6NhL8hC", + "key": "6PYVzjqEm4DMdNq8hPxDfbgAqKuSKzEcGSUCxRSpp8EGzXrkTbvao8ejfn", + "label": "committee", + "contract": { + "script": "FAwhAiwL+eGgyGSQXSuJCVVa5CHbmlL4arJoqE2b5Cpq2dhYDCECSmQMjL4+NPDNknlQxk9tDSOXcDl/5kXVK/kg/d1lW/gMIQJPGex6jjVyLIzdfSH8wgkPJliy/We3sj8ZNtxee1SyFgwhA3l95Upqu20Zwipa+r8w0yCpNIsPKUMV50yztCOxrJ3JDCEDqQ9ufctJz5YD3eeGeBxP29Q/ilfFsj/pPU7MM5Ulmf0MIQPHqjWrZKrZuFo1ZHsfCuxZNEJxpsLtdkT68Zl+4Ji7qwwhAsqQlyldKOKOKuVetiygsaxIstm23LZN25NqZNgMuLeVF0Ge0Nw6", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + }, + { + "name": "parameter1", + "type": "Signature" + }, + { + "name": "parameter2", + "type": "Signature" + }, + { + "name": "parameter3", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + }, + { + "address": "NZxoqHeWp6XfKwHNMqJsdzFyHQMDPnKqAW", + "key": "6PYVzjqEm4DMdNq8hPxDfbgAqKuSKzEcGSUCxRSpp8EGzXrkTbvao8ejfn", + "label": "consensus", + "contract": { + "script": "FQwhAiwL+eGgyGSQXSuJCVVa5CHbmlL4arJoqE2b5Cpq2dhYDCECSmQMjL4+NPDNknlQxk9tDSOXcDl/5kXVK/kg/d1lW/gMIQJPGex6jjVyLIzdfSH8wgkPJliy/We3sj8ZNtxee1SyFgwhA3l95Upqu20Zwipa+r8w0yCpNIsPKUMV50yztCOxrJ3JDCEDqQ9ufctJz5YD3eeGeBxP29Q/ilfFsj/pPU7MM5Ulmf0MIQPHqjWrZKrZuFo1ZHsfCuxZNEJxpsLtdkT68Zl+4Ji7qwwhAsqQlyldKOKOKuVetiygsaxIstm23LZN25NqZNgMuLeVF0Ge0Nw6", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + }, + { + "name": "parameter1", + "type": "Signature" + }, + { + "name": "parameter2", + "type": "Signature" + }, + { + "name": "parameter3", + "type": "Signature" + }, + { + "name": "parameter4", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + } + ], + "scrypt": { + "n": 16384, + "r": 8, + "p": 8 + }, + "extra": { + "Tokens": null + } +} \ No newline at end of file diff --git a/services/ir7/alphabet/dobro.json b/services/ir7/alphabet/dobro.json new file mode 100644 index 0000000..5f29ffd --- /dev/null +++ b/services/ir7/alphabet/dobro.json @@ -0,0 +1,92 @@ +{ + "version": "1.0", + "accounts": [ + { + "address": "NfnG66ydpw6jsoyyFuvtb4FFYqkHHnqPdu", + "key": "6PYX5fyvcwrdwFJAmfCwbuisrwDtWYr4WT7huMERNVkVQZ12bstUxJH1x5", + "label": "single", + "contract": { + "script": "DCECLAv54aDIZJBdK4kJVVrkIduaUvhqsmioTZvkKmrZ2FhBVuezJw==", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + }, + { + "address": "NMkB37Z5ey3Lygck273aU2TQHTK6NhL8hC", + "key": "6PYX5fyvcwrdwFJAmfCwbuisrwDtWYr4WT7huMERNVkVQZ12bstUxJH1x5", + "label": "committee", + "contract": { + "script": "FAwhAiwL+eGgyGSQXSuJCVVa5CHbmlL4arJoqE2b5Cpq2dhYDCECSmQMjL4+NPDNknlQxk9tDSOXcDl/5kXVK/kg/d1lW/gMIQJPGex6jjVyLIzdfSH8wgkPJliy/We3sj8ZNtxee1SyFgwhA3l95Upqu20Zwipa+r8w0yCpNIsPKUMV50yztCOxrJ3JDCEDqQ9ufctJz5YD3eeGeBxP29Q/ilfFsj/pPU7MM5Ulmf0MIQPHqjWrZKrZuFo1ZHsfCuxZNEJxpsLtdkT68Zl+4Ji7qwwhAsqQlyldKOKOKuVetiygsaxIstm23LZN25NqZNgMuLeVF0Ge0Nw6", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + }, + { + "name": "parameter1", + "type": "Signature" + }, + { + "name": "parameter2", + "type": "Signature" + }, + { + "name": "parameter3", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + }, + { + "address": "NZxoqHeWp6XfKwHNMqJsdzFyHQMDPnKqAW", + "key": "6PYX5fyvcwrdwFJAmfCwbuisrwDtWYr4WT7huMERNVkVQZ12bstUxJH1x5", + "label": "consensus", + "contract": { + "script": "FQwhAiwL+eGgyGSQXSuJCVVa5CHbmlL4arJoqE2b5Cpq2dhYDCECSmQMjL4+NPDNknlQxk9tDSOXcDl/5kXVK/kg/d1lW/gMIQJPGex6jjVyLIzdfSH8wgkPJliy/We3sj8ZNtxee1SyFgwhA3l95Upqu20Zwipa+r8w0yCpNIsPKUMV50yztCOxrJ3JDCEDqQ9ufctJz5YD3eeGeBxP29Q/ilfFsj/pPU7MM5Ulmf0MIQPHqjWrZKrZuFo1ZHsfCuxZNEJxpsLtdkT68Zl+4Ji7qwwhAsqQlyldKOKOKuVetiygsaxIstm23LZN25NqZNgMuLeVF0Ge0Nw6", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + }, + { + "name": "parameter1", + "type": "Signature" + }, + { + "name": "parameter2", + "type": "Signature" + }, + { + "name": "parameter3", + "type": "Signature" + }, + { + "name": "parameter4", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + } + ], + "scrypt": { + "n": 16384, + "r": 8, + "p": 8 + }, + "extra": { + "Tokens": null + } +} \ No newline at end of file diff --git a/services/ir7/alphabet/glagoli.json b/services/ir7/alphabet/glagoli.json new file mode 100644 index 0000000..b63bd36 --- /dev/null +++ b/services/ir7/alphabet/glagoli.json @@ -0,0 +1,92 @@ +{ + "version": "1.0", + "accounts": [ + { + "address": "NRycJKK6S7wdRQPdcTaMDnsgLVFTrbuhJ6", + "key": "6PYP4foM7Lz1EPEvRoDdMbPpMu4K7BSFKcDBmoDPDpy21DwD5GLR6JnkEr", + "label": "single", + "contract": { + "script": "DCEDeX3lSmq7bRnCKlr6vzDTIKk0iw8pQxXnTLO0I7GsnclBVuezJw==", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + }, + { + "address": "NMkB37Z5ey3Lygck273aU2TQHTK6NhL8hC", + "key": "6PYP4foM7Lz1EPEvRoDdMbPpMu4K7BSFKcDBmoDPDpy21DwD5GLR6JnkEr", + "label": "committee", + "contract": { + "script": "FAwhAiwL+eGgyGSQXSuJCVVa5CHbmlL4arJoqE2b5Cpq2dhYDCECSmQMjL4+NPDNknlQxk9tDSOXcDl/5kXVK/kg/d1lW/gMIQJPGex6jjVyLIzdfSH8wgkPJliy/We3sj8ZNtxee1SyFgwhA3l95Upqu20Zwipa+r8w0yCpNIsPKUMV50yztCOxrJ3JDCEDqQ9ufctJz5YD3eeGeBxP29Q/ilfFsj/pPU7MM5Ulmf0MIQPHqjWrZKrZuFo1ZHsfCuxZNEJxpsLtdkT68Zl+4Ji7qwwhAsqQlyldKOKOKuVetiygsaxIstm23LZN25NqZNgMuLeVF0Ge0Nw6", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + }, + { + "name": "parameter1", + "type": "Signature" + }, + { + "name": "parameter2", + "type": "Signature" + }, + { + "name": "parameter3", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + }, + { + "address": "NZxoqHeWp6XfKwHNMqJsdzFyHQMDPnKqAW", + "key": "6PYP4foM7Lz1EPEvRoDdMbPpMu4K7BSFKcDBmoDPDpy21DwD5GLR6JnkEr", + "label": "consensus", + "contract": { + "script": "FQwhAiwL+eGgyGSQXSuJCVVa5CHbmlL4arJoqE2b5Cpq2dhYDCECSmQMjL4+NPDNknlQxk9tDSOXcDl/5kXVK/kg/d1lW/gMIQJPGex6jjVyLIzdfSH8wgkPJliy/We3sj8ZNtxee1SyFgwhA3l95Upqu20Zwipa+r8w0yCpNIsPKUMV50yztCOxrJ3JDCEDqQ9ufctJz5YD3eeGeBxP29Q/ilfFsj/pPU7MM5Ulmf0MIQPHqjWrZKrZuFo1ZHsfCuxZNEJxpsLtdkT68Zl+4Ji7qwwhAsqQlyldKOKOKuVetiygsaxIstm23LZN25NqZNgMuLeVF0Ge0Nw6", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + }, + { + "name": "parameter1", + "type": "Signature" + }, + { + "name": "parameter2", + "type": "Signature" + }, + { + "name": "parameter3", + "type": "Signature" + }, + { + "name": "parameter4", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + } + ], + "scrypt": { + "n": 16384, + "r": 8, + "p": 8 + }, + "extra": { + "Tokens": null + } +} \ No newline at end of file diff --git a/services/ir7/alphabet/vedi.json b/services/ir7/alphabet/vedi.json new file mode 100644 index 0000000..e107934 --- /dev/null +++ b/services/ir7/alphabet/vedi.json @@ -0,0 +1,92 @@ +{ + "version": "1.0", + "accounts": [ + { + "address": "NLQTN4s6BaDR2Gci6T2KrFQ35sSxQ4PGSq", + "key": "6PYWWXa9Q8JFNEYoQdbezUog3AKs5gKN2tm6EAhdQktKXEev7x6BWSFhgb", + "label": "single", + "contract": { + "script": "DCECypCXKV0o4o4q5V62LKCxrEiy2bbctk3bk2pk2Ay4t5VBVuezJw==", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + }, + { + "address": "NMkB37Z5ey3Lygck273aU2TQHTK6NhL8hC", + "key": "6PYWWXa9Q8JFNEYoQdbezUog3AKs5gKN2tm6EAhdQktKXEev7x6BWSFhgb", + "label": "committee", + "contract": { + "script": "FAwhAiwL+eGgyGSQXSuJCVVa5CHbmlL4arJoqE2b5Cpq2dhYDCECSmQMjL4+NPDNknlQxk9tDSOXcDl/5kXVK/kg/d1lW/gMIQJPGex6jjVyLIzdfSH8wgkPJliy/We3sj8ZNtxee1SyFgwhA3l95Upqu20Zwipa+r8w0yCpNIsPKUMV50yztCOxrJ3JDCEDqQ9ufctJz5YD3eeGeBxP29Q/ilfFsj/pPU7MM5Ulmf0MIQPHqjWrZKrZuFo1ZHsfCuxZNEJxpsLtdkT68Zl+4Ji7qwwhAsqQlyldKOKOKuVetiygsaxIstm23LZN25NqZNgMuLeVF0Ge0Nw6", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + }, + { + "name": "parameter1", + "type": "Signature" + }, + { + "name": "parameter2", + "type": "Signature" + }, + { + "name": "parameter3", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + }, + { + "address": "NZxoqHeWp6XfKwHNMqJsdzFyHQMDPnKqAW", + "key": "6PYWWXa9Q8JFNEYoQdbezUog3AKs5gKN2tm6EAhdQktKXEev7x6BWSFhgb", + "label": "consensus", + "contract": { + "script": "FQwhAiwL+eGgyGSQXSuJCVVa5CHbmlL4arJoqE2b5Cpq2dhYDCECSmQMjL4+NPDNknlQxk9tDSOXcDl/5kXVK/kg/d1lW/gMIQJPGex6jjVyLIzdfSH8wgkPJliy/We3sj8ZNtxee1SyFgwhA3l95Upqu20Zwipa+r8w0yCpNIsPKUMV50yztCOxrJ3JDCEDqQ9ufctJz5YD3eeGeBxP29Q/ilfFsj/pPU7MM5Ulmf0MIQPHqjWrZKrZuFo1ZHsfCuxZNEJxpsLtdkT68Zl+4Ji7qwwhAsqQlyldKOKOKuVetiygsaxIstm23LZN25NqZNgMuLeVF0Ge0Nw6", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + }, + { + "name": "parameter1", + "type": "Signature" + }, + { + "name": "parameter2", + "type": "Signature" + }, + { + "name": "parameter3", + "type": "Signature" + }, + { + "name": "parameter4", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + } + ], + "scrypt": { + "n": 16384, + "r": 8, + "p": 8 + }, + "extra": { + "Tokens": null + } +} \ No newline at end of file diff --git a/services/ir7/alphabet/yest.json b/services/ir7/alphabet/yest.json new file mode 100644 index 0000000..b5b9f10 --- /dev/null +++ b/services/ir7/alphabet/yest.json @@ -0,0 +1,92 @@ +{ + "version": "1.0", + "accounts": [ + { + "address": "NRjbg1cTZoaNtHyLwdciAk8a9YdtgPPaUC", + "key": "6PYSFXGumC9HfffqdwC9K61mLsuXKhru8EKNy6tc4tTprxZuCBKsytpKgT", + "label": "single", + "contract": { + "script": "DCEDqQ9ufctJz5YD3eeGeBxP29Q/ilfFsj/pPU7MM5Ulmf1BVuezJw==", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + }, + { + "address": "NMkB37Z5ey3Lygck273aU2TQHTK6NhL8hC", + "key": "6PYSFXGumC9HfffqdwC9K61mLsuXKhru8EKNy6tc4tTprxZuCBKsytpKgT", + "label": "committee", + "contract": { + "script": "FAwhAiwL+eGgyGSQXSuJCVVa5CHbmlL4arJoqE2b5Cpq2dhYDCECSmQMjL4+NPDNknlQxk9tDSOXcDl/5kXVK/kg/d1lW/gMIQJPGex6jjVyLIzdfSH8wgkPJliy/We3sj8ZNtxee1SyFgwhA3l95Upqu20Zwipa+r8w0yCpNIsPKUMV50yztCOxrJ3JDCEDqQ9ufctJz5YD3eeGeBxP29Q/ilfFsj/pPU7MM5Ulmf0MIQPHqjWrZKrZuFo1ZHsfCuxZNEJxpsLtdkT68Zl+4Ji7qwwhAsqQlyldKOKOKuVetiygsaxIstm23LZN25NqZNgMuLeVF0Ge0Nw6", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + }, + { + "name": "parameter1", + "type": "Signature" + }, + { + "name": "parameter2", + "type": "Signature" + }, + { + "name": "parameter3", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + }, + { + "address": "NZxoqHeWp6XfKwHNMqJsdzFyHQMDPnKqAW", + "key": "6PYSFXGumC9HfffqdwC9K61mLsuXKhru8EKNy6tc4tTprxZuCBKsytpKgT", + "label": "consensus", + "contract": { + "script": "FQwhAiwL+eGgyGSQXSuJCVVa5CHbmlL4arJoqE2b5Cpq2dhYDCECSmQMjL4+NPDNknlQxk9tDSOXcDl/5kXVK/kg/d1lW/gMIQJPGex6jjVyLIzdfSH8wgkPJliy/We3sj8ZNtxee1SyFgwhA3l95Upqu20Zwipa+r8w0yCpNIsPKUMV50yztCOxrJ3JDCEDqQ9ufctJz5YD3eeGeBxP29Q/ilfFsj/pPU7MM5Ulmf0MIQPHqjWrZKrZuFo1ZHsfCuxZNEJxpsLtdkT68Zl+4Ji7qwwhAsqQlyldKOKOKuVetiygsaxIstm23LZN25NqZNgMuLeVF0Ge0Nw6", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + }, + { + "name": "parameter1", + "type": "Signature" + }, + { + "name": "parameter2", + "type": "Signature" + }, + { + "name": "parameter3", + "type": "Signature" + }, + { + "name": "parameter4", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + } + ], + "scrypt": { + "n": 16384, + "r": 8, + "p": 8 + }, + "extra": { + "Tokens": null + } +} \ No newline at end of file diff --git a/services/ir7/alphabet/zhivete.json b/services/ir7/alphabet/zhivete.json new file mode 100644 index 0000000..a461657 --- /dev/null +++ b/services/ir7/alphabet/zhivete.json @@ -0,0 +1,92 @@ +{ + "version": "1.0", + "accounts": [ + { + "address": "NXqebp9T47ZvaMfMgdB1N1W42stk6RpHJp", + "key": "6PYR3VC46tUeg7yF5uLQ1kXR9FmmuYSCzjDjf148qyb95s4bNAL7ziXnpn", + "label": "single", + "contract": { + "script": "DCECTxnseo41ciyM3X0h/MIJDyZYsv1nt7I/GTbcXntUshZBVuezJw==", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + }, + { + "address": "NMkB37Z5ey3Lygck273aU2TQHTK6NhL8hC", + "key": "6PYR3VC46tUeg7yF5uLQ1kXR9FmmuYSCzjDjf148qyb95s4bNAL7ziXnpn", + "label": "committee", + "contract": { + "script": "FAwhAiwL+eGgyGSQXSuJCVVa5CHbmlL4arJoqE2b5Cpq2dhYDCECSmQMjL4+NPDNknlQxk9tDSOXcDl/5kXVK/kg/d1lW/gMIQJPGex6jjVyLIzdfSH8wgkPJliy/We3sj8ZNtxee1SyFgwhA3l95Upqu20Zwipa+r8w0yCpNIsPKUMV50yztCOxrJ3JDCEDqQ9ufctJz5YD3eeGeBxP29Q/ilfFsj/pPU7MM5Ulmf0MIQPHqjWrZKrZuFo1ZHsfCuxZNEJxpsLtdkT68Zl+4Ji7qwwhAsqQlyldKOKOKuVetiygsaxIstm23LZN25NqZNgMuLeVF0Ge0Nw6", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + }, + { + "name": "parameter1", + "type": "Signature" + }, + { + "name": "parameter2", + "type": "Signature" + }, + { + "name": "parameter3", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + }, + { + "address": "NZxoqHeWp6XfKwHNMqJsdzFyHQMDPnKqAW", + "key": "6PYR3VC46tUeg7yF5uLQ1kXR9FmmuYSCzjDjf148qyb95s4bNAL7ziXnpn", + "label": "consensus", + "contract": { + "script": "FQwhAiwL+eGgyGSQXSuJCVVa5CHbmlL4arJoqE2b5Cpq2dhYDCECSmQMjL4+NPDNknlQxk9tDSOXcDl/5kXVK/kg/d1lW/gMIQJPGex6jjVyLIzdfSH8wgkPJliy/We3sj8ZNtxee1SyFgwhA3l95Upqu20Zwipa+r8w0yCpNIsPKUMV50yztCOxrJ3JDCEDqQ9ufctJz5YD3eeGeBxP29Q/ilfFsj/pPU7MM5Ulmf0MIQPHqjWrZKrZuFo1ZHsfCuxZNEJxpsLtdkT68Zl+4Ji7qwwhAsqQlyldKOKOKuVetiygsaxIstm23LZN25NqZNgMuLeVF0Ge0Nw6", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + }, + { + "name": "parameter1", + "type": "Signature" + }, + { + "name": "parameter2", + "type": "Signature" + }, + { + "name": "parameter3", + "type": "Signature" + }, + { + "name": "parameter4", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "isDefault": false + } + ], + "scrypt": { + "n": 16384, + "r": 8, + "p": 8 + }, + "extra": { + "Tokens": null + } +} \ No newline at end of file diff --git a/services/ir7/cfg/config.yml b/services/ir7/cfg/config.yml new file mode 100644 index 0000000..fe246d5 --- /dev/null +++ b/services/ir7/cfg/config.yml @@ -0,0 +1,95 @@ +# Logger section +logger: + level: debug # Minimum enabled logging level + +# Wallet settings +wallet: + path: /wallet.json # Path to NEP-6 NEO wallet file + password: one # Account password in the wallet + +# Profiler section +pprof: + enabled: true + address: :6060 # Endpoint for application pprof profiling; disabled by default + shutdown_timeout: 30s # Timeout for profiling HTTP server graceful shutdown + +# Application metrics section +prometheus: + enabled: true + address: :9090 # Endpoint for application prometheus metrics; disabled by default + shutdown_timeout: 30s # Timeout for metrics HTTP server graceful shutdown + +# Toggling the sidechain-only mode +without_mainnet: false + +# Neo main chain RPC settings +mainnet: + endpoints: # List of websocket RPC endpoints in mainchain; ignore if mainchain is disabled + - ws://main-chain:30333/ws + +# NeoFS chain RPC settings +fschain: + consensus: + magic: 15405 + committee: + - 022c0bf9e1a0c864905d2b8909555ae421db9a52f86ab268a84d9be42a6ad9d858 + - 024a640c8cbe3e34f0cd927950c64f6d0d239770397fe645d52bf920fddd655bf8 + - 024f19ec7a8e35722c8cdd7d21fcc2090f2658b2fd67b7b23f1936dc5e7b54b216 + - 03797de54a6abb6d19c22a5afabf30d320a9348b0f294315e74cb3b423b1ac9dc9 + - 03a90f6e7dcb49cf9603dde786781c4fdbd43f8a57c5b23fe93d4ecc33952599fd + - 03c7aa35ab64aad9b85a35647b1f0aec59344271a6c2ed7644faf1997ee098bbab + - 02ca9097295d28e28e2ae55eb62ca0b1ac48b2d9b6dcb64ddb936a64d80cb8b795 + storage: + type: boltdb + path: /neofs_chain/db.bolt + time_per_block: 1s + max_traceable_blocks: 200000 + seed_nodes: + - ir01 + - ir02 + - ir03 + - ir04 + - ir05 + - ir06 + - ir07 + rpc: + listen: + - ":30333" + p2p: + listen: + - ":20333" + set_roles_in_genesis: true + +fschain_autodeploy: true + +# Network time settings +timers: + stop_estimation: + mul: 1 # Multiplier in x/y relation of when to stop basic income estimation within the epoch + div: 4 # Divider in x/y relation of when to stop basic income estimation within the epoch + collect_basic_income: + mul: 1 # Multiplier in x/y relation of when to start basic income asset collection within the epoch + div: 2 # Divider in x/y relation of when to start basic income asset collecting within the epoch + distribute_basic_income: + mul: 3 # Multiplier in x/y relation of when to start basic income asset distribution within the epoch + div: 4 # Divider in x/y relation of when to start basic income asset distribution within the epoch + +# Storage node GAS emission settings +emit: + storage: + amount: 1000000000 # Fixed8 value of sidechain GAS emitted to all storage nodes once per GAS emission cycle; disabled by default + +# Storage node removal settings +netmap_cleaner: + enabled: true # Enable voting for removing stale storage nodes from network map + threshold: 3 # Number of NeoFS epoch without bootstrap request from storage node before it considered stale + +# Audit settings +audit: + pdp: + max_sleep_interval: 100ms # Maximum timeout between object.RangeHash requests to the storage node + +# Settlement settings +settlement: + basic_income_rate: 100000000 # Optional: override basic income rate value from network config; applied only in debug mode + audit_fee: 100000 # Optional: override audit fee value from network config; applied only in debug mode diff --git a/services/ir7/cli-cfg.yml b/services/ir7/cli-cfg.yml new file mode 100644 index 0000000..1b4dfa2 --- /dev/null +++ b/services/ir7/cli-cfg.yml @@ -0,0 +1,2 @@ +wallet: /wallet.json +password: "one" diff --git a/services/ir7/docker-compose.yml b/services/ir7/docker-compose.yml new file mode 100644 index 0000000..b67549c --- /dev/null +++ b/services/ir7/docker-compose.yml @@ -0,0 +1,255 @@ +--- + +services: + + ir01: + image: ${IR_IMAGE}:${IR_VERSION} + domainname: ${LOCAL_DOMAIN} + hostname: ir01 + container_name: ir01 + restart: "no" + networks: + ir_int: + internet: + ipv4_address: ${IPV4_PREFIX}.61 + stop_signal: SIGKILL + environment: + - NEOFS_IR_WALLET_ADDRESS=NPa49xr5Fp3wZrvUqbdW1SArhpSGRqKS8d + - NEOFS_IR_CONTROL_GRPC_ENDPOINT=${NEOFS_IR_CONTROL_GRPC_ENDPOINT_1} + volumes: + - neofs_chain_ir01:/neofs_chain/ + - ./alphabet/az.json:/wallet.json + - ./../../vendor/hosts:/etc/hosts + - ./../../vendor/neofs-cli:/neofs-cli + - ./cli-cfg.yml:/cli-cfg.yml + - ./cfg/config.yml:/etc/neofs/ir/config.yml + - ${CA_CERTS_TRUSTED_STORE}/s04.${LOCAL_DOMAIN}.tls.crt:/etc/ssl/certs/s04tls.crt + env_file: [ ".env", ".ir.env" ] + command: [ "neofs-ir", "--config", "/etc/neofs/ir/config.yml" ] + healthcheck: + test: ["CMD", "/neofs-cli", "control", "healthcheck", "-c", "/cli-cfg.yml", "--endpoint", "${NEOFS_IR_CONTROL_GRPC_ENDPOINT_1}", "--ir"] + interval: 1s + timeout: 1s + retries: 300 + start_period: 5s + + ir02: + image: ${IR_IMAGE}:${IR_VERSION} + domainname: ${LOCAL_DOMAIN} + hostname: ir02 + container_name: ir02 + restart: "no" + networks: + ir_int: + internet: + ipv4_address: ${IPV4_PREFIX}.62 + stop_signal: SIGKILL + environment: + - NEOFS_IR_WALLET_ADDRESS=NhGnZcSeSsXG4wU1uKfCLatSFYNf4ufaF9 + - NEOFS_IR_CONTROL_GRPC_ENDPOINT=${NEOFS_IR_CONTROL_GRPC_ENDPOINT_2} + volumes: + - neofs_chain_ir02:/neofs_chain/ + - ./alphabet/buky.json:/wallet.json + - ./../../vendor/hosts:/etc/hosts + - ./../../vendor/neofs-cli:/neofs-cli + - ./cli-cfg.yml:/cli-cfg.yml + - ./cfg/config.yml:/etc/neofs/ir/config.yml + - ${CA_CERTS_TRUSTED_STORE}/s04.${LOCAL_DOMAIN}.tls.crt:/etc/ssl/certs/s04tls.crt + env_file: [ ".env", ".ir.env" ] + command: [ "neofs-ir", "--config", "/etc/neofs/ir/config.yml" ] + healthcheck: + test: ["CMD", "/neofs-cli", "control", "healthcheck", "-c", "/cli-cfg.yml", "--endpoint", "${NEOFS_IR_CONTROL_GRPC_ENDPOINT_2}", "--ir"] + interval: 1s + timeout: 1s + retries: 300 + start_period: 5s + + ir03: + image: ${IR_IMAGE}:${IR_VERSION} + domainname: ${LOCAL_DOMAIN} + hostname: ir03 + container_name: ir03 + restart: "no" + networks: + ir_int: + internet: + ipv4_address: ${IPV4_PREFIX}.63 + stop_signal: SIGKILL + environment: + - NEOFS_IR_WALLET_ADDRESS=NLQTN4s6BaDR2Gci6T2KrFQ35sSxQ4PGSq + - NEOFS_IR_CONTROL_GRPC_ENDPOINT=${NEOFS_IR_CONTROL_GRPC_ENDPOINT_3} + volumes: + - neofs_chain_ir03:/neofs_chain/ + - ./alphabet/vedi.json:/wallet.json + - ./../../vendor/hosts:/etc/hosts + - ./../../vendor/neofs-cli:/neofs-cli + - ./cli-cfg.yml:/cli-cfg.yml + - ./cfg/config.yml:/etc/neofs/ir/config.yml + - ${CA_CERTS_TRUSTED_STORE}/s04.${LOCAL_DOMAIN}.tls.crt:/etc/ssl/certs/s04tls.crt + env_file: [ ".env", ".ir.env" ] + command: [ "neofs-ir", "--config", "/etc/neofs/ir/config.yml" ] + healthcheck: + test: ["CMD", "/neofs-cli", "control", "healthcheck", "-c", "/cli-cfg.yml", "--endpoint", "${NEOFS_IR_CONTROL_GRPC_ENDPOINT_3}", "--ir"] + interval: 1s + timeout: 1s + retries: 300 + start_period: 5s + + ir04: + image: ${IR_IMAGE}:${IR_VERSION} + domainname: ${LOCAL_DOMAIN} + hostname: ir04 + container_name: ir04 + restart: "no" + networks: + ir_int: + internet: + ipv4_address: ${IPV4_PREFIX}.64 + stop_signal: SIGKILL + environment: + - NEOFS_IR_WALLET_ADDRESS=NRycJKK6S7wdRQPdcTaMDnsgLVFTrbuhJ6 + - NEOFS_IR_CONTROL_GRPC_ENDPOINT=${NEOFS_IR_CONTROL_GRPC_ENDPOINT_4} + volumes: + - neofs_chain_ir04:/neofs_chain/ + - ./alphabet/glagoli.json:/wallet.json + - ./../../vendor/hosts:/etc/hosts + - ./../../vendor/neofs-cli:/neofs-cli + - ./cli-cfg.yml:/cli-cfg.yml + - ./cfg/config.yml:/etc/neofs/ir/config.yml + - ${CA_CERTS_TRUSTED_STORE}/s04.${LOCAL_DOMAIN}.tls.crt:/etc/ssl/certs/s04tls.crt + env_file: [ ".env", ".ir.env" ] + command: [ "neofs-ir", "--config", "/etc/neofs/ir/config.yml" ] + healthcheck: + test: ["CMD", "/neofs-cli", "control", "healthcheck", "-c", "/cli-cfg.yml", "--endpoint", "${NEOFS_IR_CONTROL_GRPC_ENDPOINT_4}", "--ir"] + interval: 1s + timeout: 1s + retries: 300 + start_period: 5s + + ir05: + image: ${IR_IMAGE}:${IR_VERSION} + domainname: ${LOCAL_DOMAIN} + hostname: ir05 + container_name: ir05 + restart: "no" + networks: + ir_int: + internet: + ipv4_address: ${IPV4_PREFIX}.65 + stop_signal: SIGKILL + environment: + - NEOFS_IR_WALLET_ADDRESS=NfnG66ydpw6jsoyyFuvtb4FFYqkHHnqPdu + - NEOFS_IR_CONTROL_GRPC_ENDPOINT=${NEOFS_IR_CONTROL_GRPC_ENDPOINT_5} + volumes: + - neofs_chain_ir05:/neofs_chain/ + - ./alphabet/dobro.json:/wallet.json + - ./../../vendor/hosts:/etc/hosts + - ./../../vendor/neofs-cli:/neofs-cli + - ./cli-cfg.yml:/cli-cfg.yml + - ./cfg/config.yml:/etc/neofs/ir/config.yml + - ${CA_CERTS_TRUSTED_STORE}/s04.${LOCAL_DOMAIN}.tls.crt:/etc/ssl/certs/s04tls.crt + env_file: [ ".env", ".ir.env" ] + command: [ "neofs-ir", "--config", "/etc/neofs/ir/config.yml" ] + healthcheck: + test: ["CMD", "/neofs-cli", "control", "healthcheck", "-c", "/cli-cfg.yml", "--endpoint", "${NEOFS_IR_CONTROL_GRPC_ENDPOINT_5}", "--ir"] + interval: 1s + timeout: 1s + retries: 300 + start_period: 5s + + ir06: + image: ${IR_IMAGE}:${IR_VERSION} + domainname: ${LOCAL_DOMAIN} + hostname: ir06 + container_name: ir06 + restart: "no" + networks: + ir_int: + internet: + ipv4_address: ${IPV4_PREFIX}.66 + stop_signal: SIGKILL + environment: + - NEOFS_IR_WALLET_ADDRESS=NRjbg1cTZoaNtHyLwdciAk8a9YdtgPPaUC + - NEOFS_IR_CONTROL_GRPC_ENDPOINT=${NEOFS_IR_CONTROL_GRPC_ENDPOINT_6} + volumes: + - neofs_chain_ir06:/neofs_chain/ + - ./alphabet/yest.json:/wallet.json + - ./../../vendor/hosts:/etc/hosts + - ./../../vendor/neofs-cli:/neofs-cli + - ./cli-cfg.yml:/cli-cfg.yml + - ./cfg/config.yml:/etc/neofs/ir/config.yml + - ${CA_CERTS_TRUSTED_STORE}/s04.${LOCAL_DOMAIN}.tls.crt:/etc/ssl/certs/s04tls.crt + env_file: [ ".env", ".ir.env" ] + command: [ "neofs-ir", "--config", "/etc/neofs/ir/config.yml" ] + healthcheck: + test: ["CMD", "/neofs-cli", "control", "healthcheck", "-c", "/cli-cfg.yml", "--endpoint", "${NEOFS_IR_CONTROL_GRPC_ENDPOINT_6}", "--ir"] + interval: 1s + timeout: 1s + retries: 300 + start_period: 5s + + ir07: + image: ${IR_IMAGE}:${IR_VERSION} + domainname: ${LOCAL_DOMAIN} + hostname: ir07 + container_name: ir07 + restart: "no" + networks: + ir_int: + internet: + ipv4_address: ${IPV4_PREFIX}.67 + stop_signal: SIGKILL + environment: + - NEOFS_IR_WALLET_ADDRESS=NXqebp9T47ZvaMfMgdB1N1W42stk6RpHJp + - NEOFS_IR_CONTROL_GRPC_ENDPOINT=${NEOFS_IR_CONTROL_GRPC_ENDPOINT_7} + volumes: + - neofs_chain_ir07:/neofs_chain/ + - ./alphabet/zhivete.json:/wallet.json + - ./../../vendor/hosts:/etc/hosts + - ./../../vendor/neofs-cli:/neofs-cli + - ./cli-cfg.yml:/cli-cfg.yml + - ./cfg/config.yml:/etc/neofs/ir/config.yml + - ${CA_CERTS_TRUSTED_STORE}/s04.${LOCAL_DOMAIN}.tls.crt:/etc/ssl/certs/s04tls.crt + env_file: [ ".env", ".ir.env" ] + command: [ "neofs-ir", "--config", "/etc/neofs/ir/config.yml" ] + healthcheck: + test: ["CMD", "/neofs-cli", "control", "healthcheck", "-c", "/cli-cfg.yml", "--endpoint", "${NEOFS_IR_CONTROL_GRPC_ENDPOINT_7}", "--ir"] + interval: 1s + timeout: 1s + retries: 300 + start_period: 5s + + ir-healthcheck: + container_name: ir-healthcheck + image: debian:10 + depends_on: + ir01: + condition: service_healthy + ir02: + condition: service_healthy + ir03: + condition: service_healthy + ir04: + condition: service_healthy + ir05: + condition: service_healthy + ir06: + condition: service_healthy + ir07: + condition: service_healthy + +networks: + ir_int: + internet: + external: true + name: basenet_internet + +volumes: + neofs_chain_ir01: + neofs_chain_ir02: + neofs_chain_ir03: + neofs_chain_ir04: + neofs_chain_ir05: + neofs_chain_ir06: + neofs_chain_ir07: +