Commit graph

755 commits

Author SHA1 Message Date
Evgeniy Stratonikov
a429aa3e68 wallet: truncate file when writing
If wallet size decreases, we need to remove trailing garbage if it
exists. This can happen when removing account or reading pretty-printed
wallet. It doesn't affect our CLI (we decode only file prefix), but
it is nice to always have a valid JSON file.

Signed-off-by: Evgeniy Stratonikov <evgeniy@nspcc.ru>
2021-07-29 17:11:49 +03:00
Roman Khimov
59b4377f90 context: support Neo.Network.P2P.Payloads.Transaction type
C# now uses this one, so use it by default, but also accept old one.
2021-07-23 11:33:51 +03:00
Roman Khimov
8b0dfe135f cli/query: add height command 2021-07-23 10:22:58 +03:00
Roman Khimov
a8a6c8c13d query: display zeroes for unknown addresses
This:
        Voted: null
        Amount : 0
        Block: 0

is better than this:
failed to convert account state from stackitem: invalid stackitem length
2021-07-22 21:13:44 +03:00
Roman Khimov
fde3cce93d cli/query: output key in voter data
People vote for keys, not addresses.
2021-07-22 21:13:44 +03:00
Roman Khimov
24ee8fab5c cli: move wallet candidate getstate into query voter
This command has nothing to do with wallets.
2021-07-22 21:13:44 +03:00
Roman Khimov
753e61bcff cli/query: add 'candidates' and 'committee', fix #2067 2021-07-22 21:13:44 +03:00
Roman Khimov
b7bfaa6d09 cli/query: print addresses instead of script hashes
They're more familiar to users.
2021-07-21 18:49:58 +03:00
Roman Khimov
7fc3689b48 cli/query: provide better help messages 2021-07-21 18:26:58 +03:00
Roman Khimov
0415e6dc10 cli/query: use application log for vm state
C# node doesn't return VMState data, so it leads to "false" being printed for
successful transactions.
2021-07-21 18:25:10 +03:00
Roman Khimov
5fbb60a9ed cli/wallet: request candidate registration price
Hardcoding 1000 is wrong. Inspired by neo-project/neo-node#788.
2021-07-21 12:26:35 +03:00
Evgeniy Stratonikov
7d2d9e96ef cli: add query tx command, fix #2069
Implement a way to check if tx has been persisted on blockchain and
to get general info about transaction. Much more convenient than
handwritten curl queries.

Signed-off-by: Evgeniy Stratonikov <evgeniy@nspcc.ru>
2021-07-20 18:03:50 +03:00
Roman Khimov
0583f252ab *: create real temporary dirs and files in tests
Improve reliability.
2021-07-20 12:51:11 +03:00
Roman Khimov
19717dd9a8 slice: introduce common Copy helper
It's a bit more convenient to use.
2021-07-19 22:57:55 +03:00
Roman Khimov
588f3fbbd3 state: drop State from NEOBalance and NEP17Balance
We're in the `state` package already.
2021-07-19 22:01:07 +03:00
Evgeniy Stratonikov
de15d42861 cli: remove --skip parameter from restore
It isn't really a parameter and it's value can be deduced automatically.

Signed-off-by: Evgeniy Stratonikov <evgeniy@nspcc.ru>
2021-07-16 13:32:08 +03:00
Evgeniy Stratonikov
df5ee4abdc cli: allow to use incremental dumps in db restore
Signed-off-by: Evgeniy Stratonikov <evgeniy@nspcc.ru>
2021-07-16 13:32:08 +03:00
Evgeniy Stratonikov
3a4e0caeb8 core/block: add Nonce field to header
Signed-off-by: Evgeniy Stratonikov <evgeniy@nspcc.ru>
2021-07-15 15:58:49 +03:00
Roman Khimov
41e0218555 cli/wallet: add sysgas to transfer functions
It might also be useful there.
2021-07-02 12:34:18 +03:00
Roman Khimov
2a57e48897 cli/sc: add sysgas option to add some gas
Sometimes on-chain invocations need a bit more GAS than expected after test
invocations, so let the user compensate for that. 2.x has similar option since
483fefbb62.
2021-07-02 11:57:47 +03:00
Roman Khimov
3646270af0
Merge pull request #2026 from nspcc-dev/fix-state
Fix manifest `Extra` field marshaling
2021-06-29 15:11:25 +03:00
Evgeniy Stratonikov
8d67a03aec stackitem: fix Buffer deserialization
Fix incorrect application log for transaction in N3 testnet
8eb4076f1f1c07e693eda7e810779488a2d2b50aba9b727fd237cbc3adbec9e9

Signed-off-by: Evgeniy Stratonikov <evgeniy@nspcc.ru>
2021-06-29 11:39:55 +03:00
Evgeniy Stratonikov
4249674ddc compiler: check for contract permissions
On many occassions we can determine at compile-time if contract config lacks
some properties it needs. This includes all native contract invocations
through stdlib, as both hashes and methods are known at compile-time
there.

Signed-off-by: Evgeniy Stratonikov <evgeniy@nspcc.ru>
2021-06-28 11:49:29 +03:00
Anna Shaleva
67fe2a82bc cli: remove Can't find matching token in the wallet warning 2021-06-17 11:29:16 +03:00
Anna Shaleva
91f4513357 cli: fix + marshalling in TestNEP11_OwnerOf_BalanceOf_Transfer
Problem:
```
executor_test.go:151:
    	Error Trace:	executor_test.go:151
    	            				executor_test.go:147
    	            				nep11_test.go:232
      	Error:      	Expect "{"name":"HASHY 3HNCEX8D9J0p\u002BLxmr3uPhOhSW90="}" to match "{"name":"HASHY 3HNCEX8D9J0p+Lxmr3uPhOhSW90="}"
       	Test:       	TestNEP11_OwnerOf_BalanceOf_Transfer
```

Solution:
Same as preesnted in #2006.
2021-06-11 15:22:32 +03:00
Anna Shaleva
472a44a464 *: regenerate test wallets with resources-friendly scrypt parameters 2021-06-11 15:22:32 +03:00
Anna Shaleva
50296975e2 crypto: allow to provide non-default scrypt parameters 2021-06-11 15:22:28 +03:00
Anna Shaleva
6ca9c87b9c Revert "cli: band-aid failing TestNEP11_OwnerOf_BalanceOf_Transfer"
This reverts commit f01d94ae53.

Extra GAS is not needed here after HASHY fix.
2021-06-11 13:58:57 +03:00
Anna Shaleva
39e096da64 examples: use base64 to encode HASHY token ID
Base58 does not preserve one-to-one byte correspondence with the
original data, so different combinations of the same number of bytes
might have different encoded string length. We use GAS transfer to mint
HASHY token, where the token hash is Base58Encode(Ripemd160(data + txHash)).

The problem is that `invokescript` RPC call is used to define transfer tx
sysfee, thus, txHash during testinvoke differs from the actual one, that's
why resulting token ID may have different length during testinvoke and
real invoke. As far as we use token ID as a key to store contract
values, the storage price may also differ. The result is failing
TestNEP11_OwnerOf_BalanceOf_Transfer test due to `gas limit exceeded`
error:

```
    logger.go:130: 2021-06-10T21:09:08.984+0300	WARN	contract invocation failed	{"tx": "45a0220b19725eaa0a4d01fa7a6cdaac8498592e8f3b43bdde27aae7d9ecf635", "block": 5, "error": "error encountered at instruction 36 (SYSCALL): error during call from native: error encountered at instruction 22 (SYSCALL): failed to invoke syscall 1736177434: gas limit exceeded"}
    executor_test.go:219:
        	Error Trace:	executor_test.go:219
        	            				nep11_test.go:132
        	            				nep11_test.go:235
        	Error:      	Not equal:
        	            	expected: 0x2
        	            	actual  : 0x4
        	Test:       	TestNEP11_OwnerOf_BalanceOf_Transfer
```

Fixed by using base64 instead of base58 (base64 preserves the resulting
encoded string length for the same input length).
2021-06-11 13:57:59 +03:00
Roman Khimov
f01d94ae53 cli: band-aid failing TestNEP11_OwnerOf_BalanceOf_Transfer 2021-06-10 22:46:11 +03:00
Evgeniy Stratonikov
4467e2cbfd cli,compiler: allow to specify manifest permissions 2021-06-04 11:16:22 +03:00
Evgeniy Stratonikov
f33daf759a compiler/test: fix typo in verify.yml 2021-06-03 10:32:56 +03:00
Roman Khimov
0677838f3e
Merge pull request #1986 from nspcc-dev/cli/getaccountstate
cli: add `wallet candidate getstate`
2021-05-31 11:39:34 +03:00
Anna Shaleva
c2b5459646 cli: add wallet candidate getstate 2021-05-31 11:18:59 +03:00
Roman Khimov
1a16068b0a
Merge pull request #1973 from nspcc-dev/custom-contracts
cli: allow to specify CustomContracts/Groups signer
2021-05-28 17:32:58 +03:00
Evgeniy Stratonikov
e3e0e2a8a8 cli: allow to specify CustomContracts/Groups signer
The syntax is `CalledByEntry,CustomContracts:hash1:hash2`.
2021-05-28 15:46:33 +03:00
Anna Shaleva
9340a70aa8 cli: add description to vote command on how to unvote 2021-05-28 15:15:37 +03:00
Evgeniy Stratonikov
b693d54282 compiler: count local variables on the go
Create local variables as they are needed and remove `INITSLOT`
if there were no locals. This helps to eliminate a whole class
of bugs when calculated and real amount mismatched.
2021-05-19 11:50:07 +03:00
Anna Shaleva
71948d903b cli: use non-native NNS instead of native NNS in NEP-related tests 2021-05-17 22:09:30 +03:00
Evgeniy Stratonikov
ea49c6b637 wallet: rename isdefault to isDefault
Follow neo-project/neo#2451 .
2021-05-14 10:31:31 +03:00
Roman Khimov
9d2712573f *: enable godot linter and fix all its warnings
It's important for NeoGo to have clean documentation. No functional changes.
2021-05-12 23:17:03 +03:00
Roman Khimov
c4e084b0d8 *: fix whitespace errors
leading/trailing newlines
2021-05-12 22:51:41 +03:00
Roman Khimov
6fea16451a cli/input: ignore term.Restore errors, fix errcheck warnings
I'm not sure we can do anything useful here.
2021-05-12 21:53:41 +03:00
Roman Khimov
e9cefc4bfc *: fix all errcheck warnings in testing code 2021-05-12 21:45:12 +03:00
Roman Khimov
0500c8f9d7 cli/wallet: fix error handling
cli/wallet/wallet.go:527:19: Error return value of `cli.NewExitError` is not checked (errcheck)
                cli.NewExitError("valid account address must be provided", 1)
2021-05-12 20:19:24 +03:00
Roman Khimov
ec50bb4041 cli/wallet: fix error handling
ineffectual assignment to err (ineffassign)

