FrostFS smart-contract
Find a file
Evgenii Stratonikov b38d42baf3
All checks were successful
DCO action / DCO (pull_request) Successful in 25s
Code generation / Generate wrappers (pull_request) Successful in 52s
Tests / Tests (pull_request) Successful in 1m3s
[#165] nns: Ignore domain expirations
Domain expirations undeniably complicate reasoning about contract behaviour:
1. SOA record expire field has a bit of a different semantics
2. For our coredns backend we would like to receive everything we put, sudden domain expirations can make life harder.
3. This expiration depends on block time, which in turn may differ from the real timestamp.

Close #165.

Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2025-04-05 09:38:38 +03:00
.forgejo [#124] Stop using obsolete .github directory 2024-11-06 15:17:04 +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 [#150] common: Update version 2025-03-11 11:26:49 +03:00
commonclient [#147] Add context to waiter 2025-03-18 10:31:58 +04:00
container [#136] container: Add SetAdmin 2024-12-12 13:19:34 +03:00
debian [#20] subnet: Drop contract 2023-04-17 14:29:30 +03:00
docs [#114] nns: Add docs 2024-09-27 17:51:29 +03:00
frostfs [#138] frostfs: Remove AlphabetUpdate event from the configuration 2024-12-11 14:36:55 +03:00
frostfsid [#154] Add namespace state and ns update method to adjust it 2025-03-28 16:05:49 +03:00
netmap [#50] Replace interface{} with any 2023-11-07 15:18:48 +03:00
nns [#165] nns: Ignore domain expirations 2025-04-05 09:38:38 +03:00
policy [#105] policy: Add ListChainNames method 2024-08-27 12:03:05 +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 [#165] nns: Ignore domain expirations 2025-04-05 09:38:38 +03:00
tests [#165] nns: Ignore domain expirations 2025-04-05 09:38:38 +03:00
.gitignore [#291] Debian packaging 2023-01-16 14:40:21 +03:00
CHANGELOG.md [#154] Add namespace state and ns update method to adjust it 2025-03-28 16:05:49 +03:00
CODEOWNERS [#125] CODEOWNERS: Refine ownership 2024-11-07 09:24:36 +03:00
go.mod [#120] Add waiter to frostfsid client 2024-10-22 12:40:40 +03:00
go.sum [#120] Add waiter to frostfsid client 2024-10-22 12:40:40 +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 [#124] Stop using obsolete .github directory 2024-11-06 15:17:04 +03:00
VERSION [#150] common: Update version 2025-03-11 11:26:49 +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