diff --git a/cmd/util/ledger/migrations/cadence.go b/cmd/util/ledger/migrations/cadence.go index a17e52f7180..393a6ad3bb5 100644 --- a/cmd/util/ledger/migrations/cadence.go +++ b/cmd/util/ledger/migrations/cadence.go @@ -1,17 +1,23 @@ package migrations import ( + "context" _ "embed" "fmt" "github.com/onflow/cadence/migrations/capcons" "github.com/onflow/cadence/migrations/statictypes" + "github.com/onflow/cadence/runtime" "github.com/onflow/cadence/runtime/common" "github.com/onflow/cadence/runtime/interpreter" "github.com/rs/zerolog" "github.com/onflow/flow-go/cmd/util/ledger/reporters" + "github.com/onflow/flow-go/cmd/util/ledger/util" + "github.com/onflow/flow-go/cmd/util/ledger/util/registers" + "github.com/onflow/flow-go/fvm/environment" "github.com/onflow/flow-go/fvm/systemcontracts" + "github.com/onflow/flow-go/fvm/tracing" "github.com/onflow/flow-go/model/flow" ) @@ -214,6 +220,129 @@ type NamedMigration struct { Migrate RegistersMigration } +type IssueStorageCapConMigration struct { + name string + chainID flow.ChainID + accountsCapabilities *capcons.AccountsCapabilities + interpreterMigrationRuntimeConfig InterpreterMigrationRuntimeConfig + programs map[runtime.Location]*interpreter.Program + mapping *capcons.CapabilityMapping + reporter reporters.ReportWriter +} + +const issueStorageCapConMigrationReporterName = "cadence-storage-capcon-issue-migration" + +func NewIssueStorageCapConMigration( + rwf reporters.ReportWriterFactory, + chainID flow.ChainID, + storageDomainCapabilities *capcons.AccountsCapabilities, + programs map[runtime.Location]*interpreter.Program, + capabilityMapping *capcons.CapabilityMapping, +) *IssueStorageCapConMigration { + return &IssueStorageCapConMigration{ + name: "cadence_storage_cap_con_issue_migration", + reporter: rwf.ReportWriter(issueStorageCapConMigrationReporterName), + chainID: chainID, + accountsCapabilities: storageDomainCapabilities, + programs: programs, + mapping: capabilityMapping, + } +} + +func (m *IssueStorageCapConMigration) InitMigration( + _ zerolog.Logger, + _ *registers.ByAccount, + _ int, +) error { + // During the migration, we only provide already checked programs, + // no parsing/checking of contracts is expected. + + m.interpreterMigrationRuntimeConfig = InterpreterMigrationRuntimeConfig{ + GetOrLoadProgram: func( + location runtime.Location, + _ func() (*interpreter.Program, error), + ) (*interpreter.Program, error) { + program, ok := m.programs[location] + if !ok { + return nil, fmt.Errorf("program not found: %s", location) + } + return program, nil + }, + GetCode: func(_ common.AddressLocation) ([]byte, error) { + return nil, fmt.Errorf("unexpected call to GetCode") + }, + GetContractNames: func(address flow.Address) ([]string, error) { + return nil, fmt.Errorf("unexpected call to GetContractNames") + }, + } + + return nil +} + +func (m *IssueStorageCapConMigration) MigrateAccount( + _ context.Context, + address common.Address, + accountRegisters *registers.AccountRegisters, +) error { + accountCapabilities := m.accountsCapabilities.Get(address) + if accountCapabilities == nil { + return nil + } + + // Create all the runtime components we need for the migration + migrationRuntime, err := NewInterpreterMigrationRuntime( + accountRegisters, + m.chainID, + m.interpreterMigrationRuntimeConfig, + ) + if err != nil { + return fmt.Errorf("failed to create interpreter migration runtime: %w", err) + } + + idGenerator := environment.NewAccountLocalIDGenerator( + tracing.NewMockTracerSpan(), + util.NopMeter{}, + migrationRuntime.Accounts, + ) + + handler := capabilityControllerHandler{ + idGenerator: idGenerator, + } + + capcons.IssueAccountCapabilities( + migrationRuntime.Interpreter, + address, + accountCapabilities, + handler, + m.mapping, + ) + + // It would be ideal to do the reporting inside `IssueAccountCapabilities` function above. + // However, that doesn't have the access to the reporter. So doing it here. + for _, capability := range accountCapabilities.Capabilities { + id, _, _ := m.mapping.Get(interpreter.AddressPath{ + Address: address, + Path: capability.Path, + }) + + m.reporter.Write(storageCapconIssuedEntry{ + AccountAddress: address, + Path: capability.Path, + BorrowType: capability.BorrowType, + CapabilityID: id, + }) + } + + return nil +} + +func (m *IssueStorageCapConMigration) Close() error { + m.reporter.Close() + return nil +} + +var _ AccountBasedMigration = &IssueStorageCapConMigration{} + func NewCadence1ValueMigrations( log zerolog.Logger, rwf reporters.ReportWriterFactory, @@ -225,6 +354,10 @@ func NewCadence1ValueMigrations( // used by CadenceCapabilityValueMigration capabilityMapping := &capcons.CapabilityMapping{} + // Populated by StorageCapMigration, + // used by IssueStorageCapConMigration + storageDomainCapabilities := &capcons.AccountsCapabilities{} + errorMessageHandler := &errorMessageHandler{} // The value migrations are run as account-based migrations, @@ -260,46 +393,61 @@ func NewCadence1ValueMigrations( }, } - for index, migrationConstructor := range []func(opts Options) *CadenceBaseMigration{ - func(opts Options) *CadenceBaseMigration { - return NewCadence1ValueMigration( + for index, migrationConstructor := range []func(opts Options) (string, AccountBasedMigration){ + func(opts Options) (string, AccountBasedMigration) { + migration := NewCadence1ValueMigration( rwf, errorMessageHandler, programs, NewCadence1CompositeStaticTypeConverter(opts.ChainID), NewCadence1InterfaceStaticTypeConverter(opts.ChainID), + storageDomainCapabilities, opts, ) + return migration.name, migration + }, + func(opts Options) (string, AccountBasedMigration) { + migration := NewIssueStorageCapConMigration( + rwf, + opts.ChainID, + storageDomainCapabilities, + programs, + capabilityMapping, + ) + return migration.name, migration + }, - func(opts Options) *CadenceBaseMigration { - return NewCadence1LinkValueMigration( + func(opts Options) (string, AccountBasedMigration) { + migration := NewCadence1LinkValueMigration( rwf, errorMessageHandler, programs, capabilityMapping, opts, ) + return migration.name, migration }, - func(opts Options) *CadenceBaseMigration { - return NewCadence1CapabilityValueMigration( + func(opts Options) (string, AccountBasedMigration) { + migration := NewCadence1CapabilityValueMigration( rwf, errorMessageHandler, programs, capabilityMapping, opts, ) + return migration.name, migration }, } { opts := opts // Only check storage health before the first migration opts.CheckStorageHealthBeforeMigration = opts.CheckStorageHealthBeforeMigration && index == 0 - accountBasedMigration := migrationConstructor(opts) + name, accountBasedMigration := migrationConstructor(opts) migs = append( migs, NamedMigration{ - Name: accountBasedMigration.name, + Name: name, Migrate: NewAccountBasedMigration( log, opts.NWorker, diff --git a/cmd/util/ledger/migrations/cadence_values_migration.go b/cmd/util/ledger/migrations/cadence_values_migration.go index 20d534cdbca..53eebf77a14 100644 --- a/cmd/util/ledger/migrations/cadence_values_migration.go +++ b/cmd/util/ledger/migrations/cadence_values_migration.go @@ -244,6 +244,7 @@ func NewCadence1ValueMigration( programs map[runtime.Location]*interpreter.Program, compositeTypeConverter statictypes.CompositeTypeConverterFunc, interfaceTypeConverter statictypes.InterfaceTypeConverterFunc, + storageDomainCapabilities *capcons.AccountsCapabilities, opts Options, ) *CadenceBaseMigration { @@ -285,6 +286,9 @@ func NewCadence1ValueMigration( // and the mutating iterator of the inlined version of atree type_keys.NewTypeKeyMigration(), string_normalization.NewStringNormalizingMigration(), + &capcons.StorageCapMigration{ + StorageDomainCapabilities: storageDomainCapabilities, + }, } }, errorMessageHandler: errorMessageHandler, @@ -396,22 +400,10 @@ func NewCadence1CapabilityValueMigration( accounts environment.Accounts, reporter *cadenceValueMigrationReporter, ) []migrations.ValueMigration { - - idGenerator := environment.NewAccountLocalIDGenerator( - tracing.NewMockTracerSpan(), - util.NopMeter{}, - accounts, - ) - - handler := capabilityControllerHandler{ - idGenerator: idGenerator, - } - return []migrations.ValueMigration{ &capcons.CapabilityValueMigration{ CapabilityMapping: capabilityMapping, Reporter: reporter, - IssueHandler: handler, }, } }, @@ -808,3 +800,36 @@ func (e dictionaryKeyConflictEntry) MarshalJSON() ([]byte, error) { Path: e.AddressPath.Path.String(), }) } + +// storageCapconIssuedEntry + +type storageCapconIssuedEntry struct { + AccountAddress common.Address + Path interpreter.PathValue + BorrowType interpreter.StaticType + CapabilityID interpreter.UInt64Value +} + +var _ valueMigrationReportEntry = storageCapconIssuedEntry{} + +func (e storageCapconIssuedEntry) accountAddress() common.Address { + return e.AccountAddress +} + +var _ json.Marshaler = storageCapconIssuedEntry{} + +func (e storageCapconIssuedEntry) MarshalJSON() ([]byte, error) { + return json.Marshal(struct { + Kind string `json:"kind"` + AccountAddress string `json:"account_address"` + Path string `json:"path"` + BorrowType string `json:"borrow_type"` + CapabilityID string `json:"capability_id"` + }{ + Kind: "storage-capcon-issued", + AccountAddress: e.AccountAddress.HexWithPrefix(), + Path: e.Path.String(), + BorrowType: string(e.BorrowType.ID()), + CapabilityID: e.CapabilityID.String(), + }) +} diff --git a/cmd/util/ledger/migrations/cadence_values_migration_test.go b/cmd/util/ledger/migrations/cadence_values_migration_test.go index 896c592d3fd..4a9aba89541 100644 --- a/cmd/util/ledger/migrations/cadence_values_migration_test.go +++ b/cmd/util/ledger/migrations/cadence_values_migration_test.go @@ -2145,9 +2145,6 @@ func TestCapabilityMigration(t *testing.T) { const nWorker = 2 const chainID = flow.Emulator - chain := chainID.Chain() - - testAddress := common.Address(chain.ServiceAddress()) payloads, err := newBootstrapPayloads(chainID) require.NoError(t, err) @@ -2155,6 +2152,13 @@ func TestCapabilityMigration(t *testing.T) { registersByAccount, err := registers.NewByAccountFromPayloads(payloads) require.NoError(t, err) + addressA := common.Address(chainID.Chain().ServiceAddress()) + + // TODO: is there a way to read this address from bootstrapped payloads + // rather than hard-coding it here? + addressB, err := common.HexToAddress("0xe5a8b7f23e8b548f") + require.NoError(t, err) + runtime, err := NewInterpreterMigrationRuntime( registersByAccount, chainID, @@ -2167,7 +2171,7 @@ func TestCapabilityMigration(t *testing.T) { storageDomain := common.PathDomainStorage.Identifier() storageMap := storage.GetStorageMap( - testAddress, + addressA, storageDomain, true, ) @@ -2181,7 +2185,10 @@ func TestCapabilityMigration(t *testing.T) { capabilityValue := &interpreter.PathCapabilityValue{ BorrowType: borrowType, Path: interpreter.NewUnmeteredPathValue(common.PathDomainStorage, "foo"), - Address: interpreter.AddressValue(testAddress), + + // Important: Capability must be for a different address, + // compared to where the capability is stored. + Address: interpreter.AddressValue(addressB), } storageMap.WriteValue( @@ -2200,7 +2207,7 @@ func TestCapabilityMigration(t *testing.T) { // Merge the changes into the registers expectedAddresses := map[flow.Address]struct{}{ - flow.Address(testAddress): {}, + flow.Address(addressA): {}, } err = registers.ApplyChanges( @@ -2246,23 +2253,54 @@ func TestCapabilityMigration(t *testing.T) { require.NotNil(t, reporter) require.Len(t, reporter.entries, 2) - require.Equal(t, reporter.entries, []any{ - capabilityMigrationEntry{ - AccountAddress: testAddress, - AddressPath: interpreter.AddressPath{ - Address: testAddress, - Path: interpreter.NewUnmeteredPathValue(common.PathDomainStorage, "foo"), + require.Equal( + t, + []any{ + capabilityMigrationEntry{ + AccountAddress: addressA, + AddressPath: interpreter.AddressPath{ + Address: addressB, + Path: interpreter.NewUnmeteredPathValue(common.PathDomainStorage, "foo"), + }, + BorrowType: borrowType, + CapabilityID: 3, }, - BorrowType: borrowType, - CapabilityID: 6, - }, - cadenceValueMigrationEntry{ - StorageKey: interpreter.StorageKey{ - Key: storageDomain, - Address: testAddress, + cadenceValueMigrationEntry{ + StorageKey: interpreter.StorageKey{ + Key: storageDomain, + Address: addressA, + }, + StorageMapKey: storageMapKey, + Migration: "CapabilityValueMigration", }, - StorageMapKey: storageMapKey, - Migration: "CapabilityValueMigration", }, - }) + reporter.entries, + ) + + issueStorageCapConReporter := rwf.reportWriters[issueStorageCapConMigrationReporterName] + require.NotNil(t, issueStorageCapConReporter) + require.Len(t, issueStorageCapConReporter.entries, 1) + + entry := issueStorageCapConReporter.entries[0] + + require.IsType(t, storageCapconIssuedEntry{}, entry) + storageCapconIssued := entry.(storageCapconIssuedEntry) + + actual, err := storageCapconIssued.MarshalJSON() + require.NoError(t, err) + + require.JSONEq(t, + //language=JSON + fmt.Sprintf( + `{ + "kind": "storage-capcon-issued", + "account_address": "%s", + "path": "/storage/foo", + "borrow_type": "&AnyStruct", + "capability_id": "3" + }`, + addressB.HexWithPrefix(), + ), + string(actual), + ) } diff --git a/cmd/util/ledger/util/registers/registers.go b/cmd/util/ledger/util/registers/registers.go index 6590cafbb3f..51ab7413726 100644 --- a/cmd/util/ledger/util/registers/registers.go +++ b/cmd/util/ledger/util/registers/registers.go @@ -196,14 +196,14 @@ var _ Registers = &AccountRegisters{} func (a *AccountRegisters) Get(owner string, key string) ([]byte, error) { if owner != a.owner { - return nil, fmt.Errorf("owner mismatch: expected %s, got %s", a.owner, owner) + return nil, fmt.Errorf("owner mismatch: expected %x, got %x", a.owner, owner) } return a.registers[key], nil } func (a *AccountRegisters) Set(owner string, key string, value []byte) error { if owner != a.owner { - return fmt.Errorf("owner mismatch: expected %s, got %s", a.owner, owner) + return fmt.Errorf("owner mismatch: expected %x, got %x", a.owner, owner) } a.uncheckedSet(key, value) return nil diff --git a/go.mod b/go.mod index 77af77773ae..f27670305ef 100644 --- a/go.mod +++ b/go.mod @@ -48,12 +48,12 @@ require ( github.com/multiformats/go-multiaddr-dns v0.3.1 github.com/multiformats/go-multihash v0.2.3 github.com/onflow/atree v0.8.0-rc.5 - github.com/onflow/cadence v1.0.0-preview.42 + github.com/onflow/cadence v1.0.0-preview.43 github.com/onflow/crypto v0.25.1 github.com/onflow/flow v0.3.4 github.com/onflow/flow-core-contracts/lib/go/contracts v1.3.1 github.com/onflow/flow-core-contracts/lib/go/templates v1.3.1 - github.com/onflow/flow-go-sdk v1.0.0-preview.45 + github.com/onflow/flow-go-sdk v1.0.0-preview.46 github.com/onflow/flow/protobuf/go/flow v0.4.5 github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 github.com/pierrec/lz4 v2.6.1+incompatible diff --git a/go.sum b/go.sum index 1ec823ee51f..c623d5db725 100644 --- a/go.sum +++ b/go.sum @@ -2167,8 +2167,8 @@ github.com/onflow/atree v0.8.0-rc.5/go.mod h1:yccR+LR7xc1Jdic0mrjocbHvUD7lnVvg8/ github.com/onflow/boxo v0.0.0-20240201202436-f2477b92f483 h1:LpiQhTAfM9CAmNVEs0n//cBBgCg+vJSiIxTHYUklZ84= github.com/onflow/boxo v0.0.0-20240201202436-f2477b92f483/go.mod h1:pIZgTWdm3k3pLF9Uq6MB8JEcW07UDwNJjlXW1HELW80= github.com/onflow/cadence v1.0.0-M3/go.mod h1:odXGZZ/wGNA5mwT8bC9v8u8EXACHllB2ABSZK65TGL8= -github.com/onflow/cadence v1.0.0-preview.42 h1:oJYGxKn/oMiJnhwbuviSQRJFAFiNKcEt6YBqNX61Bu4= -github.com/onflow/cadence v1.0.0-preview.42/go.mod h1:BCoenp1TYp+SmG7FGWStjehvvzcvNQ3xvpK5rkthq3Y= +github.com/onflow/cadence v1.0.0-preview.43 h1:Bnc+uNYMeE3Mj8wTH5vpT+d9wo9toYmwsucZhYbZtGE= +github.com/onflow/cadence v1.0.0-preview.43/go.mod h1:BCoenp1TYp+SmG7FGWStjehvvzcvNQ3xvpK5rkthq3Y= github.com/onflow/crypto v0.25.0/go.mod h1:C8FbaX0x8y+FxWjbkHy0Q4EASCDR9bSPWZqlpCLYyVI= github.com/onflow/crypto v0.25.1 h1:0txy2PKPMM873JbpxQNbJmuOJtD56bfs48RQfm0ts5A= github.com/onflow/crypto v0.25.1/go.mod h1:C8FbaX0x8y+FxWjbkHy0Q4EASCDR9bSPWZqlpCLYyVI= @@ -2183,8 +2183,8 @@ github.com/onflow/flow-ft/lib/go/contracts v1.0.0/go.mod h1:PwsL8fC81cjnUnTfmyL/ github.com/onflow/flow-ft/lib/go/templates v1.0.0 h1:6cMS/lUJJ17HjKBfMO/eh0GGvnpElPgBXx7h5aoWJhs= github.com/onflow/flow-ft/lib/go/templates v1.0.0/go.mod h1:uQ8XFqmMK2jxyBSVrmyuwdWjTEb+6zGjRYotfDJ5pAE= github.com/onflow/flow-go-sdk v1.0.0-M1/go.mod h1:TDW0MNuCs4SvqYRUzkbRnRmHQL1h4X8wURsCw9P9beo= -github.com/onflow/flow-go-sdk v1.0.0-preview.45 h1:cbxKT2Z1umA4Vib0t28xHiFrygZyyjBqIcYGaeE9dzg= -github.com/onflow/flow-go-sdk v1.0.0-preview.45/go.mod h1:26E0SDbNHkxtBnxOatQi3tpAh8tehsV8gt/8IH2nyww= +github.com/onflow/flow-go-sdk v1.0.0-preview.46 h1:bJRrM1t1xAT/ckvHT3AOmg9W9mljKUIfurSzIiNDNkY= +github.com/onflow/flow-go-sdk v1.0.0-preview.46/go.mod h1:giVRWZHuXcKbJCB666/cL67l/Z7d3SuH+N/N32lnFDo= github.com/onflow/flow-nft/lib/go/contracts v1.2.1 h1:woAAS5z651sDpi7ihAHll8NvRS9uFXIXkL6xR+bKFZY= github.com/onflow/flow-nft/lib/go/contracts v1.2.1/go.mod h1:2gpbza+uzs1k7x31hkpBPlggIRkI53Suo0n2AyA2HcE= github.com/onflow/flow-nft/lib/go/templates v1.2.0 h1:JSQyh9rg0RC+D1930BiRXN8lrtMs+ubVMK6aQPon6Yc= diff --git a/insecure/go.mod b/insecure/go.mod index 4ef70de51ea..59715ff84d1 100644 --- a/insecure/go.mod +++ b/insecure/go.mod @@ -202,12 +202,12 @@ require ( github.com/multiformats/go-varint v0.0.7 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/onflow/atree v0.8.0-rc.5 // indirect - github.com/onflow/cadence v1.0.0-preview.42 // indirect + github.com/onflow/cadence v1.0.0-preview.43 // indirect github.com/onflow/flow-core-contracts/lib/go/contracts v1.3.1 // indirect github.com/onflow/flow-core-contracts/lib/go/templates v1.3.1 // indirect github.com/onflow/flow-ft/lib/go/contracts v1.0.0 // indirect github.com/onflow/flow-ft/lib/go/templates v1.0.0 // indirect - github.com/onflow/flow-go-sdk v1.0.0-preview.45 // indirect + github.com/onflow/flow-go-sdk v1.0.0-preview.46 // indirect github.com/onflow/flow-nft/lib/go/contracts v1.2.1 // indirect github.com/onflow/flow-nft/lib/go/templates v1.2.0 // indirect github.com/onflow/flow/protobuf/go/flow v0.4.5 // indirect diff --git a/insecure/go.sum b/insecure/go.sum index be84a925211..8d8524f7468 100644 --- a/insecure/go.sum +++ b/insecure/go.sum @@ -2157,8 +2157,8 @@ github.com/onflow/atree v0.6.1-0.20230711151834-86040b30171f/go.mod h1:xvP61FoOs github.com/onflow/atree v0.8.0-rc.5 h1:1sU+c6UfDzq/EjM8nTw4EI8GvEMarcxkWkJKy6piFSY= github.com/onflow/atree v0.8.0-rc.5/go.mod h1:yccR+LR7xc1Jdic0mrjocbHvUD7lnVvg8/Ct1AA5zBo= github.com/onflow/cadence v1.0.0-M3/go.mod h1:odXGZZ/wGNA5mwT8bC9v8u8EXACHllB2ABSZK65TGL8= -github.com/onflow/cadence v1.0.0-preview.42 h1:oJYGxKn/oMiJnhwbuviSQRJFAFiNKcEt6YBqNX61Bu4= -github.com/onflow/cadence v1.0.0-preview.42/go.mod h1:BCoenp1TYp+SmG7FGWStjehvvzcvNQ3xvpK5rkthq3Y= +github.com/onflow/cadence v1.0.0-preview.43 h1:Bnc+uNYMeE3Mj8wTH5vpT+d9wo9toYmwsucZhYbZtGE= +github.com/onflow/cadence v1.0.0-preview.43/go.mod h1:BCoenp1TYp+SmG7FGWStjehvvzcvNQ3xvpK5rkthq3Y= github.com/onflow/crypto v0.25.0/go.mod h1:C8FbaX0x8y+FxWjbkHy0Q4EASCDR9bSPWZqlpCLYyVI= github.com/onflow/crypto v0.25.1 h1:0txy2PKPMM873JbpxQNbJmuOJtD56bfs48RQfm0ts5A= github.com/onflow/crypto v0.25.1/go.mod h1:C8FbaX0x8y+FxWjbkHy0Q4EASCDR9bSPWZqlpCLYyVI= @@ -2171,8 +2171,8 @@ github.com/onflow/flow-ft/lib/go/contracts v1.0.0/go.mod h1:PwsL8fC81cjnUnTfmyL/ github.com/onflow/flow-ft/lib/go/templates v1.0.0 h1:6cMS/lUJJ17HjKBfMO/eh0GGvnpElPgBXx7h5aoWJhs= github.com/onflow/flow-ft/lib/go/templates v1.0.0/go.mod h1:uQ8XFqmMK2jxyBSVrmyuwdWjTEb+6zGjRYotfDJ5pAE= github.com/onflow/flow-go-sdk v1.0.0-M1/go.mod h1:TDW0MNuCs4SvqYRUzkbRnRmHQL1h4X8wURsCw9P9beo= -github.com/onflow/flow-go-sdk v1.0.0-preview.45 h1:cbxKT2Z1umA4Vib0t28xHiFrygZyyjBqIcYGaeE9dzg= -github.com/onflow/flow-go-sdk v1.0.0-preview.45/go.mod h1:26E0SDbNHkxtBnxOatQi3tpAh8tehsV8gt/8IH2nyww= +github.com/onflow/flow-go-sdk v1.0.0-preview.46 h1:bJRrM1t1xAT/ckvHT3AOmg9W9mljKUIfurSzIiNDNkY= +github.com/onflow/flow-go-sdk v1.0.0-preview.46/go.mod h1:giVRWZHuXcKbJCB666/cL67l/Z7d3SuH+N/N32lnFDo= github.com/onflow/flow-nft/lib/go/contracts v1.2.1 h1:woAAS5z651sDpi7ihAHll8NvRS9uFXIXkL6xR+bKFZY= github.com/onflow/flow-nft/lib/go/contracts v1.2.1/go.mod h1:2gpbza+uzs1k7x31hkpBPlggIRkI53Suo0n2AyA2HcE= github.com/onflow/flow-nft/lib/go/templates v1.2.0 h1:JSQyh9rg0RC+D1930BiRXN8lrtMs+ubVMK6aQPon6Yc= diff --git a/integration/go.mod b/integration/go.mod index c27de2bd954..28b396fa94a 100644 --- a/integration/go.mod +++ b/integration/go.mod @@ -20,13 +20,13 @@ require ( github.com/ipfs/go-ds-badger2 v0.1.3 github.com/ipfs/go-ds-pebble v0.3.1 github.com/libp2p/go-libp2p v0.32.2 - github.com/onflow/cadence v1.0.0-preview.42 + github.com/onflow/cadence v1.0.0-preview.43 github.com/onflow/crypto v0.25.1 github.com/onflow/flow-core-contracts/lib/go/contracts v1.3.1 github.com/onflow/flow-core-contracts/lib/go/templates v1.3.1 github.com/onflow/flow-emulator v1.0.0-preview.36.0.20240729195722-d4eb1c30eb9f github.com/onflow/flow-go v0.36.8-0.20240729193633-433a32eeb0cd - github.com/onflow/flow-go-sdk v1.0.0-preview.45 + github.com/onflow/flow-go-sdk v1.0.0-preview.46 github.com/onflow/flow-go/insecure v0.0.0-00010101000000-000000000000 github.com/onflow/flow/protobuf/go/flow v0.4.5 github.com/onflow/go-ethereum v1.14.7 diff --git a/integration/go.sum b/integration/go.sum index e73a0221eb5..fe04f457ff0 100644 --- a/integration/go.sum +++ b/integration/go.sum @@ -2141,8 +2141,8 @@ github.com/onflow/atree v0.6.1-0.20230711151834-86040b30171f/go.mod h1:xvP61FoOs github.com/onflow/atree v0.8.0-rc.5 h1:1sU+c6UfDzq/EjM8nTw4EI8GvEMarcxkWkJKy6piFSY= github.com/onflow/atree v0.8.0-rc.5/go.mod h1:yccR+LR7xc1Jdic0mrjocbHvUD7lnVvg8/Ct1AA5zBo= github.com/onflow/cadence v1.0.0-M3/go.mod h1:odXGZZ/wGNA5mwT8bC9v8u8EXACHllB2ABSZK65TGL8= -github.com/onflow/cadence v1.0.0-preview.42 h1:oJYGxKn/oMiJnhwbuviSQRJFAFiNKcEt6YBqNX61Bu4= -github.com/onflow/cadence v1.0.0-preview.42/go.mod h1:BCoenp1TYp+SmG7FGWStjehvvzcvNQ3xvpK5rkthq3Y= +github.com/onflow/cadence v1.0.0-preview.43 h1:Bnc+uNYMeE3Mj8wTH5vpT+d9wo9toYmwsucZhYbZtGE= +github.com/onflow/cadence v1.0.0-preview.43/go.mod h1:BCoenp1TYp+SmG7FGWStjehvvzcvNQ3xvpK5rkthq3Y= github.com/onflow/crypto v0.25.0/go.mod h1:C8FbaX0x8y+FxWjbkHy0Q4EASCDR9bSPWZqlpCLYyVI= github.com/onflow/crypto v0.25.1 h1:0txy2PKPMM873JbpxQNbJmuOJtD56bfs48RQfm0ts5A= github.com/onflow/crypto v0.25.1/go.mod h1:C8FbaX0x8y+FxWjbkHy0Q4EASCDR9bSPWZqlpCLYyVI= @@ -2157,8 +2157,8 @@ github.com/onflow/flow-ft/lib/go/contracts v1.0.0/go.mod h1:PwsL8fC81cjnUnTfmyL/ github.com/onflow/flow-ft/lib/go/templates v1.0.0 h1:6cMS/lUJJ17HjKBfMO/eh0GGvnpElPgBXx7h5aoWJhs= github.com/onflow/flow-ft/lib/go/templates v1.0.0/go.mod h1:uQ8XFqmMK2jxyBSVrmyuwdWjTEb+6zGjRYotfDJ5pAE= github.com/onflow/flow-go-sdk v1.0.0-M1/go.mod h1:TDW0MNuCs4SvqYRUzkbRnRmHQL1h4X8wURsCw9P9beo= -github.com/onflow/flow-go-sdk v1.0.0-preview.45 h1:cbxKT2Z1umA4Vib0t28xHiFrygZyyjBqIcYGaeE9dzg= -github.com/onflow/flow-go-sdk v1.0.0-preview.45/go.mod h1:26E0SDbNHkxtBnxOatQi3tpAh8tehsV8gt/8IH2nyww= +github.com/onflow/flow-go-sdk v1.0.0-preview.46 h1:bJRrM1t1xAT/ckvHT3AOmg9W9mljKUIfurSzIiNDNkY= +github.com/onflow/flow-go-sdk v1.0.0-preview.46/go.mod h1:giVRWZHuXcKbJCB666/cL67l/Z7d3SuH+N/N32lnFDo= github.com/onflow/flow-nft/lib/go/contracts v1.2.1 h1:woAAS5z651sDpi7ihAHll8NvRS9uFXIXkL6xR+bKFZY= github.com/onflow/flow-nft/lib/go/contracts v1.2.1/go.mod h1:2gpbza+uzs1k7x31hkpBPlggIRkI53Suo0n2AyA2HcE= github.com/onflow/flow-nft/lib/go/templates v1.2.0 h1:JSQyh9rg0RC+D1930BiRXN8lrtMs+ubVMK6aQPon6Yc=