@subsquid/solana-stream 0.1.4 → 0.2.0-portal-api.889aff

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,15 @@
1
+ import { BlockHeader } from '@subsquid/solana-normalization';
2
+ import { Base58Bytes } from '@subsquid/solana-rpc-data';
3
+ import { RangeRequestList } from '@subsquid/util-internal-range';
4
+ import { PartialBlock } from '../data/partial';
5
+ import { DataRequest } from '../data/request';
6
+ import { PortalClient } from '@subsquid/portal-client';
7
+ export declare class SolanaPortal {
8
+ private client;
9
+ constructor(client: PortalClient);
10
+ getFinalizedHeight(): Promise<number>;
11
+ getBlockHash(height: number): Promise<Base58Bytes | undefined>;
12
+ getBlockHeader(height: number): Promise<BlockHeader>;
13
+ getBlockStream(requests: RangeRequestList<DataRequest>, stopOnHead?: boolean | undefined): AsyncIterable<PartialBlock[]>;
14
+ }
15
+ //# sourceMappingURL=portal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portal.d.ts","sourceRoot":"","sources":["../../src/archive/portal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,gCAAgC,CAAA;AAC1D,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAA;AAErD,OAAO,EAAsB,gBAAgB,EAAC,MAAM,+BAA+B,CAAA;AAGnF,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAA;AAE3C,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAA;AAEpD,qBAAa,YAAY;IACT,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,YAAY;IAExC,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI/B,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAgB9D,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAyBnD,cAAc,CACjB,QAAQ,EAAE,gBAAgB,CAAC,WAAW,CAAC,EACvC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,GACjC,aAAa,CAAC,YAAY,EAAE,CAAC;CAiEnC"}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SolanaPortal = void 0;
7
+ const util_internal_1 = require("@subsquid/util-internal");
8
+ const util_internal_range_1 = require("@subsquid/util-internal-range");
9
+ const util_internal_validation_1 = require("@subsquid/util-internal-validation");
10
+ const assert_1 = __importDefault(require("assert"));
11
+ const schema_1 = require("./schema");
12
+ class SolanaPortal {
13
+ constructor(client) {
14
+ this.client = client;
15
+ }
16
+ getFinalizedHeight() {
17
+ return this.client.getFinalizedHeight();
18
+ }
19
+ async getBlockHash(height) {
20
+ let blocks = await this.client.getFinalizedQuery({
21
+ type: 'solana',
22
+ fromBlock: height,
23
+ toBlock: height,
24
+ fields: {
25
+ block: {
26
+ hash: true,
27
+ },
28
+ },
29
+ includeAllBlocks: true,
30
+ });
31
+ (0, assert_1.default)(blocks.length == 1);
32
+ return blocks[0].header.hash;
33
+ }
34
+ async getBlockHeader(height) {
35
+ let blocks = await this.client.getFinalizedQuery({
36
+ type: 'solana',
37
+ fromBlock: height,
38
+ toBlock: height,
39
+ includeAllBlocks: true,
40
+ fields: {
41
+ block: {
42
+ hash: true,
43
+ number: true,
44
+ slot: true,
45
+ parentSlot: true,
46
+ parentHash: true,
47
+ timestamp: true,
48
+ },
49
+ },
50
+ });
51
+ (0, assert_1.default)(blocks.length == 1);
52
+ let { number, ...rest } = blocks[0].header;
53
+ return {
54
+ height: number,
55
+ ...rest,
56
+ };
57
+ }
58
+ async *getBlockStream(requests, stopOnHead) {
59
+ let archiveRequests = (0, util_internal_range_1.mapRangeRequestList)(requests, (req) => {
60
+ let { fields, includeAllBlocks, ...items } = req;
61
+ let archiveItems = {};
62
+ let key;
63
+ for (key in items) {
64
+ archiveItems[key] = items[key]?.map((it) => ({ ...it.where, ...it.include }));
65
+ }
66
+ return {
67
+ type: 'solana',
68
+ fields: {
69
+ block: { ...fields?.block, number: true, hash: true, parentHash: true },
70
+ transaction: { ...fields?.transaction, transactionIndex: true },
71
+ instruction: { ...fields?.instruction, transactionIndex: true, instructionAddress: true },
72
+ log: { ...fields?.log, instructionAddress: true, logIndex: true, transactionIndex: true },
73
+ balance: { ...fields?.balance, transactionIndex: true, account: true },
74
+ tokenBalance: { ...fields?.tokenBalance, transactionIndex: true, account: true },
75
+ reward: { ...fields?.reward, pubkey: true },
76
+ },
77
+ includeAllBlocks,
78
+ ...archiveItems,
79
+ };
80
+ });
81
+ for (let req of archiveRequests) {
82
+ let lastBlock = req.range.from - 1;
83
+ let endBlock = req.range.to || Infinity;
84
+ let query = {
85
+ fromBlock: lastBlock + 1,
86
+ toBlock: endBlock,
87
+ ...req.request,
88
+ };
89
+ for await (let { blocks: batch } of this.client.getFinalizedStream(query, { stopOnHead })) {
90
+ (0, assert_1.default)(batch.length > 0, 'boundary blocks are expected to be included');
91
+ lastBlock = (0, util_internal_1.last)(batch).header.number;
92
+ let blocks = (0, util_internal_validation_1.cast)((0, util_internal_validation_1.array)((0, schema_1.getDataSchema)((0, util_internal_1.assertNotNull)(req?.request.fields))), batch).map((b) => {
93
+ let { header: { number, ...hdr }, ...items } = b;
94
+ return {
95
+ header: { height: number, ...hdr },
96
+ transactions: items.transactions || [],
97
+ instructions: items.instructions || [],
98
+ logs: items.logs || [],
99
+ balances: items.balances || [],
100
+ tokenBalances: items.tokenBalances || [],
101
+ rewards: items.rewards || [],
102
+ };
103
+ });
104
+ yield blocks;
105
+ }
106
+ // stream ended before requested range,
107
+ // which means we reached the last available block
108
+ // should not happen if stopOnHead is set to false
109
+ if (lastBlock < endBlock) {
110
+ (0, assert_1.default)(stopOnHead, 'unexpected end of stream');
111
+ break;
112
+ }
113
+ }
114
+ }
115
+ }
116
+ exports.SolanaPortal = SolanaPortal;
117
+ //# sourceMappingURL=portal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portal.js","sourceRoot":"","sources":["../../src/archive/portal.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../src/archive/source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,gCAAgC,CAAA;AAC1D,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAA;AAErD,OAAO,EAAC,aAAa,EAAC,MAAM,wCAAwC,CAAA;AAEpE,OAAO,EAAoC,gBAAgB,EAAC,MAAM,+BAA+B,CAAA;AAGjG,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAA;AAI3C,qBAAa,aAAa;IACV,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAEzC,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI/B,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAW9D,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAuBnD,cAAc,CAAC,QAAQ,EAAE,gBAAgB,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,aAAa,CAAC,YAAY,EAAE,CAAC;CAkDlI"}
1
+ {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../src/archive/source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,gCAAgC,CAAA;AAC1D,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAA;AAErD,OAAO,EAAC,aAAa,EAAC,MAAM,wCAAwC,CAAA;AAEpE,OAAO,EAAoC,gBAAgB,EAAC,MAAM,+BAA+B,CAAA;AAGjG,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAA;AAI3C,qBAAa,aAAa;IACV,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAEzC,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI/B,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAgB9D,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAyBnD,cAAc,CAAC,QAAQ,EAAE,gBAAgB,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,aAAa,CAAC,YAAY,EAAE,CAAC;CAkDlI"}
@@ -22,6 +22,11 @@ class SolanaArchive {
22
22
  type: 'solana',
23
23
  fromBlock: height,
24
24
  toBlock: height,
25
+ fields: {
26
+ block: {
27
+ hash: true,
28
+ }
29
+ },
25
30
  includeAllBlocks: true
26
31
  });
