@0xtorch/evm 0.0.83 → 0.0.84

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.
@@ -27,14 +27,30 @@ const decodeInputByAddressAbi = (input, abiText) => {
27
27
  return undefined;
28
28
  }
29
29
  const abi = parsedAbi.data;
30
- const { functionName, args } = (0, viem_1.decodeFunctionData)({ abi, data: input });
31
- const abiItem = (0, viem_1.getAbiItem)({
32
- abi,
33
- name: functionName,
34
- });
35
- if (abiItem.type !== 'function') {
36
- return undefined;
30
+ const inputSelector = input.slice(0, 10);
31
+ for (const abiItem of abi) {
32
+ if (abiItem.type !== 'function' ||
33
+ inputSelector !== (0, viem_1.toFunctionSelector)(abiItem)) {
34
+ continue;
35
+ }
36
+ const decoded = decodeInputByFunctionAbiItem(input, abiItem);
37
+ if (decoded !== undefined) {
38
+ return decoded;
39
+ }
37
40
  }
41
+ return undefined;
42
+ }
43
+ catch (error) {
44
+ console.debug(error);
45
+ return undefined;
46
+ }
47
+ };
48
+ const decodeInputByFunctionAbiItem = (input, abiItem) => {
49
+ try {
50
+ const { functionName, args } = (0, viem_1.decodeFunctionData)({
51
+ abi: [abiItem],
52
+ data: input,
53
+ });
38
54
  const functionArgs = createFunctionArgs(args, abiItem);
39
55
  return {
40
56
  args: functionArgs,
@@ -1 +1 @@
1
- {"version":3,"file":"decodeInput.js","sourceRoot":"","sources":["../../../../logic/analyzeTransaction/decodeTransaction/decodeInput.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decodeInput.js","sourceRoot":"","sources":["../../../../logic/analyzeTransaction/decodeTransaction/decodeInput.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { Abi, AbiFunction } from 'abitype/zod';
2
- import { decodeFunctionData, getAbiItem, } from 'viem';
2
+ import { decodeFunctionData, toFunctionSelector, } from 'viem';
3
3
  export const decodeInput = ({ input, addressAbi, functionAbis, }) => {
4
4
  // address ABI があれば、 address ABI を使用して decode
5
5
  if (addressAbi !== undefined) {
@@ -26,14 +26,30 @@ const decodeInputByAddressAbi = (input, abiText) => {
26
26
  return undefined;
27
27
  }
28
28
  const abi = parsedAbi.data;
29
- const { functionName, args } = decodeFunctionData({ abi, data: input });
30
- const abiItem = getAbiItem({
31
- abi,
32
- name: functionName,
33
- });
34
- if (abiItem.type !== 'function') {
35
- return undefined;
29
+ const inputSelector = input.slice(0, 10);
30
+ for (const abiItem of abi) {
31
+ if (abiItem.type !== 'function' ||
32
+ inputSelector !== toFunctionSelector(abiItem)) {
33
+ continue;
34
+ }
35
+ const decoded = decodeInputByFunctionAbiItem(input, abiItem);
36
+ if (decoded !== undefined) {
37
+ return decoded;
38
+ }
36
39
  }
40
+ return undefined;
41
+ }
42
+ catch (error) {
43
+ console.debug(error);
44
+ return undefined;
45
+ }
46
+ };
47
+ const decodeInputByFunctionAbiItem = (input, abiItem) => {
48
+ try {
49
+ const { functionName, args } = decodeFunctionData({
50
+ abi: [abiItem],
51
+ data: input,
52
+ });
37
53
  const functionArgs = createFunctionArgs(args, abiItem);
38
54
  return {
39
55
  args: functionArgs,
@@ -1 +1 @@
1
- {"version":3,"file":"decodeInput.js","sourceRoot":"","sources":["../../../../logic/analyzeTransaction/decodeTransaction/decodeInput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAEL,kBAAkB,EAClB,UAAU,GACX,MAAM,MAAM,CAAA;AAUb,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAC1B,KAAK,EACL,UAAU,EACV,YAAY,GACU,EAAmC,EAAE;IAC3D,6CAA6C;IAC7C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;QAC1D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,OAAO,CAAA;QAChB,CAAC;IACH,CAAC;IAED,yDAAyD;IACzD,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,wBAAwB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;QAC5D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,OAAO,CAAA;QAChB,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED,MAAM,uBAAuB,GAAG,CAC9B,KAAe,EACf,OAAe,EACkB,EAAE;IACnC,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;QACpD,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;YAC9B,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAA;QAC1B,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;QACvE,MAAM,OAAO,GAAG,UAAU,CAAC;YACzB,GAAG;YACH,IAAI,EAAE,YAAY;SACnB,CAAC,CAAA;QACF,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAChC,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACtD,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,YAAY;YAClB,SAAS,EAAE,eAAe,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;SACvE,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACpB,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC,CAAA;AAED,MAAM,wBAAwB,GAAG,CAC/B,KAAe,EACf,OAAe,EACkB,EAAE;IACnC,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;QAC5D,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;YAC9B,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAA;QAC9B,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC;YAChD,GAAG,EAAE,CAAC,OAAO,CAAC;YACd,IAAI,EAAE,KAAK;SACZ,CAAC,CAAA;QACF,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAChC,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACtD,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,YAAY;YAClB,SAAS,EAAE,eAAe,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;SACvE,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACpB,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,CACzB,IAAwB,EACxB,OAAwB,EACxB,EAAE,CACF,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1B,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI;IAChC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,EAAE;IACtC,KAAK;CACN,CAAC,CAAC,CAAA;AAEL,MAAM,eAAe,GAAG,CAAC,EACvB,IAAI,EACJ,IAAI,GACuC,EAAE,EAAE;IAC/C,OAAO,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;AAC9D,CAAC,CAAA"}
1
+ {"version":3,"file":"decodeInput.js","sourceRoot":"","sources":["../../../../logic/analyzeTransaction/decodeTransaction/decodeInput.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { Abi, AbiFunction } from 'abitype/zod'
2
2
  import {
3
3
  type AbiFunction as AbiFunctionType,
4
4
  decodeFunctionData,
5
- getAbiItem,
5
+ toFunctionSelector,
6
6
  } from 'viem'
7
7
  import type { LowerHex } from '../../../types'
8
8
  import type { TransactionFunction } from '../../../types/transactionDecoded'
@@ -49,14 +49,35 @@ const decodeInputByAddressAbi = (
49
49
  return undefined
50
50
  }
51
51
  const abi = parsedAbi.data
52
- const { functionName, args } = decodeFunctionData({ abi, data: input })
53
- const abiItem = getAbiItem({
54
- abi,
55
- name: functionName,
56
- })
57
- if (abiItem.type !== 'function') {
58
- return undefined
52
+ const inputSelector = input.slice(0, 10)
53
+ for (const abiItem of abi) {
54
+ if (
55
+ abiItem.type !== 'function' ||
56
+ inputSelector !== toFunctionSelector(abiItem)
57
+ ) {
58
+ continue
59
+ }
60
+ const decoded = decodeInputByFunctionAbiItem(input, abiItem)
61
+ if (decoded !== undefined) {
62
+ return decoded
63
+ }
59
64
  }
65
+ return undefined
66
+ } catch (error) {
67
+ console.debug(error)
68
+ return undefined
69
+ }
70
+ }
71
+
72
+ const decodeInputByFunctionAbiItem = (
73
+ input: LowerHex,
74
+ abiItem: AbiFunctionType,
75
+ ): TransactionFunction | undefined => {
76
+ try {
77
+ const { functionName, args } = decodeFunctionData({
78
+ abi: [abiItem],
79
+ data: input,
80
+ })
60
81
  const functionArgs = createFunctionArgs(args, abiItem)
61
82
  return {
62
83
  args: functionArgs,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@0xtorch/evm",
3
- "version": "0.0.83",
3
+ "version": "0.0.84",
4
4
  "description": "Cryptorch EVM extension",
5
5
  "keywords": [
6
6
  "cryptorch",