Commit graph

2913 commits

Author SHA1 Message Date
Anna Shaleva
9bd2cae08e core: refactor (*Notary).verify
There could be only one Notary signer.
2021-02-11 17:11:36 +03:00
Anna Shaleva
8444f3d816 network: refactor notary service's PostBlock
There was a deadlock while trying to finalize transaction during
PostBlock:
	1) (*Notary).PostBlock is called under the blockchain lock
	2) (*Notary).onTransaction is called inside the PostBlock
	3) (*Notary).onTransaction needs to RLock the blockchain to add
completed transaction to the memory pool (and the blockchain is Lock'ed
by this moment)

The problem is fixed by using notifications subsistem, because it's not
required to call (*Notary).PostBlock under the blockchain lock.
2021-02-11 17:11:36 +03:00
Anna Shaleva
5d6fdda664 network: fix P2PNotaryRequest payload broadcaster 2021-02-11 17:11:36 +03:00
Anna Shaleva
5c2ea2d5bb network: refactor P2PNotaryRequest decoding
We need to provide magic for both main and fallback transactions during
decoding, because transactions hashes depend on it.
2021-02-11 17:11:33 +03:00
Anna Shaleva
c14e34cdb5 network: add RelayP2PNotaryRequest method 2021-02-11 16:56:24 +03:00
Evgeniy Stratonikov
560aff6155 compiler: adjust init/_deploy method offsets during optimization
Because `_initialize` and `_deploy` methods encompass multiple
Go functions, their offsets are stored differently and need
special treatment.
2021-02-11 15:59:02 +03:00
Evgeniy Stratonikov
4f1bea0bcb rpc/client: implement GetNativeContracts 2021-02-11 12:37:03 +03:00
Evgeniy Stratonikov
02ca3d3dfd interop: reuse state.Native in ContractMD 2021-02-11 12:32:10 +03:00
Evgeniy Stratonikov
6ca7b4b966 interop: rename ContractID to ID
Helps further refactoring, see next commit.
2021-02-11 12:27:43 +03:00
Evgeniy Stratonikov
f0d8652bcd rpc: implement getnativecontracts RPC 2021-02-11 12:27:43 +03:00
Evgeniy Stratonikov
e1d2a5b5b7 state: split ContractBase and UpdateCounter
Latter doesn't make sense for native contracts.
2021-02-11 12:24:09 +03:00
Roman Khimov
29b1581ea8
Merge pull request #1723 from nspcc-dev/fix/rpcnumber
Marshal fees and GAS as integers.
2021-02-11 00:35:46 +03:00
Roman Khimov
7c419cebdc
Merge pull request #1729 from nspcc-dev/manifest-and-script-checks
Manifest and script checks
2021-02-10 20:58:52 +03:00
Roman Khimov
dd05cae506 core: check all transaction scripts
Refs. #1699.
2021-02-09 22:31:26 +03:00
Roman Khimov
158f0d9d9c native/vm: add script check for deployed contracts
Refs. #1699.
2021-02-09 22:31:26 +03:00
Roman Khimov
a6e25cffde bitfield: add basic bit field package
Strange as it is but I wasn't able to find any good bit field
implementation. Most of them are limited to 64 bits, some allow for wider
values (like https://github.com/emef/bitfield) but even they're not that
efficient (using bytes instead of wider types). This this minimalistic thing.
2021-02-09 22:31:26 +03:00
Roman Khimov
b892db9976 vm: add instruction correctness check
See neo-project/neo-vm#392.
2021-02-09 22:31:26 +03:00
Roman Khimov
a3abdbd7f0 manifest: add duplicate events/methods checks to ABI
Refs. #1699.
2021-02-09 22:31:26 +03:00
Roman Khimov
62ef5a8dc7 native: enforce contract manifest UTF-8 validity
Refs. #1699.
2021-02-09 22:31:26 +03:00
Roman Khimov
dc3967ae7b manifest: add manifest validity checks
Refs. #1699.
2021-02-09 22:31:26 +03:00
Roman Khimov
284476c070 manifest: add Permission and Permissions validity checks
Refs. #1699.
2021-02-09 22:31:26 +03:00
Roman Khimov
15ed905757 manifest: add validity checks for Parameter
Refs. #1699.
2021-02-09 22:31:26 +03:00
Roman Khimov
f0c3066ef6 manifest: add method validity check
Refs. #1699.
2021-02-09 22:31:26 +03:00
Roman Khimov
f3c761e4c2 manifest: move Parameter into a file of its own 2021-02-09 22:31:26 +03:00
Roman Khimov
0b2e9312af manifest: add event validity check
Refs. #1699.
2021-02-09 22:31:26 +03:00
Roman Khimov
f78e3fb290 manifest: move Event into a file of its own 2021-02-09 22:31:26 +03:00
Roman Khimov
e9ea89b4e3 manifest: add group signature length check
Refs. #1699.
2021-02-09 22:31:24 +03:00
Roman Khimov
296c7a10fc manifest: move Group code into a file of its own 2021-02-09 22:31:22 +03:00
Evgeniy Stratonikov
18911caa3a Revert "rpc: marshal GAS in getunclaimedgas as decimal"
This reverts commit df801a8539.
2021-02-09 11:37:25 +03:00
Evgeniy Stratonikov
b0fbd897ad Revert "rpc: marshal fees and GAS as Fixed8 decimal"
This reverts commit a79b12b4d4.
2021-02-09 11:16:52 +03:00
Evgeniy Stratonikov
468dc5aad6 core/tests: fix NameService test
We should look for the timestamp of the block with `register`.
2021-02-08 17:56:10 +03:00
Roman Khimov
1a4958b1d5 manifest: add ABI validity check
Some methods must be defined in a valid ABI. Refs. neo-project/neo#2263.
2021-02-08 13:27:39 +03:00
Evgeniy Stratonikov
18b7584cb4 compiler/interop: add Manifest to Contract struct 2021-02-08 13:13:11 +03:00
Evgeniy Stratonikov
6cf40749a9 compiler: add tests for native wrappers 2021-02-08 13:13:10 +03:00
Evgeniy Stratonikov
73a75cc27a compiler: do not convert interop types on assertion 2021-02-08 13:11:39 +03:00
Evgeniy Stratonikov
2f6345f2d9 compiler: add Hash compatibility test 2021-02-08 13:09:41 +03:00
Evgeniy Stratonikov
69c011b3e7 compiler: implement Ledger contract wrapper 2021-02-08 13:09:41 +03:00
Evgeniy Stratonikov
7bee28b81e compiler: implement Management contract wrapper 2021-02-08 13:09:41 +03:00
Roman Khimov
5ba074b4cf manifest: return an error from IsValid
Be more specific.
2021-02-08 12:04:57 +03:00
Roman Khimov
211fe307ee manifest: move ABI code into file of its own
Make it a little more convenient to work with it.
2021-02-08 11:55:16 +03:00
Evgeniy Stratonikov
9988f4ed1c compiler: implement Notary contract wrapper 2021-02-08 11:44:39 +03:00
Evgeniy Stratonikov
2f26490e59 compiler: implement RoleManagement contract wrapper 2021-02-08 11:44:39 +03:00
Evgeniy Stratonikov
77fcfeccff compiler: implement Policy contract wrapper 2021-02-08 11:44:39 +03:00
Evgeniy Stratonikov
3c237e2a29 compiler: implement NameService contract wrapper 2021-02-08 11:44:39 +03:00
Evgeniy Stratonikov
779fba3001 compiler: implement Oracle contract wrapper 2021-02-08 11:44:39 +03:00
Evgeniy Stratonikov
34a6eef8ce compiler: implement GAS contract wrapper 2021-02-08 11:44:39 +03:00
Evgeniy Stratonikov
6e866b622a compiler: implement NEO contract wrapper 2021-02-08 11:44:39 +03:00
Evgeniy Stratonikov
e5d8c1c985 compiler: allow conversion to types from external packages 2021-02-08 11:02:45 +03:00
Roman Khimov
60dfffc574 manifest: remove no longer used Serializable interface
It was used when manifests were saved into JSON.
2021-02-08 10:52:53 +03:00
Roman Khimov
1f98289f5d
Merge pull request #1717 from nspcc-dev/rpc-base64
RPC base64 changes
2021-02-08 10:42:26 +03:00