Roman Khimov
05f3329ec0
vm: add IterBack to the Stack to iterate bottom-to-top
...
And use it to build user-facing stack representation because that's the order
that C# VM uses.
2019-11-27 13:00:11 +03:00
Roman Khimov
f3ed91a1f7
vm: properly convert arrays to stackItems
...
They should be arrays of stackItems, not arrays of values.
2019-11-27 13:00:11 +03:00
Roman Khimov
d04bc0cbe3
rpc: add marshaler for StackParamType
...
Makes stack output look better, no one cares about numbers.
2019-11-27 13:00:11 +03:00
Roman Khimov
d7d7215392
cli: rename testinvoke to testinvokescript
...
To not confuse it with future testinvokefunction.
2019-11-27 13:00:11 +03:00
Roman Khimov
3843451ec4
rpc: fix potential getblock handling problem, add a test for it
...
It should only accept hex strings and numbers, anything else is wrong.
2019-11-27 13:00:11 +03:00
Roman Khimov
1c883cc819
rpc: add invokescript tests
2019-11-27 13:00:11 +03:00
Roman Khimov
cf39171485
rpc: implement invokefunction, fix #347
...
Param getters were redone to return errors because otherwise bad FuncParam
values could lead to panic. FuncParam itself might be not the most elegant
solution, but it works good enough for now.
2019-11-27 13:00:11 +03:00
Roman Khimov
ea9bc22510
Merge pull request #513 from nspcc-dev/feat/rpc_param
...
This PR does 3 things:
adds array parameter unmarshalling
extend Param with convenient methods
refactor tests into using tables to make it easier add new tests
(part of #347 solution)
2019-11-22 18:47:59 +03:00
Roman Khimov
eb84ae49da
Merge pull request #508 from nspcc-dev/feature/getvalidators_420
...
core: Implement getvalidators interop
2019-11-22 18:15:08 +03:00
Evgenii Stratonikov
c9d5f8b89c
rpc: cover stack_param with more tests
...
Use require/assert instead of builtin facilities.
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
2019-11-22 13:20:15 +03:00
Evgenii Stratonikov
0f9024d177
rpc: make client default values constants
...
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
2019-11-22 12:57:10 +03:00
Evgenii Stratonikov
3afcd784f0
rpc: refactor tests
...
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
2019-11-22 12:57:07 +03:00
Evgenii Stratonikov
d5fa31cecd
rpc: trim spaces in tests once
...
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
2019-11-22 12:57:03 +03:00
Evgenii Stratonikov
c8987eda32
rpc: add array param type and tests
...
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
2019-11-22 12:56:58 +03:00
Evgenii Stratonikov
7331127556
rpc: make parameter type an enum
...
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
2019-11-22 12:56:49 +03:00
Vsevolod Brekelov
38088b648a
crypto: add unit tests for public key
2019-11-21 15:41:49 +03:00
Vsevolod Brekelov
c03de88b41
core: unit tests blockchain state
2019-11-21 15:41:49 +03:00
Vsevolod Brekelov
d28f2dce05
core: unit test validator state
2019-11-21 15:41:49 +03:00
Vsevolod Brekelov
419b031e96
core: add weighted function for validators
2019-11-21 15:41:49 +03:00
Vsevolod Brekelov
672f314be0
core: nit refactoring and add godoc
2019-11-21 15:41:49 +03:00
Vsevolod Brekelov
8ae88593dd
core: blockchain fmt
2019-11-21 15:41:49 +03:00
Vsevolod Brekelov
3c4b0e955d
core: create blockchain state that represents state of the bc
...
move some util methods to blockchain state
2019-11-21 15:41:49 +03:00
Vsevolod Brekelov
d4e8846ed0
!squash core/crypto
2019-11-21 15:41:49 +03:00
Vsevolod Brekelov
c80ee952a1
core/crypto: add validators and interop for validators
...
add processing of validators while block persist;
add validator structure with decoding/encoding;
add validator get from store;
add EnrollmentTX and StateTX processing;
add pubkey decode bytes, unique and contains functions;
2019-11-21 15:23:35 +03:00
Vsevolod
080b236275
Merge pull request #511 from nspcc-dev/contract-deployment
...
Contract deployment
2019-11-21 11:46:43 +03:00
Roman Khimov
aae3e217a8
rpc/cli: implement contract deployment, fix #474
...
It's used like this:
./bin/neo-go contract deploy -i 1-print.avm -c neo-go.yml -e http://localhost:20331 -w KxDgvEKzgSBPPfuVfw67oPQBSjidEiqTHURKSDL1R7yGaGYAeYnr -g 100
2019-11-20 16:12:40 +03:00
Roman Khimov
310104667d
rpc: refactor out reusable parts of CreateRawContractTransaction()
...
Signing and inputs/outputs management is common for different transactions, so
make separate functions for them.
2019-11-20 16:12:40 +03:00
Roman Khimov
3adc9150d3
cli: rework smart contract configs
...
Use plain yaml structure.
2019-11-20 16:12:40 +03:00
Roman Khimov
7d89ccdb6f
rpc: implement YAML marshaling/unmarshaling for StackParamType
2019-11-20 16:12:40 +03:00
Roman Khimov
34e2122e58
core: only check tx against mempool if it's not in the block
...
Fixes failure to process transaction from the block when it was relayed
initially:
WARN[0788] blockQueue: failed adding block into the blockchain blockHeight=7270 error="transaction 35088916403e5cf2152e16c3bc6e0fba20c955fba38543b9fa5c50a3d3a4ace5 failed to verify: invalid transaction due to conflicts with the memory pool" nextIndex=7271
WARN[0790] blockQueue: failed adding block into the blockchain blockHeight=7270 error="transaction 35088916403e5cf2152e16c3bc6e0fba20c955fba38543b9fa5c50a3d3a4ace5 failed to verify: invalid transaction due to conflicts with the memory pool" nextIndex=7271
WARN[0790] blockQueue: failed adding block into the blockchain blockHeight=7270 error="transaction 35088916403e5cf2152e16c3bc6e0fba20c955fba38543b9fa5c50a3d3a4ace5 failed to verify: invalid transaction due to conflicts with the memory pool" nextIndex=7271
2019-11-20 16:12:40 +03:00
Roman Khimov
27a57e1a2d
transaction: allow system fee specification in NewInvocationTX
...
It's not possible to create any deployment TX without it.
2019-11-20 16:12:40 +03:00
Roman Khimov
d93499cc6f
rpc: implement CalculateInputs for RPC client
...
Using getunspents RPC call.
2019-11-20 16:12:40 +03:00
Roman Khimov
826a29cc98
rpc: implement client-side getunspents
2019-11-20 16:12:40 +03:00
Roman Khimov
29882b076c
rpc: remove duplicating definition of UTXO
...
Port sorting methods to core.
2019-11-19 17:35:04 +03:00
Roman Khimov
d2bdae99e4
Merge pull request #492 from nspcc-dev/feature/interop_neo_tests1
...
core: add unit tests for interops_neo
2019-11-18 19:39:05 +03:00
Vsevolod Brekelov
d57b6e1091
core: add unit tests for interops_neo
2019-11-18 19:31:27 +03:00
Roman Khimov
5076704019
Merge pull request #502 from nspcc-dev/docker-compose-environment-for-neo-go
...
Create docker-compose environment
2019-11-18 17:21:11 +03:00
Evgeniy Kulikov
ab4a0e1b2c
CI: step build_image should use golang:1-alpine
...
- restoring dependencies
- make `deps` requires golang installed
2019-11-18 17:17:22 +03:00
Evgeniy Kulikov
3994d1a943
Makefile: image build doesn't work without deps
2019-11-18 17:17:22 +03:00
Evgeniy Kulikov
2f8b11dabf
reformat code at pkg/network/metrics/metrics.go
2019-11-18 17:17:21 +03:00
Evgeniy Kulikov
0a56d3ddbc
network: generate randomized server id
...
math/rand might generate same id's on one environment, so.. use crypto/rand for generation id's
2019-11-18 17:17:21 +03:00
Evgeniy Kulikov
f640dbb331
DockerCompose: update environment
...
- rewrite Dockerfile
- four nodes, custom network, volume
- p2p, rpc and metrics port forwarded
- make: env_vendor, env_image, env_up, env_down and env_restart
- cleanup Makefile commands
- remove old docker-compose file
fix #497
2019-11-18 17:17:21 +03:00
Roman Khimov
53f666bc13
Merge pull request #504 from nspcc-dev/getunspents
...
Implement getunspents RPC API
2019-11-18 13:45:33 +03:00
Roman Khimov
7f24c6712c
docs: bring rpc.md up to date, add issues links
2019-11-18 11:30:09 +03:00
Roman Khimov
5841d3931e
rpc: implement getunspents method, fix #473
2019-11-18 11:30:09 +03:00
Roman Khimov
829f9757df
Merge pull request #506 from nspcc-dev/fix/writemsg
...
network: write messages atomically
2019-11-18 10:17:22 +03:00
Evgenii Stratonikov
e3098ed0f8
network: write messages atomically
...
Right now message can be written in several Write's so
concurrent calls of writeMsg() can in theory interleave.
This commit fixes it.
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
2019-11-18 09:31:00 +03:00
Roman Khimov
394af5f777
Merge pull request #505 from nspcc-dev/fix/readarray
...
io: restrict ReadArray max array size, fIx #503 .
2019-11-16 10:31:33 +03:00
Evgenii Stratonikov
f65545023d
io: restrict ReadArray max array size
2019-11-15 22:39:21 +03:00
Roman Khimov
e4868cd429
core: implement EncodeBinary on value
...
Fixes panic:
panic: core.NotificationEvent does not have EncodeBinary(*BinWriter)
goroutine 97 [running]:
github.com/CityOfZion/neo-go/pkg/io.(*BinWriter).WriteArray(0xc004f7dda0, 0xabf820, 0xc004f7ddc0)
/home/rik/dev/neo-go/pkg/io/binaryWriter.go:45 +0x4b7
github.com/CityOfZion/neo-go/pkg/core.(*AppExecResult).EncodeBinary(0xc000635498, 0xc004f7dda0)
/home/rik/dev/neo-go/pkg/core/notification_event.go:73 +0x9c
github.com/CityOfZion/neo-go/pkg/core.putAppExecResultIntoStore(0xcf0020, 0xc001aafec0, 0xc000635498, 0xc004f81940, 0x40)
/home/rik/dev/neo-go/pkg/core/notification_event.go:33 +0xab
github.com/CityOfZion/neo-go/pkg/core.(*Blockchain).storeBlock(0xc000118000, 0xc006f89ea0, 0xc006f89ea0, 0x0)
/home/rik/dev/neo-go/pkg/core/blockchain.go:534 +0x2539
github.com/CityOfZion/neo-go/pkg/core.(*Blockchain).AddBlock(0xc000118000, 0xc006f89ea0, 0xc004f368b0, 0x1)
/home/rik/dev/neo-go/pkg/core/blockchain.go:256 +0x91
github.com/CityOfZion/neo-go/pkg/network.(*blockQueue).run(0xc0048f4b80)
/home/rik/dev/neo-go/pkg/network/blockqueue.go:39 +0x14c
created by github.com/CityOfZion/neo-go/pkg/network.(*Server).Start
/home/rik/dev/neo-go/pkg/network/server.go:133 +0x272
2019-11-15 22:05:09 +03:00