@rosen-bridge/evm-observation-extractor 5.2.1 → 5.3.0-82c56984

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/{BinanceRpcObservationExtractor.d.ts → binanceRpcObservationExtractor.d.ts} +3 -3
  3. package/dist/binanceRpcObservationExtractor.d.ts.map +1 -0
  4. package/dist/binanceRpcObservationExtractor.js +13 -0
  5. package/dist/{EthereumRpcObservationExtractor.d.ts → ethereumRpcObservationExtractor.d.ts} +3 -3
  6. package/dist/ethereumRpcObservationExtractor.d.ts.map +1 -0
  7. package/dist/ethereumRpcObservationExtractor.js +13 -0
  8. package/dist/{EvmRpcObservationExtractor.d.ts → evmRpcObservationExtractor.d.ts} +2 -2
  9. package/dist/evmRpcObservationExtractor.d.ts.map +1 -0
  10. package/dist/evmRpcObservationExtractor.js +60 -0
  11. package/dist/index.d.ts +3 -3
  12. package/dist/index.js +4 -4
  13. package/package.json +25 -17
  14. package/.eslintignore +0 -1
  15. package/dist/BinanceRpcObservationExtractor.d.ts.map +0 -1
  16. package/dist/BinanceRpcObservationExtractor.js +0 -13
  17. package/dist/EthereumRpcObservationExtractor.d.ts.map +0 -1
  18. package/dist/EthereumRpcObservationExtractor.js +0 -13
  19. package/dist/EvmRpcObservationExtractor.d.ts.map +0 -1
  20. package/dist/EvmRpcObservationExtractor.js +0 -59
  21. package/lib/BinanceRpcObservationExtractor.ts +0 -34
  22. package/lib/EthereumRpcObservationExtractor.ts +0 -34
  23. package/lib/EvmRpcObservationExtractor.ts +0 -72
  24. package/lib/index.ts +0 -3
  25. package/tests/EvmRpcObservationExtractor.spec.ts +0 -137
  26. package/tests/TestObservationExtractor.ts +0 -8
  27. package/tests/testData.ts +0 -63
  28. package/tests/utils.mock.ts +0 -130
  29. package/tsconfig.build.json +0 -12
  30. package/tsconfig.build.tsbuildinfo +0 -1
  31. package/tsconfig.json +0 -13
  32. package/vitest.config.ts +0 -18
package/CHANGELOG.md CHANGED
@@ -1,5 +1,39 @@
1
1
  # @rosen-bridge/evm-observation-extractor
2
2
 
3
+ ## 5.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Add rawData to the return data of the extractor's `processTransactions` method
8
+
9
+ ### Patch Changes
10
+
11
+ - Fix package-lock and move typescript and types/node into root
12
+ - Update eslint and plugins:
13
+ - Apply new rules such as sort imports and file name
14
+ - Update dependencies
15
+ - @rosen-bridge/extended-typeorm@1.0.1
16
+ - @rosen-clients/rate-limited-axios@1.1.0
17
+ - @rosen-bridge/rosen-extractor@10.1.1
18
+ - @rosen-bridge/tokens@4.0.1
19
+ - @rosen-bridge/abstract-logger@3.0.1
20
+ - @rosen-bridge/json-bigint@1.1.0
21
+ - @rosen-clients/ergo-explorer@2.1.0
22
+ - @rosen-clients/ergo-node@3.1.0
23
+ - @rosen-bridge/abstract-observation-extractor@0.2.0
24
+ - @rosen-bridge/scanner-interfaces@0.2.1
25
+
26
+ ## 5.2.2
27
+
28
+ ### Patch Changes
29
+
30
+ - Update dependencies
31
+ - @rosen-bridge/abstract-observation-extractor@0.1.2
32
+ - @rosen-bridge/extended-typeorm@1.0.0
33
+ - @rosen-bridge/tokens@4.0.0
34
+ - @rosen-bridge/rosen-extractor@10.0.0
35
+ - @rosen-bridge/abstract-logger@3.0.0
36
+
3
37
  ## 5.2.1
4
38
 
5
39
  ### Patch Changes
@@ -1,7 +1,7 @@
1
1
  import { AbstractLogger } from '@rosen-bridge/abstract-logger';
2
- import { TokenMap } from '@rosen-bridge/tokens';
3
2
  import { DataSource } from '@rosen-bridge/extended-typeorm';
4
- import { EvmRpcObservationExtractor } from './EvmRpcObservationExtractor';
3
+ import { TokenMap } from '@rosen-bridge/tokens';
4
+ import { EvmRpcObservationExtractor } from './evmRpcObservationExtractor';
5
5
  export declare class BinanceRpcObservationExtractor extends EvmRpcObservationExtractor {
6
6
  readonly FROM_CHAIN = "binance";
7
7
  constructor(lockAddress: string, dataSource: DataSource, tokens: TokenMap, logger?: AbstractLogger);
@@ -10,4 +10,4 @@ export declare class BinanceRpcObservationExtractor extends EvmRpcObservationExt
10
10
  */
11
11
  getId: () => string;
12
12
  }
13
- //# sourceMappingURL=BinanceRpcObservationExtractor.d.ts.map
13
+ //# sourceMappingURL=binanceRpcObservationExtractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binanceRpcObservationExtractor.d.ts","sourceRoot":"","sources":["../lib/binanceRpcObservationExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,qBAAa,8BAA+B,SAAQ,0BAA0B;IAC5E,QAAQ,CAAC,UAAU,aAAa;gBAG9B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,QAAQ,EAChB,MAAM,CAAC,EAAE,cAAc;IAgBzB;;OAEG;IACH,KAAK,eAAiC;CACvC"}
@@ -0,0 +1,13 @@
1
+ import { EvmEthersRosenExtractor } from '@rosen-bridge/rosen-extractor';
2
+ import { EvmRpcObservationExtractor } from './evmRpcObservationExtractor';
3
+ export class BinanceRpcObservationExtractor extends EvmRpcObservationExtractor {
4
+ FROM_CHAIN = 'binance';
5
+ constructor(lockAddress, dataSource, tokens, logger) {
6
+ super(dataSource, tokens, new EvmEthersRosenExtractor(lockAddress, tokens, 'binance', 'bnb', logger), logger);
7
+ }
8
+ /**
9
+ * gets Id for current extractor
10
+ */
11
+ getId = () => 'binance-rpc-extractor';
12
+ }
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluYW5jZVJwY09ic2VydmF0aW9uRXh0cmFjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL2JpbmFuY2VScGNPYnNlcnZhdGlvbkV4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUd4RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUxRSxNQUFNLE9BQU8sOEJBQStCLFNBQVEsMEJBQTBCO0lBQ25FLFVBQVUsR0FBRyxTQUFTLENBQUM7SUFFaEMsWUFDRSxXQUFtQixFQUNuQixVQUFzQixFQUN0QixNQUFnQixFQUNoQixNQUF1QjtRQUV2QixLQUFLLENBQ0gsVUFBVSxFQUNWLE1BQU0sRUFDTixJQUFJLHVCQUF1QixDQUN6QixXQUFXLEVBQ1gsTUFBTSxFQUNOLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxDQUNQLEVBQ0QsTUFBTSxDQUNQLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLEdBQUcsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUM7Q0FDdkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdExvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcbmltcG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2V4dGVuZGVkLXR5cGVvcm0nO1xuaW1wb3J0IHsgRXZtRXRoZXJzUm9zZW5FeHRyYWN0b3IgfSBmcm9tICdAcm9zZW4tYnJpZGdlL3Jvc2VuLWV4dHJhY3Rvcic7XG5pbXBvcnQgeyBUb2tlbk1hcCB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvdG9rZW5zJztcblxuaW1wb3J0IHsgRXZtUnBjT2JzZXJ2YXRpb25FeHRyYWN0b3IgfSBmcm9tICcuL2V2bVJwY09ic2VydmF0aW9uRXh0cmFjdG9yJztcblxuZXhwb3J0IGNsYXNzIEJpbmFuY2VScGNPYnNlcnZhdGlvbkV4dHJhY3RvciBleHRlbmRzIEV2bVJwY09ic2VydmF0aW9uRXh0cmFjdG9yIHtcbiAgcmVhZG9ubHkgRlJPTV9DSEFJTiA9ICdiaW5hbmNlJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBsb2NrQWRkcmVzczogc3RyaW5nLFxuICAgIGRhdGFTb3VyY2U6IERhdGFTb3VyY2UsXG4gICAgdG9rZW5zOiBUb2tlbk1hcCxcbiAgICBsb2dnZXI/OiBBYnN0cmFjdExvZ2dlcixcbiAgKSB7XG4gICAgc3VwZXIoXG4gICAgICBkYXRhU291cmNlLFxuICAgICAgdG9rZW5zLFxuICAgICAgbmV3IEV2bUV0aGVyc1Jvc2VuRXh0cmFjdG9yKFxuICAgICAgICBsb2NrQWRkcmVzcyxcbiAgICAgICAgdG9rZW5zLFxuICAgICAgICAnYmluYW5jZScsXG4gICAgICAgICdibmInLFxuICAgICAgICBsb2dnZXIsXG4gICAgICApLFxuICAgICAgbG9nZ2VyLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0cyBJZCBmb3IgY3VycmVudCBleHRyYWN0b3JcbiAgICovXG4gIGdldElkID0gKCkgPT4gJ2JpbmFuY2UtcnBjLWV4dHJhY3Rvcic7XG59XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import { AbstractLogger } from '@rosen-bridge/abstract-logger';
2
- import { TokenMap } from '@rosen-bridge/tokens';
3
2
  import { DataSource } from '@rosen-bridge/extended-typeorm';