`err` is shadowed at `tx, err = c.CreateNEP11TransferTx()` line.
2021-05-12 19:34:12 +03:00
Roman Khimov
ad8ffee0ab *: remove redundant return statements
Found by gosimple via golangci-lint.
2021-05-12 18:24:16 +03:00
Anna Shaleva
6d59689d9c core: rename Neo.Crypto.CheckMultisig interop 2021-05-11 18:38:14 +03:00
Anna Shaleva
366e79b9b8 core: rename Neo.Crypto.CheckSig interop 2021-05-11 18:37:55 +03:00
Evgeniy Stratonikov
721748acfd examples: change NFT contract to use storage iterators 2021-05-11 12:13:30 +03:00
Roman Khimov
ba5273999f
Merge pull request #1950 from nspcc-dev/nep11/data
*: add `data` to NEP11 Transfer
2021-05-06 10:39:56 +03:00
Anna Shaleva
d0c64347ab *: add data to NEP11 Transfer 2021-05-05 19:44:29 +03:00
Roman Khimov
4fb421738b
Merge pull request #1945 from nspcc-dev/network/tls
cli: reload RPC-server TLS config on SIGHUP
2021-05-05 15:24:30 +03:00
Anna Shaleva
a04e46f719 cli: reload RPC-server TLS config on SIGHUP 2021-05-04 10:38:02 +03:00
Anna Shaleva
f61ab6bd11 cli: add nep11 properties command 2021-04-30 16:23:06 +03:00
Anna Shaleva
ba7ebc2390 cli: add nep11 [tokens | tokensOf | ownerOf] commands 2021-04-30 16:23:06 +03:00
Anna Shaleva
4e55b1a9ed cli: add nep11 ownerOf command 2021-04-30 16:23:06 +03:00
Anna Shaleva
946e940ce0 cli: adjust nep17 transfer command usage text
Token name or hash can be used.
2021-04-30 16:23:06 +03:00
Anna Shaleva
7ea15f02c6 cli: add nep11 transfer command 2021-04-30 16:23:06 +03:00
Anna Shaleva
8cfb72d5e9 cli: allow to omit data parameter for NEP17 transfers
There's a case when cosigners are specified and data is not.
2021-04-30 16:23:06 +03:00
Anna Shaleva
3eefda7f1a cli: add nep11 balance command 2021-04-30 16:23:06 +03:00
Anna Shaleva
3742e38399 cli: add nep11 remove command 2021-04-30 16:23:06 +03:00
Anna Shaleva
5fdb8e2a01 cli: add nep11 info command 2021-04-30 16:23:06 +03:00
Anna Shaleva
ba8b0fd7b0 cli: reuse existing token flag for nep17-related commands 2021-04-30 16:23:06 +03:00
Anna Shaleva
a61a3d5ceb cli: add nep11 import command 2021-04-30 16:23:06 +03:00
Anna Shaleva
4b8d814ee8 cli: move common NEP17 flags to package variables
These flags will be reused for NEP11 commands.
2021-04-30 16:23:06 +03:00
Anna Shaleva
c3264c065d rpc: check token standard in nepTokenInfo 2021-04-30 16:23:04 +03:00
Anna Shaleva
40ae78cb88 wallet: add Standard field to Token
We need to distinguish NEP11 and NEP17 tokens preesnted in the wallet.
2021-04-30 15:58:27 +03:00
Anna Shaleva
e48eb10522 cli: unify 'contract deploy' and 'contract invoke*' commands
These commands share a lot of code.
2021-04-23 12:40:13 +03:00
Anna Shaleva
d98abd75d2 cli: refactor handleVote method
Reuse existing RPC client method for transaction sending.
2021-04-23 10:45:15 +03:00
Anna Shaleva
e43ab642d1 cli: refactor handleCandidate method
Reuse existing RPC client method for transaction sending.
2021-04-23 10:45:15 +03:00
Anna Shaleva
14c2d7d25a cli: allow to provide cosigners for 'wallet nep17 multitransfer' 2021-04-23 10:45:15 +03:00
Anna Shaleva
f848783d5d cli: allow to provide cosigners for 'wallet nep17 transfer' 2021-04-23 10:45:15 +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
16fa191ccb cli: move combining signers and accounts to a separate package
This code will be reused in other packages.
2021-04-23 10:27:43 +03:00
Anna Shaleva
94316fa36d cli: move GetDataFromContext and ParseParams to a helpers package 2021-04-23 10:26:09 +03:00
Anna Shaleva
d12ae0998f cli: return numWordsRead from GetDataFromContext
It's needed when we have extra args after the 'data' argument. Then
these args are started right from numWordsRead offset.
2021-04-23 10:23:06 +03:00
Anna Shaleva
2ab420ed18 cli: move cosigners parsing to a separate function
We have a lot of common code which is shared between `smartcontract` and
`wallet` cli packages. It's convinient to keep it in a separate helper
package in order to avoid functional cli packages dependencies.
2021-04-23 10:11:01 +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
70fc78b768 cli: update usage text for 'wallet sign' command
RPC endpoint can be provided.
2021-04-21 15:51:19 +03:00
Anna Shaleva
a348347fe8 cli: refactor readAccountInfo method
It doesn't require binwriter.
2021-04-21 15:51:19 +03:00
Anna Shaleva
2daae43eaf cli: add optional 'name' argument to 'wallet import-deployed' command
If the provided WIF is encrypted then we have no way to set the
account name. Fixed.
2021-04-21 15:51:19 +03:00
Anna Shaleva
0ccced2274 cli: add usage description to 'wallet import' command 2021-04-21 15:51:19 +03:00
Anna Shaleva
08e88ce5b2 cli: handle 'name' named argument in 'wallet import-multisig'
If the provided WIF is encrypted, then we won't get account name from
readAccountInfo.
2021-04-21 15:51:19 +03:00
Anna Shaleva
6af2f3fdec cli: use AddressFlag for 'wallet remove' command 2021-04-21 15:51:13 +03:00
Anna Shaleva
42bfd413e3 cli: fix UsageText for 'wallet import-deployed' command 2021-04-19 16:23:53 +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
2a144d0420 cli: use CalledByEntry as default cosigner's scope 2021-04-19 11:52:28 +03:00
Anna Shaleva
4e66293612 cli: allow to provide 'data' for 'contract deploy' command 2021-04-19 10:52:42 +03:00
Anna Shaleva
1a8ea8e2d6 cli: specify usage text for 'contract deploy' command 2021-04-19 10:50:15 +03:00
Roman Khimov
8f14c61c34
Merge pull request #1906 from nspcc-dev/cli/transfer_param
cli: allow to pass 'data' for nep17 transfer command
2021-04-19 10:43:42 +03:00
Anna Shaleva
db868f033e cli: allow to provide data for nep17 transfer commands 2021-04-19 10:20:29 +03:00
Anna Shaleva
ced90e0510 cli: use AddressFlag for nep17 import 2021-04-16 15:18:33 +03:00
Anna Shaleva
92c6708fa0 cli: use AddressFlag for import-deployed 2021-04-16 15:15:25 +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
Anna Shaleva
87f950a719 cli: format error message 2021-04-16 12:41:02 +03:00
Anna Shaleva
4edc62148b cli: use AddressFlag for dump-keys 2021-04-16 12:41:42 +03:00
Anna Shaleva
df24c51262 cli: use AddressFlag for calc-hash 2021-04-16 12:41:28 +03:00
Anna Shaleva
90b054afd0 cli: check address flag is set for validator-related commands 2021-04-16 12:41:02 +03:00
Anna Shaleva
ff2b051646 cli: use AddressFlag for nep17-related commands 2021-04-16 12:41:02 +03:00
Anna Shaleva
2dcc729c47 cli: use AddressFlag for wallet sign 2021-04-16 12:40:01 +03:00
Roman Khimov
26eff7110c cli/smartcontract: allow deploying contracts from multisig accounts
By providing `--out` flag.
2021-04-07 11:50:24 +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
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
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
e5cdecfa9f core: fix transaction hashes 2021-03-18 17:57:54 +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
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
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
cdaca7be3e core: use Neo.Crypto.CheckSig for standard signature verification 2021-03-10 21:45:58 +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
Evgeniy Stratonikov
2f490a3403 block: remove ConsensusData field 2021-03-10 13:38:44 +03:00
Evgeniy Stratonikov
09af8b4fcb cli: allow to dump wallet public keys 2021-03-10 12:37:15 +03:00
Evgeniy Stratonikov
1578a99432 cli/wallet: add test for multiple signers 2021-03-09 15:45:02 +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
8a4b97171a cli/wallet: fail if signer is missing in tx 2021-03-09 15:45:02 +03:00
Evgeniy Stratonikov
7553c1ac96 cli/wallet: process signers in order 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
8ef7dd320c cli: rename multisig sign to wallet sign 2021-03-09 15:45:02 +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
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
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
Anna Shaleva
2c81fc8b8e *: upgrade tests to use T.Cleanup() 2021-03-01 17:08:00 +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
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
c58dc7e453
Merge pull request #1758 from nspcc-dev/cli/0x
cli: support Uint160 hashes with 0x prefix
2021-02-19 16:23:56 +03:00
Anna Shaleva
488e75a246 cli: add filebytes parameter type 2021-02-19 10:52:45 +03:00
Evgeniy Stratonikov
b8024dbfa8 cli: support Uint160 hashes with 0x prefix 2021-02-18 14:38:50 +03:00
Evgeniy Stratonikov
3f7bea4e99 cli/flags: allow to use hashes in address flag 2021-02-18 12:50:20 +03:00
Anna Shaleva
7896ef0640 rpc: allow client to send nep17 transfer with data 2021-02-11 17:11:36 +03:00
Evgeniy Stratonikov
f6176b30f2 cli: support escape codes 2021-02-11 16:06:11 +03:00
Roman Khimov
dc3967ae7b manifest: add manifest validity checks
Refs. #1699.
2021-02-09 22:31:26 +03:00
Roman Khimov
7bef87e2ef cli: use base64 for state dump
See neo-project/neo-modules/#499.
2021-02-07 22:07:30 +03:00
Roman Khimov
a442e1530d native: rename onPayment into onNEP17Payment
Follow neo-project/neo#2287.
2021-02-05 16:09:51 +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
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
Roman Khimov
9a99054e6b
Merge pull request #1427 from nspcc-dev/oracle/module
network: implement Oracle module
2021-01-28 15:24:36 +03:00
Roman Khimov
02d1411c0e
Merge pull request #1690 from nspcc-dev/usability-improvements
Compiler/CLI usability improvements
2021-01-28 14:44:53 +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
Roman Khimov
79e11c93a1 cli: allow to specify cosigners with Neo addresses
Make it a bit more usable.
2021-01-27 22:32:29 +03:00
Roman Khimov
48e3a41133 cli: remove outdated contract deploy comment
It's relevant for Neo 2.0, but not 3.0.
2021-01-27 21:45:44 +03:00
Roman Khimov
fac2a0d7e3 cli: provide -m flag for manifest when deploying a contract
It's a bit easier to use. Previously we couldn't have it because it was used
for '--mainnet', but we no longer specify the network, so it can be used for
'--manifest'.
2021-01-27 21:39:14 +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
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
476cbbebdc native: make registering as a candidate cost more
Follow neo-project/neo#2252.
2021-01-21 23:02:59 +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
Roman Khimov
6ecc6f0422 native: call native contracts by ID instead of name
Fix #1666.
2021-01-18 00:38:23 +03:00
Roman Khimov
f39ede9869 opcode: add CALLT opcode, move ABORT/ASSERT
Refs. #1644. Hash compatibility test temporarily disabled, to be enabled when
it's up to date with current C# master.
2021-01-18 00:14:52 +03:00
Evgeniy Stratonikov
50d515a3e5 cli: add tests for Storage.Find invocations
It returns values of different types we better be sure that
compiler emits correct code.
2021-01-15 21:12:10 +03:00
Evgenii Stratonikov
1c0c331e25 core: update System.Contract.Call syscall
1. Remove `System.Contract.CallEx`.
2. Extend number of parameters.
3. Add return value count to `VM.Context`.
2021-01-14 18:23:36 +03:00
Evgeniy Stratonikov
0b26b46234 state: store NEF instead of script for contract
NEFs for native contracts are set statically, thus
field values are taken from the reference implementation.
2021-01-13 15:34:10 +03:00
Evgenii Stratonikov
d4723d8e81 cli: use default adress in transfer 2021-01-12 11:14:40 +03:00
Evgenii Stratonikov
d737915843 cli: output nep17 balance using decimals
Also fix balance tests to match full line, not just prefix.
2021-01-11 15:02:24 +03:00
Roman Khimov
a8bb040558 *: fix ineffassign goreportcard warnings 2020-12-28 17:31:50 +03:00
Evgenii Stratonikov
c49eb86a2e cli: allow to calculate contract hash before deployment 2020-12-17 15:44:42 +03:00
Evgenii Stratonikov
1ffa1f9ade native: fix contract hashes 2020-12-15 12:58:04 +03:00
Evgenii Stratonikov
5310c7f3ce native: fix NEP17.Transfer cost
It was increased with the introducion of `postTransfer`.
2020-12-15 12:04:10 +03:00
Roman Khimov
cf8cf93e7a native: change contract names, move them to separate package
Follow neo-project/neo#2138 and make RPC client's GetNativeContractHash
case-sensitive.
2020-12-14 15:24:15 +03:00
Roman Khimov
aff1469482 native: uppercase token symbols
Follow neo-project/neo#2136.
2020-12-14 15:24:15 +03:00
Roman Khimov
e3dfb5d165 cli/wallet: swap name/address checks for token identification
Address identification must have a priority, another token can have this
address in its name, but when there is a hash specified we should take the one
with proper hash.
2020-12-14 15:24:15 +03:00
Roman Khimov
8e2df8902c cli/wallet: don't mangle token symbol in output
It's important to show it as is because it identifies token.
2020-12-14 15:24:15 +03:00
Roman Khimov
1e9253f1f0 interop: rename Neo.Native.Call to System.Contract.CallNative 2020-12-14 15:24:13 +03:00
Roman Khimov
ab12eee346 native: move contract deployment to management contract
See neo-project/neo#2119.
2020-12-14 15:23:46 +03:00
Roman Khimov
ad3547783d native: drop Neo.Native.Deploy, move contract init to management contract
The contract is almost a stub at the moment, though it does deploy other
contracts.
2020-12-14 13:33:41 +03:00
Evgenii Stratonikov
2341ae0c53 compiler: specify safe methods in config 2020-12-10 18:00:43 +03:00
Evgenii Stratonikov
1fee268f95 cli/smartcontract: return error if deploy script failed to run 2020-12-10 14:41:02 +03:00
Evgenii Stratonikov
56b23b718d fixedn: allow to parse big decimals 2020-12-09 11:19:25 +03:00
Evgenii Stratonikov
e4c3339c91 util: move Fixed8 to encoding/fixedn package 2020-12-09 11:18:18 +03:00
Evgenii Stratonikov
cd5219086a wallet: export NewAccountFromPrivateKey()
Don't perform back-and-forth conversion, don't handle error
which never occur.
2020-12-04 12:45:53 +03:00
Evgenii Stratonikov
239a8c3de7 cli: fix wallet convert and add tests
Close #1589.
2020-12-04 12:45:53 +03:00
Evgenii Stratonikov
4cd5747ab7 cli/test: add test for wallet dump --decrypt 2020-12-04 11:05:49 +03:00
Evgenii Stratonikov
f4cbb1ae74 cli/test: clean input buffer after execution 2020-12-04 11:05:49 +03:00
Evgenii Stratonikov
66402923b9 cli/server: remove unused readBlock()
It became obsolete after 6f7284906a.
2020-12-04 11:05:49 +03:00
Evgenii Stratonikov
573d1d10c0 cli: add tests for contract command 2020-12-04 11:05:48 +03:00
Evgenii Stratonikov
bb316f4652 cli/test: trim newline char in checkNextLine 2020-12-04 11:04:02 +03:00
Evgenii Stratonikov
d71e45bcc5 cli/contract: make --force flag bool 2020-12-04 11:00:03 +03:00
Evgenii Stratonikov
8be9158e2f cli: remove explicit client.Init() calls
This is done inside `GetRPCClient()`.
2020-12-03 17:57:18 +03:00
Evgenii Stratonikov
2f39701d76 vm: provide writer in PrintOps()
Make it more flexible and testable. Fallback to using
stdout if no writer is provided.
2020-12-02 10:49:37 +03:00
Roman Khimov
9a4183abb9
Merge pull request #1583 from nspcc-dev/tests/dump
cli: add tests for `db dump/restore`
2020-12-01 19:36:24 +03:00
Evgenii Stratonikov
99bdee676a cli: add tests for db dump/restore 2020-12-01 18:38:09 +03:00
Roman Khimov
1672887123 nef: increase version field to 32 bytes
Follow recent C# changes.
2020-11-30 11:26:29 +03:00
Roman Khimov
470e1592d9 request: make CreateDeploymentScript work with NEFs
And use it in testing code.
2020-11-27 21:53:39 +03:00
Roman Khimov
e12c52f588 nef: change checksum calculation scheme
It's now being calculated for whole file, not just header.
2020-11-27 21:47:08 +03:00
Roman Khimov
0c7e727859 nef: drop scripthash
It's no longer a part of the file.
2020-11-27 21:47:08 +03:00
Roman Khimov
1cf1fe5d74 *: introduce stable contract hashes
Follow neo-project/neo#2044.
2020-11-27 21:47:08 +03:00
Evgenii Stratonikov
75a9a42403 compiler: check emitted event names
Check that all `Notify` invocations in source correspond to some event
in manifest.
Helpful for typos such as `transfer` instead of `Transfer`.
2020-11-26 13:49:58 +03:00
Evgenii Stratonikov
25f1db6de0 compiler: check supported standards
Check that emitted manifest complies with supported standards.
This can be made a separate flag.
2020-11-26 12:51:39 +03:00
Evgenii Stratonikov
6f7284906a blockchainer: allow to dump/restore chain 2020-11-24 16:43:11 +03:00
Evgenii Stratonikov
31eca342eb *: replace all NEP5 occurences to NEP17 2020-11-24 13:08:24 +03:00
Evgenii Stratonikov
b97dfae8d8 native: replace NEP-5 with NEP-17 2020-11-24 13:08:23 +03:00
Evgenii Stratonikov
c849176be7 manifest: include contract Name 2020-11-24 11:23:44 +03:00
Evgenii Stratonikov
1869d6d460 core: allow to use state root in header 2020-11-20 17:16:32 +03:00
Roman Khimov
88cee80a58
Merge pull request #1543 from nspcc-dev/compatibility-fixes
rpc, cli: tiny compatibility fixes
2020-11-16 15:53:42 +03:00
Anna Shaleva
083879838c rpc: adjust getrawtransaction and gettransactionheight RPC call
We should return verbose transaction in case if it is in the mempool
from `getrawtransaction`. We also shouldn't return height from
`gettransactionheight` in case if transaction is in the mempool.
2020-11-16 13:25:42 +03:00
Roman Khimov
286d9185f4 smartcontract: remove contract features
We're featureless now, all contracts have access to storage and payable status
is to be determined via new NEP. Follow neo-project/neo#2060.
2020-11-13 21:26:23 +03:00
Anna Shaleva
860d2ca7a7 cli: prettify transfer error
Let the user know what's wrong when cannot find suitable token.
2020-11-13 12:43:56 +03:00
Anna Shaleva
7ca93e76ac core, rpc: allow to store several AppExecResult for a single hash
It is required for we have several executions per block.
2020-11-12 16:24:39 +03:00
Roman Khimov
a5b6598024
Merge pull request #1533 from nspcc-dev/examples/itoa
examples: add an example of binary.Itoa usage
2020-11-10 16:39:53 +03:00
Evgenii Stratonikov
54992ad4f3 core: provide account in calculate claimable
`getunclaimedgas` RPC should return all GAS available to claim.
2020-11-10 16:08:21 +03:00
Anna Shaleva
a86bd2cd08 cli: set ctl.ErrWriter
We did not have it set, however we use it in the several places which
results with the following panic:
```
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x4ddf0d]

goroutine 1 [running]:
fmt.Fprintln(0x0, 0x0, 0xc0001d7c08, 0x1, 0x1, 0x10376c0, 0xc0002051c0, 0x0)
	fmt/print.go:265 +0x5d
github.com/nspcc-dev/neo-go/cli/wallet.transferNEP5(0xc0000a9080, 0x0, 0x0)
	github.com/nspcc-dev/neo-go/cli/wallet/nep5.go:445 +0x9eb
github.com/urfave/cli.HandleAction(0xc837c0, 0xf26198, 0xc0000a9080, 0xc00007f600, 0x0)
	github.com/urfave/cli@v1.20.0/app.go:490 +0xc8
github.com/urfave/cli.Command.Run(0xdc66a3, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdd0b0d, 0x14, 0xdf6c25, ...)
	github.com/urfave/cli@v1.20.0/command.go:210 +0x9e8
github.com/urfave/cli.(*App).RunAsSubcommand(0xc0001aa340, 0xc0000a8dc0, 0x0, 0x0)
	github.com/urfave/cli@v1.20.0/app.go:379 +0x88b
github.com/urfave/cli.Command.startApp(0xdc23e4, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdd546a, 0x18, 0x0, ...)
	github.com/urfave/cli@v1.20.0/command.go:298 +0x81a
github.com/urfave/cli.Command.Run(0xdc23e4, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdd546a, 0x18, 0x0, ...)
	github.com/urfave/cli@v1.20.0/command.go:98 +0x1219
github.com/urfave/cli.(*App).RunAsSubcommand(0xc0001aa1a0, 0xc0000a8c60, 0x0, 0x0)
	github.com/urfave/cli@v1.20.0/app.go:379 +0x88b
github.com/urfave/cli.Command.startApp(0xdc45bf, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0xde1d28, 0x24, 0x0, ...)
	github.com/urfave/cli@v1.20.0/command.go:298 +0x81a
github.com/urfave/cli.Command.Run(0xdc45bf, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0xde1d28, 0x24, 0x0, ...)
	github.com/urfave/cli@v1.20.0/command.go:98 +0x1219
github.com/urfave/cli.(*App).Run(0xc0001aa000, 0xc000030120, 0x12, 0x12, 0x0, 0x0)
	github.com/urfave/cli@v1.20.0/app.go:255 +0x741
main.main()
	command-line-arguments/main.go:18 +0x4b

```
2020-11-10 15:20:03 +03:00
Anna Shaleva
2f9d64821f cli: add ExitError where needed 2020-11-05 10:37:06 +03:00
Anna Shaleva
b8a88f9378 rpc: allow to use address, id or name instead of scripthash [Client]
... for getcontractstate RPC client method.
2020-11-03 17:58:24 +03:00
Anna Shaleva
795823ee3b cli: fixed removed network arguments
Should be done in 590be7a58d. I removed
network flags from RPC, but we still need them for server-related
cli commands.
2020-10-21 17:41:23 +03:00
Anna Shaleva
590be7a58d rpc, cli: remove Network from RPC client and cli 2020-10-19 16:11:11 +03:00
Anna Shaleva
c50f3db6ad rpc, cli: encode script in base64 for Invoke* 2020-10-19 11:51:27 +03:00
Anna Shaleva
659fb89beb cli: warn about bad VM state during invokefunction 2020-10-13 19:14:36 +03:00
Evgenii Stratonikov
897c9198f8 cli: allow to send multisig deploy/invoke tx
It allows to invoke native contracts as committee
from CLI in privnet, e.g. to set new oracle nodes.

Also don't require `out` flag in `multisig sign`
if tx is to be pushed.
2020-10-07 11:48:06 +03:00
Evgenii Stratonikov
d50a14359a cli/wallet: save tx only if --out was provided
Also don't print tx hash twice.
2020-10-07 10:04:19 +03:00
Evgenii Stratonikov
945e9410e4 cli: add test for testinvokefunction
Check that contract can be properly deployed
and invoked.
2020-10-06 19:12:38 +03:00
Evgenii Stratonikov
b2a3a0851e emit: accept multiple opcodes in Opcode() 2020-10-06 18:03:25 +03:00
Evgenii Stratonikov
fa09b9af7b transaction: rename FeeOnly to None
Follow missed change from neo-project/neo#1816 .
`None` may be used for any signer. Currently it is used
for sender to only pay fees, or to sign tx attributes.
2020-10-01 15:28:19 +03:00
Roman Khimov
eff5f10579 cli: use '--address' instead of '--addr' and allow '-a' everywhere 2020-09-29 12:48:22 +03:00
Roman Khimov
fdcc72dad0 cli/wallet: make 'addr' optional for NEP5 balances query
Iterate over all accounts by default.
2020-09-28 18:15:51 +03:00
Roman Khimov
aba9c9c0a8 cli/wallet: print token symbol and name in balance output
Make it a bit more user-friendly.
2020-09-28 16:47:47 +03:00
Roman Khimov
c6a9e652b4 cli/wallet: improve token parameter help 2020-09-28 11:28:00 +03:00
Evgenii Stratonikov
fd98a9194a cli: add tests for wallet dump 2020-09-18 12:07:02 +03:00
Evgenii Stratonikov
40a24bad64 cli: add tests for wallet import-deployed
Fix bugs with import, allow to sign tx with contract.
2020-09-18 12:07:02 +03:00
Evgenii Stratonikov
583ef546f9 cli: add tests for wallet claim
Fix a NEO contract hash used in tx.
2020-09-18 12:07:02 +03:00
Evgenii Stratonikov
dff2ac1387 cli: add test for candidate register/unregister/vote
Also fix a bug with tx signing.
2020-09-18 12:07:02 +03:00
Evgenii Stratonikov
6e5a637da9 cli: add tests for multisig sign
This test is also a good example of how to
create and sign multisig transaction from scratch.
2020-09-18 12:07:02 +03:00
Evgenii Stratonikov
9817da7c4e cli: add tests for nep5 import/remove
Also unify `remove` and `import` arguments.
2020-09-18 12:07:02 +03:00
Evgenii Stratonikov
075f353062 cli: add tests for nep5 multitransfer
Also fix a bug when token's hash was incorrectly processed.
2020-09-18 12:07:02 +03:00
Evgenii Stratonikov
59157724e3 cli: add tests for wallet remove 2020-09-18 12:07:02 +03:00
Evgenii Stratonikov
4c00b26fb8 cli: add tests for wallet import-multisig 2020-09-18 12:07:02 +03:00
Evgenii Stratonikov
0a5fe84589 cli: add tests for wallet export 2020-09-18 12:07:02 +03:00
Evgenii Stratonikov
5d7f177811 cli: add tests for wallet/account creation 2020-09-18 12:07:02 +03:00
Evgenii Stratonikov
d30c7db49a cli: add tests for NEP5 transfer 2020-09-18 12:07:02 +03:00
Evgenii Stratonikov
468f7ee650 cli: add tests for NEP5 balance querying 2020-09-18 12:07:02 +03:00
Evgenii Stratonikov
0dda247719 cli: move input handling to a separate package 2020-09-18 12:05:31 +03:00
Evgenii Stratonikov
758a88a813 rpc: exit from Start after Listener is running
If port is dynamically allocated, `(*Server).Addr` will contain
0 port. This commit executes listener before exiting from `Start()`
and sets Addr to the actual address.
2020-09-18 12:05:31 +03:00
Evgenii Stratonikov
911be78cc7 cli: use Writer from app instead of Stdout
It is useful in tests.
2020-09-18 12:05:31 +03:00
Roman Khimov
9e0c13b69d
Merge pull request #1362 from nspcc-dev/feature/verification
Allow to use account with contracts on client
2020-08-27 17:30:29 +03:00
Evgenii Stratonikov
cdfb2429f2 cli: allow to create accounts for deployed contracts 2020-08-27 11:32:55 +03:00
Anna Shaleva
e4150da9ea cli: add support for nested arrays parameters 2020-08-26 19:01:36 +03:00
Anna Shaleva
cab767dafe cli: add tests to cli packages
Closes #1336
2020-08-26 10:14:55 +03:00
Anna Shaleva
d6e7d9c281 cli: invoke configureAddresses with pointer
Otherwise configuration remains untouched outside of the method scope.
2020-08-25 16:11:54 +03:00
Evgenii Stratonikov
6bdaefcfa4 rpc/client: use CreateTxFromScript where possible
There is substantial overlap between `CreateTxFromScript` and
`SignAndPushInvocationTx`. This commit refactors both of them
to reuse common code.
2020-08-18 11:24:48 +03:00
Roman Khimov
e7d13e6db2 *: fix misspellings found in Go Report Card 2020-08-14 12:16:24 +03:00
Roman Khimov
7bf0ae11db
Merge pull request #1309 from nspcc-dev/fix-yaml-import-path
*: use proper YAML library import path, fix #1306
2020-08-12 17:15:37 +03:00
Roman Khimov
1487365ca8
Merge pull request #1286 from nspcc-dev/feature/register
Support (un)registering candidate in CLI
2020-08-12 17:14:28 +03:00
Evgenii Stratonikov
78eade24a3 cli/wallet: decrypt account immediately 2020-08-12 16:54:59 +03:00
Evgenii Stratonikov
832ec5eaa0 cli: implement candidate (un)register 2020-08-12 16:54:59 +03:00
Evgenii Stratonikov
88e926fbc3 cli: move wallet vote to validator vote 2020-08-12 16:54:58 +03:00
Roman Khimov
292c186665 *: use proper YAML library import path, fix #1306 2020-08-12 16:31:06 +03:00
Anna Shaleva
478efee0bc cli: fix inspect command
There was an empty byte array while trying to restore .nef from bytes
after a34ba92d4.
2020-08-12 12:34:33 +03:00
Roman Khimov
c3f7a419a0
Merge pull request #1296 from nspcc-dev/smartcontract/examples
examples: update examples
2020-08-11 19:09:13 +03:00
Anna Shaleva
b5494320f9 compiler, cli: support events from .yml config file
We currently can't process events in codegen, so we have to provide
them via .yml config file. Do not delete the rest of the code connected
with conversion of MethodDebugInfo.Event into manifest.Event as we have
issue #1038.
2020-08-11 13:42:06 +03:00
Anna Shaleva
52275bcd9c cli: update default smart-contract template 2020-08-11 13:42:06 +03:00
Evgenii Stratonikov
a34ba92d46 compiler: allow to split main package across multiple files 2020-08-11 11:12:55 +03:00
Evgenii Stratonikov
057e1c6e3c compiler: provide filename to Compile() 2020-08-11 11:10:45 +03:00
Roman Khimov
98888def16 cli/server: drop key mangler from dumper
It's no longer needed (yay!)
2020-08-10 16:58:38 +03:00
Roman Khimov
c3c88a57cd
Merge pull request #1281 from nspcc-dev/drop-go-1.12-and-fix-some-things
Drop go 1.12 and fix some things
2020-08-07 13:34:54 +03:00
Roman Khimov
0e2784cd2c always wrap errors when creating new ones with fmt.Errorf()
It doesn't really change anything in most of the cases, but it's a useful
habit anyway.

