commit b9b81e3e7ea01a86ac627d2f9f4cac255c877ee5 Author: Artem Tataurov Date: Mon May 15 14:22:33 2023 +0300 Initial commit Signed-off-by: Artem Tataurov diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ac1556d --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +# IDE +.idea +.vscode + +# tempfiles +.DS_Store +*~ +.cache + +temp +tmp + +# binary +bin/ +release/ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..09ba820 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,64 @@ +ARG FROSTFS_HUB_IMAGE=truecloudlab/frostfs +ARG NEOGO_HUB_IMAGE=nspccdev/neo-go + +ARG FROSTFS_CORE_TAG=0beb7ccf +ARG FROSTFS_GATES_TAG=0.27.0-rc.2 +ARG NEOGO_TAG=0.101.1 + +FROM ${NEOGO_HUB_IMAGE}:${NEOGO_TAG} as neo-go +FROM ${FROSTFS_HUB_IMAGE}-adm:${FROSTFS_CORE_TAG} as frostfs-adm +FROM ${FROSTFS_HUB_IMAGE}-cli:${FROSTFS_CORE_TAG} as frostfs-cli +FROM ${FROSTFS_HUB_IMAGE}-ir:${FROSTFS_CORE_TAG} as frostfs-ir +FROM ${FROSTFS_HUB_IMAGE}-storage:${FROSTFS_CORE_TAG} as frostfs-storage +FROM ${FROSTFS_HUB_IMAGE}-adm:${FROSTFS_CORE_TAG} as frostfs-adm +FROM ${FROSTFS_HUB_IMAGE}-s3-gw:${FROSTFS_GATES_TAG} as frostfs-s3-gw +FROM ${FROSTFS_HUB_IMAGE}-http-gw:${FROSTFS_GATES_TAG} as frostfs-http-gw + +# Executable image +FROM alpine AS frostfs-aio +RUN apk add --no-cache \ + bash \ + ca-certificates \ + jq \ + expect \ + iputils \ + curl + +WORKDIR / + +COPY --from=neo-go /usr/bin/privnet-entrypoint.sh /usr/bin/privnet-entrypoint.sh +COPY --from=neo-go /etc/ssl/certs /etc/ssl/certs +COPY --from=neo-go /usr/bin/neo-go /usr/bin/neo-go +COPY --from=frostfs-adm /bin/frostfs-adm /usr/bin/frostfs-adm +COPY --from=frostfs-cli /bin/frostfs-cli /usr/bin/frostfs-cli +COPY --from=frostfs-ir /bin/frostfs-ir /usr/bin/frostfs-ir +COPY --from=frostfs-storage /bin/frostfs-node /usr/bin/frostfs-node +COPY --from=frostfs-adm /bin/frostfs-adm /usr/bin/frostfs-adm +COPY --from=frostfs-s3-gw /bin/frostfs-s3-gw /usr/bin/frostfs-s3-gw +COPY --from=frostfs-s3-gw /bin/frostfs-s3-authmate /usr/bin/frostfs-s3-authmate +COPY --from=frostfs-http-gw /bin/frostfs-http-gw /usr/bin/frostfs-http-gw + +COPY ./adm/frostfs-adm.yml /config/frostfs-adm.yml +COPY ./ir/cli-cfg.yaml /config/cli-cfg-ir.yaml +COPY ./ir/config.yaml /config/config-ir.yaml +COPY ./morph/protocol.privnet.yml /config/protocol.privnet.yml +COPY ./morph/node-wallet.json /config/alphabet/az.json +COPY ./morph/node-wallet.json /config/node-wallet.json +COPY ./morph/node-config.yaml /config/node-config.yaml +COPY ./http-gw/http-gw-config.yaml /config/http-gw-config.yaml +COPY ./http-gw/http-gw-wallet.json /config/http-gw-wallet.json +COPY ./s3-gw/rules.json /config/bearer-rules.json +COPY ./s3-gw/s3-gw-config.yaml /config/s3-gw-config.yaml +COPY ./s3-gw/s3-gw-wallet.json /config/s3-gw-wallet.json +COPY ./s3-gw/user-wallet.json /config/user-wallet.json +COPY ./sn/cli-cfg.yaml /config/cli-cfg-sn.yaml +COPY ./sn/wallet.json /config/wallet-sn.json +COPY ./sn/config.yaml /config/config-sn.yaml +COPY ./vendor/locode_db /config/locode.db +COPY ./vendor/contracts/ /config/contracts + +COPY ./bin/ /config/bin + +ENV AUTHMATE_WALLET_PASSPHRASE="" + +ENTRYPOINT ["/config/bin/init-aio.sh"] diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..48c2ba7 --- /dev/null +++ b/Makefile @@ -0,0 +1,64 @@ +#!/usr/bin/make -f + +include .env +include help.mk + +# Common variables +REPO=$(notdir $(shell pwd)) +VERSION ?= "$(shell git describe --tags --match "v*" 2>/dev/null || git rev-parse --short HEAD | sed 's/^v//')" + +# Variables for docker +NEOGO_HUB_IMAGE ?= "nspccdev/neo-go" +NEOGO_HUB_TAG ?= "0.101.1" +FROSTFS_HUB_IMAGE ?= "truecloudlab/frostfs" +FROSTFS_CORE_TAG ?= "0beb7ccf" +FROSTFS_GATES_TAG ?= "0.27.0-rc.2" +AIO_IMAGE ?= "truecloudlab/frostfs-aio" + +# Variables for S3 +S3_BEARER_RULES ?= "/config/bearer-rules.json" +S3_GATE_PUBLIC_KEY ?= "0312fe65b101565de74eedf477afb43417ff5f795732506cfddc8e044c5a030d76" + +# Build aio Docker image +image-aio: + @echo "⇒ Build aio docker image " + @docker build \ + --rm \ + --build-arg FROSTFS_HUB_IMAGE=$(FROSTFS_HUB_IMAGE) \ + --build-arg FROSTFS_CORE_TAG=$(FROSTFS_CORE_TAG) \ + --build-arg FROSTFS_GATES_TAG=$(FROSTFS_GATES_TAG) \ + --build-arg NEOGO_HUB_IMAGE=$(NEOGO_HUB_IMAGE) \ + --build-arg NEOGO_TAG=$(NEOGO_HUB_TAG) \ + -f Dockerfile \ + -t $(AIO_IMAGE):$(AIO_VERSION) . + +# Start AIO +up: + @docker-compose up --wait -d + +# Stop AIO +down: + @docker-compose down + +# Clean up +clean: + @docker volume rm frostfs-aio_data + +# Generate S3 credentials +s3cred: + @docker exec aio /usr/bin/frostfs-s3-authmate issue-secret \ + --wallet /config/user-wallet.json \ + --peer localhost:8080 \ + --gate-public-key $(S3_GATE_PUBLIC_KEY) \ + --container-placement-policy "REP 1" \ + --bearer-rules $(S3_BEARER_RULES) + +# Tick new epoch in side chain +tick.epoch: + @docker exec aio /usr/bin/frostfs-adm --config /config/frostfs-adm.yml morph force-new-epoch + +# Show current version +version: + @echo $(VERSION) + @echo "frostfs-node: $(AIO_VERSION)" + @echo "neo-go: $(NEOGO_VERSION)" diff --git a/README.md b/README.md new file mode 100644 index 0000000..bff4e29 --- /dev/null +++ b/README.md @@ -0,0 +1,186 @@ +# FrostFS All-in-One + +Single node deployment helper provides instructions on how to deploy FrostFS +components in the on-premise setup on one physical or virtual server. There will +be just one instance of a service of each type, hence it is suitable for +development purposes only and not recommended for production use. + + +# Server requirements + +- Docker with docker-compose +- `jq` +- `curl` + + +# Quick Start + +Run container: + +``` sh +$ git clone ssh://git@b.yadro.com:7999/obj/frostfs-aio.git /opt/frostfs +$ cd /opt/frostfs +$ make up +``` + +Initial start takes about 40 seconds. Its readiness is based on healthcheck done by `docker-compose`. + +The container can be stopped when needed: + +``` sh +$ make down +``` + +The stored data and the blockchain configuration remain until the container's volume is deleted. +So the next time we start the container with `make up` it will take about 10 seconds to initialize. + +A storage node container uses persistent storage, so, if you've updated `aio` version +or just want to reset the `frostfs-aio`, it's recommended to clear its local volume +before starting the container: + +``` sh +$ make clean +``` + +Also, you may have to make sure the storage node is in the network map. + +``` sh +$ docker exec -ti aio frostfs-cli netmap snapshot -c /config/cli-cfg-sn.yaml --rpc-endpoint 127.0.0.1:8080 +Epoch: 45 +Node 1: 022bb4041c50d607ff871dec7e4cd7778388e0ea6849d84ccbd9aa8f32e16a8131 ONLINE /dns4/localhost/tcp/8080 + Continent: Europe + Country: Germany + CountryCode: DE + Deployed: Private + Location: Falkenstein + Price: 10 + SubDiv: Sachsen + SubDivCode: SN + UN-LOCODE: DE FKS +``` + +If you don't see the output like this, you can wait for the new Epoch to come +(about 1 hour), or force the starting of new epoch. +If the commands fails, make sure you have jq installed. + +``` sh +$ make tick.epoch +Updating FrostFS epoch to 2 +752aa525dfb36b6447f45b41fd3906db9f6a9cdecd2cf36ce6816b1b6ef453192 +``` + +Now everything is ready to serve your requests. + + +# Build images + +Also, you can build the aio image itself: + +``` sh +$ make image-aio +``` + + +# Simple storage + + +## S3 interface + +### Setup S3 + +As soon as the storage node is in the network map (see above) you can generate S3 +credentials: + +``` sh +$ make s3cred +{ + "access_key_id": "EXArWh8x1zeHG3851s1RtoCo7dowxF6rhLGA15nbMffT0AKRSjJ5fmcqf3Ht2VCAkfmPQUVARghRB77xHCA1BoN2p", + "secret_access_key": "d70c1dba83f0f90bb231f06f1ce0e0dfbcfb122f4b4345a3c18d3869c359b79f", + "owner_private_key": "140947599afd9ca89af4b358c3176eb046e554d942a0dc99a8e06f3e43c8f4ad", + "wallet_public_key": "0324e76288fcb900100d01802a14ef977cca45ad073561230446df14b344c858b6", + "container_id": "EXArWh8x1zeHG3851s1RtoCo7dowxF6rhLGA15nbMffT" +} +``` + +Now let's configure an S3 client (AWS CLI will be used as example): + +``` sh +$ aws configure +AWS Access Key ID []: EXArWh8x1zeHG3851s1RtoCo7dowxF6rhLGA15nbMffT0AKRSjJ5fmcqf3Ht2VCAkfmPQUVARghRB77xHCA1BoN2p +AWS Secret Access Key []: d70c1dba83f0f90bb231f06f1ce0e0dfbcfb122f4b4345a3c18d3869c359b79f +Default region name []: us-east-1 +Default output format []: json +``` + +### Create a container + +``` sh +$ aws s3api --endpoint http://localhost:8084 create-bucket --bucket koty --acl public-read-write +``` + +### Put an object + +``` sh +$ aws s3api --endpoint http://localhost:8084 put-object --bucket koty --key kot --body cat.jpg +{ + "ETag": "8677919550a90ff7106584285f25a70ac9e7aa38bdb4ed17d34bbfb366fd71b7" +} +``` + +### List objects + +``` sh +$ aws s3api --endpoint http://localhost:8084 list-objects --bucket koty +{ + "Contents": [ + { + "Key": "kot", + "LastModified": "2023-02-17T15:01:52+00:00", + "ETag": "8677919550a90ff7106584285f25a70ac9e7aa38bdb4ed17d34bbfb366fd71b7", + "Size": 174512, + "Owner": { + "DisplayName": "NWeByJPgNC97F83hTUnSbnZSBKaFvk5HNw", + "ID": "NWeByJPgNC97F83hTUnSbnZSBKaFvk5HNw" + } + } + ] +} +``` + + +## frostfs-cli interface + +### Create container with frostfs-cli + +``` sh +$ frostfs-cli -r localhost:8080 -w /config/user-wallet.json \ + --address NWeByJPgNC97F83hTUnSbnZSBKaFvk5HNw \ + container create \ + --policy "REP 1" --basic-acl public-read-write --await +container ID: GfWw35kHds7gKWmSvW7Zi4U39K7NMLK8EfXBQ5FPJA46 +awaiting... +container has been persisted on sidechain +``` + +### Put an object with frostfs-cli + +``` sh +$ frostfs-cli -r localhost:8080 -w /config/user-wallet.json \ + --address NWeByJPgNC97F83hTUnSbnZSBKaFvk5HNw \ + object put \ + --cid GfWw35kHds7gKWmSvW7Zi4U39K7NMLK8EfXBQ5FPJA46 \ + --file cat.jpg +[cat.jpg] Object successfully stored + OID: HByVC9A34i22BnzW3n83z9vEMxuYZoC7nNu11ZvGeCTe + CID: GfWw35kHds7gKWmSvW7Zi4U39K7NMLK8EfXBQ5FPJA46 +``` + +### Get and object with frostfs-cli + +``` sh +$ frostfs-cli -r localhost:8080 -w /config/user-wallet.json \ + --address NWeByJPgNC97F83hTUnSbnZSBKaFvk5HNw \ + object get \ + --cid GfWw35kHds7gKWmSvW7Zi4U39K7NMLK8EfXBQ5FPJA46 \ + --oid HByVC9A34i22BnzW3n83z9vEMxuYZoC7nNu11ZvGeCTe > new_cat.jpg +``` diff --git a/adm/frostfs-adm.yml b/adm/frostfs-adm.yml new file mode 100644 index 0000000..194d422 --- /dev/null +++ b/adm/frostfs-adm.yml @@ -0,0 +1,16 @@ +rpc-endpoint: http://localhost:30333 +alphabet-wallets: /config/alphabet/ +network: + max_object_size: 67108864 + epoch_duration: 240 + basic_income_rate: 0 + homomorphic_hash_disabled: true + fee: + audit: 10000 + candidate: 10000000000 + container: 0 + container_alias: 0 + withdraw: 100000000 +credentials: + az: "one" + contract: "one" diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..1efaa25 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,28 @@ +--- + +version: "2.4" +services: + aio: + image: ${AIO_IMAGE}:${AIO_VERSION} + container_name: aio + domainname: frostfs + hostname: aio + restart: always + stop_signal: SIGKILL + healthcheck: + test: curl --fail http://localhost:8083 + interval: 2s + retries: 100 + start_period: 2s + timeout: 2s + volumes: + - data:/data + ports: + - "8081:8081" # HTTP Gateway + - "30333:30333" # RPC + - "8080:8080" # FrostFS API RPC + - "8084:8084" # S3 Gateway + - "16513:16513" # Control service + +volumes: + data: diff --git a/help.mk b/help.mk new file mode 100644 index 0000000..2796501 --- /dev/null +++ b/help.mk @@ -0,0 +1,11 @@ +.PHONY: help + +# Show this help prompt +help: + @echo ' Usage:' + @echo '' + @echo ' make ' + @echo '' + @echo ' Targets:' + @echo '' + @awk '/^#/{ comment = substr($$0,3) } comment && /^[a-zA-Z][a-zA-Z0-9.%_/-]+ ?:/{ print " ", $$1, comment }' $(MAKEFILE_LIST) | column -t -s ':' | grep -v 'IGNORE' | sort -u diff --git a/http-gw/http-gw-config.yaml b/http-gw/http-gw-config.yaml new file mode 100644 index 0000000..105236b --- /dev/null +++ b/http-gw/http-gw-config.yaml @@ -0,0 +1,36 @@ +logger: + level: debug + +rebalance_timer: 5m # Interval to check nodes health + +connect_timeout: 60s # Timeout to dial node + +request_timeout: 300s # Timeout to check node health during rebalance + +# The order in which resolvers are used to find an container id by name +resolve_order: + - nns + +server: + - address: 0.0.0.0:8081 + +pprof: + enabled: false # Enable pprof. + address: localhost:8082 +prometheus: + enabled: true # Enable metrics. + address: localhost:8083 + +# Wallet settings +wallet: + path: /config/http-gw-wallet.json # Path to wallet + address: NMUTD9nsxSf3KM2pTHaqwjq67Lv7GdG3oG + passphrase: one # Passphrase to decrypt wallet + +peers: + 0: + address: grpc://localhost:8080 + priority: 1 + weight: 1 + +rpc_endpoint: http://localhost:30333 diff --git a/http-gw/http-gw-wallet.json b/http-gw/http-gw-wallet.json new file mode 100644 index 0000000..b2cc76e --- /dev/null +++ b/http-gw/http-gw-wallet.json @@ -0,0 +1,35 @@ +{ + "version": "1.0", + "accounts": + [ + { + "address": "NMUTD9nsxSf3KM2pTHaqwjq67Lv7GdG3oG", + "key": "6PYNwfes95HfJW1VAtiaR1MRi24UU8NTGbb6t2MSUeehQk8NvYY3oshDym", + "label": "", + "contract": + { + "script": "DCECXLyJu9NhUvi9GzPXiePKZw8jT1zGH5SWzE1TdYwIr79BVuezJw==", + "parameters": + [ + { + "name": "parameter0", + "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/ir/cli-cfg.yaml b/ir/cli-cfg.yaml new file mode 100644 index 0000000..4b87242 --- /dev/null +++ b/ir/cli-cfg.yaml @@ -0,0 +1,2 @@ +wallet: /config/node-wallet.json +password: "one" diff --git a/ir/config.yaml b/ir/config.yaml new file mode 100644 index 0000000..e94c6bb --- /dev/null +++ b/ir/config.yaml @@ -0,0 +1,63 @@ +wallet: + path: /config/node-wallet.json + address: Nhfg3TbpwogLvDGVvAvqyThbsHgoSUKwtn + password: 'one' + +without_mainnet: true + +morph: + endpoint: + client: + - address: ws://localhost:30333/ws + validators: 02b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc2 + +timers: + emit: 50 + stop_estimation: + mul: 1 + div: 4 + collect_basic_income: + mul: 1 + div: 2 + distribute_basic_income: + mul: 3 + div: 4 + +emit: + storage: + amount: 400000000 + +audit: + pdp: + max_sleep_interval: 100ms + +netmap_cleaner: + enabled: true + threshold: 3 + +locode: + db: + path: /config/locode.db + +workers: + netmap: 100 + balance: 100 + frostfs: 100 + container: 100 + alphabet: 100 + reputation: 100 + +logger: + level: info + +pprof: + enabled: false + address: localhost:6661 + +prometheus: + enabled: false + address: localhost:6662 + +control: + grpc: + endpoint: localhost:16512 diff --git a/morph/node-config.yaml b/morph/node-config.yaml new file mode 100644 index 0000000..fe97a41 --- /dev/null +++ b/morph/node-config.yaml @@ -0,0 +1,4 @@ +--- + +Path: "/config/node-wallet.json" +Password: "one" diff --git a/morph/node-wallet.json b/morph/node-wallet.json new file mode 100644 index 0000000..8e88b43 --- /dev/null +++ b/morph/node-wallet.json @@ -0,0 +1,68 @@ +{ + "version": "3.0", + "name":null, + "accounts": [ + { + "address": "Nhfg3TbpwogLvDGVvAvqyThbsHgoSUKwtn", + "key": "6PYM8VdX2BSm7BSXKzV4Fz6S3R9cDLLWNrD9nMjxW352jEv3fsC8N3wNLY", + "label": "single", + "contract": { + "script": "DCECs2Ir9AF73+MXxYrtX0x1PyBrfbiWBG+n13S7xL9/jcJBVuezJw==", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "extra":null, + "isDefault": false + }, + { + "address": "NfgHwwTi3wHAS8aFAN243C5vGbkYDpqLHP", + "key": "6PYM8VdX2BSm7BSXKzV4Fz6S3R9cDLLWNrD9nMjxW352jEv3fsC8N3wNLY", + "label": "consensus", + "contract": { + "script": "EQwhArNiK/QBe9/jF8WK7V9MdT8ga324lgRvp9d0u8S/f43CEUGe0Nw6", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "extra":null, + "isDefault": false + }, + { + "address": "NfgHwwTi3wHAS8aFAN243C5vGbkYDpqLHP", + "key": "6PYM8VdX2BSm7BSXKzV4Fz6S3R9cDLLWNrD9nMjxW352jEv3fsC8N3wNLY", + "label": "committee", + "contract": { + "script": "EQwhArNiK/QBe9/jF8WK7V9MdT8ga324lgRvp9d0u8S/f43CEUGe0Nw6", + "parameters": [ + { + "name": "parameter0", + "type": "Signature" + } + ], + "deployed": false + }, + "lock": false, + "extra":null, + "isDefault": true + } + ], + "scrypt": { + "n": 16384, + "r": 8, + "p": 8 + }, + "extra": { + "Tokens": null + } +} diff --git a/morph/protocol.privnet.yml b/morph/protocol.privnet.yml new file mode 100644 index 0000000..6204984 --- /dev/null +++ b/morph/protocol.privnet.yml @@ -0,0 +1,54 @@ +ProtocolConfiguration: + Magic: 15405 + MaxTraceableBlocks: 200000 + TimePerBlock: 1s + MemPoolSize: 50000 + StandbyCommittee: + - 02b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc2 + ValidatorsCount: 1 + SeedList: + - 127.0.0.1:20333 + VerifyTransactions: true + StateRootInHeader: true + P2PSigExtensions: true + +ApplicationConfiguration: + SkipBlockVerification: false + DBConfiguration: + Type: "boltdb" + BoltDBOptions: + FilePath: "/data/chain/morph.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: 100 + P2PNotary: + Enabled: true + UnlockWallet: + Path: "/config/node-wallet.json" + Password: "one" + Prometheus: + Addresses: + - ":20001" + Enabled: true + Pprof: + Addresses: + - ":20011" + Enabled: false + UnlockWallet: + Path: "/config/node-wallet.json" + Password: "one" diff --git a/s3-gw/rules.json b/s3-gw/rules.json new file mode 100644 index 0000000..42d22ba --- /dev/null +++ b/s3-gw/rules.json @@ -0,0 +1,81 @@ +{ + "records": [ + { + "operation": "PUT", + "action": "ALLOW", + "filters": [], + "targets": [ + { + "role": "OTHERS", + "keys": [] + } + ] + }, + { + "operation": "GET", + "action": "ALLOW", + "filters": [], + "targets": [ + { + "role": "OTHERS", + "keys": [] + } + ] + }, + { + "operation": "DELETE", + "action": "ALLOW", + "filters": [], + "targets": [ + { + "role": "OTHERS", + "keys": [] + } + ] + }, + { + "operation": "SEARCH", + "action": "ALLOW", + "filters": [], + "targets": [ + { + "role": "OTHERS", + "keys": [] + } + ] + }, + { + "operation": "GETRANGE", + "action": "ALLOW", + "filters": [], + "targets": [ + { + "role": "OTHERS", + "keys": [] + } + ] + }, + { + "operation": "GETRANGEHASH", + "action": "ALLOW", + "filters": [], + "targets": [ + { + "role": "OTHERS", + "keys": [] + } + ] + }, + { + "operation": "HEAD", + "action": "ALLOW", + "filters": [], + "targets": [ + { + "role": "OTHERS", + "keys": [] + } + ] + } + ] +} diff --git a/s3-gw/s3-gw-config.yaml b/s3-gw/s3-gw-config.yaml new file mode 100644 index 0000000..522e1b4 --- /dev/null +++ b/s3-gw/s3-gw-config.yaml @@ -0,0 +1,67 @@ +wallet: + path: /config/s3-gw-wallet.json + passphrase: "" + address: NN1RQ3qwnvDMVNsQw4WPkKi7BrjxdVTDZp + +peers: + 0: + address: localhost:8080 + priority: 1 + weight: 1 + +server: + - address: 0.0.0.0:8084 + +logger: + level: debug + +tree: + service: localhost:8080 + +rpc_endpoint: http://localhost:30333 +resolve_order: + - nns + +pprof: + enabled: false + address: localhost:8085 + +prometheus: + enabled: false + address: localhost:8086 + +connect_timeout: 10s +stream_timeout: 10s +healthcheck_timeout: 15s +rebalance_interval: 60s +pool_error_threshold: 100 +max_clients_count: 100 +max_clients_deadline: 30s + +cache: + objects: + lifetime: 300s + size: 150 + list: + lifetime: 1m + size: 100 + names: + lifetime: 1m + size: 1000 + buckets: + lifetime: 1m + size: 500 + system: + lifetime: 2m + size: 1000 + accessbox: + lifetime: 5m + size: 10 + accesscontrol: + lifetime: 1m + size: 100000 + +placement_policy: + default: REP 1 + + diff --git a/s3-gw/s3-gw-wallet.json b/s3-gw/s3-gw-wallet.json new file mode 100644 index 0000000..54f449e --- /dev/null +++ b/s3-gw/s3-gw-wallet.json @@ -0,0 +1 @@ +{"version":"1.0","accounts":[{"address":"NN1RQ3qwnvDMVNsQw4WPkKi7BrjxdVTDZp","key":"6PYPdaCberkBnPGL1vbt7rkekPKCFv3GvnPnCA67UMkKhTozamkhZj3j2X","label":"S3 Gateway","contract":{"script":"DCEDEv5lsQFWXedO7fR3r7Q0F/9feVcyUGz93I4ETFoDDXZBVuezJw==","parameters":[{"name":"parameter0","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/s3-gw/user-wallet.json b/s3-gw/user-wallet.json new file mode 100644 index 0000000..d76c616 --- /dev/null +++ b/s3-gw/user-wallet.json @@ -0,0 +1 @@ +{"version":"1.0","accounts":[{"address":"NWeByJPgNC97F83hTUnSbnZSBKaFvk5HNw","key":"6PYVCcS2yp89JpcfR61FGhdhhzyYjSErNedmpZErnybNTxUZMRdhzJLrek","label":"","contract":{"script":"DCEDJOdiiPy5ABANAYAqFO+XfMpFrQc1YSMERt8Us0TIWLZBVuezJw==","parameters":[{"name":"parameter0","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/sn/cli-cfg.yaml b/sn/cli-cfg.yaml new file mode 100644 index 0000000..2a1beb6 --- /dev/null +++ b/sn/cli-cfg.yaml @@ -0,0 +1,2 @@ +wallet: /config/wallet-sn.json +password: "" diff --git a/sn/config.yaml b/sn/config.yaml new file mode 100644 index 0000000..43fcd3e --- /dev/null +++ b/sn/config.yaml @@ -0,0 +1,70 @@ +morph: + rpc_endpoint: + - address: ws://localhost:30333/ws + dial_timeout: 20s + +control: + grpc: + endpoint: localhost:16513 + +node: + wallet: + path: /config/wallet-sn.json + password: "" + addresses: + - grpc://0.0.0.0:8080 + attribute_0: UN-LOCODE:DE FKS + attribute_1: Price:10 + attribute_2: Deployed:Private + +grpc: + num: 1 + 0: + endpoint: 0.0.0.0:8080 + tls: + enables: false + +logger: + level: debug + +prometheus: + enabled: false + address: localhost:6664 + +pprof: + enabled: false + address: localhost:6663 + +storage: + shard_num: 1 + shard: + 0: + writecache: + enabled: false + metabase: + path: /data/metabase.db + perm: 0770 + blobstor: + - type: blobovnicza + path: /data/blob/blobovnicza + perm: 0660 + opened_cache_capacity: 32 + depth: 1 + width: 1 + size: 4g + - type: fstree + path: /data/blob + gc: + remover_batch_size: 100 + remover_sleep_interval: 5m + pilorama: + path: /data/storage/pilorama + +tree: + enabled: true + +object: + put: + pool_size_remote: 100 + pool_size_local: 100 + diff --git a/sn/wallet.json b/sn/wallet.json new file mode 100644 index 0000000..6680c09 --- /dev/null +++ b/sn/wallet.json @@ -0,0 +1,32 @@ +{ + "version":"3.0", + "accounts":[ + { + "address":"NejLbQpojKJWec4NQRMBhzsrmCyhXfGJJe", + "key":"6PYSS8ccmBcttfcw2YJh8VcNSoeQbQLuJLQ7HoKeYF5roRmGs9LUvmKcWz", + "label":"", + "contract":{ + "script":"DCECK7QEHFDWB/+HHex+TNd3g4jg6mhJ2EzL2aqPMuFqgTFBVuezJw==", + "parameters":[ + { + "name":"parameter0", + "type":"Signature" + } + ], + "deployed":false + }, + "lock":false, + "extra":null, + "isDefault":true + } + ], + "name":null, + "scrypt":{ + "n":16384, + "r":8, + "p":8 + }, + "extra":{ + "Tokens":null + } +} diff --git a/vendor/contracts/alphabet/alphabet_contract.nef b/vendor/contracts/alphabet/alphabet_contract.nef new file mode 100755 index 0000000..c96b097 Binary files /dev/null and b/vendor/contracts/alphabet/alphabet_contract.nef differ diff --git a/vendor/contracts/alphabet/config.json b/vendor/contracts/alphabet/config.json new file mode 100755 index 0000000..b623839 --- /dev/null +++ b/vendor/contracts/alphabet/config.json @@ -0,0 +1 @@ +{"name":"Alphabet","abi":{"methods":[{"name":"_initialize","offset":0,"parameters":[],"returntype":"Void","safe":false},{"name":"_deploy","offset":35,"parameters":[{"name":"data","type":"Any"},{"name":"isUpdate","type":"Boolean"}],"returntype":"Void","safe":false},{"name":"emit","offset":1191,"parameters":[],"returntype":"Void","safe":false},{"name":"gas","offset":1010,"parameters":[],"returntype":"Integer","safe":true},{"name":"name","offset":1813,"parameters":[],"returntype":"String","safe":true},{"name":"neo","offset":1024,"parameters":[],"returntype":"Integer","safe":true},{"name":"onNEP17Payment","offset":741,"parameters":[{"name":"from","type":"Hash160"},{"name":"amount","type":"Integer"},{"name":"data","type":"Any"}],"returntype":"Void","safe":false},{"name":"update","offset":878,"parameters":[{"name":"script","type":"ByteArray"},{"name":"manifest","type":"ByteArray"},{"name":"data","type":"Any"}],"returntype":"Void","safe":false},{"name":"version","offset":1829,"parameters":[],"returntype":"Integer","safe":true},{"name":"vote","offset":1650,"parameters":[{"name":"epoch","type":"Integer"},{"name":"candidates","type":"Array"}],"returntype":"Void","safe":false}],"events":[]},"features":{},"groups":[],"permissions":[{"contract":"*","methods":["update","transfer","vote"]}],"supportedstandards":[],"trusts":[],"extra":null} \ No newline at end of file diff --git a/vendor/contracts/audit/audit_contract.nef b/vendor/contracts/audit/audit_contract.nef new file mode 100755 index 0000000..0a6f411 Binary files /dev/null and b/vendor/contracts/audit/audit_contract.nef differ diff --git a/vendor/contracts/audit/config.json b/vendor/contracts/audit/config.json new file mode 100755 index 0000000..c82cada --- /dev/null +++ b/vendor/contracts/audit/config.json @@ -0,0 +1 @@ +{"name":"Audit","abi":{"methods":[{"name":"_deploy","offset":0,"parameters":[{"name":"data","type":"Any"},{"name":"isUpdate","type":"Boolean"}],"returntype":"Void","safe":false},{"name":"get","offset":886,"parameters":[{"name":"id","type":"ByteArray"}],"returntype":"ByteArray","safe":true},{"name":"list","offset":911,"parameters":[],"returntype":"Array","safe":true},{"name":"listByCID","offset":977,"parameters":[{"name":"epoch","type":"Integer"},{"name":"cid","type":"ByteArray"}],"returntype":"Array","safe":true},{"name":"listByEpoch","offset":945,"parameters":[{"name":"epoch","type":"Integer"}],"returntype":"Array","safe":true},{"name":"listByNode","offset":1020,"parameters":[{"name":"epoch","type":"Integer"},{"name":"cid","type":"ByteArray"},{"name":"key","type":"PublicKey"}],"returntype":"Array","safe":true},{"name":"put","offset":735,"parameters":[{"name":"rawAuditResult","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"update","offset":606,"parameters":[{"name":"script","type":"ByteArray"},{"name":"manifest","type":"ByteArray"},{"name":"data","type":"Any"}],"returntype":"Void","safe":false},{"name":"version","offset":1160,"parameters":[],"returntype":"Integer","safe":true}],"events":[]},"features":{},"groups":[],"permissions":[{"contract":"*","methods":["update"]}],"supportedstandards":[],"trusts":[],"extra":null} \ No newline at end of file diff --git a/vendor/contracts/balance/balance_contract.nef b/vendor/contracts/balance/balance_contract.nef new file mode 100755 index 0000000..bba62e4 Binary files /dev/null and b/vendor/contracts/balance/balance_contract.nef differ diff --git a/vendor/contracts/balance/config.json b/vendor/contracts/balance/config.json new file mode 100755 index 0000000..a6533d5 --- /dev/null +++ b/vendor/contracts/balance/config.json @@ -0,0 +1 @@ +{"name":"Balance","abi":{"methods":[{"name":"_initialize","offset":0,"parameters":[],"returntype":"Void","safe":false},{"name":"_deploy","offset":93,"parameters":[{"name":"data","type":"Any"},{"name":"isUpdate","type":"Boolean"}],"returntype":"Void","safe":false},{"name":"balanceOf","offset":988,"parameters":[{"name":"account","type":"Hash160"}],"returntype":"Integer","safe":true},{"name":"burn","offset":1522,"parameters":[{"name":"from","type":"Hash160"},{"name":"amount","type":"Integer"},{"name":"txDetails","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"decimals","offset":966,"parameters":[],"returntype":"Integer","safe":true},{"name":"lock","offset":1131,"parameters":[{"name":"txDetails","type":"ByteArray"},{"name":"from","type":"Hash160"},{"name":"to","type":"Hash160"},{"name":"amount","type":"Integer"},{"name":"until","type":"Integer"}],"returntype":"Void","safe":false},{"name":"mint","offset":1387,"parameters":[{"name":"to","type":"Hash160"},{"name":"amount","type":"Integer"},{"name":"txDetails","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"newEpoch","offset":1263,"parameters":[{"name":"epochNum","type":"Integer"}],"returntype":"Void","safe":false},{"name":"symbol","offset":962,"parameters":[],"returntype":"String","safe":true},{"name":"totalSupply","offset":970,"parameters":[],"returntype":"Integer","safe":true},{"name":"transfer","offset":1007,"parameters":[{"name":"from","type":"Hash160"},{"name":"to","type":"Hash160"},{"name":"amount","type":"Integer"},{"name":"data","type":"Any"}],"returntype":"Boolean","safe":false},{"name":"transferX","offset":1033,"parameters":[{"name":"from","type":"Hash160"},{"name":"to","type":"Hash160"},{"name":"amount","type":"Integer"},{"name":"details","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"update","offset":831,"parameters":[{"name":"script","type":"ByteArray"},{"name":"manifest","type":"ByteArray"},{"name":"data","type":"Any"}],"returntype":"Void","safe":false},{"name":"version","offset":1687,"parameters":[],"returntype":"Integer","safe":true}],"events":[{"name":"Lock","parameters":[{"name":"txID","type":"ByteArray"},{"name":"from","type":"Hash160"},{"name":"to","type":"Hash160"},{"name":"amount","type":"Integer"},{"name":"until","type":"Integer"}]},{"name":"Transfer","parameters":[{"name":"from","type":"Hash160"},{"name":"to","type":"Hash160"},{"name":"amount","type":"Integer"}]},{"name":"TransferX","parameters":[{"name":"from","type":"Hash160"},{"name":"to","type":"Hash160"},{"name":"amount","type":"Integer"},{"name":"details","type":"ByteArray"}]},{"name":"Mint","parameters":[{"name":"to","type":"Hash160"},{"name":"amount","type":"Integer"}]},{"name":"Burn","parameters":[{"name":"from","type":"Hash160"},{"name":"amount","type":"Integer"}]}]},"features":{},"groups":[],"permissions":[{"contract":"*","methods":["update"]}],"supportedstandards":["NEP-17"],"trusts":[],"extra":null} \ No newline at end of file diff --git a/vendor/contracts/container/config.json b/vendor/contracts/container/config.json new file mode 100755 index 0000000..e5078a8 --- /dev/null +++ b/vendor/contracts/container/config.json @@ -0,0 +1 @@ +{"name":"Container","abi":{"methods":[{"name":"_initialize","offset":0,"parameters":[],"returntype":"Void","safe":false},{"name":"_deploy","offset":83,"parameters":[{"name":"data","type":"Any"},{"name":"isUpdate","type":"Boolean"}],"returntype":"Void","safe":false},{"name":"containersOf","offset":2867,"parameters":[{"name":"owner","type":"ByteArray"}],"returntype":"InteropInterface","safe":true},{"name":"count","offset":2822,"parameters":[],"returntype":"Integer","safe":true},{"name":"delete","offset":2422,"parameters":[{"name":"containerID","type":"ByteArray"},{"name":"signature","type":"Signature"},{"name":"token","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"eACL","offset":3167,"parameters":[{"name":"containerID","type":"ByteArray"}],"returntype":"Array","safe":true},{"name":"get","offset":2709,"parameters":[{"name":"containerID","type":"ByteArray"}],"returntype":"Array","safe":true},{"name":"getContainerSize","offset":3429,"parameters":[{"name":"id","type":"ByteArray"}],"returntype":"Array","safe":true},{"name":"iterateContainerSizes","offset":3630,"parameters":[{"name":"epoch","type":"Integer"}],"returntype":"InteropInterface","safe":true},{"name":"list","offset":2921,"parameters":[{"name":"owner","type":"ByteArray"}],"returntype":"Array","safe":true},{"name":"listContainerSizes","offset":3469,"parameters":[{"name":"epoch","type":"Integer"}],"returntype":"Array","safe":true},{"name":"newEpoch","offset":3682,"parameters":[{"name":"epochNum","type":"Integer"}],"returntype":"Void","safe":false},{"name":"onNEP11Payment","offset":1046,"parameters":[{"name":"a","type":"Hash160"},{"name":"b","type":"Integer"},{"name":"c","type":"ByteArray"},{"name":"d","type":"Any"}],"returntype":"Void","safe":false},{"name":"owner","offset":2771,"parameters":[{"name":"containerID","type":"ByteArray"}],"returntype":"ByteArray","safe":true},{"name":"put","offset":1331,"parameters":[{"name":"container","type":"ByteArray"},{"name":"signature","type":"Signature"},{"name":"publicKey","type":"PublicKey"},{"name":"token","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"putContainerSize","offset":3225,"parameters":[{"name":"epoch","type":"Integer"},{"name":"cid","type":"ByteArray"},{"name":"usedSize","type":"Integer"},{"name":"pubKey","type":"PublicKey"}],"returntype":"Void","safe":false},{"name":"putNamed","offset":1347,"parameters":[{"name":"container","type":"ByteArray"},{"name":"signature","type":"Signature"},{"name":"publicKey","type":"PublicKey"},{"name":"token","type":"ByteArray"},{"name":"name","type":"String"},{"name":"zone","type":"String"}],"returntype":"Void","safe":false},{"name":"setEACL","offset":3017,"parameters":[{"name":"eACL","type":"ByteArray"},{"name":"signature","type":"Signature"},{"name":"publicKey","type":"PublicKey"},{"name":"token","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"startContainerEstimation","offset":3705,"parameters":[{"name":"epoch","type":"Integer"}],"returntype":"Void","safe":false},{"name":"stopContainerEstimation","offset":3779,"parameters":[{"name":"epoch","type":"Integer"}],"returntype":"Void","safe":false},{"name":"update","offset":1198,"parameters":[{"name":"script","type":"ByteArray"},{"name":"manifest","type":"ByteArray"},{"name":"data","type":"Any"}],"returntype":"Void","safe":false},{"name":"version","offset":3852,"parameters":[],"returntype":"Integer","safe":true}],"events":[{"name":"containerPut","parameters":[{"name":"container","type":"ByteArray"},{"name":"signature","type":"Signature"},{"name":"publicKey","type":"PublicKey"},{"name":"token","type":"ByteArray"}]},{"name":"PutSuccess","parameters":[{"name":"containerID","type":"Hash256"},{"name":"publicKey","type":"PublicKey"}]},{"name":"containerDelete","parameters":[{"name":"containerID","type":"ByteArray"},{"name":"signature","type":"Signature"},{"name":"token","type":"ByteArray"}]},{"name":"DeleteSuccess","parameters":[{"name":"containerID","type":"ByteArray"}]},{"name":"setEACL","parameters":[{"name":"eACL","type":"ByteArray"},{"name":"signature","type":"Signature"},{"name":"publicKey","type":"PublicKey"},{"name":"token","type":"ByteArray"}]},{"name":"SetEACLSuccess","parameters":[{"name":"containerID","type":"ByteArray"},{"name":"publicKey","type":"PublicKey"}]},{"name":"StartEstimation","parameters":[{"name":"epoch","type":"Integer"}]},{"name":"StopEstimation","parameters":[{"name":"epoch","type":"Integer"}]}]},"features":{},"groups":[],"permissions":[{"contract":"*","methods":["update","addKey","transferX","register","addRecord","deleteRecords"]}],"supportedstandards":[],"trusts":[],"extra":null} \ No newline at end of file diff --git a/vendor/contracts/container/container_contract.nef b/vendor/contracts/container/container_contract.nef new file mode 100755 index 0000000..d3f1349 Binary files /dev/null and b/vendor/contracts/container/container_contract.nef differ diff --git a/vendor/contracts/frostfs/config.json b/vendor/contracts/frostfs/config.json new file mode 100755 index 0000000..8e52029 --- /dev/null +++ b/vendor/contracts/frostfs/config.json @@ -0,0 +1 @@ +{"name":"FrostFS","abi":{"methods":[{"name":"_initialize","offset":0,"parameters":[],"returntype":"Void","safe":false},{"name":"_deploy","offset":74,"parameters":[{"name":"data","type":"Any"},{"name":"isUpdate","type":"Boolean"}],"returntype":"Void","safe":false},{"name":"alphabetAddress","offset":1028,"parameters":[],"returntype":"Hash160","safe":true},{"name":"bind","offset":2294,"parameters":[{"name":"user","type":"ByteArray"},{"name":"keys","type":"Array"}],"returntype":"Void","safe":false},{"name":"cheque","offset":2172,"parameters":[{"name":"id","type":"ByteArray"},{"name":"user","type":"Hash160"},{"name":"amount","type":"Integer"},{"name":"lockAcc","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"config","offset":2574,"parameters":[{"name":"key","type":"ByteArray"}],"returntype":"Any","safe":true},{"name":"innerRingCandidateAdd","offset":1295,"parameters":[{"name":"key","type":"PublicKey"}],"returntype":"Void","safe":false},{"name":"innerRingCandidateRemove","offset":1121,"parameters":[{"name":"key","type":"PublicKey"}],"returntype":"Void","safe":false},{"name":"innerRingCandidates","offset":1049,"parameters":[],"returntype":"Array","safe":true},{"name":"listConfig","offset":2678,"parameters":[],"returntype":"Array","safe":true},{"name":"onNEP17Payment","offset":1545,"parameters":[{"name":"from","type":"Hash160"},{"name":"amount","type":"Integer"},{"name":"data","type":"Any"}],"returntype":"Void","safe":false},{"name":"setConfig","offset":2592,"parameters":[{"name":"id","type":"ByteArray"},{"name":"key","type":"ByteArray"},{"name":"val","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"unbind","offset":2433,"parameters":[{"name":"user","type":"ByteArray"},{"name":"keys","type":"Array"}],"returntype":"Void","safe":false},{"name":"update","offset":906,"parameters":[{"name":"script","type":"ByteArray"},{"name":"manifest","type":"ByteArray"},{"name":"data","type":"Any"}],"returntype":"Void","safe":false},{"name":"version","offset":2760,"parameters":[],"returntype":"Integer","safe":true},{"name":"withdraw","offset":1878,"parameters":[{"name":"user","type":"Hash160"},{"name":"amount","type":"Integer"}],"returntype":"Void","safe":false}],"events":[{"name":"Deposit","parameters":[{"name":"from","type":"Hash160"},{"name":"amount","type":"Integer"},{"name":"receiver","type":"Hash160"},{"name":"txHash","type":"Hash256"}]},{"name":"Withdraw","parameters":[{"name":"user","type":"Hash160"},{"name":"amount","type":"Integer"},{"name":"txHash","type":"Hash256"}]},{"name":"Cheque","parameters":[{"name":"id","type":"ByteArray"},{"name":"user","type":"Hash160"},{"name":"amount","type":"Integer"},{"name":"lockAccount","type":"ByteArray"}]},{"name":"Bind","parameters":[{"name":"user","type":"ByteArray"},{"name":"keys","type":"Array"}]},{"name":"Unbind","parameters":[{"name":"user","type":"ByteArray"},{"name":"keys","type":"Array"}]},{"name":"AlphabetUpdate","parameters":[{"name":"id","type":"ByteArray"},{"name":"alphabet","type":"Array"}]},{"name":"SetConfig","parameters":[{"name":"id","type":"ByteArray"},{"name":"key","type":"ByteArray"},{"name":"value","type":"ByteArray"}]}]},"features":{},"groups":[],"permissions":[{"contract":"*","methods":["update","transfer"]}],"supportedstandards":[],"trusts":[],"extra":null} \ No newline at end of file diff --git a/vendor/contracts/frostfs/frostfs_contract.nef b/vendor/contracts/frostfs/frostfs_contract.nef new file mode 100755 index 0000000..0567ec7 Binary files /dev/null and b/vendor/contracts/frostfs/frostfs_contract.nef differ diff --git a/vendor/contracts/frostfsid/config.json b/vendor/contracts/frostfsid/config.json new file mode 100755 index 0000000..42bc472 --- /dev/null +++ b/vendor/contracts/frostfsid/config.json @@ -0,0 +1 @@ +{"name":"Identity","abi":{"methods":[{"name":"_initialize","offset":0,"parameters":[],"returntype":"Void","safe":false},{"name":"_deploy","offset":35,"parameters":[{"name":"data","type":"Any"},{"name":"isUpdate","type":"Boolean"}],"returntype":"Void","safe":false},{"name":"addKey","offset":776,"parameters":[{"name":"owner","type":"ByteArray"},{"name":"keys","type":"Array"}],"returntype":"Void","safe":false},{"name":"key","offset":1181,"parameters":[{"name":"owner","type":"ByteArray"}],"returntype":"Array","safe":true},{"name":"removeKey","offset":974,"parameters":[{"name":"owner","type":"ByteArray"},{"name":"keys","type":"Array"}],"returntype":"Void","safe":false},{"name":"update","offset":643,"parameters":[{"name":"script","type":"ByteArray"},{"name":"manifest","type":"ByteArray"},{"name":"data","type":"Any"}],"returntype":"Void","safe":false},{"name":"version","offset":1252,"parameters":[],"returntype":"Integer","safe":true}],"events":[]},"features":{},"groups":[],"permissions":[{"contract":"*","methods":["update"]}],"supportedstandards":[],"trusts":[],"extra":null} \ No newline at end of file diff --git a/vendor/contracts/frostfsid/frostfsid_contract.nef b/vendor/contracts/frostfsid/frostfsid_contract.nef new file mode 100755 index 0000000..66f4464 Binary files /dev/null and b/vendor/contracts/frostfsid/frostfsid_contract.nef differ diff --git a/vendor/contracts/netmap/config.json b/vendor/contracts/netmap/config.json new file mode 100755 index 0000000..234011b --- /dev/null +++ b/vendor/contracts/netmap/config.json @@ -0,0 +1 @@ +{"name":"Netmap","abi":{"methods":[{"name":"_initialize","offset":0,"parameters":[],"returntype":"Void","safe":false},{"name":"_deploy","offset":93,"parameters":[{"name":"data","type":"Any"},{"name":"isUpdate","type":"Boolean"}],"returntype":"Void","safe":false},{"name":"addPeer","offset":1111,"parameters":[{"name":"nodeInfo","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"addPeerIR","offset":1071,"parameters":[{"name":"nodeInfo","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"config","offset":2507,"parameters":[{"name":"key","type":"ByteArray"}],"returntype":"Any","safe":true},{"name":"epoch","offset":1692,"parameters":[],"returntype":"Integer","safe":true},{"name":"lastEpochBlock","offset":1731,"parameters":[],"returntype":"Integer","safe":false},{"name":"listConfig","offset":2586,"parameters":[],"returntype":"Array","safe":true},{"name":"netmap","offset":1770,"parameters":[],"returntype":"Array","safe":true},{"name":"netmapCandidates","offset":1852,"parameters":[],"returntype":"Array","safe":true},{"name":"newEpoch","offset":1408,"parameters":[{"name":"epochNum","type":"Integer"}],"returntype":"Void","safe":false},{"name":"setConfig","offset":2525,"parameters":[{"name":"id","type":"ByteArray"},{"name":"key","type":"ByteArray"},{"name":"val","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"snapshot","offset":1868,"parameters":[{"name":"diff","type":"Integer"}],"returntype":"Array","safe":true},{"name":"snapshotByEpoch","offset":2459,"parameters":[{"name":"epoch","type":"Integer"}],"returntype":"Array","safe":true},{"name":"update","offset":941,"parameters":[{"name":"script","type":"ByteArray"},{"name":"manifest","type":"ByteArray"},{"name":"data","type":"Any"}],"returntype":"Void","safe":false},{"name":"updateSnapshotCount","offset":2022,"parameters":[{"name":"count","type":"Integer"}],"returntype":"Void","safe":false},{"name":"updateState","offset":1317,"parameters":[{"name":"state","type":"Integer"},{"name":"publicKey","type":"PublicKey"}],"returntype":"Void","safe":false},{"name":"updateStateIR","offset":1384,"parameters":[{"name":"state","type":"Integer"},{"name":"publicKey","type":"PublicKey"}],"returntype":"Void","safe":false},{"name":"version","offset":2668,"parameters":[],"returntype":"Integer","safe":true}],"events":[{"name":"AddPeer","parameters":[{"name":"nodeInfo","type":"ByteArray"}]},{"name":"AddPeerSuccess","parameters":[{"name":"publicKey","type":"PublicKey"}]},{"name":"UpdateState","parameters":[{"name":"state","type":"Integer"},{"name":"publicKey","type":"PublicKey"}]},{"name":"UpdateStateSuccess","parameters":[{"name":"publicKey","type":"PublicKey"},{"name":"state","type":"Integer"}]},{"name":"NewEpoch","parameters":[{"name":"epoch","type":"Integer"}]}]},"features":{},"groups":[],"permissions":[{"contract":"*","methods":["update","newEpoch"]}],"supportedstandards":[],"trusts":[],"extra":null} \ No newline at end of file diff --git a/vendor/contracts/netmap/netmap_contract.nef b/vendor/contracts/netmap/netmap_contract.nef new file mode 100755 index 0000000..ba89fcd Binary files /dev/null and b/vendor/contracts/netmap/netmap_contract.nef differ diff --git a/vendor/contracts/nns/config.json b/vendor/contracts/nns/config.json new file mode 100755 index 0000000..c96edcb --- /dev/null +++ b/vendor/contracts/nns/config.json @@ -0,0 +1 @@ +{"name":"NameService","abi":{"methods":[{"name":"_initialize","offset":0,"parameters":[],"returntype":"Void","safe":false},{"name":"_deploy","offset":32,"parameters":[{"name":"data","type":"Any"},{"name":"isUpdate","type":"Boolean"}],"returntype":"Void","safe":false},{"name":"addRecord","offset":2591,"parameters":[{"name":"name","type":"String"},{"name":"typ","type":"Integer"},{"name":"data","type":"String"}],"returntype":"Void","safe":false},{"name":"balanceOf","offset":568,"parameters":[{"name":"owner","type":"Hash160"}],"returntype":"Integer","safe":true},{"name":"decimals","offset":479,"parameters":[],"returntype":"Integer","safe":true},{"name":"deleteRecords","offset":2726,"parameters":[{"name":"name","type":"String"},{"name":"typ","type":"Integer"}],"returntype":"Void","safe":false},{"name":"getAllRecords","offset":2882,"parameters":[{"name":"name","type":"String"}],"returntype":"InteropInterface","safe":false},{"name":"getPrice","offset":976,"parameters":[],"returntype":"Integer","safe":true},{"name":"getRecords","offset":2683,"parameters":[{"name":"name","type":"String"},{"name":"typ","type":"Integer"}],"returntype":"Array","safe":true},{"name":"isAvailable","offset":1010,"parameters":[{"name":"name","type":"String"}],"returntype":"Boolean","safe":true},{"name":"ownerOf","offset":501,"parameters":[{"name":"tokenID","type":"ByteArray"}],"returntype":"Hash160","safe":true},{"name":"properties","offset":523,"parameters":[{"name":"tokenID","type":"ByteArray"}],"returntype":"Map","safe":true},{"name":"register","offset":1281,"parameters":[{"name":"name","type":"String"},{"name":"owner","type":"Hash160"},{"name":"email","type":"String"},{"name":"refresh","type":"Integer"},{"name":"retry","type":"Integer"},{"name":"expire","type":"Integer"},{"name":"ttl","type":"Integer"}],"returntype":"Boolean","safe":false},{"name":"renew","offset":2048,"parameters":[{"name":"name","type":"String"}],"returntype":"Integer","safe":false},{"name":"resolve","offset":2860,"parameters":[{"name":"name","type":"String"},{"name":"typ","type":"Integer"}],"returntype":"Array","safe":true},{"name":"roots","offset":870,"parameters":[],"returntype":"InteropInterface","safe":true},{"name":"setAdmin","offset":2259,"parameters":[{"name":"name","type":"String"},{"name":"admin","type":"Hash160"}],"returntype":"Void","safe":false},{"name":"setPrice","offset":898,"parameters":[{"name":"price","type":"Integer"}],"returntype":"Void","safe":false},{"name":"setRecord","offset":2393,"parameters":[{"name":"name","type":"String"},{"name":"typ","type":"Integer"},{"name":"id","type":"Integer"},{"name":"data","type":"String"}],"returntype":"Void","safe":false},{"name":"symbol","offset":473,"parameters":[],"returntype":"String","safe":true},{"name":"tokens","offset":644,"parameters":[],"returntype":"InteropInterface","safe":true},{"name":"tokensOf","offset":673,"parameters":[{"name":"owner","type":"Hash160"}],"returntype":"InteropInterface","safe":true},{"name":"totalSupply","offset":485,"parameters":[],"returntype":"Integer","safe":true},{"name":"transfer","offset":735,"parameters":[{"name":"to","type":"Hash160"},{"name":"tokenID","type":"ByteArray"},{"name":"data","type":"Any"}],"returntype":"Boolean","safe":false},{"name":"update","offset":386,"parameters":[{"name":"nef","type":"ByteArray"},{"name":"manifest","type":"String"},{"name":"data","type":"Any"}],"returntype":"Void","safe":false},{"name":"updateSOA","offset":2169,"parameters":[{"name":"name","type":"String"},{"name":"email","type":"String"},{"name":"refresh","type":"Integer"},{"name":"retry","type":"Integer"},{"name":"expire","type":"Integer"},{"name":"ttl","type":"Integer"}],"returntype":"Void","safe":false},{"name":"version","offset":481,"parameters":[],"returntype":"Integer","safe":true}],"events":[{"name":"Transfer","parameters":[{"name":"from","type":"Hash160"},{"name":"to","type":"Hash160"},{"name":"amount","type":"Integer"},{"name":"tokenId","type":"ByteArray"}]}]},"features":{},"groups":[],"permissions":[{"contract":"0xfffdc93764dbaddd97c48f252a53ea4643faa3fd","methods":["update"]},{"contract":"*","methods":["onNEP11Payment"]}],"supportedstandards":["NEP-11"],"trusts":[],"extra":null} \ No newline at end of file diff --git a/vendor/contracts/nns/nns_contract.nef b/vendor/contracts/nns/nns_contract.nef new file mode 100755 index 0000000..7efdc92 Binary files /dev/null and b/vendor/contracts/nns/nns_contract.nef differ diff --git a/vendor/contracts/processing/config.json b/vendor/contracts/processing/config.json new file mode 100755 index 0000000..333bf2f --- /dev/null +++ b/vendor/contracts/processing/config.json @@ -0,0 +1 @@ +{"name":"Multi Signature Processing","abi":{"methods":[{"name":"_deploy","offset":0,"parameters":[{"name":"data","type":"Any"},{"name":"isUpdate","type":"Boolean"}],"returntype":"Void","safe":false},{"name":"onNEP17Payment","offset":417,"parameters":[{"name":"from","type":"Hash160"},{"name":"amount","type":"Integer"},{"name":"data","type":"Any"}],"returntype":"Void","safe":false},{"name":"update","offset":509,"parameters":[{"name":"script","type":"ByteArray"},{"name":"manifest","type":"ByteArray"},{"name":"data","type":"Any"}],"returntype":"Void","safe":false},{"name":"verify","offset":680,"parameters":[],"returntype":"Boolean","safe":true},{"name":"version","offset":767,"parameters":[],"returntype":"Integer","safe":true}],"events":[]},"features":{},"groups":[],"permissions":[{"contract":"*","methods":["update"]}],"supportedstandards":[],"trusts":[],"extra":null} \ No newline at end of file diff --git a/vendor/contracts/processing/processing_contract.nef b/vendor/contracts/processing/processing_contract.nef new file mode 100755 index 0000000..6f9c695 Binary files /dev/null and b/vendor/contracts/processing/processing_contract.nef differ diff --git a/vendor/contracts/proxy/config.json b/vendor/contracts/proxy/config.json new file mode 100755 index 0000000..ede4fdb --- /dev/null +++ b/vendor/contracts/proxy/config.json @@ -0,0 +1 @@ +{"name":"Notary Proxy","abi":{"methods":[{"name":"_deploy","offset":0,"parameters":[{"name":"data","type":"Any"},{"name":"isUpdate","type":"Boolean"}],"returntype":"Void","safe":false},{"name":"onNEP17Payment","offset":337,"parameters":[{"name":"from","type":"Hash160"},{"name":"amount","type":"Integer"},{"name":"data","type":"Any"}],"returntype":"Void","safe":false},{"name":"update","offset":424,"parameters":[{"name":"script","type":"ByteArray"},{"name":"manifest","type":"ByteArray"},{"name":"data","type":"Any"}],"returntype":"Void","safe":false},{"name":"verify","offset":553,"parameters":[],"returntype":"Boolean","safe":true},{"name":"version","offset":602,"parameters":[],"returntype":"Integer","safe":true}],"events":[]},"features":{},"groups":[],"permissions":[{"contract":"*","methods":["update"]}],"supportedstandards":[],"trusts":[],"extra":null} \ No newline at end of file diff --git a/vendor/contracts/proxy/proxy_contract.nef b/vendor/contracts/proxy/proxy_contract.nef new file mode 100755 index 0000000..a8bfc23 Binary files /dev/null and b/vendor/contracts/proxy/proxy_contract.nef differ diff --git a/vendor/contracts/reputation/config.json b/vendor/contracts/reputation/config.json new file mode 100755 index 0000000..7b5aec7 --- /dev/null +++ b/vendor/contracts/reputation/config.json @@ -0,0 +1 @@ +{"name":"Reputation","abi":{"methods":[{"name":"_deploy","offset":0,"parameters":[{"name":"data","type":"Any"},{"name":"isUpdate","type":"Boolean"}],"returntype":"Void","safe":false},{"name":"get","offset":706,"parameters":[{"name":"epoch","type":"Integer"},{"name":"peerID","type":"ByteArray"}],"returntype":"Array","safe":true},{"name":"getByID","offset":722,"parameters":[{"name":"id","type":"ByteArray"}],"returntype":"Array","safe":true},{"name":"listByEpoch","offset":812,"parameters":[{"name":"epoch","type":"Integer"}],"returntype":"Array","safe":true},{"name":"put","offset":563,"parameters":[{"name":"epoch","type":"Integer"},{"name":"peerID","type":"ByteArray"},{"name":"value","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"update","offset":432,"parameters":[{"name":"script","type":"ByteArray"},{"name":"manifest","type":"ByteArray"},{"name":"data","type":"Any"}],"returntype":"Void","safe":false},{"name":"version","offset":890,"parameters":[],"returntype":"Integer","safe":false}],"events":[{"name":"reputationPut","parameters":[{"name":"epoch","type":"Integer"},{"name":"peerID","type":"ByteArray"},{"name":"value","type":"ByteArray"}]}]},"features":{},"groups":[],"permissions":[{"contract":"*","methods":["update"]}],"supportedstandards":[],"trusts":[],"extra":null} \ No newline at end of file diff --git a/vendor/contracts/reputation/reputation_contract.nef b/vendor/contracts/reputation/reputation_contract.nef new file mode 100755 index 0000000..0bbcb93 Binary files /dev/null and b/vendor/contracts/reputation/reputation_contract.nef differ diff --git a/vendor/contracts/subnet/config.json b/vendor/contracts/subnet/config.json new file mode 100755 index 0000000..5968c10 --- /dev/null +++ b/vendor/contracts/subnet/config.json @@ -0,0 +1 @@ +{"name":"Subnet","abi":{"methods":[{"name":"_initialize","offset":0,"parameters":[],"returntype":"Void","safe":false},{"name":"_deploy","offset":64,"parameters":[{"name":"data","type":"Any"},{"name":"isUpdate","type":"Boolean"}],"returntype":"Void","safe":false},{"name":"addClientAdmin","offset":2071,"parameters":[{"name":"subnetID","type":"ByteArray"},{"name":"groupID","type":"ByteArray"},{"name":"adminPublicKey","type":"PublicKey"}],"returntype":"Void","safe":false},{"name":"addNode","offset":1467,"parameters":[{"name":"subnetID","type":"ByteArray"},{"name":"node","type":"PublicKey"}],"returntype":"Void","safe":false},{"name":"addNodeAdmin","offset":1102,"parameters":[{"name":"subnetID","type":"ByteArray"},{"name":"adminKey","type":"PublicKey"}],"returntype":"Void","safe":false},{"name":"addUser","offset":2522,"parameters":[{"name":"subnetID","type":"ByteArray"},{"name":"groupID","type":"ByteArray"},{"name":"userID","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"delete","offset":913,"parameters":[{"name":"id","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"get","offset":803,"parameters":[{"name":"id","type":"ByteArray"}],"returntype":"ByteArray","safe":false},{"name":"nodeAllowed","offset":1911,"parameters":[{"name":"subnetID","type":"ByteArray"},{"name":"node","type":"PublicKey"}],"returntype":"Boolean","safe":false},{"name":"put","offset":637,"parameters":[{"name":"id","type":"ByteArray"},{"name":"ownerKey","type":"PublicKey"},{"name":"info","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"removeClientAdmin","offset":2296,"parameters":[{"name":"subnetID","type":"ByteArray"},{"name":"groupID","type":"ByteArray"},{"name":"adminPublicKey","type":"PublicKey"}],"returntype":"Void","safe":false},{"name":"removeNode","offset":1672,"parameters":[{"name":"subnetID","type":"ByteArray"},{"name":"node","type":"PublicKey"}],"returntype":"Void","safe":false},{"name":"removeNodeAdmin","offset":1284,"parameters":[{"name":"subnetID","type":"ByteArray"},{"name":"adminKey","type":"PublicKey"}],"returntype":"Void","safe":false},{"name":"removeUser","offset":2766,"parameters":[{"name":"subnetID","type":"ByteArray"},{"name":"groupID","type":"ByteArray"},{"name":"userID","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"update","offset":507,"parameters":[{"name":"script","type":"ByteArray"},{"name":"manifest","type":"ByteArray"},{"name":"data","type":"Any"}],"returntype":"Void","safe":false},{"name":"userAllowed","offset":3011,"parameters":[{"name":"subnetID","type":"ByteArray"},{"name":"user","type":"ByteArray"}],"returntype":"Boolean","safe":false},{"name":"version","offset":3187,"parameters":[],"returntype":"Integer","safe":true}],"events":[{"name":"Put","parameters":[{"name":"id","type":"ByteArray"},{"name":"ownerKey","type":"PublicKey"},{"name":"info","type":"ByteArray"}]},{"name":"Delete","parameters":[{"name":"id","type":"ByteArray"}]},{"name":"RemoveNode","parameters":[{"name":"subnetID","type":"ByteArray"},{"name":"node","type":"PublicKey"}]}]},"features":{},"groups":[],"permissions":[{"contract":"*","methods":["update"]}],"supportedstandards":[],"trusts":[],"extra":null} \ No newline at end of file diff --git a/vendor/contracts/subnet/subnet_contract.nef b/vendor/contracts/subnet/subnet_contract.nef new file mode 100755 index 0000000..3667593 Binary files /dev/null and b/vendor/contracts/subnet/subnet_contract.nef differ diff --git a/vendor/locode_db b/vendor/locode_db new file mode 100644 index 0000000..a5d6508 Binary files /dev/null and b/vendor/locode_db differ