flowkit

package module
v0.0.0-...-a3dd185 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 24, 2023 License: Apache-2.0 Imports: 33 Imported by: 10

README

Flow CLI

Flow CLI package contains all the functionality used in CLI. This package is meant to be used by third party (langauge server etc...).

Config

Config package implements parsing and serializing configuration and persisting state needed for some commands.

Gateway

Gateway package contains functions that interact with the Flow blockchain. This package offers abstraction over communicating with the Flow network and takes care of initializing the network client and handling errors.

Function accept arguments in go-sdk types or lib types and must already be validated. Client is already initialized and only referenced inside here.

Services

Service layer is meant to be used as an api. Service function accepts raw arguments, validate them, use gateways to do network interactions and lib to build resources needed in gateways.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Exists

func Exists(path string) bool

Exists checks if a project configuration exists.

func GetAuthorizerCount

func GetAuthorizerCount(fileName string, code []byte) int

func NewStakingInfoFromValue

func NewStakingInfoFromValue(value cadence.Value) ([]map[string]interface{}, error)

func ParseArgumentsJSON

func ParseArgumentsJSON(input string) ([]cadence.Value, error)

func ParseArgumentsWithoutType

func ParseArgumentsWithoutType(fileName string, code []byte, args []string) (scriptArgs []cadence.Value, err error)

Types

type Account

type Account struct {
	// contains filtered or unexported fields
}

Account is a flowkit-specific account implementation.

func NewAccount

func NewAccount(name string) *Account

NewAccount creates an empty account with the provided name.

func NewAccountFromOnChainAccount

func NewAccountFromOnChainAccount(
	name string,
	onChainAccount *flow.Account,
	privateKey crypto.PrivateKey,
) (*Account, error)

NewAccountFromOnChainAccount creates a new flowkit account definition that mirrors an already-existing on-chain Flow account.

This function requires the on-chain account to have exactly one public key with full signing weight (1000). This ensures that the user has complete and sole control over the on-chain account.

func (*Account) Address

func (a *Account) Address() flow.Address

Address get account address.

func (*Account) Key

func (a *Account) Key() AccountKey

Key get account key.

func (*Account) Name

func (a *Account) Name() string

Name get account name.

func (*Account) SetAddress

func (a *Account) SetAddress(address flow.Address) *Account

SetAddress sets the account address.

func (*Account) SetKey

func (a *Account) SetKey(key AccountKey) *Account

SetKey sets account key.

func (*Account) SetName

func (a *Account) SetName(name string) *Account

SetName sets the account name.

type AccountKey

type AccountKey interface {
	Type() config.KeyType
	Index() int
	SigAlgo() crypto.SignatureAlgorithm
	HashAlgo() crypto.HashAlgorithm
	Signer(ctx context.Context) (crypto.Signer, error)
	ToConfig() config.AccountKey
	Validate() error
	PrivateKey() (*crypto.PrivateKey, error)
}

AccountKey is a flowkit specific account key implementation allowing us to sign the transactions using different implemented methods.

type Accounts

type Accounts []Account

Accounts is a collection of account.

func (*Accounts) AddOrUpdate

func (a *Accounts) AddOrUpdate(account *Account)

AddOrUpdate add account if missing or updates if present.

func (Accounts) ByAddress

func (a Accounts) ByAddress(address flow.Address) (*Account, error)

ByAddress get an account by address.

func (Accounts) ByName

func (a Accounts) ByName(name string) (*Account, error)

ByName get an account by name or returns and error if no account found

func (*Accounts) Remove

func (a *Accounts) Remove(name string) error

Remove an account.

func (Accounts) String

func (a Accounts) String() string

type Bip44AccountKey

type Bip44AccountKey struct {
	// contains filtered or unexported fields
}

Bip44AccountKey implements https://github.com/onflow/flow/blob/master/flips/20201125-bip-44-multi-account.md

func (Bip44AccountKey) HashAlgo

func (a Bip44AccountKey) HashAlgo() crypto.HashAlgorithm

func (Bip44AccountKey) Index

func (a Bip44AccountKey) Index() int

func (*Bip44AccountKey) PrivateKey

