@instadapp/interop-x 0.0.0-dev.d05464a → 0.0.0-dev.d060c38
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/.github/workflows/ci.yml +19 -0
- package/dist/package.json +23 -13
- package/dist/src/abi/aaveV2Resolver.json +832 -0
- package/dist/src/abi/balanceResolver.json +211 -0
- package/dist/src/abi/connectors/index.js +36 -0
- package/dist/src/abi/connectors/v1/aave.js +148 -0
- package/dist/src/abi/connectors/v1/aave_claim.js +4 -0
- package/dist/src/abi/connectors/v1/aave_migrate.js +109 -0
- package/dist/src/abi/connectors/v1/aave_polygon_migrate.js +110 -0
- package/dist/src/abi/connectors/v1/aave_stake.js +4 -0
- package/dist/src/abi/connectors/v1/aave_v1_import.js +54 -0
- package/dist/src/abi/connectors/v1/aave_v2.js +230 -0
- package/dist/src/abi/connectors/v1/aave_v2_import.js +59 -0
- package/dist/src/abi/connectors/v1/authority.js +100 -0
- package/dist/src/abi/connectors/v1/basic.js +136 -0
- package/dist/src/abi/connectors/v1/chi.js +36 -0
- package/dist/src/abi/connectors/v1/comp.js +4 -0
- package/dist/src/abi/connectors/v1/compound.js +4 -0
- package/dist/src/abi/connectors/v1/compoundImport.js +69 -0
- package/dist/src/abi/connectors/v1/compoundImport_v2.js +4 -0
- package/dist/src/abi/connectors/v1/compound_old.js +448 -0
- package/dist/src/abi/connectors/v1/curve.js +140 -0
- package/dist/src/abi/connectors/v1/curve_claim.js +63 -0
- package/dist/src/abi/connectors/v1/curve_gauge.js +158 -0
- package/dist/src/abi/connectors/v1/curve_sbtc.js +140 -0
- package/dist/src/abi/connectors/v1/curve_susd.js +140 -0
- package/dist/src/abi/connectors/v1/curve_three.js +79 -0
- package/dist/src/abi/connectors/v1/curve_y.js +140 -0
- package/dist/src/abi/connectors/v1/dsa_migrate_v1_to_v2.js +4 -0
- package/dist/src/abi/connectors/v1/dydx.js +148 -0
- package/dist/src/abi/connectors/v1/dydx_flash.js +52 -0
- package/dist/src/abi/connectors/v1/fee.js +50 -0
- package/dist/src/abi/connectors/v1/gelato.js +1138 -0
- package/dist/src/abi/connectors/v1/index.js +58 -0
- package/dist/src/abi/connectors/v1/instapool.js +439 -0
- package/dist/src/abi/connectors/v1/instapool_v2.js +126 -0
- package/dist/src/abi/connectors/v1/kyber.js +117 -0
- package/dist/src/abi/connectors/v1/maker.js +480 -0
- package/dist/src/abi/connectors/v1/maker_old.js +300 -0
- package/dist/src/abi/connectors/v1/math.js +43 -0
- package/dist/src/abi/connectors/v1/migrate.js +46 -0
- package/dist/src/abi/connectors/v1/oasis.js +198 -0
- package/dist/src/abi/connectors/v1/oneInch.js +160 -0
- package/dist/src/abi/connectors/v1/polygon_bridge.js +4 -0
- package/dist/src/abi/connectors/v1/refinance.js +4 -0
- package/dist/src/abi/connectors/v1/staking.js +220 -0
- package/dist/src/abi/connectors/v1/swerve.js +179 -0
- package/dist/src/abi/connectors/v1/uniswap.js +297 -0
- package/dist/src/abi/connectors/v2/1INCH-A.js +4 -0
- package/dist/src/abi/connectors/v2/1INCH-B.js +4 -0
- package/dist/src/abi/connectors/v2/AAVE-CLAIM-A.js +4 -0
- package/dist/src/abi/connectors/v2/AAVE-CLAIM-B.js +166 -0
- package/dist/src/abi/connectors/v2/AAVE-STAKE-A.js +4 -0
- package/dist/src/abi/connectors/v2/AAVE-V1-A.js +130 -0
- package/dist/src/abi/connectors/v2/AAVE-V1-IMPORT-A.js +4 -0
- package/dist/src/abi/connectors/v2/AAVE-V2-A.js +230 -0
- package/dist/src/abi/connectors/v2/AAVE-V2-IMPORT-A.js +4 -0
- package/dist/src/abi/connectors/v2/AAVE-V2-IMPORT-B.js +225 -0
- package/dist/src/abi/connectors/v2/AUTHORITY-A.js +100 -0
- package/dist/src/abi/connectors/v2/B-COMPOUND-A.js +4 -0
- package/dist/src/abi/connectors/v2/B-LIQUITY-A.js +4 -0
- package/dist/src/abi/connectors/v2/B-MAKERDAO-A.js +4 -0
- package/dist/src/abi/connectors/v2/BASIC-A.js +136 -0
- package/dist/src/abi/connectors/v2/BASIC-B.js +4 -0
- package/dist/src/abi/connectors/v2/BASIC-C.js +4 -0
- package/dist/src/abi/connectors/v2/COMP-A.js +4 -0
- package/dist/src/abi/connectors/v2/COMPOUND-A.js +4 -0
- package/dist/src/abi/connectors/v2/COMPOUND-IMPORT-A.js +4 -0
- package/dist/src/abi/connectors/v2/COMPOUND-IMPORT-B.js +195 -0
- package/dist/src/abi/connectors/v2/G-UNISWAP-A.js +4 -0
- package/dist/src/abi/connectors/v2/GELATO-AAVE-A.js +4 -0
- package/dist/src/abi/connectors/v2/INST-A.js +4 -0
- package/dist/src/abi/connectors/v2/INST-LM-A.js +4 -0
- package/dist/src/abi/connectors/v2/INST-STAKING-A.js +4 -0
- package/dist/src/abi/connectors/v2/INST-STAKING-B.js +4 -0
- package/dist/src/abi/connectors/v2/INSTAPOOL-A.js +4 -0
- package/dist/src/abi/connectors/v2/LIQUITY-A.js +4 -0
- package/dist/src/abi/connectors/v2/MAKERDAO-A.js +4 -0
- package/dist/src/abi/connectors/v2/MAKERDAO-CLAIM-A.js +136 -0
- package/dist/src/abi/connectors/v2/PARASWAP-A.js +4 -0
- package/dist/src/abi/connectors/v2/POLYGON-BRIDGE-A.js +4 -0
- package/dist/src/abi/connectors/v2/REFINANCE-A.js +4 -0
- package/dist/src/abi/connectors/v2/REFLEXER-A.js +4 -0
- package/dist/src/abi/connectors/v2/STAKE-ERC20-A.js +4 -0
- package/dist/src/abi/connectors/v2/UNISWAP-A.js +297 -0
- package/dist/src/abi/connectors/v2/UNISWAP-V2-A.js +4 -0
- package/dist/src/abi/connectors/v2/UNISWAP-V3-A.js +4 -0
- package/dist/src/abi/connectors/v2/UNISWAP-V3-STAKE-A.js +4 -0
- package/dist/src/abi/connectors/v2/WETH-A.js +4 -0
- package/dist/src/abi/connectors/v2/YEARN-VAULT-A.js +4 -0
- package/dist/src/abi/connectors/v2/index.js +89 -0
- package/dist/src/abi/index.js +10 -4
- package/dist/src/abi/instList.json +232 -0
- package/dist/src/abi/interopX.json +1436 -0
- package/dist/src/alias.js +10 -0
- package/dist/src/api/index.js +11 -1
- package/dist/src/config/index.js +10 -1
- package/dist/src/constants/addresses.js +10 -7
- package/dist/src/constants/blockConfirmations.js +8 -0
- package/dist/src/constants/capPerChain.js +8 -0
- package/dist/src/constants/index.js +3 -1
- package/dist/src/constants/tokens.js +30 -7
- package/dist/src/constants/wrappedNativeToken.js +8 -0
- package/dist/src/crons/index.js +3 -0
- package/dist/src/crons/prices.js +16 -0
- package/dist/src/db/models/transaction.js +41 -15
- package/dist/src/errors/index.js +30 -0
- package/dist/src/gnosis/actions/aaveV2/index.js +11 -0
- package/dist/src/gnosis/actions/aaveV2/source.js +74 -0
- package/dist/src/gnosis/actions/aaveV2/target.js +87 -0
- package/dist/src/gnosis/actions/aaveV3/index.js +11 -0
- package/dist/src/gnosis/actions/aaveV3/source.js +74 -0
- package/dist/src/gnosis/actions/aaveV3/target.js +87 -0
- package/dist/src/gnosis/actions/index.js +11 -0
- package/dist/src/gnosis/index.js +20 -0
- package/dist/src/index.js +40 -23
- package/dist/src/net/peer/index.js +2 -1
- package/dist/src/net/pool/index.js +7 -2
- package/dist/src/net/protocol/dial/SignatureDialProtocol.js +9 -10
- package/dist/src/net/protocol/dial/TransactionStatusDialProtocol.js +30 -0
- package/dist/src/net/protocol/index.js +26 -5
- package/dist/src/providers/index.js +17 -0
- package/dist/src/providers/retry-provider.js +45 -0
- package/dist/src/services/Prices.js +74 -0
- package/dist/src/services/index.js +8 -0
- package/dist/src/tasks/AutoUpdateTask.js +33 -11
- package/dist/src/tasks/BaseTask.js +11 -3
- package/dist/src/tasks/InteropX/ProcessSubmitEvents.js +271 -0
- package/dist/src/tasks/InteropX/ProcessValidateEvents.js +203 -0
- package/dist/src/tasks/InteropX/SyncLogExecuteEvents.js +113 -0
- package/dist/src/tasks/InteropX/SyncLogSubmitEvents.js +88 -0
- package/dist/src/tasks/InteropX/SyncLogValidateEvents.js +106 -0
- package/dist/src/tasks/Transactions/SyncTransactionStatusTask.js +58 -0
- package/dist/src/tasks/index.js +20 -17
- package/dist/src/typechain/{InteropBridgeToken.js → AaveV2Resolver.js} +0 -0
- package/dist/src/typechain/{InteropXGateway.js → BalanceResolver.js} +0 -0
- package/dist/src/typechain/InstList.js +2 -0
- package/dist/src/typechain/InteropX.js +2 -0
- package/dist/src/typechain/factories/AaveV2Resolver__factory.js +1191 -0
- package/dist/src/typechain/factories/BalanceResolver__factory.js +228 -0
- package/dist/src/typechain/factories/InstList__factory.js +249 -0
- package/dist/src/typechain/factories/InteropX__factory.js +1928 -0
- package/dist/src/typechain/factories/index.js +9 -5
- package/dist/src/typechain/index.js +9 -5
- package/dist/src/utils/async.js +18 -0
- package/dist/src/utils/dsa.js +24 -0
- package/dist/src/utils/formatting.js +67 -0
- package/dist/src/utils/gnosis.js +87 -0
- package/dist/src/utils/http.js +10 -0
- package/dist/src/utils/index.js +22 -225
- package/dist/src/utils/interop.js +16 -0
- package/dist/src/utils/tokens.js +22 -0
- package/dist/src/utils/validate.js +111 -0
- package/dist/src/utils/web3.js +93 -0
- package/package.json +23 -13
- package/src/abi/aaveV2Resolver.json +832 -0
- package/src/abi/balanceResolver.json +211 -0
- package/src/abi/connectors/index.ts +14 -0
- package/src/abi/connectors/v1/aave.ts +147 -0
- package/src/abi/connectors/v1/aave_claim.ts +3 -0
- package/src/abi/connectors/v1/aave_migrate.ts +108 -0
- package/src/abi/connectors/v1/aave_polygon_migrate.ts +109 -0
- package/src/abi/connectors/v1/aave_stake.ts +3 -0
- package/src/abi/connectors/v1/aave_v1_import.ts +53 -0
- package/src/abi/connectors/v1/aave_v2.ts +229 -0
- package/src/abi/connectors/v1/aave_v2_import.ts +58 -0
- package/src/abi/connectors/v1/authority.ts +99 -0
- package/src/abi/connectors/v1/basic.ts +135 -0
- package/src/abi/connectors/v1/chi.ts +35 -0
- package/src/abi/connectors/v1/comp.ts +3 -0
- package/src/abi/connectors/v1/compound.ts +3 -0
- package/src/abi/connectors/v1/compoundImport.ts +68 -0
- package/src/abi/connectors/v1/compoundImport_v2.ts +3 -0
- package/src/abi/connectors/v1/compound_old.ts +447 -0
- package/src/abi/connectors/v1/curve.ts +139 -0
- package/src/abi/connectors/v1/curve_claim.ts +62 -0
- package/src/abi/connectors/v1/curve_gauge.ts +157 -0
- package/src/abi/connectors/v1/curve_sbtc.ts +139 -0
- package/src/abi/connectors/v1/curve_susd.ts +139 -0
- package/src/abi/connectors/v1/curve_three.ts +78 -0
- package/src/abi/connectors/v1/curve_y.ts +139 -0
- package/src/abi/connectors/v1/dsa_migrate_v1_to_v2.ts +3 -0
- package/src/abi/connectors/v1/dydx.ts +147 -0
- package/src/abi/connectors/v1/dydx_flash.ts +51 -0
- package/src/abi/connectors/v1/fee.ts +49 -0
- package/src/abi/connectors/v1/gelato.ts +1137 -0
- package/src/abi/connectors/v1/index.ts +42 -0
- package/src/abi/connectors/v1/instapool.ts +438 -0
- package/src/abi/connectors/v1/instapool_v2.ts +125 -0
- package/src/abi/connectors/v1/kyber.ts +116 -0
- package/src/abi/connectors/v1/maker.ts +479 -0
- package/src/abi/connectors/v1/maker_old.ts +299 -0
- package/src/abi/connectors/v1/math.ts +42 -0
- package/src/abi/connectors/v1/migrate.ts +45 -0
- package/src/abi/connectors/v1/oasis.ts +197 -0
- package/src/abi/connectors/v1/oneInch.ts +159 -0
- package/src/abi/connectors/v1/polygon_bridge.ts +3 -0
- package/src/abi/connectors/v1/refinance.ts +3 -0
- package/src/abi/connectors/v1/staking.ts +219 -0
- package/src/abi/connectors/v1/swerve.ts +178 -0
- package/src/abi/connectors/v1/uniswap.ts +297 -0
- package/src/abi/connectors/v2/1INCH-A.ts +3 -0
- package/src/abi/connectors/v2/1INCH-B.ts +3 -0
- package/src/abi/connectors/v2/AAVE-CLAIM-A.ts +3 -0
- package/src/abi/connectors/v2/AAVE-CLAIM-B.ts +165 -0
- package/src/abi/connectors/v2/AAVE-STAKE-A.ts +3 -0
- package/src/abi/connectors/v2/AAVE-V1-A.ts +130 -0
- package/src/abi/connectors/v2/AAVE-V1-IMPORT-A.ts +3 -0
- package/src/abi/connectors/v2/AAVE-V2-A.ts +229 -0
- package/src/abi/connectors/v2/AAVE-V2-IMPORT-A.ts +3 -0
- package/src/abi/connectors/v2/AAVE-V2-IMPORT-B.ts +224 -0
- package/src/abi/connectors/v2/AUTHORITY-A.ts +99 -0
- package/src/abi/connectors/v2/B-COMPOUND-A.ts +3 -0
- package/src/abi/connectors/v2/B-LIQUITY-A.ts +3 -0
- package/src/abi/connectors/v2/B-MAKERDAO-A.ts +3 -0
- package/src/abi/connectors/v2/BASIC-A.ts +135 -0
- package/src/abi/connectors/v2/BASIC-B.ts +3 -0
- package/src/abi/connectors/v2/BASIC-C.ts +3 -0
- package/src/abi/connectors/v2/COMP-A.ts +3 -0
- package/src/abi/connectors/v2/COMPOUND-A.ts +3 -0
- package/src/abi/connectors/v2/COMPOUND-IMPORT-A.ts +3 -0
- package/src/abi/connectors/v2/COMPOUND-IMPORT-B.ts +194 -0
- package/src/abi/connectors/v2/G-UNISWAP-A.ts +3 -0
- package/src/abi/connectors/v2/GELATO-AAVE-A.ts +3 -0
- package/src/abi/connectors/v2/INST-A.ts +3 -0
- package/src/abi/connectors/v2/INST-LM-A.ts +3 -0
- package/src/abi/connectors/v2/INST-STAKING-A.ts +3 -0
- package/src/abi/connectors/v2/INST-STAKING-B.ts +3 -0
- package/src/abi/connectors/v2/INSTAPOOL-A.ts +3 -0
- package/src/abi/connectors/v2/LIQUITY-A.ts +3 -0
- package/src/abi/connectors/v2/MAKERDAO-A.ts +3 -0
- package/src/abi/connectors/v2/MAKERDAO-CLAIM-A.ts +135 -0
- package/src/abi/connectors/v2/PARASWAP-A.ts +3 -0
- package/src/abi/connectors/v2/POLYGON-BRIDGE-A.ts +3 -0
- package/src/abi/connectors/v2/REFINANCE-A.ts +3 -0
- package/src/abi/connectors/v2/REFLEXER-A.ts +3 -0
- package/src/abi/connectors/v2/STAKE-ERC20-A.ts +3 -0
- package/src/abi/connectors/v2/UNISWAP-A.ts +297 -0
- package/src/abi/connectors/v2/UNISWAP-V2-A.ts +3 -0
- package/src/abi/connectors/v2/UNISWAP-V3-A.ts +3 -0
- package/src/abi/connectors/v2/UNISWAP-V3-STAKE-A.ts +3 -0
- package/src/abi/connectors/v2/WETH-A.ts +3 -0
- package/src/abi/connectors/v2/YEARN-VAULT-A.ts +3 -0
- package/src/abi/connectors/v2/index.ts +87 -0
- package/src/abi/index.ts +13 -7
- package/src/abi/instList.json +232 -0
- package/src/abi/interopX.json +1436 -0
- package/src/alias.ts +6 -0
- package/src/api/index.ts +12 -1
- package/src/config/index.ts +9 -1
- package/src/constants/addresses.ts +21 -8
- package/src/constants/blockConfirmations.ts +5 -0
- package/src/constants/capPerChain.ts +5 -0
- package/src/constants/index.ts +3 -1
- package/src/constants/tokens.ts +31 -8
- package/src/constants/wrappedNativeToken.ts +5 -0
- package/src/crons/index.ts +1 -0
- package/src/crons/prices.ts +12 -0
- package/src/db/models/transaction.ts +159 -65
- package/src/errors/index.ts +26 -0
- package/src/gnosis/actions/aaveV2/index.ts +9 -0
- package/src/gnosis/actions/aaveV2/source.ts +119 -0
- package/src/gnosis/actions/aaveV2/target.ts +142 -0
- package/src/gnosis/actions/aaveV3/index.ts +9 -0
- package/src/gnosis/actions/aaveV3/source.ts +119 -0
- package/src/gnosis/actions/aaveV3/target.ts +142 -0
- package/src/gnosis/actions/index.ts +7 -0
- package/src/gnosis/index.ts +19 -0
- package/src/index.ts +53 -25
- package/src/net/peer/index.ts +2 -1
- package/src/net/pool/index.ts +7 -3
- package/src/net/protocol/dial/SignatureDialProtocol.ts +12 -13
- package/src/net/protocol/dial/TransactionStatusDialProtocol.ts +33 -0
- package/src/net/protocol/index.ts +28 -6
- package/src/providers/index.ts +1 -0
- package/src/providers/retry-provider.ts +51 -0
- package/src/services/Prices.ts +89 -0
- package/src/services/index.ts +1 -0
- package/src/tasks/AutoUpdateTask.ts +36 -14
- package/src/tasks/BaseTask.ts +13 -3
- package/src/tasks/InteropX/ProcessSubmitEvents.ts +382 -0
- package/src/tasks/InteropX/ProcessValidateEvents.ts +297 -0
- package/src/tasks/InteropX/SyncLogExecuteEvents.ts +161 -0
- package/src/tasks/InteropX/SyncLogSubmitEvents.ts +138 -0
- package/src/tasks/InteropX/SyncLogValidateEvents.ts +151 -0
- package/src/tasks/Transactions/SyncTransactionStatusTask.ts +70 -0
- package/src/tasks/index.ts +25 -18
- package/src/typechain/AaveV2Resolver.ts +1017 -0
- package/src/typechain/BalanceResolver.ts +266 -0
- package/src/typechain/InstList.ts +402 -0
- package/src/typechain/InteropX.ts +1216 -0
- package/src/typechain/factories/AaveV2Resolver__factory.ts +1198 -0
- package/src/typechain/factories/BalanceResolver__factory.ts +235 -0
- package/src/typechain/factories/InstList__factory.ts +253 -0
- package/src/typechain/factories/InteropX__factory.ts +1932 -0
- package/src/typechain/factories/index.ts +4 -2
- package/src/typechain/index.ts +8 -4
- package/src/utils/async.ts +22 -0
- package/src/utils/dsa.ts +30 -0
- package/src/utils/formatting.ts +68 -0
- package/src/utils/gnosis.ts +166 -0
- package/src/utils/http.ts +6 -0
- package/src/utils/index.ts +9 -307
- package/src/utils/interop.ts +28 -0
- package/src/utils/tokens.ts +21 -0
- package/src/utils/validate.ts +174 -0
- package/src/utils/web3.ts +132 -0
- package/tsconfig.json +7 -2
- package/dist/src/abi/interopBridgeToken.json +0 -286
- package/dist/src/abi/interopXGateway.json +0 -184
- package/dist/src/constants/itokens.js +0 -13
- package/dist/src/tasks/InteropBridge/ProcessWithdrawEvents.js +0 -147
- package/dist/src/tasks/InteropBridge/SyncWithdrawEvents.js +0 -70
- package/dist/src/tasks/InteropXGateway/ProcessDepositEvents.js +0 -150
- package/dist/src/tasks/InteropXGateway/SyncDepositEvents.js +0 -75
- package/dist/src/typechain/factories/InteropBridgeToken__factory.js +0 -459
- package/dist/src/typechain/factories/InteropXGateway__factory.js +0 -265
- package/src/abi/interopBridgeToken.json +0 -286
- package/src/abi/interopXGateway.json +0 -184
- package/src/constants/itokens.ts +0 -10
- package/src/tasks/InteropBridge/ProcessWithdrawEvents.ts +0 -233
- package/src/tasks/InteropBridge/SyncWithdrawEvents.ts +0 -121
- package/src/tasks/InteropXGateway/ProcessDepositEvents.ts +0 -245
- package/src/tasks/InteropXGateway/SyncDepositEvents.ts +0 -126
- package/src/typechain/InteropBridgeToken.ts +0 -686
- package/src/typechain/InteropXGateway.ts +0 -407
- package/src/typechain/factories/InteropBridgeToken__factory.ts +0 -466
- package/src/typechain/factories/InteropXGateway__factory.ts +0 -272
package/src/net/peer/index.ts
CHANGED
@@ -17,6 +17,7 @@ import KadDHT from "libp2p-kad-dht";
|
|
17
17
|
import PubsubPeerDiscovery from "libp2p-pubsub-peer-discovery";
|
18
18
|
import { protocol } from "@/net";
|
19
19
|
import config from "@/config";
|
20
|
+
import chalk from "chalk";
|
20
21
|
|
21
22
|
const logger = new Logger("Peer");
|
22
23
|
|
@@ -80,7 +81,7 @@ export const startPeer = async ({ }: IPeerOptions) => {
|
|
80
81
|
},
|
81
82
|
});
|
82
83
|
|
83
|
-
logger.info("Peer ID:", node.peerId.toB58String());
|
84
|
+
logger.info("Peer ID:", chalk.bold(node.peerId.toB58String()));
|
84
85
|
|
85
86
|
await node.start();
|
86
87
|
|
package/src/net/pool/index.ts
CHANGED
@@ -2,6 +2,8 @@ import { Event } from "@/types";
|
|
2
2
|
import config from "@/config";
|
3
3
|
import Logger from "@/logger";
|
4
4
|
import { getAddress } from "ethers/lib/utils";
|
5
|
+
import { shortenHash } from "@/utils";
|
6
|
+
import chalk from "chalk";
|
5
7
|
|
6
8
|
|
7
9
|
const logger = new Logger('PeerPool')
|
@@ -87,7 +89,7 @@ export class PeerPool {
|
|
87
89
|
|
88
90
|
if (newPeer) {
|
89
91
|
config.events.emit(Event.POOL_PEER_ADDED, peer)
|
90
|
-
logger.info(`Peer ${peer.id} with address ${peer.publicAddress} added to pool`)
|
92
|
+
logger.info(`Peer ${chalk.bold(shortenHash(peer.id, 16))} with address ${chalk.bold(shortenHash(peer.publicAddress))} added to pool`)
|
91
93
|
}
|
92
94
|
}
|
93
95
|
}
|
@@ -102,7 +104,7 @@ export class PeerPool {
|
|
102
104
|
if (this.pool.delete(peer.id)) {
|
103
105
|
peer.pooled = false
|
104
106
|
config.events.emit(Event.POOL_PEER_REMOVED, peer)
|
105
|
-
logger.info(`Peer ${peer.id} with address ${peer.publicAddress} removed from pool`)
|
107
|
+
logger.info(`Peer ${chalk.bold(shortenHash(peer.id, 16))} with address ${chalk.bold(shortenHash(peer.publicAddress))} removed from pool`)
|
106
108
|
}
|
107
109
|
}
|
108
110
|
}
|
@@ -123,7 +125,6 @@ export class PeerPool {
|
|
123
125
|
return this.activePeers.map((p) => p.id)
|
124
126
|
}
|
125
127
|
|
126
|
-
|
127
128
|
getPeer(id: string){
|
128
129
|
return this.pool.get(id);
|
129
130
|
}
|
@@ -138,6 +139,9 @@ export class PeerPool {
|
|
138
139
|
return getAddress(peer.publicAddress) === getAddress(config.leadNodeAddress)
|
139
140
|
}
|
140
141
|
|
142
|
+
getLeadPeer() {
|
143
|
+
return this.peers.find((p) => this.isLeadNode(p.id))
|
144
|
+
}
|
141
145
|
|
142
146
|
cleanup() {
|
143
147
|
// let compDate = Date.now() - this.PEERS_CLEANUP_TIME_LIMIT * 60
|
@@ -2,15 +2,17 @@ import { BaseDialProtocol } from "./BaseDialProtocol";
|
|
2
2
|
import wait from "waait";
|
3
3
|
import config from "@/config";
|
4
4
|
import { Transaction } from "@/db";
|
5
|
-
import {
|
5
|
+
import { signGnosisSafeTx } from "@/utils";
|
6
6
|
import { addresses } from "@/constants";
|
7
7
|
import { ChainId } from "@/types";
|
8
|
+
import { buildGnosisAction } from "@/gnosis";
|
8
9
|
|
9
10
|
export interface ISignatureRequest {
|
10
|
-
type: 'source' | 'target'
|
11
|
+
type: 'source' | 'target',
|
11
12
|
transactionHash: string
|
12
13
|
safeTxGas: string
|
13
14
|
safeNonce: string
|
15
|
+
chainId: number
|
14
16
|
}
|
15
17
|
export interface ISignatureResponse {
|
16
18
|
signer: string,
|
@@ -25,6 +27,10 @@ export class SignatureDialProtocol extends BaseDialProtocol<ISignatureRequest, I
|
|
25
27
|
}
|
26
28
|
|
27
29
|
async response(data: ISignatureRequest): Promise<ISignatureResponse> {
|
30
|
+
console.log({
|
31
|
+
tag: 'SignatureDialProtocol',
|
32
|
+
data
|
33
|
+
})
|
28
34
|
const signer = config.wallet;
|
29
35
|
|
30
36
|
let transaction: Transaction | null;
|
@@ -46,19 +52,12 @@ export class SignatureDialProtocol extends BaseDialProtocol<ISignatureRequest, I
|
|
46
52
|
error: 'Event not found'
|
47
53
|
};
|
48
54
|
}
|
49
|
-
|
50
|
-
console.log("signing:", {
|
51
|
-
to: addresses[transaction.targetChainId].multisend,
|
52
|
-
data: await buildDataForTransaction(transaction, data.type),
|
53
|
-
chainId: transaction.targetChainId as ChainId,
|
54
|
-
safeTxGas: data.safeTxGas,
|
55
|
-
nonce: data.safeNonce,
|
56
|
-
});
|
55
|
+
const { data: gnosisData } = await buildGnosisAction(transaction, data.type);
|
57
56
|
|
58
57
|
const signedData = await signGnosisSafeTx({
|
59
|
-
to: addresses[
|
60
|
-
data:
|
61
|
-
chainId:
|
58
|
+
to: addresses[data.chainId].multisend,
|
59
|
+
data: gnosisData,
|
60
|
+
chainId: data.chainId as ChainId,
|
62
61
|
safeTxGas: data.safeTxGas,
|
63
62
|
nonce: data.safeNonce,
|
64
63
|
}, { signer });
|
@@ -0,0 +1,33 @@
|
|
1
|
+
import { BaseDialProtocol } from "./BaseDialProtocol";
|
2
|
+
import { Transaction } from "@/db";
|
3
|
+
|
4
|
+
export class TransactionStatusDialProtocol extends BaseDialProtocol<string, Pick<Transaction, 'transactionHash' | 'sourceStatus' | 'sourceTransactionHash' | 'sourceErrors' | 'sourceLogs' | 'targetStatus' | 'targetTransactionHash' | 'targetErrors' | 'targetLogs' | 'status'> | null> {
|
5
|
+
protected timeout = 30000;
|
6
|
+
|
7
|
+
constructor(libp2p) {
|
8
|
+
super(libp2p, '/interop-x/transaction-status')
|
9
|
+
}
|
10
|
+
|
11
|
+
async response(transactionHash: string){
|
12
|
+
const transaction = await Transaction.findOne({ where: { transactionHash } })
|
13
|
+
|
14
|
+
if(! transaction){
|
15
|
+
return null
|
16
|
+
}
|
17
|
+
return {
|
18
|
+
transactionHash: transaction.transactionHash,
|
19
|
+
|
20
|
+
sourceStatus: transaction.sourceStatus,
|
21
|
+
sourceTransactionHash: transaction.sourceTransactionHash,
|
22
|
+
sourceErrors: transaction.sourceErrors,
|
23
|
+
sourceLogs: transaction.sourceLogs,
|
24
|
+
|
25
|
+
targetStatus: transaction.targetStatus,
|
26
|
+
targetTransactionHash: transaction.targetTransactionHash,
|
27
|
+
targetErrors: transaction.targetErrors,
|
28
|
+
targetLogs: transaction.targetLogs,
|
29
|
+
|
30
|
+
status: transaction.status,
|
31
|
+
}
|
32
|
+
}
|
33
|
+
}
|
@@ -6,6 +6,7 @@ import { IPeerInfo, peerPool } from "..";
|
|
6
6
|
import config from "@/config";
|
7
7
|
import { Event } from "@/types";
|
8
8
|
import { Transaction } from "@/db";
|
9
|
+
import { TransactionStatusDialProtocol } from "./dial/TransactionStatusDialProtocol";
|
9
10
|
|
10
11
|
export interface ProtocolOptions {
|
11
12
|
/* Handshake timeout in ms (default: 8000) */
|
@@ -35,7 +36,7 @@ interface PeerInfoEvent extends BaseMessageEvent {
|
|
35
36
|
}
|
36
37
|
|
37
38
|
interface TransactionStatusEvent extends BaseMessageEvent {
|
38
|
-
data: Pick<Transaction, 'transactionHash' | 'sourceStatus' | 'sourceTransactionHash' | 'sourceErrors' | 'targetStatus' | 'targetTransactionHash' | 'targetErrors' | 'status'>
|
39
|
+
data: Pick<Transaction, 'transactionHash' | 'sourceStatus' | 'sourceTransactionHash' | 'sourceErrors' | 'sourceLogs' | 'targetStatus' | 'targetTransactionHash' | 'targetErrors' | 'targetLogs' | 'status'>
|
39
40
|
}
|
40
41
|
|
41
42
|
declare interface Protocol {
|
@@ -65,31 +66,42 @@ class Protocol extends EventEmitter {
|
|
65
66
|
Buffer.from(transaction.transactionHash),
|
66
67
|
|
67
68
|
Buffer.from(transaction.sourceStatus),
|
68
|
-
Buffer.from(transaction.sourceTransactionHash),
|
69
|
+
Buffer.from(transaction.sourceTransactionHash || ''),
|
69
70
|
transaction.sourceErrors ? transaction.sourceErrors.map((e) => Buffer.from(e)) : [],
|
71
|
+
transaction.sourceLogs ? transaction.sourceLogs.map((e) => [Buffer.from(e.type), Buffer.from(e.message)]) : [],
|
70
72
|
|
71
73
|
Buffer.from(transaction.targetStatus),
|
72
|
-
Buffer.from(transaction.targetTransactionHash),
|
74
|
+
Buffer.from(transaction.targetTransactionHash || ''),
|
73
75
|
transaction.targetErrors ? transaction.targetErrors.map((e) => Buffer.from(e)) : [],
|
76
|
+
transaction.targetLogs ? transaction.targetLogs.map((e) => [Buffer.from(e.type), Buffer.from(e.message)]) : [],
|
74
77
|
|
75
78
|
Buffer.from(transaction.status),
|
76
79
|
],
|
77
|
-
decode: ([transactionHash, sourceStatus, sourceTransactionHash, sourceErrors, targetStatus, targetTransactionHash, targetErrors, status]: [Buffer, Buffer, Buffer, Buffer[], Buffer, Buffer, Buffer[], Buffer]) => ({
|
80
|
+
decode: ([transactionHash, sourceStatus, sourceTransactionHash, sourceErrors, sourceLogs, targetStatus, targetTransactionHash, targetErrors, targetLogs, status]: [Buffer, Buffer, Buffer, Buffer[],[Buffer,Buffer][], Buffer, Buffer, Buffer[],[Buffer,Buffer][], Buffer]) => ({
|
78
81
|
transactionHash: transactionHash.toString(),
|
79
82
|
|
80
83
|
sourceStatus: sourceStatus.toString(),
|
81
|
-
sourceTransactionHash: sourceTransactionHash.toString(),
|
84
|
+
sourceTransactionHash: sourceTransactionHash.toString() || null,
|
82
85
|
sourceErrors: sourceErrors.map((e) => e.toString()),
|
86
|
+
sourceLogs: sourceLogs.map(e => ({
|
87
|
+
type: e[0].toString(),
|
88
|
+
message: e[1].toString(),
|
89
|
+
})),
|
83
90
|
|
84
91
|
targetStatus: targetStatus.toString(),
|
85
|
-
targetTransactionHash: targetTransactionHash.toString(),
|
92
|
+
targetTransactionHash: targetTransactionHash.toString() || null,
|
86
93
|
targetErrors: targetErrors.map((e) => e.toString()),
|
94
|
+
targetLogs: targetLogs.map(e => ({
|
95
|
+
type: e[0].toString(),
|
96
|
+
message: e[1].toString(),
|
97
|
+
})),
|
87
98
|
|
88
99
|
status: status.toString(),
|
89
100
|
}),
|
90
101
|
},
|
91
102
|
];
|
92
103
|
private signature: SignatureDialProtocol;
|
104
|
+
private transactionStatus: TransactionStatusDialProtocol;
|
93
105
|
|
94
106
|
|
95
107
|
start({ libp2p, topic = null, }) {
|
@@ -109,6 +121,7 @@ class Protocol extends EventEmitter {
|
|
109
121
|
})
|
110
122
|
|
111
123
|
this.signature = new SignatureDialProtocol(this.libp2p);
|
124
|
+
this.transactionStatus = new TransactionStatusDialProtocol(this.libp2p);
|
112
125
|
}
|
113
126
|
|
114
127
|
|
@@ -177,6 +190,15 @@ class Protocol extends EventEmitter {
|
|
177
190
|
return []
|
178
191
|
}
|
179
192
|
}
|
193
|
+
|
194
|
+
async requestTransactionStatus(transactionHash: string, peerId: string) {
|
195
|
+
try {
|
196
|
+
return await this.transactionStatus.send(transactionHash, peerId);
|
197
|
+
} catch (error) {
|
198
|
+
console.log(error);
|
199
|
+
return null
|
200
|
+
}
|
201
|
+
}
|
180
202
|
}
|
181
203
|
|
182
204
|
export const protocol = new Protocol();
|
@@ -0,0 +1 @@
|
|
1
|
+
export * from './retry-provider';
|
@@ -0,0 +1,51 @@
|
|
1
|
+
import { ethers } from "ethers";
|
2
|
+
import wait from "waait";
|
3
|
+
import Bluebird from "bluebird";
|
4
|
+
|
5
|
+
export interface RetryOptions {
|
6
|
+
delay?: number;
|
7
|
+
timeouts: number[];
|
8
|
+
}
|
9
|
+
|
10
|
+
export function promiseTimeout<T>(ms: number, promise: Promise<T>): Promise<T> {
|
11
|
+
return Bluebird.resolve(promise).timeout(ms);
|
12
|
+
}
|
13
|
+
|
14
|
+
export function retryOperation(
|
15
|
+
retriesLeft: number,
|
16
|
+
operation: () => Promise<any>,
|
17
|
+
options: RetryOptions
|
18
|
+
) {
|
19
|
+
return new Promise((resolve, reject) => {
|
20
|
+
const { timeouts } = options;
|
21
|
+
// Find the timeout for this specific iteration
|
22
|
+
const timeout = timeouts[timeouts.length - retriesLeft];
|
23
|
+
|
24
|
+
// Wrap the original operation in a timeout
|
25
|
+
const execution = promiseTimeout(timeout, operation());
|
26
|
+
|
27
|
+
// If the promise is successful, resolve it and bubble the result up
|
28
|
+
return execution.then(resolve).catch((reason: any) => {
|
29
|
+
// If there are any retries left, we call the same retryOperation function again,
|
30
|
+
// but decrementing the number of retries left by 1
|
31
|
+
if (retriesLeft - 1 > 0) {
|
32
|
+
// Delay the new attempt slightly
|
33
|
+
return wait(options.delay || 50)
|
34
|
+
.then(retryOperation.bind(null, retriesLeft - 1, operation, options))
|
35
|
+
.then(resolve)
|
36
|
+
.catch(reject);
|
37
|
+
}
|
38
|
+
// Reject (and bubble the result up) if there are no more retries
|
39
|
+
return reject(reason);
|
40
|
+
});
|
41
|
+
});
|
42
|
+
}
|
43
|
+
|
44
|
+
export class JsonRpcRetryProvider extends ethers.providers.JsonRpcProvider {
|
45
|
+
public perform(method: string, params: any): Promise<any> {
|
46
|
+
const timeouts = [5_000, 10_000];
|
47
|
+
const operation = () => super.perform(method, params);
|
48
|
+
|
49
|
+
return retryOperation(2, operation, { timeouts, delay: 50 });
|
50
|
+
}
|
51
|
+
}
|
@@ -0,0 +1,89 @@
|
|
1
|
+
import Web3Utils from "web3-utils";
|
2
|
+
import path from "path";
|
3
|
+
import fs from "fs";
|
4
|
+
import { tokens } from "@/constants";
|
5
|
+
import expandHomeDir from "expand-home-dir";
|
6
|
+
import config from "@/config";
|
7
|
+
import { http } from "@/utils";
|
8
|
+
|
9
|
+
const basePath = expandHomeDir(`~/.interop-x/data/${config.publicAddress}/${config.staging ? 'staging' : ''}`);
|
10
|
+
const mainnetPricesFilePath = path.resolve(basePath, "./mainnetPrices.json");
|
11
|
+
const networkTokenPricesFilePath = path.resolve(basePath, "./networkTokenPrices.json");
|
12
|
+
|
13
|
+
class Prices {
|
14
|
+
private static mainnetPrices = {};
|
15
|
+
|
16
|
+
private static networkTokenPrices = {};
|
17
|
+
|
18
|
+
static async fetch() {
|
19
|
+
|
20
|
+
if (!fs.existsSync(mainnetPricesFilePath)) {
|
21
|
+
fs.writeFileSync(mainnetPricesFilePath, JSON.stringify({}));
|
22
|
+
}
|
23
|
+
|
24
|
+
if (!fs.existsSync(networkTokenPricesFilePath)) {
|
25
|
+
fs.writeFileSync(networkTokenPricesFilePath, JSON.stringify({}));
|
26
|
+
}
|
27
|
+
|
28
|
+
this.mainnetPrices = JSON.parse(fs.readFileSync(mainnetPricesFilePath, "utf8"));
|
29
|
+
this.networkTokenPrices = JSON.parse(fs.readFileSync(networkTokenPricesFilePath, "utf8"));
|
30
|
+
|
31
|
+
try {
|
32
|
+
const path = tokens["1"]
|
33
|
+
.filter((a) => a.symbol !== "ETH")
|
34
|
+
.map((token) => token.address)
|
35
|
+
.join(",");
|
36
|
+
|
37
|
+
const [response, ethResponse, avaxResponse, polygonResponse] =
|
38
|
+
await Promise.all([
|
39
|
+
http.get(
|
40
|
+
"https://api.coingecko.com/api/v3/simple/token_price/ethereum",
|
41
|
+
{
|
42
|
+
params: { contract_addresses: path, vs_currencies: "usd" },
|
43
|
+
}
|
44
|
+
),
|
45
|
+
http.get("https://api.coingecko.com/api/v3/simple/price", {
|
46
|
+
params: { ids: "ethereum", vs_currencies: "usd" },
|
47
|
+
}),
|
48
|
+
http.get("https://api.coingecko.com/api/v3/simple/price", {
|
49
|
+
params: { ids: "avalanche-2", vs_currencies: "usd" },
|
50
|
+
}),
|
51
|
+
http.get("https://api.coingecko.com/api/v3/simple/price", {
|
52
|
+
params: { ids: "matic-network", vs_currencies: "usd" },
|
53
|
+
}),
|
54
|
+
]);
|
55
|
+
|
56
|
+
this.networkTokenPrices = {
|
57
|
+
"1": ethResponse.data.ethereum.usd.toString(),
|
58
|
+
"137": polygonResponse.data["matic-network"].usd.toString(),
|
59
|
+
"43114": avaxResponse.data["avalanche-2"].usd.toString(),
|
60
|
+
};
|
61
|
+
|
62
|
+
const data = response.data;
|
63
|
+
|
64
|
+
for (const key in data) {
|
65
|
+
const _key = Web3Utils.toChecksumAddress(key);
|
66
|
+
if (!data[key].usd) continue;
|
67
|
+
this.mainnetPrices[_key] = data[key].usd.toString();
|
68
|
+
}
|
69
|
+
|
70
|
+
this.mainnetPrices["0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"] =
|
71
|
+
ethResponse.data.ethereum.usd.toString();
|
72
|
+
} catch (error) { }
|
73
|
+
|
74
|
+
fs.writeFileSync(mainnetPricesFilePath, JSON.stringify(this.mainnetPrices));
|
75
|
+
fs.writeFileSync(networkTokenPricesFilePath, JSON.stringify(this.networkTokenPrices));
|
76
|
+
|
77
|
+
return this.mainnetPrices;
|
78
|
+
}
|
79
|
+
|
80
|
+
static getMainnetPrices() {
|
81
|
+
return this.mainnetPrices;
|
82
|
+
}
|
83
|
+
|
84
|
+
static getNetworkTokenPrices() {
|
85
|
+
return this.networkTokenPrices;
|
86
|
+
}
|
87
|
+
}
|
88
|
+
|
89
|
+
export default Prices;
|
@@ -0,0 +1 @@
|
|
1
|
+
export { default as Prices } from './Prices';
|
@@ -1,12 +1,16 @@
|
|
1
1
|
import { BaseTask } from "./BaseTask";
|
2
2
|
import Logger from '@/logger';
|
3
|
-
import
|
4
|
-
import spawn from '
|
3
|
+
import spawnAsync from 'await-spawn';
|
4
|
+
import { spawn } from 'child_process'
|
5
5
|
import config from "@/config";
|
6
6
|
import wait from "waait";
|
7
|
+
import packageJson from "../../package.json";
|
8
|
+
|
9
|
+
const currentVersion = packageJson.version;
|
10
|
+
const tag = config.staging ? 'dev' : 'latest';
|
7
11
|
|
8
12
|
class AutoUpdateTask extends BaseTask {
|
9
|
-
pollIntervalMs: number = 60 *
|
13
|
+
pollIntervalMs: number = 60 * 10 * 1000
|
10
14
|
|
11
15
|
constructor() {
|
12
16
|
super({
|
@@ -18,15 +22,28 @@ class AutoUpdateTask extends BaseTask {
|
|
18
22
|
return config.autoUpdate && !config.isLeadNode();
|
19
23
|
}
|
20
24
|
|
21
|
-
|
22
|
-
|
25
|
+
async getInstalledVersion() {
|
26
|
+
try {
|
27
|
+
const stdout = await spawnAsync('npm', ['-g', 'ls', '--depth=0', '--json'])
|
28
|
+
return JSON.parse(stdout.toString()).dependencies[packageJson.name].version
|
29
|
+
} catch (error) {
|
30
|
+
this.logger.error(error)
|
31
|
+
return currentVersion
|
32
|
+
}
|
23
33
|
}
|
24
|
-
async pollHandler() {
|
25
34
|
|
26
|
-
|
35
|
+
async getLatestVersion() {
|
36
|
+
try {
|
37
|
+
const stdout = await spawnAsync('npm', ['view', `${packageJson.name}@${tag}`, 'version'])
|
38
|
+
return stdout.toString().trim()
|
39
|
+
} catch (error) {
|
40
|
+
this.logger.error(error)
|
41
|
+
return currentVersion
|
42
|
+
}
|
43
|
+
}
|
27
44
|
|
28
|
-
|
29
|
-
const
|
45
|
+
async pollHandler() {
|
46
|
+
const version = await this.getLatestVersion()
|
30
47
|
|
31
48
|
if (version === currentVersion) {
|
32
49
|
return;
|
@@ -34,13 +51,13 @@ class AutoUpdateTask extends BaseTask {
|
|
34
51
|
|
35
52
|
this.logger.warn(`New version ${version} available.`)
|
36
53
|
|
54
|
+
this.logger.info('Updating...')
|
37
55
|
|
38
|
-
await
|
39
|
-
|
56
|
+
await spawnAsync('npm', ['-g', 'install', `@instadapp/interop-x@${tag}`, '-f']);
|
40
57
|
|
41
58
|
await wait(5000)
|
42
59
|
|
43
|
-
if (
|
60
|
+
if (version !== await this.getInstalledVersion()) {
|
44
61
|
this.logger.warn(`failed to install ${version}, retrying in 5 minutes`)
|
45
62
|
return;
|
46
63
|
}
|
@@ -48,11 +65,16 @@ class AutoUpdateTask extends BaseTask {
|
|
48
65
|
this.logger.warn(`Installed version ${version}`)
|
49
66
|
this.logger.warn(`Restarting...`)
|
50
67
|
|
51
|
-
|
68
|
+
|
69
|
+
// TODO: its restarting in the bg, but it should be in the fg
|
70
|
+
const subprocess = spawn(process.argv[0], process.argv.slice(1), {
|
52
71
|
cwd: process.cwd(),
|
53
|
-
stdio: "inherit"
|
72
|
+
stdio: "inherit",
|
73
|
+
// shell: process.env.SHELL,
|
54
74
|
});
|
55
75
|
|
76
|
+
subprocess.unref();
|
77
|
+
|
56
78
|
process.exit()
|
57
79
|
}
|
58
80
|
}
|
package/src/tasks/BaseTask.ts
CHANGED
@@ -19,6 +19,7 @@ export class BaseTask extends EventEmitter implements IBaseTask {
|
|
19
19
|
started: boolean = false
|
20
20
|
pollIntervalMs: number = 10 * 1000
|
21
21
|
leadNodeOnly: boolean = false
|
22
|
+
exceptLeadNode: boolean = false
|
22
23
|
|
23
24
|
public constructor({ logger }: { logger?: Logger }) {
|
24
25
|
super()
|
@@ -45,11 +46,20 @@ export class BaseTask extends EventEmitter implements IBaseTask {
|
|
45
46
|
}
|
46
47
|
|
47
48
|
prePollHandler(): boolean {
|
48
|
-
if
|
49
|
-
|
49
|
+
if(config.isMaintenanceMode()){
|
50
|
+
this.logger.warn('Maintenance mode is enabled. Skipping task.')
|
51
|
+
return false
|
50
52
|
}
|
51
53
|
|
52
|
-
|
54
|
+
if (this.exceptLeadNode) {
|
55
|
+
return !config.isLeadNode();
|
56
|
+
}
|
57
|
+
|
58
|
+
if (this.leadNodeOnly) {
|
59
|
+
return config.isLeadNode()
|
60
|
+
}
|
61
|
+
|
62
|
+
return true
|
53
63
|
}
|
54
64
|
|
55
65
|
async pollHandler() {
|