Documentation ¶
Overview ¶
Package flow provides libraries and tools for building Go applications on Flow.
Index ¶
- Constants
- Variables
- func BytesToHash(hash []byte) crypto.Hash
- func CalculateEventsHash(es []Event) (crypto.Hash, error)
- func EncodeAccountProofMessage(address Address, appID, nonceHex string) ([]byte, error)
- func NewEventTypeFactory() eventTypeFactory
- func SignUserMessage(signer crypto.Signer, message []byte) ([]byte, error)
- type Account
- type AccountCreatedEvent
- type AccountKey
- func (a AccountKey) Encode() []byte
- func (a *AccountKey) FromPrivateKey(privKey crypto.PrivateKey) *AccountKey
- func (a *AccountKey) SetHashAlgo(hashAlgo crypto.HashAlgorithm) *AccountKey
- func (a *AccountKey) SetPublicKey(pubKey crypto.PublicKey) *AccountKey
- func (a *AccountKey) SetSigAlgo(sigAlgo crypto.SignatureAlgorithm) *AccountKey
- func (a *AccountKey) SetWeight(weight int) *AccountKey
- func (a AccountKey) Validate() error
- type AccountStatus
- type AccountStatusFilter
- type AccountStatusResult
- type Address
- type AddressGenerator
- type AggregatedSignature
- type Block
- type BlockDigest
- type BlockEvents
- type BlockHeader
- type BlockPayload
- type BlockSeal
- type BlockStatus
- type ChainID
- type Chunk
- type ChunkExecutionData
- type Collection
- type CollectionGuarantee
- type CompatibleRange
- type Event
- type EventEncodingVersion
- type EventFilter
- type ExecutionData
- type ExecutionDataStreamResponse
- type ExecutionReceiptMeta
- type ExecutionResult
- type FullCollection
- type Identifier
- type KeyPart
- type LightTransactionResult
- type NetworkParameters
- type NodeVersionInfo
- type Payload
- type ProposalKey
- type QuorumCertificate
- type ServiceEvent
- type StateCommitment
- type TimeoutCertificate
- type Transaction
- func (t *Transaction) AddArgument(arg cadence.Value) error
- func (t *Transaction) AddAuthorizer(address Address) *Transaction
- func (t *Transaction) AddEnvelopeSignature(address Address, keyIndex uint32, sig []byte) *Transaction
- func (t *Transaction) AddPayloadSignature(address Address, keyIndex uint32, sig []byte) *Transaction
- func (t *Transaction) AddRawArgument(arg []byte) *Transaction
- func (t *Transaction) Argument(i int, options ...jsoncdc.Option) (cadence.Value, error)
- func (t *Transaction) Encode() []byte
- func (t *Transaction) EnvelopeMessage() []byte
- func (t *Transaction) ID() Identifier
- func (t *Transaction) PayloadMessage() []byte
- func (t *Transaction) SetComputeLimit(limit uint64) *Transaction
- func (t *Transaction) SetGasLimit(limit uint64) *Transactiondeprecated
- func (t *Transaction) SetPayer(address Address) *Transaction
- func (t *Transaction) SetProposalKey(address Address, keyIndex uint32, sequenceNum uint64) *Transaction
- func (t *Transaction) SetReferenceBlockID(blockID Identifier) *Transaction
- func (t *Transaction) SetScript(script []byte) *Transaction
- func (t *Transaction) SignEnvelope(address Address, keyIndex uint32, signer crypto.Signer) error
- func (t *Transaction) SignPayload(address Address, keyIndex uint32, signer crypto.Signer) error
- type TransactionResult
- type TransactionSignature
- type TransactionStatus
- type TrieUpdate
Examples ¶
Constants ¶
const ( EventEncodingVersionCCF = entities.EventEncodingVersion_CCF_V0 EventEncodingVersionJSONCDC = entities.EventEncodingVersion_JSON_CDC_V0 )
const ( EventAccountCreated string = "flow.AccountCreated" EventAccountKeyAdded string = "flow.AccountKeyAdded" EventAccountKeyRemoved string = "flow.AccountKeyRemoved" EventAccountContractAdded string = "flow.AccountContractAdded" EventAccountContractUpdated string = "flow.AccountContractUpdated" EventAccountContractRemoved string = "flow.AccountContractRemoved" )
List of built-in account event types.
const AccountKeyWeightThreshold int = 1000
AccountKeyWeightThreshold is the total key weight required to authorize access to an account.
const AccountProofNonceMinLenBytes = 32
AccountProofNonceMinLenBytes is the minimum length of account proof nonces in bytes.
const AddressLength = (linearCodeN + 7) >> 3
AddressLength is the size of an account address in bytes.
const DefaultTransactionGasLimit = 9999
DefaultTransactionGasLimit should be high enough for small transactions
Variables ¶
var ( // ErrInvalidNonce is returned when the account proof nonce passed to a function is invalid. ErrInvalidNonce = errors.New("invalid nonce") // ErrInvalidAppID is returned when the account proof app ID passed to a function is invalid. ErrInvalidAppID = errors.New("invalid app ID") )
var EmptyAddress = Address{}
EmptyAddress is the empty address (0x0000000000000000).
var EmptyID = Identifier{}
EmptyID is the empty identifier.
var TransactionDomainTag = mustPadDomainTag("FLOW-V0.0-transaction")
TransactionDomainTag is the prefix of all signed transaction payloads.
A domain tag is encoded as UTF-8 bytes, right padded to a total length of 32 bytes.
var UserDomainTag = mustPadDomainTag("FLOW-V0.0-user")
UserDomainTag is the prefix of all signed user space payloads.
A domain tag is encoded as UTF-8 bytes, right padded to a total length of 32 bytes.
Functions ¶
func BytesToHash ¶ added in v0.23.0
BytesToHash constructs a crypto hash from byte slice.
func CalculateEventsHash ¶ added in v0.22.0
CalculateEventsHash calculates hash of the events, in a way compatible with the events hash propagated in Chunk. Providing list of events as emitted by transactions in given chunk, hashes should match
func EncodeAccountProofMessage ¶ added in v0.25.0
EncodeAccountProofMessage creates a new account proof message for singing. The encoded message returned does not include the user domain tag.
func NewEventTypeFactory ¶ added in v0.41.15
func NewEventTypeFactory() eventTypeFactory
NewEventTypeFactory helper function for constructing event names
Types ¶
type Account ¶
type Account struct { Address Address Balance uint64 Code []byte Keys []*AccountKey Contracts map[string][]byte }
An Account is an account on the Flow network.
type AccountCreatedEvent ¶
type AccountCreatedEvent Event
An AccountCreatedEvent is emitted when a transaction creates a new Flow account.
This event contains the following fields: - Address: Address
func (AccountCreatedEvent) Address ¶
func (evt AccountCreatedEvent) Address() Address
Address returns the address of the newly-created account.
type AccountKey ¶
type AccountKey struct { Index uint32 PublicKey crypto.PublicKey SigAlgo crypto.SignatureAlgorithm HashAlgo crypto.HashAlgorithm Weight int SequenceNumber uint64 Revoked bool }
An AccountKey is a public key associated with an account.
func DecodeAccountKey ¶
func DecodeAccountKey(b []byte) (*AccountKey, error)
DecodeAccountKey decodes the RLP byte representation of an account key.
func (AccountKey) Encode ¶
func (a AccountKey) Encode() []byte
Encode returns the canonical RLP byte representation of this account key.
func (*AccountKey) FromPrivateKey ¶
func (a *AccountKey) FromPrivateKey(privKey crypto.PrivateKey) *AccountKey
FromPrivateKey sets the public key and signature algorithm based on the provided private key.
func (*AccountKey) SetHashAlgo ¶
func (a *AccountKey) SetHashAlgo(hashAlgo crypto.HashAlgorithm) *AccountKey
SetHashAlgo sets the hash algorithm for this account key.
func (*AccountKey) SetPublicKey ¶
func (a *AccountKey) SetPublicKey(pubKey crypto.PublicKey) *AccountKey
SetPublicKey sets the public key for this account key.
func (*AccountKey) SetSigAlgo ¶
func (a *AccountKey) SetSigAlgo(sigAlgo crypto.SignatureAlgorithm) *AccountKey
SetSigAlgo sets the signature algorithm for this account key.
func (*AccountKey) SetWeight ¶
func (a *AccountKey) SetWeight(weight int) *AccountKey
SetWeight sets the weight for this account key.
func (AccountKey) Validate ¶
func (a AccountKey) Validate() error
Validate returns an error if this account key is invalid.
An account key can be invalid for the following reasons: - It specifies an incompatible signature/hash algorithm pair with regards to Flow accounts - It specifies an invalid key weight
type AccountStatus ¶ added in v1.1.0
type AccountStatus struct { BlockID Identifier BlockHeight uint64 MessageIndex uint64 Results []*AccountStatusResult }
func (AccountStatus) GetMessageIndex ¶ added in v1.3.0
func (a AccountStatus) GetMessageIndex() uint64
type AccountStatusFilter ¶ added in v1.1.0
type AccountStatusFilter struct {
EventFilter
}
type AccountStatusResult ¶ added in v1.1.0
type Address ¶
type Address [AddressLength]byte
Address represents the 8 byte address of an account.
func BytesToAddress ¶
BytesToAddress returns Address with value b.
If b is larger than 8, b will be cropped from the left. If b is smaller than 8, b will be appended by zeroes at the front.
func HexToAddress ¶
HexToAddress converts a hex string to an Address.
func ServiceAddress ¶ added in v0.4.0
ServiceAddress is the first generated account address.
func (Address) HexWithPrefix ¶ added in v0.41.19
Hex returns the address as hex string with "0x" prefix.
func (*Address) IsValid ¶ added in v0.4.0
IsValid returns true if a given address is a valid account address, and false otherwise.
This is an off-chain check that only tells whether the address format is valid. If the function returns true, this does not mean a Flow account with this address has been generated. Such a test would require an on-chain check.
func (Address) MarshalJSON ¶
func (*Address) UnmarshalJSON ¶
type AddressGenerator ¶ added in v0.4.0
type AddressGenerator struct {
// contains filtered or unexported fields
}
An AddressGenerator uses a deterministic algorithm to generate Flow addresses.
func NewAddressGenerator ¶ added in v0.4.0
func NewAddressGenerator(chainID ChainID) *AddressGenerator
NewAddressGenerator creates a new address generator for the given chain ID, starting from the zero address state.
Addresses are generated for a specific network (Flow mainnet, testnet, etc).
Each addressing state is mapped to exactly one address, meaning there are as many addresses as states. State values are incremented from 0 to 2^k-1.
func (*AddressGenerator) Address ¶ added in v0.4.0
func (gen *AddressGenerator) Address() Address
Address generates an account address at the current addressing state.
func (*AddressGenerator) Next ¶ added in v0.4.0
func (gen *AddressGenerator) Next() *AddressGenerator
Next increments the addressing state.
State values are incremented from 0 to 2^k-1.
func (*AddressGenerator) NextAddress ¶ added in v0.4.0
func (gen *AddressGenerator) NextAddress() Address
NextAddress increments the addressing state and generates an account address.
func (*AddressGenerator) SetIndex ¶ added in v0.4.0
func (gen *AddressGenerator) SetIndex(i uint) *AddressGenerator
SetIndex fast-forwards or rewinds the addressing state to the given index.
type AggregatedSignature ¶ added in v1.2.0
type AggregatedSignature struct { VerifierSignatures [][]byte SignerIds []Identifier }
type Block ¶
type Block struct { BlockHeader BlockPayload }
Block is a set of state mutations applied to the Flow blockchain.
type BlockDigest ¶ added in v1.1.0
type BlockDigest struct { BlockID Identifier Height uint64 Timestamp time.Time }
BlockDigest holds lightweight block information which includes only block id, block height and block timestamp
type BlockEvents ¶ added in v0.25.0
type BlockEvents struct { BlockID Identifier Height uint64 BlockTimestamp time.Time Events []Event }
BlockEvents are the events that occurred in a specific block.
type BlockHeader ¶
type BlockHeader struct { ID Identifier ParentID Identifier Height uint64 Timestamp time.Time Status BlockStatus PayloadHash []byte View uint64 ParentVoterSigData []byte ProposerID Identifier ProposerSigData []byte ChainID Identifier ParentVoterIndices []byte LastViewTimeoutCertificate TimeoutCertificate ParentView uint64 }
BlockHeader is a summary of a full block.
type BlockPayload ¶
type BlockPayload struct { CollectionGuarantees []*CollectionGuarantee Seals []*BlockSeal Signatures [][]byte ExecutionReceiptMetaList []*ExecutionReceiptMeta ExecutionResultsList []*ExecutionResult ProtocolStateID Identifier }
BlockPayload is the full contents of a block.
A payload contains the collection guarantees and seals for a block.
type BlockSeal ¶
type BlockSeal struct { // The ID of the block this Seal refers to (which will be of lower height than this block) BlockID Identifier // The ID of the execution receipt generated by the Verifier nodes; the work of verifying a // block produces the same receipt among all verifying nodes ExecutionReceiptID Identifier ExecutionReceiptSignatures [][]byte ResultApprovalSignatures [][]byte FinalState []byte ResultId Identifier AggregatedApprovalSigs []*AggregatedSignature }
BlockSeal is the attestation by verification nodes that the transactions in a previously executed block have been verified.
type BlockStatus ¶ added in v0.38.0
type BlockStatus int
BlockStatus represents the status of a block.
const ( // BlockStatusUnknown indicates that the block status is not known. BlockStatusUnknown BlockStatus = iota // BlockStatusFinalized is the status of a finalized block. BlockStatusFinalized // BlockStatusSealed is the status of a sealed block. BlockStatusSealed )
func BlockStatusFromString ¶ added in v0.38.0
func BlockStatusFromString(s string) BlockStatus
type ChainID ¶ added in v0.4.0
type ChainID string
A ChainID is a unique identifier for a specific Flow network instance.
Chain IDs are used used to prevent replay attacks and to support network-specific address generation.
const ( // Mainnet is the chain ID for the mainnet chain. Mainnet ChainID = "flow-mainnet" // Testnet is the chain ID for the testnet chain. Testnet ChainID = "flow-testnet" // Benchnet is the chain ID for the transient benchmarking chain. Benchnet ChainID = "flow-benchnet" // Localnet is the chain ID for the local development chain. Localnet ChainID = "flow-localnet" // Emulator is the chain ID for the emulated chain. Emulator ChainID = "flow-emulator" // BftTestnet is the chain ID for testing attack vector scenarios. BftTestnet ChainID = "flow-bft-test-net" // MonotonicEmulator is the chain ID for the emulated node chain with monotonic address generation. MonotonicEmulator ChainID = "flow-emulator-monotonic" )
type Chunk ¶ added in v0.22.0
type Chunk struct { CollectionIndex uint StartState StateCommitment // start state when starting executing this chunk EventCollection crypto.Hash // Hash of events generated by executing results BlockID Identifier // Block id of the execution result this chunk belongs to TotalComputationUsed uint64 // total amount of computation used by running all txs in this chunk NumberOfTransactions uint16 // number of transactions inside the collection Index uint64 // chunk index inside the ER (starts from zero) EndState StateCommitment // EndState inferred from next chunk or from the ER }
type ChunkExecutionData ¶ added in v0.41.19
type ChunkExecutionData struct { Transactions []*Transaction Events []*Event TrieUpdate *TrieUpdate TransactionResults []*LightTransactionResult }
type Collection ¶
type Collection struct {
TransactionIDs []Identifier
}
A Collection is a list of transactions bundled together for inclusion in a block.
func (Collection) Encode ¶
func (c Collection) Encode() []byte
Encode returns the canonical RLP byte representation of this collection.
func (Collection) ID ¶
func (c Collection) ID() Identifier
ID returns the canonical SHA3-256 hash of this collection.
type CollectionGuarantee ¶
type CollectionGuarantee struct { CollectionID Identifier ReferenceBlockID Identifier Signature []byte SignerIndices []byte }
A CollectionGuarantee is an attestation signed by the nodes that have guaranteed a collection.
type CompatibleRange ¶ added in v1.1.0
type Event ¶
type Event struct { // Type is the qualified event type. Type string // TransactionID is the ID of the transaction this event was emitted from. TransactionID Identifier // TransactionIndex is the index of the transaction this event was emitted from, within its containing block. TransactionIndex int // EventIndex is the index of the event within the transaction it was emitted from. EventIndex int // Value contains the event data. Value cadence.Event // Bytes representing event data. Payload []byte }
func (*Event) Fingerprint ¶ added in v0.22.0
Fingerprint calculates a fingerprint of an event.
type EventEncodingVersion ¶ added in v1.0.0
type EventEncodingVersion = entities.EventEncodingVersion
type EventFilter ¶ added in v0.41.19
EventFilter is used to filter events based on given parameters.
type ExecutionData ¶ added in v0.41.19
type ExecutionData struct { BlockID Identifier ChunkExecutionData []*ChunkExecutionData }
type ExecutionDataStreamResponse ¶ added in v0.41.19
type ExecutionDataStreamResponse struct { Height uint64 ExecutionData *ExecutionData BlockTimestamp time.Time }
type ExecutionReceiptMeta ¶ added in v1.3.0
type ExecutionReceiptMeta struct { ExecutorID Identifier ResultID Identifier Spocks [][]byte ExecutorSignature []byte }
type ExecutionResult ¶ added in v0.22.0
type ExecutionResult struct { PreviousResultID Identifier // commit of the previous ER BlockID Identifier // commit of the current block Chunks []*Chunk ServiceEvents []*ServiceEvent }
type FullCollection ¶ added in v1.0.0
type FullCollection struct {
Transactions []*Transaction
}
func (FullCollection) ID ¶ added in v1.0.0
func (c FullCollection) ID() Identifier
func (FullCollection) Light ¶ added in v1.0.0
func (c FullCollection) Light() Collection
Light returns the light, reference-only version of the collection.
type Identifier ¶
type Identifier [32]byte
An Identifier is a 32-byte unique identifier for an entity.
func BytesToID ¶
func BytesToID(b []byte) Identifier
BytesToID constructs an identifier from a byte slice.
func HashToID ¶
func HashToID(hash []byte) Identifier
HashToID constructs an identifier from a 32-byte hash.
func HexToID ¶ added in v0.4.0
func HexToID(h string) Identifier
HexToID constructs an identifier from a hexadecimal string.
func (Identifier) Bytes ¶
func (i Identifier) Bytes() []byte
Bytes returns the bytes representation of this identifier.
func (Identifier) Hex ¶
func (i Identifier) Hex() string
Hex returns the hexadecimal string representation of this identifier.
func (Identifier) String ¶
func (i Identifier) String() string
String returns the string representation of this identifier.
type LightTransactionResult ¶ added in v0.41.19
type LightTransactionResult struct { // TransactionID is the ID of the transaction this result was emitted from. TransactionID Identifier // Failed is true if the transaction's execution failed resulting in an error, false otherwise. Failed bool // ComputationUsed is amount of computation used while executing the transaction. ComputationUsed uint64 }
type NetworkParameters ¶ added in v0.41.15
type NetworkParameters struct {
ChainID ChainID
}
type NodeVersionInfo ¶ added in v1.0.0
type NodeVersionInfo struct { Semver string Commit string SporkId Identifier ProtocolVersion uint64 SporkRootBlockHeight uint64 NodeRootBlockHeight uint64 CompatibleRange *CompatibleRange }
type ProposalKey ¶
A ProposalKey is the key that specifies the proposal key and sequence number for a transaction.
type QuorumCertificate ¶ added in v1.2.0
type QuorumCertificate struct { View uint64 BlockID Identifier SignerIndices []byte SigData []byte }
type ServiceEvent ¶ added in v0.22.0
type StateCommitment ¶ added in v0.22.0
type StateCommitment Identifier
func BytesToStateCommitment ¶ added in v0.22.0
func BytesToStateCommitment(b []byte) StateCommitment
BytesToStateCommitment constructs a state commitment from a byte slice.
func HashToStateCommitment ¶ added in v0.22.0
func HashToStateCommitment(hash []byte) StateCommitment
HashToStateCommitment constructs a state commitment from a 32-byte hash.
func HexToStateCommitment ¶ added in v0.22.0
func HexToStateCommitment(h string) StateCommitment
HexToStateCommitment constructs a state commitment from a hexadecimal string.
type TimeoutCertificate ¶ added in v1.2.0
type TimeoutCertificate struct { View uint64 HighQCViews []uint64 HighestQC QuorumCertificate SignerIndices []byte SigData []byte }
type Transaction ¶
type Transaction struct { // Script is the UTF-8 encoded Cadence source code that defines the execution logic for this transaction. Script []byte // Arguments is a list of Cadence values passed into this transaction. // // Each argument is encoded as JSON-CDC bytes. Arguments [][]byte // ReferenceBlockID is a reference to the block used to calculate the expiry of this transaction. // // A transaction is considered expired if it is submitted to Flow after refBlock + N, where N // is a constant defined by the network. // // For example, if a transaction references a block with height of X and the network limit is 10, // a block with height X+10 is the last block that is allowed to include this transaction. ReferenceBlockID Identifier // GasLimit is the maximum number of computational units that can be used to execute this transaction. GasLimit uint64 // ProposalKey is the account key used to propose this transaction. // // A proposal key references a specific key on an account, along with an up-to-date // sequence number for that key. This sequence number is used to prevent replay attacks. // // You can find more information about sequence numbers here: https://docs.onflow.org/concepts/transaction-signing/#sequence-numbers ProposalKey ProposalKey // Payer is the account that pays the fee for this transaction. // // You can find more information about the payer role here: https://docs.onflow.org/concepts/transaction-signing/#signer-roles Payer Address // Authorizers is a list of the accounts that are authorizing this transaction to // mutate to their on-chain account state. // // You can find more information about the authorizer role here: https://docs.onflow.org/concepts/transaction-signing/#signer-roles Authorizers []Address // PayloadSignatures is a list of signatures generated by the proposer and authorizer roles. // // A payload signature is generated over the inner portion of the transaction (TransactionDomainTag + payload). // // You can find more information about transaction signatures here: https://docs.onflow.org/concepts/transaction-signing/#anatomy-of-a-transaction PayloadSignatures []TransactionSignature // EnvelopeSignatures is a list of signatures generated by the payer role. // // An envelope signature is generated over the outer portion of the transaction (TransactionDomainTag + payload + payloadSignatures). // // You can find more information about transaction signatures here: https://docs.onflow.org/concepts/transaction-signing/#anatomy-of-a-transaction EnvelopeSignatures []TransactionSignature }
A Transaction is a full transaction object containing a payload and signatures.
Example ¶
addresses := test.AddressGenerator() // Mock user accounts adrianLaptopKey := &flow.AccountKey{ Index: 3, SequenceNumber: 42, } adrianPhoneKey := &flow.AccountKey{Index: 2} addressA := addresses.New() adrian := flow.Account{ Address: addressA, Keys: []*flow.AccountKey{ adrianLaptopKey, adrianPhoneKey, }, } blaineHardwareKey := &flow.AccountKey{Index: 7} addressB := addresses.New() blaine := flow.Account{ Address: addressB, Keys: []*flow.AccountKey{ blaineHardwareKey, }, } // Transaction preparation tx := flow.NewTransaction(). SetScript([]byte(`transaction { execute { log("Hello, World!") } }`)). SetReferenceBlockID(flow.Identifier{0x01, 0x02}). SetComputeLimit(42). SetProposalKey(adrian.Address, adrianLaptopKey.Index, adrianLaptopKey.SequenceNumber). SetPayer(blaine.Address). AddAuthorizer(adrian.Address) fmt.Printf("Transaction ID (before signing): %s\n\n", tx.ID()) // Signing err := tx.SignPayload(adrian.Address, adrianLaptopKey.Index, test.MockSigner([]byte{1})) if err != nil { panic(err) } err = tx.SignPayload(adrian.Address, adrianPhoneKey.Index, test.MockSigner([]byte{2})) if err != nil { panic(err) } err = tx.SignEnvelope(blaine.Address, blaineHardwareKey.Index, test.MockSigner([]byte{3})) if err != nil { panic(err) } fmt.Println("Payload signatures:") for _, sig := range tx.PayloadSignatures { fmt.Printf( "Address: %s, Key Index: %d, Signature: %x\n", sig.Address, sig.KeyIndex, sig.Signature, ) } fmt.Println() fmt.Println("Envelope signatures:") for _, sig := range tx.EnvelopeSignatures { fmt.Printf( "Address: %s, Key Index: %d, Signature: %x\n", sig.Address, sig.KeyIndex, sig.Signature, ) } fmt.Println() fmt.Printf("Transaction ID (after signing): %s\n", tx.ID())
Output: Transaction ID (before signing): 8c362dd8b7553d48284cecc94d2ab545d513b29f930555632390fff5ca9772ee Payload signatures: Address: f8d6e0586b0a20c7, Key Index: 2, Signature: 02 Address: f8d6e0586b0a20c7, Key Index: 3, Signature: 01 Envelope signatures: Address: ee82856bf20e2aa6, Key Index: 7, Signature: 03 Transaction ID (after signing): d1a2c58aebfce1050a32edf3568ec3b69cb8637ae090b5f7444ca6b2a8de8f8b
func DecodeTransaction ¶ added in v0.14.1
func DecodeTransaction(transactionMessage []byte) (*Transaction, error)
DecodeTransaction decodes the input bytes into a Transaction struct able to decode outputs from PayloadMessage(), EnvelopeMessage() and Encode() functions
func NewTransaction ¶
func NewTransaction() *Transaction
NewTransaction initializes and returns an empty transaction.
func (*Transaction) AddArgument ¶ added in v0.4.0
func (t *Transaction) AddArgument(arg cadence.Value) error
AddArgument adds a Cadence argument to this transaction.
func (*Transaction) AddAuthorizer ¶
func (t *Transaction) AddAuthorizer(address Address) *Transaction
AddAuthorizer adds an authorizer account to this transaction.
func (*Transaction) AddEnvelopeSignature ¶
func (t *Transaction) AddEnvelopeSignature(address Address, keyIndex uint32, sig []byte) *Transaction
AddEnvelopeSignature adds an envelope signature to the transaction for the given address and key index.
func (*Transaction) AddPayloadSignature ¶
func (t *Transaction) AddPayloadSignature(address Address, keyIndex uint32, sig []byte) *Transaction
AddPayloadSignature adds a payload signature to the transaction for the given address and key index.
func (*Transaction) AddRawArgument ¶ added in v0.7.0
func (t *Transaction) AddRawArgument(arg []byte) *Transaction
AddRawArgument adds a raw JSON-CDC encoded argument to this transaction.
func (*Transaction) Argument ¶ added in v0.7.0
Argument returns the decoded argument at the given index.
func (*Transaction) Encode ¶
func (t *Transaction) Encode() []byte
Encode serializes the full transaction data including the payload and all signatures.
func (*Transaction) EnvelopeMessage ¶
func (t *Transaction) EnvelopeMessage() []byte
EnvelopeMessage returns the signable message for the transaction envelope.
This message is only signed by the payer account.
func (*Transaction) ID ¶
func (t *Transaction) ID() Identifier
ID returns the canonical SHA3-256 hash of this transaction.
func (*Transaction) PayloadMessage ¶
func (t *Transaction) PayloadMessage() []byte
func (*Transaction) SetComputeLimit ¶ added in v0.41.15
func (t *Transaction) SetComputeLimit(limit uint64) *Transaction
SetComputeLimit sets the compute limit for this transaction.
func (*Transaction) SetGasLimit
deprecated
func (t *Transaction) SetGasLimit(limit uint64) *Transaction
SetGasLimit sets the gas limit for this transaction.
Deprecated: Use SetComputationLimit Instead
func (*Transaction) SetPayer ¶
func (t *Transaction) SetPayer(address Address) *Transaction
SetPayer sets the payer account for this transaction.
func (*Transaction) SetProposalKey ¶
func (t *Transaction) SetProposalKey(address Address, keyIndex uint32, sequenceNum uint64) *Transaction
SetProposalKey sets the proposal key and sequence number for this transaction.
The first two arguments specify the account key to be used, and the last argument is the sequence number being declared.
func (*Transaction) SetReferenceBlockID ¶
func (t *Transaction) SetReferenceBlockID(blockID Identifier) *Transaction
SetReferenceBlockID sets the reference block ID for this transaction.
A transaction is considered expired if it is submitted to Flow after refBlock + N, where N is a constant defined by the network.
For example, if a transaction references a block with height of X and the network limit is 10, a block with height X+10 is the last block that is allowed to include this transaction.
func (*Transaction) SetScript ¶
func (t *Transaction) SetScript(script []byte) *Transaction
SetScript sets the Cadence script for this transaction.
The script is the UTF-8 encoded Cadence source code.
func (*Transaction) SignEnvelope ¶
SignEnvelope signs the full transaction (TransactionDomainTag + payload + payload signatures) with the specified account key.
The resulting signature is combined with the account address and key index before being added to the transaction.
This function returns an error if the signature cannot be generated.
func (*Transaction) SignPayload ¶
SignPayload signs the transaction payload (TransactionDomainTag + payload) with the specified account key.
The resulting signature is combined with the account address and key index before being added to the transaction.
This function returns an error if the signature cannot be generated.
type TransactionResult ¶
type TransactionResult struct { Status TransactionStatus Error error Events []Event BlockID Identifier BlockHeight uint64 TransactionID Identifier CollectionID Identifier ComputationUsage uint64 }
type TransactionSignature ¶
type TransactionSignature struct { Address Address SignerIndex int KeyIndex uint32 Signature []byte }
A TransactionSignature is a signature associated with a specific account key.
type TransactionStatus ¶
type TransactionStatus int
TransactionStatus represents the status of a transaction.
const ( // TransactionStatusUnknown indicates that the transaction status is not known. TransactionStatusUnknown TransactionStatus = iota // TransactionStatusPending is the status of a pending transaction. TransactionStatusPending // TransactionStatusFinalized is the status of a finalized transaction. TransactionStatusFinalized // TransactionStatusExecuted is the status of an executed transaction. TransactionStatusExecuted // TransactionStatusSealed is the status of a sealed transaction. TransactionStatusSealed // TransactionStatusExpired is the status of an expired transaction. TransactionStatusExpired )
func (TransactionStatus) String ¶
func (s TransactionStatus) String() string
String returns the string representation of a transaction status.
type TrieUpdate ¶ added in v0.41.19
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package access contains an interface defining functions for the API clients.
|
Package access contains an interface defining functions for the API clients. |
grpc
Package grpc client provides a Go client for the Flow Access gRPC API.
|
Package grpc client provides a Go client for the Flow Access gRPC API. |
http/models
* Access API * * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) * * API version: 1.0.0 * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git)
|
* Access API * * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) * * API version: 1.0.0 * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) |
Package client provides grpc API implementation.
|
Package client provides grpc API implementation. |
awskms
Package awskms provides a AWS Key Management Service (KMS) implementation of the crypto.Signer interface.
|
Package awskms provides a AWS Key Management Service (KMS) implementation of the crypto.Signer interface. |
cloudkms
Package cloudkms provides a Google Cloud Key Management Service (KMS) implementation of the crypto.Signer interface.
|
Package cloudkms provides a Google Cloud Key Management Service (KMS) implementation of the crypto.Signer interface. |
internal
* Flow Go SDK * * Copyright Flow Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License.
|
* Flow Go SDK * * Copyright Flow Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. |
examples
module
|
|