diff --git a/internal/super/flix.go b/internal/super/flix.go index fc398a8de..d76c002e6 100644 --- a/internal/super/flix.go +++ b/internal/super/flix.go @@ -50,7 +50,8 @@ type flixFlags struct { Authorizers []string `default:"" flag:"authorizer" info:"Name of a single or multiple comma-separated accounts used as authorizers from configuration"` Include []string `default:"" flag:"include" info:"Fields to include in the output"` Exclude []string `default:"" flag:"exclude" info:"Fields to exclude from the output (events)"` - GasLimit uint64 `default:"1000" flag:"gas-limit" info:"transaction gas limit"` + ComputeLimit uint64 `default:"1000" flag:"compute-limit" info:"transaction compute limit"` + GasLimit uint64 `default:"" flag:"gas-limit" info:"(deprecated: use compute-limit) transaction gas limit"` PreFill string `default:"" flag:"pre-fill" info:"template path to pre fill the FLIX"` Lang string `default:"js" flag:"lang" info:"language to generate the template for"` ExcludeNetworks []string `default:"" flag:"exclude-networks" info:"Specify which networks to exclude when generating a FLIX template"` @@ -149,18 +150,28 @@ func executeFlixCmd( return scripts.SendScript([]byte(cadenceWithImportsReplaced.Cadence), args[1:], "", flow, scriptsFlags) } + // Use GasLimit if set (for backwards compatibility), otherwise use ComputeLimit + computeLimit := flags.ComputeLimit + gasLimit := uint64(0) + if flags.GasLimit > 0 { + logger.Info("⚠️ Warning: --gas-limit flag is deprecated, please use --compute-limit instead") + computeLimit = flags.GasLimit + gasLimit = flags.GasLimit + } + transactionFlags := transactions.Flags{ - ArgsJSON: flags.ArgsJSON, - Signer: flags.Signer, - Proposer: flags.Proposer, - Payer: flags.Payer, - Authorizers: flags.Authorizers, - Include: flags.Include, - Exclude: flags.Exclude, - GasLimit: flags.GasLimit, + ArgsJSON: flags.ArgsJSON, + Signer: flags.Signer, + Proposer: flags.Proposer, + Payer: flags.Payer, + Authorizers: flags.Authorizers, + Include: flags.Include, + Exclude: flags.Exclude, + ComputeLimit: computeLimit, + GasLimit: gasLimit, } // some reason sendTransaction clips the first argument - return transactions.SendTransaction([]byte(cadenceWithImportsReplaced.Cadence), args, "", flow, state, transactionFlags) + return transactions.SendTransaction([]byte(cadenceWithImportsReplaced.Cadence), args, "", flow, state, transactionFlags, logger) } func packageCmd( diff --git a/internal/transactions/build.go b/internal/transactions/build.go index a96448106..5b6d209f7 100644 --- a/internal/transactions/build.go +++ b/internal/transactions/build.go @@ -42,7 +42,8 @@ type flagsBuild struct { ProposerKeyIndex uint32 `default:"0" flag:"proposer-key-index" info:"proposer key index"` Payer string `default:"emulator-account" flag:"payer" info:"transaction payer"` Authorizer []string `default:"emulator-account" flag:"authorizer" info:"transaction authorizer"` - GasLimit uint64 `default:"1000" flag:"gas-limit" info:"transaction gas limit"` + ComputeLimit uint64 `default:"1000" flag:"compute-limit" info:"transaction compute limit"` + GasLimit uint64 `default:"" flag:"gas-limit" info:"(deprecated: use compute-limit) transaction gas limit"` } var buildFlags = flagsBuild{} @@ -61,7 +62,7 @@ var buildCommand = &command.Command{ func build( args []string, globalFlags command.GlobalFlags, - _ output.Logger, + logger output.Logger, flow flowkit.Services, state *flowkit.State, ) (command.Result, error) { @@ -101,6 +102,13 @@ func build( return nil, fmt.Errorf("error parsing transaction arguments: %w", err) } + // Use GasLimit if set (for backwards compatibility), otherwise use ComputeLimit + computeLimit := buildFlags.ComputeLimit + if buildFlags.GasLimit > 0 { + logger.Info("⚠️ Warning: --gas-limit flag is deprecated, please use --compute-limit instead") + computeLimit = buildFlags.GasLimit + } + tx, err := flow.BuildTransaction( context.Background(), transactions.AddressesRoles{ @@ -114,7 +122,7 @@ func build( Args: transactionArgs, Location: filename, }, - buildFlags.GasLimit, + computeLimit, ) if err != nil { return nil, err diff --git a/internal/transactions/send.go b/internal/transactions/send.go index a7dbe5f33..d558b4caf 100644 --- a/internal/transactions/send.go +++ b/internal/transactions/send.go @@ -35,14 +35,15 @@ import ( ) type Flags struct { - ArgsJSON string `default:"" flag:"args-json" info:"arguments in JSON-Cadence format"` - Signer string `default:"" flag:"signer" info:"Account name from configuration used to sign the transaction as proposer, payer and suthorizer"` - Proposer string `default:"" flag:"proposer" info:"Account name from configuration used as proposer"` - Payer string `default:"" flag:"payer" info:"Account name from configuration used as payer"` - Authorizers []string `default:"" flag:"authorizer" info:"Name of a single or multiple comma-separated accounts used as authorizers from configuration"` - Include []string `default:"" flag:"include" info:"Fields to include in the output"` - Exclude []string `default:"" flag:"exclude" info:"Fields to exclude from the output (events)"` - GasLimit uint64 `default:"1000" flag:"gas-limit" info:"transaction gas limit"` + ArgsJSON string `default:"" flag:"args-json" info:"arguments in JSON-Cadence format"` + Signer string `default:"" flag:"signer" info:"Account name from configuration used to sign the transaction as proposer, payer and suthorizer"` + Proposer string `default:"" flag:"proposer" info:"Account name from configuration used as proposer"` + Payer string `default:"" flag:"payer" info:"Account name from configuration used as payer"` + Authorizers []string `default:"" flag:"authorizer" info:"Name of a single or multiple comma-separated accounts used as authorizers from configuration"` + Include []string `default:"" flag:"include" info:"Fields to include in the output"` + Exclude []string `default:"" flag:"exclude" info:"Fields to exclude from the output (events)"` + ComputeLimit uint64 `default:"1000" flag:"compute-limit" info:"transaction compute limit"` + GasLimit uint64 `default:"" flag:"gas-limit" info:"(deprecated: use compute-limit) transaction gas limit"` } var flags = Flags{} @@ -61,7 +62,7 @@ var sendCommand = &command.Command{ func send( args []string, _ command.GlobalFlags, - _ output.Logger, + logger output.Logger, flow flowkit.Services, state *flowkit.State, ) (result command.Result, err error) { @@ -72,10 +73,10 @@ func send( return nil, fmt.Errorf("error loading transaction file: %w", err) } - return SendTransaction(code, args, filename, flow, state, flags) + return SendTransaction(code, args, filename, flow, state, flags, logger) } -func SendTransaction(code []byte, args []string, location string, flow flowkit.Services, state *flowkit.State, sendFlags Flags) (result command.Result, err error) { +func SendTransaction(code []byte, args []string, location string, flow flowkit.Services, state *flowkit.State, sendFlags Flags, logger output.Logger) (result command.Result, err error) { proposerName := sendFlags.Proposer var proposer *accounts.Account if proposerName != "" { @@ -138,6 +139,13 @@ func SendTransaction(code []byte, args []string, location string, flow flowkit.S return nil, fmt.Errorf("error parsing transaction arguments: %w", err) } + // Use GasLimit if set (for backwards compatibility), otherwise use ComputeLimit + computeLimit := sendFlags.ComputeLimit + if sendFlags.GasLimit > 0 { + logger.Info("⚠️ Warning: --gas-limit flag is deprecated, please use --compute-limit instead") + computeLimit = sendFlags.GasLimit + } + tx, txResult, err := flow.SendTransaction( context.Background(), transactions.AccountRoles{ @@ -146,7 +154,7 @@ func SendTransaction(code []byte, args []string, location string, flow flowkit.S Payer: *payer, }, flowkit.Script{Code: code, Args: transactionArgs, Location: location}, - sendFlags.GasLimit, + computeLimit, ) if err != nil { return nil, err diff --git a/internal/transactions/transactions_test.go b/internal/transactions/transactions_test.go index 79959558f..51e523d25 100644 --- a/internal/transactions/transactions_test.go +++ b/internal/transactions/transactions_test.go @@ -180,8 +180,8 @@ func Test_Send(t *testing.T) { srv, state, _ := util.TestMocks(t) t.Run("Success", func(t *testing.T) { - const gas = uint64(1000) - flags.GasLimit = gas + const compute = uint64(1000) + flags.ComputeLimit = compute inArgs := []string{tests.TransactionArgString.Filename, "test"} srv.SendTransaction.Run(func(args mock.Arguments) { @@ -192,7 +192,7 @@ func Test_Send(t *testing.T) { assert.Equal(t, acc, roles.Authorizers[0].Name) script := args.Get(2).(flowkit.Script) assert.Equal(t, tests.TransactionArgString.Filename, script.Location) - assert.Equal(t, args.Get(3).(uint64), gas) + assert.Equal(t, args.Get(3).(uint64), compute) }).Return(nil, nil, nil) result, err := send(inArgs, command.GlobalFlags{}, util.NoLogger, srv.Mock, state)