Roman Khimov
06bed2b4bf
dao: split GetStorageItem for Cached into external and internal versions
...
Lower Cached state shouldn't be changed until Persist. Fixes #994 .
2020-05-27 18:34:41 +03:00
Evgenii Stratonikov
b0d07c3031
vm: make Iterator interface public
...
There is nothing wrong with iterators being implemented in other parts
of code (e.g. Storage.Find). In this case type assertions can
prevent bugs at compile-time.
2020-05-27 11:40:46 +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
776bd85ded
vm,dao: return storage iterator from DAO in Storage.Find interop
...
Reproduce behavior of the reference realization:
- if item was Put in cache after it was encountered during
Storage.Find, it must appear twice
- checking if item is in cache must be performed in real-time
during `Iterator.Next()`
2020-05-27 11:40:46 +03:00
Evgenii Stratonikov
86ce234d5f
core: fix a typo in GetUnspentCoins interop
...
Fix a bug introduced in 8ed77f0d
.
2020-05-25 11:14:44 +03:00
Evgenii Stratonikov
eeeb05fc2c
compiler: restore support for GetUnspentCoins
...
Revert a587274
.
2020-05-22 13:24:44 +03:00
Evgenii Stratonikov
8ed77f0d25
core: make GetUnspentCoins interop return array, fix #978 .
2020-05-22 13:24:43 +03:00
Roman Khimov
fb9b2ae982
Merge pull request #975 from nspcc-dev/clone-struct-in-setitem-2.x
...
vm: clone struct item on SETITEM, close #972
2020-05-21 18:02:06 +03:00
Roman Khimov
f8b41e486c
vm: clone struct item on SETITEM, close #972
...
It's the same as with APPEND and VALUES.
2020-05-21 17:56:26 +03:00
Evgenii Stratonikov
a8fa68914a
vm: allow to convert Map item to bool
2020-05-21 17:53:19 +03:00
Roman Khimov
e07fd4f9f0
Merge pull request #973 from nspcc-dev/fix/refcount
...
vm: update stack size in SETITEM properly
2020-05-21 16:47:27 +03:00
Evgenii Stratonikov
cd8445aa59
vm: update stack size in SETITEM properly
2020-05-21 15:20:37 +03:00
Roman Khimov
60bca03577
crypto: add input data length check in (*PublicKey).DecodeBytes
...
DecodeBinary works with streams, so it can't do that, but DecodeBytes can and
should. Also fix unmarshalled binary buffer that this check exposed.
2020-05-21 14:28:16 +03:00
Roman Khimov
0ce3a12e87
core: check for key length in CheckWitness, fix #968
...
Only one type of keys is allowed here.
2020-05-21 14:27:41 +03:00
Roman Khimov
d0853c0471
Merge pull request #967 from nspcc-dev/fix-pickitem-and-vm-cli-2.x
...
Fix pickitem and vm cli 2.x
2020-05-21 13:37:35 +03:00
Roman Khimov
1721360dd1
vm: limit types accepted for PICKITEM, fix #965
...
bafdb916a0
change was wrong (probably brought
from neo-vm 3.0 at the state at which it existed back then), neo-vm 2.x
doesn't allow PICKITEM for arbitrary types.
2020-05-21 12:16:38 +03:00
Roman Khimov
328c6d7ce5
vm/cli: fix step command
...
It was setting a (wrong) breakpoint and couldn't then break out of it.
2020-05-21 12:15:50 +03:00
Roman Khimov
318ca55982
vm/cli: add push command to push something to the estack
2020-05-21 12:15:24 +03:00
Roman Khimov
5ec70b9fc2
Merge pull request #930 from nspcc-dev/fix/keys
...
Cache storage operations across same block tx executions
2020-05-21 11:08:42 +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
03cc8c118f
Merge pull request #954 from nspcc-dev/fix/struct_fields
...
compiler: support using OP= with struct fields and slice elements
2020-05-19 16:03:42 +03:00
Roman Khimov
f0d6b0a639
Merge pull request #956 from nspcc-dev/doc-update-2.x
...
Documentation update for 2.x
2020-05-19 16:02:55 +03:00
Roman Khimov
0079dfb695
interop: add some top-level doc.go
2020-05-19 13:13:15 +03:00
Roman Khimov
8c19b8f2a1
compiler/interop: add support for working with witnesses
2020-05-19 13:13:15 +03:00
Roman Khimov
085d50b430
interop/util: extend documentation
2020-05-19 13:13:15 +03:00
Roman Khimov
ec2bf7d52e
interop/transaction: update documentation
2020-05-19 13:13:15 +03:00
Roman Khimov
a587274351
compiler|transaction: remove transaction.GetUnspentCoins support
...
It's useless. Even though there is Neo.Transaction.GetUnspentCoins syscall
that can be used, its return type is an interop structure that's not accepted
by any other syscall, so you can't really do anything with it. And there is no
such interface for the .net Framework.
2020-05-19 13:13:15 +03:00
Roman Khimov
514f862b81
compiler|transaction: fix transaction.GetScript build, add to interop
...
There is no such syscall as Neo.Transaction.GetScript and GetScript should be
available for contract's use.
2020-05-19 13:13:15 +03:00
Roman Khimov
d0a3ce25ff
compiler/storage: add read-only related interops
2020-05-19 13:13:15 +03:00
Roman Khimov
07742bdf46
interop/storage: update documentation
2020-05-19 13:13:15 +03:00
Roman Khimov
dff0f724cd
interop/runtime: update documentation, fix Notify
...
Notify doesn't return anything!
2020-05-19 13:13:15 +03:00
Roman Khimov
eb82661f6b
compiler/iterator: add missing iterator.Concat function
...
We have a syscall for it, so it should be exposed.
2020-05-19 13:13:15 +03:00
Roman Khimov
a17bd6176f
interop/iterator: documentation update
2020-05-19 13:13:15 +03:00
Roman Khimov
31d7b07eb5
interop/input|output: update documentation
2020-05-19 13:13:15 +03:00
Roman Khimov
6c0553da47
interop/header: update documentation
2020-05-19 13:13:15 +03:00
Roman Khimov
d5d497ccd7
compiler: add support for enumerator interop package
2020-05-19 13:13:15 +03:00
Roman Khimov
8fb4bbca4e
interop/enumerator: update doc, fix Next return value
2020-05-19 13:13:15 +03:00
Roman Khimov
5cebd4a7a2
compiler/engine: add dynamic APPCALL generation, fix #914
...
Previously we could generate dynamic appcall with a kludge of
AppCall([]byte{/* 20 zeroes */, realScriptHash, args...)
Now there is a separate function for this.
2020-05-19 13:13:15 +03:00
Roman Khimov
78b2387640
interop/engine: update documentation
2020-05-19 13:13:15 +03:00
Roman Khimov
10abac4362
interop/crypto: update documentation
2020-05-19 13:13:15 +03:00
Roman Khimov
f0047b4055
interop/contract: update documentation, fix some interfaces
...
Some functions were just not correct in their interfaces.
2020-05-19 13:13:15 +03:00
Roman Khimov
a43f2234dd
core: fix Neo.Contract.GetStorageContext security check
...
This syscall should only work for contracts created by current transaction and
that is what is supposed to be checked here. Do so by looking at the
differences between ic.dao and original lower DAO.
2020-05-19 13:13:15 +03:00
Roman Khimov
5d941364bd
compiler/interop: expose GetTransactionHeight
...
And sort syscall names as they change the indentation anyway.
2020-05-19 13:13:15 +03:00
Roman Khimov
80b8b50f02
core: fix Neo.Blockchain.GetValidators implementation
...
It should return keys, attempting to push []*state.Validator to the stack
would probably lead to failure.
2020-05-19 13:13:15 +03:00
Roman Khimov
9e94895bb0
interop/blockchain: update documentation
2020-05-19 13:13:15 +03:00
Roman Khimov
d09c3b1e27
interop/block: update documentation, fix GetTransaction
...
GetTransaction never worked with hash, it works with indexes.
2020-05-19 13:13:15 +03:00
Roman Khimov
7abd35b358
compiler: add support for attribute syscalls
2020-05-19 13:13:15 +03:00
Roman Khimov
77c5f28b09
interop/attribute: update documentation
2020-05-19 13:13:14 +03:00
Roman Khimov
f69e654260
compiler: add missing asset syscalls, sort them
2020-05-19 13:13:14 +03:00
Roman Khimov
cbcc8e160f
asset: update documentation and fix Create/Renew
...
Both Create and Renew have things returned from them.
2020-05-19 13:13:14 +03:00