Roman Khimov
6fd5f4e86d
payload: extensible payload hashes are network-dependent
...
Of course they are. Fixes
2021-02-04T13:39:02.351Z WARN peer disconnected {"addr": "172.29.0.4:20333", "reason": "handling CMDExtensible message: signature check failed: invalid signature", "peerCount": 3}
2021-02-04T13:39:02.352Z WARN peer disconnected {"addr": "172.29.0.3:20334", "reason": "handling CMDExtensible message: signature check failed: invalid signature", "peerCount": 2}
in 2+2 setting.
2021-02-04 16:50:51 +03:00
Roman Khimov
ed3cef81cc
core: allow to read states for non-contract verifications
...
C# does it this way now:
callFlags = !witness.VerificationScript.IsStandardContract() ? CallFlags.ReadStates : CallFlags.None
So non-standard scripts _always_ have access to state and standards ones just
don't care (their code is known and it doesn't touch state).
2021-02-04 13:12:11 +03:00
Roman Khimov
ac527650eb
native: add Ledger contract, fix #1696
...
But don't change the way we process/store transactions and blocks. Effectively
it's just an interface for smart contracts that replaces old syscalls.
Transaction definition is moved temporarily to runtime package and Block
definition is removed (till we solve #1691 properly).
2021-02-04 13:12:11 +03:00
Roman Khimov
641896b2fb
Merge pull request #1658 from nspcc-dev/signature_collection/module
...
core, network: add Notary module
2021-02-02 22:24:14 +03:00
Anna Shaleva
df26ca1c7f
core: add Notary module test
2021-02-02 22:01:32 +03:00
Anna Shaleva
4ad9c7929b
internals: move testchain from network to internals
...
It'll be useful for tests outside of the network pkg.
2021-02-02 22:01:32 +03:00
Anna Shaleva
bfbd096fed
core: introduce mempool notifications
2021-02-02 22:01:32 +03:00
Anna Shaleva
19fa0daaa6
core, network: add Notary module
2021-02-02 22:01:20 +03:00
Roman Khimov
f7cb00b82d
Merge pull request #1678 from nspcc-dev/nameservice
...
Implement NameService
2021-02-01 22:52:59 +03:00
Evgeniy Stratonikov
e4ff8326b5
native: add NameService
2021-02-01 21:40:21 +03:00
Roman Khimov
d822e8dc21
vm: add test for neo-project/neo-vm#393
2021-02-01 16:39:54 +03:00
Evgeniy Stratonikov
ec6317d643
core: allow to sign with arbitrary signer
...
Related #1677 .
2021-02-01 10:16:16 +03:00
Evgeniy Stratonikov
c8a07be58d
native: sort methods in manifest
2021-01-29 12:19:08 +03:00
Evgeniy Stratonikov
2336415f42
naitve: disallow contract name modification
2021-01-29 12:19:08 +03:00
Evgeniy Stratonikov
c1cc7e6f9d
native: add additional parameters to deploy
...
1. Management contract has 2 overloads of `deploy` method.
2. Normal contracts should have `_deploy` with 2 parameters.
2021-01-29 12:19:08 +03:00
Evgeniy Stratonikov
849385a533
native: allow to overload native methods
2021-01-29 12:19:08 +03:00
Roman Khimov
818d5988f5
Merge pull request #1695 from nspcc-dev/committeechecks
...
native: unify committee checks
2021-01-29 11:58:33 +03:00
Evgeniy Stratonikov
690b787fe3
native: unify committee checks
...
Fail execution if tx is not signed by committee.
2021-01-29 10:50:17 +03:00
Evgeniy Stratonikov
9592f3e052
network: implement pool for Extensible
payloads
2021-01-28 17:09:06 +03:00
Evgeniy Stratonikov
153678160e
native: use majority hash only for oracles
2021-01-28 17:09:06 +03:00
Evgeniy Stratonikov
db4e7558e0
native: cache all roles in Designate
2021-01-28 17:09:05 +03:00
Evgeniy Stratonikov
c420014cb5
oracle: implement filters
2021-01-28 13:00:59 +03:00
Evgenii Stratonikov
e4528e59dc
oracle: reprocess request on fail
2021-01-28 13:00:59 +03:00
Evgenii Stratonikov
aa852aaaac
oracle: submit responses concurrently
2021-01-28 13:00:59 +03:00
Evgenii Stratonikov
25d734cbad
oracle: process requests concurrently
2021-01-28 13:00:59 +03:00
Evgenii Stratonikov
43e4d3af88
oracle: integrate module in core and RPC
...
1. Initialization is performed via `Blockchain` methods.
2. Native Oracle contract updates list of oracle nodes
and in-fly requests in `PostPersist`.
3. RPC uses Oracle module directly.
2021-01-28 13:00:58 +03:00
Evgenii Stratonikov
7e16bea126
network: implement Oracle module
2021-01-28 12:43:20 +03:00
Evgeniy Stratonikov
c146540ce8
core: fix native contract verification
2021-01-28 12:35:02 +03:00
Evgeniy Stratonikov
dd1e2cefe4
core,cli: disallow verify methods with non-bool returns
2021-01-27 12:51:47 +03:00
Evgeniy Stratonikov
73f888f02e
core: allow to overload contract methods
...
Multiple methods with different parameter count can co-exist.
2021-01-27 12:51:07 +03:00
Roman Khimov
3d79c7644e
Merge pull request #1687 from nspcc-dev/fix-transaction-fee-marshalling
...
Fix transaction fee marshalling
2021-01-23 15:11:14 +03:00
Roman Khimov
ca258d6fbd
fixedn: always correctly unmarshal Fixed8 values
...
Quoted or not, they should be unmarshalled without going through float64.
2021-01-22 19:14:33 +03:00
Roman Khimov
120ae4841f
transactions: fix JSON unmarshalling of fees
...
Fixed8 is already marshalled as a string and stripping quotes from it just
leads to interpreting it as a float with all regular float problems (like
test transaction failing with `txid doesn't match transaction hash`).
2021-01-22 18:22:09 +03:00
Roman Khimov
054ca27e9c
state: use checksums and names to calculate contract hashes
...
It allows to deploy the same NEF using one sender and get different contract
hashes. See neo-project/neo#2240 .
2021-01-22 12:22:48 +03:00
Roman Khimov
6b9b37f170
native: don't call CreateNativeContractHash() in oracle contract
...
Move oracleScript from global context to Oracle itself. We have the hash
already computed by NewContractMD, there is no need to repeat this
calculation.
2021-01-22 11:28:13 +03:00
Evgeniy Stratonikov
5d83c28bc9
network: replace ConsensusType
with ExtensibleType
2021-01-22 10:38:33 +03:00
Evgeniy Stratonikov
b918ec3abc
consensus: refactor payloads structure
...
1. `Version` and `PrevHash` are now in `PrepareRequest`.
2. Serialization is done via `Extensible` payload.
3. Update dbft version.
2021-01-22 10:38:32 +03:00
Evgeniy Stratonikov
59a193c7c7
network/payload: add Extensible payload
2021-01-22 10:35:42 +03:00
Roman Khimov
6bc2512767
Merge pull request #1684 from nspcc-dev/candidate-registration-price
...
native: make registering as a candidate cost more
2021-01-22 10:04:53 +03:00
Evgeniy Stratonikov
49de8161ef
core: implement LoadToken handler
2021-01-22 09:04:37 +03:00
Roman Khimov
476cbbebdc
native: make registering as a candidate cost more
...
Follow neo-project/neo#2252 .
2021-01-21 23:02:59 +03:00
Evgenii Stratonikov
bb706aa55b
vm: implement CALLT opcode
2021-01-21 19:30:04 +03:00
Evgeniy Stratonikov
c6894f3f55
native: check for committee in setters
2021-01-21 15:20:34 +03:00
Evgeniy Stratonikov
24d9a31476
testchain: support signing tx by committee
2021-01-21 14:51:15 +03:00
Evgeniy Stratonikov
719dceff77
nef: merge Compiler and Version fields
2021-01-19 11:19:28 +03:00
Evgeniy Stratonikov
0bbdee2ce1
nef: add Reserved bytes
2021-01-19 11:19:28 +03:00
Evgeniy Stratonikov
52843fc1bf
nef: add Tokens field
2021-01-19 11:19:24 +03:00
Evgeniy Stratonikov
7fb40e104a
io: allow to restrict string size
2021-01-19 11:16:23 +03:00
Roman Khimov
376c22adee
Merge pull request #1670 from nspcc-dev/vm/popitem
...
Add POPITEM opcode
2021-01-19 09:51:53 +03:00
Evgeniy Stratonikov
f0fe03117a
compiler: optimize struct copy a bit
...
POPITEM is cheaper than PUSH + PICKITEM.
2021-01-19 09:46:01 +03:00