@shapeshiftoss/unchained-client 6.10.0 → 6.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bitcoin/parser/index.d.ts.map +1 -1
- package/dist/bitcoin/parser/index.js +4 -3
- package/dist/bitcoin/parser/index.js.map +1 -1
- package/dist/cosmos/parser/index.d.ts +4 -4
- package/dist/cosmos/parser/index.d.ts.map +1 -1
- package/dist/cosmos/parser/index.js +27 -14
- package/dist/cosmos/parser/index.js.map +1 -1
- package/dist/cosmos/parser/utils.d.ts +1 -1
- package/dist/cosmos/parser/utils.d.ts.map +1 -1
- package/dist/cosmos/parser/utils.js +13 -9
- package/dist/cosmos/parser/utils.js.map +1 -1
- package/dist/cosmos/types.d.ts +4 -0
- package/dist/cosmos/types.d.ts.map +1 -1
- package/dist/ethereum/parser/foxy.d.ts +7 -7
- package/dist/ethereum/parser/foxy.d.ts.map +1 -1
- package/dist/ethereum/parser/foxy.js +11 -31
- package/dist/ethereum/parser/foxy.js.map +1 -1
- package/dist/ethereum/parser/index.d.ts.map +1 -1
- package/dist/ethereum/parser/index.js +4 -3
- package/dist/ethereum/parser/index.js.map +1 -1
- package/dist/ethereum/parser/thor.d.ts +5 -3
- package/dist/ethereum/parser/thor.d.ts.map +1 -1
- package/dist/ethereum/parser/thor.js +15 -19
- package/dist/ethereum/parser/thor.js.map +1 -1
- package/dist/ethereum/parser/uniV2.d.ts +5 -4
- package/dist/ethereum/parser/uniV2.d.ts.map +1 -1
- package/dist/ethereum/parser/uniV2.js +78 -73
- package/dist/ethereum/parser/uniV2.js.map +1 -1
- package/dist/ethereum/parser/weth.d.ts +6 -4
- package/dist/ethereum/parser/weth.d.ts.map +1 -1
- package/dist/ethereum/parser/weth.js +44 -55
- package/dist/ethereum/parser/weth.js.map +1 -1
- package/dist/ethereum/parser/yearn.d.ts +10 -10
- package/dist/ethereum/parser/yearn.d.ts.map +1 -1
- package/dist/ethereum/parser/yearn.js +23 -22
- package/dist/ethereum/parser/yearn.js.map +1 -1
- package/dist/generated/bitcoin/api.d.ts +1 -1
- package/dist/generated/bitcoin/api.js +1 -1
- package/dist/generated/bitcoin/base.d.ts +1 -1
- package/dist/generated/bitcoin/base.js +1 -1
- package/dist/generated/bitcoin/common.d.ts +1 -1
- package/dist/generated/bitcoin/common.js +1 -1
- package/dist/generated/bitcoin/configuration.d.ts +1 -1
- package/dist/generated/bitcoin/configuration.js +1 -1
- package/dist/generated/bitcoin/index.d.ts +1 -1
- package/dist/generated/bitcoin/index.js +1 -1
- package/dist/generated/ethereum/api.d.ts +1 -1
- package/dist/generated/ethereum/api.js +1 -1
- package/dist/generated/ethereum/base.d.ts +1 -1
- package/dist/generated/ethereum/base.js +1 -1
- package/dist/generated/ethereum/common.d.ts +1 -1
- package/dist/generated/ethereum/common.js +1 -1
- package/dist/generated/ethereum/configuration.d.ts +1 -1
- package/dist/generated/ethereum/configuration.js +1 -1
- package/dist/generated/ethereum/index.d.ts +1 -1
- package/dist/generated/ethereum/index.js +1 -1
- package/dist/tsconfig.tsbuildinfo +165 -149
- package/dist/types.d.ts +12 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +6 -3
- package/dist/utils.js.map +1 -1
- package/dist/websocket.d.ts.map +1 -1
- package/dist/websocket.js +5 -1
- package/dist/websocket.js.map +1 -1
- package/package.json +5 -5
|
@@ -24,26 +24,96 @@ const constants_1 = require("./constants");
|
|
|
24
24
|
class Parser {
|
|
25
25
|
constructor(args) {
|
|
26
26
|
this.abiInterface = new ethers_1.ethers.utils.Interface(uniV2_1.default);
|
|
27
|
+
this.supportedFunctions = {
|
|
28
|
+
addLiquidityEthSigHash: this.abiInterface.getSighash('addLiquidityETH'),
|
|
29
|
+
removeLiquidityEthSigHash: this.abiInterface.getSighash('removeLiquidityETH'),
|
|
30
|
+
};
|
|
27
31
|
this.network = args.network;
|
|
28
32
|
this.provider = args.provider;
|
|
29
|
-
this.addLiquidityEthSigHash = this.abiInterface.getSighash('addLiquidityETH');
|
|
30
|
-
this.removeLiquidityEthSigHash = this.abiInterface.getSighash('removeLiquidityETH');
|
|
31
33
|
this.wethContract = {
|
|
32
34
|
mainnet: constants_1.WETH_CONTRACT_MAINNET,
|
|
33
35
|
ropsten: constants_1.WETH_CONTRACT_ROPSTEN,
|
|
34
36
|
}[this.network];
|
|
35
37
|
}
|
|
36
38
|
parse(tx) {
|
|
37
|
-
var _a;
|
|
39
|
+
var _a, _b, _c;
|
|
38
40
|
return __awaiter(this, void 0, void 0, function* () {
|
|
39
|
-
|
|
40
|
-
return;
|
|
41
|
+
const txData = (_a = tx.ethereumSpecific) === null || _a === void 0 ? void 0 : _a.data;
|
|
41
42
|
if (!utils_1.txInteractsWithContract(tx, constants_1.UNI_V2_ROUTER_CONTRACT))
|
|
42
43
|
return;
|
|
43
|
-
if (!
|
|
44
|
+
if (!txData)
|
|
45
|
+
return;
|
|
46
|
+
if (tx.confirmations)
|
|
47
|
+
return;
|
|
48
|
+
const txSigHash = utils_1.getSigHash(txData);
|
|
49
|
+
if (!Object.values(this.supportedFunctions).some((hash) => hash === txSigHash))
|
|
50
|
+
return;
|
|
51
|
+
const decoded = this.abiInterface.parseTransaction({ data: txData });
|
|
52
|
+
// failed to decode input data
|
|
53
|
+
if (!decoded)
|
|
54
|
+
return;
|
|
55
|
+
const sendAddress = (_c = (_b = tx.vin[0].addresses) === null || _b === void 0 ? void 0 : _b[0]) !== null && _c !== void 0 ? _c : '';
|
|
56
|
+
const tokenAddress = ethers_1.ethers.utils.getAddress(decoded.args.token.toLowerCase());
|
|
57
|
+
const lpTokenAddress = Parser.pairFor(tokenAddress, this.wethContract);
|
|
58
|
+
const transfers = yield (() => __awaiter(this, void 0, void 0, function* () {
|
|
59
|
+
switch (utils_1.getSigHash(txData)) {
|
|
60
|
+
case this.supportedFunctions.addLiquidityEthSigHash: {
|
|
61
|
+
const contract = new ethers_1.ethers.Contract(tokenAddress, erc20_1.default, this.provider);
|
|
62
|
+
const decimals = yield contract.decimals();
|
|
63
|
+
const name = yield contract.name();
|
|
64
|
+
const symbol = yield contract.symbol();
|
|
65
|
+
const value = decoded.args.amountTokenDesired.toString();
|
|
66
|
+
const assetId = caip_1.caip19.toCAIP19({
|
|
67
|
+
chain: types_1.ChainTypes.Ethereum,
|
|
68
|
+
network: utils_1.toNetworkType(this.network),
|
|
69
|
+
assetNamespace: caip_1.AssetNamespace.ERC20,
|
|
70
|
+
assetReference: tokenAddress,
|
|
71
|
+
});
|
|
72
|
+
return [
|
|
73
|
+
{
|
|
74
|
+
type: types_2.TransferType.Send,
|
|
75
|
+
from: sendAddress,
|
|
76
|
+
to: lpTokenAddress,
|
|
77
|
+
caip19: assetId,
|
|
78
|
+
assetId: assetId,
|
|
79
|
+
totalValue: value,
|
|
80
|
+
components: [{ value }],
|
|
81
|
+
token: { contract: tokenAddress, decimals, name, symbol },
|
|
82
|
+
},
|
|
83
|
+
];
|
|
84
|
+
}
|
|
85
|
+
case this.supportedFunctions.removeLiquidityEthSigHash: {
|
|
86
|
+
const contract = new ethers_1.ethers.Contract(lpTokenAddress, erc20_1.default, this.provider);
|
|
87
|
+
const decimals = yield contract.decimals();
|
|
88
|
+
const name = yield contract.name();
|
|
89
|
+
const symbol = yield contract.symbol();
|
|
90
|
+
const value = decoded.args.liquidity.toString();
|
|
91
|
+
const assetId = caip_1.caip19.toCAIP19({
|
|
92
|
+
chain: types_1.ChainTypes.Ethereum,
|
|
93
|
+
network: utils_1.toNetworkType(this.network),
|
|
94
|
+
assetNamespace: caip_1.AssetNamespace.ERC20,
|
|
95
|
+
assetReference: lpTokenAddress,
|
|
96
|
+
});
|
|
97
|
+
return [
|
|
98
|
+
{
|
|
99
|
+
type: types_2.TransferType.Send,
|
|
100
|
+
from: sendAddress,
|
|
101
|
+
to: lpTokenAddress,
|
|
102
|
+
caip19: assetId,
|
|
103
|
+
assetId: assetId,
|
|
104
|
+
totalValue: value,
|
|
105
|
+
components: [{ value }],
|
|
106
|
+
token: { contract: lpTokenAddress, decimals, name, symbol },
|
|
107
|
+
},
|
|
108
|
+
];
|
|
109
|
+
}
|
|
110
|
+
default:
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
}))();
|
|
114
|
+
// no supported function detected
|
|
115
|
+
if (!transfers)
|
|
44
116
|
return;
|
|
45
|
-
const transfers = yield this.getTransfers(tx);
|
|
46
|
-
const decoded = this.abiInterface.parseTransaction({ data: tx.ethereumSpecific.data });
|
|
47
117
|
return {
|
|
48
118
|
transfers,
|
|
49
119
|
data: {
|
|
@@ -60,71 +130,6 @@ class Parser {
|
|
|
60
130
|
const initCodeHash = '0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f'; // https://github.com/Uniswap/v2-periphery/blob/dda62473e2da448bc9cb8f4514dadda4aeede5f4/contracts/libraries/UniswapV2Library.sol#L24
|
|
61
131
|
return ethers_1.ethers.utils.getCreate2Address(factoryContract, salt, initCodeHash);
|
|
62
132
|
}
|
|
63
|
-
getTransfers(tx) {
|
|
64
|
-
var _a, _b, _c;
|
|
65
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
66
|
-
const data = (_a = tx.ethereumSpecific) === null || _a === void 0 ? void 0 : _a.data;
|
|
67
|
-
if (!data)
|
|
68
|
-
return;
|
|
69
|
-
const sendAddress = (_c = (_b = tx.vin[0].addresses) === null || _b === void 0 ? void 0 : _b[0]) !== null && _c !== void 0 ? _c : '';
|
|
70
|
-
switch (utils_1.getSigHash(data)) {
|
|
71
|
-
case this.addLiquidityEthSigHash: {
|
|
72
|
-
const result = this.abiInterface.decodeFunctionData(this.addLiquidityEthSigHash, data);
|
|
73
|
-
const tokenAddress = ethers_1.ethers.utils.getAddress(result.token.toLowerCase());
|
|
74
|
-
const lpTokenAddress = Parser.pairFor(tokenAddress, this.wethContract);
|
|
75
|
-
const contract = new ethers_1.ethers.Contract(tokenAddress, erc20_1.default, this.provider);
|
|
76
|
-
const decimals = yield contract.decimals();
|
|
77
|
-
const name = yield contract.name();
|
|
78
|
-
const symbol = yield contract.symbol();
|
|
79
|
-
const value = result.amountTokenDesired.toString();
|
|
80
|
-
return [
|
|
81
|
-
{
|
|
82
|
-
type: types_2.TransferType.Send,
|
|
83
|
-
from: sendAddress,
|
|
84
|
-
to: lpTokenAddress,
|
|
85
|
-
caip19: caip_1.caip19.toCAIP19({
|
|
86
|
-
chain: types_1.ChainTypes.Ethereum,
|
|
87
|
-
network: utils_1.toNetworkType(this.network),
|
|
88
|
-
assetNamespace: caip_1.AssetNamespace.ERC20,
|
|
89
|
-
assetReference: tokenAddress,
|
|
90
|
-
}),
|
|
91
|
-
totalValue: value,
|
|
92
|
-
components: [{ value }],
|
|
93
|
-
token: { contract: tokenAddress, decimals, name, symbol },
|
|
94
|
-
},
|
|
95
|
-
];
|
|
96
|
-
}
|
|
97
|
-
case this.removeLiquidityEthSigHash: {
|
|
98
|
-
const result = this.abiInterface.decodeFunctionData(this.removeLiquidityEthSigHash, data);
|
|
99
|
-
const tokenAddress = ethers_1.ethers.utils.getAddress(result.token.toLowerCase());
|
|
100
|
-
const lpTokenAddress = Parser.pairFor(tokenAddress, this.wethContract);
|
|
101
|
-
const contract = new ethers_1.ethers.Contract(lpTokenAddress, erc20_1.default, this.provider);
|
|
102
|
-
const decimals = yield contract.decimals();
|
|
103
|
-
const name = yield contract.name();
|
|
104
|
-
const symbol = yield contract.symbol();
|
|
105
|
-
const value = result.liquidity.toString();
|
|
106
|
-
return [
|
|
107
|
-
{
|
|
108
|
-
type: types_2.TransferType.Send,
|
|
109
|
-
from: sendAddress,
|
|
110
|
-
to: lpTokenAddress,
|
|
111
|
-
caip19: caip_1.caip19.toCAIP19({
|
|
112
|
-
chain: types_1.ChainTypes.Ethereum,
|
|
113
|
-
network: utils_1.toNetworkType(this.network),
|
|
114
|
-
assetNamespace: caip_1.AssetNamespace.ERC20,
|
|
115
|
-
assetReference: lpTokenAddress,
|
|
116
|
-
}),
|
|
117
|
-
totalValue: value,
|
|
118
|
-
components: [{ value }],
|
|
119
|
-
token: { contract: lpTokenAddress, decimals, name, symbol },
|
|
120
|
-
},
|
|
121
|
-
];
|
|
122
|
-
}
|
|
123
|
-
default:
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
133
|
}
|
|
129
134
|
exports.Parser = Parser;
|
|
130
135
|
//# sourceMappingURL=uniV2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uniV2.js","sourceRoot":"","sources":["../../../src/ethereum/parser/uniV2.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,8CAA4D;AAC5D,gDAAiD;AAEjD,mCAA+B;AAC/B,
|
|
1
|
+
{"version":3,"file":"uniV2.js","sourceRoot":"","sources":["../../../src/ethereum/parser/uniV2.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,12 +6,14 @@ export interface ParserArgs {
|
|
|
6
6
|
provider: ethers.providers.JsonRpcProvider;
|
|
7
7
|
}
|
|
8
8
|
export declare class Parser implements SubParser {
|
|
9
|
-
abiInterface: ethers.utils.Interface;
|
|
10
|
-
network: Network;
|
|
11
9
|
provider: ethers.providers.JsonRpcProvider;
|
|
12
|
-
readonly
|
|
13
|
-
readonly withdrawalSigHash: string;
|
|
10
|
+
readonly network: Network;
|
|
14
11
|
readonly wethContract: string;
|
|
12
|
+
readonly abiInterface: ethers.utils.Interface;
|
|
13
|
+
readonly supportedFunctions: {
|
|
14
|
+
depositSigHash: string;
|
|
15
|
+
withdrawalSigHash: string;
|
|
16
|
+
};
|
|
15
17
|
constructor(args: ParserArgs);
|
|
16
18
|
parse(tx: BlockbookTx): Promise<TxSpecific | undefined>;
|
|
17
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"weth.d.ts","sourceRoot":"","sources":["../../../src/ethereum/parser/weth.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAMzD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,eAAe,CAAA;CAC3C;AAED,qBAAa,MAAO,YAAW,SAAS;IACtC,
|
|
1
|
+
{"version":3,"file":"weth.d.ts","sourceRoot":"","sources":["../../../src/ethereum/parser/weth.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAMzD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,eAAe,CAAA;CAC3C;AAED,qBAAa,MAAO,YAAW,SAAS;IACtC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,eAAe,CAAA;IAE1C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,YAAY,yBAAuC;IAE5D,QAAQ,CAAC,kBAAkB;;;MAG1B;gBAEW,IAAI,EAAE,UAAU;IAUtB,KAAK,CAAC,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;CA6E9D"}
|
|
@@ -17,106 +17,95 @@ const caip_1 = require("@shapeshiftoss/caip");
|
|
|
17
17
|
const types_1 = require("@shapeshiftoss/types");
|
|
18
18
|
const ethers_1 = require("ethers");
|
|
19
19
|
const types_2 = require("../../types");
|
|
20
|
+
const erc20_1 = __importDefault(require("./abi/erc20"));
|
|
20
21
|
const weth_1 = __importDefault(require("./abi/weth"));
|
|
21
22
|
const utils_1 = require("./utils");
|
|
22
23
|
const constants_1 = require("./constants");
|
|
23
|
-
const erc20_1 = __importDefault(require("./abi/erc20"));
|
|
24
24
|
class Parser {
|
|
25
25
|
constructor(args) {
|
|
26
26
|
this.abiInterface = new ethers_1.ethers.utils.Interface(weth_1.default);
|
|
27
|
+
this.supportedFunctions = {
|
|
28
|
+
depositSigHash: this.abiInterface.getSighash('deposit'),
|
|
29
|
+
withdrawalSigHash: this.abiInterface.getSighash('withdraw'),
|
|
30
|
+
};
|
|
27
31
|
this.network = args.network;
|
|
28
32
|
this.provider = args.provider;
|
|
29
|
-
this.depositSigHash = this.abiInterface.getSighash('deposit');
|
|
30
|
-
this.withdrawalSigHash = this.abiInterface.getSighash('withdraw');
|
|
31
33
|
this.wethContract = {
|
|
32
34
|
mainnet: constants_1.WETH_CONTRACT_MAINNET,
|
|
33
35
|
ropsten: constants_1.WETH_CONTRACT_ROPSTEN,
|
|
34
36
|
}[this.network];
|
|
35
37
|
}
|
|
36
38
|
parse(tx) {
|
|
37
|
-
var _a, _b, _c
|
|
39
|
+
var _a, _b, _c;
|
|
38
40
|
return __awaiter(this, void 0, void 0, function* () {
|
|
39
41
|
const txData = (_a = tx.ethereumSpecific) === null || _a === void 0 ? void 0 : _a.data;
|
|
40
42
|
if (!utils_1.txInteractsWithContract(tx, this.wethContract))
|
|
41
43
|
return;
|
|
42
44
|
if (!txData)
|
|
43
45
|
return;
|
|
46
|
+
const txSigHash = utils_1.getSigHash(txData);
|
|
47
|
+
if (!Object.values(this.supportedFunctions).some((hash) => hash === txSigHash))
|
|
48
|
+
return;
|
|
44
49
|
const decoded = this.abiInterface.parseTransaction({ data: txData });
|
|
45
|
-
|
|
50
|
+
// failed to decode input data
|
|
51
|
+
if (!decoded)
|
|
52
|
+
return;
|
|
46
53
|
const sendAddress = (_c = (_b = tx.vin[0].addresses) === null || _b === void 0 ? void 0 : _b[0]) !== null && _c !== void 0 ? _c : '';
|
|
47
|
-
const
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
54
|
+
const contract = new ethers_1.ethers.Contract(this.wethContract, erc20_1.default, this.provider);
|
|
55
|
+
const assetId = caip_1.caip19.toCAIP19({
|
|
56
|
+
chain: types_1.ChainTypes.Ethereum,
|
|
57
|
+
network: utils_1.toNetworkType(this.network),
|
|
58
|
+
assetNamespace: caip_1.AssetNamespace.ERC20,
|
|
59
|
+
assetReference: this.wethContract,
|
|
60
|
+
});
|
|
61
|
+
const token = {
|
|
62
|
+
contract: this.wethContract,
|
|
63
|
+
decimals: yield contract.decimals(),
|
|
64
|
+
name: yield contract.name(),
|
|
65
|
+
symbol: yield contract.symbol(),
|
|
66
|
+
};
|
|
51
67
|
const transfers = (() => {
|
|
52
|
-
switch (
|
|
53
|
-
case this.depositSigHash: {
|
|
54
|
-
if (receiveAddress !== this.wethContract)
|
|
55
|
-
return undefined;
|
|
56
|
-
const value = tx.value;
|
|
68
|
+
switch (txSigHash) {
|
|
69
|
+
case this.supportedFunctions.depositSigHash: {
|
|
57
70
|
return [
|
|
58
71
|
{
|
|
59
72
|
type: types_2.TransferType.Receive,
|
|
60
73
|
from: this.wethContract,
|
|
61
74
|
to: sendAddress,
|
|
62
|
-
caip19:
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}),
|
|
68
|
-
totalValue: value,
|
|
69
|
-
components: [{ value }],
|
|
70
|
-
token: {
|
|
71
|
-
contract: this.wethContract,
|
|
72
|
-
decimals,
|
|
73
|
-
name,
|
|
74
|
-
symbol,
|
|
75
|
-
},
|
|
75
|
+
caip19: assetId,
|
|
76
|
+
assetId: assetId,
|
|
77
|
+
totalValue: tx.value,
|
|
78
|
+
components: [{ value: tx.value }],
|
|
79
|
+
token: token,
|
|
76
80
|
},
|
|
77
81
|
];
|
|
78
82
|
}
|
|
79
|
-
case this.withdrawalSigHash:
|
|
80
|
-
if (receiveAddress !== this.wethContract)
|
|
81
|
-
return undefined;
|
|
82
|
-
const result = this.abiInterface.decodeFunctionData(this.withdrawalSigHash, txData);
|
|
83
|
-
const value = result.wad.toString();
|
|
83
|
+
case this.supportedFunctions.withdrawalSigHash:
|
|
84
84
|
return [
|
|
85
85
|
{
|
|
86
86
|
type: types_2.TransferType.Send,
|
|
87
87
|
from: sendAddress,
|
|
88
88
|
to: this.wethContract,
|
|
89
|
-
caip19:
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}),
|
|
95
|
-
totalValue: value,
|
|
96
|
-
components: [{ value }],
|
|
97
|
-
token: {
|
|
98
|
-
contract: this.wethContract,
|
|
99
|
-
decimals,
|
|
100
|
-
name,
|
|
101
|
-
symbol,
|
|
102
|
-
},
|
|
89
|
+
caip19: assetId,
|
|
90
|
+
assetId: assetId,
|
|
91
|
+
totalValue: decoded.args.wad.toString(),
|
|
92
|
+
components: [{ value: decoded.args.wad.toString() }],
|
|
93
|
+
token: token,
|
|
103
94
|
},
|
|
104
95
|
];
|
|
105
|
-
}
|
|
106
96
|
default:
|
|
107
|
-
return
|
|
97
|
+
return;
|
|
108
98
|
}
|
|
109
99
|
})();
|
|
110
|
-
//
|
|
100
|
+
// no supported function detected
|
|
111
101
|
if (!transfers)
|
|
112
102
|
return;
|
|
113
|
-
const data = {
|
|
114
|
-
parser: types_2.TxParser.WETH,
|
|
115
|
-
method: decoded.name,
|
|
116
|
-
};
|
|
117
103
|
return {
|
|
118
104
|
transfers,
|
|
119
|
-
data
|
|
105
|
+
data: {
|
|
106
|
+
parser: types_2.TxParser.WETH,
|
|
107
|
+
method: decoded.name,
|
|
108
|
+
},
|
|
120
109
|
};
|
|
121
110
|
});
|
|
122
111
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"weth.js","sourceRoot":"","sources":["../../../src/ethereum/parser/weth.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,8CAA4D;AAC5D,gDAAiD;AAEjD,mCAA+B;AAC/B,uCAAoD;AAEpD,sDAAiC;AACjC,mCAA4E;AAC5E,2CAA0E;
|
|
1
|
+
{"version":3,"file":"weth.js","sourceRoot":"","sources":["../../../src/ethereum/parser/weth.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,17 +10,17 @@ export declare class Parser implements SubParser {
|
|
|
10
10
|
provider: ethers.providers.JsonRpcProvider;
|
|
11
11
|
yearnSdk: Yearn<ChainId> | undefined;
|
|
12
12
|
yearnTokenVaultAddresses: string[] | undefined;
|
|
13
|
-
shapeShiftInterface: ethers.utils.Interface;
|
|
14
|
-
yearnInterface: ethers.utils.Interface;
|
|
15
|
-
supportedYearnFunctions: {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
readonly shapeShiftInterface: ethers.utils.Interface;
|
|
14
|
+
readonly yearnInterface: ethers.utils.Interface;
|
|
15
|
+
readonly supportedYearnFunctions: {
|
|
16
|
+
approveSigHash: string;
|
|
17
|
+
depositSigHash: string;
|
|
18
|
+
depositAmountSigHash: string;
|
|
19
|
+
depositAmountAndRecipientSigHash: string;
|
|
20
|
+
withdrawSigHash: string;
|
|
21
21
|
};
|
|
22
|
-
supportedShapeShiftFunctions: {
|
|
23
|
-
|
|
22
|
+
readonly supportedShapeShiftFunctions: {
|
|
23
|
+
depositSigHash: string;
|
|
24
24
|
};
|
|
25
25
|
constructor(args: ParserArgs);
|
|
26
26
|
parse(tx: BlockbookTx): Promise<TxSpecific | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yearn.d.ts","sourceRoot":"","sources":["../../../src/ethereum/parser/yearn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,EAAE,EAAE,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAOzD,UAAU,UAAU;IAClB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,eAAe,CAAA;CAC3C;AAED,qBAAa,MAAO,YAAW,SAAS;IACtC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,eAAe,CAAA;IAC1C,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"yearn.d.ts","sourceRoot":"","sources":["../../../src/ethereum/parser/yearn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,EAAE,EAAE,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAOzD,UAAU,UAAU;IAClB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,eAAe,CAAA;CAC3C;AAED,qBAAa,MAAO,YAAW,SAAS;IACtC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,eAAe,CAAA;IAC1C,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,SAAS,CAAA;IACpC,wBAAwB,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IAE9C,QAAQ,CAAC,mBAAmB,yBAA+C;IAC3E,QAAQ,CAAC,cAAc,yBAAyC;IAEhE,QAAQ,CAAC,uBAAuB;;;;;;MAM/B;IAED,QAAQ,CAAC,4BAA4B;;MAEpC;gBAEW,IAAI,EAAE,UAAU;IAUtB,KAAK,CAAC,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IA+C7D,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS;CAMnF"}
|
|
@@ -25,18 +25,18 @@ class Parser {
|
|
|
25
25
|
this.shapeShiftInterface = new ethers_1.ethers.utils.Interface(shapeShiftRouter_1.default);
|
|
26
26
|
this.yearnInterface = new ethers_1.ethers.utils.Interface(yearnVault_1.default);
|
|
27
27
|
this.supportedYearnFunctions = {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
approveSigHash: this.yearnInterface.getSighash('approve'),
|
|
29
|
+
depositSigHash: this.yearnInterface.getSighash('deposit()'),
|
|
30
|
+
depositAmountSigHash: this.yearnInterface.getSighash('deposit(uint256)'),
|
|
31
|
+
depositAmountAndRecipientSigHash: this.yearnInterface.getSighash('deposit(uint256,address)'),
|
|
32
|
+
withdrawSigHash: this.yearnInterface.getSighash('withdraw(uint256,address)'),
|
|
33
33
|
};
|
|
34
34
|
this.supportedShapeShiftFunctions = {
|
|
35
|
-
|
|
35
|
+
depositSigHash: this.shapeShiftInterface.getSighash('deposit(address,address,uint256,uint256)'),
|
|
36
36
|
};
|
|
37
37
|
this.provider = args.provider;
|
|
38
38
|
// The only Yearn-supported chain we currently support is mainnet
|
|
39
|
-
if (args.network
|
|
39
|
+
if (args.network === 'mainnet') {
|
|
40
40
|
// 1 for EthMain (@yfi/sdk/dist/chain.d.ts)
|
|
41
41
|
this.yearnSdk = new sdk_1.Yearn(1, { provider: this.provider, disableAllowlist: true });
|
|
42
42
|
}
|
|
@@ -44,34 +44,35 @@ class Parser {
|
|
|
44
44
|
parse(tx) {
|
|
45
45
|
var _a, _b, _c, _d, _e;
|
|
46
46
|
return __awaiter(this, void 0, void 0, function* () {
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
const data = (_a = tx.ethereumSpecific) === null || _a === void 0 ? void 0 : _a.data;
|
|
50
|
-
if (!data)
|
|
47
|
+
const txData = (_a = tx.ethereumSpecific) === null || _a === void 0 ? void 0 : _a.data;
|
|
48
|
+
if (!txData)
|
|
51
49
|
return;
|
|
52
|
-
const txSigHash = utils_1.getSigHash(
|
|
50
|
+
const txSigHash = utils_1.getSigHash(txData);
|
|
53
51
|
const abiInterface = this.getAbiInterface(txSigHash);
|
|
54
52
|
if (!abiInterface)
|
|
55
53
|
return;
|
|
56
|
-
const decoded = abiInterface.parseTransaction({ data });
|
|
57
|
-
const receiveAddress = (_c = (_b = tx.vout) === null || _b === void 0 ? void 0 : _b[0].addresses) === null || _c === void 0 ? void 0 : _c[0];
|
|
58
54
|
if (!this.yearnTokenVaultAddresses) {
|
|
59
|
-
const vaults = yield ((
|
|
55
|
+
const vaults = yield ((_b = this.yearnSdk) === null || _b === void 0 ? void 0 : _b.vaults.get());
|
|
60
56
|
this.yearnTokenVaultAddresses = vaults === null || vaults === void 0 ? void 0 : vaults.map((vault) => vault.address);
|
|
61
57
|
}
|
|
58
|
+
const decoded = abiInterface.parseTransaction({ data: txData });
|
|
59
|
+
// failed to decode input data
|
|
60
|
+
if (!decoded)
|
|
61
|
+
return;
|
|
62
|
+
const receiveAddress = (_d = (_c = tx.vout) === null || _c === void 0 ? void 0 : _c[0].addresses) === null || _d === void 0 ? void 0 : _d[0];
|
|
62
63
|
switch (txSigHash) {
|
|
63
|
-
case
|
|
64
|
+
case this.supportedYearnFunctions.approveSigHash:
|
|
64
65
|
if ((decoded === null || decoded === void 0 ? void 0 : decoded.args._spender) !== constants_1.SHAPE_SHIFT_ROUTER_CONTRACT)
|
|
65
66
|
return;
|
|
66
67
|
break;
|
|
67
|
-
case
|
|
68
|
+
case this.supportedShapeShiftFunctions.depositSigHash:
|
|
68
69
|
if (receiveAddress !== constants_1.SHAPE_SHIFT_ROUTER_CONTRACT)
|
|
69
70
|
return;
|
|
70
71
|
break;
|
|
71
|
-
case
|
|
72
|
-
case
|
|
73
|
-
case
|
|
74
|
-
case
|
|
72
|
+
case this.supportedYearnFunctions.withdrawSigHash:
|
|
73
|
+
case this.supportedYearnFunctions.depositSigHash:
|
|
74
|
+
case this.supportedYearnFunctions.depositAmountSigHash:
|
|
75
|
+
case this.supportedYearnFunctions.depositAmountAndRecipientSigHash:
|
|
75
76
|
if (receiveAddress && !((_e = this.yearnTokenVaultAddresses) === null || _e === void 0 ? void 0 : _e.includes(receiveAddress)))
|
|
76
77
|
return;
|
|
77
78
|
break;
|
|
@@ -80,7 +81,7 @@ class Parser {
|
|
|
80
81
|
}
|
|
81
82
|
return {
|
|
82
83
|
data: {
|
|
83
|
-
method: decoded
|
|
84
|
+
method: decoded.name,
|
|
84
85
|
parser: types_1.TxParser.Yearn,
|
|
85
86
|
},
|
|
86
87
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yearn.js","sourceRoot":"","sources":["../../../src/ethereum/parser/yearn.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kCAAyC;AAEzC,mCAA+B;AAE/B,2CAAyD;AACzD,mCAAoC;AACpC,8EAAqD;AACrD,kEAAyC;AACzC,uCAAsC;AAOtC,MAAa,MAAM;IAoBjB,YAAY,IAAgB;
|
|
1
|
+
{"version":3,"file":"yearn.js","sourceRoot":"","sources":["../../../src/ethereum/parser/yearn.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @shapeshiftoss/bitcoin-api
|
|
3
3
|
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
4
4
|
*
|
|
5
|
-
* The version of the OpenAPI document: 6.
|
|
5
|
+
* The version of the OpenAPI document: 6.11.0
|
|
6
6
|
*
|
|
7
7
|
*
|
|
8
8
|
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @shapeshiftoss/bitcoin-api
|
|
6
6
|
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
7
7
|
*
|
|
8
|
-
* The version of the OpenAPI document: 6.
|
|
8
|
+
* The version of the OpenAPI document: 6.11.0
|
|
9
9
|
*
|
|
10
10
|
*
|
|
11
11
|
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @shapeshiftoss/bitcoin-api
|
|
3
3
|
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
4
4
|
*
|
|
5
|
-
* The version of the OpenAPI document: 6.
|
|
5
|
+
* The version of the OpenAPI document: 6.11.0
|
|
6
6
|
*
|
|
7
7
|
*
|
|
8
8
|
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @shapeshiftoss/bitcoin-api
|
|
6
6
|
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
7
7
|
*
|
|
8
|
-
* The version of the OpenAPI document: 6.
|
|
8
|
+
* The version of the OpenAPI document: 6.11.0
|
|
9
9
|
*
|
|
10
10
|
*
|
|
11
11
|
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @shapeshiftoss/bitcoin-api
|
|
3
3
|
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
4
4
|
*
|
|
5
|
-
* The version of the OpenAPI document: 6.
|
|
5
|
+
* The version of the OpenAPI document: 6.11.0
|
|
6
6
|
*
|
|
7
7
|
*
|
|
8
8
|
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @shapeshiftoss/bitcoin-api
|
|
6
6
|
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
7
7
|
*
|
|
8
|
-
* The version of the OpenAPI document: 6.
|
|
8
|
+
* The version of the OpenAPI document: 6.11.0
|
|
9
9
|
*
|
|
10
10
|
*
|
|
11
11
|
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @shapeshiftoss/bitcoin-api
|
|
3
3
|
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
4
4
|
*
|
|
5
|
-
* The version of the OpenAPI document: 6.
|
|
5
|
+
* The version of the OpenAPI document: 6.11.0
|
|
6
6
|
*
|
|
7
7
|
*
|
|
8
8
|
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|