Skip to content

Instantly share code, notes, and snippets.

@javiersoto15
Created December 16, 2022 17:58
Show Gist options
  • Save javiersoto15/f2305f229054795c9f390b340c1e4fbe to your computer and use it in GitHub Desktop.
Save javiersoto15/f2305f229054795c9f390b340c1e4fbe to your computer and use it in GitHub Desktop.
Full Flow Program
package main
import (
"context"
"fmt"
"github.com/onflow/cadence"
"github.com/onflow/flow-go-sdk"
"github.com/onflow/flow-go-sdk/access/http"
"github.com/onflow/flow-go-sdk/crypto"
)
var privKey = ""
var privKeyReceiver = ""
var servAccount = ""
func f() {
ctx := context.Background()
fmt.Println("connecting")
flowClient, err := http.NewClient(http.TestnetHost)
if err != nil {
fmt.Println(err)
return
}
privateKey, err := crypto.DecodePrivateKeyHex(crypto.ECDSA_P256, privKey)
if err != nil {
fmt.Println(err)
return
}
key1 := flow.NewAccountKey().
SetPublicKey(privateKey.PublicKey()).
SetSigAlgo(privateKey.Algorithm()).
SetHashAlgo(crypto.SHA3_256).
SetWeight(flow.AccountKeyWeightThreshold)
// get account from the latest block
address := flow.HexToAddress("")
acct, err := flowClient.GetAccount(ctx, address)
if err != nil {
fmt.Println(err)
return
}
key1Signer, err := crypto.NewInMemorySigner(privateKey, key1.HashAlgo)
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Building tx")
//examples.FundAccountInEmulator(flowClient, acct.Address, 1.0)
block, _ := flowClient.GetLatestBlock(context.Background(), true)
tx := flow.NewTransaction().SetScript([]byte(transferTx)).
SetGasLimit(100).
SetProposalKey(acct.Address, acct.Keys[0].Index, acct.Keys[0].SequenceNumber).
SetReferenceBlockID(block.ID).
SetPayer(acct.Address).
AddAuthorizer(acct.Address)
fmt.Println("Adding args")
// Argumentos
address = flow.HexToAddress("0xec8b1d4d78fb045a")
err = tx.AddArgument(cadence.BytesToAddress(address.Bytes()))
if err != nil {
fmt.Println(err)
return
}
err = tx.AddArgument(cadence.NewUInt64(5))
if err != nil {
fmt.Println(err)
return
}
// err = tx.AddArgument(cadence.String("Title Test"))
// if err != nil {
// fmt.Println(err)
// return
// }
// err = tx.AddArgument(cadence.String("Desc"))
// if err != nil {
// fmt.Println(err)
// return
// }
// err = tx.AddArgument(cadence.String("thumbnail"))
// if err != nil {
// fmt.Println(err)
// return
// }
fmt.Println("Signing")
err = tx.SignEnvelope(acct.Address, acct.Keys[0].Index, key1Signer)
if err != nil {
fmt.Println(err)
return
}
err = flowClient.SendTransaction(ctx, *tx)
if err != nil {
fmt.Println(err)
return
}
fmt.Println("ID: " + tx.ID().String())
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment