Commit graph

3436 commits

Author SHA1 Message Date
Evgenii Stratonikov
48a41bd737 vm: implement CLEARITEMS opcode 2020-04-27 09:01:26 +03:00
Evgenii Stratonikov
9fd04aefa5 vm: implement NEWARRAY0 and NEWSTRUCT0 opcodes 2020-04-24 13:49:10 +03:00
Evgenii Stratonikov
03761421f8 vm: reorder Array/Map opcodes
Also SIZE can be used for both Arrays/Maps and ByteArrays.
2020-04-24 13:48:44 +03:00
Roman Khimov
f940d6e5ad
Merge pull request #901 from nspcc-dev/feature/flowopcodes
vm: implement new flow-control opcodes
2020-04-24 11:15:19 +03:00
Evgenii Stratonikov
d6624a92ca vm: implement new JMP* and CALL* opcodes
In compiler JMP*_L opcodes are always used, as this requires less effort.
2020-04-24 10:16:41 +03:00
Evgenii Stratonikov
fba185cd99 vm: remove stack isolation opcodes
They are not present in NEO3 and will be creating additional difficulties
during future flow-control opcodes implementation.
2020-04-24 10:15:14 +03:00
Roman Khimov
ab9d334182
Merge pull request #903 from nspcc-dev/fix/tests
rpc: simplify RPC tests
2020-04-24 09:41:34 +03:00
Evgenii Stratonikov
7caa81a81c rpc/test: generate block for submitblock on-the-fly
There is no need to provide hex when chain is dumped.
2020-04-24 08:54:22 +03:00
Evgenii Stratonikov
0f17402599 testchain: implement Sign function
Sign any data by all consensus nodes.
2020-04-23 17:09:09 +03:00
Evgenii Stratonikov
76a6937f32 rpc: simplify getblockheader RPC test
Set up hash once and get header via provided chain.
2020-04-23 17:09:08 +03:00
Roman Khimov
687e30c16f
Merge pull request #896 from nspcc-dev/feature/push
vm: implement new PUSH opcodes
2020-04-23 10:59:54 +03:00
Evgenii Stratonikov
008e6eb233 vm: implement new PUSH opcodes 2020-04-23 10:52:28 +03:00
Evgenii Stratonikov
2c39e6fcec consensus: use unencrypted WIFs for test validators
They are easier to work with, because of having no dependencies of VM.
2020-04-23 10:37:45 +03:00
Evgenii Stratonikov
cc20ba651d core: use opcodes instead of raw bytes in tests
It will be helpful during future opcode reordering in NEO3.
2020-04-23 10:37:01 +03:00
Evgenii Stratonikov
f50eaba202 consensus: remove debug test 2020-04-23 10:37:01 +03:00
Evgenii Stratonikov
1a54be279e vm: simplify SimpleCall test
It was taken from the compiler output, but there is
no need in using a lot of complex instructions.
2020-04-23 10:36:44 +03:00
Evgenii Stratonikov
351fdd469f core: calcultate NEO owner on-the-fly 2020-04-23 10:36:44 +03:00
Roman Khimov
be5389e8dd
Merge pull request #897 from nspcc-dev/feature/testchain
core,test: move helper functions for testchain to the internal package
2020-04-22 19:18:14 +03:00
Evgenii Stratonikov
1e50016a91 core,test: move helper functions for testchain to the internal package
Our test chain is used in core,rpc and (in future) interop packages.
It is better to have all related declarations in one place to avoid
code duplication.
2020-04-22 18:17:11 +03:00
Roman Khimov
473ab861c7
Merge pull request #900 from nspcc-dev/fix/861
core,network: shutdown services in tests properly
2020-04-22 18:00:28 +03:00
Evgenii Stratonikov
c508a36827 core,network: shutdown services in tests properly 2020-04-22 17:53:59 +03:00
Roman Khimov
295f9e3ee1
Merge pull request #899 from nspcc-dev/feature/wallet
wallet: add test for regenerating test/docker wallets
2020-04-22 17:37:47 +03:00
Evgenii Stratonikov
70b183fb9d wallet: add test for regenerating test/docker wallets
When changing accounts or VM, it is useful to be able to
regenerate all wallets easy and fast.
2020-04-22 17:17:22 +03:00
Roman Khimov
5addc610d4
Merge pull request #870 from nspcc-dev/neo3/transaction/sender
core: add sender field to transaction
2020-04-20 18:19:49 +03:00
Anna Shaleva
2b5c14160c core: add sender field to transaction
closes #860
2020-04-20 17:21:28 +03:00
Roman Khimov
591a1b900d
Merge pull request #869 from nspcc-dev/neo3/newscript
core: change verification scripts to new format
2020-04-20 12:55:48 +03:00
Roman Khimov
4d08c1dce7
Merge pull request #893 from nspcc-dev/update-3-roadmap
ROADMAP: update for Neo 3 development
2020-04-20 11:57:07 +03:00
Evgenii Stratonikov
cde4ccf01c vm: remove CHECKSIG/VERIFY/CHECKMULTISIG opcodes 2020-04-20 11:55:24 +03:00
Evgenii Stratonikov
4740d937aa vm: dont use SetCheckedHash outside of vm package 2020-04-20 11:55:24 +03:00
Evgenii Stratonikov
941410a840 core: change verification scripts to new format
Verification scripts now invoke Neo.Crypto.* interops instead of
CHECKSIG/VERIFY opcodes.
2020-04-20 11:55:24 +03:00
Evgenii Stratonikov
3657f2e21d consensus: set Nonce and ValidUntilBlock on proposal
Related #841.
2020-04-20 11:55:24 +03:00
Roman Khimov
65c45688f5 ROADMAP: update for Neo 3 development 2020-04-20 11:09:36 +03:00
Roman Khimov
c10c7d2100
Merge pull request #874 from nspcc-dev/disallow-negative-SHL-SHR
vm: disallow negative shifts for SHL/SHR
2020-04-20 10:30:33 +03:00
Roman Khimov
eea695ad25
Merge pull request #887 from nspcc-dev/drop-p2p-checksums
network: drop checksums from messages
2020-04-20 10:30:14 +03:00
Roman Khimov
9a67bfac0b network: drop checksums from messages
Follow neo-project/neo#710 changes.
2020-04-19 23:40:31 +03:00
Roman Khimov
91f8626c42 vm: disallow negative shifts for SHL/SHR
Follow neo-project/neo-vm#257 change for Neo 3.
2020-04-19 19:15:00 +03:00
Roman Khimov
8556c828fa
Merge pull request #868 from nspcc-dev/neo3/transaction/validUntilBlock
rpc: add validUntilBlock to transferNEP5
2020-04-17 14:47:57 +03:00
Anna Shaleva
b809d09b24 rpc: add validUntilBlock to transferNEP5
In #856 I forgot to add validUntilBlock to NEP5 transfer transaction,
so added now.
2020-04-17 13:52:23 +03:00
Roman Khimov
ab8296bc57
Merge pull request #857 from nspcc-dev/neo3/verifiable
core,crypto: implement Verifiable interface
2020-04-17 13:06:55 +03:00
Roman Khimov
ffff9b93ba
Merge pull request #858 from nspcc-dev/neo3/transition
vm: remove FIXME comments from vm

