Send a Transaction
How to send a transaction with the Flow Go SDK
After a transaction has been constructed and signed, it can be sent to the Flow blockchain where it will then be executed.
Connect to an access node
Start by establishing a connection with a Flow access node:
import (
  "github.com/onflow/flow-go-sdk"
  "github.com/onflow/flow-go-sdk/client"
)
func main() {
  var accessAPIHost string
  // Establish a connection with an access node
  flowClient, err := client.New(accessAPIHost)
  if err != nil {
    panic("failed to establish connection with Access API")
  }
}
Send a transaction
Submit a transaction using the SendTransaction method:
import (
  "context"
  "github.com/onflow/flow-go-sdk"
  "github.com/onflow/flow-go-sdk/client"
)
func main() {
  // ...
  var tx *flow.Transaction
  ctx := context.Background()
  // Send transaction to the access node
  err := flowClient.SendTransaction(ctx, *tx)
  if err != nil {
    panic("failed to submit transaction")
  }
}
SendTransaction will return an error if the access node rejects the transaction.
This can happen if the transaction is incomplete or contains invalid fields.
Get a transaction result
After a transaction has been submitted, call the GetTransactionResult method to
get its status and result.
import (
  "context"
  "fmt"
  "github.com/onflow/flow-go-sdk"
  "github.com/onflow/flow-go-sdk/client"
)
func main() {
  // ...
  var tx *flow.Transaction
  ctx := context.Background()
  // Send transaction to the access node
  result, err := flowClient.GetTransactionResult(ctx, tx.ID())
  if err != nil {
    panic("failed to get transaction result")
  }
  if result.Status == TransactionStatusSealed {
    fmt.Println("transaction is sealed")
  } else {
    fmt.Println("transaction is still pending")
  }
}