migrations

package
v0.34.0-crescendo-prev... Latest Latest
Warning

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

Go to latest
Published: Feb 20, 2024 License: AGPL-3.0 Imports: 45 Imported by: 4

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func MergeRegisterChanges

func MergeRegisterChanges(
	originalPayloads map[flow.RegisterID]*ledger.Payload,
	changes map[flow.RegisterID]flow.RegisterValue,
	logger zerolog.Logger,
) ([]*ledger.Payload, error)

func MigrateByAccount added in v0.29.0

func MigrateByAccount(
	log zerolog.Logger,
	nWorker int,
	allPayloads []*ledger.Payload,
	migrations []AccountBasedMigration,
) (
	[]*ledger.Payload,
	error,
)

MigrateByAccount takes migrations and all the Payloads, and returns the migrated Payloads.

func MigrateGroupConcurrently added in v0.29.0

func MigrateGroupConcurrently(
	log zerolog.Logger,
	migrations []AccountBasedMigration,
	accountGroups *util.PayloadAccountGrouping,
	nWorker int,
) ([]*ledger.Payload, error)

MigrateGroupConcurrently migrate the Payloads in the given account groups. It uses nWorker to process the Payloads concurrently. The Payloads in each account are processed sequentially by the given migrations in order.

func NewAccountBasedMigration added in v0.33.30

func NewAccountBasedMigration(
	log zerolog.Logger,
	nWorker int,
	migrations []AccountBasedMigration,
) func(payloads []*ledger.Payload) ([]*ledger.Payload, error)

NewAccountBasedMigration creates a migration function that migrates the payloads account by account using the given migrations accounts are processed concurrently using the given number of workers but each account is processed sequentially by the given migrations in order. The migrations InitMigration function is called once before the migration starts And the Close function is called once after the migration finishes if the migration is a finisher.

func NewBurnerDeploymentMigration added in v0.33.30

func NewBurnerDeploymentMigration(
	chainID flow.ChainID,
	logger zerolog.Logger,
) ledger.Migration

func NewCadence1CompositeStaticTypeConverter added in v0.33.30

func NewCadence1CompositeStaticTypeConverter(chainID flow.ChainID) statictypes.CompositeTypeConverterFunc

func NewCadence1ContractsMigrations added in v0.33.30

func NewCadence1ContractsMigrations(
	log zerolog.Logger,
	nWorker int,
	chainID flow.ChainID,
	evmContractChange EVMContractChange,
	stagedContracts []StagedContract,
) []ledger.Migration

func NewCadence1InterfaceStaticTypeConverter added in v0.33.30

func NewCadence1InterfaceStaticTypeConverter(chainID flow.ChainID) statictypes.InterfaceTypeConverterFunc

func NewCadence1Migrations added in v0.33.30

func NewCadence1Migrations(
	log zerolog.Logger,
	rwf reporters.ReportWriterFactory,
	nWorker int,
	chainID flow.ChainID,
	evmContractChange EVMContractChange,
	stagedContracts []StagedContract,
) []ledger.Migration

func NewCadence1ValueMigrations added in v0.33.30

func NewCadence1ValueMigrations(
	log zerolog.Logger,
	rwf reporters.ReportWriterFactory,
	nWorker int,
	chainID flow.ChainID,
) (migrations []ledger.Migration)

func NewDeploymentMigration added in v0.33.30

func NewDeploymentMigration(
	chainID flow.ChainID,
	contract Contract,
	authorizer flow.Address,
	logger zerolog.Logger,
) ledger.Migration

func NewStaticTypeMigrator added in v0.35.4

func NewStaticTypeMigrator[T interpreter.StaticType](
	rules StaticTypeMigrationRules,
) func(staticType T) interpreter.StaticType

func NewTransactionBasedMigration added in v0.33.30

func NewTransactionBasedMigration(
	tx *flow.TransactionBody,
	chainID flow.ChainID,
	logger zerolog.Logger,
) ledger.Migration

func NoOpMigration

func NoOpMigration(p []ledger.Payload) ([]ledger.Payload, error)

func PruneMigration added in v0.16.2

func PruneMigration(payload []ledger.Payload) ([]ledger.Payload, error)

PruneMigration removes all the payloads with empty value this prunes the trie for values that has been deleted

Types

type AccountBasedMigration added in v0.33.1

type AccountBasedMigration interface {
	InitMigration(
		log zerolog.Logger,
		allPayloads []*ledger.Payload,
		nWorkers int,
	) error
	MigrateAccount(
		ctx context.Context,
		address common.Address,
		payloads []*ledger.Payload,
	) ([]*ledger.Payload, error)
	io.Closer
}

AccountBasedMigration is an interface for migrations that migrate account by account concurrently getting all the payloads for each account at a time.

type AccountUsageMigrator added in v0.29.0

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

AccountUsageMigrator iterates through each payload, and calculate the storage usage and update the accounts status with the updated storage usage

func (*AccountUsageMigrator) Close added in v0.33.1

func (m *AccountUsageMigrator) Close() error

func (*AccountUsageMigrator) InitMigration added in v0.33.1

func (m *AccountUsageMigrator) InitMigration(
	log zerolog.Logger,
	_ []*ledger.Payload,
	_ int,
) error

func (*AccountUsageMigrator) MigrateAccount added in v0.33.1

func (m *AccountUsageMigrator) MigrateAccount(
	_ context.Context,
	address common.Address,
	payloads []*ledger.Payload,
) ([]*ledger.Payload, error)

type AccountsAtreeLedger added in v0.23.2

type AccountsAtreeLedger struct {
	Accounts environment.Accounts
}

func NewAccountsAtreeLedger added in v0.23.2

func NewAccountsAtreeLedger(accounts environment.Accounts) *AccountsAtreeLedger

func (*AccountsAtreeLedger) AllocateStorageIndex added in v0.23.2

func (a *AccountsAtreeLedger) AllocateStorageIndex(owner []byte) (atree.StorageIndex, error)

AllocateStorageIndex allocates new storage index under the owner accounts to store a new register

func (*AccountsAtreeLedger) GetValue added in v0.23.2

func (a *AccountsAtreeLedger) GetValue(owner, key []byte) ([]byte, error)

func (*AccountsAtreeLedger) SetValue added in v0.23.2

func (a *AccountsAtreeLedger) SetValue(owner, key, value []byte) error

func (*AccountsAtreeLedger) ValueExists added in v0.23.2

func (a *AccountsAtreeLedger) ValueExists(owner, key []byte) (exists bool, err error)

type AtreeRegisterMigrator added in v0.35.4

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

AtreeRegisterMigrator is a migrator that converts the storage of an account from the old atree format to the new atree format. Account "storage used" should be correctly updated after the migration.

func NewAtreeRegisterMigrator added in v0.35.4

func NewAtreeRegisterMigrator(
	rwf reporters.ReportWriterFactory,
	validateMigratedValues bool,
	logVerboseValidationError bool,
) *AtreeRegisterMigrator

func (*AtreeRegisterMigrator) Close added in v0.35.4

func (m *AtreeRegisterMigrator) Close() error

func (*AtreeRegisterMigrator) InitMigration added in v0.35.4

func (m *AtreeRegisterMigrator) InitMigration(
	log zerolog.Logger,
	_ []*ledger.Payload,
	nWorkers int,
) error

func (*AtreeRegisterMigrator) MigrateAccount added in v0.35.4

func (m *AtreeRegisterMigrator) MigrateAccount(
	_ context.Context,
	address common.Address,
	oldPayloads []*ledger.Payload,
) ([]*ledger.Payload, error)

type CadenceBaseMigrator added in v0.35.4

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

func NewCadence1CapabilityValueMigrator added in v0.35.4

func NewCadence1CapabilityValueMigrator(
	rwf reporters.ReportWriterFactory,
	capabilityIDs *capcons.CapabilityIDMapping,
) *CadenceBaseMigrator

NewCadence1CapabilityValueMigrator creates a new CadenceBaseMigrator which migrates path capability values to ID capability values. It requires a map the IDs of the capability controllers, generated by the link value migration.

func NewCadence1LinkValueMigrator added in v0.35.4

