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: Apr 11, 2024 License: AGPL-3.0 Imports: 47 Imported by: 4

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BurnerAddressForChain added in v0.33.30

func BurnerAddressForChain(chainID flow.ChainID) flow.Address

func ByteCountIEC added in v0.33.30

func ByteCountIEC(b int64) string

func MergeRegisterChanges

func MergeRegisterChanges(
	originalPayloads map[flow.RegisterID]*ledger.Payload,
	changes map[flow.RegisterID]flow.RegisterValue,
	expectedChangeAddresses map[flow.Address]struct{},
	expectedOriginalAddresses map[flow.Address]struct{},
	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 NewAccountSizeFilterMigration added in v0.33.30

func NewAccountSizeFilterMigration(
	maxAccountSize uint64,
	exceptions map[string]struct{},
	log zerolog.Logger,
) ledger.Migration

func NewAccountStorageMigration added in v0.33.30

func NewAccountStorageMigration(
	address common.Address,
	log zerolog.Logger,
	migrate func(*runtime.Storage, *interpreter.Interpreter) error,
) ledger.Migration

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 NewCadence1InterfaceStaticTypeConverter added in v0.33.30

func NewCadence1InterfaceStaticTypeConverter(chainID flow.ChainID) statictypes.InterfaceTypeConverterFunc

func NewCadence1PruneMigration added in v0.33.30

func NewCadence1PruneMigration(chainID flow.ChainID, log zerolog.Logger) ledger.Migration

NewCadence1PruneMigration prunes some values from the service account in the Testnet state

func NewContractsExtractionMigration

func NewContractsExtractionMigration(
	contracts map[common.AddressLocation][]byte,
	log zerolog.Logger,
) ledger.Migration

NewContractsExtractionMigration returns a migration that extracts the code for contracts from the payloads. The given contracts map must be allocated, and gets populated with the code for the contracts found in the payloads.

func NewDeploymentMigration added in v0.33.30

func NewDeploymentMigration(
	chainID flow.ChainID,
	contract Contract,
	authorizer flow.Address,
	expectedWriteAddresses map[flow.Address]struct{},
	logger zerolog.Logger,
) ledger.Migration

func NewMigratorRuntime added in v0.35.4

func NewMigratorRuntime(
	address common.Address,
	payloads []*ledger.Payload,
	config util.RuntimeInterfaceConfig,
) (
	*migratorRuntime,
	error,
)

migratorRuntime is a runtime that can be used to run a migration on a single account

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,
	expectedWriteAddresses map[flow.Address]struct{},
) ledger.Migration

func NewUserDefinedTypeChangeCheckerFunc added in v0.33.30

func NewUserDefinedTypeChangeCheckerFunc(
	chainID flow.ChainID,
) func(oldTypeID common.TypeID, newTypeID common.TypeID) (checked, valid bool)

func NoOpMigration

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

func PruneEmptyMigration added in v0.33.30

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

PruneEmptyMigration 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,
	continueMigrationOnValidationError 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 BurnerContractChange added in v0.33.30

type BurnerContractChange uint8
const (
	BurnerContractChangeNone BurnerContractChange = iota
	BurnerContractChangeDeploy
	BurnerContractChangeUpdate
)

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,
	errorMessageHandler *errorMessageHandler,
	contracts map[common.AddressLocation][]byte,
	capabilityMapping *capcons.CapabilityMapping,
	opts Options,
) *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,
	errorMessageHandler *errorMessageHandler,
	contracts map[common.AddressLocation][]byte,
	capabilityMapping *capcons.CapabilityMapping,
	opts Options,
) *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,
	errorMessageHandler *errorMessageHandler,
	contracts map[common.AddressLocation][]byte,
	compositeTypeConverter statictypes.CompositeTypeConverterFunc,
	interfaceTypeConverter statictypes.InterfaceTypeConverterFunc,
	opts Options,
) *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,
	_ []*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 CadenceValueDiffReporter added in v0.33.30

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

func NewCadenceValueDiffReporter added in v0.33.30