4
- import { EvmRpcObservationExtractor } from './EvmRpcObservationExtractor';
3
+ import { TokenMap } from '@rosen-bridge/tokens';
4
+ import { EvmRpcObservationExtractor } from './evmRpcObservationExtractor';
5
5
  export declare class EthereumRpcObservationExtractor extends EvmRpcObservationExtractor {
6
6
  readonly FROM_CHAIN = "ethereum";
7
7
  constructor(lockAddress: string, dataSource: DataSource, tokens: TokenMap, logger?: AbstractLogger);
@@ -10,4 +10,4 @@ export declare class EthereumRpcObservationExtractor extends EvmRpcObservationEx
10
10
  */
11
11
  getId: () => string;
12
12
  }
13
- //# sourceMappingURL=EthereumRpcObservationExtractor.d.ts.map
13
+ //# sourceMappingURL=ethereumRpcObservationExtractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ethereumRpcObservationExtractor.d.ts","sourceRoot":"","sources":["../lib/ethereumRpcObservationExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,qBAAa,+BAAgC,SAAQ,0BAA0B;IAC7E,QAAQ,CAAC,UAAU,cAAc;gBAG/B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,QAAQ,EAChB,MAAM,CAAC,EAAE,cAAc;IAgBzB;;OAEG;IACH,KAAK,eAAkC;CACxC"}
@@ -0,0 +1,13 @@
1
+ import { EvmEthersRosenExtractor } from '@rosen-bridge/rosen-extractor';
2
+ import { EvmRpcObservationExtractor } from './evmRpcObservationExtractor';
3
+ export class EthereumRpcObservationExtractor extends EvmRpcObservationExtractor {
4
+ FROM_CHAIN = 'ethereum';
5
+ constructor(lockAddress, dataSource, tokens, logger) {
6
+ super(dataSource, tokens, new EvmEthersRosenExtractor(lockAddress, tokens, 'ethereum', 'eth', logger), logger);
7
+ }
8
+ /**
9
+ * gets Id for current extractor
10
+ */
11
+ getId = () => 'ethereum-rpc-extractor';
12
+ }
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoZXJldW1ScGNPYnNlcnZhdGlvbkV4dHJhY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9ldGhlcmV1bVJwY09ic2VydmF0aW9uRXh0cmFjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR3hFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTFFLE1BQU0sT0FBTywrQkFBZ0MsU0FBUSwwQkFBMEI7SUFDcEUsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUVqQyxZQUNFLFdBQW1CLEVBQ25CLFVBQXNCLEVBQ3RCLE1BQWdCLEVBQ2hCLE1BQXVCO1FBRXZCLEtBQUssQ0FDSCxVQUFVLEVBQ1YsTUFBTSxFQUNOLElBQUksdUJBQXVCLENBQ3pCLFdBQVcsRUFDWCxNQUFNLEVBQ04sVUFBVSxFQUNWLEtBQUssRUFDTCxNQUFNLENBQ1AsRUFDRCxNQUFNLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssR0FBRyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztDQUN4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1sb2dnZXInO1xuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvZXh0ZW5kZWQtdHlwZW9ybSc7XG5pbXBvcnQgeyBFdm1FdGhlcnNSb3NlbkV4dHJhY3RvciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2Uvcm9zZW4tZXh0cmFjdG9yJztcbmltcG9ydCB7IFRva2VuTWFwIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS90b2tlbnMnO1xuXG5pbXBvcnQgeyBFdm1ScGNPYnNlcnZhdGlvbkV4dHJhY3RvciB9IGZyb20gJy4vZXZtUnBjT2JzZXJ2YXRpb25FeHRyYWN0b3InO1xuXG5leHBvcnQgY2xhc3MgRXRoZXJldW1ScGNPYnNlcnZhdGlvbkV4dHJhY3RvciBleHRlbmRzIEV2bVJwY09ic2VydmF0aW9uRXh0cmFjdG9yIHtcbiAgcmVhZG9ubHkgRlJPTV9DSEFJTiA9ICdldGhlcmV1bSc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbG9ja0FkZHJlc3M6IHN0cmluZyxcbiAgICBkYXRhU291cmNlOiBEYXRhU291cmNlLFxuICAgIHRva2VuczogVG9rZW5NYXAsXG4gICAgbG9nZ2VyPzogQWJzdHJhY3RMb2dnZXIsXG4gICkge1xuICAgIHN1cGVyKFxuICAgICAgZGF0YVNvdXJjZSxcbiAgICAgIHRva2VucyxcbiAgICAgIG5ldyBFdm1FdGhlcnNSb3NlbkV4dHJhY3RvcihcbiAgICAgICAgbG9ja0FkZHJlc3MsXG4gICAgICAgIHRva2VucyxcbiAgICAgICAgJ2V0aGVyZXVtJyxcbiAgICAgICAgJ2V0aCcsXG4gICAgICAgIGxvZ2dlcixcbiAgICAgICksXG4gICAgICBsb2dnZXIsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXRzIElkIGZvciBjdXJyZW50IGV4dHJhY3RvclxuICAgKi9cbiAgZ2V0SWQgPSAoKSA9PiAnZXRoZXJldW0tcnBjLWV4dHJhY3Rvcic7XG59XG4iXX0=
@@ -1,5 +1,5 @@
1
- import { AbstractObservationExtractor } from '@rosen-bridge/abstract-observation-extractor';
2
1
  import { TransactionResponse } from 'ethers';