Fix #350.
2020-08-07 12:21:52 +03:00
Roman Khimov
5ef08f60ae remove github.com/pkg/errors from dependencies
It's not needed any more with Go 1.13 as we have wrapping/unwrapping in base
packages. All errors.Wrap calls are replaced with fmt.Errorf, some strings are
improved along the way.
2020-08-07 12:21:52 +03:00
Evgenii Stratonikov
05c24d9401 cli: support voting
Closes #1206.
2020-08-06 20:39:13 +03:00
Roman Khimov
b0f0dc5352 cli/util: fix lint error introduced by 227c6a2ca 2020-08-05 13:17:23 +03:00
Evgenii Stratonikov
227c6a2caa cli: allow to use vm parse directly 2020-08-05 09:40:50 +03:00
Roman Khimov
ef53a45e7a
Merge pull request #1264 from nspcc-dev/smartcontract/manifest/supported_standards
smartcontract: add list of supported standards to manifest
2020-08-04 22:17:00 +03:00
Roman Khimov
49688de75c
Merge pull request #1260 from nspcc-dev/feature/sendmany
cli: allow to transfer multiple tokens in `multitransfer`
2020-08-04 19:35:03 +03:00
Anna Shaleva
90825efa16 core: move transaction's sender to cosigners
Closes #1184

