With contract migration from v0.8.0 to v0.9.0 we need to replace
structures in contract memory. This produces native contract calls
that are not available in scope of `management.Update`. Therefore
we need to apply new scope first.
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
With `NetmapCandidate` storage nodes can monitor
if they are expected to be in the netmap at next
epoch or not. This is also important for monitoring
when some nodes does not bootstrap immediately.
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
There is a number of contracts which return only `true` value.
Also handling `FAULT` on the client is easier then also checking return
value.
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
Container now stored the same way as ExtendedACL: with
signature and session token. This is required for signature
checks when session token presented.
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
Signature check may fail if container has NFT attributes.
So these checks should be done in alphabet nodes and not
inside the contract.
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
Everything can be implemented in `OnNEP17Payment` directly.
In case of 0 amount, exception is raised instead of returning `false`
value.
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
Processing contracts pays for cheque that transfer
assets back to the user, so user should transfer
some fee to this contract.
Withdraw fee defined in NeoFS global configuration.
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
Processing contract deployed in main chain and processes
multi signature invocations of NeoFS contract by
verifying multi signature and paying for it.
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
All ballots and voting methods are gone. Multi signature
checks are used in all contracts.
Default global config values are also removed. Configuration
must be provided by initialization script.
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
Ballots are inefficient to collect invocations of contract methods.
Instead contract can check multi signature collected outside of the
contract, e.g. with notary service.
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
Unified format uses transfer type as the first byte
and extra details next. List of transfer types used in
contracts defined in `transfer.go`. It includes:
- mint,
- burn,
- lock,
- unlock,
- container fee.
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
Even though it is allowed to do so, it can produce
invalid search results if key is less than 10 bytes.
More at https://github.com/nspcc-dev/neo-go/issues/1873
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
`x*2/3` is not equal to `x/3*2` with integers.
The only correct way to calculate threshold is
the first one.
Signed-off-by: Alex Vanin <alexey@nspcc.ru>