2
+ import { AbstractObservationExtractor } from '@rosen-bridge/abstract-observation-extractor';
3
3
  import { Block } from '@rosen-bridge/scanner-interfaces';
4
4
  export declare abstract class EvmRpcObservationExtractor extends AbstractObservationExtractor<TransactionResponse> {
5
5
  /**
@@ -15,4 +15,4 @@ export declare abstract class EvmRpcObservationExtractor extends AbstractObserva
15
15
  */
16
16
  getTxId: (tx: TransactionResponse) => string;
17
17
  }
18
- //# sourceMappingURL=EvmRpcObservationExtractor.d.ts.map
18
+ //# sourceMappingURL=evmRpcObservationExtractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evmRpcObservationExtractor.d.ts","sourceRoot":"","sources":["../lib/evmRpcObservationExtractor.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAE9D,OAAO,EACL,4BAA4B,EAE7B,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAEzD,8BAAsB,0BAA2B,SAAQ,4BAA4B,CAAC,mBAAmB,CAAC;IACxG;;;;;;OAMG;IACH,mBAAmB,GACjB,KAAK,KAAK,CAAC,mBAAmB,CAAC,EAC/B,OAAO,KAAK,KACX,OAAO,CAAC,OAAO,CAAC,CAwCjB;IAEF;;OAEG;IACH,OAAO,GAAI,IAAI,mBAAmB,YAOhC;CACH"}
@@ -0,0 +1,60 @@
1
+ import { blake2b } from 'blakejs';
2
+ import { isCallException } from 'ethers';
3
+ import { AbstractObservationExtractor, } from '@rosen-bridge/abstract-observation-extractor';
4
+ export class EvmRpcObservationExtractor extends AbstractObservationExtractor {
5
+ /**
6
+ * gets block id and transactions corresponding to the block and saves if they are valid rosen
7
+ * transactions and in case of success return true and in case of failure returns false
8
+ * additionally, it returns false if the transaction is failed
9
+ * @param block
10
+ * @param txs
11
+ */
12
+ processTransactions = async (txs, block) => {
13
+ const observations = [];
14
+ for (const transaction of txs) {
15
+ const data = this.extractor.get(transaction);
16
+ if (data) {
17
+ try {
18
+ const result = await transaction.wait(0);
19
+ if (result) {
20
+ const requestId = Buffer.from(blake2b(this.getTxId(transaction), undefined, 32)).toString('hex');
21
+ observations.push({
22
+ fromChain: this.FROM_CHAIN,
23
+ toChain: data.toChain,
24
+ amount: data.amount,
25
+ sourceChainTokenId: data.sourceChainTokenId,
26
+ targetChainTokenId: data.targetChainTokenId,
27
+ sourceTxId: data.sourceTxId,
28
+ bridgeFee: data.bridgeFee,
29
+ networkFee: data.networkFee,
30
+ sourceBlockId: block.hash,
31
+ requestId: requestId,
32
+ toAddress: data.toAddress,
33
+ fromAddress: data.fromAddress,
34
+ rawData: data.rawData,
35
+ });
36
+ }
37
+ else
38
+ throw Error(`Impossible behavior: Evm Tx [${transaction.hash}] is included in block [${block.hash}] but waiting resulted in null or undefined`);
39
+ }
40
+ catch (e) {
41
+ if (isCallException(e))
42
+ this.logger.debug(`found valid lock transaction [${transaction.hash}] but tx is failed`);
43
+ else
44
+ throw e;
45
+ }
46
+ }
47
+ }
48
+ return this.actions.storeObservations(observations, block, this.getId());
49
+ };
50
+ /**
51
+ * gets transaction id from TransactionType
52
+ */
53
+ getTxId = (tx) => {
54
+ if (tx.hash == null) {
55
+ throw Error('ImpossibleBehavior: Transactions coming from RPC have to be signed.');
56
+ }
57
+ return tx.hash;
58
+ };
59
+ }
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZtUnBjT2JzZXJ2YXRpb25FeHRyYWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvZXZtUnBjT2JzZXJ2YXRpb25FeHRyYWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNsQyxPQUFPLEVBQUUsZUFBZSxFQUF1QixNQUFNLFFBQVEsQ0FBQztBQUU5RCxPQUFPLEVBQ0wsNEJBQTRCLEdBRTdCLE1BQU0sOENBQThDLENBQUM7QUFHdEQsTUFBTSxPQUFnQiwwQkFBMkIsU0FBUSw0QkFBaUQ7SUFDeEc7Ozs7OztPQU1HO0lBQ0gsbUJBQW1CLEdBQUcsS0FBSyxFQUN6QixHQUErQixFQUMvQixLQUFZLEVBQ00sRUFBRTtRQUNwQixNQUFNLFlBQVksR0FBZ0MsRUFBRSxDQUFDO1FBQ3JELEtBQUssTUFBTSxXQUFXLElBQUksR0FBRyxFQUFFLENBQUM7WUFDOUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDN0MsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDVCxJQUFJLENBQUM7b0JBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN6QyxJQUFJLE1BQU0sRUFBRSxDQUFDO3dCQUNYLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQzNCLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FDbEQsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ2xCLFlBQVksQ0FBQyxJQUFJLENBQUM7NEJBQ2hCLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVTs0QkFDMUIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPOzRCQUNyQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07NEJBQ25CLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7NEJBQzNDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7NEJBQzNDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTs0QkFDM0IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTOzRCQUN6QixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7NEJBQzNCLGFBQWEsRUFBRSxLQUFLLENBQUMsSUFBSTs0QkFDekIsU0FBUyxFQUFFLFNBQVM7NEJBQ3BCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUzs0QkFDekIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXOzRCQUM3QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87eUJBQ3RCLENBQUMsQ0FBQztvQkFDTCxDQUFDOzt3QkFDQyxNQUFNLEtBQUssQ0FDVCxnQ0FBZ0MsV0FBVyxDQUFDLElBQUksMkJBQTJCLEtBQUssQ0FBQyxJQUFJLDZDQUE2QyxDQUNuSSxDQUFDO2dCQUNOLENBQUM7Z0JBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztvQkFDWCxJQUFJLGVBQWUsQ0FBQyxDQUFDLENBQUM7d0JBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLGlDQUFpQyxXQUFXLENBQUMsSUFBSSxvQkFBb0IsQ0FDdEUsQ0FBQzs7d0JBQ0MsTUFBTSxDQUFDLENBQUM7Z0JBQ2YsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDM0UsQ0FBQyxDQUFDO0lBRUY7O09BRUc7SUFDSCxPQUFPLEdBQUcsQ0FBQyxFQUF1QixFQUFFLEVBQUU7UUFDcEMsSUFBSSxFQUFFLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3BCLE1BQU0sS0FBSyxDQUNULHFFQUFxRSxDQUN0RSxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQztJQUNqQixDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJsYWtlMmIgfSBmcm9tICdibGFrZWpzJztcbmltcG9ydCB7IGlzQ2FsbEV4Y2VwdGlvbiwgVHJhbnNhY3Rpb25SZXNwb25zZSB9IGZyb20gJ2V0aGVycyc7XG5cbmltcG9ydCB7XG4gIEFic3RyYWN0T2JzZXJ2YXRpb25FeHRyYWN0b3IsXG4gIEV4dHJhY3RlZE9ic2VydmF0aW9uLFxufSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LW9ic2VydmF0aW9uLWV4dHJhY3Rvcic7XG5pbXBvcnQgeyBCbG9jayB9IGZyb20gJ0Byb3Nlbi1icmlkZ2Uvc2Nhbm5lci1pbnRlcmZhY2VzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEV2bVJwY09ic2VydmF0aW9uRXh0cmFjdG9yIGV4dGVuZHMgQWJzdHJhY3RPYnNlcnZhdGlvbkV4dHJhY3RvcjxUcmFuc2FjdGlvblJlc3BvbnNlPiB7XG4gIC8qKlxuICAgKiBnZXRzIGJsb2NrIGlkIGFuZCB0cmFuc2FjdGlvbnMgY29ycmVzcG9uZGluZyB0byB0aGUgYmxvY2sgYW5kIHNhdmVzIGlmIHRoZXkgYXJlIHZhbGlkIHJvc2VuXG4gICAqICB0cmFuc2FjdGlvbnMgYW5kIGluIGNhc2Ugb2Ygc3VjY2VzcyByZXR1cm4gdHJ1ZSBhbmQgaW4gY2FzZSBvZiBmYWlsdXJlIHJldHVybnMgZmFsc2VcbiAgICogYWRkaXRpb25hbGx5LCBpdCByZXR1cm5zIGZhbHNlIGlmIHRoZSB0cmFuc2FjdGlvbiBpcyBmYWlsZWRcbiAgICogQHBhcmFtIGJsb2NrXG4gICAqIEBwYXJhbSB0eHNcbiAgICovXG4gIHByb2Nlc3NUcmFuc2FjdGlvbnMgPSBhc3luYyAoXG4gICAgdHhzOiBBcnJheTxUcmFuc2FjdGlvblJlc3BvbnNlPixcbiAgICBibG9jazogQmxvY2ssXG4gICk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgIGNvbnN0IG9ic2VydmF0aW9uczogQXJyYXk8RXh0cmFjdGVkT2JzZXJ2YXRpb24+ID0gW107XG4gICAgZm9yIChjb25zdCB0cmFuc2FjdGlvbiBvZiB0eHMpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmV4dHJhY3Rvci5nZXQodHJhbnNhY3Rpb24pO1xuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0cmFuc2FjdGlvbi53YWl0KDApO1xuICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RJZCA9IEJ1ZmZlci5mcm9tKFxuICAgICAgICAgICAgICBibGFrZTJiKHRoaXMuZ2V0VHhJZCh0cmFuc2FjdGlvbiksIHVuZGVmaW5lZCwgMzIpLFxuICAgICAgICAgICAgKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICAgICAgICBvYnNlcnZhdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgIGZyb21DaGFpbjogdGhpcy5GUk9NX0NIQUlOLFxuICAgICAgICAgICAgICB0b0NoYWluOiBkYXRhLnRvQ2hhaW4sXG4gICAgICAgICAgICAgIGFtb3VudDogZGF0YS5hbW91bnQsXG4gICAgICAgICAgICAgIHNvdXJjZUNoYWluVG9rZW5JZDogZGF0YS5zb3VyY2VDaGFpblRva2VuSWQsXG4gICAgICAgICAgICAgIHRhcmdldENoYWluVG9rZW5JZDogZGF0YS50YXJnZXRDaGFpblRva2VuSWQsXG4gICAgICAgICAgICAgIHNvdXJjZVR4SWQ6IGRhdGEuc291cmNlVHhJZCxcbiAgICAgICAgICAgICAgYnJpZGdlRmVlOiBkYXRhLmJyaWRnZUZlZSxcbiAgICAgICAgICAgICAgbmV0d29ya0ZlZTogZGF0YS5uZXR3b3JrRmVlLFxuICAgICAgICAgICAgICBzb3VyY2VCbG9ja0lkOiBibG9jay5oYXNoLFxuICAgICAgICAgICAgICByZXF1ZXN0SWQ6IHJlcXVlc3RJZCxcbiAgICAgICAgICAgICAgdG9BZGRyZXNzOiBkYXRhLnRvQWRkcmVzcyxcbiAgICAgICAgICAgICAgZnJvbUFkZHJlc3M6IGRhdGEuZnJvbUFkZHJlc3MsXG4gICAgICAgICAgICAgIHJhd0RhdGE6IGRhdGEucmF3RGF0YSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgIGBJbXBvc3NpYmxlIGJlaGF2aW9yOiBFdm0gVHggWyR7dHJhbnNhY3Rpb24uaGFzaH1dIGlzIGluY2x1ZGVkIGluIGJsb2NrIFske2Jsb2NrLmhhc2h9XSBidXQgd2FpdGluZyByZXN1bHRlZCBpbiBudWxsIG9yIHVuZGVmaW5lZGAsXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGlzQ2FsbEV4Y2VwdGlvbihlKSlcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgICBgZm91bmQgdmFsaWQgbG9jayB0cmFuc2FjdGlvbiBbJHt0cmFuc2FjdGlvbi5oYXNofV0gYnV0IHR4IGlzIGZhaWxlZGAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGVsc2UgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hY3Rpb25zLnN0b3JlT2JzZXJ2YXRpb25zKG9ic2VydmF0aW9ucywgYmxvY2ssIHRoaXMuZ2V0SWQoKSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIGdldHMgdHJhbnNhY3Rpb24gaWQgZnJvbSBUcmFuc2FjdGlvblR5cGVcbiAgICovXG4gIGdldFR4SWQgPSAodHg6IFRyYW5zYWN0aW9uUmVzcG9uc2UpID0+IHtcbiAgICBpZiAodHguaGFzaCA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgJ0ltcG9zc2libGVCZWhhdmlvcjogVHJhbnNhY3Rpb25zIGNvbWluZyBmcm9tIFJQQyBoYXZlIHRvIGJlIHNpZ25lZC4nLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHR4Lmhhc2g7XG4gIH07XG59XG4iXX0=
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export * from './BinanceRpcObservationExtractor';
2
- export * from './EthereumRpcObservationExtractor';
3
- export * from './EvmRpcObservationExtractor';
1
+ export * from './binanceRpcObservationExtractor';
2
+ export * from './ethereumRpcObservationExtractor';
3
+ export * from './evmRpcObservationExtractor';
4
4
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export * from './BinanceRpcObservationExtractor';
2
- export * from './EthereumRpcObservationExtractor';
3
- export * from './EvmRpcObservationExtractor';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL0JpbmFuY2VScGNPYnNlcnZhdGlvbkV4dHJhY3Rvcic7XG5leHBvcnQgKiBmcm9tICcuL0V0aGVyZXVtUnBjT2JzZXJ2YXRpb25FeHRyYWN0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9Fdm1ScGNPYnNlcnZhdGlvbkV4dHJhY3Rvcic7XG4iXX0=
1
+ export * from './binanceRpcObservationExtractor';
2
+ export * from './ethereumRpcObservationExtractor';
3
+ export * from './evmRpcObservationExtractor';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2JpbmFuY2VScGNPYnNlcnZhdGlvbkV4dHJhY3Rvcic7XG5leHBvcnQgKiBmcm9tICcuL2V0aGVyZXVtUnBjT2JzZXJ2YXRpb25FeHRyYWN0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9ldm1ScGNPYnNlcnZhdGlvbkV4dHJhY3Rvcic7XG4iXX0=
package/package.json CHANGED
@@ -1,41 +1,49 @@
1
1
  {
2
2
  "name": "@rosen-bridge/evm-observation-extractor",
3
- "version": "5.2.1",
3
+ "version": "5.3.0-82c56984",
4
4
  "description": "Event observation data extractor for EVM-compatible chains",
5
- "repository": "https://github.com/rosen-bridge/scanner",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/rosen-bridge/scanner.git"
8
+ },
6
9
  "license": "MIT",