Fix #477.
2020-04-17 12:04:24 +03:00
Evgenii Stratonikov
ceff8736f2 vm: use ID-based syscalls
In NEO3 SYSCALL opcode has 4-byte ID parameter.
This commit removes support for string-based syscalls and
changes SYSCALL's parameter to be fixed 4-byte value.
2020-04-17 11:46:31 +03:00
Evgenii Stratonikov
bfbbef952a vm: move InteropNameToID to emit package 2020-04-17 11:46:31 +03:00
Evgenii Stratonikov
93d2a3e031 vm: serialize zero Integer to an empty ByteArray 2020-04-17 11:46:31 +03:00
Evgenii Stratonikov
5dba30a49d vm: update bool -> []byte conversion to NEO 3
This reverts commit 4c688355bc.
2020-04-17 11:46:31 +03:00
Evgenii Stratonikov
2fd26287c5 vm: update SUBSTR to NEO3 version
This reverts commit 9ebb793009.
2020-04-17 11:46:31 +03:00
Evgenii Stratonikov
f5933c83c6 vm: update json tests to neo3 branch
Skip them until all opcodes will be implemented.
2020-04-17 11:46:31 +03:00
Evgenii Stratonikov
a224917229 consensus: implement Verifiable interface for Payload 2020-04-17 11:12:40 +03:00
Evgenii Stratonikov
82b230f19f core: rename *block.Base.GetHashableData to GetSignedPart()
This allow to use `Block` as a Verifiable item.
When tx is provided, it is set as an interop's script container.
Otherwise, block is set.
2020-04-17 11:12:40 +03:00
Evgenii Stratonikov
a92872931c interop/crypto: allow ECDsaVerify to verify ScriptContainer
When verifying transaction or block, verification script can be
a simple PUSHNULL + SYSCALL, which means that script-encontaining
entity should be verified.
2020-04-17 11:12:40 +03:00
Evgenii Stratonikov
8f08065a8e interop/crypto: allow ECDsaVerify to accept interop items
When invokes with interop item on stack, it should check
for the signature of Verifiable item it contains.
2020-04-17 11:12:40 +03:00