Skip to content

Commit d2de6fa

Browse files
Merge main into release
2 parents dcb6905 + 7afa37f commit d2de6fa

16 files changed

+1214
-1941
lines changed

docs/README.md

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,26 @@ subscriber.pollOnce()
4141

4242
## Capabilities
4343

44-
- [Notification _and_ indexing](#notification-and-indexing)
45-
- [Low latency processing](#low-latency-processing)
46-
- [Extensive subscription filtering](#extensive-subscription-filtering)
47-
- [ARC-28 event subscription and reads](#arc-28-event-subscription-and-reads)
48-
- [First-class inner transaction support](#first-class-inner-transaction-support)
49-
- [State-proof support](#state-proof-support)
50-
- [Simple programming model](#simple-programming-model)
51-
- [Easy to deploy](#easy-to-deploy)
52-
- [Fast initial index](#fast-initial-index)
44+
- [Algorand transaction subscription / indexing](#algorand-transaction-subscription--indexing)
45+
- [Quick start](#quick-start)
46+
- [Capabilities](#capabilities)
47+
- [Notification _and_ indexing](#notification-and-indexing)
48+
- [Low latency processing](#low-latency-processing)
49+
- [Watermarking and resilience](#watermarking-and-resilience)
50+
- [Extensive subscription filtering](#extensive-subscription-filtering)
51+
- [ARC-28 event subscription and reads](#arc-28-event-subscription-and-reads)
52+
- [First-class inner transaction support](#first-class-inner-transaction-support)
53+
- [State-proof support](#state-proof-support)
54+
- [Simple programming model](#simple-programming-model)
55+
- [Easy to deploy](#easy-to-deploy)
56+
- [Fast initial index](#fast-initial-index)
57+
- [Entry points](#entry-points)
58+
- [Reference docs](#reference-docs)
59+
- [Emit ARC-28 events](#emit-arc-28-events)
60+
- [Algorand Python](#algorand-python)
61+
- [TealScript](#tealscript)
62+
- [PyTEAL](#pyteal)
63+
- [TEAL](#teal)
5364

5465
### Notification _and_ indexing
5566

@@ -73,7 +84,7 @@ The `syncBehaviour` parameter can also be set to `sync-oldest`, which is a more
7384

7485
### Low latency processing
7586

76-
You can control the polling semantics of the library when using the [`AlgorandSubscriber`](./subscriber.md) by either specifying the `frequencyInSeconds` parameter to control the duration between polls or you can use the `waitForBlockWhenAtTip` parameter to indicate the subscriber should [call algod to ask it to inform the subscriber when a new round is available](https://developer.algorand.org/docs/rest-apis/algod/#get-v2statuswait-for-block-afterround) so the subscriber can immediately process that round with a much lower-latency. When this mode is set, the subscriber intelligently uses this option only when it's caught up to the tip of the chain, but otherwise uses `frequencyInSeconds` while catching up to the tip of the chain.
87+
You can control the polling semantics of the library when using the [`AlgorandSubscriber`](./subscriber.md) by either specifying the `frequencyInSeconds` parameter to control the duration between polls or you can use the `waitForBlockWhenAtTip` parameter to indicate the subscriber should [call algod to ask it to inform the subscriber when a new round is available](https://dev.algorand.co/reference/rest-apis/algod/#waitforblock) so the subscriber can immediately process that round with a much lower-latency. When this mode is set, the subscriber intelligently uses this option only when it's caught up to the tip of the chain, but otherwise uses `frequencyInSeconds` while catching up to the tip of the chain.
7788

7889
e.g.
7990

@@ -294,11 +305,11 @@ The `intra-round-offset` field in a [subscribed transaction or inner transaction
294305
295306
### State-proof support
296307
297-
You can subscribe to [state proof](https://developer.algorand.org/docs/get-details/stateproofs/) transactions using this subscriber library. At the time of writing state proof transactions are not supported by algosdk v2 and custom handling has been added to ensure this valuable type of transaction can be subscribed to.
308+
You can subscribe to [state proof](https://dev.algorand.co/concepts/protocol/stateproofs) transactions using this subscriber library. At the time of writing state proof transactions are not supported by algosdk v2 and custom handling has been added to ensure this valuable type of transaction can be subscribed to.
298309
299310
The field level documentation of the [returned state proof transaction](subscriptions.md#subscribedtransaction) is comprehensively documented via [AlgoKit Utils](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L277).
300311
301-
By exposing this functionality, this library can be used to create a [light client](https://developer.algorand.org/docs/get-details/stateproofs/light_client/).
312+
By exposing this functionality, this library can be used to create a [light client](https://dev.algorand.co/concepts/protocol/stateproofs).
302313
303314
### Simple programming model
304315
@@ -334,7 +345,7 @@ The indexer catchup isn't magic - if the filter you are trying to catch up with
334345
335346
To understand how the indexer behaviour works to know if you are likely to generate a lot of transactions it's worth understanding the architecture of the indexer catchup; indexer catchup runs in two stages:
336347
337-
1. **Pre-filtering**: Any filters that can be translated to the [indexer search transactions endpoint](https://developer.algorand.org/docs/rest-apis/indexer/#get-v2transactions). This query is then run between the rounds that need to be synced and paginated in the max number of results (1000) at a time until all of the transactions are retrieved. This ensures we get round-based transactional consistency. This is the filter that can easily explode out though and take a long time when using indexer catchup. For avoidance of doubt, the following filters are the ones that are converted to a pre-filter:
348+
1. **Pre-filtering**: Any filters that can be translated to the [indexer search transactions endpoint](https://dev.algorand.co/reference/rest-apis/indexer#transaction). This query is then run between the rounds that need to be synced and paginated in the max number of results (1000) at a time until all of the transactions are retrieved. This ensures we get round-based transactional consistency. This is the filter that can easily explode out though and take a long time when using indexer catchup. For avoidance of doubt, the following filters are the ones that are converted to a pre-filter:
338349
- `sender` (single value)
339350
- `receiver` (single value)
340351
- `type` (single value)

docs/code/classes/types_subscription.SubscribedTransaction.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
The common model used to expose a transaction that is returned from a subscription.
88

9-
Substantively, based on the Indexer [`TransactionResult` model](https://developer.algorand.org/docs/rest-apis/indexer/#transaction) format with some modifications to:
9+
Substantively, based on the Indexer [`TransactionResult` model](https://dev.algorand.co/reference/rest-apis/indexer#transaction) format with some modifications to:
1010
* Add the `parentTransactionId` field so inner transactions have a reference to their parent
1111
* Override the type of `inner-txns` to be `SubscribedTransaction[]` so inner transactions (recursively) get these extra fields too
1212
* Add emitted ARC-28 events via `arc28Events`

docs/code/interfaces/types_subscription.TransactionSubscriptionResult.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ ___
7878

7979
Any transactions that matched the given filter within
8080
the synced round range. This substantively uses the [indexer transaction
81-
format](https://developer.algorand.org/docs/rest-apis/indexer/#transaction)
81+
format](https://dev.algorand.co/reference/rest-apis/indexer#transaction)
8282
to represent the data with some additional fields.
8383

8484
#### Defined in

docs/subscriptions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ export interface TransactionSubscriptionResult {
229229
newWatermark: bigint
230230
/** Any transactions that matched the given filter within
231231
* the synced round range. This substantively uses the [indexer transaction
232-
* format](https://developer.algorand.org/docs/rest-apis/indexer/#transaction)
232+
* format](hhttps://dev.algorand.co/reference/rest-apis/indexer#transaction)
233233
* to represent the data with some additional fields.
234234
*/
235235
subscribedTransactions: SubscribedTransaction[]

examples/xgov-voting/types/voting-app-client.ts

Lines changed: 181 additions & 639 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)