Roman Khimov
6f7fed344b
rpcclient: add Internal client for direct RPC server calls
...
It has a special `requestF` and a special initialization function, but other
than that it's an absolutely regular WSClient. Can be used to call, can be
used to subscribe. Fixes #2909 .
2023-02-16 23:49:58 +03:00
Roman Khimov
a55a01d456
rpcsrv: provide RegisterLocal for local clients
...
This allows to call RPC server more effectively in the same process (bypassing
TCP/HTTP). Refs. #2909 .
2023-02-16 23:49:58 +03:00
Anna Shaleva
5892534211
docs: fix the link to RPC Client doc
2023-02-16 17:37:46 +03:00
Roman Khimov
e496084bee
params: add FromAny function
...
Creating RPC server parameters from any data can be useful. Refs. #2909 .
2023-02-15 16:46:59 +03:00
Roman Khimov
9f9c6f5dc0
Merge pull request #2915 from ixje/feat-endpoint
...
rpcclient: expose endpoint (fixes #2912 )
2023-02-15 11:43:32 +03:00
Erik van den Brink
3bdb3a87b8
rpcclient: expose endpoint ( fixes #2912 )
2023-02-15 08:29:44 +01:00
Roman Khimov
1d6e48ee78
Merge pull request #2904 from nspcc-dev/export-deserialization-context
...
vm: export deserialization context
2023-02-08 13:04:56 +03:00
Anna Shaleva
25ed5fcd60
vm: allow custom limit duing Map\Array\Struct deserialization
2023-02-08 10:58:55 +03:00
Anna Shaleva
15fa65d30f
vm: export stackitem's deserContext
2023-02-08 10:58:54 +03:00
Roman Khimov
bd26b9db83
Merge pull request #2893 from nspcc-dev/fix-wsc-sub-doc
...
rpcclient: adjust new subscriptions API doc
2023-01-30 15:10:57 +03:00
Anna Shaleva
51a28fac8d
rpcclient: adjust new subscriptions API doc
...
Add a warning about consequences of unproper notifications reading.
Ref. https://github.com/morphbits/neofs-cdn-edge-manager/pull/88#discussion_r1088007680 .
2023-01-30 14:36:11 +03:00
Anna Shaleva
7e709313d3
cli: ask for NEP2 account label if not provided
...
If NEP2 account label is not provided as a flag for import-related
CLI commands then ask it in the interactive mode.
This change breaks the compatibility with the old behaviour (add
the unnamed account if the name wasn't specified).
2023-01-26 08:50:06 +03:00
Roman Khimov
b56dff2b1e
Merge pull request #2887 from nspcc-dev/wallet-import
...
cli: refactor wallet import related commands
2023-01-26 08:49:18 +03:00
Anna Shaleva
b77c2846ee
cli: allow to request NEP2 password from input
...
In case if wrong password was provided via config file we allow the
user to provide the password manually.
2023-01-25 14:20:59 +03:00
Anna Shaleva
1ef39a6e30
cli: properly handle --name and password-related wallet commands
...
Fetch account's name from the CLI argument and do not ask for the
user's input if provided, close #2882 . Fetch password from config
if provided, close #2883 .
2023-01-25 14:20:56 +03:00
Roman Khimov
1262a27065
Merge pull request #2884 from nspcc-dev/refactor/rpcsrv-error-channel
...
services/rpcsrv: Strengthen `Server` error channel's type
2023-01-23 19:04:58 +07:00
Leonard Lyubich
d09158161e
services/rpcsrv: Strengthen Server
error channel's type
...
According to docs, `Server` uses provided error channel only to write
encountered error to it. In this case, there is no need to accept rw
channel to create `Server` instance. Strengthening the type to
write-only will allow the caller to ensure control of reading errors
from the provided channel.
The change is backward compatible since any `chan` is `chan<-`.
Signed-off-by: Leonard Lyubich <ctulhurider@gmail.com>
2023-01-23 10:33:46 +03:00
Roman Khimov
0c43b1ddca
Merge pull request #2880 from nspcc-dev/docs/actor
...
rpcclient/actor: Document `RPCActor.CalculateNetworkFee` method
2023-01-18 01:46:11 +07:00
Leonard Lyubich
cbdc6ba469
rpcclient/actor: Document RPCActor.CalculateNetworkFee
method
...
`Actor.MakeUnsignedUncheckedRun` method imposes restriction to
`CalculateNetworkFee` method's implementations: `Hash` or `Size` methods
must not be called on the pointer to the given transaction.
Add docs to adjust described requirement.
Signed-off-by: Leonard Lyubich <ctulhurider@gmail.com>
2023-01-17 21:28:20 +03:00
Roman Khimov
8c8c8d1bb1
Merge pull request #2879 from nspcc-dev/adj-doc
...
*: adjust subscription-related doc
2023-01-18 00:44:19 +07:00
Anna Shaleva
28927228f0
*: adjust subscription-related doc
...
Add a warning about received events modification where applicable.
2023-01-17 17:11:19 +03:00
Roman Khimov
22fc8d1adc
Merge pull request #2877 from nspcc-dev/chlog-101
...
CHANGELOG: release 0.101.0
2023-01-13 17:22:31 +07:00
Roman Khimov
ee3257df6e
CHANGELOG: release 0.101.0
2023-01-13 13:13:34 +03:00
Roman Khimov
c46b7a9e34
Merge pull request #2876 from nspcc-dev/improve-consensus-doc
...
Improve consensus doc and docker configs
2023-01-13 16:51:50 +07:00
Roman Khimov
e2bd76713b
config: improve 4 CN docker configs, three nodes are enough
2023-01-13 11:35:29 +03:00
Roman Khimov
1e35387c04
docs: fix the MinPeers consensus requirements
...
It won't work with 1 for a single node and 3 for 4 CN scenario doesn't allow
the network to start with just three nodes (although technically 3 out of 4 is
sufficient to operate). See #2874 .
2023-01-13 11:33:19 +03:00
Roman Khimov
efbef4254a
Merge pull request #2873 from nspcc-dev/drop-circleci
...
Drop CircleCI support
2023-01-12 12:49:48 +07:00
Roman Khimov
40ef567527
Merge pull request #2872 from nspcc-dev/fix-missing-exception-in-applog
...
state: always marshal applog exception into JSON, fix #2869
2023-01-12 12:49:00 +07:00
Roman Khimov
babc44bfb3
Merge pull request #2871 from nspcc-dev/fix-shadowed-infinite-loop
...
Fix shadowed infinite loop
2023-01-12 12:48:39 +07:00
Roman Khimov
4862bb9aae
drop CircleCI support
...
It stopped running our tests/builds, but we don't care, Github works well.
2023-01-11 17:43:07 +03:00
Roman Khimov
9a6fa84f70
Merge pull request #2867 from nspcc-dev/store-magic-in-db
...
core: store magic in the DB version, fix #2847
2023-01-11 20:42:00 +07:00
Roman Khimov
4e23695441
Merge pull request #2866 from nspcc-dev/findstates-ret-nothing
...
Fix findstates response difference
2023-01-11 20:41:10 +07:00
Roman Khimov
e037249d37
Merge pull request #2865 from nspcc-dev/fix-applog-values
...
Fix applog values
2023-01-11 20:40:44 +07:00
Roman Khimov
817f64f9fe
state: always marshal applog exception into JSON, fix #2869
...
Fortunately, this is backwards-compatible in any direction. See
98b5e2b353
also.
2023-01-11 16:36:41 +03:00
Roman Khimov
8305389852
compiler: don't panic, return error for strange range loops
...
See #2870 .
2023-01-11 16:21:40 +03:00
Roman Khimov
92acc71c80
compiler: create new locals for range loops when needed, fix #2855
2023-01-11 15:49:10 +03:00
Roman Khimov
1c4c783c3a
core: store magic in the DB version, fix #2847
2023-01-11 12:05:05 +03:00
Roman Khimov
e780037cb4
rpcsrv: use valid stateroot hash in failing tests
...
Just in case.
2023-01-11 11:23:47 +03:00
Roman Khimov
9718602ce3
rpcsrv: return empty set from findstates when there is no data
...
Fix #2863 .
2023-01-11 11:21:58 +03:00
Roman Khimov
584675ec23
state: optimize NEP17Transfer struct
...
We have both from and to here, so technically we can either drop the neg/neg
trick from the processTokenTransfer() or drop one field from the structure
(the other side is a part of the key). Drop the field since this can make the
DB a bit more compact. Change Amount to be a pointer along the way since
that's the "native" thing for big.Int, we've used non-pointer field
specifically to avoid Neg/Neg problems, but it looks like this is not
necessary.
This structure is only used by the RPC server and I doubt anyone uses it via
the *Blockchain.
2023-01-10 22:51:45 +03:00
Roman Khimov
dfd4f6978f
bigint: don't reallocate big.Int in ToBytes(), fix #2864
...
In some cases n.Add() can reuse the []Word buffer and n.Sub() reallocate it
away. If that happens, we're out of luck with 0.99.0+ versions (since
3945e81857
). I'm not sure why it does that, bit
width doesn't change in most of the cases and even if it does, we still have
enough of it in cap() to hold the old Abs() value (when we have a negative
value we in fact decreate its Abs() first and increase it back
afterwards). Still, that's what we have.
So when we have processTokenTransfer() doing Neg/Neg in-place its value is not
affected, but the original []Word bits that are reused by amount value are
(they're shared initially, Amount: *amount).
name old time/op new time/op delta
ToPreallocatedBytes-8 65.8ns ± 2% 45.6ns ± 2% -30.73% (p=0.008 n=5+5)
name old alloc/op new alloc/op delta
ToPreallocatedBytes-8 0.00B 0.00B ~ (all equal)
name old allocs/op new allocs/op delta
ToPreallocatedBytes-8 0.00 0.00 ~ (all equal)
2023-01-10 22:51:45 +03:00
Roman Khimov
5ad1fcd321
Merge pull request #2852 from nspcc-dev/required-hash
...
cli: mark required flags of `generate-*` command
2023-01-10 02:23:28 +07:00
Roman Khimov
06d29bc0e9
Merge pull request #2860 from nspcc-dev/fix-vm-cli-doc
...
docs: adjust outdated VM CLI doc
2023-01-09 18:21:25 +07:00
Anna Shaleva
0314cf0430
docs: adjust outdated VM CLI doc
2023-01-09 13:58:27 +03:00
Roman Khimov
4e6ce9c3e6
Merge pull request #2846 from nspcc-dev/fix-getblockbyindex-req
...
network: do not allow to request invalid block count
2022-12-29 04:04:01 +07:00
Roman Khimov
00848cdc83
Merge pull request #2854 from nspcc-dev/update-deps
...
go.mod: Update dependencies
2022-12-29 04:02:43 +07:00
f8fed21285
go.mod: Update dependencies
...
Signed-off-by: Evgeniy Stratonikov <e.stratonikov@yadro.com>
2022-12-28 22:00:16 +03:00
Roman Khimov
c64dc9ab02
Merge pull request #2853 from nspcc-dev/release-0.100.1
...
Release 0.100.1
2022-12-28 19:36:38 +07:00
Anna Shaleva
9b364aa7ee
network: do not allow to request invalid block count
...
The problem is in peer disconnection due to invalid GetBlockByIndex
payload (the logs are from some patched neo-go version):
```
дек 15 16:02:39 glagoli neo-go[928530]: 2022-12-15T16:02:39.490Z INFO new peer connected {"addr": "10.78.69.115:50846", "peerCount": 3}
дек 15 16:02:39 glagoli neo-go[928530]: 2022-12-15T16:02:39.490Z WARN peer disconnected {"addr": "10.78.69.115:50846", "error": "invalid block count", "peerCount": 2}
дек 15 16:02:39 glagoli neo-go[928530]: 2022-12-15T16:02:39.490Z INFO started protocol {"addr": "10.78.69.115:50846", "userAgent": "/NEO-GO:1.0.0/", "startHeight": 0, "id": 1339571820}
дек 15 16:02:39 glagoli neo-go[928530]: 2022-12-15T16:02:39.491Z INFO new peer connected {"addr": "10.78.69.115:50856", "peerCount": 3}
дек 15 16:02:39 glagoli neo-go[928530]: 2022-12-15T16:02:39.492Z WARN peer disconnected {"addr": "10.78.69.115:50856", "error": "invalid block count", "peerCount": 2}
дек 15 16:02:39 glagoli neo-go[928530]: 2022-12-15T16:02:39.492Z INFO started protocol {"addr": "10.78.69.115:50856", "userAgent": "/NEO-GO:1.0.0/", "startHeight": 0, "id": 1339571820}
дек 15 16:02:39 glagoli neo-go[928530]: 2022-12-15T16:02:39.492Z INFO new peer connected {"addr": "10.78.69.115:50858", "peerCount": 3}
дек 15 16:02:39 glagoli neo-go[928530]: 2022-12-15T16:02:39.493Z INFO started protocol {"addr": "10.78.69.115:50858", "userAgent": "/NEO-GO:1.0.0/", "startHeight": 0, "id": 1339571820}
дек 15 16:02:39 glagoli neo-go[928530]: 2022-12-15T16:02:39.493Z WARN peer disconnected {"addr": "10.78.69.115:50858", "error": "invalid block count", "peerCount": 2}
дек 15 16:02:39 glagoli neo-go[928530]: 2022-12-15T16:02:39.494Z INFO new peer connected {"addr": "10.78.69.115:50874", "peerCount": 3}
дек 15 16:02:39 glagoli neo-go[928530]: 2022-12-15T16:02:39.494Z INFO started protocol {"addr": "10.78.69.115:50874", "userAgent": "/NEO-GO:1.0.0/", "startHeight": 0, "id": 1339571820}
дек 15 16:02:39 glagoli neo-go[928530]: 2022-12-15T16:02:39.494Z WARN peer disconnected {"addr": "10.78.69.115:50874", "error": "invalid block count", "peerCount": 2}
```
GetBlockByIndex payload can't be decoded, and the only possible cause
is zero (or <-1, but it's probably not the case) block count requested.
Error is improved as far.
2022-12-28 13:04:56 +03:00
Anna Shaleva
c0a453a53b
network: adjust requestBlocs logic
...
If the lastQueued block index is the same as the one we'd like to
request in payload, then we need to increment the payload's count.
2022-12-28 12:50:30 +03:00