Roman Khimov
b7fa8dd40f
Merge pull request #741 from nspcc-dev/fix/network
...
network: fix possible deadlock in DefaultDiscovery
2020-03-10 17:29:45 +03:00
Roman Khimov
19f55e7280
Merge pull request #731 from nspcc-dev/feature/cleanstack
...
compiler: clean up stack on branch statements
2020-03-10 17:28:27 +03:00
Evgenii Stratonikov
b7dee156e2
network: fix a deadlock in DefaultDiscovery
...
Why a deadlock can occur:
1. (*DefaultDiscovery).run() has a for loop over requestCh channel.
2. (*DefaultDiscovery).RequestRemote() send to this channel while
holding a mutex.
3. (*DefaultDiscovery).RegisterBadAddr() tries to take mutex for write.
4. Second select-case can't take mutex for read because of (3).
2020-03-10 15:40:23 +03:00
Evgenii Stratonikov
2a1402f25d
compiler: clean up stack on branch statements
...
When `return` or `break` statement is encountered inside
a for/range/switch statement, top stack items can be auxilliary.
They need to be cleaned up before returning from the function.
2020-03-10 15:26:00 +03:00
Roman Khimov
3f1e8f66b6
Merge pull request #739 from nspcc-dev/fix/gomod
...
*: go mod tidy
2020-03-10 13:01:17 +03:00
Evgenii Stratonikov
386ff07054
*: go mod tidy
2020-03-10 12:55:41 +03:00
Roman Khimov
15a5c7f3d6
Merge pull request #738 from nspcc-dev/feature/fallthrough
...
compiler: implement fallthrough in switch
2020-03-10 12:44:35 +03:00
Evgenii Stratonikov
91301df161
compiler: implement fallthrough in switch
...
Closes #628 .
2020-03-10 12:34:07 +03:00
Roman Khimov
726237726b
Merge pull request #737 from nspcc-dev/fix/emptyaddress
...
cli: do not allow default value for an empty address
2020-03-10 10:30:59 +03:00
Roman Khimov
ee57b96566
Merge pull request #733 from nspcc-dev/fix-getreferences-interop-regression
...
Fix GetReferences interop regression
2020-03-10 10:27:36 +03:00
Roman Khimov
cc8203fc59
Merge pull request #736 from nspcc-dev/fix-contract-description-limit
...
Fix contract description limit
2020-03-10 10:27:25 +03:00
Evgenii Stratonikov
8d73276393
cli: do not allow default value for an empty address
...
Right now a bizarre error message can occur if an address flag was not
set: `wallet contains no account for 'AFmseVrdL9f9oyCzZefL9tG6UbvhPbdYzM'`.
This bug is 10x worse if it occures in `transfer` --from flag.
2020-03-10 09:54:23 +03:00
Roman Khimov
eb404ceae3
core: fix max contract description limit check
...
It differs from other parameters in C# code. Fixes #735 .
2020-03-09 14:18:51 +03:00
Roman Khimov
4587121c7f
core: fix error propagation in contract-related interops
...
Obvious bug that hides failed contract deployments.
2020-03-09 14:18:00 +03:00
Roman Khimov
4b83e9a5cd
Merge pull request #732 from nspcc-dev/feature/getvalidators
...
rpc: implement getvalidators
2020-03-07 21:43:38 +03:00
Anna Shaleva
456a2d55fd
rpc: implement getvalidators
...
closes #714
2020-03-07 18:05:40 +03:00
Roman Khimov
1b7b9e74d1
Merge pull request #734 from nspcc-dev/fix/getblock-response
...
[rpc/server] fix getblock verbose response
2020-03-06 20:10:14 +03:00
Evgeniy Kulikov
b34ac22434
[rpc/server] fix getblock verbose response
...
- Nonce should not trim leading zeros
- NextConsensus should returns address (uint160 -> base58)
2020-03-06 19:53:11 +03:00
Roman Khimov
ced5ddbb9e
core: fix wrong references ordering in interop function
...
Broken by 9f7018503a
. Almost the same problem as
in 01082a8988
(though it is deterministic now,
just not the way the contract expects).
2020-03-06 19:20:55 +03:00
Roman Khimov
0e8ff558d1
Merge pull request #727 from nspcc-dev/fix-wrong-endian-in-interop-hashes
...
core: fix wrong endian used in interop functions
2020-03-06 19:07:28 +03:00
Roman Khimov
6543f20a25
Merge pull request #729 from nspcc-dev/feature/flags
...
cli: implement AddressFlag
2020-03-06 15:09:33 +03:00
Evgenii Stratonikov
9be4312d8d
cli: implement AddressFlag
...
This makes code less verbose and performs all parsing
before invoking main function.
2020-03-06 13:50:34 +03:00
Roman Khimov
f8eee778f4
Merge pull request #724 from nspcc-dev/feature/submitblock
...
rpc: implement submitblock
2020-03-06 12:08:45 +03:00
Anna Shaleva
2031d8d103
rpc: add custom errors to sendrawtransaction
...
In case of unsuccessful relyReason sendRawTransaction should return
errors with codes [-500, ..., -505] instead of error with code -32603
2020-03-06 12:04:51 +03:00
Roman Khimov
b4eb05c1c1
Merge pull request #730 from nspcc-dev/feature/optimize
...
core: get rid of unnecessary copies
2020-03-06 12:03:38 +03:00
Anna Shaleva
a746d8e6e6
rpc: implement submitblock RPC
...
closes #344
2020-03-06 12:03:08 +03:00
Roman Khimov
66ec5b491f
Merge pull request #725 from nspcc-dev/feature/gettransactionheight
...
rpc: implement gettransactionheight
2020-03-05 23:56:02 +03:00
Evgenii Stratonikov
40188c5400
core: get rid of unnecessary copies
...
There is no need to keep Balances and Unclaimed slices
sorted, we need only to remove a single element.
2020-03-05 20:42:20 +03:00
Anna Shaleva
d3063c26e1
core: add custom error to blockhain.go
...
Add InvalidBlockIndex error to AddBlock func
2020-03-05 20:30:19 +03:00
Roman Khimov
a9abd3d841
core: fix wrong endian used in interop functions
...
C# uses ToArray() or UintXXX(bytes) here which interprets hashes as they
should be interpreted (BE, although they always convert to LE when converting
to String just for the fun of it). It leads to state difference for us at
block 2025204 where even though we have the same value for the key, the key
itself differs, ours:
dd2b538e2a0c1db1ae5061c15be14f916bd1e678e512ffcda6d9499d8e7fe97ee71fd6b8004583d9afe09cc4dadbd5deb63d01e061009b7cffdaa674beae0f930ebe6085af900093e5fe56b34a5c220ccdcf6efc336fc5000000000000000000000000000000000010
theirs:
dd2b538e2a0c1db1ae5061c15be14f916bd1e67861e0013db6ded5dbdac49ce0afd9834500b8d61fe77ee97f8e9d49d9a6cdff12e5009b7cffdaa674beae0f930ebe6085af900093e5fe56b34a5c220ccdcf6efc336fc5000000000000000000000000000000000010
In this key there is a tx hash encoded
(e512ffcda6d9499d8e7fe97ee71fd6b84583d9afe09cc4dadbd5deb63d01e061 in LE used
by all the tools like neoscan).
I love Neo.
2020-03-05 19:44:09 +03:00
Anna Shaleva
ccd88c3af8
rpc: implement gettransactionheight
...
closes #713
2020-03-05 19:34:11 +03:00
Roman Khimov
f72c321426
Merge pull request #726 from nspcc-dev/feature/getblockheader
...
rpc: fixed getblockheader tests
2020-03-05 19:21:43 +03:00
Anna Shaleva
5cfa1bc2a8
rpc: fixed getblockheader tests
2020-03-05 19:16:22 +03:00
Roman Khimov
fbdc60b731
Merge pull request #723 from nspcc-dev/feature/nep5
...
core,rpc: implement NEP5-related logic
2020-03-05 18:33:58 +03:00
Evgenii Stratonikov
c019ce565f
rpc: move test contract hash to constant
...
When changing test chain it can be rather annoying
to replace all of the occurences of the contract hash.
2020-03-05 18:26:55 +03:00
Evgenii Stratonikov
547bd3bde3
rpc: display for NEP5 token amount properly
...
Every NEP5 contract MUST have `decimals` method which
is used to properly display token amount.
2020-03-05 18:22:40 +03:00
Evgenii Stratonikov
95a8fa234f
rpc: implement getnep5transfers RPC
2020-03-05 18:22:40 +03:00
Evgenii Stratonikov
2757882d26
rpc: implement getnep5balances RPC
2020-03-05 18:22:40 +03:00
Evgenii Stratonikov
6d270c4550
core,rpc: add NEP5 contract to testdata
...
Also transfer tokens between accounts.
2020-03-05 18:22:40 +03:00
Evgenii Stratonikov
b945f4346a
smartcontract: marshal Arrays properly
2020-03-05 18:22:40 +03:00
Evgenii Stratonikov
f92fd3c948
core: track NEP5 transfers
2020-03-05 18:22:40 +03:00
Evgenii Stratonikov
e8c4179a9c
core: track NEP5 balances
2020-03-05 18:22:19 +03:00
Roman Khimov
b273f3126a
Merge pull request #722 from nspcc-dev/feature/getblockheader
...
rpc: implement getblockheader RPC
2020-03-05 17:18:54 +03:00
Roman Khimov
44c392450a
Merge pull request #721 from nspcc-dev/fix-panic-in-tcptransport-close
...
network: add a nil check in (*TCPTransport).Close, prevent panic
2020-03-05 16:02:15 +03:00
Evgenii Stratonikov
3a510b9dad
core: allow transfer amount to be bytes
...
VM can produce both big.Int and []byte because they
are converted to each other on demand.
2020-03-05 15:18:38 +03:00
Anna Shaleva
42e2aff381
rpc: implement getblockheader RPC
...
closes #711
2020-03-05 14:47:45 +03:00
Roman Khimov
d03b2ef4a1
Merge pull request #706 from nspcc-dev/feature/transfer
...
cli: implement transfer from multisig accounts
2020-03-05 12:28:01 +03:00
Roman Khimov
31948ee4a7
network: add a nil check in (*TCPTransport).Close, prevent panic
...
You have to try to trigger that, but in the event of server shutdown before it
actually started listening Close will easily panic like this:
2020-03-05T11:48:08.660+0300 INFO node started {"blockHeight": 6458, "headerHeight": 15605}
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x28 pc=0x9d5f0a]
goroutine 1 [running]:
github.com/nspcc-dev/neo-go/pkg/network.(*TCPTransport).Close(0xc000fd7050)
/home/rik/dev/neo-go/pkg/network/tcp_transport.go:78 +0x2a
github.com/nspcc-dev/neo-go/pkg/network.(*Server).Shutdown(0xc000182280)
/home/rik/dev/neo-go/pkg/network/server.go:190 +0x189
github.com/nspcc-dev/neo-go/cli/server.startServer(0xc000200160, 0x0, 0x0)
/home/rik/dev/neo-go/cli/server/server.go:367 +0x79e
github.com/urfave/cli.HandleAction(0xb84860, 0xccf240, 0xc000200160, 0xc0001c4500, 0x0)
/home/rik/dev/neo-go/vendor/github.com/urfave/cli/app.go:490 +0xc8
github.com/urfave/cli.Command.Run(0xc9a160, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0xca407f, 0x10, 0x0, ...)
/home/rik/dev/neo-go/vendor/github.com/urfave/cli/command.go:210 +0x996
github.com/urfave/cli.(*App).Run(0xc0001d64e0, 0xc0000ca000, 0x3, 0x3, 0x0, 0x0)
/home/rik/dev/neo-go/vendor/github.com/urfave/cli/app.go:255 +0x6af
main.main()
/home/rik/dev/neo-go/cli/main.go:25 +0x505
2020-03-05 11:53:26 +03:00
Roman Khimov
5c781be08d
Merge pull request #718 from nspcc-dev/fix-invocation-tx-checks-and-fee
...
Fix Invocation TX checks and fee
2020-03-05 11:51:51 +03:00
Roman Khimov
2032dd8e9f
Merge pull request #720 from nspcc-dev/fix-keycache-concurrent-access
...
core: protect (*Blockchain).keyCache with a lock
2020-03-05 11:46:23 +03:00