Evgenii Stratonikov
bff67c921a
core: wrap dao in GetTestVM
...
MPT must not be shared to the test VM.
Fix DATA RACE between `Collapse()` and RPC calls.
2020-09-18 12:07:02 +03:00
Evgenii Stratonikov
e0f406fd3a
rpc/client: add constant to ValidUntilBlock
...
There are 2 problems:
1. `getvalidators` RPC can return empty list.
2. `+1` in single node can be too resrictive.
Proper solution for (1) may require requesting
standby validators. Here we add constant
to fix occasional test failures.
2020-09-18 12:07:02 +03:00
Evgenii Stratonikov
914b12af44
network: fix datarace in TCPTransport
2020-09-18 12:07:02 +03:00
Evgenii Stratonikov
fd98a9194a
cli: add tests for wallet dump
2020-09-18 12:07:02 +03:00
Evgenii Stratonikov
40a24bad64
cli: add tests for wallet import-deployed
...
Fix bugs with import, allow to sign tx with contract.
2020-09-18 12:07:02 +03:00
Evgenii Stratonikov
583ef546f9
cli: add tests for wallet claim
...
Fix a NEO contract hash used in tx.
2020-09-18 12:07:02 +03:00
Evgenii Stratonikov
dff2ac1387
cli: add test for candidate register/unregister/vote
...
Also fix a bug with tx signing.
2020-09-18 12:07:02 +03:00
Evgenii Stratonikov
6e5a637da9
cli: add tests for multisig sign
...
This test is also a good example of how to
create and sign multisig transaction from scratch.
2020-09-18 12:07:02 +03:00
Evgenii Stratonikov
9817da7c4e
cli: add tests for nep5 import/remove
...
Also unify `remove` and `import` arguments.
2020-09-18 12:07:02 +03:00
Evgenii Stratonikov
075f353062
cli: add tests for nep5 multitransfer
...
Also fix a bug when token's hash was incorrectly processed.
2020-09-18 12:07:02 +03:00
Evgenii Stratonikov
59157724e3
cli: add tests for wallet remove
2020-09-18 12:07:02 +03:00
Evgenii Stratonikov
4c00b26fb8
cli: add tests for wallet import-multisig
2020-09-18 12:07:02 +03:00
Evgenii Stratonikov
0a5fe84589
cli: add tests for wallet export
2020-09-18 12:07:02 +03:00
Evgenii Stratonikov
5d7f177811
cli: add tests for wallet/account creation
2020-09-18 12:07:02 +03:00
Evgenii Stratonikov
d30c7db49a
cli: add tests for NEP5 transfer
2020-09-18 12:07:02 +03:00
Evgenii Stratonikov
468f7ee650
cli: add tests for NEP5 balance querying
2020-09-18 12:07:02 +03:00
Evgenii Stratonikov
282b55494b
consensus: allow to shutdown service
2020-09-18 12:07:01 +03:00
Evgenii Stratonikov
0dda247719
cli: move input handling to a separate package
2020-09-18 12:05:31 +03:00
Evgenii Stratonikov
758a88a813
rpc: exit from Start after Listener is running
...
If port is dynamically allocated, `(*Server).Addr` will contain
0 port. This commit executes listener before exiting from `Start()`
and sets Addr to the actual address.
2020-09-18 12:05:31 +03:00
Evgenii Stratonikov
911be78cc7
cli: use Writer from app instead of Stdout
...
It is useful in tests.
2020-09-18 12:05:31 +03:00
Roman Khimov
bfe3b3d05d
Merge pull request #1401 from nspcc-dev/compiler/subslice
...
Support removing elements from slice.
2020-09-15 18:42:08 +03:00
Evgenii Stratonikov
5ba22a02f4
docs: mention util
and convert
packages in compiler
2020-09-15 16:34:00 +03:00
Evgenii Stratonikov
bcc11cbd74
compiler: support removing slice elements
...
Go-way of removing elements from slice is via `append` builtin.
There is a separate opcode for removing elements from
Arrays, which is cheaper and supported in this commit.
2020-09-15 16:33:43 +03:00
Evgenii Stratonikov
78948ef7af
compiler: emit error for non-byte subslices
...
They are not supported for now, as VM has only
`SUBSTR` opcode for Buffers (`[]byte` in Go).
2020-09-15 16:21:44 +03:00
Roman Khimov
3f27cf5901
Merge pull request #1398 from nspcc-dev/tps-part-3
...
Improve TPS, part 3
2020-09-14 13:07:17 +03:00
Roman Khimov
19c69618c5
transaction: cache tx size, don't serialize it over and over again
2020-09-11 18:55:19 +03:00
Roman Khimov
a6a1df4e0d
consensus: update dbft, use new timer
2020-09-11 18:55:07 +03:00
Roman Khimov
83fc38ae3a
mempool: don't create new big.Int in tryAddSendersFee() if possible
...
Do a little less allocations.
2020-09-10 15:35:19 +03:00
Roman Khimov
fc7ea6217d
mempool: avoid reassigning utilityBalanceAndFees value
...
It's not needed, we're either creating a new one and assigning it 6 lines
above or we're changing already existing big.Int via a pointer, so no update
is needed.
2020-09-10 15:20:04 +03:00
Roman Khimov
7310e748e3
core: reuse mempool from AddBlock() for bc.isTxStillRelevant()
...
It's already there most of the time and creating another slice is just a waste
of time. Checking for presence with map is also a little faster.
2020-09-10 15:02:03 +03:00
Roman Khimov
26339c75dc
vm/core: drop old key caching system
...
Obsoleted by f5f58a7e91
.
2020-09-10 14:43:24 +03:00
Roman Khimov
63bb36ca12
Merge pull request #1396 from nspcc-dev/tps-part-2-clean
...
Improve TPS, part 2
2020-09-09 23:23:32 +03:00
Roman Khimov
120c4d4406
network: don't compress Inventory messages
...
They're not really compressable.
2020-09-09 20:46:31 +03:00
Roman Khimov
9c5ef8d234
dbft: rev up, pick performance improvements
2020-09-09 20:46:31 +03:00
Roman Khimov
b78bc7f097
network: fix tx requests, we can't ask more than 500 txes at once
2020-09-09 20:46:31 +03:00
Roman Khimov
fe1f1d19be
mempool: store only pointer in the verifiedMap
...
It's only used for presence checks, there is no need for metadata here.
2020-09-09 20:46:31 +03:00
Roman Khimov
a2d9b89964
dao: reuse buffers when storing blocks, txes and aers
...
Reduce memory allocation pressure.
2020-09-09 20:46:31 +03:00
Roman Khimov
097b2b8e78
network: fail fast in iteratePeersWithSendMsg
...
This easily saves us some allocations for single node.
2020-09-09 20:46:31 +03:00
Roman Khimov
af17bbfeab
rpc/server: encode answers more efficiently
...
We're at the point where even this code can clearly be seen in profiles. We
can save on some buffers (and CPU cycles) by encoding the answer once.
Another ~2% TPS for single node.
2020-09-09 20:46:31 +03:00
Roman Khimov
9187e2ab25
rpc/response: drop unused GetRawTx type
2020-09-09 20:46:31 +03:00
Roman Khimov
9591d64e53
mempool: don't sort items by hash
...
There is nothing requiring us to do so. It also is bad because it allows for
new transaction to replace some already existing one with the same fee
parameters just because it has "better" hash.
But the other thing is that for transactions with equal fees it's always
better for us to append them to the end of the list, instead of inserting them
in the middle, so this change allows to reduce slice item movements and gain
some 6-7% increase for single-node TPS.
2020-09-09 20:46:31 +03:00
Roman Khimov
5df726db68
mempool: replace timeStamp with blockStamp
...
Time is not really relevant for us here and we don't use this timestamp in any
way. Yet it occupies 24 bytes and we do two clock_gettime calls to get it.
Replace it with blockStamp which is going to be used in the future for
transaction retransmissions.
It allows to improve single-node TPS by another 3%.
2020-09-09 20:46:31 +03:00
Roman Khimov
bc31ab3d2c
storage: add bloom filter to leveldb
...
We're constantly checking for transactions there and most of the time this
check is not successful (meaning that the transaction in question is
new). Bloom filter easily reduces the need to search over the DB in 99% of
these cases and gives some 13% increase in single-node TPS.
2020-09-09 20:46:31 +03:00
Roman Khimov
f5f58a7e91
keys: add simple LRU key cache for 1024 elements
...
The cost of Y calculation from X is comparable with signature check, so it
reduces witness check overhead by ~30% for cached keys and gives ~5% overall
boost in TPS.
2020-09-09 20:46:31 +03:00
Roman Khimov
0ea8c8ba67
mempool: drop a level of indirection
...
`item` is so small that it makes no sense bothering memory allocator with
every instance of it.
2020-09-09 20:46:31 +03:00
Roman Khimov
53c014a0bb
crypto/consensus: sign hashes and cache them for consensus payloads
...
Avoid serializing payload again and again for various purposes. To sign it, we
only need a hash.
Some 2.4% gain in TPS could be achieved with this.
2020-09-09 20:46:31 +03:00
Roman Khimov
49e9c1aa0f
Merge pull request #1387 from nspcc-dev/rpc/notifications_state_serialisation
...
rpc: replace result.ApplicationLog with state.AppExecResult
2020-09-07 17:48:08 +03:00
Roman Khimov
cf322cd9f4
Merge pull request #1391 from nspcc-dev/compiler/const
...
Small compiler improvements
2020-09-07 17:46:41 +03:00
Roman Khimov
77ff84932b
Merge pull request #1390 from nspcc-dev/fix/persist
...
core: do not persist Policy contract
2020-09-07 15:39:01 +03:00
Anna Shaleva
27348973c3
rpc: fix JSON marshalling for Invoke result
...
We should return a quote string as JSON value in case of recursive
reference, otherwise json.Marshal returns an error.
2020-09-07 13:57:45 +03:00