func (a *Bip44AccountKey) PrivateKey() (*crypto.PrivateKey, error)

func (*Bip44AccountKey) PrivateKeyHex

func (a *Bip44AccountKey) PrivateKeyHex() string

func (Bip44AccountKey) SigAlgo

func (a Bip44AccountKey) SigAlgo() crypto.SignatureAlgorithm

func (*Bip44AccountKey) Signer

func (a *Bip44AccountKey) Signer(ctx context.Context) (crypto.Signer, error)

func (*Bip44AccountKey) ToConfig

func (a *Bip44AccountKey) ToConfig() config.AccountKey

func (Bip44AccountKey) Type

func (a Bip44AccountKey) Type() config.KeyType

func (*Bip44AccountKey) Validate

func (a *Bip44AccountKey) Validate() error

type CadenceArgument

type CadenceArgument struct {
	Value cadence.Value
}

func (CadenceArgument) MarshalJSON

func (v CadenceArgument) MarshalJSON() ([]byte, error)

func (*CadenceArgument) UnmarshalJSON

func (v *CadenceArgument) UnmarshalJSON(b []byte) (err error)

type Event

type Event struct {
	Type   string
	Values map[string]cadence.Value
}

func NewEvent

func NewEvent(event flow.Event) Event

func (*Event) GetAddress

func (e *Event) GetAddress() *flow.Address

type Events

type Events []Event

func EventsFromTransaction

func EventsFromTransaction(tx *flow.TransactionResult) Events

func NewEvents

func NewEvents(events []flow.Event) Events

func (*Events) GetAddress

func (e *Events) GetAddress() *flow.Address

func (*Events) GetAddressForKeyAdded

func (e *Events) GetAddressForKeyAdded(publicKey crypto.PublicKey) *flow.Address

func (*Events) GetCreatedAddresses

func (e *Events) GetCreatedAddresses() []*flow.Address

type FileAccountKey

type FileAccountKey struct {
	// contains filtered or unexported fields
}

func NewFileAccountKey

func NewFileAccountKey(
	location string,
	index int,
	sigAlgo crypto.SignatureAlgorithm,
	hashAlgo crypto.HashAlgorithm,
) *FileAccountKey

NewFileAccountKey creates a new account key that is stored to a separate file in the provided location.

This type of the key is a more secure way of storing accounts. The config only includes the location and not the key.

func (FileAccountKey) HashAlgo

func (a FileAccountKey) HashAlgo() crypto.HashAlgorithm

func (FileAccountKey) Index

func (a FileAccountKey) Index() int

func (*FileAccountKey) PrivateKey

func (f *FileAccountKey) PrivateKey() (*crypto.PrivateKey, error)

func (FileAccountKey) SigAlgo

func (a FileAccountKey) SigAlgo() crypto.SignatureAlgorithm

func (*FileAccountKey) Signer

func (f *FileAccountKey) Signer(ctx context.Context) (crypto.Signer, error)

func (*FileAccountKey) ToConfig

func (f *FileAccountKey) ToConfig() config.AccountKey

func (FileAccountKey) Type

func (a FileAccountKey) Type() config.KeyType

func (FileAccountKey) Validate

func (a FileAccountKey) Validate() error

type HexAccountKey

type HexAccountKey struct {
	// contains filtered or unexported fields
}

HexAccountKey implements account key in hex representation.

func NewHexAccountKeyFromPrivateKey

func NewHexAccountKeyFromPrivateKey(
	index int,
	hashAlgo crypto.HashAlgorithm,
	privateKey crypto.PrivateKey,
) *HexAccountKey

func (HexAccountKey) HashAlgo

func (a HexAccountKey) HashAlgo() crypto.HashAlgorithm

func (HexAccountKey) Index

func (a HexAccountKey) Index() int

func (*HexAccountKey) PrivateKey

func (a *HexAccountKey) PrivateKey() (*crypto.PrivateKey, error)

func (*HexAccountKey) PrivateKeyHex

func (a *HexAccountKey) PrivateKeyHex() string

func (HexAccountKey) SigAlgo

func (a HexAccountKey) SigAlgo() crypto.SignatureAlgorithm