func NewCadenceValueDiffReporter(
	address common.Address,
	rw reporters.ReportWriter,
	verboseLogging bool,
) *CadenceValueDiffReporter

func (*CadenceValueDiffReporter) DiffStates added in v0.33.30

func (dr *CadenceValueDiffReporter) DiffStates(oldPayloads, newPayloads []*ledger.Payload, domains []string)

type ChangeContractCodeMigration added in v0.33.1

type ChangeContractCodeMigration struct {
	*StagedContractsMigration
}

func NewChangeContractCodeMigration

func NewChangeContractCodeMigration(
	chainID flow.ChainID,
	log zerolog.Logger,
	rwf reporters.ReportWriterFactory,
) *ChangeContractCodeMigration

func NewSystemContractsMigration added in v0.33.30

func NewSystemContractsMigration(
	chainID flow.ChainID,
	log zerolog.Logger,
	rwf reporters.ReportWriterFactory,
	options SystemContractChangesOptions,
) *ChangeContractCodeMigration

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
	EVMContractChangeFull
)

type NamedMigration added in v0.33.30

type NamedMigration struct {
	Name    string
	Migrate ledger.Migration
}

func NewCadence1ContractsMigrations added in v0.33.30

func NewCadence1ContractsMigrations(
	log zerolog.Logger,
	rwf reporters.ReportWriterFactory,
	opts Options,
) []NamedMigration

func NewCadence1Migrations added in v0.33.30

func NewCadence1Migrations(
	log zerolog.Logger,
	rwf reporters.ReportWriterFactory,
	opts Options,
) []NamedMigration

func NewCadence1ValueMigrations added in v0.33.30

func NewCadence1ValueMigrations(
	log zerolog.Logger,
	rwf reporters.ReportWriterFactory,
	opts Options,
) (migrations []NamedMigration)

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 Options added in v0.33.30

type Options struct {
	NWorker                           int
	DiffMigrations                    bool
	LogVerboseDiff                    bool
	CheckStorageHealthBeforeMigration bool
	ChainID                           flow.ChainID
	EVMContractChange                 EVMContractChange
	BurnerContractChange              BurnerContractChange
	StagedContracts                   []StagedContract
	Prune                             bool
	MaxAccountSize                    uint64
}

type StagedContract added in v0.33.30

type StagedContract struct {
	Contract
	Address common.Address
}

func NewSystemContractChange added in v0.33.1

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

func StagedContractsFromCSV added in v0.33.30

func StagedContractsFromCSV(path string) ([]StagedContract, error)

func SystemContractChanges added in v0.33.1

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

type StagedContractsMigration added in v0.33.30

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

func NewStagedContractsMigration added in v0.33.30

func NewStagedContractsMigration(
	chainID flow.ChainID,
	log zerolog.Logger,
	rwf reporters.ReportWriterFactory,
) *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,
	allPayloads []*ledger.Payload,
	_ int,
) error

func (*StagedContractsMigration) MigrateAccount added in v0.33.30

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

func (*StagedContractsMigration) RegisterContractChange

func (m *StagedContractsMigration) RegisterContractChange(change StagedContract)

func (*StagedContractsMigration) RegisterContractUpdates

func (m *StagedContractsMigration) RegisterContractUpdates(stagedContracts []StagedContract)

RegisterContractUpdates prepares the contract updates as a map for easy lookup.

func (*StagedContractsMigration) WithContractUpdateValidation added in v0.33.30

func (m *StagedContractsMigration) WithContractUpdateValidation() *StagedContractsMigration

type StaticTypeMigrationRules added in v0.33.30

type StaticTypeMigrationRules map[common.TypeID]interpreter.StaticType

func NewCompositeTypeConversionRules added in v0.33.30

func NewCompositeTypeConversionRules(chainID flow.ChainID) StaticTypeMigrationRules

func NewInterfaceTypeConversionRules added in v0.33.30

func NewInterfaceTypeConversionRules(chainID flow.ChainID) StaticTypeMigrationRules

type SystemContractChangesOptions

type SystemContractChangesOptions struct {
	EVM    EVMContractChange
	Burner BurnerContractChange
}

Jump to

Keyboard shortcuts

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