cli: allow specifying system fee via -s for invocations
Makes it possible to migrate a contract on Neo 2.
This commit is contained in:
parent
259522abde
commit
483fefbb62
1 changed files with 12 additions and 4 deletions
|
@ -54,7 +54,11 @@ var (
|
||||||
}
|
}
|
||||||
gasFlag = flags.Fixed8Flag{
|
gasFlag = flags.Fixed8Flag{
|
||||||
Name: "gas, g",
|
Name: "gas, g",
|
||||||
Usage: "gas to add to the transaction",
|
Usage: "gas to add to the transaction (network fee)",
|
||||||
|
}
|
||||||
|
sysGasFlag = flags.Fixed8Flag{
|
||||||
|
Name: "sysgas, s",
|
||||||
|
Usage: "system fee to add to invocation transaction",
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -138,7 +142,7 @@ func NewCommands() []cli.Command {
|
||||||
{
|
{
|
||||||
Name: "invoke",
|
Name: "invoke",
|
||||||
Usage: "invoke deployed contract on the blockchain",
|
Usage: "invoke deployed contract on the blockchain",
|
||||||
UsageText: "neo-go contract invoke -e endpoint -w wallet [-a address] [-g gas] scripthash [arguments...]",
|
UsageText: "neo-go contract invoke -e endpoint -w wallet [-a address] [-g gas] [-s sysgas] scripthash [arguments...]",
|
||||||
Description: `Executes given (as a script hash) deployed script with the given arguments.
|
Description: `Executes given (as a script hash) deployed script with the given arguments.
|
||||||
See testinvoke documentation for the details about parameters. It differs
|
See testinvoke documentation for the details about parameters. It differs
|
||||||
from testinvoke in that this command sends an invocation transaction to
|
from testinvoke in that this command sends an invocation transaction to
|
||||||
|
@ -150,12 +154,13 @@ func NewCommands() []cli.Command {
|
||||||
walletFlag,
|
walletFlag,
|
||||||
addressFlag,
|
addressFlag,
|
||||||
gasFlag,
|
gasFlag,
|
||||||
|
sysGasFlag,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "invokefunction",
|
Name: "invokefunction",
|
||||||
Usage: "invoke deployed contract on the blockchain",
|
Usage: "invoke deployed contract on the blockchain",
|
||||||
UsageText: "neo-go contract invokefunction -e endpoint -w wallet [-a address] [-g gas] scripthash [method] [arguments...]",
|
UsageText: "neo-go contract invokefunction -e endpoint -w wallet [-a address] [-g gas] [-s sysgas] scripthash [method] [arguments...]",
|
||||||
Description: `Executes given (as a script hash) deployed script with the given method and
|
Description: `Executes given (as a script hash) deployed script with the given method and
|
||||||
and arguments. See testinvokefunction documentation for the details about
|
and arguments. See testinvokefunction documentation for the details about
|
||||||
parameters. It differs from testinvokefunction in that this command sends an
|
parameters. It differs from testinvokefunction in that this command sends an
|
||||||
|
@ -167,6 +172,7 @@ func NewCommands() []cli.Command {
|
||||||
walletFlag,
|
walletFlag,
|
||||||
addressFlag,
|
addressFlag,
|
||||||
gasFlag,
|
gasFlag,
|
||||||
|
sysGasFlag,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -424,6 +430,7 @@ func invokeInternal(ctx *cli.Context, withMethod bool, signAndPush bool) error {
|
||||||
var (
|
var (
|
||||||
err error
|
err error
|
||||||
gas util.Fixed8
|
gas util.Fixed8
|
||||||
|
sysGas util.Fixed8
|
||||||
operation string
|
operation string
|
||||||
params = make([]smartcontract.Parameter, 0)
|
params = make([]smartcontract.Parameter, 0)
|
||||||
paramsStart = 1
|
paramsStart = 1
|
||||||
|
@ -479,6 +486,7 @@ func invokeInternal(ctx *cli.Context, withMethod bool, signAndPush bool) error {
|
||||||
|
|
||||||
if signAndPush {
|
if signAndPush {
|
||||||
gas = flags.Fixed8FromContext(ctx, "gas")
|
gas = flags.Fixed8FromContext(ctx, "gas")
|
||||||
|
sysGas = flags.Fixed8FromContext(ctx, "sysgas")
|
||||||
acc, err = getAccFromContext(ctx)
|
acc, err = getAccFromContext(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -505,7 +513,7 @@ func invokeInternal(ctx *cli.Context, withMethod bool, signAndPush bool) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return cli.NewExitError(fmt.Errorf("bad script returned from the RPC node: %v", err), 1)
|
return cli.NewExitError(fmt.Errorf("bad script returned from the RPC node: %v", err), 1)
|
||||||
}
|
}
|
||||||
txHash, err := c.SignAndPushInvocationTx(script, acc, 0, gas)
|
txHash, err := c.SignAndPushInvocationTx(script, acc, sysGas, gas)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return cli.NewExitError(fmt.Errorf("failed to push invocation tx: %v", err), 1)
|
return cli.NewExitError(fmt.Errorf("failed to push invocation tx: %v", err), 1)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue