FrostFS smart-contract
Find a file
Evgenii Stratonikov b43d5b06a4
All checks were successful
DCO action / DCO (pull_request) Successful in 40s
Tests / Tests (pull_request) Successful in 1m7s
[#112] Release v0.19.4
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2024-09-06 16:34:24 +03:00
.forgejo/workflows [#112] go.mod: Update go to 1.22 2024-09-06 16:34:24 +03:00
.github [#32] Add forgejo workflows 2023-06-27 16:47:46 +03:00
alphabet [#50] Replace interface{} with any 2023-11-07 15:18:48 +03:00
balance [#50] Replace interface{} with any 2023-11-07 15:18:48 +03:00
common [#112] Release v0.19.4 2024-09-06 16:34:24 +03:00
commonclient [#64] commonclient: Use partial unwrap in ReadIteratorItems() 2023-12-29 14:06:46 +00:00
container [#83] container: Remove outdated migration code 2024-03-14 10:03:23 +03:00
debian [#20] subnet: Drop contract 2023-04-17 14:29:30 +03:00
frostfs [#17] frostfs: Remove method alphabetAddress 2024-03-05 12:59:03 +03:00
frostfsid [#95] frostfsid: Remove outdated data on update 2024-06-04 11:40:32 +03:00
netmap [#50] Replace interface{} with any 2023-11-07 15:18:48 +03:00
nns [#73] nns: Allow 2-byte domain names 2024-01-25 16:21:58 +03:00
policy [#84] policy: Fix IteratorChainsByPrefix method 2024-04-04 15:43:19 +03:00
processing [#17] frostfs: Remove method alphabetAddress 2024-03-05 12:59:03 +03:00
proxy [#74] proxy: Allow to own NNS domains 2024-01-29 14:03:06 +03:00
rpcclient [#84] rpcclient: Regenerate interface for Policy 2024-04-04 10:26:28 +03:00
tests [#84] policy: Fix IteratorChainsByPrefix method 2024-04-04 15:43:19 +03:00
.gitignore [#291] Debian packaging 2023-01-16 14:40:21 +03:00
CHANGELOG.md Release v0.18.0 2023-09-14 13:33:12 +03:00
go.mod [#112] go.mod: Update go to 1.22 2024-09-06 16:34:24 +03:00
go.sum [#111] go.mod: Update neo-go to v0.106.3 2024-09-06 15:24:21 +03:00
LICENSE.md init commit 2020-04-01 19:27:29 +03:00
Makefile [#55] Makefile: Add config.yml to NEF dependencies 2023-11-29 09:22:01 +03:00
README.md [#20] subnet: Drop contract 2023-04-17 14:29:30 +03:00
VERSION [#112] Release v0.19.4 2024-09-06 16:34:24 +03:00

FrostFS

FrostFS related smart contracts.


Overview

FrostFS-Contract contains all FrostFS related contracts written for neo-go compiler. These contracts are deployed both in the mainchain and the sidechain.

Mainchain contracts:

  • frostfs
  • processing

Sidechain contracts:

  • alphabet
  • audit
  • balance
  • container
  • frostfsid
  • netmap
  • nns
  • proxy
  • reputation

Getting started

Prerequisites

To compile smart contracts you need:

Compilation

To build and compile smart contract, run make all command. Compiled contracts *_contract.nef and manifest config.json files are placed in the corresponding directories.

$ make all
/home/user/go/bin/cli contract compile -i alphabet -c alphabet/config.yml -m alphabet/config.json -o alphabet/alphabet_contract.nef
/home/user/go/bin/cli contract compile -i audit -c audit/config.yml -m audit/config.json -o audit/audit_contract.nef
/home/user/go/bin/cli contract compile -i balance -c balance/config.yml -m balance/config.json -o balance/balance_contract.nef
/home/user/go/bin/cli contract compile -i container -c container/config.yml -m container/config.json -o container/container_contract.nef
/home/user/go/bin/cli contract compile -i frostfsid -c frostfsid/config.yml -m frostfsid/config.json -o frostfsid/frostfsid_contract.nef
/home/user/go/bin/cli contract compile -i netmap -c netmap/config.yml -m netmap/config.json -o netmap/netmap_contract.nef
/home/user/go/bin/cli contract compile -i proxy -c proxy/config.yml -m proxy/config.json -o proxy/proxy_contract.nef
/home/user/go/bin/cli contract compile -i reputation -c reputation/config.yml -m reputation/config.json -o reputation/reputation_contract.nef
/home/user/go/bin/cli contract compile -i nns -c nns/config.yml -m nns/config.json -o nns/nns_contract.nef
/home/user/go/bin/cli contract compile -i frostfs -c frostfs/config.yml -m frostfs/config.json -o frostfs/frostfs_contract.nef
/home/user/go/bin/cli contract compile -i processing -c processing/config.yml -m processing/config.json -o processing/processing_contract.nef

You can specify path to the neo-go binary with NEOGO environment variable:

$ NEOGO=/home/user/neo-go/bin/neo-go make all

Remove compiled files with make clean or make mr_proper command.

Building Debian package

To build Debian package containing compiled contracts, run make debpackage command. Package will install compiled contracts *_contract.nef and manifest config.json with corresponding directories to /var/lib/neofs/contract for further usage. It will download and build neo-go, if needed.

To clean package-related files, use make debclean.

Testing

Smartcontract tests reside in tests/ directory. To execute test suite after applying changes, simply run make test.

$ make test
ok      git.frostfs.info/TrueCloudLab/frostfs-contract/tests       0.462s

License

This project is licensed under the GPLv3 License - see the LICENSE.md file for details