Evgenii Stratonikov
6212b5bf72
Persisting a transaction is done in 2 stages: 1. TestInvoke 2. Sign and send to the network. 3. At some point the tx is persisted. Some time passes between 1 and 3, this could lead to different GAS costs. It is a known issue for container delete: different epoch can have different size in bytes and thus different cost to store. Here we introduce fixed-length encoding for integers, so that the problem can be avoided. Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com> |
||
---|---|---|
.forgejo/workflows | ||
.github | ||
alphabet | ||
audit | ||
balance | ||
common | ||
container | ||
debian | ||
frostfs | ||
frostfsid | ||
netmap | ||
nns | ||
processing | ||
proxy | ||
reputation | ||
tests | ||
.gitignore | ||
CHANGELOG.md | ||
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