@xyo-network/chain-bridge 1.19.13 → 1.19.15
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.
- package/dist/node/BridgeActor.d.ts +3 -2
- package/dist/node/BridgeActor.d.ts.map +1 -1
- package/dist/node/config/getBridgeEscrowAddress.d.ts +3 -3
- package/dist/node/config/getBridgeEscrowAddress.d.ts.map +1 -1
- package/dist/node/config/getBridgeFeesAddress.d.ts +3 -3
- package/dist/node/config/getBridgeFeesAddress.d.ts.map +1 -1
- package/dist/node/config/getBridgeSettings.d.ts +2 -2
- package/dist/node/config/getBridgeSettings.d.ts.map +1 -1
- package/dist/node/config/getBridgeWalletAccount.d.ts +3 -3
- package/dist/node/config/getBridgeWalletAccount.d.ts.map +1 -1
- package/dist/node/config/getFeeStructure.d.ts +2 -2
- package/dist/node/config/getFeeStructure.d.ts.map +1 -1
- package/dist/node/config/getGateway.d.ts +3 -2
- package/dist/node/config/getGateway.d.ts.map +1 -1
- package/dist/node/config/getMaxBridgeAmount.d.ts +2 -2
- package/dist/node/config/getMaxBridgeAmount.d.ts.map +1 -1
- package/dist/node/config/getMinBridgeAmount.d.ts +2 -2
- package/dist/node/config/getMinBridgeAmount.d.ts.map +1 -1
- package/dist/node/config/getRemoteChainId.d.ts +3 -2
- package/dist/node/config/getRemoteChainId.d.ts.map +1 -1
- package/dist/node/config/getRemoteTokenAddress.d.ts +2 -2
- package/dist/node/config/getRemoteTokenAddress.d.ts.map +1 -1
- package/dist/node/config/getTransferAddresses.d.ts +2 -2
- package/dist/node/config/getTransferAddresses.d.ts.map +1 -1
- package/dist/node/config/getXl1ChainId.d.ts +3 -2
- package/dist/node/config/getXl1ChainId.d.ts.map +1 -1
- package/dist/node/config/getXl1TokenAddress.d.ts +2 -2
- package/dist/node/config/getXl1TokenAddress.d.ts.map +1 -1
- package/dist/node/index.mjs +72 -553
- package/dist/node/index.mjs.map +1 -1
- package/dist/node/modules/EVMLiquidityBridgeTransactionCompletionMonitorSentinel/EVMLiquidityBridgeTransactionCompletionMonitorSentinel.d.ts.map +1 -1
- package/dist/node/modules/XL1TransactionCompletionMonitorSentinel/XL1TransactionCompletionMonitorSentinel.d.ts.map +1 -1
- package/dist/node/queue/connection.d.ts +2 -2
- package/dist/node/queue/connection.d.ts.map +1 -1
- package/dist/node/queue/workers/EthTransactionPreparation.d.ts.map +1 -1
- package/dist/node/server/addFlowProducer.d.ts +2 -2
- package/dist/node/server/addFlowProducer.d.ts.map +1 -1
- package/dist/node/server/addWorkers.d.ts +2 -2
- package/dist/node/server/addWorkers.d.ts.map +1 -1
- package/dist/node/server/app.d.ts +3 -3
- package/dist/node/server/app.d.ts.map +1 -1
- package/dist/node/server/index.d.ts +0 -2
- package/dist/node/server/index.d.ts.map +1 -1
- package/dist/node/server/routes/addRoutes.d.ts +3 -2
- package/dist/node/server/routes/addRoutes.d.ts.map +1 -1
- package/dist/node/server/routes/bridge/addBridgeRoutes.d.ts +3 -2
- package/dist/node/server/routes/bridge/addBridgeRoutes.d.ts.map +1 -1
- package/dist/node/server/routes/bridge/routeDefinitions/getRouteDefinitions.d.ts +3 -2
- package/dist/node/server/routes/bridge/routeDefinitions/getRouteDefinitions.d.ts.map +1 -1
- package/dist/node/server/routes/bridge/routeDefinitions/pathParams/ChainIdPathParam.d.ts +2 -2
- package/dist/node/server/routes/bridge/routeDefinitions/pathParams/ChainIdPathParam.d.ts.map +1 -1
- package/dist/node/server/routes/bridge/routeDefinitions/routes/bridgeConfig.d.ts +2 -2
- package/dist/node/server/routes/bridge/routeDefinitions/routes/bridgeConfig.d.ts.map +1 -1
- package/dist/node/server/routes/bridge/routeDefinitions/routes/bridgeFromRemoteStatus.d.ts +2 -2
- package/dist/node/server/routes/bridge/routeDefinitions/routes/bridgeFromRemoteStatus.d.ts.map +1 -1
- package/dist/node/server/routes/bridge/routeDefinitions/routes/bridgeToRemote.d.ts +2 -2
- package/dist/node/server/routes/bridge/routeDefinitions/routes/bridgeToRemote.d.ts.map +1 -1
- package/dist/node/server/routes/bridge/routeDefinitions/routes/bridgeToRemoteEstimate.d.ts +3 -2
- package/dist/node/server/routes/bridge/routeDefinitions/routes/bridgeToRemoteEstimate.d.ts.map +1 -1
- package/dist/node/server/routes/bridge/routeDefinitions/routes/bridgeToRemoteStatus.d.ts +2 -2
- package/dist/node/server/routes/bridge/routeDefinitions/routes/bridgeToRemoteStatus.d.ts.map +1 -1
- package/dist/node/server/server.d.ts +3 -10
- package/dist/node/server/server.d.ts.map +1 -1
- package/dist/node/{manifest → services}/getIterableMap.d.ts +2 -2
- package/dist/node/services/getIterableMap.d.ts.map +1 -0
- package/dist/node/services/getServices.d.ts +9 -0
- package/dist/node/services/getServices.d.ts.map +1 -0
- package/dist/node/services/index.d.ts +1 -0
- package/dist/node/services/index.d.ts.map +1 -1
- package/dist/node/util/BridgeFees.d.ts +7 -0
- package/dist/node/util/BridgeFees.d.ts.map +1 -0
- package/dist/node/util/bridgeFeesAsBigInt.d.ts +7 -0
- package/dist/node/util/bridgeFeesAsBigInt.d.ts.map +1 -0
- package/dist/node/util/calculateBridgeFees.d.ts +4 -8
- package/dist/node/util/calculateBridgeFees.d.ts.map +1 -1
- package/dist/node/util/createBridgeTransfer.d.ts +14 -0
- package/dist/node/util/createBridgeTransfer.d.ts.map +1 -0
- package/dist/node/util/generateBridgeEstimate.d.ts +3 -2
- package/dist/node/util/generateBridgeEstimate.d.ts.map +1 -1
- package/dist/node/util/index.d.ts +3 -0
- package/dist/node/util/index.d.ts.map +1 -1
- package/dist/node/util/validateBridgeEstimate.d.ts +3 -2
- package/dist/node/util/validateBridgeEstimate.d.ts.map +1 -1
- package/dist/node/util/validateBridgeEstimateExact.d.ts +3 -2
- package/dist/node/util/validateBridgeEstimateExact.d.ts.map +1 -1
- package/dist/node/util/validateBridgeTransaction.d.ts +3 -2
- package/dist/node/util/validateBridgeTransaction.d.ts.map +1 -1
- package/package.json +39 -49
- package/src/BridgeActor.ts +3 -3
- package/src/config/getBridgeEscrowAddress.ts +5 -5
- package/src/config/getBridgeFeesAddress.ts +5 -5
- package/src/config/getBridgeSettings.ts +2 -2
- package/src/config/getBridgeWalletAccount.ts +7 -4
- package/src/config/getFeeStructure.ts +3 -3
- package/src/config/getGateway.ts +5 -4
- package/src/config/getMaxBridgeAmount.ts +3 -3
- package/src/config/getMinBridgeAmount.ts +3 -3
- package/src/config/getRemoteChainId.ts +4 -3
- package/src/config/getRemoteTokenAddress.ts +3 -3
- package/src/config/getTransferAddresses.ts +2 -2
- package/src/config/getXl1ChainId.ts +4 -3
- package/src/config/getXl1TokenAddress.ts +3 -3
- package/src/interface/service/Observer/LiquidityPoolBridgeObserver/LiquidityPoolBridgeObserver.ts +1 -1
- package/src/interface/service/Relay/LiquidityPoolBridgeRelay/LiquidityPoolBridgeRelay.ts +1 -1
- package/src/interface/util/getBridgeIntentIdentifier.ts +1 -1
- package/src/modules/EVMLiquidityBridgeTransactionCompletionMonitorSentinel/EVMLiquidityBridgeTransactionCompletionMonitorSentinel.ts +1 -1
- package/src/modules/XL1TransactionCompletionMonitorSentinel/XL1TransactionCompletionMonitorSentinel.ts +1 -1
- package/src/queue/connection.ts +3 -3
- package/src/queue/workers/EthTransactionMonitor.ts +1 -1
- package/src/queue/workers/EthTransactionPreparation.ts +2 -4
- package/src/queue/workers/EthTransactionSubmission.ts +1 -1
- package/src/queue/workers/Xl1TransactionMonitor.ts +1 -1
- package/src/queue/workers/Xl1TransactionPreparation.ts +1 -1
- package/src/queue/workers/Xl1TransactionSubmission.ts +1 -1
- package/src/queue/workers/util/submitEthTransaction.ts +1 -1
- package/src/server/addFlowProducer.ts +2 -2
- package/src/server/addWorkers.ts +2 -2
- package/src/server/app.ts +3 -4
- package/src/server/index.ts +2 -2
- package/src/server/routes/addRoutes.ts +3 -2
- package/src/server/routes/bridge/addBridgeRoutes.ts +3 -2
- package/src/server/routes/bridge/routeDefinitions/getRouteDefinitions.ts +3 -2
- package/src/server/routes/bridge/routeDefinitions/pathParams/ChainIdPathParam.ts +3 -2
- package/src/server/routes/bridge/routeDefinitions/routes/bridgeConfig.ts +3 -2
- package/src/server/routes/bridge/routeDefinitions/routes/bridgeFromRemoteStatus.ts +3 -2
- package/src/server/routes/bridge/routeDefinitions/routes/bridgeToRemote.ts +4 -3
- package/src/server/routes/bridge/routeDefinitions/routes/bridgeToRemoteEstimate.ts +3 -2
- package/src/server/routes/bridge/routeDefinitions/routes/bridgeToRemoteStatus.ts +3 -4
- package/src/server/server.ts +7 -48
- package/src/{manifest → services}/getIterableMap.ts +2 -2
- package/src/{manifest → services}/getServices.ts +9 -13
- package/src/services/index.ts +1 -0
- package/src/util/BridgeFees.ts +7 -0
- package/src/util/bridgeFeesAsBigInt.ts +15 -0
- package/src/util/calculateBridgeFees.ts +5 -11
- package/src/util/createBridgeTransfer.ts +31 -0
- package/src/util/generateBridgeEstimate.ts +9 -17
- package/src/util/index.ts +3 -0
- package/src/util/validateBridgeEstimate.ts +4 -5
- package/src/util/validateBridgeEstimateExact.ts +4 -5
- package/src/util/validateBridgeTransaction.ts +4 -3
- package/dist/node/indexers/index.d.ts +0 -2
- package/dist/node/indexers/index.d.ts.map +0 -1
- package/dist/node/manifest/getIterableMap.d.ts.map +0 -1
- package/dist/node/manifest/getModuleLocator.d.ts +0 -15
- package/dist/node/manifest/getModuleLocator.d.ts.map +0 -1
- package/dist/node/manifest/getNode.d.ts +0 -15
- package/dist/node/manifest/getNode.d.ts.map +0 -1
- package/dist/node/manifest/getServices.d.ts +0 -13
- package/dist/node/manifest/getServices.d.ts.map +0 -1
- package/dist/node/manifest/index.d.ts +0 -7
- package/dist/node/manifest/index.d.ts.map +0 -1
- package/dist/node/manifest/nodeManifest.d.ts +0 -6
- package/dist/node/manifest/nodeManifest.d.ts.map +0 -1
- package/dist/node/manifest/private/index.d.ts +0 -5
- package/dist/node/manifest/private/index.d.ts.map +0 -1
- package/dist/node/manifest/public/index.d.ts +0 -14
- package/dist/node/manifest/public/index.d.ts.map +0 -1
- package/dist/node/server/routes/dataLake/addDataLakeRoutes.d.ts +0 -3
- package/dist/node/server/routes/dataLake/addDataLakeRoutes.d.ts.map +0 -1
- package/dist/node/server/routes/dataLake/archivistMiddleware.d.ts +0 -10
- package/dist/node/server/routes/dataLake/archivistMiddleware.d.ts.map +0 -1
- package/dist/node/server/routes/dataLake/index.d.ts +0 -2
- package/dist/node/server/routes/dataLake/index.d.ts.map +0 -1
- package/src/indexers/index.ts +0 -1
- package/src/manifest/getModuleLocator.ts +0 -153
- package/src/manifest/getNode.ts +0 -40
- package/src/manifest/index.ts +0 -6
- package/src/manifest/node.json +0 -17
- package/src/manifest/nodeManifest.ts +0 -8
- package/src/manifest/private/index.ts +0 -4
- package/src/manifest/public/Ethereum.json +0 -48
- package/src/manifest/public/XL1.json +0 -48
- package/src/manifest/public/index.ts +0 -23
- package/src/server/routes/dataLake/addDataLakeRoutes.ts +0 -9
- package/src/server/routes/dataLake/archivistMiddleware.ts +0 -85
- package/src/server/routes/dataLake/index.ts +0 -1
package/dist/node/index.mjs
CHANGED
|
@@ -3,7 +3,8 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
3
3
|
|
|
4
4
|
// src/BridgeActor.ts
|
|
5
5
|
import { creatable } from "@xylabs/sdk-js";
|
|
6
|
-
import {
|
|
6
|
+
import { asBridgeConfigContext } from "@xyo-network/chain-orchestration";
|
|
7
|
+
import { ActorV3, XyoGatewayRunnerMoniker } from "@xyo-network/xl1-sdk";
|
|
7
8
|
|
|
8
9
|
// src/server/app.ts
|
|
9
10
|
import { customPoweredByHeader, disableCaseSensitiveRouting, disableExpressDefaultPoweredByHeader, getJsonBodyParser, getJsonBodyParserOptions, responseProfiler, standardErrors, standardResponses } from "@xylabs/express";
|
|
@@ -18,7 +19,7 @@ var connection;
|
|
|
18
19
|
var maxRetriesPerRequest = null;
|
|
19
20
|
var getConnection = /* @__PURE__ */ __name((config) => {
|
|
20
21
|
if (isDefined(connection)) return connection;
|
|
21
|
-
const { redisHost: host, redisPort: port } = config
|
|
22
|
+
const { redisHost: host, redisPort: port } = config;
|
|
22
23
|
connection = new Redis({
|
|
23
24
|
host,
|
|
24
25
|
port,
|
|
@@ -52,7 +53,7 @@ var createWorkers = /* @__PURE__ */ __name((connection2, services) => {
|
|
|
52
53
|
|
|
53
54
|
// src/queue/workers/EthTransactionMonitor.ts
|
|
54
55
|
import { assertEx } from "@xylabs/sdk-js";
|
|
55
|
-
import { PayloadBuilder } from "@xyo-network/
|
|
56
|
+
import { PayloadBuilder } from "@xyo-network/sdk-js";
|
|
56
57
|
import { Worker } from "bullmq";
|
|
57
58
|
var name = "Monitor Submitted ETH Transaction";
|
|
58
59
|
var queueName = "eth-tx-monitor";
|
|
@@ -91,7 +92,7 @@ var EthTransactionMonitor = {
|
|
|
91
92
|
|
|
92
93
|
// src/queue/workers/EthTransactionPreparation.ts
|
|
93
94
|
import { assertEx as assertEx2, hexToBigInt } from "@xylabs/sdk-js";
|
|
94
|
-
import { PayloadBuilder as PayloadBuilder2 } from "@xyo-network/
|
|
95
|
+
import { PayloadBuilder as PayloadBuilder2 } from "@xyo-network/sdk-js";
|
|
95
96
|
import { isBridgeIntent } from "@xyo-network/xl1-sdk";
|
|
96
97
|
import { Worker as Worker2 } from "bullmq";
|
|
97
98
|
import { getAddress } from "ethers";
|
|
@@ -137,12 +138,12 @@ var EthTransactionPreparation = {
|
|
|
137
138
|
|
|
138
139
|
// src/queue/workers/EthTransactionSubmission.ts
|
|
139
140
|
import { assertEx as assertEx4, isDefined as isDefined3 } from "@xylabs/sdk-js";
|
|
140
|
-
import { PayloadBuilder as PayloadBuilder4 } from "@xyo-network/
|
|
141
|
+
import { PayloadBuilder as PayloadBuilder4 } from "@xyo-network/sdk-js";
|
|
141
142
|
import { Worker as Worker3 } from "bullmq";
|
|
142
143
|
|
|
143
144
|
// src/queue/workers/util/submitEthTransaction.ts
|
|
144
145
|
import { assertEx as assertEx3, hexToBigInt as hexToBigInt2, toEthAddress } from "@xylabs/sdk-js";
|
|
145
|
-
import { PayloadBuilder as PayloadBuilder3 } from "@xyo-network/
|
|
146
|
+
import { PayloadBuilder as PayloadBuilder3 } from "@xyo-network/sdk-js";
|
|
146
147
|
import { isBridgeIntent as isBridgeIntent2 } from "@xyo-network/xl1-sdk";
|
|
147
148
|
var submitEthTransaction = /* @__PURE__ */ __name(async (tx, bridgeableToken, bridge, wallet) => {
|
|
148
149
|
const xl1Transaction = assertEx3(tx[0], () => "No corresponding XL1 transaction found");
|
|
@@ -240,7 +241,7 @@ var Xl1ToEthBridgeParent = {
|
|
|
240
241
|
|
|
241
242
|
// src/queue/workers/Xl1TransactionMonitor.ts
|
|
242
243
|
import { assertEx as assertEx5, isDefined as isDefined4, isNull } from "@xylabs/sdk-js";
|
|
243
|
-
import { PayloadBuilder as PayloadBuilder5 } from "@xyo-network/
|
|
244
|
+
import { PayloadBuilder as PayloadBuilder5 } from "@xyo-network/sdk-js";
|
|
244
245
|
import { UnrecoverableError, Worker as Worker5 } from "bullmq";
|
|
245
246
|
var name5 = "Monitor Submitted XL1 Transaction";
|
|
246
247
|
var queueName5 = "xl1-tx-monitor";
|
|
@@ -286,7 +287,7 @@ var Xl1TransactionMonitor = {
|
|
|
286
287
|
|
|
287
288
|
// src/queue/workers/Xl1TransactionPreparation.ts
|
|
288
289
|
import { assertEx as assertEx6 } from "@xylabs/sdk-js";
|
|
289
|
-
import { PayloadBuilder as PayloadBuilder6 } from "@xyo-network/
|
|
290
|
+
import { PayloadBuilder as PayloadBuilder6 } from "@xyo-network/sdk-js";
|
|
290
291
|
import { Worker as Worker6 } from "bullmq";
|
|
291
292
|
var name6 = "Prepare XL1 Transaction";
|
|
292
293
|
var queueName6 = "xl1-tx-prepare";
|
|
@@ -322,7 +323,7 @@ var Xl1TransactionPreparation = {
|
|
|
322
323
|
|
|
323
324
|
// src/queue/workers/Xl1TransactionSubmission.ts
|
|
324
325
|
import { assertEx as assertEx7, isDefined as isDefined5 } from "@xylabs/sdk-js";
|
|
325
|
-
import { PayloadBuilder as PayloadBuilder7 } from "@xyo-network/
|
|
326
|
+
import { PayloadBuilder as PayloadBuilder7 } from "@xyo-network/sdk-js";
|
|
326
327
|
import { Worker as Worker7 } from "bullmq";
|
|
327
328
|
var name7 = "Submit XL1 Transaction";
|
|
328
329
|
var queueName7 = "xl1-tx-submit";
|
|
@@ -477,7 +478,7 @@ var addInstrumentation = /* @__PURE__ */ __name(() => {
|
|
|
477
478
|
|
|
478
479
|
// src/server/routes/bridge/routeDefinitions/routes/bridgeConfig.ts
|
|
479
480
|
import { requestHandlerValidator } from "@xylabs/express";
|
|
480
|
-
import { BridgeSettingsZod } from "@xyo-network/
|
|
481
|
+
import { BridgeSettingsZod } from "@xyo-network/chain-orchestration";
|
|
481
482
|
|
|
482
483
|
// src/config/asChainId.ts
|
|
483
484
|
import { asHex } from "@xylabs/sdk-js";
|
|
@@ -496,20 +497,20 @@ var asToken = /* @__PURE__ */ __name((value) => {
|
|
|
496
497
|
// src/config/getBridgeEscrowAddress.ts
|
|
497
498
|
import { asAddress as asAddress2, assertEx as assertEx8 } from "@xylabs/sdk-js";
|
|
498
499
|
var tryGetBridgeEscrowAddress = /* @__PURE__ */ __name((config) => {
|
|
499
|
-
const address = asAddress2(config.
|
|
500
|
+
const address = asAddress2(config.escrowAddress);
|
|
500
501
|
return address;
|
|
501
502
|
}, "tryGetBridgeEscrowAddress");
|
|
502
503
|
|
|
503
504
|
// src/config/getBridgeFeesAddress.ts
|
|
504
505
|
import { asAddress as asAddress3, assertEx as assertEx9 } from "@xylabs/sdk-js";
|
|
505
506
|
var tryGetBridgeFeesAddress = /* @__PURE__ */ __name((config) => {
|
|
506
|
-
const address = asAddress3(config.
|
|
507
|
+
const address = asAddress3(config.feesAddress);
|
|
507
508
|
return address;
|
|
508
509
|
}, "tryGetBridgeFeesAddress");
|
|
509
510
|
|
|
510
511
|
// src/config/getFeeStructure.ts
|
|
511
512
|
var getFeeStructure = /* @__PURE__ */ __name((config) => {
|
|
512
|
-
const { feeFixed, feeRateBasisPoints } = config
|
|
513
|
+
const { feeFixed, feeRateBasisPoints } = config;
|
|
513
514
|
return {
|
|
514
515
|
feeFixed,
|
|
515
516
|
feeRateBasisPoints
|
|
@@ -518,27 +519,27 @@ var getFeeStructure = /* @__PURE__ */ __name((config) => {
|
|
|
518
519
|
|
|
519
520
|
// src/config/getMaxBridgeAmount.ts
|
|
520
521
|
var getMaxBridgeAmount = /* @__PURE__ */ __name((config) => {
|
|
521
|
-
const { maxBridgeAmount } = config
|
|
522
|
+
const { maxBridgeAmount } = config;
|
|
522
523
|
return maxBridgeAmount;
|
|
523
524
|
}, "getMaxBridgeAmount");
|
|
524
525
|
|
|
525
526
|
// src/config/getMinBridgeAmount.ts
|
|
526
527
|
var getMinBridgeAmount = /* @__PURE__ */ __name((config) => {
|
|
527
|
-
const { minBridgeAmount } = config
|
|
528
|
+
const { minBridgeAmount } = config;
|
|
528
529
|
return minBridgeAmount;
|
|
529
530
|
}, "getMinBridgeAmount");
|
|
530
531
|
|
|
531
532
|
// src/config/getRemoteChainId.ts
|
|
532
533
|
import { assertEx as assertEx10 } from "@xylabs/sdk-js";
|
|
533
534
|
var getRemoteChainId = /* @__PURE__ */ __name((config) => {
|
|
534
|
-
const remoteChainId = assertEx10(asChainId(config.
|
|
535
|
+
const remoteChainId = assertEx10(asChainId(config.remoteChainId), () => "Invalid remote chain ID in config");
|
|
535
536
|
return remoteChainId;
|
|
536
537
|
}, "getRemoteChainId");
|
|
537
538
|
|
|
538
539
|
// src/config/getRemoteTokenAddress.ts
|
|
539
540
|
import { assertEx as assertEx11 } from "@xylabs/sdk-js";
|
|
540
541
|
var getRemoteTokenAddress = /* @__PURE__ */ __name((config) => {
|
|
541
|
-
const token = asToken(config.
|
|
542
|
+
const token = asToken(config.remoteTokenAddress);
|
|
542
543
|
return assertEx11(token, () => "Remote token address is not defined in bridge configuration");
|
|
543
544
|
}, "getRemoteTokenAddress");
|
|
544
545
|
|
|
@@ -549,7 +550,7 @@ import { ADDRESS_INDEX, generateXyoBaseWalletFromPhrase } from "@xyo-network/xl1
|
|
|
549
550
|
var accountServiceSingleton;
|
|
550
551
|
var getBridgeWalletAccount = /* @__PURE__ */ __name(async (config) => {
|
|
551
552
|
if (accountServiceSingleton) return accountServiceSingleton;
|
|
552
|
-
let walletPhrase = config.
|
|
553
|
+
let walletPhrase = config.mnemonic;
|
|
553
554
|
if (isUndefined(walletPhrase)) {
|
|
554
555
|
console.log("[Bridge] No wallet mnemonic specified!");
|
|
555
556
|
const randomMnemonic = HDWallet.generateMnemonic();
|
|
@@ -579,7 +580,7 @@ var getTransferAddresses = /* @__PURE__ */ __name(async (config) => {
|
|
|
579
580
|
// src/config/getXl1ChainId.ts
|
|
580
581
|
import { assertEx as assertEx12, isDefined as isDefined7 } from "@xylabs/sdk-js";
|
|
581
582
|
var getXl1ChainId = /* @__PURE__ */ __name((config) => {
|
|
582
|
-
const xl1ChainId = config.
|
|
583
|
+
const xl1ChainId = config.xl1ChainId;
|
|
583
584
|
if (isDefined7(xl1ChainId)) {
|
|
584
585
|
return assertEx12(asChainId(xl1ChainId), () => "Invalid xl1ChainId in bridge config");
|
|
585
586
|
}
|
|
@@ -589,7 +590,7 @@ var getXl1ChainId = /* @__PURE__ */ __name((config) => {
|
|
|
589
590
|
// src/config/getXl1TokenAddress.ts
|
|
590
591
|
import { isDefined as isDefined8 } from "@xylabs/sdk-js";
|
|
591
592
|
var getXl1TokenAddress = /* @__PURE__ */ __name((config) => {
|
|
592
|
-
const token = asToken(config.
|
|
593
|
+
const token = asToken(config.xl1TokenAddress);
|
|
593
594
|
if (isDefined8(token)) return token;
|
|
594
595
|
return getXl1ChainId(config);
|
|
595
596
|
}, "getXl1TokenAddress");
|
|
@@ -709,8 +710,8 @@ var makeBridgeFromRemoteStatusRoute = /* @__PURE__ */ __name((config) => {
|
|
|
709
710
|
|
|
710
711
|
// src/server/routes/bridge/routeDefinitions/routes/bridgeToRemote.ts
|
|
711
712
|
import { requestHandlerValidator as requestHandlerValidator3 } from "@xylabs/express";
|
|
712
|
-
import { PayloadBuilder as PayloadBuilder11 } from "@xyo-network/payload-builder";
|
|
713
713
|
import { PayloadZodLooseOfSchema, PayloadZodStrictOfSchema as PayloadZodStrictOfSchema2 } from "@xyo-network/payload-model";
|
|
714
|
+
import { PayloadBuilder as PayloadBuilder11 } from "@xyo-network/sdk-js";
|
|
714
715
|
import { BridgeIntentFieldsZod, BridgeIntentSchema as BridgeIntentSchema2, BridgeSourceObservationFieldsZod, BridgeSourceObservationSchema, SignedTransactionBoundWitnessZod, TransferZod } from "@xyo-network/xl1-sdk";
|
|
715
716
|
import { z as z2 } from "zod";
|
|
716
717
|
|
|
@@ -726,16 +727,33 @@ var calculateBridgeFees = /* @__PURE__ */ __name((srcAmount, feeStructure) => {
|
|
|
726
727
|
const destAmountBigInt = srcAmountBigInt > feeTotalBigInt ? srcAmountBigInt - feeTotalBigInt : 0n;
|
|
727
728
|
const destAmount = toHex2(destAmountBigInt);
|
|
728
729
|
return {
|
|
729
|
-
destAmount,
|
|
730
730
|
feeFixed,
|
|
731
|
-
feeVariable
|
|
731
|
+
feeVariable,
|
|
732
|
+
srcAmount
|
|
732
733
|
};
|
|
733
734
|
}, "calculateBridgeFees");
|
|
734
735
|
|
|
736
|
+
// src/util/createBridgeTransfer.ts
|
|
737
|
+
import { hexToBigInt as hexToBigInt4 } from "@xylabs/sdk-js";
|
|
738
|
+
import { createTransferPayload } from "@xyo-network/xl1-sdk";
|
|
739
|
+
var createBridgeTransfer = /* @__PURE__ */ __name((sender, srcAmount, escrowAddress, feesAddress, context) => {
|
|
740
|
+
const { feeFixed, feeVariable } = context;
|
|
741
|
+
const escrowAmount = hexToBigInt4(srcAmount);
|
|
742
|
+
const feesAmount = hexToBigInt4(feeFixed) + hexToBigInt4(feeVariable);
|
|
743
|
+
const transfers = escrowAddress === feesAddress ? {
|
|
744
|
+
[feesAddress]: escrowAmount + feesAmount
|
|
745
|
+
} : {
|
|
746
|
+
[escrowAddress]: escrowAmount,
|
|
747
|
+
[feesAddress]: feesAmount
|
|
748
|
+
};
|
|
749
|
+
const transfer = createTransferPayload(sender, transfers, context);
|
|
750
|
+
return transfer;
|
|
751
|
+
}, "createBridgeTransfer");
|
|
752
|
+
|
|
735
753
|
// src/util/generateBridgeEstimate.ts
|
|
736
|
-
import {
|
|
737
|
-
import { PayloadBuilder as PayloadBuilder8 } from "@xyo-network/
|
|
738
|
-
import { BridgeIntentSchema
|
|
754
|
+
import { toAddress as toAddress2 } from "@xylabs/sdk-js";
|
|
755
|
+
import { PayloadBuilder as PayloadBuilder8 } from "@xyo-network/sdk-js";
|
|
756
|
+
import { BridgeIntentSchema } from "@xyo-network/xl1-sdk";
|
|
739
757
|
import { v4 } from "uuid";
|
|
740
758
|
var generateBridgeEstimate = /* @__PURE__ */ __name(async (srcAddress, srcAmount, destAddress, config, nonceOverride) => {
|
|
741
759
|
const { escrowAddress, feeFixed, feeRateBasisPoints, feesAddress, remoteChainId, remoteTokenAddress, xl1ChainId, xl1TokenAddress } = await getBridgeSettings(config);
|
|
@@ -744,7 +762,6 @@ var generateBridgeEstimate = /* @__PURE__ */ __name(async (srcAddress, srcAmount
|
|
|
744
762
|
feeFixed,
|
|
745
763
|
feeRateBasisPoints
|
|
746
764
|
});
|
|
747
|
-
const { destAmount, feeFixed: feeFixedAmount, feeVariable } = fees;
|
|
748
765
|
const nonce = nonceOverride ?? v4();
|
|
749
766
|
const bridgeIntentFields = {
|
|
750
767
|
// Source
|
|
@@ -755,22 +772,14 @@ var generateBridgeEstimate = /* @__PURE__ */ __name(async (srcAddress, srcAmount
|
|
|
755
772
|
// Destination
|
|
756
773
|
dest: remoteChainId,
|
|
757
774
|
destAddress,
|
|
758
|
-
destAmount,
|
|
775
|
+
destAmount: srcAmount,
|
|
759
776
|
destToken: remoteTokenAddress,
|
|
760
777
|
nonce
|
|
761
778
|
};
|
|
762
779
|
const bridgeIntent = new PayloadBuilder8({
|
|
763
780
|
schema: BridgeIntentSchema
|
|
764
781
|
}).fields(bridgeIntentFields).build();
|
|
765
|
-
const
|
|
766
|
-
destAmount,
|
|
767
|
-
feeFixed: feeFixedAmount,
|
|
768
|
-
feeVariable
|
|
769
|
-
};
|
|
770
|
-
const transfer = createTransferPayload(sender, {
|
|
771
|
-
[escrowAddress]: hexToBigInt4(destAmount),
|
|
772
|
-
[feesAddress]: hexToBigInt4(feeFixedAmount) + hexToBigInt4(feeVariable)
|
|
773
|
-
}, context);
|
|
782
|
+
const transfer = createBridgeTransfer(sender, srcAmount, escrowAddress, feesAddress, fees);
|
|
774
783
|
return [
|
|
775
784
|
bridgeIntent,
|
|
776
785
|
transfer
|
|
@@ -779,7 +788,7 @@ var generateBridgeEstimate = /* @__PURE__ */ __name(async (srcAddress, srcAmount
|
|
|
779
788
|
|
|
780
789
|
// src/util/validateBridgeEstimateExact.ts
|
|
781
790
|
import { isUndefined as isUndefined3 } from "@xylabs/sdk-js";
|
|
782
|
-
import { PayloadBuilder as PayloadBuilder9 } from "@xyo-network/
|
|
791
|
+
import { PayloadBuilder as PayloadBuilder9 } from "@xyo-network/sdk-js";
|
|
783
792
|
var validateBridgeEstimateExact = /* @__PURE__ */ __name(async (intent, transfer, config) => {
|
|
784
793
|
const { srcAddress, srcAmount, destAddress } = intent;
|
|
785
794
|
const [calculatedIntent, calculatedTransfer] = await generateBridgeEstimate(srcAddress, srcAmount, destAddress, config);
|
|
@@ -796,7 +805,7 @@ var validateBridgeEstimateExact = /* @__PURE__ */ __name(async (intent, transfer
|
|
|
796
805
|
// src/util/validateBridgeTransaction.ts
|
|
797
806
|
import { asAddress as asAddress4, isDefined as isDefined9 } from "@xylabs/sdk-js";
|
|
798
807
|
import { addressesContains, BoundWitnessValidator, payloadHashesContainsAll } from "@xyo-network/boundwitness-validator";
|
|
799
|
-
import { PayloadBuilder as PayloadBuilder10 } from "@xyo-network/
|
|
808
|
+
import { PayloadBuilder as PayloadBuilder10 } from "@xyo-network/sdk-js";
|
|
800
809
|
var validateBridgeTransaction = /* @__PURE__ */ __name(async (signedTxBw, intent, transfer, config) => {
|
|
801
810
|
const { srcAddress } = intent;
|
|
802
811
|
const chainId = getXl1ChainId(config);
|
|
@@ -1034,7 +1043,7 @@ var addRoutes = /* @__PURE__ */ __name((app, config, gateway) => {
|
|
|
1034
1043
|
}, "addRoutes");
|
|
1035
1044
|
|
|
1036
1045
|
// src/server/app.ts
|
|
1037
|
-
var getApp = /* @__PURE__ */ __name((
|
|
1046
|
+
var getApp = /* @__PURE__ */ __name((config, gateway) => {
|
|
1038
1047
|
addInstrumentation();
|
|
1039
1048
|
const app = express();
|
|
1040
1049
|
app.set("etag", false);
|
|
@@ -1048,390 +1057,23 @@ var getApp = /* @__PURE__ */ __name((node, config, gateway) => {
|
|
|
1048
1057
|
disableExpressDefaultPoweredByHeader(app);
|
|
1049
1058
|
app.use(customPoweredByHeader);
|
|
1050
1059
|
disableCaseSensitiveRouting(app);
|
|
1051
|
-
app.node = node;
|
|
1052
1060
|
addFlowProducer(app, config);
|
|
1053
1061
|
addRoutes(app, config, gateway);
|
|
1054
1062
|
app.use(standardErrors);
|
|
1055
1063
|
return app;
|
|
1056
1064
|
}, "getApp");
|
|
1057
1065
|
|
|
1058
|
-
// src/
|
|
1059
|
-
import { assertEx as
|
|
1060
|
-
import {
|
|
1061
|
-
import {
|
|
1066
|
+
// src/services/getServices.ts
|
|
1067
|
+
import { assertEx as assertEx14, isDefined as isDefined10 } from "@xylabs/sdk-js";
|
|
1068
|
+
import { initEvmProvider } from "@xyo-network/chain-orchestration";
|
|
1069
|
+
import { BridgeableToken__factory, LiquidityPoolBridge__factory } from "@xyo-network/typechain";
|
|
1070
|
+
import { HDWallet as HDWallet2 } from "@xyo-network/wallet";
|
|
1071
|
+
import { getAddress as getAddress2, Wallet } from "ethers";
|
|
1062
1072
|
|
|
1063
|
-
// src/
|
|
1073
|
+
// src/services/getIterableMap.ts
|
|
1064
1074
|
import { BaseMongoSdk } from "@xylabs/mongo";
|
|
1065
|
-
import { assertEx as assertEx16, isDefined as isDefined12 } from "@xylabs/sdk-js";
|
|
1066
|
-
import { MemoryArchivist } from "@xyo-network/archivist-memory";
|
|
1067
|
-
import { MongoDBArchivistV2 } from "@xyo-network/archivist-mongodb";
|
|
1068
|
-
import { ViewArchivist } from "@xyo-network/archivist-view";
|
|
1069
|
-
import { initEvmProvider } from "@xyo-network/chain-orchestration";
|
|
1070
1075
|
import { MongoMap } from "@xyo-network/chain-protocol";
|
|
1071
|
-
import {
|
|
1072
|
-
import { AbstractModule, LoggerModuleStatusReporter } from "@xyo-network/module-abstract";
|
|
1073
|
-
import { ModuleFactoryLocator } from "@xyo-network/module-factory-locator";
|
|
1074
|
-
import { MemorySentinel } from "@xyo-network/sentinel-memory";
|
|
1075
|
-
import { hasMongoConfig, mapToMapType, XyoGatewayRunnerMoniker } from "@xyo-network/xl1-sdk";
|
|
1076
|
-
|
|
1077
|
-
// src/modules/EVMLiquidityBridgeTransactionCompletionMonitorSentinel/EVMLiquidityBridgeTransactionCompletionMonitorSentinel.ts
|
|
1078
|
-
import { asAddress as asAddress6, asHex as asHex4, assertEx as assertEx14, delay, hexFromBigInt, hexToBigInt as hexToBigInt5, isDefined as isDefined10, isUndefined as isUndefined4 } from "@xylabs/sdk-js";
|
|
1079
|
-
import { PayloadBuilder as PayloadBuilder12 } from "@xyo-network/payload-builder";
|
|
1080
|
-
import { asSchema } from "@xyo-network/payload-model";
|
|
1081
|
-
import { AbstractSentinel } from "@xyo-network/sentinel-abstract";
|
|
1082
|
-
import { LiquidityPoolBridge__factory } from "@xyo-network/typechain";
|
|
1083
|
-
import { BridgeDestinationObservationSchema as BridgeDestinationObservationSchema3, flattenHydratedTransaction, flattenHydratedTransactions, isBridgeIntent as isBridgeIntent3, tryUnflattenHydratedTransaction } from "@xyo-network/xl1-sdk";
|
|
1084
|
-
import { Mutex } from "async-mutex";
|
|
1085
|
-
import { getAddress as getAddress2 } from "ethers/address";
|
|
1086
|
-
import { Wallet } from "ethers/wallet";
|
|
1087
|
-
var EVMLiquidityBridgeTransactionCompletionMonitorSentinelConfigSchema = asSchema("network.xyo.sentinel.chain.evm.liquidity.bridge.transaction.completion.monitor.config", true);
|
|
1088
|
-
var defaultJobCheckIntervalMs = 15e3;
|
|
1089
|
-
var EVMLiquidityBridgeTransactionCompletionMonitorSentinel = class extends AbstractSentinel {
|
|
1090
|
-
static {
|
|
1091
|
-
__name(this, "EVMLiquidityBridgeTransactionCompletionMonitorSentinel");
|
|
1092
|
-
}
|
|
1093
|
-
static configSchemas = [
|
|
1094
|
-
EVMLiquidityBridgeTransactionCompletionMonitorSentinelConfigSchema
|
|
1095
|
-
];
|
|
1096
|
-
static defaultConfigSchema = EVMLiquidityBridgeTransactionCompletionMonitorSentinelConfigSchema;
|
|
1097
|
-
_attemptsCounter;
|
|
1098
|
-
_bridge;
|
|
1099
|
-
_bridgeChainId;
|
|
1100
|
-
_bridgeRemoteChainId;
|
|
1101
|
-
_bridgeTokenAddress;
|
|
1102
|
-
_checkCounter;
|
|
1103
|
-
_errorCounter;
|
|
1104
|
-
_reportMutex = new Mutex();
|
|
1105
|
-
_successCounter;
|
|
1106
|
-
_wallet;
|
|
1107
|
-
get bridge() {
|
|
1108
|
-
return assertEx14(this._bridge, () => new Error("Bridge contract not initialized"));
|
|
1109
|
-
}
|
|
1110
|
-
get completedTransactions() {
|
|
1111
|
-
return assertEx14(this.params.completedTransactions, () => "Completed transactions map is not defined");
|
|
1112
|
-
}
|
|
1113
|
-
get jobCheckInterval() {
|
|
1114
|
-
return isDefined10(this.config.jobCheckInterval) ? this.config.jobCheckInterval : defaultJobCheckIntervalMs;
|
|
1115
|
-
}
|
|
1116
|
-
get pendingTransactions() {
|
|
1117
|
-
return assertEx14(this.params.pendingTransactions, () => "Pending transactions map is not defined");
|
|
1118
|
-
}
|
|
1119
|
-
get wallet() {
|
|
1120
|
-
return assertEx14(this._wallet, () => "wallet is required");
|
|
1121
|
-
}
|
|
1122
|
-
async createHandler() {
|
|
1123
|
-
await super.createHandler();
|
|
1124
|
-
this._attemptsCounter = this.meter?.createCounter("evm_liquidity_bridge_transaction_completion_monitor_sentinel_attempts_total", {
|
|
1125
|
-
description: "Number of attempts"
|
|
1126
|
-
});
|
|
1127
|
-
this._checkCounter = this.meter?.createCounter("evm_liquidity_bridge_transaction_completion_monitor_sentinel_check_total", {
|
|
1128
|
-
description: "Number of checks"
|
|
1129
|
-
});
|
|
1130
|
-
this._successCounter = this.meter?.createCounter("evm_liquidity_bridge_transaction_completion_monitor_sentinel_success_total", {
|
|
1131
|
-
description: "Number of successes"
|
|
1132
|
-
});
|
|
1133
|
-
this._errorCounter = this.meter?.createCounter("evm_liquidity_bridge_transaction_completion_monitor_sentinel_errors_total", {
|
|
1134
|
-
description: "Number of errors"
|
|
1135
|
-
});
|
|
1136
|
-
const { provider, bridgeAddress } = this.params;
|
|
1137
|
-
const key = assertEx14(this.account?.private?.hex, () => new Error("Account private key is required"));
|
|
1138
|
-
this._wallet = new Wallet(key, provider);
|
|
1139
|
-
this._bridge = LiquidityPoolBridge__factory.connect(getAddress2(bridgeAddress), this._wallet);
|
|
1140
|
-
const network = await provider.getNetwork();
|
|
1141
|
-
this._bridgeChainId = assertEx14(hexFromBigInt(network.chainId), () => new Error("Failed to parse bridgeChainId"));
|
|
1142
|
-
const tokenAddress = await this.bridge.token();
|
|
1143
|
-
this._bridgeTokenAddress = asAddress6(tokenAddress, true);
|
|
1144
|
-
const bridgeRemoteChain = await this.bridge.remoteChain();
|
|
1145
|
-
this._bridgeRemoteChainId = asHex4(bridgeRemoteChain);
|
|
1146
|
-
}
|
|
1147
|
-
async reportHandler(payloads) {
|
|
1148
|
-
if (isDefined10(payloads) && payloads.length > 0) {
|
|
1149
|
-
const signedHydratedTransaction = tryUnflattenHydratedTransaction(payloads);
|
|
1150
|
-
if (isDefined10(signedHydratedTransaction)) {
|
|
1151
|
-
const txHash = await PayloadBuilder12.hash(signedHydratedTransaction[0]);
|
|
1152
|
-
this.logger?.info(`Adding transaction ${signedHydratedTransaction[0]} with hash ${txHash} to pending transactions for monitoring`);
|
|
1153
|
-
await this.pendingTransactions.set(txHash, signedHydratedTransaction);
|
|
1154
|
-
return flattenHydratedTransaction(signedHydratedTransaction);
|
|
1155
|
-
}
|
|
1156
|
-
return [];
|
|
1157
|
-
} else {
|
|
1158
|
-
if (this._reportMutex.isLocked()) {
|
|
1159
|
-
this.logger?.debug(`EVMLiquidityBridgeTransactionCompletionMonitorSentinel [${this.id}] is already running, skipping report [${Date.now()}]`);
|
|
1160
|
-
return [];
|
|
1161
|
-
}
|
|
1162
|
-
return await this._reportMutex.runExclusive(async () => {
|
|
1163
|
-
const response = [];
|
|
1164
|
-
if (isUndefined4(payloads) || payloads.length === 0) {
|
|
1165
|
-
await this.processAllTransactions();
|
|
1166
|
-
}
|
|
1167
|
-
return response;
|
|
1168
|
-
});
|
|
1169
|
-
}
|
|
1170
|
-
}
|
|
1171
|
-
async processAllTransactions() {
|
|
1172
|
-
const results = [];
|
|
1173
|
-
for await (const [hash, signedHydratedTransaction] of this.pendingTransactions) {
|
|
1174
|
-
const result = await this.processTransaction([
|
|
1175
|
-
hash,
|
|
1176
|
-
signedHydratedTransaction
|
|
1177
|
-
]);
|
|
1178
|
-
if (isDefined10(result)) results.push(result[1]);
|
|
1179
|
-
await delay(this.jobCheckInterval);
|
|
1180
|
-
}
|
|
1181
|
-
return flattenHydratedTransactions(results);
|
|
1182
|
-
}
|
|
1183
|
-
async processTransaction([hash, signedHydratedTransaction]) {
|
|
1184
|
-
this.logger?.info(`Checking for transaction ${signedHydratedTransaction[0]} with hash ${hash}`);
|
|
1185
|
-
try {
|
|
1186
|
-
let ret = void 0;
|
|
1187
|
-
this._checkCounter?.add(1);
|
|
1188
|
-
const bridgeIntents = signedHydratedTransaction[1].filter(isBridgeIntent3);
|
|
1189
|
-
if (bridgeIntents.length !== 1) {
|
|
1190
|
-
await this.pendingTransactions.delete(hash);
|
|
1191
|
-
return ret;
|
|
1192
|
-
}
|
|
1193
|
-
const bridgeIntent = bridgeIntents[0];
|
|
1194
|
-
this._attemptsCounter?.add(1);
|
|
1195
|
-
const bridgeDestinationObservation = await this.relayBridgeIntentSync(bridgeIntent);
|
|
1196
|
-
await this.completedTransactions.set(hash, bridgeDestinationObservation);
|
|
1197
|
-
await this.pendingTransactions.delete(hash);
|
|
1198
|
-
this._successCounter?.add(1);
|
|
1199
|
-
return ret;
|
|
1200
|
-
} catch (error) {
|
|
1201
|
-
this._errorCounter?.add(1);
|
|
1202
|
-
this.logger?.error(`Error checking for transaction ${signedHydratedTransaction[0]} with hash ${hash}:`, error);
|
|
1203
|
-
}
|
|
1204
|
-
}
|
|
1205
|
-
/**
|
|
1206
|
-
* Relays a given BridgeIntent.
|
|
1207
|
-
* @param bridgeIntent The BridgeIntent to relay
|
|
1208
|
-
* @returns Relays the intent in a blocking manner, returning the resulting BridgeDestinationObservation if successful
|
|
1209
|
-
*/
|
|
1210
|
-
async relayBridgeIntentSync(bridgeIntent) {
|
|
1211
|
-
const amount = hexToBigInt5(bridgeIntent.destAmount);
|
|
1212
|
-
const nonce = await this.wallet.getNonce();
|
|
1213
|
-
const srcAddress = getAddress2(bridgeIntent.srcAddress);
|
|
1214
|
-
const destAddress = getAddress2(bridgeIntent.destAddress);
|
|
1215
|
-
const tx = await this.bridge.bridgeFromRemote(srcAddress, destAddress, amount, nonce);
|
|
1216
|
-
const confirmation = await tx.wait();
|
|
1217
|
-
const transactionResponse = await confirmation?.getTransaction();
|
|
1218
|
-
const destConfirmation = asHex4(transactionResponse?.hash ?? "", true);
|
|
1219
|
-
const { schema, ...rest } = bridgeIntent;
|
|
1220
|
-
const result = new PayloadBuilder12({
|
|
1221
|
-
schema: BridgeDestinationObservationSchema3
|
|
1222
|
-
}).fields({
|
|
1223
|
-
...rest,
|
|
1224
|
-
destConfirmation
|
|
1225
|
-
}).build();
|
|
1226
|
-
return result;
|
|
1227
|
-
}
|
|
1228
|
-
};
|
|
1229
|
-
|
|
1230
|
-
// src/modules/XL1TransactionCompletionMonitorSentinel/XL1TransactionCompletionMonitorSentinel.ts
|
|
1231
|
-
import { assertEx as assertEx15, delay as delay2, isDefined as isDefined11, isNull as isNull2, isUndefined as isUndefined5 } from "@xylabs/sdk-js";
|
|
1232
|
-
import { PayloadBuilder as PayloadBuilder13 } from "@xyo-network/payload-builder";
|
|
1233
|
-
import { asSchema as asSchema2 } from "@xyo-network/payload-model";
|
|
1234
|
-
import { AbstractSentinel as AbstractSentinel2 } from "@xyo-network/sentinel-abstract";
|
|
1235
|
-
import { flattenHydratedTransaction as flattenHydratedTransaction2, flattenHydratedTransactions as flattenHydratedTransactions2, tryUnflattenHydratedTransaction as tryUnflattenHydratedTransaction2 } from "@xyo-network/xl1-sdk";
|
|
1236
|
-
import { Mutex as Mutex2 } from "async-mutex";
|
|
1237
|
-
var XL1TransactionCompletionMonitorSentinelConfigSchema = asSchema2("network.xyo.sentinel.chain.transaction.completion.monitor.config", true);
|
|
1238
|
-
var defaultJobCheckIntervalMs2 = 15e3;
|
|
1239
|
-
var XL1TransactionCompletionMonitorSentinel = class extends AbstractSentinel2 {
|
|
1240
|
-
static {
|
|
1241
|
-
__name(this, "XL1TransactionCompletionMonitorSentinel");
|
|
1242
|
-
}
|
|
1243
|
-
static configSchemas = [
|
|
1244
|
-
XL1TransactionCompletionMonitorSentinelConfigSchema
|
|
1245
|
-
];
|
|
1246
|
-
static defaultConfigSchema = XL1TransactionCompletionMonitorSentinelConfigSchema;
|
|
1247
|
-
_attemptsCounter;
|
|
1248
|
-
_checkCounter;
|
|
1249
|
-
_errorCounter;
|
|
1250
|
-
_reportMutex = new Mutex2();
|
|
1251
|
-
_successCounter;
|
|
1252
|
-
get completedTransactions() {
|
|
1253
|
-
return assertEx15(this.params.completedTransactions, () => "Completed transactions map is not defined");
|
|
1254
|
-
}
|
|
1255
|
-
get jobCheckInterval() {
|
|
1256
|
-
return isDefined11(this.config.jobCheckInterval) ? this.config.jobCheckInterval : defaultJobCheckIntervalMs2;
|
|
1257
|
-
}
|
|
1258
|
-
get pendingTransactions() {
|
|
1259
|
-
return assertEx15(this.params.pendingTransactions, () => "Pending transactions map is not defined");
|
|
1260
|
-
}
|
|
1261
|
-
get viewer() {
|
|
1262
|
-
return assertEx15(this.params.viewer, () => "Viewer is not defined in params");
|
|
1263
|
-
}
|
|
1264
|
-
async createHandler() {
|
|
1265
|
-
await super.createHandler();
|
|
1266
|
-
this._attemptsCounter = this.meter?.createCounter("xl1_transaction_completion_monitor_sentinel_attempts_total", {
|
|
1267
|
-
description: "Number of attempts"
|
|
1268
|
-
});
|
|
1269
|
-
this._checkCounter = this.meter?.createCounter("xl1_transaction_completion_monitor_sentinel_check_total", {
|
|
1270
|
-
description: "Number of checks"
|
|
1271
|
-
});
|
|
1272
|
-
this._successCounter = this.meter?.createCounter("xl1_transaction_completion_monitor_sentinel_success_total", {
|
|
1273
|
-
description: "Number of successes"
|
|
1274
|
-
});
|
|
1275
|
-
this._errorCounter = this.meter?.createCounter("xl1_transaction_completion_monitor_sentinel_errors_total", {
|
|
1276
|
-
description: "Number of errors"
|
|
1277
|
-
});
|
|
1278
|
-
}
|
|
1279
|
-
async reportHandler(payloads) {
|
|
1280
|
-
if (isDefined11(payloads) && payloads.length > 0) {
|
|
1281
|
-
const signedHydratedTransaction = tryUnflattenHydratedTransaction2(payloads);
|
|
1282
|
-
if (isDefined11(signedHydratedTransaction)) {
|
|
1283
|
-
const txHash = await PayloadBuilder13.hash(signedHydratedTransaction[0]);
|
|
1284
|
-
this.logger?.info(`Adding transaction ${signedHydratedTransaction[0]} with hash ${txHash} to pending transactions for monitoring`);
|
|
1285
|
-
await this.pendingTransactions.set(txHash, signedHydratedTransaction);
|
|
1286
|
-
return flattenHydratedTransaction2(signedHydratedTransaction);
|
|
1287
|
-
}
|
|
1288
|
-
return [];
|
|
1289
|
-
} else {
|
|
1290
|
-
if (this._reportMutex.isLocked()) {
|
|
1291
|
-
this.logger?.debug(`XL1TransactionCompletionMonitorSentinel [${this.id}] is already running, skipping report [${Date.now()}]`);
|
|
1292
|
-
return [];
|
|
1293
|
-
}
|
|
1294
|
-
return await this._reportMutex.runExclusive(async () => {
|
|
1295
|
-
const response = [];
|
|
1296
|
-
if (isUndefined5(payloads) || payloads.length === 0) {
|
|
1297
|
-
await this.processAllTransactions();
|
|
1298
|
-
}
|
|
1299
|
-
return response;
|
|
1300
|
-
});
|
|
1301
|
-
}
|
|
1302
|
-
}
|
|
1303
|
-
async processAllTransactions() {
|
|
1304
|
-
const results = [];
|
|
1305
|
-
for await (const [hash, signedHydratedTransaction] of this.pendingTransactions) {
|
|
1306
|
-
const result = await this.processTransaction([
|
|
1307
|
-
hash,
|
|
1308
|
-
signedHydratedTransaction
|
|
1309
|
-
]);
|
|
1310
|
-
if (isDefined11(result)) results.push(result[1]);
|
|
1311
|
-
await delay2(this.jobCheckInterval);
|
|
1312
|
-
}
|
|
1313
|
-
return flattenHydratedTransactions2(results);
|
|
1314
|
-
}
|
|
1315
|
-
async processTransaction([hash, signedHydratedTransaction]) {
|
|
1316
|
-
this.logger?.info(`Checking for transaction ${signedHydratedTransaction[0]} with hash ${hash}`);
|
|
1317
|
-
try {
|
|
1318
|
-
let ret = void 0;
|
|
1319
|
-
this._checkCounter?.add(1);
|
|
1320
|
-
this._attemptsCounter?.add(1);
|
|
1321
|
-
const tx = await this.viewer.transactionByHash(hash);
|
|
1322
|
-
if (isDefined11(tx) && !isNull2(tx)) {
|
|
1323
|
-
await this.completedTransactions.set(hash, signedHydratedTransaction);
|
|
1324
|
-
this.logger?.info(`Found transaction ${signedHydratedTransaction[0]} with hash ${hash}`);
|
|
1325
|
-
this.logger?.info(`Removing completed transaction ${signedHydratedTransaction[0]} with hash ${hash}`);
|
|
1326
|
-
await this.pendingTransactions.delete(hash);
|
|
1327
|
-
ret = [
|
|
1328
|
-
hash,
|
|
1329
|
-
signedHydratedTransaction
|
|
1330
|
-
];
|
|
1331
|
-
} else {
|
|
1332
|
-
const currentBlockNumber = await this.viewer.currentBlockNumber();
|
|
1333
|
-
if (signedHydratedTransaction[0].exp < currentBlockNumber) {
|
|
1334
|
-
this.logger?.info(`Removing expired transaction ${signedHydratedTransaction[0]} with hash ${hash}`);
|
|
1335
|
-
await this.pendingTransactions.delete(hash);
|
|
1336
|
-
}
|
|
1337
|
-
}
|
|
1338
|
-
this._successCounter?.add(1);
|
|
1339
|
-
return ret;
|
|
1340
|
-
} catch (error) {
|
|
1341
|
-
this._errorCounter?.add(1);
|
|
1342
|
-
this.logger?.error(`Error checking for transaction ${signedHydratedTransaction[0]} with hash ${hash}:`, error);
|
|
1343
|
-
}
|
|
1344
|
-
}
|
|
1345
|
-
};
|
|
1346
|
-
|
|
1347
|
-
// src/manifest/getModuleLocator.ts
|
|
1348
|
-
var getModuleLocator = /* @__PURE__ */ __name(async (context) => {
|
|
1349
|
-
const { config, locator, logger } = context;
|
|
1350
|
-
const { otlpEndpoint } = config.telemetry?.otel ?? {};
|
|
1351
|
-
const { path: endpoint = "/metrics", port = 9468 } = config.telemetry?.metrics?.scrape ?? {};
|
|
1352
|
-
const { traceProvider, meterProvider } = await initTelemetry({
|
|
1353
|
-
attributes: {
|
|
1354
|
-
serviceName: "xl1-bridge",
|
|
1355
|
-
serviceVersion: "1.0.0"
|
|
1356
|
-
},
|
|
1357
|
-
otlpEndpoint,
|
|
1358
|
-
metricsConfig: {
|
|
1359
|
-
endpoint,
|
|
1360
|
-
port
|
|
1361
|
-
}
|
|
1362
|
-
});
|
|
1363
|
-
if (isDefined12(logger)) AbstractModule.defaultLogger = logger;
|
|
1364
|
-
const statusReporter = logger ? new LoggerModuleStatusReporter(logger) : void 0;
|
|
1365
|
-
const moduleLocator = new ModuleFactoryLocator();
|
|
1366
|
-
const mongoConfig = config.storage?.mongo;
|
|
1367
|
-
if (hasMongoConfig(mongoConfig)) {
|
|
1368
|
-
const { connectionString: dbConnectionString, database: dbName, domain: dbDomain, password: dbPassword, username: dbUserName } = mongoConfig;
|
|
1369
|
-
const payloadSdkConfig = {
|
|
1370
|
-
dbConnectionString,
|
|
1371
|
-
dbDomain,
|
|
1372
|
-
dbName,
|
|
1373
|
-
dbPassword,
|
|
1374
|
-
dbUserName
|
|
1375
|
-
};
|
|
1376
|
-
const params = {
|
|
1377
|
-
meterProvider,
|
|
1378
|
-
payloadSdkConfig,
|
|
1379
|
-
statusReporter,
|
|
1380
|
-
traceProvider
|
|
1381
|
-
};
|
|
1382
|
-
moduleLocator.register(MongoDBArchivistV2.factory(params), void 0, true);
|
|
1383
|
-
}
|
|
1384
|
-
moduleLocator.register(MemoryArchivist.factory({
|
|
1385
|
-
traceProvider,
|
|
1386
|
-
meterProvider,
|
|
1387
|
-
statusReporter
|
|
1388
|
-
}));
|
|
1389
|
-
moduleLocator.register(MemorySentinel.factory({
|
|
1390
|
-
traceProvider,
|
|
1391
|
-
meterProvider,
|
|
1392
|
-
statusReporter
|
|
1393
|
-
}));
|
|
1394
|
-
moduleLocator.register(ViewArchivist.factory({
|
|
1395
|
-
traceProvider,
|
|
1396
|
-
meterProvider,
|
|
1397
|
-
statusReporter
|
|
1398
|
-
}));
|
|
1399
|
-
const gateway = await locator.getInstance(XyoGatewayRunnerMoniker);
|
|
1400
|
-
const viewer = assertEx16(gateway.connection.viewer, () => "Gateway viewer is not defined");
|
|
1401
|
-
const pendingXl1ToEthXl1BridgeIntentTransactions = await getIterableMap(config, "liquidity_bridge_xl1_to_eth_xl1_pending");
|
|
1402
|
-
const completedXl1ToEthXl1BridgeIntentTransactions = await getIterableMap(config, "liquidity_bridge_xl1_to_eth_xl1_completed");
|
|
1403
|
-
const xl1TransactionCompletionMonitorSentinelParams = {
|
|
1404
|
-
completedTransactions: completedXl1ToEthXl1BridgeIntentTransactions,
|
|
1405
|
-
config: {
|
|
1406
|
-
schema: XL1TransactionCompletionMonitorSentinelConfigSchema
|
|
1407
|
-
},
|
|
1408
|
-
meterProvider,
|
|
1409
|
-
pendingTransactions: pendingXl1ToEthXl1BridgeIntentTransactions,
|
|
1410
|
-
statusReporter,
|
|
1411
|
-
traceProvider,
|
|
1412
|
-
viewer
|
|
1413
|
-
};
|
|
1414
|
-
moduleLocator.register(XL1TransactionCompletionMonitorSentinel.factory(xl1TransactionCompletionMonitorSentinelParams));
|
|
1415
|
-
const completedEthXl1BridgeTransactions = await getIterableMap(config, "liquidity_bridge_eth_xl1_bridge_completed");
|
|
1416
|
-
const provider = await initEvmProvider({
|
|
1417
|
-
config
|
|
1418
|
-
});
|
|
1419
|
-
const bridgeAddress = config.actors.bridge.remoteBridgeContractAddress;
|
|
1420
|
-
const evmLiquidityBridgeTransactionCompletionMonitorSentinelParams = {
|
|
1421
|
-
bridgeAddress,
|
|
1422
|
-
completedTransactions: completedEthXl1BridgeTransactions,
|
|
1423
|
-
config: {
|
|
1424
|
-
schema: EVMLiquidityBridgeTransactionCompletionMonitorSentinelConfigSchema
|
|
1425
|
-
},
|
|
1426
|
-
meterProvider,
|
|
1427
|
-
pendingTransactions: completedXl1ToEthXl1BridgeIntentTransactions,
|
|
1428
|
-
provider,
|
|
1429
|
-
statusReporter,
|
|
1430
|
-
traceProvider
|
|
1431
|
-
};
|
|
1432
|
-
moduleLocator.register(EVMLiquidityBridgeTransactionCompletionMonitorSentinel.factory(evmLiquidityBridgeTransactionCompletionMonitorSentinelParams));
|
|
1433
|
-
return moduleLocator;
|
|
1434
|
-
}, "getModuleLocator");
|
|
1076
|
+
import { hasMongoConfig, mapToMapType } from "@xyo-network/xl1-sdk";
|
|
1435
1077
|
var getIterableMap = /* @__PURE__ */ __name(async (config, collection) => {
|
|
1436
1078
|
const mongoConfig = config.storage?.mongo;
|
|
1437
1079
|
if (hasMongoConfig(mongoConfig)) {
|
|
@@ -1460,110 +1102,19 @@ var getIterableMap = /* @__PURE__ */ __name(async (config, collection) => {
|
|
|
1460
1102
|
}
|
|
1461
1103
|
}, "getIterableMap");
|
|
1462
1104
|
|
|
1463
|
-
// src/
|
|
1464
|
-
import { assertEx as assertEx17 } from "@xylabs/sdk-js";
|
|
1465
|
-
import { ManifestWrapper } from "@xyo-network/manifest-wrapper";
|
|
1466
|
-
import { buildJsonRpcProviderLocator, HttpRpcTransport } from "@xyo-network/xl1-sdk";
|
|
1467
|
-
|
|
1468
|
-
// src/manifest/node.json
|
|
1469
|
-
var node_default = {
|
|
1470
|
-
$schema: "https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json",
|
|
1471
|
-
nodes: [
|
|
1472
|
-
{
|
|
1473
|
-
config: {
|
|
1474
|
-
accountPath: "44'/60'/1",
|
|
1475
|
-
name: "XYOEthereumBridge",
|
|
1476
|
-
schema: "network.xyo.node.config"
|
|
1477
|
-
},
|
|
1478
|
-
modules: {
|
|
1479
|
-
private: [],
|
|
1480
|
-
public: []
|
|
1481
|
-
}
|
|
1482
|
-
}
|
|
1483
|
-
],
|
|
1484
|
-
schema: "network.xyo.manifest"
|
|
1485
|
-
};
|
|
1486
|
-
|
|
1487
|
-
// src/manifest/nodeManifest.ts
|
|
1488
|
-
var NodeManifest = node_default;
|
|
1489
|
-
|
|
1490
|
-
// src/manifest/getNode.ts
|
|
1491
|
-
var getNode = /* @__PURE__ */ __name(async (context) => {
|
|
1492
|
-
const { config, wallet } = context;
|
|
1493
|
-
const endpoint = assertEx17(config.actors.bridge.remote?.rpc?.url ?? config.remote?.rpc?.url, () => "RPC URL is required for Node");
|
|
1494
|
-
const transportFactory = /* @__PURE__ */ __name((schemas) => new HttpRpcTransport(endpoint, schemas), "transportFactory");
|
|
1495
|
-
const signerAccount = await getBridgeWalletAccount(config);
|
|
1496
|
-
const locator = await buildJsonRpcProviderLocator({
|
|
1497
|
-
signerAccount,
|
|
1498
|
-
transportFactory
|
|
1499
|
-
});
|
|
1500
|
-
const moduleLocator = await getModuleLocator({
|
|
1501
|
-
...context,
|
|
1502
|
-
locator
|
|
1503
|
-
});
|
|
1504
|
-
const wrapper = new ManifestWrapper(NodeManifest, wallet, moduleLocator, [], []);
|
|
1505
|
-
const [node, ...childNodes] = await wrapper.loadNodes();
|
|
1506
|
-
if (childNodes?.length > 0) {
|
|
1507
|
-
await Promise.all(childNodes.map((childNode) => node.register(childNode)));
|
|
1508
|
-
await Promise.all(childNodes.map((childNode) => node.attach(childNode.address, true)));
|
|
1509
|
-
}
|
|
1510
|
-
return node;
|
|
1511
|
-
}, "getNode");
|
|
1512
|
-
|
|
1513
|
-
// src/manifest/getServices.ts
|
|
1514
|
-
import { assertEx as assertEx18, isDefined as isDefined13 } from "@xylabs/sdk-js";
|
|
1515
|
-
import { initEvmProvider as initEvmProvider2 } from "@xyo-network/chain-orchestration";
|
|
1516
|
-
import { BridgeableToken__factory, LiquidityPoolBridge__factory as LiquidityPoolBridge__factory2 } from "@xyo-network/typechain";
|
|
1517
|
-
import { HDWallet as HDWallet2 } from "@xyo-network/wallet";
|
|
1518
|
-
import { getAddress as getAddress3, Wallet as Wallet2 } from "ethers";
|
|
1519
|
-
|
|
1520
|
-
// src/manifest/getIterableMap.ts
|
|
1521
|
-
import { BaseMongoSdk as BaseMongoSdk2 } from "@xylabs/mongo";
|
|
1522
|
-
import { MongoMap as MongoMap2 } from "@xyo-network/chain-protocol";
|
|
1523
|
-
import { hasMongoConfig as hasMongoConfig2, mapToMapType as mapToMapType2 } from "@xyo-network/xl1-sdk";
|
|
1524
|
-
var getIterableMap2 = /* @__PURE__ */ __name(async (config, collection) => {
|
|
1525
|
-
const mongoConfig = config.storage?.mongo;
|
|
1526
|
-
if (hasMongoConfig2(mongoConfig)) {
|
|
1527
|
-
const { connectionString: dbConnectionString, database: dbName, domain: dbDomain, password: dbPassword, username: dbUserName } = mongoConfig;
|
|
1528
|
-
const payloadSdkConfig = {
|
|
1529
|
-
dbConnectionString,
|
|
1530
|
-
dbDomain,
|
|
1531
|
-
dbName,
|
|
1532
|
-
dbPassword,
|
|
1533
|
-
dbUserName
|
|
1534
|
-
};
|
|
1535
|
-
const sdkBalanceSummaryMap = new BaseMongoSdk2({
|
|
1536
|
-
...payloadSdkConfig,
|
|
1537
|
-
collection
|
|
1538
|
-
});
|
|
1539
|
-
const result = await MongoMap2.create({
|
|
1540
|
-
sdk: sdkBalanceSummaryMap,
|
|
1541
|
-
getCache: {
|
|
1542
|
-
enabled: true,
|
|
1543
|
-
maxEntries: 5e3
|
|
1544
|
-
}
|
|
1545
|
-
});
|
|
1546
|
-
return result;
|
|
1547
|
-
} else {
|
|
1548
|
-
return mapToMapType2(/* @__PURE__ */ new Map());
|
|
1549
|
-
}
|
|
1550
|
-
}, "getIterableMap");
|
|
1551
|
-
|
|
1552
|
-
// src/manifest/getServices.ts
|
|
1105
|
+
// src/services/getServices.ts
|
|
1553
1106
|
var getServices = /* @__PURE__ */ __name(async (context, gateway) => {
|
|
1554
1107
|
const { config } = context;
|
|
1555
|
-
const ethTxStateMap = await
|
|
1556
|
-
const xl1TxStateMap = await
|
|
1557
|
-
const provider = await
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
const
|
|
1561
|
-
const
|
|
1562
|
-
const
|
|
1563
|
-
const bridgeableToken = BridgeableToken__factory.connect(getAddress3(remoteTokenAddress), wallet);
|
|
1564
|
-
const bridge = LiquidityPoolBridge__factory2.connect(getAddress3(remoteBridgeContractAddress), wallet);
|
|
1108
|
+
const ethTxStateMap = await getIterableMap(config, "liquidity_bridge_xl1_to_eth_eth_tx_state");
|
|
1109
|
+
const xl1TxStateMap = await getIterableMap(config, "liquidity_bridge_xl1_to_eth_xl1_tx_state");
|
|
1110
|
+
const provider = await initEvmProvider(context);
|
|
1111
|
+
const { remoteBridgeContractAddress, remoteChainWalletPrivateKey, remoteTokenAddress, mnemonic } = config;
|
|
1112
|
+
const account = isDefined10(mnemonic) ? await HDWallet2.fromPhrase(mnemonic) : await HDWallet2.random();
|
|
1113
|
+
const wallet = new Wallet(remoteChainWalletPrivateKey, provider);
|
|
1114
|
+
const bridgeableToken = BridgeableToken__factory.connect(getAddress2(remoteTokenAddress), wallet);
|
|
1115
|
+
const bridge = LiquidityPoolBridge__factory.connect(getAddress2(remoteBridgeContractAddress), wallet);
|
|
1565
1116
|
const bridgeOwner = await bridge.owner();
|
|
1566
|
-
|
|
1117
|
+
assertEx14(bridgeOwner.toLowerCase() === wallet.address.toLowerCase(), () => "Wallet is not the owner of the bridge contract");
|
|
1567
1118
|
return {
|
|
1568
1119
|
account,
|
|
1569
1120
|
bridge,
|
|
@@ -1584,43 +1135,11 @@ var addWorkers = /* @__PURE__ */ __name((config, services) => {
|
|
|
1584
1135
|
|
|
1585
1136
|
// src/server/server.ts
|
|
1586
1137
|
var hostname = "::";
|
|
1587
|
-
var getSeedPhrase = /* @__PURE__ */ __name(async (bios, config, logger) => {
|
|
1588
|
-
const storedSeedPhrase = await bios.seedPhraseStore.get("os");
|
|
1589
|
-
logger?.debug(`[Bridge] Stored mnemonic: ${storedSeedPhrase}`);
|
|
1590
|
-
const { mnemonic } = config.actors.api;
|
|
1591
|
-
if (isString(storedSeedPhrase) && isString(mnemonic)) {
|
|
1592
|
-
logger?.warn("[Bridge] Stored mnemonic does not match supplied. Updating stored mnemonic to supplied.");
|
|
1593
|
-
await bios.seedPhraseStore.set("os", mnemonic);
|
|
1594
|
-
} else {
|
|
1595
|
-
let seedPhrase;
|
|
1596
|
-
if (isString(mnemonic)) {
|
|
1597
|
-
seedPhrase = mnemonic;
|
|
1598
|
-
} else {
|
|
1599
|
-
seedPhrase = HDWallet3.generateMnemonic();
|
|
1600
|
-
logger?.log("[Bridge] No mnemonic provided, using random mnemonic. This is not recommended for production use.");
|
|
1601
|
-
logger?.log(`[Bridge] Mnemonic: ${seedPhrase}`);
|
|
1602
|
-
}
|
|
1603
|
-
await bios.seedPhraseStore.set("os", seedPhrase);
|
|
1604
|
-
}
|
|
1605
|
-
return assertEx19(await bios.seedPhraseStore.get("os"), () => "Unable to acquire mnemonic from bios");
|
|
1606
|
-
}, "getSeedPhrase");
|
|
1607
1138
|
var getServer = /* @__PURE__ */ __name(async (context, gateway) => {
|
|
1608
1139
|
const { logger, config } = context;
|
|
1609
|
-
const { port
|
|
1610
|
-
const
|
|
1611
|
-
const
|
|
1612
|
-
const wallet = await HDWallet3.fromPhrase(seedPhrase);
|
|
1613
|
-
const nodeContext = {
|
|
1614
|
-
wallet,
|
|
1615
|
-
logger,
|
|
1616
|
-
config
|
|
1617
|
-
};
|
|
1618
|
-
const node = context.node ?? await getNode(nodeContext);
|
|
1619
|
-
const app = getApp(node, config, gateway);
|
|
1620
|
-
const services = await getServices({
|
|
1621
|
-
config,
|
|
1622
|
-
logger
|
|
1623
|
-
}, gateway);
|
|
1140
|
+
const { port } = config;
|
|
1141
|
+
const app = getApp(config, gateway);
|
|
1142
|
+
const services = await getServices(context, gateway);
|
|
1624
1143
|
addWorkers(config, services);
|
|
1625
1144
|
const server = app.listen(port, hostname, () => logger?.log(`[Bridge] Server listening at http://${hostname}:${port}`));
|
|
1626
1145
|
server.setTimeout(2e4);
|
|
@@ -1646,7 +1165,7 @@ var BridgeActor = class extends ActorV3 {
|
|
|
1646
1165
|
}
|
|
1647
1166
|
async createHandler() {
|
|
1648
1167
|
await super.createHandler();
|
|
1649
|
-
this._gatewayRunner = await this.locator.getInstance(
|
|
1168
|
+
this._gatewayRunner = await this.locator.getInstance(XyoGatewayRunnerMoniker);
|
|
1650
1169
|
}
|
|
1651
1170
|
async startHandler() {
|
|
1652
1171
|
await super.startHandler();
|
|
@@ -1658,7 +1177,7 @@ var BridgeActor = class extends ActorV3 {
|
|
|
1658
1177
|
this.stopServer();
|
|
1659
1178
|
}
|
|
1660
1179
|
async startServer() {
|
|
1661
|
-
this.server = await getServer(this.context, this._gatewayRunner);
|
|
1180
|
+
this.server = await getServer(asBridgeConfigContext(this.context, true), this._gatewayRunner);
|
|
1662
1181
|
}
|
|
1663
1182
|
stopServer() {
|
|
1664
1183
|
this.server?.close();
|