func NewCadence1LinkValueMigrator(
	rwf reporters.ReportWriterFactory,
	capabilityIDs *capcons.CapabilityIDMapping,
) *CadenceBaseMigrator

NewCadence1LinkValueMigrator creates a new CadenceBaseMigrator which migrates links to capability controllers. It populates the given map with the IDs of the capability controller it issues.

func NewCadence1ValueMigrator added in v0.35.4

func NewCadence1ValueMigrator(
	rwf reporters.ReportWriterFactory,
	compositeTypeConverter statictypes.CompositeTypeConverterFunc,
	interfaceTypeConverter statictypes.InterfaceTypeConverterFunc,
) *CadenceBaseMigrator

NewCadence1ValueMigrator creates a new CadenceBaseMigrator which runs some of the Cadence value migrations (static types, entitlements, strings)

func (*CadenceBaseMigrator) Close added in v0.35.4

func (m *CadenceBaseMigrator) Close() error

func (*CadenceBaseMigrator) InitMigration added in v0.35.4

func (m *CadenceBaseMigrator) InitMigration(
	log zerolog.Logger,
	allPayloads []*ledger.Payload,
	_ int,
) error

func (*CadenceBaseMigrator) MigrateAccount added in v0.35.4

func (m *CadenceBaseMigrator) MigrateAccount(
	_ context.Context,
	address common.Address,
	oldPayloads []*ledger.Payload,
) ([]*ledger.Payload, error)

type ChangeContractCodeMigration added in v0.33.1

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

func NewSystemContactsMigration

func NewSystemContactsMigration(
	chainID flow.ChainID,
	options SystemContractChangesOptions,
) *ChangeContractCodeMigration

func (*ChangeContractCodeMigration) Close added in v0.33.1

func (*ChangeContractCodeMigration) InitMigration added in v0.33.1

func (d *ChangeContractCodeMigration) InitMigration(
	log zerolog.Logger,
	_ []*ledger.Payload,
	_ int,
) error

func (*ChangeContractCodeMigration) MigrateAccount added in v0.33.1

func (d *ChangeContractCodeMigration) MigrateAccount(
	_ context.Context,
	address common.Address,
	payloads []*ledger.Payload,
) ([]*ledger.Payload, error)

func (*ChangeContractCodeMigration) RegisterContractChange added in v0.33.1

func (d *ChangeContractCodeMigration) RegisterContractChange(
	address common.Address,
	contractName string,
	newContractCode string,
) (
	previousNewContractCode string,
)

type Contract added in v0.33.30

type Contract struct {
	Name string
	Code []byte
}

type DeduplicateContractNamesMigration added in v0.33.1

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

DeduplicateContractNamesMigration checks if the contract names have been duplicated and removes the duplicate ones.

This migration de-syncs storage used, so it should be run before the StorageUsedMigration.

func (*DeduplicateContractNamesMigration) Close added in v0.33.1

func (*DeduplicateContractNamesMigration) InitMigration added in v0.33.1

func (d *DeduplicateContractNamesMigration) InitMigration(
	log zerolog.Logger,
	_ []*ledger.Payload,
	_ int,
) error

func (*DeduplicateContractNamesMigration) MigrateAccount added in v0.33.1

func (d *DeduplicateContractNamesMigration) MigrateAccount(
	ctx context.Context,
	address common.Address,
	payloads []*ledger.Payload,
) ([]*ledger.Payload, error)

type EVMContractChange added in v0.33.30

type EVMContractChange uint8
const (
	EVMContractChangeNone EVMContractChange = iota
	EVMContractChangeABIOnly
	EVMContractChangeFull
)

type NoopRuntimeInterface

type NoopRuntimeInterface struct {
}

NoopRuntimeInterface is a runtime interface that can be used in migrations.

func (NoopRuntimeInterface) AccountKeysCount

func (NoopRuntimeInterface) AccountKeysCount(_ runtime.Address) (uint64, error)

func (NoopRuntimeInterface) AddAccountKey

func (NoopRuntimeInterface) AddEncodedAccountKey

func (NoopRuntimeInterface) AddEncodedAccountKey(_ runtime.Address, _ []byte) error

func (NoopRuntimeInterface) AllocateStorageIndex