27
32
  (0, assert_1.default)(blocks.length == 1);
@@ -35,6 +40,8 @@ class SolanaArchive {
35
40
  includeAllBlocks: true,
36
41
  fields: {
37
42
  block: {
43
+ hash: true,
44
+ number: true,
38
45
  slot: true,
39
46
  parentSlot: true,
40
47
  parentHash: true,
@@ -1 +1 @@
1
- {"version":3,"file":"source.js","sourceRoot":"","sources":["../../src/archive/source.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"source.js","sourceRoot":"","sources":["../../src/archive/source.ts"],"names":[],"mappings":"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"}
package/lib/source.d.ts CHANGED
@@ -3,6 +3,7 @@ import { FiniteRange, Range } from '@subsquid/util-internal-range';
3
3
  import { Block, FieldSelection } from './data/model';
4
4
  import { BalanceRequest, InstructionRequest, LogRequest, RewardRequest, TokenBalanceRequest, TransactionRequest } from './data/request';
5
5
  import { SolanaRpcClient } from './rpc/client';
6
+ import { PortalClientOptions } from '@subsquid/portal-client';
6
7
  export interface GatewaySettings {
7
8
  /**
8
9
  * Subsquid Network Gateway url
@@ -13,6 +14,13 @@ export interface GatewaySettings {
13
14
  */
14
15
  requestTimeout?: number;
15
16
  }
17
+ export interface PortalSettings extends Omit<PortalClientOptions, 'http'> {
18
+ /**
19
+ * Request timeout in ms
20
+ */
21
+ requestTimeout?: number;
22
+ retryAttempts?: number;
23
+ }
16
24
  export interface RpcSettings {
17
25
  /**
18
26
  * RPC client
@@ -64,6 +72,7 @@ export declare class DataSourceBuilder<F extends FieldSelection = {}> {
64
72
  * source.setGateway('https://v2.archive.subsquid.io/network/solana-mainnet')
65
73
  */
66
74
  setGateway(url: string | GatewaySettings): this;
75
+ setPortal(url: string | PortalSettings): this;
67
76
  /**
68
77
  * Set up RPC data ingestion
69
78
  */
@@ -1 +1 @@
1
- {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAA;AAIrD,OAAO,EAEH,WAAW,EAGX,KAAK,EAGR,MAAM,+BAA+B,CAAA;AAItC,OAAO,EAAC,KAAK,EAAe,cAAc,EAAC,MAAM,cAAc,CAAA;AAE/D,OAAO,EACH,cAAc,EAEd,kBAAkB,EAClB,UAAU,EACV,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EACrB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAA;AAI5C,MAAM,WAAW,eAAe;IAC5B;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;IACX;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;CAC1B;AAGD,MAAM,WAAW,WAAW;IACxB;;OAEG;IACH,MAAM,EAAE,eAAe,CAAA;IACvB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;;;;;;;;;;OAYG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAA;CACpC;AAGD,UAAU,UAAU;IAChB,KAAK,CAAC,EAAE,KAAK,CAAA;CAChB;AAGD,qBAAa,iBAAiB,CAAC,CAAC,SAAS,cAAc,GAAG,EAAE;IACxD,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,MAAM,CAAC,CAAgB;IAC/B,OAAO,CAAC,UAAU,CAAC,CAAO;IAC1B,OAAO,CAAC,OAAO,CAAC,CAAiB;IACjC,OAAO,CAAC,GAAG,CAAC,CAAa;IAEzB;;;;;;;;OAQG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAS/C;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI;IAKpC;;;;OAIG;IACH,aAAa,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI;IAKlC;;OAEG;IACH,SAAS,CAAC,CAAC,SAAS,cAAc,EAAE,MAAM,EAAE,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC;IAKpE,OAAO,CAAC,GAAG;IAOX;;;;;;OAMG;IACH,gBAAgB,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI;IAKrC,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,UAAU,GAAG,IAAI;IAQ9D,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,UAAU,GAAG,IAAI;IAQ9D,MAAM,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI;IAQ9C,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,UAAU,GAAG,IAAI;IAQtD,eAAe,CAAC,OAAO,EAAE,mBAAmB,GAAG,UAAU,GAAG,IAAI;IAQhE,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,UAAU,GAAG,IAAI;IAQpD,OAAO,CAAC,WAAW;IAuCnB,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CAOhC;AAGD,MAAM,WAAW,UAAU,CAAC,KAAK;IAC7B,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IACrC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAA;IAC9D,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAA;IACjD,cAAc,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC,CAAA;CACnE;AAGD,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA"}
1
+ {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":"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"}
package/lib/source.js CHANGED
@@ -22,6 +22,8 @@ const assert_1 = __importDefault(require("assert"));
22
22
  const source_1 = require("./archive/source");
23
23
  const fields_1 = require("./data/fields");
24
24
  const source_2 = require("./rpc/source");
25
+ const portal_1 = require("./archive/portal");
26
+ const portal_client_1 = require("@subsquid/portal-client");
25
27
  class DataSourceBuilder {
26
28
  constructor() {
27
29
  this.requests = [];
@@ -36,11 +38,22 @@ class DataSourceBuilder {
36
38
  * source.setGateway('https://v2.archive.subsquid.io/network/solana-mainnet')
37
39
  */
38
40
  setGateway(url) {
41
+ (0, assert_1.default)(this.archive?.type !== 'gateway', '.setGateway() can not be used together with .setPortal()');
39
42
  if (typeof url == 'string') {
40
- this.archive = { url };
43
+ this.archive = { url, type: 'gateway' };
41
44
  }
42
45
  else {
43
- this.archive = url;
46
+ this.archive = { ...url, type: 'gateway' };
47
+ }
48
+ return this;
49
+ }
50
+ setPortal(url) {
51
+ (0, assert_1.default)(this.archive?.type !== 'gateway', '.setPortal() can not be used together with .setGateway()');
52
+ if (typeof url == 'string') {
53
+ this.archive = { url, type: 'portal', };
54
+ }
55
+ else {
56
+ this.archive = { ...url, type: 'portal' };
44
57
  }
45
58
  return this;
46
59
  }
@@ -191,11 +204,11 @@ class SolanaDataSource {
191
204
  }
192
205
  else {
193
206
  let archive = this.createArchive();
194
- let head = await archive.getFinalizedHeight();
195
- if (head >= height)
196
- return archive.getBlockHash(height);
197
- if (this.rpc)
198
- return this.rpc.getBlockHash(height);
207
+ let hash = await archive.getBlockHash(height);
208
+ if (hash == null && this.rpc) {
209
+ hash = await this.rpc.getBlockHash(height);
210
+ }
211
+ return hash;
199
212
  }
200
213
  }
201
214
  async assertConsistency() {
@@ -255,17 +268,34 @@ class SolanaDataSource {
255
268
  }
256
269
  createArchive(agent) {
257
270
  (0, assert_1.default)(this.archiveSettings);
258
- let http = new http_client_1.HttpClient({
259
- headers: {
260
- 'x-squid-id': this.getSquidId()
261
- },
262
- agent
263
- });
264
- return new source_1.SolanaArchive(new util_internal_archive_client_1.ArchiveClient({
265
- http,
266
- url: this.archiveSettings.url,
267
- queryTimeout: this.archiveSettings.requestTimeout,
268
- }));
271
+ let headers = {
272
+ 'x-squid-id': this.getSquidId(),
273
+ };
274
+ return this.archiveSettings.type === 'gateway'
275
+ ? new source_1.SolanaArchive(new util_internal_archive_client_1.ArchiveClient({
276
+ http: new http_client_1.HttpClient({
277
+ headers: {
278
+ 'x-squid-id': this.getSquidId(),
279
+ },
280
+ agent,
281
+ }),
282
+ url: this.archiveSettings.url,
283
+ queryTimeout: this.archiveSettings.requestTimeout,
284
+ }))
285
+ : new portal_1.SolanaPortal(new portal_client_1.PortalClient({
286
+ http: new http_client_1.HttpClient({
287
+ headers,
288
+ agent,
289
+ httpTimeout: this.archiveSettings.requestTimeout,
290
+ retryAttempts: this.archiveSettings.retryAttempts ?? Infinity,
291
+ }),
292
+ url: this.archiveSettings.url,
293
+ minBytes: this.archiveSettings.minBytes,
294
+ maxIdleTime: this.archiveSettings.maxIdleTime,
295
+ maxBytes: this.archiveSettings.maxBytes,
296
+ maxWaitTime: this.archiveSettings.maxWaitTime,
297
+ headPollInterval: this.archiveSettings.headPollInterval,
298
+ }));
269
299
  }
270
300
  getSquidId() {
271
301
  return (0, util_internal_processor_tools_1.getOrGenerateSquidId)();
package/lib/source.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"source.js","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"source.js","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@subsquid/solana-stream",
3
- "version": "0.1.4",
3
+ "version": "0.2.0-portal-api.889aff",
4
4
  "description": "Solana block data streamer",
5
5
  "license": "GPL-3.0-or-later",
6
6
  "repository": "git@github.com:subsquid/squid.git",
@@ -14,9 +14,9 @@
14
14
  "main": "lib/index.js",
15
15
  "dependencies": {
16
16
  "@subsquid/http-client": "^1.6.0",
17
- "@subsquid/logger": "^1.4.0",
17
+ "@subsquid/logger": "^1.3.3",
18
18
  "@subsquid/rpc-client": "^4.11.0",
19
- "@subsquid/solana-normalization": "^0.0.4",
19
+ "@subsquid/solana-normalization": "^0.0.3",
20
20
  "@subsquid/solana-rpc": "^0.0.4",
21
21
  "@subsquid/solana-rpc-data": "^0.0.3",
22
22
  "@subsquid/util-internal": "^3.2.0",
@@ -26,7 +26,8 @@
26
26
  "@subsquid/util-internal-processor-tools": "^4.2.1",
27
27
  "@subsquid/util-internal-range": "^0.3.0",
28
28
  "@subsquid/util-internal-validation": "^0.7.0",
29
- "bs58": "^5.0.0"
29
+ "bs58": "^5.0.0",
30
+ "@subsquid/portal-client": "0.0.1-portal-api.889aff"
30
31
  },
31
32
  "devDependencies": {
32
33
  "@types/node": "^18.18.14",
@@ -0,0 +1,128 @@
1
+ import {BlockHeader} from '@subsquid/solana-normalization'
2
+ import {Base58Bytes} from '@subsquid/solana-rpc-data'
3
+ import {assertNotNull, last} from '@subsquid/util-internal'
4
+ import {mapRangeRequestList, RangeRequestList} from '@subsquid/util-internal-range'
5
+ import {array, cast} from '@subsquid/util-internal-validation'
6
+ import assert from 'assert'
7
+ import {PartialBlock} from '../data/partial'
8
+ import {DataRequest} from '../data/request'
9
+ import {getDataSchema} from './schema'
10
+ import {PortalClient} from '@subsquid/portal-client'
11
+
12
+ export class SolanaPortal {
13
+ constructor(private client: PortalClient) {}
14
+
15
+ getFinalizedHeight(): Promise<number> {
16
+ return this.client.getFinalizedHeight()
17
+ }
18
+
19
+ async getBlockHash(height: number): Promise<Base58Bytes | undefined> {
20
+ let blocks = await this.client.getFinalizedQuery({
21
+ type: 'solana',
22
+ fromBlock: height,
23
+ toBlock: height,
24
+ fields: {
25
+ block: {
26
+ hash: true,
27
+ },
28
+ },
29
+ includeAllBlocks: true,
30
+ })
31
+ assert(blocks.length == 1)
32
+ return blocks[0].header.hash
33
+ }
34
+
35
+ async getBlockHeader(height: number): Promise<BlockHeader> {
36
+ let blocks = await this.client.getFinalizedQuery({
37
+ type: 'solana',
38
+ fromBlock: height,
39
+ toBlock: height,
40
+ includeAllBlocks: true,
41
+ fields: {
42
+ block: {
43
+ hash: true,
44
+ number: true,
45
+ slot: true,
46
+ parentSlot: true,
47
+ parentHash: true,
48
+ timestamp: true,
49
+ },
50
+ },
51
+ })
52
+ assert(blocks.length == 1)
53
+ let {number, ...rest} = blocks[0].header
54
+ return {
55
+ height: number,
56
+ ...rest,
57
+ } as BlockHeader
58
+ }
59
+
60
+ async *getBlockStream(
61
+ requests: RangeRequestList<DataRequest>,
62
+ stopOnHead?: boolean | undefined
63
+ ): AsyncIterable<PartialBlock[]> {
64
+ let archiveRequests = mapRangeRequestList(requests, (req) => {
65
+ let {fields, includeAllBlocks, ...items} = req
66
+ let archiveItems: Record<string, any> = {}
67
+ let key: keyof typeof items
68
+ for (key in items) {
69
+ archiveItems[key] = items[key]?.map((it) => ({...it.where, ...it.include}))
70
+ }
71
+ return {
72
+ type: 'solana',
73
+ fields: {
74
+ block: {...fields?.block, number: true, hash: true, parentHash: true},
75
+ transaction: {...fields?.transaction, transactionIndex: true},
76
+ instruction: {...fields?.instruction, transactionIndex: true, instructionAddress: true},
77
+ log: {...fields?.log, instructionAddress: true, logIndex: true, transactionIndex: true},
78
+ balance: {...fields?.balance, transactionIndex: true, account: true},
79
+ tokenBalance: {...fields?.tokenBalance, transactionIndex: true, account: true},
80
+ reward: {...fields?.reward, pubkey: true},
81
+ },
82
+ includeAllBlocks,
83
+ ...archiveItems,
84
+ }
85
+ })
86
+
87
+ for (let req of archiveRequests) {
88
+ let lastBlock = req.range.from - 1
89
+ let endBlock = req.range.to || Infinity
90
+ let query = {
91
+ fromBlock: lastBlock + 1,
92
+ toBlock: endBlock,
93
+ ...req.request,
94
+ }
95
+
96
+ for await (let {blocks: batch} of this.client.getFinalizedStream(query, {stopOnHead})) {
97
+ assert(batch.length > 0, 'boundary blocks are expected to be included')
98
+ lastBlock = last(batch).header.number
99
+
100
+ let blocks = cast(array(getDataSchema(assertNotNull(req?.request.fields))), batch).map((b) => {
101
+ let {
102
+ header: {number, ...hdr},
103
+ ...items
104
+ } = b
105
+ return {
106
+ header: {height: number, ...hdr},
107
+ transactions: items.transactions || [],
108
+ instructions: items.instructions || [],
109
+ logs: items.logs || [],
110
+ balances: items.balances || [],
111
+ tokenBalances: items.tokenBalances || [],
112
+ rewards: items.rewards || [],
113
+ }
114
+ })
115
+
116
+ yield blocks
117
+ }
118
+
119
+ // stream ended before requested range,
120
+ // which means we reached the last available block
121
+ // should not happen if stopOnHead is set to false
122
+ if (lastBlock < endBlock) {
123
+ assert(stopOnHead, 'unexpected end of stream')
124
+ break
125
+ }
126
+ }
127
+ }
128
+ }
@@ -23,6 +23,11 @@ export class SolanaArchive {
23
23
  type: 'solana',
24
24
  fromBlock: height,
25
25
  toBlock: height,
26
+ fields: {
27
+ block: {
28
+ hash: true,
29
+ }
30
+ },
26
31
  includeAllBlocks: true
27
32
  })
28
33
  assert(blocks.length == 1)
@@ -37,6 +42,8 @@ export class SolanaArchive {
37
42
  includeAllBlocks: true,
38
43
  fields: {
39
44
  block: {
45
+ hash: true,
46
+ number: true,
40
47
  slot: true,
41
48
  parentSlot: true,
42
49
  parentHash: true,
package/src/source.ts CHANGED
@@ -29,6 +29,8 @@ import {
29
29
  } from './data/request'
30
30
  import {SolanaRpcClient} from './rpc/client'
31
31
  import {RpcDataSource} from './rpc/source'
32
+ import {SolanaPortal} from './archive/portal'
33
+ import {PortalClient, PortalClientOptions} from '@subsquid/portal-client'
32
34
 
33
35
 
34
36
  export interface GatewaySettings {
@@ -43,6 +45,16 @@ export interface GatewaySettings {
43
45
  }
44
46
 
45
47
 
48
+ export interface PortalSettings extends Omit<PortalClientOptions, 'http'> {
49
+ /**
50
+ * Request timeout in ms
51
+ */
52
+ requestTimeout?: number
53
+
54
+ retryAttempts?: number
55
+ }
56
+
57
+
46
58
  export interface RpcSettings {
47
59
  /**
48
60
  * RPC client
@@ -86,7 +98,7 @@ export class DataSourceBuilder<F extends FieldSelection = {}> {
86
98
  private requests: RangeRequest<DataRequest>[] = []
87
99
  private fields?: FieldSelection
88
100
  private blockRange?: Range
89
- private archive?: GatewaySettings
101
+ private archive?: GatewaySettings & {type: 'gateway'} | PortalSettings & {type: 'portal'}
90
102
  private rpc?: RpcSettings
91
103
 
92
104
  /**
@@ -99,14 +111,27 @@ export class DataSourceBuilder<F extends FieldSelection = {}> {
99
111
  * source.setGateway('https://v2.archive.subsquid.io/network/solana-mainnet')
100
112
  */
101
113
  setGateway(url: string | GatewaySettings): this {
114
+ assert(this.archive?.type !== 'gateway', '.setGateway() can not be used together with .setPortal()')
102
115
  if (typeof url == 'string') {
103
- this.archive = {url}
116
+ this.archive = {url, type: 'gateway'}
104
117
  } else {
105
- this.archive = url
118
+ this.archive = {...url, type: 'gateway'}
106
119
  }
107
120
  return this
108
121
  }
109
122
 
123
+
124
+ setPortal(url: string | PortalSettings): this {
125
+ assert(this.archive?.type !== 'gateway', '.setPortal() can not be used together with .setGateway()')
126
+ if (typeof url == 'string') {
127
+ this.archive = {url, type: 'portal', }
128
+ } else {
129
+ this.archive = {...url, type: 'portal'}
130
+ }
131
+ return this
132
+ }
133
+
134
+
110
135
  /**
111
136
  * Set up RPC data ingestion
112
137
  */
@@ -267,7 +292,7 @@ class SolanaDataSource implements DataSource<PartialBlock> {
267
292
 
268
293
  constructor(
269
294
  private requests: RangeRequestList<DataRequest>,
270
- private archiveSettings?: GatewaySettings,
295
+ private archiveSettings?: GatewaySettings & {type: 'gateway'} | PortalSettings & {type: 'portal'},
271
296
  rpcSettings?: RpcSettings
272
297
  ) {
273
298
  assert(this.archiveSettings || rpcSettings, 'either archive or RPC should be provided')
@@ -292,9 +317,11 @@ class SolanaDataSource implements DataSource<PartialBlock> {
292
317
  return this.rpc.getBlockHash(height)
293
318
  } else {
294
319
  let archive = this.createArchive()
295
- let head = await archive.getFinalizedHeight()
296
- if (head >= height) return archive.getBlockHash(height)
297
- if (this.rpc) return this.rpc.getBlockHash(height)
320
+ let hash = await archive.getBlockHash(height)
321
+ if (hash == null && this.rpc) {
322
+ hash = await this.rpc.getBlockHash(height)
323
+ }
324
+ return hash
298
325
  }
299
326
  }
300
327
 
@@ -366,23 +393,42 @@ class SolanaDataSource implements DataSource<PartialBlock> {
366
393
  yield* this.rpc.getBlockStream(requests)
367
394
  }
368
395
 
369
- private createArchive(agent?: HttpAgent): SolanaArchive {
396
+ private createArchive(agent?: HttpAgent): SolanaArchive | SolanaPortal {
370
397
  assert(this.archiveSettings)
371
398
 
372
- let http = new HttpClient({
373
- headers: {
374
- 'x-squid-id': this.getSquidId()
375
- },
376
- agent
377
- })
399
+ let headers = {
400
+ 'x-squid-id': this.getSquidId(),
401
+ }
378
402
 
379
- return new SolanaArchive(
380
- new ArchiveClient({
381
- http,
382
- url: this.archiveSettings.url,
383
- queryTimeout: this.archiveSettings.requestTimeout,
384
- })
385
- )
403
+ return this.archiveSettings.type === 'gateway'
404
+ ? new SolanaArchive(
405
+ new ArchiveClient({
406
+ http: new HttpClient({
407
+ headers: {
408
+ 'x-squid-id': this.getSquidId(),
409
+ },
410
+ agent,
411
+ }),
412
+ url: this.archiveSettings.url,
413
+ queryTimeout: this.archiveSettings.requestTimeout,
414
+ })
415
+ )
416
+ : new SolanaPortal(
417
+ new PortalClient({
418
+ http: new HttpClient({
419
+ headers,
420
+ agent,
421
+ httpTimeout: this.archiveSettings.requestTimeout,
422
+ retryAttempts: this.archiveSettings.retryAttempts ?? Infinity,
423
+ }),
424
+ url: this.archiveSettings.url,
425
+ minBytes: this.archiveSettings.minBytes,
426
+ maxIdleTime: this.archiveSettings.maxIdleTime,
427
+ maxBytes: this.archiveSettings.maxBytes,
428
+ maxWaitTime: this.archiveSettings.maxWaitTime,
429
+ headPollInterval: this.archiveSettings.headPollInterval,
430
+ })
431
+ )
386
432
  }
387
433
 
388
434
  @def