func (*HexAccountKey) Signer

func (a *HexAccountKey) Signer(ctx context.Context) (crypto.Signer, error)

func (*HexAccountKey) ToConfig

func (a *HexAccountKey) ToConfig() config.AccountKey

func (HexAccountKey) Type

func (a HexAccountKey) Type() config.KeyType

func (*HexAccountKey) Validate

func (a *HexAccountKey) Validate() error

type KmsAccountKey

type KmsAccountKey struct {
	// contains filtered or unexported fields
}

KmsAccountKey implements Gcloud KMS system for signing.

func (KmsAccountKey) HashAlgo

func (a KmsAccountKey) HashAlgo() crypto.HashAlgorithm

func (KmsAccountKey) Index

func (a KmsAccountKey) Index() int

func (*KmsAccountKey) PrivateKey

func (a *KmsAccountKey) PrivateKey() (*crypto.PrivateKey, error)

func (KmsAccountKey) SigAlgo

func (a KmsAccountKey) SigAlgo() crypto.SignatureAlgorithm

func (*KmsAccountKey) Signer

func (a *KmsAccountKey) Signer(ctx context.Context) (crypto.Signer, error)

func (*KmsAccountKey) ToConfig

func (a *KmsAccountKey) ToConfig() config.AccountKey

ToConfig convert account key to configuration.

func (KmsAccountKey) Type

func (a KmsAccountKey) Type() config.KeyType

func (*KmsAccountKey) Validate

func (a *KmsAccountKey) Validate() error

type ReaderWriter

type ReaderWriter interface {
	ReadFile(source string) ([]byte, error)
	WriteFile(filename string, data []byte, perm os.FileMode) error
}

ReaderWriter is implemented by any value that has ReadFile and WriteFile and it is used to load and save files.

type Script

type Script struct {
	Args []cadence.Value
	// contains filtered or unexported fields
}

Script includes Cadence code and optional arguments and filename.

Filename is only required to be passed if you want to resolve imports.

func NewScript

func NewScript(code []byte, args []cadence.Value, location string) *Script

func (*Script) Code

func (s *Script) Code() []byte

func (*Script) Location

func (s *Script) Location() string

func (*Script) SetCode

func (s *Script) SetCode(code []byte)

type State

type State struct {
	// contains filtered or unexported fields
}

State manages the state for a Flow project.

func Init

func Init(
	readerWriter ReaderWriter,
	sigAlgo crypto.SignatureAlgorithm,
	hashAlgo crypto.HashAlgorithm,
) (*State, error)

Init initializes a new Flow project.

func Load

func Load(configFilePaths []string, readerWriter ReaderWriter) (*State, error)

Load loads a project configuration and returns the resulting project.

func (*State) Accounts

func (p *State) Accounts() *Accounts

Accounts get accounts.

func (*State) AccountsForNetwork

func (p *State) AccountsForNetwork(network string) Accounts

AccountsForNetwork returns all accounts used on a network defined by deployments.

func (*State) AliasesForNetwork

func (p *State) AliasesForNetwork(network string) project.LocationAliases

AliasesForNetwork returns all deployment aliases for a network.

func (*State) Config

func (p *State) Config() *config.Config

Config get underlying configuration for advanced usage.

func (*State) Contracts

func (p *State) Contracts() *config.Contracts

Contracts get contracts configuration.

func (*State) DeploymentContractsByNetwork

func (p *State) DeploymentContractsByNetwork(network string) ([]*project.Contract, error)

DeploymentContractsByNetwork returns all contracts for a network.

Build contract slice based on the network provided, check the deployment section for that network and retrieve the account by name, then add the accounts address on the contract as a destination.

func (*State) Deployments

func (p *State) Deployments() *config.Deployments

Deployments get deployments configuration.

func (*State) EmulatorServiceAccount

func (p *State) EmulatorServiceAccount() (*Account, error)

EmulatorServiceAccount returns the service account for the default emulator profile.

func (*State) Networks

func (p *State) Networks() *config.Networks

Networks get network configuration.

func (*State) ReadFile

func (p *State) ReadFile(source string) ([]byte, error)

