Evgeniy Stratonikov
da360be5b1
rpc/request: allow to provide bool parameters, fix #1919
2021-04-28 16:44:19 +03:00
Anna Shaleva
0632e15f06
core: add NEP11 to nonfungible supported standards list
2021-04-26 17:56:02 +03:00
Anna Shaleva
127d0ad2ba
rpc: allow to provide cosigners for NEP11-transfer-related commands
2021-04-23 10:45:11 +03:00
Anna Shaleva
49c35dec20
rpc: allow to provide cosigners for NEP17-transfer-related commands
2021-04-23 10:29:40 +03:00
Anna Shaleva
1d6ba389c9
rpc: split SignAndPushInvocationTx in two parts
...
There are several places where constructed transaction need to be
signed and sent. Thus, we definitely need a separate method for signing
and sending constructed transaction to avoid code duplication.
2021-04-23 10:27:47 +03:00
Roman Khimov
8407ae057c
Merge pull request #1912 from nspcc-dev/cli/invoke_with_contract_signer
...
rpc: properly construct cosigners' witnesses in SignAndPushInvocationTx
2021-04-21 19:13:16 +03:00
Anna Shaleva
48ae1cc486
rpc: refactor SignAndPushInvocationTx
...
We have a set of accounts provided via `cosigners` argument, so we
should fill all transaction witnesses in (not only sender's witness).
If we can't properly construct witnesses for all of the signers then an
error should be returned.
2021-04-21 18:52:32 +03:00
Anna Shaleva
f7c65f2b55
core: fix Condition never satisfied
test error
...
This test is failing from time to time.
2021-04-21 11:19:12 +03:00
Anna Shaleva
eaf45d243b
wallet: allow to sign with encrypted contract-based accounts
2021-04-20 14:53:51 +03:00
Roman Khimov
881ed3065e
Merge pull request #1909 from nspcc-dev/cli/default-cosigner-scope
...
cli, rpc: use CalledByEntry as a default cosigner's scope
2021-04-19 14:43:31 +03:00
Anna Shaleva
8f4257639e
rpc: use CalledByEntry as default cosigner's scope
2021-04-19 12:06:13 +03:00
Anna Shaleva
ae36523a61
rpc, internal: fix CodeQL int conversions warnings
...
```
Incorrect conversion of an integer with architecture-dependent bit
size from to a lower bit size type int32 without an upper bound
check.
```
2021-04-19 11:30:28 +03:00
Anna Shaleva
28b74cb647
smartcontract: add ExpandParameterToEmitable method
...
It'll help to convert Parameter to a atandard type which then can be
emitted ass an array item.
2021-04-16 17:30:25 +03:00
Anna Shaleva
f7dcb7ae29
vm: allow emit.Array handle uint256
2021-04-16 16:20:30 +03:00
Anna Shaleva
1d3a297a6b
rpc: add Data field to NEP17 TransferTarget
...
It's a part of transfer, thus it should be passed along with the other
transfer parameters.
2021-04-16 13:54:23 +03:00
Roman Khimov
508ad51a86
core: ignore non-numeric "amounts" in Transfer events
...
Refs. #1900 .
2021-04-12 15:09:37 +03:00
Roman Khimov
13619a0e77
rpc/server: improve submitblock and submitnotaryrequest also
2021-04-10 22:47:24 +03:00
Roman Khimov
274f2c0408
rpc/server: be more specific in some sendrawtransaction error cases
...
Refs. #1894 .
2021-04-10 00:31:42 +03:00
Roman Khimov
973ed8c1f6
rpc/server: fix ineffassign warning
2021-04-08 15:52:57 +03:00
Roman Khimov
d3ea720afb
result: gofmt -s
2021-04-08 15:49:14 +03:00
Roman Khimov
46d866965d
Merge pull request #1889 from nspcc-dev/tune-logging
...
Tune logging
2021-04-07 20:58:52 +03:00
Roman Khimov
1785a333d2
core: tune "blockchain persist completed" message
...
It's misleading, we're writing it on disk-level persistence, it's not the same
as block "persistence" in C#, so we better write it clear.
2021-04-07 18:14:30 +03:00
Roman Khimov
453012ff16
runtime: tune runtime.Log messages
...
Add transaction hash, print contract hash in LE (as all user-facing functions
do) and don't double-quote the message, zap already does quoting of its own.
2021-04-07 18:14:30 +03:00
Roman Khimov
e2121ff583
core: fix key clashes in Storage.Find
...
Fixes #1873 . NewByteArray() doesn't copy the slice, so we need to do it
ourselves.
2021-04-07 14:52:50 +03:00
Roman Khimov
9b15ab48ad
core: restore MPT collapsing logic
...
Fix #1867 , revert part of bf20db09e0
.
2021-04-07 11:14:18 +03:00
Roman Khimov
555693d8b8
oracle: add MinimumResponseGas to interop
...
It's important for users of oracle contract.
2021-04-06 22:50:42 +03:00
Roman Khimov
ed358b4c4c
native: expose MinimumResponseGas, add specific error for it
2021-04-06 22:50:42 +03:00
Roman Khimov
090d68f8fa
oracle: add response codes to interop defintions
...
Client should be aware of them.
2021-04-06 22:50:42 +03:00
Roman Khimov
bba22cb736
transaction: marshal oracle response codes as strings
...
C# node does it this way.
2021-04-06 22:50:42 +03:00
Roman Khimov
607cdcf13d
oracle: improve oracle interop documentation
2021-04-06 22:50:42 +03:00
Roman Khimov
7a1c1638e4
oracle: specify neofs timeout as timeout, set default if 0
...
There has to be some sane default and we'd like configuration to be consistent
with other timeout values.
2021-04-06 17:08:04 +03:00
Roman Khimov
f69fd34220
oracle: add logging, refactor request processing a bit
...
And return more appropriate errors in some cases.
2021-04-06 17:02:32 +03:00
Roman Khimov
d2f7f00997
oracle: change neofs URI scheme
...
Strip '//', see neo-project/neo-modules#518 .
2021-04-06 16:56:19 +03:00
Roman Khimov
bd9a303e29
oracle: URI host validation is only relevant for https
...
NeoFS doesn't have hosts.
2021-04-06 16:53:32 +03:00
Roman Khimov
29b79db998
oracle: we only work with https, forget http
2021-04-06 16:53:18 +03:00
Roman Khimov
7e9f8e03c2
compiler: add a test for inlined selector statements
...
Selector here is either a struct field access or global package
variable/constant. While technically none of these require an additional
local, inlining actually uses one, so add a test for it.
2021-04-06 10:54:37 +03:00
Roman Khimov
21a7f3d760
compiler: keep traversing after c.countLocalsCall()
...
Some arguments can be inlined functions themselves thus requiring additional
attention. Otherwise we can get less local variables than really used by
STLOCs (and subsequent program crash).
2021-04-05 22:58:07 +03:00
Roman Khimov
84b240cc9a
services/consensus: add some logging on start
2021-04-02 13:13:26 +03:00
Roman Khimov
99b71bbbd1
network: move service starts to tryStartServices
...
All of them only make sense on a fully synchronized node, doing anything
during the initial sync is just a waste of time.
2021-04-02 13:12:06 +03:00
Roman Khimov
690a1db589
network: replace consensusStarted/canHandleExtens with syncReached flag
...
They're essentially the same.
2021-04-02 12:55:56 +03:00
Roman Khimov
a954821b98
consensus: make Shutdown a no-op if not started
...
It makes client code a bit simpler, we can just issue a Shutdown() request
without thinking much about it (but only once of course).
2021-04-02 12:50:46 +03:00
Roman Khimov
a01636a1b0
stateroot: set networking callback in a more straightforward way
2021-04-02 12:12:36 +03:00
Roman Khimov
4d0cbebb5a
stateroot: make it shutdown properly, not locking up whole system
2021-04-02 11:38:49 +03:00
Roman Khimov
863b9550e6
rpcbroadcaster: don't mess with the URL from the config
...
It can be http://, it can be https://, it's not up to rpcbroadcaster to change
it in any way.
2021-04-02 11:13:38 +03:00
Anna Shaleva
58ab3b5ad1
core: get native nep17 balance from contract storage
...
Not from DAO's items with storage.STNEP17Balances prefix, because
changes are reflected there only after notifications processing. And
this happens only after the transaction script is executed, but there
might be cases when we need to get the balance that was updated
earlier during the same transaction processing.
Affects storage dumps.
2021-04-01 18:37:44 +03:00
Roman Khimov
2c8f8bf3ec
Merge pull request #1871 from nspcc-dev/mpt/serialisation-fix
...
mpt: refactor serialisation
2021-04-01 11:01:38 +03:00
Anna Shaleva
8c358aa556
mpt: change MaxKeyLength for LeafNode
2021-04-01 10:20:16 +03:00
Anna Shaleva
7f038bd465
mpt: split HashNode in two types
...
First type is non-empty HashNode, and the second one is an Empty node.
2021-04-01 10:19:57 +03:00
Anna Shaleva
b9927c39ee
mpt: refactor nodes serialisation
...
It should be serialised with type in case if it's a children node.
The type can be either HashT or EmptyT.
2021-04-01 10:19:57 +03:00
Anna Shaleva
6e836d325e
mpt: increase max leaf value length
2021-04-01 10:17:08 +03:00
Anna Shaleva
f0c222b385
core: move StorageItem-related constants to storage
pkg
...
Need this to avoid import cycle problem.
2021-04-01 10:17:08 +03:00
Anna Shaleva
ec19a087bb
core: remove StorageFlag remnant
2021-04-01 10:17:08 +03:00
Anna Shaleva
7dc9f0bde2
mpt: swap Leaf and Node types
2021-04-01 10:17:08 +03:00
Anna Shaleva
1ba7338b07
rpc: fix mpt-related responses serialisation
...
MPT structures should be serialized in base64.
2021-04-01 10:17:03 +03:00
Anna Shaleva
f57187e611
vm: throw unhandled exception with message instead of panic
...
The result is the same HALT state, but the exception message is the real
one got from user. Changes ported from C#:
1. Throw exception: 59b8ac73d2/src/neo-vm/ExecutionEngine.cs (L1448)
2. Prettify message: https://github.com/neo-project/neo-vm/blob/master/src/neo-vm/VMUnhandledException.cs#L28
The result is that instead of
```
2021-03-31T17:02:54.508+0300 WARN contract invocation failed {"tx": "2aefeb705f3a609df8767d9b45e036b9dd1eb77407e5732375981915668889b8", "block": 30640, "error": "error encountered at instruction 970 (THROW): runtime error: invalid memory address or nil pointer dereference"}
```
we'll get
```
2021-03-31T17:33:56.299+0300 WARN contract invocation failed {"tx": "2aefeb705f3a609df8767d9b45e036b9dd1eb77407e5732375981915668889b8", "block": 30640, "error": "error encountered at instruction 970 (THROW): unhandled exception: No authorization."}
```
in the node logs.
2021-03-31 19:37:52 +03:00
Anna Shaleva
93530fa8fa
core: pop all args from stack before validation checks in Notify
...
We should match the C# behaviour.
2021-03-31 19:01:05 +03:00
Anna Shaleva
793f27084b
vm: specify syscall ID when panicing on syscall invocation
...
It's convinient to know the failing syscall without dumping
smartcontract instructions.
2021-03-31 19:00:59 +03:00
Anna Shaleva
b7194ec608
core: put candidate account to the storage during (*NEO).vote
...
C# node uses Snapshot.GetAndChange to get it from storage, so it's the
same problem as with voting account. Affects dumps.
2021-03-29 17:06:37 +03:00
Anna Shaleva
c63528db44
core: put voiting account to the storage during (*NEO).vote
...
After getting account from the storage there are a lot of checks which
may fail. But C# node uses Snapshot.GetAndChange, so the account state
should be put in the storage even in case of vote failure. Affects
dumps.
2021-03-29 17:04:20 +03:00
Anna Shaleva
3d8d927178
core: check candidate is registered at the start of voiting
...
C# node returns an error if the candidate is not registered. We have this
check inside the ModifyAccountVotes, but (*NEO).vote doesn't panics and
just return bool on stack, so we should match exactly the C#'s
algorithm.
2021-03-29 17:04:15 +03:00
Roman Khimov
5b4f6d255f
Merge pull request #1857 from nspcc-dev/rpc/nep11
...
rpc: add NEP11 and NNS interfaces to RPC Client
2021-03-27 18:27:29 +03:00
Roman Khimov
afb4c1e5e2
Merge pull request #1858 from nspcc-dev/rpc/calculatenetworkfee
...
rpc: add `calculatenetworkfee` RPC method
2021-03-27 15:08:42 +03:00
Roman Khimov
3b4dde05c3
stateroot: handle ErrStateMismatch internally
...
It's a local problem and returning error from here leads to peer disconnect
that isn't solving anything.
2021-03-27 00:33:11 +03:00
Roman Khimov
216513e14f
stateroot: reject validated root if it doesn't match local one
...
Prevent
2021-03-27T00:05:23.382+0300 WARN blockQueue: failed adding block into the blockchain {"error": "error while trying to apply MPT changes: key not found", "blockHeight": 12757, "nextIndex": 12758}
after node restart (node reads "local" root hash that it doesn't have).
2021-03-27 00:33:11 +03:00
Roman Khimov
d143696328
stateroot: try to fix MPT caching/updating
...
It was completely ruined by bf20db09e0
. MPT was
updating bc.dao directly which shouldn't ever happen, it must write into the
same cache and then Persist these KVs as usual.
2021-03-27 00:33:11 +03:00
Roman Khimov
56fd375c6d
core: move stateroot check into header check
...
As it's a part of the header.
2021-03-27 00:33:11 +03:00
Roman Khimov
1fdd406234
stateroot: drop unused function
2021-03-27 00:33:11 +03:00
Roman Khimov
042aef452d
stateroot: Extensible messages must have proper category
2021-03-27 00:33:11 +03:00
Anna Shaleva
ffc2ad3cc3
rpc: check RPC client is initialised where appropriate
...
We don't need magic to create tx anymore, but we need it to sign tx.
2021-03-26 20:51:17 +03:00
Anna Shaleva
626ec8a82b
rpc: add resolve
and isAvailable
NNS API to RPC client
2021-03-26 20:48:07 +03:00
Anna Shaleva
f955589370
rpc: add NEP11 API support to the RPC client
2021-03-26 20:48:01 +03:00
Anna Shaleva
2bb3ff2aff
vm: return more detailed error from emit.Array
2021-03-26 20:44:32 +03:00
Anna Shaleva
ad9ede455e
rpc: add NNS-connected transactions to the test chain
...
It is needed for RPC client integration tests.
2021-03-26 20:44:32 +03:00
Anna Shaleva
a2a9d7ff05
core: move NNS record types to a separate package
...
We need this to avoid `native` dependency in RPC client.
2021-03-26 20:44:32 +03:00
Anna Shaleva
347f7ed576
rpc: move all top*FromStack
client functions to a separate file
...
Some of them are shared between multiple RPC client APIs, so let's keep
them in a separate place for better maintainability.
2021-03-26 20:44:32 +03:00
Anna Shaleva
30e7d9a8b0
rpc: remove duplicated code from CreateNEP17MultiTransferTx
2021-03-26 20:44:32 +03:00
Anna Shaleva
bcc5c055de
rpc: allow to calculatenetworkfee
for verify
with args
...
We can load invocation script for those contract-based witnesses which
requires arguments for `verify` methods.
2021-03-26 19:16:00 +03:00
Anna Shaleva
252e03bc34
rpc: add CalculateNetworkFee RPC method
2021-03-26 19:14:46 +03:00
Anna Shaleva
d2a81daf57
rpc: refactor TestCalculateNetworkFee
...
We need to ensure that we don't add extra network fee during
calculation.
2021-03-26 19:12:43 +03:00
Roman Khimov
6989769f2c
rpc/server: fix getversion reply for staterootinheader extension
...
Proper network should have it set to `true` and client should know about it.
2021-03-26 18:38:46 +03:00
Roman Khimov
546faf5e70
Merge pull request #1859 from nspcc-dev/rework-signing-fix-stateroots
...
Rework signing, fix stateroots
2021-03-26 14:04:23 +03:00
Roman Khimov
5569512ce9
stateroot: fix missing verification script
...
Stateroot payload must have it.
2021-03-26 13:45:18 +03:00
Roman Khimov
5f7ec6e784
state: fix MPTRoot JSONization
...
Match C# implementation. It's easier to do this by changing the structure
itself.
2021-03-26 13:45:18 +03:00
Roman Khimov
4c4a980cc0
crypto: add Hashable to VerifiableDecodable
...
It has to be Hashable.
2021-03-26 13:45:18 +03:00
Roman Khimov
b3f9cd1541
dao: drop network from DAO
...
Not used any more.
2021-03-26 13:45:18 +03:00
Roman Khimov
0888cf9ed2
network: drop Network from Message
...
It's not used any more.
2021-03-26 13:45:18 +03:00
Roman Khimov
c789431402
payload: drop Network from P2PNotaryRequest
...
It's not needed now.
2021-03-26 13:45:18 +03:00
Roman Khimov
8c110a6147
state: drop Network from MPTRoot structure
...
It's only needed to verify/sign.
2021-03-26 13:45:18 +03:00
Roman Khimov
f91ff78918
payload: drop Network from Extensible
...
It's only used to sign/verify it and is not a part of the structure. It's
still neded in consensus.Payload though because that's the way dbft library
is.
2021-03-26 13:45:18 +03:00
Roman Khimov
95c279325a
block: drop Network from the Header
...
It's not network-tied any more, network is only needed to
sign/verify. Unfortunately we still have to keep network in consensus data
structures because of dbft library interface.
2021-03-26 13:45:18 +03:00
Roman Khimov
d314f82db3
transaction: drop Network from Transaction
...
We only need it when signing/verifying.
2021-03-26 13:45:18 +03:00
Roman Khimov
df12adaa9e
crypto: remove crypto.Verifiable interface
...
We can now verify any hash.Hashable thing.
2021-03-26 13:45:18 +03:00
Roman Khimov
04e0ea2c0f
stateroot: sign extensible payloads being sent!
...
Unsigned payloads are considered to be invalid for some reason.
2021-03-26 13:45:18 +03:00
Roman Khimov
fa4380c9da
network: prevent putting duplicate addresses into pool from peer's data
...
It can't be trusted.
2021-03-26 12:31:07 +03:00
Roman Khimov
d0634a7829
network: don't attempt to connect to the same node twice
...
We can have multiple copies of the same address in the pool and we should only
proceed to connect once per attempt.
2021-03-26 12:26:45 +03:00
Roman Khimov
0248e2c0d2
state: add network to MPTRoot, change hashing
...
Fix RC1 incompatibility.
2021-03-25 22:37:30 +03:00
Roman Khimov
33f54028fb
Merge pull request #1856 from nspcc-dev/testnet-rc1-magic
...
config: adjust default testnet magic for RC1 testnet
2021-03-24 11:08:20 +03:00
Roman Khimov
b2944bcf8a
config: adjust default testnet magic for RC1 testnet
...
It's 827601742, N3T1, see https://github.com/neo-project/neo-node/releases/tag/v3.0.0-rc1
2021-03-24 10:57:05 +03:00
Roman Khimov
126b83a825
Merge pull request #1854 from nspcc-dev/examples/fix-owner
...
examples: update owner address
2021-03-23 17:43:31 +03:00
Anna Shaleva
0948d53244
examples: add documentation
...
And provide the wallet for examples `my_wallet.json` with the owner
address inside.
2021-03-23 16:46:15 +03:00
Anna Shaleva
10fb86c0b2
rpc: add (*Client).GetDesignatedByRole method
2021-03-23 13:56:39 +03:00
Anna Shaleva
1e649bc9a0
core: move NotaryVerificationPrice to a separate package
...
It is needed to avoid `native` dependency in RPC client.
2021-03-23 13:56:39 +03:00
Anna Shaleva
681bd89cc7
core: move native node roles to a separate pkg
...
We need this to avoid `native` dependency in the RPC client.
2021-03-23 13:56:34 +03:00
Roman Khimov
28da00f057
Merge pull request #1852 from nspcc-dev/tests/fix-rubles-contract
...
rpc: refactor Rubl test contract
2021-03-22 15:55:51 +03:00
Anna Shaleva
6b36590181
core: ensure all transactions are HALT while creating test chain
2021-03-22 15:35:22 +03:00
Anna Shaleva
0a5072a1da
core: allow to compile test contracts with yaml config
...
And refactored Rubl test contract (it should support NEP-17 and
onNEP17Payment).
2021-03-22 15:32:26 +03:00
Anna Shaleva
ee76db9ff2
rpc: refactor (*Client).AddNetworkFee errors handling
...
core.ErrVerificationFailed is not very informative. Also removing it
from RPC client allows to get rid of `core` dependency in the `client`
package, which is needed for the next commit.
2021-03-22 13:28:22 +03:00
Roman Khimov
20144e6137
*: fix some misspellings spotted by GoReportCard
2021-03-22 12:13:08 +03:00
Anna Shaleva
96e198de97
core: fix Management.GetContract
2021-03-19 20:44:21 +03:00
Roman Khimov
57d4990fe6
Merge pull request #1850 from nspcc-dev/fex-storage-price
...
core: fix storage.Put price
2021-03-19 19:10:22 +03:00
Anna Shaleva
7118eae467
core: remove useless code from putWithContext
2021-03-19 18:57:29 +03:00
Anna Shaleva
5b18f5974f
core: fix storage.Delete price
2021-03-19 18:57:00 +03:00
Anna Shaleva
0bca63b907
core: fix storage.Put price
2021-03-19 18:41:33 +03:00
Roman Khimov
83cb5ff07b
roles: add missing NeoFSAlphabet role
2021-03-19 16:18:45 +03:00
Roman Khimov
b56e028733
*: add more package-specific documentation
...
For the most important packages at least.
2021-03-19 16:18:45 +03:00
Roman Khimov
c1b2a79cfe
netmode: use proper testnet magic number
...
Preview5 network used 'N3P5' as its magic, but the official testnet magic is
still 'NEOt', that's the way it's defined in neo-node, so use that.
2021-03-19 16:18:45 +03:00
Anna Shaleva
2c68bfcfc6
consensus: remove nonce from PrepareRequest
2021-03-18 21:32:43 +03:00
Anna Shaleva
4809cdf0b0
consensus: fix panic during verifyBlock
...
Issue: panic during mixed 4-nodes consensus setup:
```
2021-03-18T12:01:50.715Z INFO skip change view {"nc": 0, "nf": 3}
2021-03-18T12:01:52.786Z INFO received ChangeView {"validator": 0, "reason": "Timeout", "new view": 1}
2021-03-18T12:01:53.602Z INFO received ChangeView {"validator": 2, "reason": "Timeout", "new view": 1}
2021-03-18T12:01:56.736Z INFO received ChangeView {"validator": 1, "reason": "Timeout", "new view": 1}
2021-03-18T12:01:56.736Z INFO changing dbft view {"height": 3, "view": 1, "index": 3, "role": "Backup"}
2021-03-18T12:02:01.758Z INFO received PrepareRequest {"validator": 2, "tx": 0}
panic: interface conversion: block.Block is nil, not *consensus.neoBlock
goroutine 315 [running]:
github.com/nspcc-dev/neo-go/pkg/consensus.(*service).verifyBlock(0xc000419540, 0x0, 0x0, 0x4)
github.com/nspcc-dev/neo-go/pkg/consensus/consensus.go:427 +0x1306
github.com/nspcc-dev/dbft.(*DBFT).createAndCheckBlock(0xc0001f8840, 0x13f0002)
github.com/nspcc-dev/dbft@v0.0.0-20210302103605-cc75991b7cfb/dbft.go:373 +0x27e
github.com/nspcc-dev/dbft.(*DBFT).onPrepareRequest(0xc0001f8840, 0x13f4378, 0xc0003b8500)
github.com/nspcc-dev/dbft@v0.0.0-20210302103605-cc75991b7cfb/dbft.go:329 +0xdf1
github.com/nspcc-dev/dbft.(*DBFT).OnReceive(0xc0001f8840, 0x13f4378, 0xc0003b8500)
github.com/nspcc-dev/dbft@v0.0.0-20210302103605-cc75991b7cfb/dbft.go:247 +0xe25
github.com/nspcc-dev/neo-go/pkg/consensus.(*service).eventLoop(0xc000419540)
github.com/nspcc-dev/neo-go/pkg/consensus/consensus.go:297 +0x79d
created by github.com/nspcc-dev/neo-go/pkg/consensus.(*service).Start
github.com/nspcc-dev/neo-go/pkg/consensus/consensus.go:249 +0xa5
```
So (*service).verifyBlock is unable to work with nil block.
2021-03-18 18:20:33 +03:00
Anna Shaleva
e5cdecfa9f
core: fix transaction hashes
2021-03-18 17:57:54 +03:00
Roman Khimov
42465dd002
Merge pull request #1825 from nspcc-dev/fix-invokecontractverify
...
rpc: refactor invokecontractverify
2021-03-17 18:08:23 +03:00
Roman Khimov
c773f117be
Merge pull request #1838 from nspcc-dev/extend-rpc-client
...
Extend RPC client
2021-03-17 11:10:09 +03:00
Roman Khimov
2fa80f0bb6
Merge pull request #1837 from nspcc-dev/fix-some-call-flags
...
Fix some call flags
2021-03-17 11:09:57 +03:00
Roman Khimov
cb1583e317
Merge pull request #1830 from nspcc-dev/fix/neofs
...
Use filters with NeoFS responses
2021-03-17 10:25:46 +03:00
Roman Khimov
7990fa1b61
client: add gasperblock getter
...
It's an important chain parameter.
2021-03-16 23:04:41 +03:00
Roman Khimov
87d4939093
client: add NNS price getter
2021-03-16 22:59:04 +03:00
Roman Khimov
f308a9995d
client: add GetOraclePrice for oracle price
2021-03-16 22:55:17 +03:00
Roman Khimov
42674e46ac
client: add GetStoragePrice for native policy contract
2021-03-16 22:50:14 +03:00
Roman Khimov
0de72f1dc9
core: fix call flags for Native(On|Post)Persist
...
See neo-project/neo#2339 .
2021-03-16 22:49:14 +03:00
Roman Khimov
d1251b8daf
core: don't limit on/postPersist methods
...
They read/write/call/notify, so they need everything.
2021-03-16 22:48:32 +03:00
Roman Khimov
304b9ad3d4
contract: disable notifications for safe methods
...
See neo-project/neo#2339 .
2021-03-16 22:47:49 +03:00
Roman Khimov
025330f132
Merge pull request #1832 from nspcc-dev/consensus/microfixes
...
consensus: add MaxBlockSize and MaxBlockSysFee settings
2021-03-16 18:11:33 +03:00
Anna Shaleva
0d9266d407
core: remove System.Contract.IsStandard
2021-03-16 16:59:23 +03:00
Roman Khimov
a18fbc7bb1
Merge pull request #1827 from nspcc-dev/native/update_history
...
config: add NativeUpdateHistory
2021-03-16 12:47:22 +03:00
Anna Shaleva
20b70ee9fe
config: add MaxBlockSystemFee setting
2021-03-16 12:09:11 +03:00
Anna Shaleva
8f06bf21d7
config: add MaxBlockSize setting
2021-03-16 12:08:47 +03:00
Anna Shaleva
38103dcc7a
consensus: check transactions count during PrepareRequest verification
2021-03-15 16:58:37 +03:00
Anna Shaleva
23a3514cc0
consensus: store ProtocolConfiguration in consensus config
2021-03-15 16:58:27 +03:00
Anna Shaleva
9377751e65
config: add NativeUpdateHistory
2021-03-15 12:35:14 +03:00
Evgeniy Stratonikov
e8b95ebf3e
oracle/neofs: change result types
...
1. `GetHash` returnes '0x'-prefixed little-endian hex-string.
2. `GetPayload` and `GetRange` assume result is UTF-8.
2021-03-15 10:54:08 +03:00
Anna Shaleva
edfca68a17
rpc: refactor invokecontractverify
...
In `(c *Client) AddNetworkFee` we define network fee for contract
witness verification via `invokecontractverify` RPC call, and that's the
initial purpose of this RPC method. But it was not implemented
correctly. It used `System.Contract.Call` instead of beheiving like
`initVerificationVM`.
During real contract witness verification the whole contract's script is
loaded into VM, and then we jump to the `verify` method. Thus, to define
exact contract verification price, we should act like this (and not just
perform `System.Contract.Call` of `verify` method).
Tests are added.
This bug is the reason of adding extra GAS (c.notary.extraVerifyFee) to
pre-calculated value in
https://github.com/nspcc-dev/neofs-node/pull/404/files#diff-639db437ca2578db46c9e8cbf18f9aa01f8ca5aee30e0fa7e70ba0354822d7b3R237
2021-03-12 18:59:20 +03:00
Anna Shaleva
1261dd5306
core: refactor initVerificationVM
...
It needs only VM and function to get contract state. Also exposed this
method and extended Blockchainer. These changes are needed for the
next commit.
2021-03-12 18:55:27 +03:00
Roman Khimov
f7d74190f5
Merge pull request #1829 from nspcc-dev/change-hashing-scheme
...
Change hashing scheme
2021-03-12 15:20:23 +03:00
Evgeniy Stratonikov
540c6c13a9
oracle/neofs: allow to use filters on NeoFS responses
2021-03-12 14:15:40 +03:00
Roman Khimov
7730aef0ec
payload: adapt notary payloads to new hashing too
2021-03-12 14:14:22 +03:00
Roman Khimov
9d500b86fc
context: s/hex/data/ for JSON
...
See neo-project/neo#2394 .
2021-03-12 13:10:24 +03:00
Anna Shaleva
85a8644517
core: add nativenames.IsValid
2021-03-12 13:05:37 +03:00
Roman Khimov
dc980b5847
sc/context: add network magic into the context
...
See neo-project/neo#2393 , we need this to be able to sign multisig
transactions.
2021-03-12 12:59:14 +03:00
Roman Khimov
6326094264
native: change getCommittee/getNextBlockValidators price
...
See neo-project/neo#2392 , neo-project/neo#2391 .
2021-03-12 11:32:27 +03:00
Roman Khimov
4462a6a6b7
change block/tx/extensible signing process, fix #1741
...
Sign [magic, hash], see neo-project/neo#2314 .
2021-03-12 11:27:50 +03:00
Roman Khimov
3e9bd0be72
smartcontract: use base64 encoding for verifiable items
...
See neo-project/neo#1199 .
2021-03-11 19:55:20 +03:00
Roman Khimov
096f48caf0
Merge pull request #1820 from nspcc-dev/fix/nativetypes
...
native: use proper types in manifest
2021-03-11 17:02:34 +03:00
Evgeniy Stratonikov
de04411488
core/fee: alter opcode prices
...
Follow neo-project/neo#2384 .
2021-03-11 15:44:09 +03:00
Evgeniy Stratonikov
1cb25d3190
native: use proper types in manifest
2021-03-11 11:48:38 +03:00
Evgeniy Stratonikov
9cb38a4b1b
native: support StorageFee
2021-03-11 10:12:30 +03:00
Evgeniy Stratonikov
256cd09228
native: allow to set oracle request price
2021-03-11 10:12:30 +03:00
Evgeniy Stratonikov
27fc28bd69
native: allow to set candidate register price
2021-03-11 10:12:30 +03:00
Evgeniy Stratonikov
b780a64b4d
emit: allow to emit big.Int
2021-03-11 10:12:30 +03:00
Evgeniy Stratonikov
d9e62de454
native: fix prefixGASPerBlock
doc comment
2021-03-11 10:12:30 +03:00
Evgeniy Stratonikov
3278d23852
native: rename Price
to CPUFee
...
Method price is now multiplied by `BaseExecFee`.
2021-03-11 10:12:30 +03:00
Anna Shaleva
9015e50847
core: refactor Neo.Crypto.CheckMultisigWithECDsaSecpr1
...
Rename it to Neo.Crypto.CheckMultisig and remove `message` parameter.
2021-03-10 21:46:05 +03:00
Anna Shaleva
7126637f73
core: remove Neo.Crypto.CheckMultisigWithECDsaSecp256k1
...
Koblitz RIP.
2021-03-10 21:46:05 +03:00
Anna Shaleva
cdaca7be3e
core: use Neo.Crypto.CheckSig for standard signature verification
2021-03-10 21:45:58 +03:00
Anna Shaleva
4e6c1092b8
core: add Neo.Crypto.CheckSig interop
2021-03-10 19:24:19 +03:00
Anna Shaleva
14ade42101
core: remove System.Binary.[Serialize, Deserialize] syscalls
...
And move their tests to native StdLib.
2021-03-10 19:24:19 +03:00
Anna Shaleva
5c9c168ee5
core: remove System.Binary.[Base64*, Base58*] syscalls
...
And move their tests to native StdLib.
2021-03-10 19:24:19 +03:00
Anna Shaleva
4d2ad4b9e2
core: remove System.Json.[Serialize, Deserialize] interops
...
And move their tests to native StdLib.
2021-03-10 19:24:19 +03:00
Anna Shaleva
f65485b735
core: remove System.Binary.Itoa and System.Binary.Atoi syscalls
...
And move their tests to native StdLib.
2021-03-10 19:24:19 +03:00
Anna Shaleva
2b90d4455f
native: implement StdLib contract
2021-03-10 19:24:19 +03:00
Anna Shaleva
078870fceb
compiler: fix contract.IsStandard syscall test
2021-03-10 19:24:19 +03:00
Evgeniy Stratonikov
100f2db3fb
native: implement CryptoLib contract
2021-03-10 19:24:19 +03:00
Roman Khimov
19a23a36e4
Merge pull request #1807 from nspcc-dev/feature/walletsign
...
cli: allow to sign dumped transaction by several non-multisig signers
2021-03-10 14:13:20 +03:00
Roman Khimov
9b0d4e0968
Merge pull request #1792 from nspcc-dev/fix/consensusdata
...
Remove `ConsensusData` from `Block`
2021-03-10 14:12:38 +03:00
Roman Khimov
9ca59e6312
Merge pull request #1811 from nspcc-dev/feature/pubdump
...
Allow to dump public keys in CLI
2021-03-10 13:50:19 +03:00
Evgeniy Stratonikov
ac95510402
core: do not return block if only header is present
2021-03-10 13:38:44 +03:00
Evgeniy Stratonikov
f83b376181
block: replace Base
with Header
2021-03-10 13:38:44 +03:00
Evgeniy Stratonikov
4df8a2ad36
block: remove MaxContentsPerBlock
2021-03-10 13:38:44 +03:00
Evgeniy Stratonikov
2f490a3403
block: remove ConsensusData
field
2021-03-10 13:38:44 +03:00
Evgeniy Stratonikov
7160675ac1
compiler/interop: improve conversion to bytes interops
...
Allow to convert to both `Buffer` and `ByteString`
and explicitly mention VM types. Rename `ToByteArray` to `ToBytes`
to avoid ambiguity.
2021-03-10 13:38:44 +03:00
Roman Khimov
731adf8448
Merge pull request #1484 from nspcc-dev/oracle/neofs
...
Integrate NeoFS into oracle module
2021-03-09 17:30:15 +03:00
Evgeniy Stratonikov
106c27782e
cli/wallet: allow to cosign with a contract
...
Contracts have empty verification script and their hash is
calculated differently.
2021-03-09 15:45:02 +03:00
Evgeniy Stratonikov
b9136dbfc0
smartcontract: use hash in GetWitness()
...
All necessary info must already be in context.
2021-03-09 15:45:02 +03:00
Evgeniy Stratonikov
20d2386414
smartcontract: use script instead of address in context
2021-03-09 15:45:02 +03:00
Evgeniy Stratonikov
ded6a70335
vm: add ParseSignatureContract()
2021-03-09 15:43:57 +03:00
Roman Khimov
e66d36900c
Merge pull request #1701 from nspcc-dev/statemsg
...
Update state-root handling
2021-03-09 15:16:44 +03:00
Evgenii Stratonikov
22b4edd58e
oracle: support NeoFS
2021-03-09 14:24:57 +03:00
Evgeniy Stratonikov
2f3abf95a2
stateroot: broadcast state on new blocks
2021-03-09 13:51:11 +03:00
Evgeniy Stratonikov
3c65ed1507
stateroot: allow to sign new roots
2021-03-09 13:51:11 +03:00
Evgeniy Stratonikov
ac227a80fe
stateroot: use RoleStateValidator for verification
2021-03-09 13:51:10 +03:00
Evgeniy Stratonikov
bf20db09e0
stateroot: move state-root related logic to core/stateroot
2021-03-09 13:48:29 +03:00
Evgeniy Stratonikov
7a176727ca
smartcontract: add GetMajorityNodeCount()
2021-03-09 13:46:44 +03:00
Evgeniy Stratonikov
717be43a5d
oracle: split broadcaster into parts
...
1. Generic parallel sending part can be reused by state service.
2. Specific oracle marshaling is implemented on top of (1).
2021-03-09 13:46:44 +03:00
Evgeniy Stratonikov
55009153a9
vm/emit: emit Boolean values correctly
...
We should convert both `true` and `false` values.
2021-03-09 13:34:22 +03:00
Evgeniy Stratonikov
3e54b46ffb
rpc/tests: fix verification contract
2021-03-09 13:34:22 +03:00
Evgeniy Stratonikov
d06718e1cb
core/tests: print hash of the genesis block
2021-03-09 13:34:22 +03:00
Evgeniy Stratonikov
a737d473fb
native: use ToPreallocatedBytes
where possible
2021-03-09 12:11:26 +03:00
Evgeniy Stratonikov
5a3fa47b95
encoding: panic on nil slice
...
After `state.StorageItem` became a slice of bytes
we no longer panic on accessing `si.Value`. This helps
to ensure that nothing was broken. Providing `nil` to `FromBytes`
is probably an error anyway.
2021-03-09 12:11:26 +03:00
Evgeniy Stratonikov
e551432b30
dao: serialize state.StorageItem
as raw bytes
2021-03-09 12:11:26 +03:00
Evgeniy Stratonikov
55698d0426
dao: use raw state.StorageItem
instead of pointer
...
It is now a slice, there is no need for additional indirection.
2021-03-09 12:11:25 +03:00
Evgeniy Stratonikov
fd4174ad31
core/state: remove IsConst
from StorageItem
2021-03-09 11:59:08 +03:00
Evgeniy Stratonikov
4195603257
native: add NeoFSAlphabet
node role
2021-03-05 13:13:31 +03:00
Evgeniy Stratonikov
7c62df1253
compiler: add tests for syscall handling
2021-03-05 10:17:35 +03:00
Evgeniy Stratonikov
dcbfe856cd
compiler/interop: fix contract.GetCallFlags
2021-03-05 10:17:35 +03:00
Evgeniy Stratonikov
47ef3b41fa
core: fix System.Storage.Find
parameter count
2021-03-05 10:17:35 +03:00
Evgeniy Stratonikov
ffd85dd51d
native/policy: remove MaxBlockSize and MaxBlockSystemFee
2021-03-04 16:59:19 +03:00
Evgeniy Stratonikov
7b8533b67c
native/policy: move MaxTransactionsPerBlock to config
2021-03-04 16:59:19 +03:00
Roman Khimov
924de3e090
Merge pull request #1796 from nspcc-dev/compiler/pow
...
Add syscalls for POW and SQRT opcodes
2021-03-04 16:56:15 +03:00
Evgeniy Stratonikov
8f8c7d2839
compiler: fix import alias handling
2021-03-04 14:41:20 +03:00
Evgeniy Stratonikov
d66ce43239
compiler/interop: replace int64
with int
2021-03-04 13:20:43 +03:00
Evgeniy Stratonikov
1138143a50
compiler/interop: add flag type for PutEx
2021-03-04 13:13:12 +03:00
Evgeniy Stratonikov
1e2944f492
compiler/interop: return proper type from contract.GetCallFlags
2021-03-04 13:09:03 +03:00
Evgeniy Stratonikov
0b54870bfe
compiler: add missing math routines
...
Add interops for ABS, SIGN, MIN, MAX, WITHIN opcodes
2021-03-04 13:05:33 +03:00
Evgeniy Stratonikov
56fe6574c9
compiler: simplify convert.To*
processing
...
With inlining there is no need for special logic in compiler.
2021-03-04 13:05:33 +03:00
Evgeniy Stratonikov
e754ca62db
compiler: do not emit CONVERT for syscall results
...
When we encounter type assertion CONVERT is emitted.
This isn't needed for SYSCALL (or opcode) results
because value already has needed type.
Problems can arise when result is converted to invalid type
but `neogointernal` package shouldn't be used directly anyway.
2021-03-04 13:05:33 +03:00
Evgeniy Stratonikov
5f4385d3fa
compiler: implement syscalls for POW and SQRT opcodes
2021-03-04 13:05:33 +03:00
Evgeniy Stratonikov
578bbabd1d
compiler: allow to emit opcodes directly
2021-03-04 13:03:05 +03:00
Evgeniy Stratonikov
0a789af10d
core: fix parameter count for CreateMultisigAccount
2021-03-04 12:55:31 +03:00
Roman Khimov
58ea4607d0
Merge pull request #1805 from nspcc-dev/interop/convertcontext-fix
...
interop: fix ConvertContextToReadOnly interop
2021-03-04 12:31:36 +03:00
Roman Khimov
dedcab2d63
Merge pull request #1804 from nspcc-dev/interop/createmultisigaccount-fix
...
interop: fix CreateMultisigAccount interop
2021-03-04 12:31:28 +03:00
Anna Shaleva
0c464083ed
interop: fix ConvertContextToReadOnly interop
...
The same bug as in #1804 .
2021-03-04 11:51:32 +03:00
Anna Shaleva
52e4d69c82
interop: fix CreateMultisigAccount interop
...
Introduced in #1720 .
2021-03-04 11:39:49 +03:00
Anna Shaleva
6c0faa4ea3
rpc: provide cosigners accounts to CreateTxFromScript
...
We need to define network fee for each of cosigners, and the only way to
do it is to access the cosigner's script.
2021-03-04 10:37:35 +03:00
Anna Shaleva
b1b9a8cf66
rpc: refactor CreateTxFromScript signature
...
Make cosigners non-variadic.
2021-03-03 13:42:15 +03:00
Evgeniy Stratonikov
798ae6c63c
consensus/test: add missing t.Cleanup()
2021-03-03 13:14:25 +03:00
Roman Khimov
e6d3a60431
Merge pull request #1782 from nspcc-dev/optimize/nep17
...
dao: do not look up new NEP17 batch
2021-03-02 15:28:42 +03:00
Roman Khimov
c9212f29e6
Merge pull request #1744 from nspcc-dev/fix/nativecall
...
Update `CallNative` to post-preview5
2021-03-02 15:28:00 +03:00
Roman Khimov
0c04b403b4
Merge pull request #1794 from nspcc-dev/fix/json
...
stackitem: escape control characters in `ToJSON()`
2021-03-02 13:37:27 +03:00
Evgeniy Stratonikov
e5fbf04529
stackitem: escape control characters in ToJSON()
...
Decoding uses `json.Decoder` which handles everything for us.
2021-03-02 10:47:02 +03:00
Roman Khimov
10cc19b33c
Merge pull request #1791 from nspcc-dev/drop-go-1-13
...
*: drop go 1.13
2021-03-01 17:20:26 +03:00
Roman Khimov
dbc86b4ecc
Merge pull request #1789 from nspcc-dev/vm/pow
...
vm: implement POW and SQRT opcodes
2021-03-01 17:08:44 +03:00
Anna Shaleva
ffb2d78bbd
core: update Notary test
...
Let's allow to wait a bit more. Hardware resources of the Github
workflow tests aren't so fluent.
2021-03-01 17:08:00 +03:00
Anna Shaleva
2c81fc8b8e
*: upgrade tests to use T.Cleanup()
2021-03-01 17:08:00 +03:00
Evgeniy Stratonikov
53327bf475
vm/testdata: update C# json tests
2021-03-01 16:58:53 +03:00
Evgeniy Stratonikov
d255c4a517
vm: implement SQRT opcode
2021-03-01 16:58:53 +03:00
Evgeniy Stratonikov
6496782736
vm: implement POW opcode
2021-03-01 16:58:53 +03:00
Evgeniy Stratonikov
7577bbef22
compiler: copy locals slice during inline
...
Consider function call `f(1, g(2, 3))` when
both `f` and `g` are inlined. If `f` contains some locals,
inlining `g` will replace them with it's another locals map,
because slices in Go reuse storage on `append`.
Thus scope needs to be copied.
2021-03-01 11:48:42 +03:00
Evgeniy Stratonikov
b66b853285
compiler: drop stack after inline
...
Some control-flow statements drop stack items, for example
`return` when it is used inside of `range` loop.
For inlined calls this `return` should drop only portion of stack
which belongs to inlined call.
2021-03-01 11:48:42 +03:00
Roman Khimov
50e330a9c8
Merge pull request #1773 from nspcc-dev/detailed-rpc-error
...
rpc: detalize `submit*` RPC validation error
2021-02-26 17:03:18 +03:00
Evgeniy Stratonikov
d5cb95e685
dao: do not look up new NEP17 batch
...
It will fail anyway.
2021-02-26 14:08:51 +03:00
Evgeniy Stratonikov
61ce4a7f79
core: set native script and hash in SetOracle
2021-02-26 10:59:09 +03:00
Evgeniy Stratonikov
f9f1fe03b2
core: refactor native call
...
1. `System.Contract.CallNative` expects version on stack.
2. Actual method is determined based on current
instruction pointer.
3. Native hashes don't longer depend on NEF checksum.
2021-02-26 10:59:09 +03:00
Anna Shaleva
2fbbadeb56
rpc: detalize submit*
RPC validation error
...
These changes do not break the compatibility with the C# node response.
It is useful for the end-user to be aware of the failed validation reason.
Also, the `cause` will be displayed at the running node log.
2021-02-25 19:18:57 +03:00
Roman Khimov
f264996f74
Merge pull request #1777 from nspcc-dev/fix/vote
...
core: fix native method call flags
2021-02-25 18:55:10 +03:00
Evgeniy Stratonikov
663afbe4df
core: check call flags in LoadToken
...
Follow neo-project/neo#2292 .
2021-02-25 18:14:52 +03:00
Evgeniy Stratonikov
4db5ef05f8
core: fix call flags for System.Contract.Call
...
Follow neo-project/neo#2292 .
2021-02-25 18:12:38 +03:00
Evgeniy Stratonikov
cbda20aca3
core: fix native method call flags
...
Replace `WriteStates` with `States`.
Follow neo-project/neo#2339.
Close #1775 .
Related #1725 .
2021-02-25 18:07:33 +03:00
Roman Khimov
549596bc1f
Merge pull request #1774 from nspcc-dev/fix/compiler
...
Allow to use inlined functions during global var init
2021-02-25 16:16:21 +03:00
Roman Khimov
7cf22d00dd
Merge pull request #1769 from nspcc-dev/ci-dockerhub
...
github: setup github workflow to publish to DockerHub
2021-02-25 15:22:20 +03:00
Evgeniy Stratonikov
0a4ff9d3e4
compiler: allow to use inlined functions to init globals
2021-02-25 15:12:16 +03:00
Evgeniy Stratonikov
ac91de80e7
interop: fix Base58Decode interop
2021-02-25 15:11:52 +03:00
Anna Shaleva
81ea4bbfcf
core: update oracle test
...
It is failing from time to time.
2021-02-25 11:20:28 +03:00