When using contracts as a dependency, out-of-range `int` can cause
problems on 32-bit architectures. Contract byte-code hasn't changed.
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
Only leave `IRNode` in neofs contract because it is public.
The newly added conversion in `AlphabetList` shouldn't be a problem
because this is a read method.
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
Contract owner entity does exist anymore. Contract migration
now managed by side chain committee which are Alphabet nodes of
the Inner Ring.
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
Neo Legacy used migration mechanism to update contracts.
N3 provides update method in native management contract.
Therefore, it makes sense to rename `Migrate` to `Update`.
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
As soon as migration required changes in memory, we
need bigger scope. Otherwise in requires two step migration
which is unpleasant and annoying.
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>
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>
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>
`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>
Delete initializing of R/W context in `init()`
and start using readonly storage context in
methods where it is possible.
Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
Change []byte type to interop.*aliasName*
types in contracts where it is suitable to
improve the readability of the contracts.
Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
This check was useful when there was a single
entry point in contract. But right now there is
no point in this.
Signed-off-by: Alex Vanin <alexey@nspcc.ru>