2021-09-14 12:02:54 +00:00
|
|
|
package util
|
|
|
|
|
|
|
|
import (
|
|
|
|
"encoding/json"
|
|
|
|
"fmt"
|
|
|
|
|
|
|
|
"github.com/nspcc-dev/neo-go/cli/options"
|
|
|
|
"github.com/nspcc-dev/neo-go/cli/paramcontext"
|
|
|
|
"github.com/nspcc-dev/neo-go/cli/query"
|
|
|
|
"github.com/nspcc-dev/neo-go/pkg/core/transaction"
|
|
|
|
"github.com/urfave/cli"
|
|
|
|
)
|
|
|
|
|
|
|
|
func txDump(ctx *cli.Context) error {
|
2022-08-05 10:32:37 +00:00
|
|
|
args := ctx.Args()
|
|
|
|
if len(args) == 0 {
|
2021-09-14 12:02:54 +00:00
|
|
|
return cli.NewExitError("missing input file", 1)
|
2022-08-05 10:32:37 +00:00
|
|
|
} else if len(args) > 1 {
|
|
|
|
return cli.NewExitError("only one input file is accepted", 1)
|
2021-09-14 12:02:54 +00:00
|
|
|
}
|
|
|
|
|
2022-08-05 10:32:37 +00:00
|
|
|
c, err := paramcontext.Read(args[0])
|
2021-09-14 12:02:54 +00:00
|
|
|
if err != nil {
|
|
|
|
return cli.NewExitError(err, 1)
|
|
|
|
}
|
|
|
|
|
|
|
|
tx, ok := c.Verifiable.(*transaction.Transaction)
|
|
|
|
if !ok {
|
|
|
|
return cli.NewExitError("verifiable item is not a transaction", 1)
|
|
|
|
}
|
|
|
|
|
|
|
|
query.DumpApplicationLog(ctx, nil, tx, nil, true)
|
|
|
|
|
|
|
|
if ctx.String(options.RPCEndpointFlag) != "" {
|
|
|
|
gctx, cancel := options.GetTimeoutContext(ctx)
|
|
|
|
defer cancel()
|
|
|
|
|
|
|
|
var err error
|
|
|
|
cl, err := options.GetRPCClient(gctx, ctx)
|
|
|
|
if err != nil {
|
|
|
|
return cli.NewExitError(err, 1)
|
|
|
|
}
|
|
|
|
res, err := cl.InvokeScript(tx.Script, tx.Signers)
|
|
|
|
if err != nil {
|
|
|
|
return cli.NewExitError(err, 1)
|
|
|
|
}
|
|
|
|
resS, err := json.MarshalIndent(res, "", " ")
|
|
|
|
if err != nil {
|
|
|
|
return cli.NewExitError(err, 1)
|
|
|
|
}
|
|
|
|
fmt.Fprintln(ctx.App.Writer, string(resS))
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|