Roman Khimov
29ada4ca46
smartcontract: add JSON marshal/unmarshal for InteropType
...
We actually have to do that in order to answer getapplicationlog requests for
transactions that leave some interop items on the stack. It follows the same
logic our binary serializer/deserializes does leaving the type and stripping
the value (whatever that is).
2020-05-13 17:17:41 +03:00
Roman Khimov
d5df1212c2
rpc/server: start and shutdown Server in tests
...
It will be important for proper subscription testing and it doesn't hurt even
though technically we've got two http servers listening after this change (one
is a regular Server's http.Server and one is httptest's Server). Reusing
rpc.Server would be nice, but it requires some changes to Start sequence to
start Listener with net.Listen and then communicate back its resulting
Addr. It's not very convenient especially given that no other code needs it,
so doing these changes just for a bit cleaner testing seems like and
overkill.
Update config appropriately. Update Start comment along the way.
2020-05-12 17:42:34 +03:00
Roman Khimov
d686fe4e5d
network: get blocks directly from the chain for rebroadcasting
...
Simplify network<->consensus relations, also broadcast blocks received by
other means like RPC.
2020-05-12 17:42:34 +03:00
Roman Khimov
dd8bcfae47
consensus: remove OnNewBlock(), use Blockchain subscription
...
Get new blocks directly from the Blockchain. It may lead to some duplications
(as we'll also receive our own blocks), but at the same time it's more
correct, because technically we can also get blocks via other means besides
network server like RPC (submitblock call). And it simplifies network server
at the same time.
2020-05-12 17:41:23 +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
Roman Khimov
c85e77e1c9
Merge pull request #945 from nspcc-dev/examples/nep5-transfer-bug
...
examples: Use "or" operator in transfer check of NEP5 token
2020-05-12 16:44:15 +03:00
alexvanin
bb481e9712
examples: Use "or" operator in transfer check of NEP5 token
...
CanTransfer function checks if "to" and "from" values are
correct script hashes. If one of these values is correct and one
incorrect, then function returns false positive result. It uses "and"
operator which requires both "to" and "from" script hashes to be
incorrect to fail transaction.
Instead transaction must fail if at least one argument is incorrect,
so it should be "or" operator.
2020-05-12 16:33:24 +03:00
Roman Khimov
3db14b4699
wallet: check for t.GetSignedPart() result correctness
...
It can return nil easily and signing that is a big mistake.
2020-05-07 21:48:45 +03:00
Roman Khimov
943d435cd2
core: ensure we produce correct blocks for tests
...
Blocks must have at least one transaction and we should check for correct
merkle root generation.
2020-05-07 21:46:28 +03:00
Roman Khimov
a1d8206ef7
Merge pull request #935 from nspcc-dev/fix/slice
...
compiler: support implicit type in function arguments
2020-05-06 18:30:01 +03:00
Evgenii Stratonikov
37813f1020
compiler: support implicit type in function arguments
...
Go supports declaring multiple arguments of the same type without
duplicating type name. Now we support this too.
2020-05-06 18:20:13 +03:00
Roman Khimov
91a3b655b7
Merge pull request #931 from nspcc-dev/fix/voidcall
...
compiler: allow to use `return` with no arguments
2020-05-06 18:19:16 +03:00
Evgenii Stratonikov
922aff1fcc
compiler: support named returns
2020-05-06 18:15:52 +03:00
Evgenii Stratonikov
b2a3cee451
compiler: support using return
in some branches
...
When `return` is used in one codepath, but not the other,
we do not clean altstack properly. This commit fixes it.
2020-05-06 18:15:50 +03:00
Evgenii Stratonikov
2a6be8ceef
compiler: allow to use return
with no arguments
2020-05-06 17:23:32 +03:00
Roman Khimov
e097e86bfa
Merge pull request #921 from nspcc-dev/rpc-websocket-2.x
...
RPC over websocket (2.x)
2020-05-04 13:55:19 +03:00
Roman Khimov
a025838e52
Merge pull request #916 from nspcc-dev/compiler/generate_abi
...
compiler: add ability to generate .abi.json file
2020-05-04 12:02:50 +03:00
Anna Shaleva
99d0bafa2c
compiler: add ability to generate .abi.json file
...
A part of integration with NEO Blockchain Toolkit (see #902 ). To be
able to deploy smart-contract compiled with neo-go compiler via NEO
Express, we have to generate additional .abi.json file. This file
contains the following information:
- hash of the compiled contract
- smart-contract metadata (title, description, version, author,
email, has-storage, has-dynamic-invoke, is-payable)
- smart-contract entry point
- functions
- events
However, this .abi.json file is slightly different from the one,
described in manifest.go, so we have to add auxilaury stractures for
json marshalling. The .abi.json format used by NEO-Express is described
[here](https://github.com/neo-project/neo-devpack-dotnet/blob/master/src/Neo.Compiler.MSIL/FuncExport.cs#L66 ).
2020-05-04 08:31:14 +03:00
Anna Shaleva
592fd068b1
compiler: fix bug with missing methods parameters
...
Method `methodInfoFromScope(...)` always returned an empty parameters
set, so we were missing this information in both .abi.json and
.debug.json files. Fixed now.
2020-05-04 08:31:09 +03:00
Roman Khimov
556ab39a5a
rpc/client: add minimalistic websocket client
2020-04-30 22:59:19 +03:00
Roman Khimov
6333060897
rpc/client: separate out http-related functionality
2020-04-30 22:59:19 +03:00
Roman Khimov
38f9b511ae
rpc/client: drop Version from Options
...
It makes no sense at all, it's a JSON-RPC version.
2020-04-30 22:59:19 +03:00
Roman Khimov
e32367a1c2
rpc/client: fix some comments
2020-04-30 22:59:19 +03:00
Roman Khimov
a49f2bc47c
client: remove Balancer getter/setter, make it an Option
...
Keep it internal to the client instance, it makes no sense exposing it to the
outside user.
2020-04-30 22:59:19 +03:00
Roman Khimov
00d6439eb2
client: make http.Client internal to the Client
...
Exposing it the outside users is strange, so incapsulate it completely.
Fix DialTimeout setting along the way, handle negative timeouts as invalid.
2020-04-30 22:59:01 +03:00
Roman Khimov
24b46c6041
rpc/server: add websockets support via '/ws' URL
2020-04-30 17:53:28 +03:00
Roman Khimov
3eb6d266ca
rpc/server: use httptest.Server for testing
...
Which allows to reuse it for websockets.
2020-04-30 17:52:42 +03:00
Roman Khimov
3d2a2af575
rpc: shuffle handleHttpRequest/handleRequest responsibilities
...
Make handleRequest reusable in other contexts like websockets.
2020-04-30 17:52:15 +03:00
Roman Khimov
dbe7be5b00
rpc: change handlers to always return response.Error for errors
...
As it's expected by WriteErrorResponse() actually.
2020-04-30 17:52:15 +03:00
Roman Khimov
21c31d7d24
rpc/server: refactor handler methods a little
...
request.In is a natural request representation, one can always get
request.Params from it.
2020-04-30 17:52:13 +03:00
Anna Shaleva
87b0e76a8c
rpc, smartcontract: move contract metadata to smartcontract package
2020-04-29 13:50:05 +03:00
Roman Khimov
8f417c8e8b
Merge pull request #910 from nspcc-dev/master-2.x-update-readme
...
README: update with workshop links and block import examples
2020-04-28 09:00:06 +03:00
Roman Khimov
92a99624c4
README: update with workshop links and block import examples
...
Fix some heading along the way.
2020-04-27 16:24:21 +03:00
Roman Khimov
24675d0688
Merge pull request #862 from nspcc-dev/neo2x/partial_consensus_message_decoding
...
consensus: partial consensus message decoding
2020-04-16 18:41:47 +03:00
Anna Shaleva
c813873577
consensus: added partial message decoding
...
closes #849
2020-04-16 17:16:29 +03:00
Roman Khimov
84edcf0b0e
Merge pull request #848 from nspcc-dev/cli-invoke-nomethod-check-2.x
...
cli: check for method presence for invokefunction commands
2020-04-13 11:48:56 +03:00
Roman Khimov
2b943b76ae
cli: check for method presence for invokefunction commands
...
Fixes #828 .
2020-04-13 11:21:11 +03:00
Roman Khimov
71fb153a69
Merge pull request #846 from nspcc-dev/fix/gomod2
...
*: go mod tidy
2020-04-10 17:51:43 +03:00
Evgenii Stratonikov
51512c73ed
*: go mod tidy
...
Add `github.com/dgraph-io/badger` in go.mod .
2020-04-10 15:52:34 +03:00
Roman Khimov
4b5cc0b460
Merge pull request #843 from nspcc-dev/master-2.x-readme
...
README/docs: add 3.0 notice, update links to relative
2020-04-10 10:34:08 +03:00
Roman Khimov
1433c795c2
README/docs: add 3.0 notice, update links to relative
...
Goreportcard doesn't support branching, sorry: https://github.com/gojp/goreportcard/issues/96
And Godoc too: https://github.com/golang/gddo/issues/593
2020-04-09 20:01:55 +03:00
Roman Khimov
bfaa025a34
Merge pull request #839 from nspcc-dev/feature/badgerdb_support
...
storage: add support of BadgerDB
2020-04-09 15:57:50 +03:00
Anna Shaleva
54cdfe4a23
storage: add support of BadgerDB
...
closes #820
2020-04-09 13:55:59 +03:00
Roman Khimov
54a95810a4
Merge pull request #833 from nspcc-dev/test/vm_calls
...
vm: missing tests for CALL* instructions
2020-04-09 12:12:41 +03:00
Anna Shaleva
9f0bc2aaf5
vm: add tests to CALL* instructions
...
closes #452
2020-04-09 11:20:39 +03:00
Roman Khimov
5cd096381f
Merge pull request #829 from nspcc-dev/fix/compiler
...
cli: rename `contract compile` --debug flag
2020-04-08 16:01:33 +03:00
Evgenii Stratonikov
450263bcae
cli: rename contract compile
--emitdebug to --debug
...
It is more intuitive and easier to type.
2020-04-08 15:54:25 +03:00
Evgenii Stratonikov
c71ad6a5db
cli: output contract after compiling only with --verbose flag
...
Also remove Debug from compiler option as it is used only in CLI.
2020-04-08 13:09:51 +03:00
Evgenii Stratonikov
73c7b408b7
cli: rename --debug flag in contract compile
2020-04-08 13:09:51 +03:00