Roman Khimov
090bee8624
native: change OnPersist/PostPersist handling
...
Every contract now has these and they're always invoked. See
neo-project/neo#1913 and neo-project/neo#2119 .
2020-12-13 21:36:06 +03:00
Roman Khimov
fc361213a7
Merge pull request #1608 from nspcc-dev/core/callflags
...
core: adjust call flags
2020-12-11 19:23:15 +03:00
Anna Shaleva
2290b91b83
core: fix verification call flag
...
Previous commit sets AllowCall flag as required for Neo.Native.Call, but
invocation script was loaded with ReadStates flag => native contracts
verification failed.
Other contracts can also make use of AllowCall call flag.
2020-12-11 17:45:12 +03:00
Roman Khimov
742c15cf0b
Merge pull request #1609 from nspcc-dev/fix/json
...
stackitem: fix JSON encoding
2020-12-11 14:07:21 +03:00
Roman Khimov
1d529dc5b6
Merge pull request #1607 from nspcc-dev/compiler/safe
...
Set `Safe` flag in emitted manifest
2020-12-11 14:03:55 +03:00
Evgenii Stratonikov
18b331d765
stackitem: fix JSON encoding
...
Encode both `Buffer` and `ByteString` to UTF-8 bytes.
Follow https://github.com/neo-project/neo/pull/1715 .
2020-12-11 13:30:47 +03:00
Anna Shaleva
53e45d793b
core: adjust call flags
2020-12-11 11:38:14 +03:00
Anna Shaleva
fadbae8997
core: rename call flags
...
Also new States flag is added and ReadOnly flag is adjusted.
2020-12-11 10:34:01 +03:00
Evgenii Stratonikov
4dc5877674
compiler: remove unused code and simplify error handling
...
After cbf26f3
some errors can't occur.
2020-12-10 18:56:08 +03:00
Anna Shaleva
0b5cf78468
network: add notary request payload
2020-12-10 18:17:31 +03:00
Anna Shaleva
501c0c93c6
core: take into account NotaryAssisted attributes during verification
...
It's a bug, we have to reserve proper amount of GAS from verification
gas limit for NotaryAssisted attributes.
2020-12-10 18:17:31 +03:00
Anna Shaleva
6d357c3793
core: return a special error from verifyHashAgainstScript
...
It will help us to distinguish proper `false` verification result from
various verification errors.
2020-12-10 18:17:31 +03:00
Anna Shaleva
2ab0e6c399
core: check stack length before returning false
verification result
...
We must be sure that stack has no other items before returning `false`
verification result. It is an error in both cases, but by preserving the
order we know exactly that it was correct `false` on stack.
2020-12-10 18:17:31 +03:00
Evgenii Stratonikov
ec1ff42872
manifest: add Safe
flag for NEP-17 methods
2020-12-10 18:04:49 +03:00
Evgenii Stratonikov
2341ae0c53
compiler: specify safe methods in config
2020-12-10 18:00:43 +03:00
Evgenii Stratonikov
d7194e4da5
compiler: do not check for main package in ConvertToManifest
2020-12-10 17:45:23 +03:00
Evgenii Stratonikov
9fd8577dd9
compiler: use Options
in ConvertToManifest()
2020-12-10 17:43:25 +03:00
Evgenii Stratonikov
e63191d31f
core: hangle CallingScriptHash correctly
...
When using native contracts, script hash of second-to-top context
on invocation stack does not always correspond to a real calling
contract.
2020-12-10 16:52:36 +03:00
Evgenii Stratonikov
e903e40085
core: call from native contracts synchronously
...
Follow neo-project/neo#2130 .
2020-12-10 16:43:46 +03:00
Roman Khimov
189d0d801a
Merge pull request #1604 from nspcc-dev/fix/deploy
...
cli/smartcontract: return error if deploy script failed to run
2020-12-10 15:38:33 +03:00
Evgenii Stratonikov
7368ff09ef
rpc: marshal GAS correctly
...
When using ",string" in JSON struct tag, value is first unmarshaled to
a numeric value (float64 in our case), then to our real type via
`UnmarshalJSON()`, which can lead to rounding errors.
2020-12-10 15:32:00 +03:00
Roman Khimov
a3f91ba8c5
Merge pull request #1603 from nspcc-dev/compiler/types
...
compiler: enforce `Hash160` and `Hash256` size in literals
2020-12-10 14:55:03 +03:00
Roman Khimov
f3e64e08d7
Merge pull request #1602 from nspcc-dev/fix/test
...
vmcli/test: run shell after providing input
2020-12-10 14:42:30 +03:00
Evgenii Stratonikov
ff4880249d
compiler: enforce Hash160
and Hash256
size in literals
...
Can be useful to prevent small typos.
2020-12-10 14:11:28 +03:00
Evgenii Stratonikov
37a8550215
compiler: add contract.CallEx
interop
2020-12-10 13:45:10 +03:00
Evgenii Stratonikov
ec58bec803
compiler: fix global constant traversal
...
There can be no global variables, but some global constants.
Introduced in 0b44a430
.
2020-12-10 13:45:10 +03:00
Evgenii Stratonikov
b807fd9e7f
compiler: rename engine.AppCall()
to contract.Call()
2020-12-10 13:45:10 +03:00
Evgenii Stratonikov
c7ce9cd4f6
compiler: defer dir removal right after creation
2020-12-10 13:40:29 +03:00
Evgenii Stratonikov
76a6ddc3a4
vmcli/test: run shell after providing input
...
In some cases, `Run()` can read from input before we have written
anything to it.
2020-12-10 13:35:52 +03:00
Roman Khimov
d828096cbf
Merge pull request #1599 from nspcc-dev/compiler/debuginfo
...
compiler: save both VM and smartcontract types
2020-12-09 23:30:59 +03:00
Evgenii Stratonikov
cbf26f315c
compiler: save both VM and smartcontract types
...
VM types are used in debugger, while smartcontract ones are used in
manifest. We can't save only one of them, because conversion in either
side is lossy:
1. VM has `Array` and `Struct` but smartcontract only has `Array`.
2. Smartcontract has `Hash160` etc, which are all `ByteString` or
`Buffer` in VM.
And to spice things a bit more, return type in debugger can be `Void`,
which corresponds to no real stackitem type (as it must exist).
2020-12-09 22:35:22 +03:00
Roman Khimov
02457d9f77
Merge pull request #1597 from nspcc-dev/fix/safemethods
...
manifest: add `Safe` flag to method descriptor
2020-12-09 16:32:19 +03:00
Roman Khimov
3d0ed6eac3
Merge pull request #1595 from nspcc-dev/tests/network
...
network: add tests for most of the commands
2020-12-09 15:31:57 +03:00
Evgenii Stratonikov
27624946d9
network/test: add tests for server commands
2020-12-09 15:23:49 +03:00
Evgenii Stratonikov
bd81b19a7a
network: fix requestTx()
...
2 bugs were here:
1. If amount of tx is small, no messages were sent.
2. Correctly cut byte slice if last message is small.
2020-12-09 12:04:10 +03:00
Evgenii Stratonikov
074ba5f394
network: fix GetBlocks command
...
Return exactly requested amount of hashes.
2020-12-09 12:04:10 +03:00
Evgenii Stratonikov
df801a8539
rpc: marshal GAS in getunclaimedgas
as decimal
2020-12-09 11:19:25 +03:00
Evgenii Stratonikov
56b23b718d
fixedn: allow to parse big decimals
2020-12-09 11:19:25 +03:00
Evgenii Stratonikov
e4c3339c91
util: move Fixed8
to encoding/fixedn package
2020-12-09 11:18:18 +03:00
Roman Khimov
8ed1d4dfba
Merge pull request #1593 from nspcc-dev/notary_contract_fix
...
core: allow to change deposit's `till` for owner only
2020-12-08 17:37:44 +03:00
Evgenii Stratonikov
ea4d14d20d
manifest/standard: check Safe
flag in Comply()
2020-12-08 13:47:05 +03:00
Evgenii Stratonikov
b7e86fa6a3
manifest: add Safe
flag to method descriptor
...
`interop.Contex.AddMethod` sets `Safe` flag for native
contracts. This allows not to forget to change manifest
when changing call flags.
Also fixed invalid `Safe` flags for `Notary` and `Designate` contracts.
2020-12-08 13:27:43 +03:00
Anna Shaleva
74a143cee3
core: allow to change deposit's till
for owner only
2020-12-08 10:39:20 +03:00
Roman Khimov
fb13acab94
Merge pull request #1592 from nspcc-dev/dont-reconnect-if-pool-is-connected
...
network: drop requests to discovery pool when it can't be handled
2020-12-07 10:43:51 +03:00
Roman Khimov
c6dbdddba9
Merge pull request #1591 from nspcc-dev/tests/network
...
network: add tests for `Message` serialization
2020-12-04 22:40:15 +03:00
Roman Khimov
1526772663
network: drop requests to discovery pool when it can't be handled
...
It happens from time to time in a four-node private network where there are
seeds (aka CNs) and not a lot of other nodes to connect to.
I don't know how to test for an infinite loop that has no side-effects, so no
test added here.
2020-12-04 21:39:50 +03:00
Evgenii Stratonikov
fc6cb2aa7b
network/payload: add missing tests for InventoryType
2020-12-04 15:26:14 +03:00
Evgenii Stratonikov
19a8ccbdb8
network/payload: add missing tests for AddressAndTime
2020-12-04 15:25:55 +03:00
Evgenii Stratonikov
6451a4bed3
network/test: add tests for Message
serialization
2020-12-04 15:16:29 +03:00
Evgenii Stratonikov
2dcd366ef9
network: remove extra error check from Message.Encode()
...
Buffer write error is returned from `Encode()`.
2020-12-04 15:00:35 +03:00