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
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
Evgenii Stratonikov
231a5189a2
compiler: allow using OP= with struct fields and slice elements
...
Do it in a generic way, there is no need in restricting to only
variables.
2020-05-19 12:42:37 +03:00
Roman Khimov
9c46e79745
compiler: add support for account syscalls
...
Turns out, they never functioned correctly.
2020-05-18 19:08:28 +03:00
Roman Khimov
83df376d17
account: add missing IsStandard interop function
...
There is a Neo.Account.IsStandard syscall, but we didn't have a wrapper for
it.
2020-05-18 19:08:28 +03:00
Roman Khimov
6dff01672c
interop/account: update and extend documentation
2020-05-18 19:08:28 +03:00
alexvanin
8db714785d
rpc/client: handle client creation error in new wsclient
...
Client returns error if it can't parse endpoint string. WSClient
should check client error or there could be panic at `cl.cli = nil`
expression.
2020-05-18 16:25:36 +03:00
Roman Khimov
8cd7bc7e07
rpc/client: deduplicate block/header tests a bit
...
The same data is copied at least three times here.
2020-05-14 17:28:14 +03:00
Roman Khimov
9546e021a9
rpc/block: rework the way Block is JSONized
...
Our block.Block was JSONized in a bit different fashion than result.Block in
its Nonce and NextConsensus fields. It's not good for notifications because
third-party clients would probably expect to see the same format. Also, using
completely different Block representation in result is probably making our
client a bit weaker as this representation is harder to use with other neo-go
components.
So use the same approach we took for Transactions and wrap block.Base which is
to be serialized in proper way.
2020-05-14 17:28:14 +03:00
Roman Khimov
83febead59
transaction: add json.Unmarshaler to Attribute
...
It actually was missing and it might affect Transaction conversion to/from
JSON.
2020-05-14 17:28:14 +03:00
Roman Khimov
8f55f0ac76
rpc/server: add notification filters
...
And check state string correctness on unmarshaling.
2020-05-14 17:28:14 +03:00