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
This commit is contained in:
parent
1261dd5306
commit
edfca68a17
8 changed files with 207 additions and 71 deletions
7
pkg/rpc/server/testdata/verification_with_args_contract.go
vendored
Normal file
7
pkg/rpc/server/testdata/verification_with_args_contract.go
vendored
Normal file
|
@ -0,0 +1,7 @@
|
|||
package testdata
|
||||
|
||||
// Verify is a verification contract method which takes several arguments.
|
||||
func Verify(argString string, argInt int, argBool bool) bool {
|
||||
isOK := argString == "good_string" || argInt == 5 || argBool == true
|
||||
return isOK
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue