Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
4937571
[Access] Add contracts extended index and endpoints
peterargue Feb 26, 2026
2aead97
Merge branch 'peter/schedule-tx-endpoints-v2' into peter/contracts-en…
peterargue Feb 26, 2026
3520e19
Merge branch 'peter/schedule-tx-endpoints-v2' into peter/contracts-en…
peterargue Feb 26, 2026
c1f8f25
Merge branch 'peter/schedule-tx-endpoints-v2' into peter/contracts-en…
peterargue Feb 26, 2026
6b5cf68
Merge branch 'peter/schedule-tx-endpoints-v2' into peter/contracts-en…
peterargue Feb 26, 2026
6e35dc4
add metrics and improve contract lookups
peterargue Feb 26, 2026
4fed433
update to flow version with contract spect, improve testing
peterargue Feb 26, 2026
644da08
add experimental links, improvements to rest api
peterargue Feb 27, 2026
5fe580c
add expand options
peterargue Feb 27, 2026
24f2e87
generate mocks
peterargue Feb 27, 2026
4b1d7b6
Merge branch 'peter/schedule-tx-endpoints-v2' into peter/contracts-en…
peterargue Feb 27, 2026
7367872
remove secondary table
peterargue Feb 27, 2026
5b99a4d
Merge branch 'peter/schedule-tx-endpoints-v2' into peter/contracts-en…
peterargue Feb 27, 2026
7bf6e6a
Merge branch 'peter/schedule-tx-endpoints-v2' into peter/contracts-en…
peterargue Feb 27, 2026
d1eac7b
cleanups and expand testing
peterargue Feb 28, 2026
0346a76
Merge branch 'peter/schedule-tx-endpoints-v2' into peter/contracts-en…
peterargue Feb 28, 2026
27f642e
fix accounts/contracts routes
peterargue Feb 28, 2026
ca3721d
add progress logger
peterargue Feb 28, 2026
aca0a52
avoid an extra check for exists
peterargue Feb 28, 2026
5c8c7f4
update all uses of mapReadError to use non member function
peterargue Feb 28, 2026
a9564e9
generate mocks
peterargue Feb 28, 2026
76377fc
fix account contracts url
peterargue Feb 28, 2026
c5d0b37
add registerdb scan instead of iterating accounts
peterargue Feb 28, 2026
6f560e9
fix registers db key parsing
peterargue Feb 28, 2026
9c7240b
improve loading
peterargue Mar 1, 2026
8c9b156
fix address iterator in storage
peterargue Mar 1, 2026
a317f66
skip deleted contracts
peterargue Mar 1, 2026
296b6eb
fix scheduled tx metric
peterargue Mar 1, 2026
e8e51e9
add contracts test
peterargue Mar 1, 2026
b454d2e
fix deleted contract handling, refactor storage format
peterargue Mar 1, 2026
7ef7670
cleanup and consolidate contracts indexer tests
peterargue Mar 1, 2026
6b92e83
cleanup and expand backend tests
peterargue Mar 1, 2026
2a7b185
improve contracts storage tests
peterargue Mar 1, 2026
25a6332
add contract model tests
peterargue Mar 1, 2026
d51a86e
make contract code expandable
peterargue Mar 3, 2026
b4c1dbf
Merge branch 'peter/schedule-tx-endpoints-v2' into peter/contracts-en…
peterargue Mar 3, 2026
af41c20
add not found godocs back
peterargue Mar 3, 2026
54a51b2
Merge branch 'peter/schedule-tx-endpoints-v2' into peter/contracts-en…
peterargue Mar 4, 2026
2efa37d
add support for multiple flow fees receivers
peterargue Mar 5, 2026
38171c5
Merge remote-tracking branch 'origin/master' into peter/contracts-end…
peterargue Mar 10, 2026
60dddd1
generate mocks
peterargue Mar 10, 2026
a6e736f
add comment with tx that added the extra fees accounts
peterargue Mar 10, 2026
60585a7
fix lint and unittest failures
peterargue Mar 10, 2026
5141a80
add validation for unexpected filter arguments
peterargue Mar 10, 2026
3def3ec
rename struct
peterargue Mar 10, 2026
2126c27
add key prefix check to iterator, add testing
peterargue Mar 10, 2026
78a68c6
Merge branch 'master' into peter/contracts-endpoints-v2
peterargue Mar 10, 2026
a19e5b7
fix issues from ci
peterargue Mar 10, 2026
5a92465
Refactor extended indexers to implement IndexProcessor
peterargue Mar 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions access/backends/extended/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -111,4 +111,64 @@ type API interface {
expandOptions ScheduledTransactionExpandOptions,
encodingVersion entities.EventEncodingVersion,
) (*accessmodel.ScheduledTransactionsPage, error)

// GetContract returns the most recent deployment of the given contract.
//
// Expected error returns during normal operations:
// - [codes.NotFound]: if no contract with the given identifier exists
// - [codes.FailedPrecondition]: if the index has not been initialized
GetContract(
ctx context.Context,
id string,
filter ContractDeploymentFilter,
expandOptions ContractDeploymentExpandOptions,
encodingVersion entities.EventEncodingVersion,
) (*accessmodel.ContractDeployment, error)

// GetContractDeployments returns a paginated list of all deployments of the given contract,
// most recent first.
//
// Expected error returns during normal operations:
// - [codes.NotFound]: if no contract with the given identifier exists
// - [codes.FailedPrecondition]: if the index has not been initialized
// - [codes.InvalidArgument]: if query parameters are invalid
GetContractDeployments(
ctx context.Context,
id string,
limit uint32,
cursor *accessmodel.ContractDeploymentsCursor,
filter ContractDeploymentFilter,
expandOptions ContractDeploymentExpandOptions,
encodingVersion entities.EventEncodingVersion,
) (*accessmodel.ContractDeploymentPage, error)

// GetContracts returns a paginated list of contracts at their latest deployment.
//
// Expected error returns during normal operations:
// - [codes.FailedPrecondition]: if the index has not been initialized
// - [codes.InvalidArgument]: if query parameters are invalid
GetContracts(
ctx context.Context,
limit uint32,
cursor *accessmodel.ContractDeploymentsCursor,
filter ContractDeploymentFilter,
expandOptions ContractDeploymentExpandOptions,
encodingVersion entities.EventEncodingVersion,
) (*accessmodel.ContractDeploymentPage, error)

// GetContractsByAddress returns a paginated list of contracts at their latest deployment for
// the given address.
//
// Expected error returns during normal operations:
// - [codes.FailedPrecondition]: if the index has not been initialized
// - [codes.InvalidArgument]: if query parameters are invalid
GetContractsByAddress(
ctx context.Context,
address flow.Address,
limit uint32,
cursor *accessmodel.ContractDeploymentsCursor,
filter ContractDeploymentFilter,
expandOptions ContractDeploymentExpandOptions,
encodingVersion entities.EventEncodingVersion,
) (*accessmodel.ContractDeploymentPage, error)
}
5 changes: 4 additions & 1 deletion access/backends/extended/backend.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ type Backend struct {
*AccountTransactionsBackend
*AccountTransfersBackend
*ScheduledTransactionsBackend
*ContractsBackend

log zerolog.Logger
}
Expand All @@ -64,6 +65,7 @@ func New(
transactions storage.TransactionsReader,
scheduledTransactions storage.ScheduledTransactionsReader,
scheduledTxIndex storage.ScheduledTransactionsIndexReader,
contractsIndex storage.ContractDeploymentsIndexReader,
txStatusDeriver *txstatus.TxStatusDeriver,
scriptExecutor execution.ScriptExecutor,
) (*Backend, error) {
Expand Down Expand Up @@ -102,7 +104,8 @@ func New(
log: log,
AccountTransactionsBackend: NewAccountTransactionsBackend(log, base, store, chain),
AccountTransfersBackend: NewAccountTransfersBackend(log, base, ftStore, nftStore, chain),
ScheduledTransactionsBackend: NewScheduledTransactionsBackend(log, base, chainID, scheduledTxIndex, scheduledTransactions, state, scriptExecutor),
ScheduledTransactionsBackend: NewScheduledTransactionsBackend(log, base, chainID, scheduledTxIndex, contractsIndex, scheduledTransactions, state, scriptExecutor),
ContractsBackend: NewContractsBackend(log, base, contractsIndex),
}, nil
}

Expand Down
2 changes: 0 additions & 2 deletions access/backends/extended/backend_account_transfers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,6 @@ func TestBackend_GetAccountFungibleTokenTransfers(t *testing.T) {
RecipientAddress: unittest.RandomAddressFixture(),
},
},
NextCursor: nil,
}

blockID := unittest.IdentifierFixture()
Expand Down Expand Up @@ -328,7 +327,6 @@ func TestBackend_GetAccountNonFungibleTokenTransfers(t *testing.T) {
RecipientAddress: unittest.RandomAddressFixture(),
},
},
NextCursor: nil,
}

blockID := unittest.IdentifierFixture()
Expand Down
Loading
Loading