@hyperlane-xyz/sdk 7.0.0 → 7.1.0

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.
Files changed (58) hide show
  1. package/dist/consts/multisigIsm.d.ts.map +1 -1
  2. package/dist/consts/multisigIsm.js +74 -26
  3. package/dist/consts/multisigIsm.js.map +1 -1
  4. package/dist/core/HyperlaneCore.d.ts.map +1 -1
  5. package/dist/core/HyperlaneCore.js +6 -3
  6. package/dist/core/HyperlaneCore.js.map +1 -1
  7. package/dist/core/HyperlaneRelayer.d.ts +113 -77
  8. package/dist/core/HyperlaneRelayer.d.ts.map +1 -1
  9. package/dist/core/HyperlaneRelayer.js +112 -24
  10. package/dist/core/HyperlaneRelayer.js.map +1 -1
  11. package/dist/core/schemas.d.ts +459 -459
  12. package/dist/index.d.ts +5 -5
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +4 -4
  15. package/dist/index.js.map +1 -1
  16. package/dist/metadata/agentConfig.d.ts +46 -46
  17. package/dist/metadata/chainMetadataConversion.d.ts +9 -0
  18. package/dist/metadata/chainMetadataConversion.d.ts.map +1 -0
  19. package/dist/metadata/chainMetadataConversion.js +76 -0
  20. package/dist/metadata/chainMetadataConversion.js.map +1 -0
  21. package/dist/metadata/deploymentArtifacts.d.ts +2 -2
  22. package/dist/router/schemas.d.ts +25 -25
  23. package/dist/token/Token.d.ts +2 -0
  24. package/dist/token/Token.d.ts.map +1 -1
  25. package/dist/token/Token.js +14 -4
  26. package/dist/token/Token.js.map +1 -1
  27. package/dist/token/TokenStandard.d.ts +1 -0
  28. package/dist/token/TokenStandard.d.ts.map +1 -1
  29. package/dist/token/TokenStandard.js +2 -1
  30. package/dist/token/TokenStandard.js.map +1 -1
  31. package/dist/token/adapters/CosmWasmTokenAdapter.d.ts +4 -0
  32. package/dist/token/adapters/CosmWasmTokenAdapter.d.ts.map +1 -1
  33. package/dist/token/adapters/CosmWasmTokenAdapter.js +14 -0
  34. package/dist/token/adapters/CosmWasmTokenAdapter.js.map +1 -1
  35. package/dist/token/adapters/CosmosTokenAdapter.d.ts +2 -0
  36. package/dist/token/adapters/CosmosTokenAdapter.d.ts.map +1 -1
  37. package/dist/token/adapters/CosmosTokenAdapter.js +7 -0
  38. package/dist/token/adapters/CosmosTokenAdapter.js.map +1 -1
  39. package/dist/token/adapters/EvmTokenAdapter.d.ts +32 -2
  40. package/dist/token/adapters/EvmTokenAdapter.d.ts.map +1 -1
  41. package/dist/token/adapters/EvmTokenAdapter.js +85 -11
  42. package/dist/token/adapters/EvmTokenAdapter.js.map +1 -1
  43. package/dist/token/adapters/ITokenAdapter.d.ts +4 -0
  44. package/dist/token/adapters/ITokenAdapter.d.ts.map +1 -1
  45. package/dist/token/adapters/SealevelTokenAdapter.d.ts +6 -0
  46. package/dist/token/adapters/SealevelTokenAdapter.d.ts.map +1 -1
  47. package/dist/token/adapters/SealevelTokenAdapter.js +21 -0
  48. package/dist/token/adapters/SealevelTokenAdapter.js.map +1 -1
  49. package/dist/token/schemas.d.ts +68 -68
  50. package/dist/utils/schemas.d.ts +2 -1
  51. package/dist/utils/schemas.d.ts.map +1 -1
  52. package/dist/utils/schemas.js +10 -0
  53. package/dist/utils/schemas.js.map +1 -1
  54. package/package.json +5 -4
  55. package/dist/utils/viem.d.ts +0 -4
  56. package/dist/utils/viem.d.ts.map +0 -1
  57. package/dist/utils/viem.js +0 -25
  58. package/dist/utils/viem.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { assert, objMap, objMerge, pollAsync, promiseObjAll, } from '@hyperlane-xyz/utils';
2
+ import { assert, bytes32ToAddress, messageId, objMap, objMerge, parseMessage, promiseObjAll, sleep, } from '@hyperlane-xyz/utils';
3
3
  import { EvmHookReader } from '../hook/EvmHookReader.js';
4
4
  import { HookConfigSchema } from '../hook/schemas.js';
5
5
  import { EvmIsmReader } from '../ism/EvmIsmReader.js';
