diff --git a/cmd/util/cmd/generate-authorization-fixes/cmd_test.go b/cmd/util/cmd/generate-authorization-fixes/cmd_test.go index 7a5f8f0f459..ed015ad986f 100644 --- a/cmd/util/cmd/generate-authorization-fixes/cmd_test.go +++ b/cmd/util/cmd/generate-authorization-fixes/cmd_test.go @@ -79,6 +79,11 @@ var _ reporters.ReportWriter = &testReportWriter{} func TestGenerateAuthorizationFixes(t *testing.T) { t.Parallel() + // This test no longer works because publishing authorized capabilities is no longer allowed. + // The migration and test are kept for historical reasons. + + t.Skip() + const chainID = flow.Emulator chain := chainID.Chain() diff --git a/cmd/util/ledger/migrations/fix_authorizations_migration_test.go b/cmd/util/ledger/migrations/fix_authorizations_migration_test.go index 37c2c06fb7f..4ce19cff745 100644 --- a/cmd/util/ledger/migrations/fix_authorizations_migration_test.go +++ b/cmd/util/ledger/migrations/fix_authorizations_migration_test.go @@ -9,7 +9,6 @@ import ( jsoncdc "github.com/onflow/cadence/encoding/json" "github.com/onflow/cadence/runtime/common" "github.com/onflow/cadence/runtime/interpreter" - "github.com/onflow/cadence/runtime/sema" "github.com/rs/zerolog" "github.com/stretchr/testify/require" @@ -17,23 +16,14 @@ import ( "github.com/onflow/flow-go/model/flow" ) -func newEntitlementSetAuthorizationFromTypeIDs( - typeIDs []common.TypeID, - setKind sema.EntitlementSetKind, -) interpreter.EntitlementSetAuthorization { - return interpreter.NewEntitlementSetAuthorization( - nil, - func() []common.TypeID { - return typeIDs - }, - len(typeIDs), - setKind, - ) -} - func TestFixAuthorizationsMigration(t *testing.T) { t.Parallel() + // This test no longer works because publishing authorized capabilities is no longer allowed. + // The migration and test are kept for historical reasons. + + t.Skip() + const chainID = flow.Emulator chain := chainID.Chain() diff --git a/fvm/environment/facade_env.go b/fvm/environment/facade_env.go index a9e558c5106..ba1f2d21189 100644 --- a/fvm/environment/facade_env.go +++ b/fvm/environment/facade_env.go @@ -6,6 +6,7 @@ import ( "github.com/onflow/cadence/runtime/ast" "github.com/onflow/cadence/runtime/common" "github.com/onflow/cadence/runtime/interpreter" + "github.com/onflow/cadence/runtime/sema" "github.com/onflow/flow-go/fvm/storage" "github.com/onflow/flow-go/fvm/storage/snapshot" @@ -343,3 +344,37 @@ func (env *facadeEnvironment) RecoverProgram(program *ast.Program, location comm location, ) } + +func (env *facadeEnvironment) ValidateAccountCapabilitiesGet( + _ *interpreter.Interpreter, + _ interpreter.LocationRange, + _ interpreter.AddressValue, + _ interpreter.PathValue, + wantedBorrowType *sema.ReferenceType, + _ *sema.ReferenceType, +) (bool, error) { + _, hasEntitlements := wantedBorrowType.Authorization.(sema.EntitlementSetAccess) + if hasEntitlements { + // TODO: maybe abort + //return false, interpreter.GetCapabilityError{ + // LocationRange: locationRange, + //} + return false, nil + } + return true, nil +} + +func (env *facadeEnvironment) ValidateAccountCapabilitiesPublish( + _ *interpreter.Interpreter, + _ interpreter.LocationRange, + _ interpreter.AddressValue, + _ interpreter.PathValue, + capabilityBorrowType *interpreter.ReferenceStaticType, +) (bool, error) { + _, isEntitledCapability := capabilityBorrowType.Authorization.(interpreter.EntitlementSetAuthorization) + if isEntitledCapability { + // TODO: maybe abort + return false, nil + } + return true, nil +} diff --git a/fvm/environment/mock/environment.go b/fvm/environment/mock/environment.go index 967095141bc..ab6fd164c30 100644 --- a/fvm/environment/mock/environment.go +++ b/fvm/environment/mock/environment.go @@ -1724,6 +1724,62 @@ func (_m *Environment) UpdateAccountContractCode(location common.AddressLocation return r0 } +// ValidateAccountCapabilitiesGet provides a mock function with given fields: inter, locationRange, address, path, wantedBorrowType, capabilityBorrowType +func (_m *Environment) ValidateAccountCapabilitiesGet(inter *interpreter.Interpreter, locationRange interpreter.LocationRange, address interpreter.AddressValue, path interpreter.PathValue, wantedBorrowType *sema.ReferenceType, capabilityBorrowType *sema.ReferenceType) (bool, error) { + ret := _m.Called(inter, locationRange, address, path, wantedBorrowType, capabilityBorrowType) + + if len(ret) == 0 { + panic("no return value specified for ValidateAccountCapabilitiesGet") + } + + var r0 bool + var r1 error + if rf, ok := ret.Get(0).(func(*interpreter.Interpreter, interpreter.LocationRange, interpreter.AddressValue, interpreter.PathValue, *sema.ReferenceType, *sema.ReferenceType) (bool, error)); ok { + return rf(inter, locationRange, address, path, wantedBorrowType, capabilityBorrowType) + } + if rf, ok := ret.Get(0).(func(*interpreter.Interpreter, interpreter.LocationRange, interpreter.AddressValue, interpreter.PathValue, *sema.ReferenceType, *sema.ReferenceType) bool); ok { + r0 = rf(inter, locationRange, address, path, wantedBorrowType, capabilityBorrowType) + } else { + r0 = ret.Get(0).(bool) + } + + if rf, ok := ret.Get(1).(func(*interpreter.Interpreter, interpreter.LocationRange, interpreter.AddressValue, interpreter.PathValue, *sema.ReferenceType, *sema.ReferenceType) error); ok { + r1 = rf(inter, locationRange, address, path, wantedBorrowType, capabilityBorrowType) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ValidateAccountCapabilitiesPublish provides a mock function with given fields: inter, locationRange, address, path, capabilityBorrowType +func (_m *Environment) ValidateAccountCapabilitiesPublish(inter *interpreter.Interpreter, locationRange interpreter.LocationRange, address interpreter.AddressValue, path interpreter.PathValue, capabilityBorrowType *interpreter.ReferenceStaticType) (bool, error) { + ret := _m.Called(inter, locationRange, address, path, capabilityBorrowType) + + if len(ret) == 0 { + panic("no return value specified for ValidateAccountCapabilitiesPublish") + } + + var r0 bool + var r1 error + if rf, ok := ret.Get(0).(func(*interpreter.Interpreter, interpreter.LocationRange, interpreter.AddressValue, interpreter.PathValue, *interpreter.ReferenceStaticType) (bool, error)); ok { + return rf(inter, locationRange, address, path, capabilityBorrowType) + } + if rf, ok := ret.Get(0).(func(*interpreter.Interpreter, interpreter.LocationRange, interpreter.AddressValue, interpreter.PathValue, *interpreter.ReferenceStaticType) bool); ok { + r0 = rf(inter, locationRange, address, path, capabilityBorrowType) + } else { + r0 = ret.Get(0).(bool) + } + + if rf, ok := ret.Get(1).(func(*interpreter.Interpreter, interpreter.LocationRange, interpreter.AddressValue, interpreter.PathValue, *interpreter.ReferenceStaticType) error); ok { + r1 = rf(inter, locationRange, address, path, capabilityBorrowType) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + // ValidatePublicKey provides a mock function with given fields: key func (_m *Environment) ValidatePublicKey(key *stdlib.PublicKey) error { ret := _m.Called(key) diff --git a/fvm/fvm_test.go b/fvm/fvm_test.go index b48fedebe22..7526f5b3837 100644 --- a/fvm/fvm_test.go +++ b/fvm/fvm_test.go @@ -1,6 +1,7 @@ package fvm_test import ( + "context" "crypto/rand" "encoding/hex" "fmt" @@ -19,6 +20,8 @@ import ( "github.com/onflow/cadence/runtime" "github.com/onflow/cadence/runtime/common" cadenceErrors "github.com/onflow/cadence/runtime/errors" + "github.com/onflow/cadence/runtime/interpreter" + "github.com/onflow/cadence/runtime/sema" "github.com/onflow/cadence/runtime/tests/utils" "github.com/onflow/crypto" "github.com/stretchr/testify/assert" @@ -39,6 +42,7 @@ import ( "github.com/onflow/flow-go/fvm/storage/snapshot/mock" "github.com/onflow/flow-go/fvm/storage/testutils" "github.com/onflow/flow-go/fvm/systemcontracts" + "github.com/onflow/flow-go/fvm/tracing" "github.com/onflow/flow-go/model/flow" "github.com/onflow/flow-go/utils/unittest" ) @@ -3086,3 +3090,142 @@ func TestEVM(t *testing.T) { }), ) } + +func TestAccountCapabilitiesGetEntitledRejection(t *testing.T) { + + // Note: This cannot be tested anymore using a transaction, + // because publish method also aborts when trying to publish an entitled capability. + // Therefore, test the functionality of the `ValidateAccountCapabilitiesGet` function. + + t.Run("entitled capability", func(t *testing.T) { + + env := environment.NewScriptEnv( + context.TODO(), + tracing.NewMockTracerSpan(), + environment.DefaultEnvironmentParams(), + nil, + ) + + valid, err := env.ValidateAccountCapabilitiesGet( + nil, + interpreter.EmptyLocationRange, + interpreter.AddressValue(common.ZeroAddress), + interpreter.NewUnmeteredPathValue(common.PathDomainPublic, "dummy_value"), + sema.NewReferenceType( + nil, + sema.NewEntitlementSetAccess( + []*sema.EntitlementType{ + sema.MutateType, + }, + sema.Conjunction, + ), + sema.IntType, + ), + nil, + ) + assert.NoError(t, err) + assert.False(t, valid) + }) + + t.Run("non-entitled capability", func(t *testing.T) { + + env := environment.NewScriptEnv( + context.TODO(), + tracing.NewMockTracerSpan(), + environment.DefaultEnvironmentParams(), + nil, + ) + + valid, err := env.ValidateAccountCapabilitiesGet( + nil, + interpreter.EmptyLocationRange, + interpreter.AddressValue(common.ZeroAddress), + interpreter.NewUnmeteredPathValue(common.PathDomainPublic, "dummy_value"), + sema.NewReferenceType( + nil, + sema.UnauthorizedAccess, + sema.IntType, + ), + nil, + ) + assert.NoError(t, err) + assert.True(t, valid) + }) +} + +func TestAccountCapabilitiesPublishEntitledRejection(t *testing.T) { + + t.Run("entitled capability", newVMTest(). + run(func( + t *testing.T, + vm fvm.VM, + chain flow.Chain, + ctx fvm.Context, + snapshotTree snapshot.SnapshotTree, + ) { + + serviceAddress := chain.ServiceAddress() + txBody := flow.NewTransactionBody(). + SetScript([]byte(` + transaction { + prepare(signer: auth(Capabilities, Storage) &Account) { + signer.storage.save(42, to: /storage/number) + let cap = signer.capabilities.storage.issue(/storage/number) + signer.capabilities.publish(cap, at: /public/number) + } + } + `)). + AddAuthorizer(serviceAddress). + SetProposalKey(serviceAddress, 0, 0). + SetPayer(serviceAddress) + + err := testutil.SignTransactionAsServiceAccount(txBody, 0, chain) + require.NoError(t, err) + + _, output, err := vm.Run( + ctx, + fvm.Transaction(txBody, 0), + snapshotTree) + + require.NoError(t, err) + require.ErrorAs(t, output.Err, &interpreter.EntitledCapabilityPublishingError{}) + }), + ) + + t.Run("non entitled capability", newVMTest(). + run(func( + t *testing.T, + vm fvm.VM, + chain flow.Chain, + ctx fvm.Context, + snapshotTree snapshot.SnapshotTree, + ) { + + serviceAddress := chain.ServiceAddress() + txBody := flow.NewTransactionBody(). + SetScript([]byte(` + transaction { + prepare(signer: auth(Capabilities, Storage) &Account) { + signer.storage.save(42, to: /storage/number) + let cap = signer.capabilities.storage.issue<&Int>(/storage/number) + signer.capabilities.publish(cap, at: /public/number) + } + } + `)). + AddAuthorizer(serviceAddress). + SetProposalKey(serviceAddress, 0, 0). + SetPayer(serviceAddress) + + err := testutil.SignTransactionAsServiceAccount(txBody, 0, chain) + require.NoError(t, err) + + _, output, err := vm.Run( + ctx, + fvm.Transaction(txBody, 0), + snapshotTree) + + require.NoError(t, err) + require.NoError(t, output.Err) + }), + ) +} diff --git a/go.mod b/go.mod index d5a140eda9a..ce21004255f 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.6 - github.com/onflow/cadence v1.0.0-preview.52 + github.com/onflow/cadence v1.0.0 github.com/onflow/crypto v0.25.2 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.55 + github.com/onflow/flow-go-sdk v1.0.0 github.com/onflow/flow/protobuf/go/flow v0.4.7 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 ac8e956948f..2f51ed1016e 100644 --- a/go.sum +++ b/go.sum @@ -2171,8 +2171,8 @@ github.com/onflow/atree v0.8.0-rc.6/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.52 h1:hZ92e6lL2+PQa3C1i5jJh0zZYFdW89+X1MS0Bkd6Ayo= -github.com/onflow/cadence v1.0.0-preview.52/go.mod h1:7wvvecnAZtYOspLOS3Lh+FuAmMeSrXhAWiycC3kQ1UU= +github.com/onflow/cadence v1.0.0 h1:bvT75F2LZJvDCBmmajAv7QLISK6Qp30FAKcSwqNNH+o= +github.com/onflow/cadence v1.0.0/go.mod h1:7wvvecnAZtYOspLOS3Lh+FuAmMeSrXhAWiycC3kQ1UU= github.com/onflow/crypto v0.25.0/go.mod h1:C8FbaX0x8y+FxWjbkHy0Q4EASCDR9bSPWZqlpCLYyVI= github.com/onflow/crypto v0.25.2 h1:GjHunqVt+vPcdqhxxhAXiMIF3YiLX7gTuTR5O+VG2ns= github.com/onflow/crypto v0.25.2/go.mod h1:fY7eLqUdMKV8EGOw301unP8h7PvLVy8/6gVR++/g0BY= @@ -2187,8 +2187,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.55 h1:tUM8K7GcWltM0YSzei/g2Gq4z3BwGFTdpq2QwvB6ubk= -github.com/onflow/flow-go-sdk v1.0.0-preview.55/go.mod h1:rBRNboXaTprn7M0MeO6/R1bxNpctbrx66I2FLp0V6fM= +github.com/onflow/flow-go-sdk v1.0.0 h1:Ha4fQm1MMKsyaqMkQLCN3rA/yaQKG6DGwiIfx06j40c= +github.com/onflow/flow-go-sdk v1.0.0/go.mod h1:iZkW2IWieVUZKK06mQCxpjJzPDgS0VtGpTaP/rKu6J4= 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 8493273c41d..060fa230a0f 100644 --- a/insecure/go.mod +++ b/insecure/go.mod @@ -203,12 +203,12 @@ require ( github.com/nxadm/tail v1.4.8 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/onflow/atree v0.8.0-rc.6 // indirect - github.com/onflow/cadence v1.0.0-preview.52 // indirect + github.com/onflow/cadence v1.0.0 // 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.55 // indirect + github.com/onflow/flow-go-sdk v1.0.0 // 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.7 // indirect diff --git a/insecure/go.sum b/insecure/go.sum index 1777ec88fd9..8b88066e0ed 100644 --- a/insecure/go.sum +++ b/insecure/go.sum @@ -2159,8 +2159,8 @@ github.com/onflow/atree v0.6.1-0.20230711151834-86040b30171f/go.mod h1:xvP61FoOs github.com/onflow/atree v0.8.0-rc.6 h1:GWgaylK24b5ta2Hq+TvyOF7X5tZLiLzMMn7lEt59fsA= github.com/onflow/atree v0.8.0-rc.6/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.52 h1:hZ92e6lL2+PQa3C1i5jJh0zZYFdW89+X1MS0Bkd6Ayo= -github.com/onflow/cadence v1.0.0-preview.52/go.mod h1:7wvvecnAZtYOspLOS3Lh+FuAmMeSrXhAWiycC3kQ1UU= +github.com/onflow/cadence v1.0.0 h1:bvT75F2LZJvDCBmmajAv7QLISK6Qp30FAKcSwqNNH+o= +github.com/onflow/cadence v1.0.0/go.mod h1:7wvvecnAZtYOspLOS3Lh+FuAmMeSrXhAWiycC3kQ1UU= github.com/onflow/crypto v0.25.0/go.mod h1:C8FbaX0x8y+FxWjbkHy0Q4EASCDR9bSPWZqlpCLYyVI= github.com/onflow/crypto v0.25.2 h1:GjHunqVt+vPcdqhxxhAXiMIF3YiLX7gTuTR5O+VG2ns= github.com/onflow/crypto v0.25.2/go.mod h1:fY7eLqUdMKV8EGOw301unP8h7PvLVy8/6gVR++/g0BY= @@ -2173,8 +2173,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.55 h1:tUM8K7GcWltM0YSzei/g2Gq4z3BwGFTdpq2QwvB6ubk= -github.com/onflow/flow-go-sdk v1.0.0-preview.55/go.mod h1:rBRNboXaTprn7M0MeO6/R1bxNpctbrx66I2FLp0V6fM= +github.com/onflow/flow-go-sdk v1.0.0 h1:Ha4fQm1MMKsyaqMkQLCN3rA/yaQKG6DGwiIfx06j40c= +github.com/onflow/flow-go-sdk v1.0.0/go.mod h1:iZkW2IWieVUZKK06mQCxpjJzPDgS0VtGpTaP/rKu6J4= 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 ef58e5c61f6..089b977f0eb 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-0.20240828032824-d745b9d3200b github.com/libp2p/go-libp2p v0.32.2 - github.com/onflow/cadence v1.0.0-preview.52 + github.com/onflow/cadence v1.0.0 github.com/onflow/crypto v0.25.2 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.41.0.20240829134601-0be55d6970b5 github.com/onflow/flow-go v0.37.7-0.20240826193109-e211841b59f5 - github.com/onflow/flow-go-sdk v1.0.0-preview.55 + github.com/onflow/flow-go-sdk v1.0.0 github.com/onflow/flow-go/insecure v0.0.0-00010101000000-000000000000 github.com/onflow/flow/protobuf/go/flow v0.4.7 github.com/onflow/go-ethereum v1.14.7 diff --git a/integration/go.sum b/integration/go.sum index 5b6f4c5ccf9..269a1180d3d 100644 --- a/integration/go.sum +++ b/integration/go.sum @@ -2144,8 +2144,8 @@ github.com/onflow/atree v0.6.1-0.20230711151834-86040b30171f/go.mod h1:xvP61FoOs github.com/onflow/atree v0.8.0-rc.6 h1:GWgaylK24b5ta2Hq+TvyOF7X5tZLiLzMMn7lEt59fsA= github.com/onflow/atree v0.8.0-rc.6/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.52 h1:hZ92e6lL2+PQa3C1i5jJh0zZYFdW89+X1MS0Bkd6Ayo= -github.com/onflow/cadence v1.0.0-preview.52/go.mod h1:7wvvecnAZtYOspLOS3Lh+FuAmMeSrXhAWiycC3kQ1UU= +github.com/onflow/cadence v1.0.0 h1:bvT75F2LZJvDCBmmajAv7QLISK6Qp30FAKcSwqNNH+o= +github.com/onflow/cadence v1.0.0/go.mod h1:7wvvecnAZtYOspLOS3Lh+FuAmMeSrXhAWiycC3kQ1UU= github.com/onflow/crypto v0.25.0/go.mod h1:C8FbaX0x8y+FxWjbkHy0Q4EASCDR9bSPWZqlpCLYyVI= github.com/onflow/crypto v0.25.2 h1:GjHunqVt+vPcdqhxxhAXiMIF3YiLX7gTuTR5O+VG2ns= github.com/onflow/crypto v0.25.2/go.mod h1:fY7eLqUdMKV8EGOw301unP8h7PvLVy8/6gVR++/g0BY= @@ -2160,8 +2160,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.55 h1:tUM8K7GcWltM0YSzei/g2Gq4z3BwGFTdpq2QwvB6ubk= -github.com/onflow/flow-go-sdk v1.0.0-preview.55/go.mod h1:rBRNboXaTprn7M0MeO6/R1bxNpctbrx66I2FLp0V6fM= +github.com/onflow/flow-go-sdk v1.0.0 h1:Ha4fQm1MMKsyaqMkQLCN3rA/yaQKG6DGwiIfx06j40c= +github.com/onflow/flow-go-sdk v1.0.0/go.mod h1:iZkW2IWieVUZKK06mQCxpjJzPDgS0VtGpTaP/rKu6J4= 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=