55b403e0ee
[ #5 ] morph/client: Use generic LRU cache
...
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2022-12-31 23:04:06 +03:00
Pavel Karpy
923f84722a
Move to frostfs-node
...
Signed-off-by: Pavel Karpy <p.karpy@yadro.com>
2022-12-28 15:04:29 +03:00
Evgenii Stratonikov
6af52c46d8
[ #2091 ] morph/client: Do not use deprecated methods
...
Signed-off-by: Evgenii Stratonikov <evgeniy@morphbits.ru>
2022-11-30 16:45:13 +03:00
Pavel Karpy
17f7d0a2ee
[ #1615 ] morph: Switch to a more prioritized RPC node
...
Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
2022-10-25 17:38:48 +03:00
Evgenii Stratonikov
d772e35aba
[ #1910 ] .golangci.yml: Add godot
linker
...
Signed-off-by: Evgenii Stratonikov <evgeniy@morphbits.ru>
2022-10-18 15:08:26 +03:00
Pavel Karpy
6d277a57aa
[ #1711 ] morph: Simplify code using neo-go actors
...
Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
2022-09-02 10:41:18 +03:00
Pavel Karpy
4582b8f0d4
[ #1711 ] morph: Drop deprecated neo-go calls
...
Does not include notary actor and does not drop the deprecated
`AddNetworkFee`.
Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
2022-09-02 10:41:18 +03:00
Evgenii Stratonikov
07465849a4
[ #1637 ] go.mod: Update neo-go to v0.99.1
...
Signed-off-by: Evgenii Stratonikov <evgeniy@morphbits.ru>
2022-07-28 20:11:45 +03:00
Evgenii Stratonikov
6cc180391e
[ #1606 ] go.mod: Update neo-go
...
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
2022-07-18 12:41:06 +03:00
Evgenii Stratonikov
0ccea802e9
[ #1560 ] morph/client: Perform RPC switch and restore in one step
...
Otherwise we could switch infinitely if subscription restore has failed.
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
2022-07-04 09:29:01 +03:00
Evgenii Stratonikov
91ed0d20ff
[ #1417 ] go.mod: Update neo-go to v0.99.0
...
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
2022-06-08 10:27:49 +03:00
Evgenii Stratonikov
df48ddcb3d
Revert "[ #1141 ] morph/client: Allow to use more integer types as arguments"
...
This reverts commit 9349f422fd
.
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
2022-05-20 16:45:15 +03:00
Evgenii Stratonikov
f65898a354
[ #1141 ] morph/client: Use boolean type directly
...
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
2022-05-16 15:09:35 +03:00
Evgenii Stratonikov
1e8391d216
[ #1141 ] morph/client: Allow to use more integer types as arguments
...
Also, use `*big.Int` as integer value, see nspcc-dev/neo-go#2413 .
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
2022-05-16 15:09:35 +03:00
Elizaveta Chichindaeva
cc7a723d77
[ #1320 ] English Check
...
Signed-off-by: Elizaveta Chichindaeva <elizaveta@nspcc.ru>
2022-05-11 10:40:02 +03:00
Pavel Karpy
b6e5aac604
[ #1170 ] pkg/morph: Delete unused function
...
Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
2022-04-08 11:52:18 +03:00
Pavel Karpy
4ed5b1ceef
[ #1170 ] pkg/morph: Invalidate cache on RPC switch
...
Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
2022-04-08 11:52:18 +03:00
Pavel Karpy
2427593da6
[ #1170 ] pkg/morph: Add inactive mode callback
...
Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
2022-04-08 11:52:18 +03:00
Pavel Karpy
424cc6d495
[ #1170 ] go.mod: Update neo-go
...
github.com/nspcc-dev/neo-go v0.98.0 => v0.98.2
Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
2022-04-08 11:52:18 +03:00
Pavel Karpy
402f488bec
[ #1170 ] pkg/morph: Change HTTP for WS client
...
Updated client now supports subscription to chain notifications and RPC
switch between provided RPC endpoints.
Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
2022-04-08 11:52:18 +03:00
Evgenii Stratonikov
e8bf18c0b4
[ #1208 ] innerring: Fix race condition between handling new epoch and block
...
Before resetting the timer, ensure the block tick is processed.
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
2022-04-07 11:52:24 +03:00
Evgenii Stratonikov
9bbb136e4a
[ #1213 ] morph/client: Protect cached values with a mutex
...
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
2022-04-01 17:07:12 +03:00
Evgenii Stratonikov
e10b8f53d6
[ #1151 ] morph/client: Cache notary transaction heights
...
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
2022-03-01 10:35:54 +03:00
Evgenii Stratonikov
9e2f7ac371
[ #749 ] morph/client: allow to fetch contract group key
...
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
2022-02-11 13:26:27 +03:00
Evgenii Stratonikov
4838d3bb80
[ #749 ] morph/client: cache NNS contract hash
...
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
2022-02-11 13:26:27 +03:00
Evgenii Stratonikov
050a4bb2b0
[ #1115 ] *: link TODOs to corresponding issues
...
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
2022-02-11 12:58:59 +03:00
Evgenii Stratonikov
476528361e
[ #1023 ] *: fix linter errors
...
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
2022-01-31 13:01:58 +03:00
Alex Vanin
93dce149ba
[ #976 ] morph/client: Add script verifier
...
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
2021-11-18 09:57:16 +03:00
Leonard Lyubich
cb22e2bf29
[ #833 ] morph/client: Implement MsPerBlock method
...
Add `Client.MsPerBlock` method which reads MillisecondsPerBlock network
parameter.
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-10-15 13:56:19 +03:00
Pavel Karpy
5e74830c38
[ #837 ] morph: Add WithSingleClient
client constructor option
...
`WithSingleClient` allows Morph client
creation with existing raw neo-go client.
Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
2021-09-24 19:14:28 +03:00
Leonard Lyubich
81722c373b
[ #746 ] morph/client: Don't cache GAS contract address on NeoFS-side
...
Caching is performed inside `GetNativeContractHash` method of neo-go client,
so the additional cache level is redundant.
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-09-02 11:04:38 +03:00
Leonard Lyubich
3b7e884e74
[ #746 ] morph/client: Distinguish between neo-go errors and NeoFS logic
...
Implement `error` interface on new `neofsError` type which is a wrapper over
NeoFS-specific error. Wrap all `Client` errors except neo-go client API ones
into `neofsError`. Wrapped errors are going to be used for multi-endpoint
loop control.
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-09-02 11:04:38 +03:00
Leonard Lyubich
85bd2a1cdf
[ #746 ] morph: Add error return of MagicNumber
method
...
Since morph `Client` works in multi-client mode, there is an error case when
we can not get network magic when all endpoints are unavailable.
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-09-02 11:04:38 +03:00
Leonard Lyubich
ad7ad12a0c
[ #746 ] morph: Implement and use multi-client
...
There is a need to work with a set of Neo RPC nodes in order not to depend
on the failure of some nodes while others are active.
Support "multi-client" mode of morph `Client` entity. If instance is not
"multi-client", it works as before. Constructor `New` creates multi-client,
and each method performs iterating over the fixed set of endpoints until
success. Opened client connections are cached (without eviction for now).
Storage (as earlier) and IR (from now) nodes can be configured with multiple
Neo endpoints. As above, `New` creates multi-client instance, so we don't
need initialization changes on app-side.
`Wait` and `GetDesignateHash` methods of `Client` return an error from now
to detect connection errors. `NotaryEnabled` method is removed as unused.
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-09-02 11:04:38 +03:00
Alex Vanin
43dfccd9b3
[ #751 ] morph/client: Add custom signer scope support
...
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
2021-08-06 17:29:27 +03:00
Alex Vanin
7e43af3de3
[ #708 ] morph/client: Add BlockCount method
...
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
2021-07-22 15:20:34 +03:00
Alex Vanin
08b5f29e16
[ #609 ] morph/client: Make halt state error private
...
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
2021-06-15 16:52:51 +03:00
Alex Vanin
0ec3faefc9
[ #609 ] morph/client: Check return state in invoke
...
Test invocations are used in `Invoke` method to calculate
consumed gas. We can check return code and return error
if panic happened in contract.
This is already done the same way in `TestInvoke` method.
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
2021-06-15 16:52:51 +03:00
Leonard Lyubich
fad477df2a
[ #505 ] morph/client: Support boolean invocation argument
...
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-05-25 16:35:52 +03:00
Evgenii Stratonikov
2e31cd34e6
[ #502 ] innerring: synchronize validators on mainnet alphabet update
...
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
2021-05-25 11:10:01 +03:00
Evgenii Stratonikov
71b87155ef
[ #521 ] *: use stdlib errors
package
...
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
2021-05-19 16:42:54 +03:00
Alex Vanin
e1e4a61ba7
[ #520 ] Update neo-go to pre N3 testnet RC2 compatible version
...
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
2021-05-17 10:20:08 +03:00
Evgenii Stratonikov
5b85519f20
[ #457 ] innerring: wait until notary tx persists on chain
...
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
2021-04-27 16:57:29 +03:00
Pavel Karpy
4a4aee82e0
[ #474 ] morph/client: Add FaultException to error msg
...
If non-"HALT" `State` occurs after
calling `InvokeFunction` NeoGo client
method, add `FaultException` information
to returning error. Add returning state
check to `NotaryInvoke` method of the
morph/client.
Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
2021-04-13 11:15:59 +03:00
Alex Vanin
05b45270c8
[ #468 ] Update neo-go to v0.94.1
...
New neo-go version provides:
- new type for roles in `RoleManagement` contract,
- methods to get keys from `RoleManagement` contract,
- new way to sign notary transaction.
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
2021-04-09 11:32:05 +03:00
Alex Vanin
ee29ee2c47
[ #456 ] morph/client: Print transaction hashes in LE
...
neo-go JSON RPC server expect all hashes in LE, e.g.
in `getapplicationlog` method.
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
2021-04-06 08:03:19 +03:00
Alex Vanin
61dff99774
[ #421 ] morph/client: Add designate role getter wrapper for NeoFSAlphabet role
...
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
2021-03-26 10:16:48 +03:00
Alex Vanin
2f6adb0465
[ #421 ] morph/client: Add role getter from designate contract
...
RoleManagement native contract (ex designate contract) stores list
of keys per role. Main net uses NeoFSAlphabet role to store keys of
alphabet nodes of inner ring. Side chain uses the same role to store
keys of all inner ring nodes, including alphabet.
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
2021-03-26 10:16:48 +03:00
Alex Vanin
0cd7fa415f
[ #421 ] morph/client: Add committee list getter
...
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
2021-03-26 10:16:48 +03:00
Alex Vanin
527daec69a
[ #421 ] morph/client: Support keys.PublicKeys type as contract argument
...
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
2021-03-26 10:16:48 +03:00