Evgenii Stratonikov
b5fb63d091
*: specify first state root index in config
2020-06-24 12:37:27 +03:00
Evgenii Stratonikov
d128b55dbf
*: add config flag for enabling state root feature
2020-06-24 12:37:27 +03:00
Evgenii Stratonikov
c06b3b669d
io: make maxArraySize public
2020-06-24 12:14:33 +03:00
Evgenii Stratonikov
bc81b56708
consensus: fix decodeData doc-comment
2020-06-24 10:47:44 +03:00
Roman Khimov
2cddeadd9a
Merge pull request #1089 from nspcc-dev/fix/docker-startup
...
docker: fix shell condition check in entrypoint script
2020-06-23 16:42:39 +03:00
alexvanin
423495ecc3
docker: fix shell condition check in entrypoint script
2020-06-23 12:08:49 +03:00
Evgenii Stratonikov
2863343f03
consensus: use a method function for NewPayload()
2020-06-22 17:06:28 +03:00
Roman Khimov
3a6186af54
Merge pull request #1083 from nspcc-dev/fix/stateroot
...
Request verified state roots
2020-06-22 16:42:41 +03:00
Roman Khimov
fec8916cb9
Merge pull request #1087 from nspcc-dev/fix/readvarbytes
...
Allow to restrict slice size in `io.ReadVarBytes()`
2020-06-22 15:42:07 +03:00
Evgenii Stratonikov
ad0cf146e8
consensus: restrict invocation script size
2020-06-22 15:36:12 +03:00
Evgenii Stratonikov
511d18d409
io: allow to restrict slice size in ReadVarBytes
2020-06-22 15:35:42 +03:00
Roman Khimov
9767817ee4
Merge pull request #1086 from nspcc-dev/fix/recovery
...
consensus: fix commitCompact payload
2020-06-22 14:52:15 +03:00
Evgenii Stratonikov
aebed3826b
consensus: fix commitCompact payload
...
Add state root signature to `commitCompact` in `recoveryMessage`.
2020-06-22 14:30:21 +03:00
Evgenii Stratonikov
caf53740d3
network: do not process state roots below verified height
...
Implement fast path to skip state root retrieval and decoding.
2020-06-22 12:33:35 +03:00
Evgenii Stratonikov
e2e1bd09ae
network: request state roots if needed
2020-06-22 12:33:35 +03:00
Evgenii Stratonikov
f8051da0bd
core: extend Blockchainer interface with StateHeight()
...
Allow to query current verified state root height.
2020-06-22 10:53:13 +03:00
Evgenii Stratonikov
f665843887
core: update verified state root height
2020-06-22 10:53:12 +03:00
Roman Khimov
9615e83c00
Merge pull request #952 from nspcc-dev/fix/structfield
...
compiler: set default values for complex struct fields (2.x)
2020-06-11 17:50:18 +03:00
Evgenii Stratonikov
cc5b5bff2e
compiler: emit NOTEQUAL only for numbers
...
Dispatch based on types similarly to EQUAL.
2020-06-11 17:41:52 +03:00
Evgenii Stratonikov
9d6b0ee4a8
compiler: disallow comparing slices with nil
...
NEO VM does not distinguish between empty and nil slices. Supporting
this is not easy and requires changing lots of other opcodes.
Pointers are not supported anyway and slices can be checked for
emptiness by inspecting their `len`.
2020-06-11 17:40:02 +03:00
Evgenii Stratonikov
bf6aa02dcf
compiler: set default values for complex struct fields
...
Set default value also for complex (struct, map) types.
Note: because VM does not distinguish empty array and nil array,
comparison 'a == nil' can't be handled properly without substantial
effort. This will be fixed in NEO3.
2020-06-11 17:40:02 +03:00
Roman Khimov
d5ba2e49a2
Merge pull request #1045 from nspcc-dev/fix/stateroot
...
consensus: verify state root in PrepareRequest
2020-06-11 11:25:02 +03:00
Evgenii Stratonikov
8614867439
consensus: verify state root in PrepareRequest
...
Fixes #1042 .
2020-06-11 10:18:12 +03:00
Roman Khimov
4732103294
Merge pull request #1046 from nspcc-dev/fix-key-recovery-interops
...
Fix key recovery interops
2020-06-10 19:51:39 +03:00
Roman Khimov
7d786fac79
core: fix key recovery interops return value
...
It's uncompressed coordinate, both X and Y, not just X. Fix #1043 .
2020-06-10 19:20:57 +03:00
Roman Khimov
a6541c4514
keys: add support for uncompressed serialization in PublicKey
2020-06-10 19:17:08 +03:00
Roman Khimov
c13ca8d597
Merge pull request #1041 from nspcc-dev/consensus-fixes-2.x-neox
...
Consensus fixes 2.x neox
2020-06-10 12:07:22 +03:00
Roman Khimov
37173bcf22
update dbft library
...
Include logging updates and LastSeenMessages fix.
2020-06-10 11:45:51 +03:00
Roman Khimov
788304ec49
Merge pull request #1021 from nspcc-dev/feature/remove
...
compiler: implement Remove builtin (2.x)
2020-06-10 11:09:56 +03:00
Roman Khimov
edd60e656e
consensus: fix processing changeview payloads from recovery message
...
Using view number from the recovery message is just plain wrong, it's gonna be
higher than our current view and these messages will be treated as coming from
the future, even though they have their original view number included.
2020-06-09 18:17:01 +03:00
Roman Khimov
76f71ab1ef
Merge pull request #1012 from nspcc-dev/feature/mptrpc
...
rpc: implement MPT-related RPC (2.x)
2020-06-09 17:25:55 +03:00
Evgenii Stratonikov
1fd7938fd8
network: process state roots properly
2020-06-08 17:31:59 +03:00
Evgenii Stratonikov
519a98039c
rpc: implement verifyproof RPC
...
Test getproof and verifyproof together.
2020-06-08 17:31:59 +03:00
Evgenii Stratonikov
8cbbddddaf
rpc: implement getproof RPC
2020-06-08 17:31:58 +03:00
Evgenii Stratonikov
fe8038e8b7
rpc/server: implement getstateheight RPC
2020-06-08 16:40:37 +03:00
Evgenii Stratonikov
53dc7f27b6
rpc/server: implement getstateroot RPC
2020-06-08 16:40:37 +03:00
Evgenii Stratonikov
dcaa82b32b
rpc: convert null
value to a defaultT
...
Right now we convert it is unmarshaler into a float64(0)
so an error is supressed.
2020-06-08 16:39:02 +03:00
Roman Khimov
349d8a1984
Merge pull request #1022 from nspcc-dev/fix-maxfreetxperblock-neox-2.x
...
core: respect MaxFreeTransactionsPerBlock setting
2020-06-08 12:53:26 +03:00
Roman Khimov
6437f4b32e
core: respect MaxFreeTransactionsPerBlock setting
...
Fix #1019 .
2020-06-08 12:35:39 +03:00
Evgenii Stratonikov
9f7f94a6fb
compiler: implement Remove builtin
...
Support removing items from collections via REMOVE opcode.
2020-06-08 12:05:44 +03:00
Roman Khimov
8e785feeb6
Merge pull request #1017 from nspcc-dev/neox/recover_interop
...
compiler: add recover interops
2020-06-06 22:59:13 +03:00
Anna Shaleva
4f1cf07075
compiler: add public key recovering syscalls
...
Added Secp256r1Recover and Secp256k1Recover syscalls.
2020-06-05 22:13:17 +03:00
Evgenii Stratonikov
7b1a54c934
rpc/server: unify boolean flag handling
...
Implement (*Param).GetBoolean() for converting parameter to bool value.
It is used for verbosity flag and is false iff it is either zero number
or empty sting.
2020-06-05 12:51:09 +03:00
Evgenii Stratonikov
44f93c7c69
rpc/server: simplify errors handling during parameter parsing
2020-06-05 12:51:09 +03:00
Roman Khimov
0b87a68210
Merge pull request #1014 from nspcc-dev/mpt-fixes
...
Mpt fixes
2020-06-04 19:04:02 +03:00
Roman Khimov
a1c4d7ce26
core: do MPT compaction every once in a while
...
We need to compact our in-memory MPT from time to time, otherwise it quickly
fills up all available memory. This raises two obvious quesions --- when to do
that and to what level do that.
As for 'when', I think it's quite easy to use our regular persistence interval
as an anchor (and it also frees up some memory), but we can't do that in the
persistence routine itself because of synchronization issues (adding some
synchronization primitives would add some cost that I'd also like to avoid),
so do it indirectly by comparing persisted and current height in `storeBlock`.
Choosing proper level is another problem, but if we're to roughly estimate one
full branch node to use 1K of memory (usually it's way less than that) then we
can easily store 1K of these nodes and that gives us a depth of 10 for our
trie.
2020-06-04 17:25:57 +03:00
Roman Khimov
e3af560d11
dao: optimize storage cache flushing
...
Items were serialized several times if there were several successful
transactions in a block, prevent that by using State field as a bitfield (as
it almost was intended to) and adding one more bit. It also eliminates useless
duplicate MPT traversions.
Confirmed to not break storage changes up to 3.3M on testnet.
2020-06-04 17:21:58 +03:00
Roman Khimov
69ccca675d
core: fix PrevHash calculation for MPTRoot
...
This was differing from C# notion of PrevHash. It's not a previous root, but
rather a hash of the previous serialized MPTRoot structure (that is to be
signed by CNs).
2020-06-04 17:19:30 +03:00
Roman Khimov
685d3eb870
dao: prevent double serialization of StorageItems
...
Converting to MPT value serializes the StorageItem, so it makes no sense doing
it again.
2020-06-04 17:18:15 +03:00
Roman Khimov
f77c239296
mpt: fix extension node cache invalidation
...
It should always be invalidated if something changes in the `next` (below the
extension node).
2020-06-04 17:16:32 +03:00