func (NoopRuntimeInterface) AllocateStorageIndex(_ []byte) (atree.StorageIndex, error)

func (NoopRuntimeInterface) BLSAggregatePublicKeys

func (NoopRuntimeInterface) BLSAggregatePublicKeys(_ []*runtime.PublicKey) (*runtime.PublicKey, error)

func (NoopRuntimeInterface) BLSAggregateSignatures

func (NoopRuntimeInterface) BLSAggregateSignatures(_ [][]byte) ([]byte, error)

func (NoopRuntimeInterface) BLSVerifyPOP

func (NoopRuntimeInterface) BLSVerifyPOP(_ *runtime.PublicKey, _ []byte) (bool, error)

func (NoopRuntimeInterface) ComputationUsed

func (NoopRuntimeInterface) ComputationUsed() (uint64, error)

func (NoopRuntimeInterface) CreateAccount

func (NoopRuntimeInterface) CreateAccount(_ runtime.Address) (address runtime.Address, err error)

func (NoopRuntimeInterface) DecodeArgument

func (NoopRuntimeInterface) DecodeArgument(_ []byte, _ cadence.Type) (cadence.Value, error)

func (NoopRuntimeInterface) EmitEvent

func (NoopRuntimeInterface) EmitEvent(_ cadence.Event) error

func (NoopRuntimeInterface) GenerateAccountID

func (NoopRuntimeInterface) GenerateAccountID(_ common.Address) (uint64, error)

func (NoopRuntimeInterface) GenerateUUID

func (NoopRuntimeInterface) GenerateUUID() (uint64, error)

func (NoopRuntimeInterface) GetAccountAvailableBalance

func (NoopRuntimeInterface) GetAccountAvailableBalance(_ common.Address) (value uint64, err error)

func (NoopRuntimeInterface) GetAccountBalance

func (NoopRuntimeInterface) GetAccountBalance(_ common.Address) (value uint64, err error)

func (NoopRuntimeInterface) GetAccountContractCode

func (NoopRuntimeInterface) GetAccountContractCode(_ common.AddressLocation) ([]byte, error)

func (NoopRuntimeInterface) GetAccountContractNames

func (NoopRuntimeInterface) GetAccountContractNames(_ runtime.Address) ([]string, error)

func (NoopRuntimeInterface) GetAccountKey

func (NoopRuntimeInterface) GetBlockAtHeight

func (NoopRuntimeInterface) GetBlockAtHeight(_ uint64) (block runtime.Block, exists bool, err error)

func (NoopRuntimeInterface) GetCode

func (NoopRuntimeInterface) GetComputationLimit

func (NoopRuntimeInterface) GetComputationLimit() uint64

func (NoopRuntimeInterface) GetCurrentBlockHeight

func (NoopRuntimeInterface) GetCurrentBlockHeight() (uint64, error)

func (NoopRuntimeInterface) GetInterpreterSharedState

func (NoopRuntimeInterface) GetInterpreterSharedState() *interpreter.SharedState

func (NoopRuntimeInterface) GetOrLoadProgram

func (NoopRuntimeInterface) GetOrLoadProgram(_ runtime.Location, _ func() (*interpreter.Program, error)) (*interpreter.Program, error)

func (NoopRuntimeInterface) GetSigningAccounts

func (NoopRuntimeInterface) GetSigningAccounts() ([]runtime.Address, error)

func (NoopRuntimeInterface) GetStorageCapacity

func (NoopRuntimeInterface) GetStorageCapacity(_ runtime.Address) (value uint64, err error)

func (NoopRuntimeInterface) GetStorageUsed

func (NoopRuntimeInterface) GetStorageUsed(_ runtime.Address) (value uint64, err error)

func (NoopRuntimeInterface) GetValue

func (NoopRuntimeInterface) GetValue(_, _ []byte) (value []byte, err error)

func (NoopRuntimeInterface) Hash

func (NoopRuntimeInterface) ImplementationDebugLog

func (NoopRuntimeInterface) ImplementationDebugLog(_ string) error

func (NoopRuntimeInterface) InteractionUsed

func (NoopRuntimeInterface) InteractionUsed() (uint64, error)