7
10
  "author": "Rosen Team",
8
11
  "type": "module",
9
12
  "main": "dist/index.js",
10
13
  "types": "dist/index.d.ts",
14
+ "files": [
15
+ "dist",
16
+ "CHANGELOG.md"
17
+ ],
11
18
  "scripts": {
12
19
  "build": "tsc --build tsconfig.build.json",
20
+ "clean": "rimraf dist && rimraf tsconfig.build.tsbuildinfo",
13
21
  "coverage": "npm run test -- --coverage",
14
22
  "lint": "eslint --fix . && npm run prettify",
15
- "prettify": "prettier --write . --ignore-path ./.gitignore",
16
- "release": "npm run build && npm publish --access public",
23
+ "lint:check": "eslint . && npm run prettify:check",
24
+ "prettify": "prettier --write . --ignore-path ../../../.gitignore",
25
+ "prettify:check": "prettier --check . --ignore-path ../../../.gitignore",
26
+ "release": "npm run test -- --run && npm run clean && npm run build && npm publish --access public",
17
27
  "test": "NODE_OPTIONS='--import tsx' vitest",
18
28
  "type-check": "tsc --noEmit"
19
29
  },
30
+ "dependencies": {
31
+ "@rosen-bridge/abstract-logger": "^3.0.1",
32
+ "@rosen-bridge/abstract-observation-extractor": "^0.2.0-82c56984",
33
+ "@rosen-bridge/extended-typeorm": "^1.0.1",
34
+ "@rosen-bridge/rosen-extractor": "^11.0.0",
35
+ "@rosen-bridge/scanner-interfaces": "^0.2.1-82c56984",
36
+ "@rosen-bridge/tokens": "^4.0.1",
37
+ "blakejs": "^1.2.1",
38
+ "ethers": "6.13.2"
39
+ },
20
40
  "devDependencies": {
21
- "@rosen-bridge/abstract-scanner": "^0.1.0",
22
- "@types/node": "^22.18.0",
41
+ "@rosen-bridge/abstract-scanner": "^0.2.1-82c56984",
23
42
  "@vitest/coverage-istanbul": "^3.1.4",
24
43
  "tsx": "^4.19.4",
25
- "typescript": "^5.3.3",
26
44
  "vitest": "^3.1.4"
27
45
  },
