Roman Khimov
9571ecffac
core: add proper asset issuer for UTXO assets
...
It just wasn't set which is wrong (AFmseVrdL9f9oyCzZefL9tG6UbvhPbdYzM was
always the issuer).
2021-02-12 00:01:00 +03:00
Anna Shaleva
4a8259caea
rpc: adjust getrawtransaction
and gettransactionheight
RPC call
...
We should not return transaction metadata from `getrawtransaction` in case
transaction is not in the mempool. Height shouldn't be returned from
`gettransactionheight` in case transaction is in the mempool.
2020-12-31 12:44:07 +03:00
Roman Khimov
64d0876fc0
Merge pull request #1503 from nspcc-dev/mpt/refcount
...
Implement reference counting in MPT
2020-11-18 14:20:42 +03:00
Evgenii Stratonikov
0ffffb93d7
mpt: implement reference counting
2020-11-18 12:16:05 +03:00
Evgenii Stratonikov
d93ddfda10
network: retransmit stale transactions
2020-11-11 15:51:36 +03:00
Roman Khimov
136e4b5886
core: move NotificationEvent->NEP5Transfer conversion to state
...
We'll need it as a separate function and it's cleaner this way.
2020-10-29 22:10:40 +03:00
Roman Khimov
4f7fa732cf
core|config: make max(free)txperblock height-dependent
...
See neo-project/neo-modules#336 .
2020-09-14 22:57:03 +03:00
Roman Khimov
e14ba6c855
core: fix policy-enforcing network fee check
...
0.001 should be added to the 'extra' value as per https://neo.org/blog/details/4148
2020-09-11 16:52:58 +03:00
Roman Khimov
0ef65d1bb9
config: add minimum network fee setting
...
Follow neo-project/neo#1901 .
2020-09-11 15:41:08 +03:00
Roman Khimov
8865d5b2c5
Merge pull request #1395 from nspcc-dev/add-limits-to-gettransfers
...
Add limits to get(nep5|utxo)transfers
2020-09-09 15:45:09 +03:00
Roman Khimov
5b05081525
config: allow configuring free gas depending on height
...
And update default mainnet/testnet settings. Follow neo-project/neo#1888 and
neo-project/neo-node#656 .
2020-09-08 18:52:53 +03:00
Roman Khimov
b310ac051b
core/rpc: add continue
flag to iterating functions
...
Most of the time we don't need to get all transfers from the DB and
deserialize them.
2020-09-08 15:38:33 +03:00
Roman Khimov
d3e415d3bd
core/state: reverse the order of ForEachTransfer
...
When using limits we're usually concerned about the most recent
transfers. Returning 3 transfers from the middle of the chain isn't very
helpful.
2020-09-08 12:57:45 +03:00
Roman Khimov
39897e811d
core: fix NEO UTXO tracking, drop Fixed8 multiplier
...
When this vout:
{
"n" : 0,
"address" : "ASkbjwosE3aKyGtDQkEgqhNq3Zpv8Xkt14",
"asset" : "0xc56f33fc6ecfcd0c225c4ab356fee59390af8560be0e930faebe74a6daff7c9b",
"value" : "606"
},
Becomes this transfer:
{
"txid" : "0x192ab8e422aed6ac868cb329d6f9af20964134b591908c736d32a2fd8a51d7bf",
"amount" : "60600000000",
"block_index" : 6113653,
"timestamp" : 1599199074
}
Something is wrong here.
2020-09-04 09:09:35 +03:00
Roman Khimov
ffbdcb202f
Merge pull request #1288 from nspcc-dev/fix/utxo
...
rpc: adjust `getutxotransfers` RPC
2020-08-07 19:08:46 +03:00
Evgenii Stratonikov
57a325b3d5
rpc: adjust getutxotransfers
RPC
2020-08-07 18:12:40 +03:00
Anna Shaleva
4715efd531
core, rpc: invoke script with hashes for verifying
...
Closes #1275
2020-08-07 13:18:55 +03:00
Evgenii Stratonikov
7bd4488ff9
core: do not store NEP5 transfer log in memory
...
Traversing transfer log instead of accumulating and returning it
is faster and takes less memory.
2020-08-06 14:22:30 +03:00
Evgenii Stratonikov
022fb04077
rpc: implement getutxotransfers
RPC
2020-08-06 14:16:28 +03:00
Evgenii Stratonikov
407e348cd5
core: save UTXO transfer info
2020-08-06 14:03:21 +03:00
Evgenii Stratonikov
e4fcd90b6d
state: make NEP5Transfer log more generic
2020-08-04 16:57:36 +03:00
Evgenii Stratonikov
c6d33c5841
core: save NEP5 transfer notify index
...
TransferNotifyIndex is the index of transfer event in the list
of all transfers in a transaction.
2020-08-03 10:58:23 +03:00
Evgenii Stratonikov
7cd1bca1e1
core,dao: save contract metadata on migration
...
After contract is migrated there is no way to retrieve it's state.
This commit implements some metadata for NEP5 contracts, so that
values important for diplaying transfer log aren't lost.
2020-07-24 14:38:10 +03:00
Roman Khimov
6d32751292
core: fix stateroot height update for testnet
...
When synchronizing with stateroot-enabled network from genesis and if
stateroot is not enabled in block zero we were failing to update state height
because initially it's updated with a jump from 0 to StateRootEnableIndex, so
we should allow that to happen to have correct state height.
2020-07-18 10:17:17 +03:00
Evgenii Stratonikov
2b21102c14
core,dao: use MPT only if it is enabled in config
2020-06-24 16:13:27 +03:00
Roman Khimov
25fdc62203
core: add state height to prometheus metrics
2020-06-24 14:47:08 +03:00
Roman Khimov
ea17793aee
core: fix unconditional MPT collapsing
...
It should depend on EnableStateRoot.
2020-06-24 14:41:57 +03:00
Evgenii Stratonikov
d128b55dbf
*: add config flag for enabling state root feature
2020-06-24 12:37:27 +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
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
8cbbddddaf
rpc: implement getproof RPC
2020-06-08 17:31:58 +03:00
Roman Khimov
6437f4b32e
core: respect MaxFreeTransactionsPerBlock setting
...
Fix #1019 .
2020-06-08 12:35:39 +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
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
Evgenii Stratonikov
20f190ef69
core: update MPT during block processing
2020-06-03 13:33:44 +03:00
Evgenii Stratonikov
503442a60d
dao: restrict GetStorageItems by prefix
...
All storage items can still be retrived via zero-length prefix.
2020-05-27 11:40:46 +03:00
Evgenii Stratonikov
b96fe8173c
core,dao: implement Block-level storage caching
...
The order in which storage.Find items are returns depends on what items
were processed in previous transactions of the same block.
The easiest way to implement this sort of caching is to cache operations
with storage, flushing the only in `Persist()`.
2020-05-19 17:19:51 +03:00
Roman Khimov
9454ef5c28
core: improve locking in storeBlock
...
Getting batch, updating Prometheus metrics and pushing events doesn't require
any locking: batch is a local cache batch that no one outside cares about,
Prometheus metrics are not critical to be in perfect sync and events are
asynchronous anyway.
2020-05-13 17:17:41 +03:00
Roman Khimov
1ac4f8528d
core: add Blockchain event subscription mechanism
...
A deep internal part of #895 . Blockchainer interface is also extended for
various uses of these methods.
2020-05-12 17:41:15 +03:00
Roman Khimov
2e58a14978
core: improve documentation a little
2020-05-12 17:20:31 +03:00
Evgenii Stratonikov
ee0ba9b1b4
core: make SpawnVM a method of context
...
spawnVMWithInterops is rather long too type and
it doesn't use Blockchain in any way.
2020-04-08 08:38:45 +03:00
Evgenii Stratonikov
030b7754ad
core: move DAO to a separate package
2020-04-08 08:38:44 +03:00
Roman Khimov
5f09381cf4
core: wrap cached dao properly, don't miss cached data
...
Fixes #817 where invoked contract missed updated account information because
it got it one layer below cachedDao used to process the block.
2020-04-03 10:15:11 +03:00
Anna Shaleva
5a984fdf88
config: move config.go out of config/
...
closes #423
2020-03-31 17:55:59 +03:00
Evgenii Stratonikov
6ed2bd63b9
core: marshal AppExecResult.Stack as an array
...
Closes #782 .
2020-03-23 16:27:47 +03:00
Roman Khimov
d5d0479671
core: verify results of issue transaction
...
It shouldn't try to issue more tokens than there is available.
2020-03-17 11:40:01 +03:00
Roman Khimov
10601cb375
core: add issuer hashes into the verification list for Issue TX
...
As it should be done.
2020-03-17 11:40:00 +03:00
Roman Khimov
dca637d2d0
core: add owner hash to verified list for Register TX
...
As it should be done.
2020-03-17 11:37:02 +03:00
Roman Khimov
77a799f7d0
core: add missing state tx verifications
2020-03-16 20:14:59 +03:00