ReadFile exposes an injected file loader.

func (*State) ReaderWriter

func (p *State) ReaderWriter() ReaderWriter

ReaderWriter retrieve current file reader writer.

func (*State) Save

func (p *State) Save(path string) error

Save saves the project configuration to the given path.

func (*State) SaveDefault

func (p *State) SaveDefault() error

SaveDefault saves to default path.

func (*State) SaveEdited

func (p *State) SaveEdited(paths []string) error

SaveEdited saves configuration to valid path.

func (*State) SetAccountFileLocation

func (p *State) SetAccountFileLocation(account Account, location string)

SetAccountFileLocation sets a private file location for the specified account.

func (*State) SetEmulatorKey

func (p *State) SetEmulatorKey(privateKey crypto.PrivateKey)

SetEmulatorKey sets the default emulator service account private key.

type Transaction

type Transaction struct {
	// contains filtered or unexported fields
}

Transaction builder of flow transactions.

func NewAddAccountContractTransaction

func NewAddAccountContractTransaction(
	signer *Account,
	name string,
	source []byte,
	args []cadence.Value,
) (*Transaction, error)

NewAddAccountContractTransaction add new contract to the account.

func NewCreateAccountTransaction

func NewCreateAccountTransaction(
	signer *Account,
	keys []*flow.AccountKey,
	contracts []templates.Contract,
) (*Transaction, error)

NewCreateAccountTransaction creates new transaction for account.

func NewRemoveAccountContractTransaction

func NewRemoveAccountContractTransaction(signer *Account, name string) (*Transaction, error)

NewRemoveAccountContractTransaction creates new transaction to remove contract.

func NewTransaction

func NewTransaction() *Transaction

NewTransaction create new instance of transaction.

func NewTransactionFromPayload

func NewTransactionFromPayload(payload []byte) (*Transaction, error)

NewTransactionFromPayload build transaction from payload.

func NewUpdateAccountContractTransaction

func NewUpdateAccountContractTransaction(signer *Account, name string, source []byte) (*Transaction, error)

NewUpdateAccountContractTransaction update account contract.

func (*Transaction) AddArgument

func (t *Transaction) AddArgument(arg cadence.Value) error

AddArgument add cadence typed argument.

func (*Transaction) AddArguments

func (t *Transaction) AddArguments(args []cadence.Value) error

AddArguments add array of cadence arguments.

func (*Transaction) AddAuthorizers

func (t *Transaction) AddAuthorizers(authorizers []flow.Address) (*Transaction, error)

AddAuthorizers add group of authorizers.

func (*Transaction) FlowTransaction

func (t *Transaction) FlowTransaction() *flow.Transaction

FlowTransaction get flow transaction.

func (*Transaction) Proposer

func (t *Transaction) Proposer() *flow.Account

Proposer get proposer.

func (*Transaction) SetBlockReference

func (t *Transaction) SetBlockReference(block *flow.Block) *Transaction

SetBlockReference sets block reference for transaction.

func (*Transaction) SetGasLimit

func (t *Transaction) SetGasLimit(gasLimit uint64) *Transaction

SetGasLimit sets the gas limit for transaction.

func (*Transaction) SetPayer

func (t *Transaction) SetPayer(address flow.Address) *Transaction

SetPayer sets the payer for transaction.

func (*Transaction) SetProposer

func (t *Transaction) SetProposer(proposer *flow.Account, keyIndex int) error

SetProposer sets the proposer for transaction.

func (*Transaction) SetScriptWithArgs

func (t *Transaction) SetScriptWithArgs(script []byte, args []cadence.Value) error

func (*Transaction) SetSigner

func (t *Transaction) SetSigner(account *Account) error

SetSigner sets the signer for transaction.

func (*Transaction) Sign

func (t *Transaction) Sign() (*Transaction, error)

Sign signs transaction using signer account.

func (*Transaction) Signer

func (t *Transaction) Signer() *Account

Signer get signer.

Directories

Path Synopsis
Package cli defines constants, configurations, and utilities that are used across the Flow CLI.
Package cli defines constants, configurations, and utilities that are used across the Flow CLI.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL