Commit graph

2693 commits

Author SHA1 Message Date
Evgenii Stratonikov
9fd8577dd9 compiler: use Options in ConvertToManifest() 2020-12-10 17:43:25 +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
Evgenii Stratonikov
63aebfeae3 network: fix MerkleBlock serialization
1. It contains `block.Base` thus needs network magic.
2. TxCount should match number of hashes.
2020-12-04 14:59:13 +03:00
Evgenii Stratonikov
cd5219086a wallet: export NewAccountFromPrivateKey()
Don't perform back-and-forth conversion, don't handle error
which never occur.
2020-12-04 12:45:53 +03:00
Evgenii Stratonikov
573d1d10c0 cli: add tests for contract command 2020-12-04 11:05:48 +03:00
Evgenii Stratonikov
6e749f4977 core: add tests for crypto interops
Also move related test from `core/`.
2020-12-03 14:14:35 +03:00
Evgenii Stratonikov
d5b4553bb3 keys: allow to create keys on arbitrary curve 2020-12-03 14:06:35 +03:00
Evgenii Stratonikov
5bd8ca9597 core/tests: extend test suite 2020-12-03 14:02:58 +03:00
Evgenii Stratonikov
dcc58b7c44 core: validate manifest before incrementing ID in Contract.Create
Also add more tests.
2020-12-02 15:54:03 +03:00
Evgenii Stratonikov
b203c23515 core: cover enumerator/iterator interops 2020-12-02 15:54:03 +03:00
Evgenii Stratonikov
e4ee7cd407 vm: improve coverage for default interops 2020-12-02 15:54:03 +03:00
Evgenii Stratonikov
d136569ac8 core: move System.Binary.* interops to binary/ package
Also extend test suite.
2020-12-02 15:54:03 +03:00
Evgenii Stratonikov
2eb256014e core: move System.Runtime.* interops to runtime/ package
Also extend test suite.
2020-12-02 15:54:03 +03:00
Roman Khimov
972b0f176d
Merge pull request #1584 from nspcc-dev/tests/vmcli
Add tests for `vmcli`
2020-12-02 13:33:44 +03:00
Evgenii Stratonikov
4aa1a37f3f network: fetch blocks in parallel
Blockcache size is 2000, while max request size is 500.
Try to fetch blocks in chunks starting from current height.
Lower height has priority.
2020-12-02 10:50:35 +03:00
Evgenii Stratonikov
33f13ab1c0 vmcli: add tests 2020-12-02 10:49:37 +03:00
Evgenii Stratonikov
f8728e4f44 vmcli: unify error messages 2020-12-02 10:49:37 +03:00
Evgenii Stratonikov
bea5125d42 vmcli: return after error in break 2020-12-02 10:49:37 +03:00
Evgenii Stratonikov
d7ffa89811 vmcli: set breakpoint before the instruction
Breakpoint should occur before actual instruction execution.
2020-12-02 10:49:37 +03:00
Evgenii Stratonikov
2f39701d76 vm: provide writer in PrintOps()
Make it more flexible and testable. Fallback to using
stdout if no writer is provided.
2020-12-02 10:49:37 +03:00