Commit graph

5981 commits

Author SHA1 Message Date
Anna Shaleva
35d930951c core: consider Rules witness scope as valid 2022-04-27 12:48:33 +03:00
Anna Shaleva
65dbe85ec5 rpc: avoid panic during request after WS connection is closed
Fix the following panic:
```
panic: assignment to entry in nil map

goroutine 131 [running]:
github.com/nspcc-dev/neo-go/pkg/rpc/client.(*WSClient).registerRespChannel(0xc00033c240, 0x0, 0xc00003e2a0)
        /home/denis/go/pkg/mod/github.com/nspcc-dev/neo-go@v0.98.2/pkg/rpc/client/wsclient.go:244 +0x96
github.com/nspcc-dev/neo-go/pkg/rpc/client.(*WSClient).makeWsRequest(0xc00033c240, 0xc002080000)
        /home/denis/go/pkg/mod/github.com/nspcc-dev/neo-go@v0.98.2/pkg/rpc/client/wsclient.go:264 +0x69
github.com/nspcc-dev/neo-go/pkg/rpc/client.(*Client).performRequest(0xc00033c240, {0xc9f173, 0xd}, {{0x13d09d0, 0x0, 0x0}}, {0xb44120, 0xc00147a000})
        /home/denis/go/pkg/mod/github.com/nspcc-dev/neo-go@v0.98.2/pkg/rpc/client/client.go:186 +0x15d
github.com/nspcc-dev/neo-go/pkg/rpc/client.(*Client).GetBlockCount(0xc001fb5440)
        /home/denis/go/pkg/mod/github.com/nspcc-dev/neo-go@v0.98.2/pkg/rpc/client/rpc.go:73 +0x69
...
```
2022-04-27 10:53:29 +03:00
Roman Khimov
8983d25f7f
Merge pull request #2445 from nspcc-dev/rpc-when-sync
Add StartWhenSynchronized option for RPC server
2022-04-26 14:20:00 +03:00
Roman Khimov
a2126b92e1 rpc/server: only log errors during Shutdown
Sending them down the errChan is not really helpful and it can lead to
deadlock. If an error happens during node shutdown, we're exiting anyway, if
it happens during service restart, the old server will be dead irrespective of
this error (if this affects new one in any way we'll know it soon).
2022-04-26 00:31:48 +03:00
Roman Khimov
53423b7c37 network: fix panic in blockqueue during shutdown
panic: send on closed channel

goroutine 116 [running]:
github.com/nspcc-dev/neo-go/pkg/network.(*blockQueue).putBlock(0xc00011b650, 0xc01e371200)
        github.com/nspcc-dev/neo-go/pkg/network/blockqueue.go:129 +0x185
github.com/nspcc-dev/neo-go/pkg/network.(*Server).handleBlockCmd(0xc0002d3c00, {0xf69b7f?, 0xc001520010?}, 0xc02eb44000?)
        github.com/nspcc-dev/neo-go/pkg/network/server.go:607 +0x6f
github.com/nspcc-dev/neo-go/pkg/network.(*Server).handleMessage(0xc0002d3c00, {0x121f4c8?, 0xc001528000?}, 0xc01e35cf80)
        github.com/nspcc-dev/neo-go/pkg/network/server.go:1160 +0x6c5
github.com/nspcc-dev/neo-go/pkg/network.(*TCPPeer).handleIncoming(0xc001528000)
        github.com/nspcc-dev/neo-go/pkg/network/tcp_peer.go:189 +0x98
created by github.com/nspcc-dev/neo-go/pkg/network.(*TCPPeer).handleConn
        github.com/nspcc-dev/neo-go/pkg/network/tcp_peer.go:164 +0xcf
2022-04-26 00:31:48 +03:00
Roman Khimov
887fe0634d rpc: add StartWhenSynchronized option, fix #2433 2022-04-26 00:31:48 +03:00
Roman Khimov
2593bb0535 network: extend Service with Name, use it to distinguish services 2022-04-26 00:31:48 +03:00
Roman Khimov
f65c638be4
Merge pull request #2446 from nspcc-dev/fix-stateroot
core: fix broken stateroot storage
2022-04-23 00:35:28 +03:00
Anna Shaleva
1890e7cdc1 core: upgrade storage version 2022-04-22 18:38:05 +03:00
Anna Shaleva
8be6823cb1 core: fix broken stateroot storage
Store stateroot by DataMPTAux prefix instead of storing it by index only.
2022-04-22 18:37:56 +03:00
Roman Khimov
a10b1ad32d rpc/server: make Server conform network.Service interface
With Start() and Shutdown() taking no parameters and returning no values.
2022-04-22 10:49:06 +03:00
Roman Khimov
4eee2f930e rpc/server: make double-start a no-op 2022-04-22 10:33:52 +03:00
Roman Khimov
2c5fbd57fb
Merge pull request #2443 from nspcc-dev/interops
core: support System.Runtime.GetAddressVersion
2022-04-21 19:47:30 +03:00
Anna Shaleva
c74f0bb4f5 examples: update neo-go dependency 2022-04-21 19:29:37 +03:00
Anna Shaleva
3463d7292f gomod: update interop dependency 2022-04-21 19:27:30 +03:00
Anna Shaleva
d942940a82 core: support System.Runtime.GetAddressVersion syscall 2022-04-21 19:26:16 +03:00
Roman Khimov
4775705f00
Merge pull request #2436 from nspcc-dev/ci-timeout
ci: increase output waiting timeout for CircleCI test jobs
2022-04-20 15:15:40 +03:00
Roman Khimov
da8d149fdb
Merge pull request #2441 from ixje/patch-2
(rpc): fix typo's
2022-04-20 15:15:10 +03:00
Erik van den Brink
9fe3a86540
fix typo's 2022-04-20 14:00:12 +02:00
Roman Khimov
143b293d20
Merge pull request #2439 from nspcc-dev/dbft-update
gomod: upgrade dBFT revision
2022-04-14 16:26:52 +03:00
Anna Shaleva
47c3da4197 gomod: upgrade dBFT revision 2022-04-14 16:18:38 +03:00
Roman Khimov
f73510b926
Merge pull request #2432 from nspcc-dev/fix-fees
core: use proper BaseExecFee and StoragePrice for interop context
2022-04-14 15:10:22 +03:00
Roman Khimov
4e028cca89
Merge pull request #2435 from nspcc-dev/rpc/getversion-fix
rpc: adjust `getversion` RPC response
2022-04-14 14:53:19 +03:00
Anna Shaleva
3ab76cf9cb ci: increase output waiting timeout for CircleCI test jobs
Problem - failing CircleCI test jobs:
```
go test -v -race ./...

Too long with no output (exceeded 10m0s): context deadline exceeded
```
2022-04-14 14:50:37 +03:00
Anna Shaleva
1c6afe402f rpc: adjust getversion RPC response
Reference implementation includes `initialgasdistribution` as integer
value with decimals.

C# response:
```
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
        "nonce": 1677922561,
        "protocol": {
            "addressversion": 53,
            "initialgasdistribution": 5200000000000000,
            "maxtraceableblocks": 2102400,
            "maxtransactionsperblock": 512,
            "maxvaliduntilblockincrement": 5760,
            "memorypoolmaxtransactions": 50000,
            "msperblock": 15000,
            "network": 860833102,
            "validatorscount": 7
        },
        "tcpport": 10333,
        "useragent": "/Neo:3.1.0/",
        "wsport": 10334
    }
}
```

Neo-Go response:
```
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
        "network": 860833102,
        "nonce": 2847278838,
        "protocol": {
            "addressversion": 53,
            "initialgasdistribution": "52000000",
            "maxtraceableblocks": 2102400,
            "maxtransactionsperblock": 512,
            "maxvaliduntilblockincrement": 5760,
            "memorypoolmaxtransactions": 50000,
            "msperblock": 15000,
            "network": 860833102,
            "validatorscount": 7
        },
        "tcpport": 10333,
        "useragent": "/NEO-GO:0.98.2/"
    }
}
```
2022-04-14 13:51:30 +03:00
Anna Shaleva
51a54fa248 core: return default BaseExecFee if blockchain height is 0
For (bc *Blockchain).GetBaseExecFee().
2022-04-08 14:28:30 +03:00
Anna Shaleva
d3672eb14a core: use BaseExecFee from InteropContext instead of Blockchain's one
The InteropContext's one contains all relevant fee changes applied in
the prevouse transactions of the current block.
2022-04-08 12:56:46 +03:00
Anna Shaleva
544f2c2cb2 core: use proper storage price within the whole interop context
We shouldn't use StoragePrice from Blockchain because its dao doesn't
contain the whole set of changes from previouse transactions in the
current block. Instead, we should use an updated storage price for
each transaction and retrieve the price from cached DAO.
2022-04-08 12:50:56 +03:00
Anna Shaleva
91a4bc5beb core: use proper DAO to get ExecFeeFactor
The usage of the Blockchain's one leads to the same ExecFeeFactor within
a single block. What we need is to update ExecFeeFactor after each
transaction invocation, thus, cached DAO should be used as it contains
all relevant changes.
2022-04-08 12:50:50 +03:00
Roman Khimov
6ff11baa1b
Merge pull request #2427 from nspcc-dev/add-hash-to-debug-info
Add hash to debug info and use absolute path
2022-04-06 16:11:47 +03:00
Roman Khimov
f5d5019b70 compiler: use absolute paths for debug data
It's not a perfect thing, but neo-debugger just doesn't work at all with
relative pathes. Notice that `saveSequencePoint` still used absolute ones
leading to invalid debug.json data, but fixing it there doesn't help,
neo-debugger can't load source code using relatives.
2022-04-06 15:46:54 +03:00
Roman Khimov
e390981747 compiler: add hash field to debug info
New debugger won't work without it.
2022-04-06 15:27:01 +03:00
Roman Khimov
017326dca4
Merge pull request #2417 from nspcc-dev/interop-update
*: natives update
2022-04-05 19:02:59 +03:00
Roman Khimov
0c3327af25
Merge pull request #2426 from nspcc-dev/notary-ignore-erralreadyexists
cli/server: don't spit out error if notary request already exists
2022-04-05 18:41:17 +03:00
Roman Khimov
2c16e042cd cli/server: don't spit out error if notary request already exists
It could be sent by another actor and that's OK.
2022-04-05 17:37:17 +03:00
Roman Khimov
bdcb527ead
Merge pull request #2420 from nspcc-dev/fix-ws
rpc: avoid panic on double-call to *WSClient.Close()
2022-04-05 16:41:51 +03:00
Roman Khimov
1cd1fd1a79
Merge pull request #2424 from nspcc-dev/fix-notary-size-caching
services: avoid changes in mempooled main notary tx
2022-04-05 16:39:12 +03:00
Anna Shaleva
850f56b367 rpc: avoid panic on double-call to *WSClient.Close()
Although it's the caller's duty to avoid WSClient re-closing, we
still can handle it.

Fixes the following neofs-node error:
```
panic: close of closed channel

goroutine 98 [running]:
github.com/nspcc-dev/neo-go/pkg/rpc/client.(*WSClient).Close(...)
        github.com/nspcc-dev/neo-go@v0.98.3-pre.0.20220321144433-3b639f518ebb/pkg/rpc/client/wsclient.go:120
github.com/nspcc-dev/neofs-node/pkg/morph/subscriber.(*subscriber).Close(0x13)
        github.com/nspcc-dev/neofs-node/pkg/morph/subscriber/subscriber.go:108 +0x29
github.com/nspcc-dev/neofs-node/pkg/morph/event.listener.Stop(...)
        github.com/nspcc-dev/neofs-node/pkg/morph/event/listener.go:573
created by github.com/nspcc-dev/neofs-node/pkg/innerring.(*Server).Stop
        github.com/nspcc-dev/neofs-node/pkg/innerring/innerring.go:285 +0x12f
```
2022-04-05 16:31:51 +03:00
Anna Shaleva
5771bbb52a services: fix changing of main tx size of Notary request 2022-04-05 16:00:12 +03:00
Anna Shaleva
72ec354039 compiler: add test for murmur32 interop API 2022-04-05 10:51:12 +03:00
Anna Shaleva
9dcceadab6 examples: update neo-go dependency 2022-04-05 10:50:50 +03:00
Anna Shaleva
7b5ff25a40 gomod: update interop dependency 2022-04-05 10:49:10 +03:00
Anna Shaleva
16f952270c core: add murmur32 to CryptoLib native contract
Close #2415.
2022-04-05 10:46:52 +03:00
Anna Shaleva
0e8bf83dda compiler: add tests for GetTransactionVMState 2022-04-05 10:46:52 +03:00
Anna Shaleva
31aa90d6b5 examples: update neo-go dependency 2022-04-05 10:46:11 +03:00
Anna Shaleva
5388c895d2 gomod: update interop version 2022-04-05 10:39:58 +03:00
Anna Shaleva
b431e47d2a core: add GetTransactionVMState to native Ledger contract
Close #2343.
2022-04-05 10:37:02 +03:00
Anna Shaleva
4254407a9b dao: add GetTxExecResult method 2022-04-05 10:36:50 +03:00
Anna Shaleva
18c5f638b9 dao: adjust usages of Internal DB inconsistency error 2022-04-04 19:16:58 +03:00
Roman Khimov
20c0e2f2e2
Merge pull request #2416 from nspcc-dev/interop-license
interop: add a physical copy of LICENSE.md
2022-04-04 14:25:30 +03:00