Commit graph

6308 commits

Author SHA1 Message Date
Roman Khimov
6014dd720f compiler: don't push X onto the stack for inlined method calls
Regular methods need this, because it'll be packed into parameters, but
inlined ones should deal with it in inlining code itself because method
receiver will be some local (aliased) variable anyway.
2022-07-06 18:18:21 +03:00
Roman Khimov
2ba9017207
Merge pull request #2581 from nspcc-dev/sym-dec-in-getnep17balances
rpc: add decimals/name/symbol data to getNEPXXBalance
2022-07-05 12:45:50 +03:00
Roman Khimov
ccc820505d
Merge pull request #2554 from nspcc-dev/improve-ws-err
rpc: adjust cases when WS connection close error is returned
2022-07-05 12:45:31 +03:00
Roman Khimov
3fbc1331aa
Merge pull request #2582 from nspcc-dev/fix-server-sync
network: adjust the way (*Server).IsInSync() works
2022-07-05 12:28:20 +03:00
Roman Khimov
9f05009d1a
Merge pull request #2580 from nspcc-dev/service-review
Service review
2022-07-05 12:23:25 +03:00
Anna Shaleva
0835581fa9 network: adjust the way (*Server).IsInSync() works
Always return true if sync was reached once. Fix #2564.
2022-07-05 12:20:31 +03:00
Anna Shaleva
8f53c7d78a rpc: adjust cases when WS connection close error is returned
Do not return error in case of (*WSClient).Close() method was the
initiator of connection closing.
2022-07-05 11:23:29 +03:00
Roman Khimov
3e2eda6752 *: add some comments to service Start/Shutdown methods 2022-07-04 23:03:50 +03:00
Roman Khimov
593f4e8734
Merge pull request #2559 from nspcc-dev/cli/wallet-config
cli: allow to specify wallet via configuration file
2022-07-04 19:24:23 +03:00
Anna Shaleva
5f36a7ca0f *: do not call wallet.Close() explicitly
NewWallet and NewWalletFromFile close underlying io.Closer by itself,
no need to close it manually. Introduced in #2184.
2022-07-04 19:09:48 +03:00
Roman Khimov
c356c14741 rpc: add decimals/name/symbol data to getNEPXXBalance
See neo-project/neo-modules#738 and neo-project/neo-modules#741.
2022-07-04 18:28:27 +03:00
Roman Khimov
f0b08ba3e9
Merge pull request #2574 from nspcc-dev/fix-message
smartcontract: print proper error message on failed testinvoke
2022-07-04 14:14:24 +03:00
Roman Khimov
b7bea7685e
Merge pull request #2579 from nspcc-dev/add-json-enum-doc
Add JSON enum doc
2022-07-04 14:14:11 +03:00
Anna Shaleva
b2f188f8f0 cli: refactor code that opens wallet
Reduce code duplications, no functional changes.
2022-07-04 13:50:15 +03:00
Anna Shaleva
213bfe6bbf cli: allow to specify wallet via configuration file 2022-07-04 12:57:47 +03:00
Roman Khimov
926b082d39
Merge pull request #2538 from nspcc-dev/restrict-out-of-bounds
core: check methods offsets while contract deploying
2022-07-04 12:54:32 +03:00
Roman Khimov
a535c220d1 docs: add a compatibility note about #2563 problem 2022-07-04 11:15:16 +03:00
Roman Khimov
4afdb9fd89
Merge pull request #2578 from nspcc-dev/getcandidates
GetCandidates
2022-07-04 11:13:57 +03:00
Roman Khimov
36d4c17a15 stateroot: wait for the service to stop un Shutdown 2022-07-04 11:12:17 +03:00
Roman Khimov
58b9ac41e2 stateroot: handle double start/shutdown 2022-07-04 11:12:17 +03:00
Roman Khimov
bf462a81fe notary: wait for the service to finish on Shutdown 2022-07-04 11:12:17 +03:00
Roman Khimov
0d627c947f notary: control start/stop state
Don't start/stop twice, don't do anything in callbacks if not started.
2022-07-04 11:12:17 +03:00
Roman Khimov
73e34514a5 oracle: wait for the service to stop during Shutdown 2022-07-04 11:12:17 +03:00
Roman Khimov
cab633ffed oracle: make double-Shutdown a no-op 2022-07-04 11:12:17 +03:00
Roman Khimov
6b2fc5e056 rpc/client: add Close method
Allow to close unused network connections and use it during RPC broadcaster
shutdown, because otherwise we leak them.
2022-07-04 11:12:17 +03:00
Roman Khimov
649fe58550 rpcbroadcaster: properly stop broadcaster
Drain channels, wait for everything to stop.
2022-07-04 11:12:17 +03:00
Evgeniy Stratonikov
5eaa34c75f cli/smartcontract: do not print dot on a separate line
Signed-off-by: Evgeniy Stratonikov <evgeniy@nspcc.ru>
2022-07-04 11:06:06 +03:00
Roman Khimov
c096f32a32 rpc/server: make double Shutdown a no-op 2022-07-01 22:01:04 +03:00
Roman Khimov
527505ea5e consensus: drain messages and transactions on exit as well
There might be some threads blocked on these channels.
2022-07-01 21:55:41 +03:00
Roman Khimov
cd4f46247d consensus: make double-call to Shutdown a no-op 2022-07-01 21:49:40 +03:00
Roman Khimov
039fcdab5a rpc: implement getcandidates call, fix #2571 2022-07-01 18:46:44 +03:00
Roman Khimov
ce7a22c390 docs: fix header levels in rpc.md 2022-07-01 18:22:16 +03:00
Roman Khimov
0da0bb21ee rpc: make getnextvalidators behavior compliant with C# node
Turns out, our getnextvalidators implementation already works the way
getcandidates is supposed to work, but original getnextvalidators works a bit
differently. It only returns validators, it doesn't return Active flag (all
of them are active) and it represents votes as a number. So for the maximum
compatibility:
 * drop non-validator keys from getnextvalidators server-side
 * drop Active flag client-side (sorry, it doesn't exist)
 * allow unmarshalling old answers along with the new one

This technically breaks `query candidates` CLI command, but it'll be fixed
when getcandidates are to be introduced.
2022-07-01 14:52:02 +03:00
Roman Khimov
5c4e83db4a
Merge pull request #2577 from nspcc-dev/localhost
Localhost
2022-06-30 19:14:18 +03:00
Roman Khimov
c26a962b55 *: use localhost address instead of 127.0.0.1, fix #2575 2022-06-30 16:19:07 +03:00
Roman Khimov
a15a9577f0 docs: fix wrong default address value mentioned
We're listening on all addresses by default.
2022-06-30 15:41:44 +03:00
Evgeniy Stratonikov
0dc606f50e cli/smartcontract: print proper error message on failed testinvoke
Do not print info about `--force` flag if we don't send or save a transaction.

Signed-off-by: Evgeniy Stratonikov <evgeniy@nspcc.ru>
2022-06-29 15:12:35 +03:00
Roman Khimov
2f55070a57
Merge pull request #2573 from nspcc-dev/dbft-fix-cv-jump
go.mod: update dbft
2022-06-29 15:02:58 +03:00
Roman Khimov
8d08c4afee go.mod: update dbft
Import nspcc-dev/dbft#61.
2022-06-29 14:32:07 +03:00
Roman Khimov
1f62ecd5a3
Merge pull request #2569 from nspcc-dev/dbft-fix-saving-cv
go.mod: update dbft, pick up cv save fix
2022-06-29 12:29:41 +03:00
Roman Khimov
52fd897324 go.mod: update dbft, pick up cv save fix 2022-06-29 10:38:31 +03:00
Roman Khimov
cc37de5331
Merge pull request #2566 from nspcc-dev/fix-service-shutdown
*: properly unsubscribe from Blockchain events
2022-06-28 19:23:26 +03:00
Anna Shaleva
8ab422da66 *: properly unsubscribe from Blockchain events 2022-06-28 19:09:25 +03:00
Roman Khimov
a748298564
Merge pull request #2567 from nspcc-dev/check-consensus-start
consensus: check whether server is started before transaction handling
2022-06-28 18:48:22 +03:00
Anna Shaleva
de203b5c76 consensus: check whether server is started before transaction handling
consensus.OnTransaction is a callback, so it can be called at any time.
We need to check whether service (and dBFT) is started before the
subsequent transaction handling like it is done inside the OnPayload
callback.
2022-06-28 18:42:12 +03:00
Roman Khimov
ea69b72cd8
Merge pull request #2560 from nspcc-dev/rpc/extend-logging
rpc: extend error log message for failed RPC requests
2022-06-27 09:42:54 +03:00
Roman Khimov
299d55e539
Merge pull request #2558 from nspcc-dev/rpc/fix-signature-decoding
rpc: fix compatibility issues of `CreateFunctionInvocationScript`
2022-06-27 08:18:36 +03:00
Anna Shaleva
9488756437 rpc: extend error log message for failed RPC requests
Message is always non-empty; Data is allowed to be empty.
2022-06-24 12:44:10 +03:00
Anna Shaleva
a15e52ee3d rpc: adjust TestInvocationScriptCreationGood testcase
Although neo-go can handle both ByteArray and ByteString parameter
types, C# node can't, so let's use the common one for tests. Compat
test:
```
anna@kiwi:~/Documents/GitProjects/nspcc-dev/neo-go$ curl -d '{ "jsonrpc": "2.0", "id": 1, "method": "invokefunction", "params": ["50befd26fdf6e4d957c11e078b24ebce6291456f", "a", [{"type": "ByteString", "value": "AwEtR+diEK7HO+Oas9GG4KQP6Nhr+j1Pq/2le6E7iPlq"}] ]}' seed1.neo.org:10332 | json_pp
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1271    0  1070  100   201   2860    537 --:--:-- --:--:-- --:--:--  3398
{
   "jsonrpc" : "2.0",
   "id" : 1,
   "error" : {
      "message" : "Requested value 'ByteString' was not found.",
      "data" : "   at System.Enum.TryParseByName(RuntimeType enumType, ReadOnlySpan`1 value, Boolean ignoreCase, Boolean throwOnFailure, UInt64& result)\n   at System.Enum.TryParseUInt32Enum(RuntimeType enumType, ReadOnlySpan`1 value, UInt32 maxInclusive, Boolean ignoreCase, Boolean throwOnFailure, TypeCode type, UInt32& result)\n   at System.Enum.TryParse[TEnum](ReadOnlySpan`1 value, Boolean ignoreCase, Boolean throwOnFailure, TEnum& result)\n   at System.Enum.TryParse[TEnum](String value, Boolean ignoreCase, Boolean throwOnFailure, TEnum& result)\n   at Neo.SmartContract.ContractParameter.FromJson(JObject json)\n   at Neo.Plugins.RpcServer.<>c.<InvokeFunction>b__43_0(JObject p)\n   at System.Linq.Enumerable.SelectIListIterator`2.ToArray()\n   at Neo.Plugins.RpcServer.InvokeFunction(JArray _params)\n   at Neo.Plugins.RpcServer.ProcessRequestAsync(HttpContext context, JObject request)",
      "code" : -2147024809
   }
}
anna@kiwi:~/Documents/GitProjects/nspcc-dev/neo-go$ curl -d '{ "jsonrpc": "2.0", "id": 1, "method": "invokefunction", "params": ["50befd26fdf6e4d957c11e078b24ebce6291456f", "a", [{"type": "ByteArray", "value": "AwEtR+diEK7HO+Oas9GG4KQP6Nhr+j1Pq/2le6E7iPlq"}] ]}' seed1.neo.org:10332 | json_pp
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   507    0   307  100   200    161    105  0:00:01  0:00:01 --:--:--   266
{
   "result" : {
      "gasconsumed" : "104526",
      "notifications" : [],
      "stack" : [],
      "script" : "DCEDAS1H52IQrsc745qz0YbgpA/o2Gv6PU+r/aV7oTuI+WoRwB8MAWEMFG9FkWLO6ySLBx7BV9nk9v0m/b5QQWJ9W1I=",
      "state" : "FAULT",
      "exception" : "Called Contract Does Not Exist: 0x50befd26fdf6e4d957c11e078b24ebce6291456f"
   },
   "id" : 1,
   "jsonrpc" : "2.0"
}
```
2022-06-24 12:37:25 +03:00
Anna Shaleva
aa3a5fc492 rpc: adjust script creation with empty parameters list
Always use NEWARRAY0 where possible, see
26d04a642a/src/neo/VM/Helper.cs (L41).

Compatibility is tested:
```
anna@kiwi:~/Documents/GitProjects/nspcc-dev/neo-go$ curl -d '{ "jsonrpc": "2.0", "id": 1, "method": "invokefunction", "params": ["50befd26fdf6e4d957c11e078b24ebce6291456f", "a", [] ]}' seed1.neo.org:10332 | json_pp
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   370    0   248  100   122    127     62  0:00:01  0:00:01 --:--:--   190
{
   "result" : {
      "notifications" : [],
      "stack" : [],
      "script" : "wh8MAWEMFG9FkWLO6ySLBx7BV9nk9v0m/b5QQWJ9W1I=",
      "gasconsumed" : "98403",
      "state" : "FAULT",
      "exception" : "Called Contract Does Not Exist: 0x50befd26fdf6e4d957c11e078b24ebce6291456f"
   },
   "jsonrpc" : "2.0",
   "id" : 1
}
```
2022-06-24 12:37:22 +03:00