28
46
  "engines": {
29
47
  "node": ">=22.18.0"
30
- },
31
- "dependencies": {
32
- "@rosen-bridge/abstract-logger": "^2.0.1",
33
- "@rosen-bridge/abstract-observation-extractor": "^0.1.1",
34
- "@rosen-bridge/extended-typeorm": "^0.2.1",
35
- "@rosen-bridge/rosen-extractor": "^9.0.0",
36
- "@rosen-bridge/scanner-interfaces": "^0.2.0",
37
- "@rosen-bridge/tokens": "^3.1.1",
38
- "blakejs": "^1.2.1",
39
- "ethers": "6.13.2"
40
48
  }
41
49
  }
package/.eslintignore DELETED
@@ -1 +0,0 @@
1
- dist
@@ -1 +0,0 @@
1
- {"version":3,"file":"BinanceRpcObservationExtractor.d.ts","sourceRoot":"","sources":["../lib/BinanceRpcObservationExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,qBAAa,8BAA+B,SAAQ,0BAA0B;IAC5E,QAAQ,CAAC,UAAU,aAAa;gBAG9B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,QAAQ,EAChB,MAAM,CAAC,EAAE,cAAc;IAgBzB;;OAEG;IACH,KAAK,eAAiC;CACvC"}
@@ -1,13 +0,0 @@
1
- import { EvmEthersRosenExtractor } from '@rosen-bridge/rosen-extractor';
2
- import { EvmRpcObservationExtractor } from './EvmRpcObservationExtractor';
3
- export class BinanceRpcObservationExtractor extends EvmRpcObservationExtractor {
4
- FROM_CHAIN = 'binance';
5
- constructor(lockAddress, dataSource, tokens, logger) {
6
- super(dataSource, tokens, new EvmEthersRosenExtractor(lockAddress, tokens, 'binance', 'bnb', logger), logger);
7
- }
8
- /**
9
- * gets Id for current extractor
10
- */
11
- getId = () => 'binance-rpc-extractor';
12
- }
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmluYW5jZVJwY09ic2VydmF0aW9uRXh0cmFjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL0JpbmFuY2VScGNPYnNlcnZhdGlvbkV4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUd4RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUxRSxNQUFNLE9BQU8sOEJBQStCLFNBQVEsMEJBQTBCO0lBQ25FLFVBQVUsR0FBRyxTQUFTLENBQUM7SUFFaEMsWUFDRSxXQUFtQixFQUNuQixVQUFzQixFQUN0QixNQUFnQixFQUNoQixNQUF1QjtRQUV2QixLQUFLLENBQ0gsVUFBVSxFQUNWLE1BQU0sRUFDTixJQUFJLHVCQUF1QixDQUN6QixXQUFXLEVBQ1gsTUFBTSxFQUNOLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxDQUNQLEVBQ0QsTUFBTSxDQUNQLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLEdBQUcsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUM7Q0FDdkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdExvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcbmltcG9ydCB7IEV2bUV0aGVyc1Jvc2VuRXh0cmFjdG9yIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9yb3Nlbi1leHRyYWN0b3InO1xuaW1wb3J0IHsgVG9rZW5NYXAgfSBmcm9tICdAcm9zZW4tYnJpZGdlL3Rva2Vucyc7XG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9leHRlbmRlZC10eXBlb3JtJztcbmltcG9ydCB7IEV2bVJwY09ic2VydmF0aW9uRXh0cmFjdG9yIH0gZnJvbSAnLi9Fdm1ScGNPYnNlcnZhdGlvbkV4dHJhY3Rvcic7XG5cbmV4cG9ydCBjbGFzcyBCaW5hbmNlUnBjT2JzZXJ2YXRpb25FeHRyYWN0b3IgZXh0ZW5kcyBFdm1ScGNPYnNlcnZhdGlvbkV4dHJhY3RvciB7XG4gIHJlYWRvbmx5IEZST01fQ0hBSU4gPSAnYmluYW5jZSc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbG9ja0FkZHJlc3M6IHN0cmluZyxcbiAgICBkYXRhU291cmNlOiBEYXRhU291cmNlLFxuICAgIHRva2VuczogVG9rZW5NYXAsXG4gICAgbG9nZ2VyPzogQWJzdHJhY3RMb2dnZXIsXG4gICkge1xuICAgIHN1cGVyKFxuICAgICAgZGF0YVNvdXJjZSxcbiAgICAgIHRva2VucyxcbiAgICAgIG5ldyBFdm1FdGhlcnNSb3NlbkV4dHJhY3RvcihcbiAgICAgICAgbG9ja0FkZHJlc3MsXG4gICAgICAgIHRva2VucyxcbiAgICAgICAgJ2JpbmFuY2UnLFxuICAgICAgICAnYm5iJyxcbiAgICAgICAgbG9nZ2VyLFxuICAgICAgKSxcbiAgICAgIGxvZ2dlcixcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldHMgSWQgZm9yIGN1cnJlbnQgZXh0cmFjdG9yXG4gICAqL1xuICBnZXRJZCA9ICgpID0+ICdiaW5hbmNlLXJwYy1leHRyYWN0b3InO1xufVxuIl19
@@ -1 +0,0 @@
1
- {"version":3,"file":"EthereumRpcObservationExtractor.d.ts","sourceRoot":"","sources":["../lib/EthereumRpcObservationExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,qBAAa,+BAAgC,SAAQ,0BAA0B;IAC7E,QAAQ,CAAC,UAAU,cAAc;gBAG/B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,QAAQ,EAChB,MAAM,CAAC,EAAE,cAAc;IAgBzB;;OAEG;IACH,KAAK,eAAkC;CACxC"}
@@ -1,13 +0,0 @@
1
- import { EvmEthersRosenExtractor } from '@rosen-bridge/rosen-extractor';
2
- import { EvmRpcObservationExtractor } from './EvmRpcObservationExtractor';
3
- export class EthereumRpcObservationExtractor extends EvmRpcObservationExtractor {
4
- FROM_CHAIN = 'ethereum';
5
- constructor(lockAddress, dataSource, tokens, logger) {
6
- super(dataSource, tokens, new EvmEthersRosenExtractor(lockAddress, tokens, 'ethereum', 'eth', logger), logger);
7
- }
8
- /**
9
- * gets Id for current extractor
10
- */
11
- getId = () => 'ethereum-rpc-extractor';
12
- }
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXRoZXJldW1ScGNPYnNlcnZhdGlvbkV4dHJhY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9FdGhlcmV1bVJwY09ic2VydmF0aW9uRXh0cmFjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR3hFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTFFLE1BQU0sT0FBTywrQkFBZ0MsU0FBUSwwQkFBMEI7SUFDcEUsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUVqQyxZQUNFLFdBQW1CLEVBQ25CLFVBQXNCLEVBQ3RCLE1BQWdCLEVBQ2hCLE1BQXVCO1FBRXZCLEtBQUssQ0FDSCxVQUFVLEVBQ1YsTUFBTSxFQUNOLElBQUksdUJBQXVCLENBQ3pCLFdBQVcsRUFDWCxNQUFNLEVBQ04sVUFBVSxFQUNWLEtBQUssRUFDTCxNQUFNLENBQ1AsRUFDRCxNQUFNLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssR0FBRyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztDQUN4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1sb2dnZXInO1xuaW1wb3J0IHsgRXZtRXRoZXJzUm9zZW5FeHRyYWN0b3IgfSBmcm9tICdAcm9zZW4tYnJpZGdlL3Jvc2VuLWV4dHJhY3Rvcic7XG5pbXBvcnQgeyBUb2tlbk1hcCB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvdG9rZW5zJztcbmltcG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2V4dGVuZGVkLXR5cGVvcm0nO1xuaW1wb3J0IHsgRXZtUnBjT2JzZXJ2YXRpb25FeHRyYWN0b3IgfSBmcm9tICcuL0V2bVJwY09ic2VydmF0aW9uRXh0cmFjdG9yJztcblxuZXhwb3J0IGNsYXNzIEV0aGVyZXVtUnBjT2JzZXJ2YXRpb25FeHRyYWN0b3IgZXh0ZW5kcyBFdm1ScGNPYnNlcnZhdGlvbkV4dHJhY3RvciB7XG4gIHJlYWRvbmx5IEZST01fQ0hBSU4gPSAnZXRoZXJldW0nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGxvY2tBZGRyZXNzOiBzdHJpbmcsXG4gICAgZGF0YVNvdXJjZTogRGF0YVNvdXJjZSxcbiAgICB0b2tlbnM6IFRva2VuTWFwLFxuICAgIGxvZ2dlcj86IEFic3RyYWN0TG9nZ2VyLFxuICApIHtcbiAgICBzdXBlcihcbiAgICAgIGRhdGFTb3VyY2UsXG4gICAgICB0b2tlbnMsXG4gICAgICBuZXcgRXZtRXRoZXJzUm9zZW5FeHRyYWN0b3IoXG4gICAgICAgIGxvY2tBZGRyZXNzLFxuICAgICAgICB0b2tlbnMsXG4gICAgICAgICdldGhlcmV1bScsXG4gICAgICAgICdldGgnLFxuICAgICAgICBsb2dnZXIsXG4gICAgICApLFxuICAgICAgbG9nZ2VyLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0cyBJZCBmb3IgY3VycmVudCBleHRyYWN0b3JcbiAgICovXG4gIGdldElkID0gKCkgPT4gJ2V0aGVyZXVtLXJwYy1leHRyYWN0b3InO1xufVxuIl19
@@ -1 +0,0 @@
1
- {"version":3,"file":"EvmRpcObservationExtractor.d.ts","sourceRoot":"","sources":["../lib/EvmRpcObservationExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAE7B,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAmB,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAE9D,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAEzD,8BAAsB,0BAA2B,SAAQ,4BAA4B,CAAC,mBAAmB,CAAC;IACxG;;;;;;OAMG;IACH,mBAAmB,QACZ,MAAM,mBAAmB,CAAC,SACxB,KAAK,KACX,QAAQ,OAAO,CAAC,CAuCjB;IAEF;;OAEG;IACH,OAAO,OAAQ,mBAAmB,YAOhC;CACH"}
@@ -1,59 +0,0 @@
1
- import { AbstractObservationExtractor, } from '@rosen-bridge/abstract-observation-extractor';
2
- import { isCallException } from 'ethers';
3
- import { blake2b } from 'blakejs';
4
- export class EvmRpcObservationExtractor extends AbstractObservationExtractor {
5
- /**
6
- * gets block id and transactions corresponding to the block and saves if they are valid rosen
7
- * transactions and in case of success return true and in case of failure returns false
8
- * additionally, it returns false if the transaction is failed
9
- * @param block
10
- * @param txs
11
- */
12
- processTransactions = async (txs, block) => {
13
- const observations = [];
14
- for (const transaction of txs) {
15
- const data = this.extractor.get(transaction);
16
- if (data) {
17
- try {
18
- const result = await transaction.wait(0);
19
- if (result) {
20
- const requestId = Buffer.from(blake2b(this.getTxId(transaction), undefined, 32)).toString('hex');
21
- observations.push({
22
- fromChain: this.FROM_CHAIN,
23
- toChain: data.toChain,
24
- amount: data.amount,
25
- sourceChainTokenId: data.sourceChainTokenId,
26
- targetChainTokenId: data.targetChainTokenId,
27
- sourceTxId: data.sourceTxId,
28
- bridgeFee: data.bridgeFee,
29
- networkFee: data.networkFee,
30
- sourceBlockId: block.hash,
31
- requestId: requestId,
32
- toAddress: data.toAddress,
33
- fromAddress: data.fromAddress,
34
- });
35
- }
36
- else
37
- throw Error(`Impossible behavior: Evm Tx [${transaction.hash}] is included in block [${block.hash}] but waiting resulted in null or undefined`);
38
- }
39
- catch (e) {
40
- if (isCallException(e))
41
- this.logger.debug(`found valid lock transaction [${transaction.hash}] but tx is failed`);
42
- else
43
- throw e;
44
- }
45
- }
46
- }
47
- return this.actions.storeObservations(observations, block, this.getId());
48
- };
49
- /**
50
- * gets transaction id from TransactionType
51
- */
52
- getTxId = (tx) => {
53
- if (tx.hash == null) {
54
- throw Error('ImpossibleBehavior: Transactions coming from RPC have to be signed.');
55
- }
56
- return tx.hash;
57
- };
58
- }
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZtUnBjT2JzZXJ2YXRpb25FeHRyYWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvRXZtUnBjT2JzZXJ2YXRpb25FeHRyYWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLDRCQUE0QixHQUU3QixNQUFNLDhDQUE4QyxDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQXVCLE1BQU0sUUFBUSxDQUFDO0FBQzlELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFHbEMsTUFBTSxPQUFnQiwwQkFBMkIsU0FBUSw0QkFBaUQ7SUFDeEc7Ozs7OztPQU1HO0lBQ0gsbUJBQW1CLEdBQUcsS0FBSyxFQUN6QixHQUErQixFQUMvQixLQUFZLEVBQ00sRUFBRTtRQUNwQixNQUFNLFlBQVksR0FBZ0MsRUFBRSxDQUFDO1FBQ3JELEtBQUssTUFBTSxXQUFXLElBQUksR0FBRyxFQUFFLENBQUM7WUFDOUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDN0MsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDVCxJQUFJLENBQUM7b0JBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN6QyxJQUFJLE1BQU0sRUFBRSxDQUFDO3dCQUNYLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQzNCLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FDbEQsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ2xCLFlBQVksQ0FBQyxJQUFJLENBQUM7NEJBQ2hCLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVTs0QkFDMUIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPOzRCQUNyQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07NEJBQ25CLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7NEJBQzNDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7NEJBQzNDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTs0QkFDM0IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTOzRCQUN6QixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7NEJBQzNCLGFBQWEsRUFBRSxLQUFLLENBQUMsSUFBSTs0QkFDekIsU0FBUyxFQUFFLFNBQVM7NEJBQ3BCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUzs0QkFDekIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO3lCQUM5QixDQUFDLENBQUM7b0JBQ0wsQ0FBQzs7d0JBQ0MsTUFBTSxLQUFLLENBQ1QsZ0NBQWdDLFdBQVcsQ0FBQyxJQUFJLDJCQUEyQixLQUFLLENBQUMsSUFBSSw2Q0FBNkMsQ0FDbkksQ0FBQztnQkFDTixDQUFDO2dCQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQ1gsSUFBSSxlQUFlLENBQUMsQ0FBQyxDQUFDO3dCQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZixpQ0FBaUMsV0FBVyxDQUFDLElBQUksb0JBQW9CLENBQ3RFLENBQUM7O3dCQUNDLE1BQU0sQ0FBQyxDQUFDO2dCQUNmLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLENBQUMsQ0FBQztJQUVGOztPQUVHO0lBQ0gsT0FBTyxHQUFHLENBQUMsRUFBdUIsRUFBRSxFQUFFO1FBQ3BDLElBQUksRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNwQixNQUFNLEtBQUssQ0FDVCxxRUFBcUUsQ0FDdEUsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDakIsQ0FBQyxDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBYnN0cmFjdE9ic2VydmF0aW9uRXh0cmFjdG9yLFxuICBFeHRyYWN0ZWRPYnNlcnZhdGlvbixcbn0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1vYnNlcnZhdGlvbi1leHRyYWN0b3InO1xuaW1wb3J0IHsgaXNDYWxsRXhjZXB0aW9uLCBUcmFuc2FjdGlvblJlc3BvbnNlIH0gZnJvbSAnZXRoZXJzJztcbmltcG9ydCB7IGJsYWtlMmIgfSBmcm9tICdibGFrZWpzJztcbmltcG9ydCB7IEJsb2NrIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9zY2FubmVyLWludGVyZmFjZXMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRXZtUnBjT2JzZXJ2YXRpb25FeHRyYWN0b3IgZXh0ZW5kcyBBYnN0cmFjdE9ic2VydmF0aW9uRXh0cmFjdG9yPFRyYW5zYWN0aW9uUmVzcG9uc2U+IHtcbiAgLyoqXG4gICAqIGdldHMgYmxvY2sgaWQgYW5kIHRyYW5zYWN0aW9ucyBjb3JyZXNwb25kaW5nIHRvIHRoZSBibG9jayBhbmQgc2F2ZXMgaWYgdGhleSBhcmUgdmFsaWQgcm9zZW5cbiAgICogIHRyYW5zYWN0aW9ucyBhbmQgaW4gY2FzZSBvZiBzdWNjZXNzIHJldHVybiB0cnVlIGFuZCBpbiBjYXNlIG9mIGZhaWx1cmUgcmV0dXJucyBmYWxzZVxuICAgKiBhZGRpdGlvbmFsbHksIGl0IHJldHVybnMgZmFsc2UgaWYgdGhlIHRyYW5zYWN0aW9uIGlzIGZhaWxlZFxuICAgKiBAcGFyYW0gYmxvY2tcbiAgICogQHBhcmFtIHR4c1xuICAgKi9cbiAgcHJvY2Vzc1RyYW5zYWN0aW9ucyA9IGFzeW5jIChcbiAgICB0eHM6IEFycmF5PFRyYW5zYWN0aW9uUmVzcG9uc2U+LFxuICAgIGJsb2NrOiBCbG9jayxcbiAgKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gICAgY29uc3Qgb2JzZXJ2YXRpb25zOiBBcnJheTxFeHRyYWN0ZWRPYnNlcnZhdGlvbj4gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHRyYW5zYWN0aW9uIG9mIHR4cykge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZXh0cmFjdG9yLmdldCh0cmFuc2FjdGlvbik7XG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyYW5zYWN0aW9uLndhaXQoMCk7XG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgY29uc3QgcmVxdWVzdElkID0gQnVmZmVyLmZyb20oXG4gICAgICAgICAgICAgIGJsYWtlMmIodGhpcy5nZXRUeElkKHRyYW5zYWN0aW9uKSwgdW5kZWZpbmVkLCAzMiksXG4gICAgICAgICAgICApLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgICAgICAgIG9ic2VydmF0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgZnJvbUNoYWluOiB0aGlzLkZST01fQ0hBSU4sXG4gICAgICAgICAgICAgIHRvQ2hhaW46IGRhdGEudG9DaGFpbixcbiAgICAgICAgICAgICAgYW1vdW50OiBkYXRhLmFtb3VudCxcbiAgICAgICAgICAgICAgc291cmNlQ2hhaW5Ub2tlbklkOiBkYXRhLnNvdXJjZUNoYWluVG9rZW5JZCxcbiAgICAgICAgICAgICAgdGFyZ2V0Q2hhaW5Ub2tlbklkOiBkYXRhLnRhcmdldENoYWluVG9rZW5JZCxcbiAgICAgICAgICAgICAgc291cmNlVHhJZDogZGF0YS5zb3VyY2VUeElkLFxuICAgICAgICAgICAgICBicmlkZ2VGZWU6IGRhdGEuYnJpZGdlRmVlLFxuICAgICAgICAgICAgICBuZXR3b3JrRmVlOiBkYXRhLm5ldHdvcmtGZWUsXG4gICAgICAgICAgICAgIHNvdXJjZUJsb2NrSWQ6IGJsb2NrLmhhc2gsXG4gICAgICAgICAgICAgIHJlcXVlc3RJZDogcmVxdWVzdElkLFxuICAgICAgICAgICAgICB0b0FkZHJlc3M6IGRhdGEudG9BZGRyZXNzLFxuICAgICAgICAgICAgICBmcm9tQWRkcmVzczogZGF0YS5mcm9tQWRkcmVzcyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgIGBJbXBvc3NpYmxlIGJlaGF2aW9yOiBFdm0gVHggWyR7dHJhbnNhY3Rpb24uaGFzaH1dIGlzIGluY2x1ZGVkIGluIGJsb2NrIFske2Jsb2NrLmhhc2h9XSBidXQgd2FpdGluZyByZXN1bHRlZCBpbiBudWxsIG9yIHVuZGVmaW5lZGAsXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGlzQ2FsbEV4Y2VwdGlvbihlKSlcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgICBgZm91bmQgdmFsaWQgbG9jayB0cmFuc2FjdGlvbiBbJHt0cmFuc2FjdGlvbi5oYXNofV0gYnV0IHR4IGlzIGZhaWxlZGAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGVsc2UgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hY3Rpb25zLnN0b3JlT2JzZXJ2YXRpb25zKG9ic2VydmF0aW9ucywgYmxvY2ssIHRoaXMuZ2V0SWQoKSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIGdldHMgdHJhbnNhY3Rpb24gaWQgZnJvbSBUcmFuc2FjdGlvblR5cGVcbiAgICovXG4gIGdldFR4SWQgPSAodHg6IFRyYW5zYWN0aW9uUmVzcG9uc2UpID0+IHtcbiAgICBpZiAodHguaGFzaCA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgJ0ltcG9zc2libGVCZWhhdmlvcjogVHJhbnNhY3Rpb25zIGNvbWluZyBmcm9tIFJQQyBoYXZlIHRvIGJlIHNpZ25lZC4nLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHR4Lmhhc2g7XG4gIH07XG59XG4iXX0=
@@ -1,34 +0,0 @@
1
- import { AbstractLogger } from '@rosen-bridge/abstract-logger';
2
- import { EvmEthersRosenExtractor } from '@rosen-bridge/rosen-extractor';
3
- import { TokenMap } from '@rosen-bridge/tokens';
4
- import { DataSource } from '@rosen-bridge/extended-typeorm';
5
- import { EvmRpcObservationExtractor } from './EvmRpcObservationExtractor';
6
-
7
- export class BinanceRpcObservationExtractor extends EvmRpcObservationExtractor {
8
- readonly FROM_CHAIN = 'binance';
9
-
10
- constructor(
11
- lockAddress: string,
12
- dataSource: DataSource,
13
- tokens: TokenMap,
14
- logger?: AbstractLogger,
15
- ) {
16
- super(
17
- dataSource,
18
- tokens,
19
- new EvmEthersRosenExtractor(
20
- lockAddress,
21
- tokens,
22
- 'binance',
23
- 'bnb',
24
- logger,
25
- ),
26
- logger,
27
- );
28
- }
29
-
30
- /**
31
- * gets Id for current extractor
32
- */
33
- getId = () => 'binance-rpc-extractor';
34
- }
@@ -1,34 +0,0 @@
1
- import { AbstractLogger } from '@rosen-bridge/abstract-logger';
2
- import { EvmEthersRosenExtractor } from '@rosen-bridge/rosen-extractor';
3
- import { TokenMap } from '@rosen-bridge/tokens';
4
- import { DataSource } from '@rosen-bridge/extended-typeorm';
5
- import { EvmRpcObservationExtractor } from './EvmRpcObservationExtractor';
6
-
7
- export class EthereumRpcObservationExtractor extends EvmRpcObservationExtractor {
8
- readonly FROM_CHAIN = 'ethereum';
9
-
10
- constructor(
11
- lockAddress: string,
12
- dataSource: DataSource,
13
- tokens: TokenMap,
14
- logger?: AbstractLogger,
15
- ) {
16
- super(
17
- dataSource,
18
- tokens,
19
- new EvmEthersRosenExtractor(
20
- lockAddress,
21
- tokens,
22
- 'ethereum',
23
- 'eth',
24
- logger,
25
- ),
26
- logger,
27
- );
28
- }
29
-
30
- /**
31
- * gets Id for current extractor
32
- */
33
- getId = () => 'ethereum-rpc-extractor';
34
- }
@@ -1,72 +0,0 @@
1
- import {
2
- AbstractObservationExtractor,
3
- ExtractedObservation,
4
- } from '@rosen-bridge/abstract-observation-extractor';
5
- import { isCallException, TransactionResponse } from 'ethers';
6
- import { blake2b } from 'blakejs';
7
- import { Block } from '@rosen-bridge/scanner-interfaces';
8
-
9
- export abstract class EvmRpcObservationExtractor extends AbstractObservationExtractor<TransactionResponse> {
10
- /**
11
- * gets block id and transactions corresponding to the block and saves if they are valid rosen
12
- * transactions and in case of success return true and in case of failure returns false
13
- * additionally, it returns false if the transaction is failed
14
- * @param block
15
- * @param txs
16
- */
17
- processTransactions = async (
18
- txs: Array<TransactionResponse>,
19
- block: Block,
20
- ): Promise<boolean> => {
21
- const observations: Array<ExtractedObservation> = [];
22
- for (const transaction of txs) {
23
- const data = this.extractor.get(transaction);
24
- if (data) {
25
- try {
26
- const result = await transaction.wait(0);
27
- if (result) {
28
- const requestId = Buffer.from(
29
- blake2b(this.getTxId(transaction), undefined, 32),
30
- ).toString('hex');
31
- observations.push({
32
- fromChain: this.FROM_CHAIN,
33
- toChain: data.toChain,
34
- amount: data.amount,
35
- sourceChainTokenId: data.sourceChainTokenId,
36
- targetChainTokenId: data.targetChainTokenId,
37
- sourceTxId: data.sourceTxId,
38
- bridgeFee: data.bridgeFee,
39
- networkFee: data.networkFee,
40
- sourceBlockId: block.hash,
41
- requestId: requestId,
42
- toAddress: data.toAddress,
43
- fromAddress: data.fromAddress,
44
- });
45
- } else
46
- throw Error(
47
- `Impossible behavior: Evm Tx [${transaction.hash}] is included in block [${block.hash}] but waiting resulted in null or undefined`,
48
- );
49
- } catch (e) {
50
- if (isCallException(e))
51
- this.logger.debug(
52
- `found valid lock transaction [${transaction.hash}] but tx is failed`,
53
- );
54
- else throw e;
55
- }
56
- }
57
- }
58
- return this.actions.storeObservations(observations, block, this.getId());
59
- };
60
-
61
- /**
62
- * gets transaction id from TransactionType
63
- */
64
- getTxId = (tx: TransactionResponse) => {
65
- if (tx.hash == null) {
66
- throw Error(
67
- 'ImpossibleBehavior: Transactions coming from RPC have to be signed.',
68
- );
69
- }
70
- return tx.hash;
71
- };
72
- }
package/lib/index.ts DELETED
@@ -1,3 +0,0 @@
1
- export * from './BinanceRpcObservationExtractor';
2
- export * from './EthereumRpcObservationExtractor';
3
- export * from './EvmRpcObservationExtractor';