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> |
||
---|---|---|
.forgejo | ||
alphabet | ||
balance | ||
common | ||
commonclient | ||
container | ||
debian | ||
docs | ||
frostfs | ||
frostfsid | ||
netmap | ||
nns | ||
policy | ||
processing | ||
proxy | ||
rpcclient | ||
tests | ||
.gitignore | ||
CHANGELOG.md | ||
CODEOWNERS | ||
go.mod | ||
go.sum | ||
LICENSE.md | ||
Makefile | ||
README.md | ||
VERSION |
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:
- neo-go >= 0.99.2
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