Ported changes from https://github.com/neo-project/neo/pull/1752
2020-08-04 17:33:50 +03:00
Anna Shaleva
66ceaa6b75 smartcontract: add list of supported standards to manifest
Closes #1204
2020-08-04 17:29:44 +03:00
Anna Shaleva
8697582b23 core: add FeeOnly witness scope 2020-08-04 15:08:59 +03:00
Evgenii Stratonikov
2dd6ef964e cli: allow to transfer multiple tokens in multitransfer
Like this:
./neogo wallet nep5 multitransfer -w wallet1_solo.json
  --from NVNvVRW5Q5naSx2k2iZm7xRgtRNGuZppAK -r http://127.0.0.1:30333
    neo:NYqxsNMHxDg3T19APYP27mBZFfauC4zngR:2
    neo:NVNvVRW5Q5naSx2k2iZm7xRgtRNGuZppAK:3
    gas:NYqxsNMHxDg3T19APYP27mBZFfauC4zngR:2
2020-08-04 10:36:06 +03:00
Evgenii Stratonikov
e013477bc9 rpc,cli: support multitransfer transactions
Allow to transfer single asset to multiple recepients
in a single transaction. It is currently a separate command in CLI
and can be merged in future.
2020-07-24 17:01:30 +03:00
Anna Shaleva
c2534b1a0b rpc: adjust sendrawtransaction RPC-call
It should return tx has instead of boolean.
2020-07-22 08:37:46 +03:00
Roman Khimov
a5d6c76928 cli: pay a system fee for the invocation 2020-07-13 20:10:27 +03:00
Anna Shaleva
c3431f4fff cli: add extra validUntilBlockIncrement to transferNEP5
When we export tx to a file, we might need validUntilBlock to be larger
a bit in order to use it in future.
2020-07-07 13:23:01 +03:00
Anna Shaleva
3c551788c9 cli: fix parseCosigner method 2020-07-06 10:06:18 +03:00
Anna Shaleva
1880e96844 cli: fix contract deploy&invoke
We should add cosigners to deplyment and invocation transactions.
2020-07-06 10:01:14 +03:00
Roman Khimov
4f8e4628dc cli/rpc: hide parameter encoding details for Invoke* calls
The script is passed as a hex string, but no one should care. The hash is a
hex-encoded LE value, but no one should care either. Hex might change to
base64, LE to BE, no one outside these functions should care about that.
2020-07-02 16:41:34 +03:00
Roman Khimov
0819583413 cli/rpc: test-invoke deployment script to get the system fee value
Fix #1134.
2020-07-02 16:41:31 +03:00
Anna Shaleva
3875c0a923 cli: deploy contract using manifest.json instead of yaml config
1. We have all necessary information in manifest.json, so don't need
   config.yaml for deployment anymore. It also allow us to be consistent
   with C# cli (it uses only .manifest.json and .nef files for contract
   deployment)
2. Remove EntryPoint and Methods from ProjectConfig as compiler is able
   to generate this information by itself.
2020-06-30 18:22:47 +03:00
Anna Shaleva
4dfb0eb438 compiler, cli: generate manifest.json and debug.json independently
We should be able to generate manifest.json without debug.json and vice
versa.
2020-06-30 14:33:19 +03:00
Roman Khimov
08c516014f
Merge pull request #1132 from nspcc-dev/neo3/rpc/fixed8_marshalling
*: switch from Fixed8 to int64
2020-06-29 21:44:40 +03:00
Anna Shaleva
73b630db9b *: switch from fixed8 to int64
Follow C# implementation, we have to marshall JSON Fixed8 fields without
taking into account decimals.
2020-06-29 21:39:27 +03:00
Anna Shaleva
2f6065f541 compiler, cli: introduce *.manifest.json
Add ability to generate NEO3-compatable *.manifest.json into compiler.
This file represets contract manifest and includes ABI information, so
we don't need to create separate *.abi.json file. NEO3 debugger also
needs *.manifest.json only. So, switched from *.abi.json to
*.manifest.json file.
2020-06-29 09:15:29 +03:00
Anna Shaleva
c7746da023 cli, compiler: switch from .avm to .nef
We don't generate clear .avm instructions anymore. Instead, use .nef
files with additional metadata.
2020-06-29 09:15:29 +03:00
alexvanin
642a221e39 cli: update wallet path argument name in cli context
In #1104 wallet path argument has changed from `--path` to `--wallet`
but cli application still getting wallet path with `ctx.String("path")`
instead of `ctx.String("wallet")`.
2020-06-25 18:46:24 +03:00
Evgenii Stratonikov
f66199c99f cli: hardcode NEO and GAS token info
Don't make extra network queries for already known contracts.
2020-06-25 17:21:26 +03:00
Evgenii Stratonikov
b599b395e8 cli: output nep5 token hashes in LE
CLI use always operates with little-endian representation.
2020-06-25 17:21:26 +03:00
Evgenii Stratonikov
65cb6dd0ad cli: change name for wallet path flag
`-p` is used for `--privnet`, `-w` is for wallet.
Fix CLI error:
balance flag redefined: p
panic: balance flag redefined: p
2020-06-25 17:21:18 +03:00
Roman Khimov
176c0e98d6 cli/server: dump genesis block state when restoring
Neo 3 node does it too and it's very useful because now the genesis block also
does some state changes that are important.
2020-06-24 16:09:54 +03:00
Roman Khimov
66df805f3b cli/server: update value conversion for Neo 3
Version is no longer being stored for the value, so there is no need for '00'
byte.
2020-06-24 10:21:24 +03:00
Roman Khimov
fb18eda515 cli/server: update toNeoStorageKey key conversion for Neo 3
Follow #1037 changes with contract IDs and update padding, the number of
value bytes is being stored now as 17th byte instead of number of zeroes.
2020-06-24 10:21:24 +03:00
Roman Khimov
b483c38593 block/transaction: add network magic into the hash
We make it explicit in the appropriate Block/Transaction structures, not via a
singleton as C# node does. I think this approach has a bit more potential and
allows better packages reuse for different purposes.
2020-06-18 12:39:50 +03:00
Roman Khimov
d22286cbbc client/cli: add network option to the RPC client
It doesn't affect anything yet, but it's going to be used in the future for
network-specific behavior. It also renames short '--timeout' form to '-s'
avoiding conlict with '-t' used for '--testnet'.
2020-06-18 12:11:13 +03:00
Roman Khimov
16ce63e653 cli: unify RPC endpoint flags under options package
This makes rpc flags consistent across all commands, previously some commands
used 'endpoint, e' and some 'rpc, r', some had ability to change timeout and
some hadn't. Now 'rpc-endpoint, r' is used everywhere along with 'timeout, t'.
2020-06-18 12:10:59 +03:00
Roman Khimov
f2c4b9b1d9 cli: move network options to their own package
They will be reused.
2020-06-18 12:10:14 +03:00
Roman Khimov
26f11a52d9 config: move NetMode into its own micropackage
It's going to be used a bit more and pulling whole config just for one type is
a bit wrong.
2020-06-18 12:09:57 +03:00
Evgenii Stratonikov
651976b2ca config: remove AddressVersion from the configuration
It is never used and is the same constant for both mainnet, testnet and
privnet.
2020-06-17 15:55:22 +03:00
Evgenii Stratonikov
b3b1137030 cli: allow to convert wallet from NEO2 to NEO3 format
This command may be helpful to have during transition.
2020-06-17 15:49:34 +03:00
Roman Khimov
fe31c7ed2d
Merge pull request #1047 from nspcc-dev/neo3/rpc/invoke
rpc: update invoke* RPC-calls
2020-06-11 21:39:20 +03:00
Anna Shaleva
9e7fca013e rpc: update CLI and RPC client invoke* calls
part of #1036
2020-06-11 20:32:05 +03:00
Evgenii Stratonikov
76a2f62fbd cli: use manifest during contract deployment 2020-06-11 10:45:25 +03:00
Anna Shaleva
0af5b9339d rpc, cli: remove invoke RPC-call
part of #1036
2020-06-10 20:30:55 +03:00
Roman Khimov
709146f295 transaction: drop Inputs and Outputs, forget UTXO 2020-06-05 19:20:16 +03:00
Roman Khimov
0a09a20900 transaction: drop Register transaction type
And everything associated like SystemFee configuration.
2020-06-05 19:20:16 +03:00
Roman Khimov
e358c70ecc cli/wallet: drop classic transfer support
We do have 'nep5 transfer' and that's enough for now.
2020-06-05 19:20:16 +03:00
Roman Khimov
c0e044961d cli/wallet: add ability to save NEP5 transfer transaction
It allows to use multisig cli operations for multisig transaction creation and
send.
2020-06-05 19:20:16 +03:00
Roman Khimov
d496cc9687 cli/wallet: switch claim command to claim NEP5 GAS 2020-06-05 19:20:16 +03:00
Roman Khimov
3b2644da4f rpc/client: pass token as simple hash into TransferNEP5
It doesn't need full wallet.Token structure.
2020-06-05 19:20:16 +03:00
Anna Shaleva
7acf5b2841 core: add SystemFee and NetworkFee to transaction
closes #831
2020-05-20 23:26:48 +03:00
Anna Shaleva
2ec1d76320 compiler: add ability to generate .abi.json file
A part of integration with NEO Blockchain Toolkit (see #902). To be
able to deploy smart-contract compiled with neo-go compiler via NEO
Express, we have to generate additional .abi.json file. This file
contains the following information:
 - hash of the compiled contract
 - smart-contract metadata (title, description, version, author,
email, has-storage, has-dynamic-invoke, is-payable)
 - smart-contract entry point
 - functions
 - events

However, this .abi.json file is slightly different from the one,
described in manifest.go, so we have to add auxilaury stractures for
json marshalling. The .abi.json format used by NEO-Express is described
[here](https://github.com/neo-project/neo-devpack-dotnet/blob/master/src/Neo.Compiler.MSIL/FuncExport.cs#L66).
2020-05-04 08:37:39 +03:00
Anna Shaleva
861aca1547 rpc, smartcontract: move contract metadata to smartcontract package 2020-05-04 08:37:39 +03:00
Anna Shaleva
2b5c14160c core: add sender field to transaction
closes #860
2020-04-20 17:21:28 +03:00
Anna Shaleva
5fa11987d2 core: add validUntilBlock field to transaction
1. closes #841

2. Commented out test cases where binary transaction are used.
These test cases marked with `TODO NEO3.0: Update binary` and need to be
updated.

3. Updated other tests.

4. Added cache to calculateValidUntilBlock() RPC-client method.
2020-04-15 13:46:43 +03:00
Roman Khimov
1e3c36433f
Merge pull request #844 from nspcc-dev/neo3/nonce
core: add nonce field to transaction
2020-04-14 16:24:02 +03:00
Anna Shaleva
65503aa9b4 core: add nonce field to transaction
1. Closes #840: added Nonce field to transaction.Transaction and
removed Nonce field from transaction.MinerTx

2. Added following methods to different tx types:
  - NewMinerTx()
  - NewMinerTxWithNonce(...)
  - NewEnrollmentTx(...)
  - NewIssueTx()
  - NewPublishTx(...)
  - NewRegisterTx(...)
  - NewStateTx(...)
in order to avoid code duplication when new transaction is created.

3. Commented out test cases where binary transaction/block are used.
These test cases marked with `TODO NEO3.0: Update binary` and need to be
updated.

4. Updated other tests

5. Added constant Nonce to GoveringTockenTx, UtilityTokenTx and genesis
block to avoid data variability. Also marked with TODO.
2020-04-14 16:19:41 +03:00
Roman Khimov
1ebc6394c6 cli: check for method presence for invokefunction commands
Fixes #828.
2020-04-13 11:19:37 +03:00
Evgenii Stratonikov
450263bcae cli: rename contract compile --emitdebug to --debug
It is more intuitive and easier to type.
2020-04-08 15:54:25 +03:00
Evgenii Stratonikov
c71ad6a5db cli: output contract after compiling only with --verbose flag
Also remove Debug from compiler option as it is used only in CLI.
2020-04-08 13:09:51 +03:00
Evgenii Stratonikov
73c7b408b7 cli: rename --debug flag in contract compile 2020-04-08 13:09:51 +03:00
Evgenii Stratonikov
5bdee683e6 cli,compiler: support emitting debug info in a file 2020-04-06 15:30:07 +03:00
Anna Shaleva
5a984fdf88 config: move config.go out of config/
closes #423
2020-03-31 17:55:59 +03:00
Roman Khimov
79b930f6de
Merge pull request #790 from nspcc-dev/fix/deploy
cli: fix type in flags.Fixed8FromContext
2020-03-24 17:37:08 +03:00
Evgenii Stratonikov
7310666479 cli: fix type in flags.Fixed8FromContext 2020-03-24 17:17:28 +03:00
Anna Shaleva
2001a40312 util: JSONify uint160 using LE instead of BE
closes #769
2020-03-23 17:38:58 +03:00
Roman Khimov
a5e862c351 rpc/client: add TransferNEP5 method to easily transfer tokens
We have TransferAsset for regular tokens, so it'd be nice to have TransferNEP5
for NEP5 ones. Relates to #599.
2020-03-16 17:52:32 +03:00
Evgenii Stratonikov
325dc7d0e4 cli: implement wallet nep5 remove
Remove unused tokens from the wallet.
2020-03-16 15:12:50 +03:00
Evgenii Stratonikov
cc5ec8e6d6 cli: support contract import in wallets
Sometimes we need to use custom verification script, e.g.
for contracts where funds needs to become accessible only
after a certain amount of time.
2020-03-16 15:12:50 +03:00
Evgenii Stratonikov
ffc0729adb cli: implement wallet remove-account
Make it possible to remove unneeded accounts from wallet.
2020-03-16 15:12:50 +03:00
Evgenii Stratonikov
2d82eb89f8 cli: rename wallet commands
Creating accounts is done frequently so it makes
sense to have lesser name for this command.
`create` -> `init`
`create-account` -> `create`
2020-03-16 15:12:50 +03:00
Evgenii Stratonikov
cdf025bf89 transaction: implement AddVerificationHash() method 2020-03-16 14:11:19 +03:00
Evgenii Stratonikov
ca476cbf8a cli: implement Fixed8Flag
Parsing gas from float value is not always a right idea as
a transform from float is not 1-to-1.
This commit implements Fixed8Flag which parses Fixed8 value from string.
2020-03-16 14:11:19 +03:00
Evgenii Stratonikov
c25bdd8253 cli: make dump more structured 2020-03-16 12:49:08 +03:00
Evgenii Stratonikov
ae4dc12273 cli: append blocks to existing dumps 2020-03-16 12:49:08 +03:00
Evgenii Stratonikov
c880435c92 cli: persist restored blocks on exit
Add grace context to execute defer's on exit.
2020-03-16 12:48:51 +03:00
Roman Khimov
25da5a30d8 cli: change deploy and invoke commands to use wallet
Passing WIF directly in the command line is not something we should be doing.

Also split netfee and sysfee in the RPC as they're different (and add a script
attribute for free transactions).
2020-03-12 16:19:12 +03:00
Roman Khimov
bbd802681e cli: make gas parameter to deployment add gas to the base price
That's how it was intended to behave originally. One thing questionable here
is contract price (policy thing, basically) being moved to smartcontract
package, but it's probably fine for NEO 2.0 (as it won't change) and we'll
make something better for NEO 3.0.
2020-03-11 20:34:36 +03:00
Evgenii Stratonikov
c2924795ad cli: fix a bug in wallet claim
getclaimable RPC expects address as a 1-st argument.
2020-03-10 13:02:14 +03:00
Evgenii Stratonikov
97131683d8 cli: display info about imported NEP5 token 2020-03-10 13:02:14 +03:00
Evgenii Stratonikov
053b779be7 cli: implement NEP5 transfer 2020-03-10 13:02:14 +03:00
Evgenii Stratonikov
bcc03e2068 cli: implement NEP5 balance querying 2020-03-10 13:02:14 +03:00
Evgenii Stratonikov
519b27fe0e cli: implement NEP5 token import
To work with NEP5 tokens, one need to save some info
e.g. token Name. This way we will not make additional
RPC just to get Decimals.
2020-03-10 13:02:14 +03:00
Evgenii Stratonikov
8d73276393 cli: do not allow default value for an empty address
Right now a bizarre error message can occur if an address flag was not
set: `wallet contains no account for 'AFmseVrdL9f9oyCzZefL9tG6UbvhPbdYzM'`.
This bug is 10x worse if it occures in `transfer` --from flag.
2020-03-10 09:54:23 +03:00
Evgenii Stratonikov
9be4312d8d cli: implement AddressFlag
This makes code less verbose and performs all parsing
before invoking main function.
2020-03-06 13:50:34 +03:00
Evgenii Stratonikov
a9783d05f5 cli: implement wallet multisig sign command
Implement ability to sign transactions with multisig address.
This should be done in several steps:
1. Create TX with `wallet transfer --out <file>`
2. Sign TX with `wallet multisign sign --in <file> --out <file2>`.
3. Repeat 2 for every party.
Input file contains transaction with possibly incomplete
set of the signatures. Output file will contain the same tx
with updated signature set.
When --rpc flag is provided, result transaction is sent
via `sendrawtransaction`.
2020-03-05 09:45:34 +03:00
Evgenii Stratonikov
0d4ad9f76c cli: add --out flag to the wallet transfer command
When transferring assets from multisig accounts,
it is useful to export tx into a file, so that
other participants can sign it too.
2020-03-05 09:45:12 +03:00
Evgenii Stratonikov
7eaeb18f18 transaction: marshal ContractTX even if Data is nil
It contains no information so it doesn't matter anyway.
2020-03-04 20:01:26 +03:00
Roman Khimov
e41d434a49 *: move all packages from CityOfZion to nspcc-dev 2020-03-03 17:21:42 +03:00
Roman Khimov
4c8d327353 rpc: drop duplicating Invoke* structures
And use smartcontract.Parameter instead of vm.StackItem where
appropriate. Closes #689.
2020-03-03 15:38:03 +03:00
Evgenii Stratonikov
05a3625b7d wallet: implement (*Account).SignTx
It is used in both CLI and RPC.
2020-03-02 18:03:56 +03:00
Evgenii Stratonikov
ed190dcfd3 cli: add command for asset transfer
It uses getunspents RPC for getting UTXO and
forming transaction.
2020-03-02 18:01:49 +03:00
Evgenii Stratonikov
907d599edb cli: add command for GAS claiming
GAS can be claimed via `wallet claim` command.
This will claim first get all claimable outputs via
`getclaimable` RPC and then form a transaction signed
byte the private key from the wallet.
2020-03-02 18:01:49 +03:00
Anna Shaleva
648e0bb242 rpc/smartcontract: merge contract parameter types
Merged two types:
	- smartcontract.ParamType
	- rpc.StackParamType
into single one:
	- smartcontract.ParamType
as they duplicated the functionality.

NOTE: type smartcontract.MapType was added (as in C# implementation).

From now, list of supported smartcontract parameter types:
	UnknownType
	SignatureType
	BoolType
	IntegerType
	Hash160Type
	Hash256Type
	ByteArrayType
	PublicKeyType
	StringType
	ArrayType
	MapType
	InteropInterfaceType
	VoidType
2020-03-02 17:25:21 +03:00