func (NoopRuntimeInterface) MemoryUsed

func (NoopRuntimeInterface) MemoryUsed() (uint64, error)

func (NoopRuntimeInterface) MeterComputation

func (NoopRuntimeInterface) MeterComputation(_ common.ComputationKind, _ uint) error

func (NoopRuntimeInterface) MeterMemory

func (NoopRuntimeInterface) ProgramLog

func (NoopRuntimeInterface) ProgramLog(_ string) error

func (NoopRuntimeInterface) ReadRandom

func (NoopRuntimeInterface) ReadRandom([]byte) error

func (NoopRuntimeInterface) RecordTrace

func (NoopRuntimeInterface) RemoveAccountContractCode

func (NoopRuntimeInterface) RemoveAccountContractCode(common.AddressLocation) (err error)

func (NoopRuntimeInterface) ResolveLocation

func (NoopRuntimeInterface) ResourceOwnerChanged

func (NoopRuntimeInterface) RevokeAccountKey

func (NoopRuntimeInterface) RevokeAccountKey(_ runtime.Address, _ int) (*runtime.AccountKey, error)

func (NoopRuntimeInterface) RevokeEncodedAccountKey

func (NoopRuntimeInterface) RevokeEncodedAccountKey(_ runtime.Address, _ int) (publicKey []byte, err error)

func (NoopRuntimeInterface) SetComputationUsed

func (NoopRuntimeInterface) SetComputationUsed(_ uint64) error

func (NoopRuntimeInterface) SetInterpreterSharedState

func (NoopRuntimeInterface) SetInterpreterSharedState(_ *interpreter.SharedState)

func (NoopRuntimeInterface) SetValue

func (NoopRuntimeInterface) SetValue(_, _, _ []byte) (err error)

func (NoopRuntimeInterface) UpdateAccountContractCode

func (NoopRuntimeInterface) UpdateAccountContractCode(_ common.AddressLocation, _ []byte) (err error)

func (NoopRuntimeInterface) ValidatePublicKey

func (NoopRuntimeInterface) ValidatePublicKey(_ *runtime.PublicKey) error

func (NoopRuntimeInterface) ValueExists

func (NoopRuntimeInterface) ValueExists(_, _ []byte) (exists bool, err error)

func (NoopRuntimeInterface) VerifySignature

func (NoopRuntimeInterface) VerifySignature(_ []byte, _ string, _ []byte, _ []byte, _ runtime.SignatureAlgorithm, _ runtime.HashAlgorithm) (bool, error)

type StagedContract added in v0.33.30

type StagedContract struct {
	Contract
	Address common.Address
}

type StagedContractsMigration added in v0.33.30

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

func NewStagedContractsMigration added in v0.33.30

func NewStagedContractsMigration(stagedContracts []StagedContract) *StagedContractsMigration

func (*StagedContractsMigration) Close added in v0.33.30

func (m *StagedContractsMigration) Close() error

func (*StagedContractsMigration) InitMigration added in v0.33.30

func (m *StagedContractsMigration) InitMigration(
	log zerolog.Logger,
	_ []*ledger.Payload,
	_ int,
) error

func (*StagedContractsMigration) MigrateAccount added in v0.33.30

func (m *StagedContractsMigration) MigrateAccount(
	_ context.Context,
	address common.Address,
	payloads []*ledger.Payload,
) ([]*ledger.Payload, error)

type StaticTypeMigrationRules added in v0.33.30

type StaticTypeMigrationRules map[common.TypeID]interpreter.StaticType

type SystemContractChange added in v0.33.1

type SystemContractChange struct {
	Address         common.Address
	ContractName    string
	NewContractCode string
}

func NewSystemContractChange added in v0.33.1

func NewSystemContractChange(
	systemContract systemcontracts.SystemContract,
	newContractCode []byte,
) SystemContractChange

func SystemContractChanges added in v0.33.1

func SystemContractChanges(chainID flow.ChainID, options SystemContractChangesOptions) []SystemContractChange

type SystemContractChangesOptions

type SystemContractChangesOptions struct {
	EVM EVMContractChange
}

Jump to

Keyboard shortcuts

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