@@ -11,28 +11,64 @@ const WithAddressSchema = z.object({
11
11
  });
12
12
  const DerivedHookConfigWithAddressSchema = HookConfigSchema.and(WithAddressSchema);
13
13
  const DerivedIsmConfigWithAddressSchema = IsmConfigSchema.and(WithAddressSchema);
14
+ const BacklogMessageSchema = z.object({
15
+ attempts: z.number(),
16
+ lastAttempt: z.number(),
17
+ message: z.string(),
18
+ dispatchTx: z.string(),
19
+ });
20
+ const MessageBacklogSchema = z.array(BacklogMessageSchema);
14
21
  export const RelayerCacheSchema = z.object({
15
22
  hook: z.record(z.record(DerivedHookConfigWithAddressSchema)),
16
23
  ism: z.record(z.record(DerivedIsmConfigWithAddressSchema)),
24
+ backlog: MessageBacklogSchema,
17
25
  });
26
+ // message must have origin and destination chains in the whitelist
27
+ // if whitelist has non-empty address set for chain, message must have sender and recipient in the set
28
+ export function messageMatchesWhitelist(whitelist, message) {
29
+ const originAddresses = whitelist[message.originChain ?? message.origin];
30
+ if (!originAddresses) {
31
+ return false;
32
+ }
33
+ const sender = bytes32ToAddress(message.sender);
34
+ if (originAddresses.size !== 0 && !originAddresses.has(sender)) {
35
+ return false;
36
+ }
37
+ const destinationAddresses = whitelist[message.destinationChain ?? message.destination];
38
+ if (!destinationAddresses) {
39
+ return false;
40
+ }
41
+ const recipient = bytes32ToAddress(message.recipient);
42
+ if (destinationAddresses.size !== 0 && !destinationAddresses.has(recipient)) {
43
+ return false;
44
+ }
45
+ return true;
46
+ }
18
47
  export class HyperlaneRelayer {
19
48
  multiProvider;
20
49
  metadataBuilder;
21
50
  core;
22
51
  retryTimeout;
52
+ whitelist;
53
+ backlog;
23
54
  cache;
24
55
  stopRelayingHandler;
25
56
  logger;
26
- constructor({ core, caching = true, retryTimeout = 5 * 1000, }) {
57
+ constructor({ core, caching = true, retryTimeout = 1000, whitelist = undefined, }) {
27
58
  this.core = core;
28
59
  this.retryTimeout = retryTimeout;
29
60
  this.logger = core.logger.child({ module: 'Relayer' });
30
61
  this.metadataBuilder = new BaseMetadataBuilder(core);
31
62
  this.multiProvider = core.multiProvider;
63
+ if (whitelist) {
64
+ this.whitelist = objMap(whitelist, (_chain, addresses) => new Set(addresses));
65
+ }
66
+ this.backlog = [];
32
67
  if (caching) {
33
68
  this.cache = {
34
69
  hook: {},
35
70
  ism: {},
71
+ backlog: [],
36
72
  };
37
73
  }
38
74
  }
@@ -83,10 +119,19 @@ export class HyperlaneRelayer {
83
119
  return this.getIsmConfig(destinationChain, ism, message);
84
120
  }
85
121
  async relayMessage(dispatchTx, messageIndex = 0, message = HyperlaneCore.getDispatchedMessages(dispatchTx)[messageIndex]) {
122
+ if (this.whitelist) {
123
+ // add human readable names for use in whitelist checks
124
+ message.parsed = {
125
+ originChain: this.core.getOrigin(message),
126
+ destinationChain: this.core.getDestination(message),
127
+ ...message.parsed,
128
+ };
129
+ assert(messageMatchesWhitelist(this.whitelist, message.parsed), `Message ${message.id} does not match whitelist`);
130
+ }
86
131
  this.logger.info(`Preparing to relay message ${message.id}`);
87
132
  const isDelivered = await this.core.isDelivered(message);
88
133
  if (isDelivered) {
89
- this.logger.debug(`Message ${message.id} already delivered`);
134
+ this.logger.info(`Message ${message.id} already delivered`);
90
135
  return this.core.getProcessedReceipt(message);
91
136
  }
92
137
  this.logger.debug({ message }, `Simulating recipient message handling`);
@@ -97,10 +142,13 @@ export class HyperlaneRelayer {
97
142
  this.getSenderHookConfig(message),
98
143
  ]);
99
144
  this.logger.debug({ ism, hook }, `Retrieved ISM and hook configs`);
100
- const blockTime = this.multiProvider.getChainMetadata(message.parsed.destination).blocks?.estimateBlockTime;
101
- const waitTime = blockTime ? blockTime * 2 : this.retryTimeout;
102
- const metadata = await pollAsync(() => this.metadataBuilder.build({ message, ism, hook, dispatchTx }), waitTime, 12);
103
- this.logger.info({ message, metadata }, `Relaying message ${message.id}`);
145
+ const metadata = await this.metadataBuilder.build({
146
+ message,
147
+ ism,
148
+ hook,
149
+ dispatchTx,
150
+ });
151
+ this.logger.info(`Relaying message ${message.id}`);
104
152
  return this.core.deliver(message, metadata);
105
153
  }
106
154
  hydrate(cache) {
@@ -117,31 +165,71 @@ export class HyperlaneRelayer {
117
165
  await this.getIsmConfig(chain, ism);
118
166
  }));
119
167
  }
120
- start(chains = this.core.chains()) {
168
+ async flushBacklog() {
169
+ while (this.stopRelayingHandler) {
170
+ const backlogMsg = this.backlog.shift();
171
+ if (!backlogMsg) {
172
+ this.logger.trace('Backlog empty, waiting 1s');
173
+ await sleep(1000);
174
+ continue;
175
+ }
176
+ // linear backoff (attempts * retryTimeout)
177
+ if (Date.now() <
178
+ backlogMsg.lastAttempt + backlogMsg.attempts * this.retryTimeout) {
179
+ this.backlog.push(backlogMsg);
180
+ continue;
181
+ }
182
+ const { message, dispatchTx, attempts } = backlogMsg;
183
+ const id = messageId(message);
184
+ const parsed = parseMessage(message);
185
+ const dispatchMsg = { id, message, parsed };
186
+ try {
187
+ const dispatchReceipt = await this.multiProvider
188
+ .getProvider(parsed.origin)
189
+ .getTransactionReceipt(dispatchTx);
190
+ // TODO: handle batching
191
+ await this.relayMessage(dispatchReceipt, undefined, dispatchMsg);
192
+ }
193
+ catch (error) {
194
+ this.logger.error(`Failed to relay message ${id} (attempt #${attempts + 1})`);
195
+ this.backlog.push({
196
+ ...backlogMsg,
197
+ attempts: attempts + 1,
198
+ lastAttempt: Date.now(),
199
+ });
200
+ }
201
+ }
202
+ }
203
+ whitelistChains() {
204
+ return this.whitelist ? Object.keys(this.whitelist) : undefined;
205
+ }
206
+ start() {
121
207
  assert(!this.stopRelayingHandler, 'Relayer already started');
208
+ this.backlog = this.cache?.backlog ?? [];
122
209
  const { removeHandler } = this.core.onDispatch(async (message, event) => {
123
- const destination = message.parsed.destination;
124
- const chain = this.multiProvider.tryGetChainName(destination);
125
- if (!chain) {
126
- this.logger.warn(`Unknown destination ${destination}`);
127
- return;
128
- }
129
- if (!chains.includes(chain)) {
130
- this.logger.info(`Skipping message to chain ${chain}`);
210
+ if (this.whitelist &&
211
+ !messageMatchesWhitelist(this.whitelist, message.parsed)) {
212
+ this.logger.debug({ message, whitelist: this.whitelist }, `Skipping message ${message.id} not matching whitelist`);
131
213
  return;
132
214
  }
133
- const dispatchReceipt = await event.getTransactionReceipt();
134
- const processReceipt = await this.relayMessage(dispatchReceipt, undefined, message);
135
- this.logger.info(`Message ${message.id} was processed in ${this.multiProvider.tryGetExplorerTxUrl(destination, {
136
- hash: processReceipt.transactionHash,
137
- }) ?? 'tx ' + processReceipt.transactionHash}`);
138
- }, chains);
215
+ this.backlog.push({
216
+ attempts: 0,
217
+ lastAttempt: Date.now(),
218
+ message: message.message,
219
+ dispatchTx: event.transactionHash,
220
+ });
221
+ }, this.whitelistChains());
139
222
  this.stopRelayingHandler = removeHandler;
223
+ // start flushing backlog
224
+ void this.flushBacklog();
140
225
  }
141
- stop(chains = this.core.chains()) {
226
+ stop() {
142
227
  assert(this.stopRelayingHandler, 'Relayer not started');
143
- this.stopRelayingHandler(chains);
228
+ this.stopRelayingHandler(this.whitelistChains());
144
229
  this.stopRelayingHandler = undefined;
230
+ if (this.cache) {
231
+ this.cache.backlog = this.backlog;
232
+ }
145
233
  }
146
234
  }
147
235
  //# sourceMappingURL=HyperlaneRelayer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HyperlaneRelayer.js","sourceRoot":"","sources":["../../src/core/HyperlaneRelayer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HyperlaneRelayer.js","sourceRoot":"","sources":["../../src/core/HyperlaneRelayer.ts"],"names":[],"mappings":"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"}