-
- This default configuration currently only supports the Sepolia
- Testnet.
- If you wish to use a different network, please create a
- Tenderly project on your own.
-
+
+
+
+
+
Go to 4337 Explorer
+
+
+
Go to 4337 Debugger
+
-
AA Debugger
-
-
-
-
1. Fill Up the Tenderly Config
-
-
- TENDERLY_ACCESS_KEY:
- setTENDERLY_ACCESS_KEY(e.target.value)}
- required
- />
-
-
-
-
- Project Owner:
- setProjectOwner(e.target.value)}
- required
- />
-
-
-
-
- Project Name:
- setProjectName(e.target.value)}
- required
- />
-
-
-
-
- Rich Bundler EOA:
- setRichBundlerEOA(e.target.value as Address)}
- required
- />
-
-
-
-
- Chain ID:
- setNetwork(e.target.value)}
- required
- />
-
-
-
-
-
- Block Number:
- setBlockNumber(e.target.value)}
- required
- />
-
-
-
-
2. Give your userOp
-
Simulate Usage
-
-
- Simulate Type (where you meet the problem?):{" "}
- setSimulateType(e.target.value as SimulateType)}
- >
- {Object.values(SimulateType).map((type) => (
-
- {type}
-
- ))}
-
-
-
-
UserOp Input
-
-
-
-
- {parseError &&
{parseError}
}
- {parsedInput && (
-
-
Parsed Input Data:
-
{parsedInput.serialized}
-
- )}
-
-
-
3. Simulate Time!
-
- {loading ? "Simulating..." : "Run Simulation"}
-
- {result !== "" && (
-
-
Simulation Result:
-
- Go to Dashboard! (required login Tenderly)
-
-
- )}
);
};
diff --git a/styles.css b/styles.css
index fb5968b..bcb406d 100644
--- a/styles.css
+++ b/styles.css
@@ -11,7 +11,9 @@ body {
h1,
h2,
-h3 {
+h3,
+h4,
+h5 {
color: #d32f2f;
/* Traditional Japanese red */
}
@@ -118,4 +120,98 @@ footer {
.simulation-result button:hover {
background-color: #b71c1c;
+}
+
+.link-container {
+ text-align: left;
+ margin-top: 20px;
+}
+
+.link {
+ display: inline-block;
+ margin: 10px;
+ padding: 10px 20px;
+ text-decoration: none;
+ color: #fff;
+ background-color: #d32f2f;
+ border-radius: 5px;
+ transition: background-color 0.3s;
+}
+
+.link:hover {
+ background-color: #b71c1c;
+}
+
+.explorer-container {
+ max-width: 800px;
+ margin: 0 auto;
+ padding: 20px;
+ background-color: #fff;
+ border-radius: 8px;
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
+}
+
+.input-section {
+ margin-bottom: 20px;
+}
+
+.data-section {
+ margin-top: 20px;
+ padding: 10px;
+ background-color: #f9f9f9;
+ border-radius: 8px;
+}
+
+.label {
+ font-weight: bold;
+ color: #555;
+}
+
+.log-entry {
+ margin-bottom: 15px;
+ padding: 10px;
+ background-color: #f1f1f1;
+ border-radius: 8px;
+}
+
+.data-box {
+ background-color: #fff;
+ padding: 10px;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+ overflow-x: auto;
+}
+
+pre {
+ background-color: #f1f1f1;
+ padding: 10px;
+ border-radius: 8px;
+ overflow-x: auto;
+}
+
+a {
+ color: #d32f2f;
+ text-decoration: none;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+button {
+ background-color: #d32f2f;
+ color: #fff;
+ padding: 10px 20px;
+ border: none;
+ border-radius: 4px;
+ cursor: pointer;
+ transition: background-color 0.3s ease;
+}
+
+button:disabled {
+ background-color: #ccc;
+}
+
+button:hover:enabled {
+ background-color: #b71c1c;
}
\ No newline at end of file
diff --git a/types/receipt.ts b/types/receipt.ts
new file mode 100644
index 0000000..4b85fef
--- /dev/null
+++ b/types/receipt.ts
@@ -0,0 +1,44 @@
+import { Address } from "viem";
+
+export type Log = {
+ address: Address;
+ topics: string[];
+ data: string;
+ blockHash: string;
+ blockNumber: string;
+ transactionHash: string;
+ transactionIndex: string;
+ logIndex: string;
+ removed: boolean;
+};
+
+export type Receipt = {
+ type: string;
+ status: string;
+ cumulativeGasUsed: string;
+ logs?: Log[];
+ logsBloom: string;
+ transactionHash: string;
+ transactionIndex: string;
+ blockHash: string;
+ blockNumber: string;
+ gasUsed: string;
+ effectiveGasPrice: string;
+ from: Address;
+ to: Address;
+ contractAddress: Address | null;
+};
+
+export type UserOpReceipt = {
+ userOpHash: string;
+ entryPoint: Address;
+ sender: Address;
+ nonce: string;
+ paymaster: Address;
+ actualGasCost: string;
+ actualGasUsed: string;
+ success: boolean;
+ reason: string;
+ logs?: Log[];
+ receipt: Receipt;
+};
diff --git a/yarn.lock b/yarn.lock
index 124c067..9364c66 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -306,11 +306,12 @@
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
-"@consenlabs/imaccount-sdk@^0.1.8":
- version "0.1.8"
- resolved "https://npm.pkg.github.com/download/@consenlabs/imaccount-sdk/0.1.8/30c4f0b1137d5a2be55aec3f5ffe236798868eae#30c4f0b1137d5a2be55aec3f5ffe236798868eae"
- integrity sha512-s3hmst0exY9LgaSuPmf4aZebMhlylnypKDGt5n3U4Az05qISUX3ZTs407/pPOzbv2xpq2Ec8hqpLOkir40Hr5w==
+"@consenlabs/imaccount-sdk@^0.1.28":
+ version "0.1.28"
+ resolved "https://npm.pkg.github.com/download/@consenlabs/imaccount-sdk/0.1.28/e82fe79a2ffdc5eb6e88b6a5a626be1206394036#e82fe79a2ffdc5eb6e88b6a5a626be1206394036"
+ integrity sha512-jxvW5kBpnTDOPOlY6AL70vyIrEoFv1SpRvGglKHalhqH7DU9072J3r9GPOKM8jwSg8JiT5e3Lco+dZlf2/6kvQ==
dependencies:
+ "@simplewebauthn/server" "^10.0.1"
dotenv "^16.4.5"
ethers "^6.13.1"
isomorphic-fetch "^3.0.0"
@@ -329,6 +330,11 @@
dependencies:
"@jridgewell/trace-mapping" "0.3.9"
+"@hexagon/base64@^1.1.27":
+ version "1.1.28"
+ resolved "https://registry.yarnpkg.com/@hexagon/base64/-/base64-1.1.28.tgz#7d306a97f1423829be5b27c9d388fe50e3099d48"
+ integrity sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw==
+
"@istanbuljs/load-nyc-config@^1.0.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced"
@@ -577,6 +583,11 @@
"@jridgewell/resolve-uri" "^3.1.0"
"@jridgewell/sourcemap-codec" "^1.4.14"
+"@levischuck/tiny-cbor@^0.2.2":
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/@levischuck/tiny-cbor/-/tiny-cbor-0.2.2.tgz#84239ce80e1107b810f1fe9f66546d4f79f31aea"
+ integrity sha512-f5CnPw997Y2GQ8FAvtuVVC19FX8mwNNC+1XJcIi16n/LTJifKO6QBgGLgN3YEmqtGMk17SKSuoWES3imJVxAVw==
+
"@next/env@13.5.7":
version "13.5.7"
resolved "https://registry.yarnpkg.com/@next/env/-/env-13.5.7.tgz#5006f4460a7fa598a03e1c2aa4e59e45c71082d3"
@@ -670,6 +681,55 @@
resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.5.0.tgz#abadc5ca20332db2b1b2aa3e496e9af1213570b0"
integrity sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==
+"@peculiar/asn1-android@^2.3.10":
+ version "2.3.13"
+ resolved "https://registry.yarnpkg.com/@peculiar/asn1-android/-/asn1-android-2.3.13.tgz#7c5fe42b5f11b4266a40d676476cec9df4ff56f2"
+ integrity sha512-0VTNazDGKrLS6a3BwTDZanqq6DR/I3SbvmDMuS8Be+OYpvM6x1SRDh9AGDsHVnaCOIztOspCPc6N1m+iUv1Xxw==
+ dependencies:
+ "@peculiar/asn1-schema" "^2.3.13"
+ asn1js "^3.0.5"
+ tslib "^2.6.2"
+
+"@peculiar/asn1-ecc@^2.3.8":
+ version "2.3.14"
+ resolved "https://registry.yarnpkg.com/@peculiar/asn1-ecc/-/asn1-ecc-2.3.14.tgz#f5997cd2050fc1f5bbf018d757ef0ebc9a1e4800"
+ integrity sha512-zWPyI7QZto6rnLv6zPniTqbGaLh6zBpJyI46r1yS/bVHJXT2amdMHCRRnbV5yst2H8+ppXG6uXu/M6lKakiQ8w==
+ dependencies:
+ "@peculiar/asn1-schema" "^2.3.13"
+ "@peculiar/asn1-x509" "^2.3.13"
+ asn1js "^3.0.5"
+ tslib "^2.6.2"
+
+"@peculiar/asn1-rsa@^2.3.8":
+ version "2.3.13"
+ resolved "https://registry.yarnpkg.com/@peculiar/asn1-rsa/-/asn1-rsa-2.3.13.tgz#e9630a2a976bde5dfaca969906f684dffce13039"
+ integrity sha512-wBNQqCyRtmqvXkGkL4DR3WxZhHy8fDiYtOjTeCd7SFE5F6GBeafw3EJ94PX/V0OJJrjQ40SkRY2IZu3ZSyBqcg==
+ dependencies:
+ "@peculiar/asn1-schema" "^2.3.13"
+ "@peculiar/asn1-x509" "^2.3.13"
+ asn1js "^3.0.5"
+ tslib "^2.6.2"
+
+"@peculiar/asn1-schema@^2.3.13", "@peculiar/asn1-schema@^2.3.8":
+ version "2.3.13"
+ resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.3.13.tgz#ec8509cdcbc0da3abe73fd7e690556b57a61b8f4"
+ integrity sha512-3Xq3a01WkHRZL8X04Zsfg//mGaA21xlL4tlVn4v2xGT0JStiztATRkMwa5b+f/HXmY2smsiLXYK46Gwgzvfg3g==
+ dependencies:
+ asn1js "^3.0.5"
+ pvtsutils "^1.3.5"
+ tslib "^2.6.2"
+
+"@peculiar/asn1-x509@^2.3.13", "@peculiar/asn1-x509@^2.3.8":
+ version "2.3.13"
+ resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509/-/asn1-x509-2.3.13.tgz#3616fb879b61f1f161a61660ca92f6fe4107af7a"
+ integrity sha512-PfeLQl2skXmxX2/AFFCVaWU8U6FKW1Db43mgBhShCOFS1bVxqtvusq1hVjfuEcuSQGedrLdCSvTgabluwN/M9A==
+ dependencies:
+ "@peculiar/asn1-schema" "^2.3.13"
+ asn1js "^3.0.5"
+ ipaddr.js "^2.1.0"
+ pvtsutils "^1.3.5"
+ tslib "^2.6.2"
+
"@scure/base@~1.1.6", "@scure/base@~1.1.7", "@scure/base@~1.1.8":
version "1.1.9"
resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.9.tgz#e5e142fbbfe251091f9c5f1dd4c834ac04c3dbd1"
@@ -701,6 +761,26 @@
"@noble/hashes" "~1.5.0"
"@scure/base" "~1.1.8"
+"@simplewebauthn/server@^10.0.1":
+ version "10.0.1"
+ resolved "https://registry.yarnpkg.com/@simplewebauthn/server/-/server-10.0.1.tgz#b40362f80b2d13a541936a09e1be9829cb59e21d"
+ integrity sha512-djNWcRn+H+6zvihBFJSpG3fzb0NQS9c/Mw5dYOtZ9H+oDw8qn9Htqxt4cpqRvSOAfwqP7rOvE9rwqVaoGGc3hg==
+ dependencies:
+ "@hexagon/base64" "^1.1.27"
+ "@levischuck/tiny-cbor" "^0.2.2"
+ "@peculiar/asn1-android" "^2.3.10"
+ "@peculiar/asn1-ecc" "^2.3.8"
+ "@peculiar/asn1-rsa" "^2.3.8"
+ "@peculiar/asn1-schema" "^2.3.8"
+ "@peculiar/asn1-x509" "^2.3.8"
+ "@simplewebauthn/types" "^10.0.0"
+ cross-fetch "^4.0.0"
+
+"@simplewebauthn/types@^10.0.0":
+ version "10.0.0"
+ resolved "https://registry.yarnpkg.com/@simplewebauthn/types/-/types-10.0.0.tgz#a07259d42fbdff7a014473f78401d262b298ed8e"
+ integrity sha512-SFXke7xkgPRowY2E+8djKbdEznTVnD5R6GO7GPTthpHrokLvNKw8C3lFZypTxLI7KkCfGPfhtqB3d7OVGGa9jQ==
+
"@sinclair/typebox@^0.27.8":
version "0.27.8"
resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e"
@@ -926,6 +1006,15 @@ argparse@^1.0.7:
dependencies:
sprintf-js "~1.0.2"
+asn1js@^3.0.5:
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/asn1js/-/asn1js-3.0.5.tgz#5ea36820443dbefb51cc7f88a2ebb5b462114f38"
+ integrity sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==
+ dependencies:
+ pvtsutils "^1.3.2"
+ pvutils "^1.1.3"
+ tslib "^2.4.0"
+
async@^3.2.3:
version "3.2.6"
resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce"
@@ -1190,6 +1279,13 @@ create-require@^1.1.0:
resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
+cross-fetch@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-4.0.0.tgz#f037aef1580bb3a1a35164ea2a848ba81b445983"
+ integrity sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==
+ dependencies:
+ node-fetch "^2.6.12"
+
cross-spawn@^7.0.3:
version "7.0.3"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
@@ -1483,6 +1579,11 @@ inherits@2:
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+ipaddr.js@^2.1.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8"
+ integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==
+
is-arrayish@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
@@ -2124,7 +2225,7 @@ next@^13.0.0:
"@next/swc-win32-ia32-msvc" "13.5.7"
"@next/swc-win32-x64-msvc" "13.5.7"
-node-fetch@^2.6.1:
+node-fetch@^2.6.1, node-fetch@^2.6.12:
version "2.7.0"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d"
integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==
@@ -2281,6 +2382,18 @@ pure-rand@^6.0.0:
resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2"
integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==
+pvtsutils@^1.3.2, pvtsutils@^1.3.5:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.3.5.tgz#b8705b437b7b134cd7fd858f025a23456f1ce910"
+ integrity sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA==
+ dependencies:
+ tslib "^2.6.1"
+
+pvutils@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.1.3.tgz#f35fc1d27e7cd3dfbd39c0826d173e806a03f5a3"
+ integrity sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==
+
react-dom@^18.0.0:
version "18.3.1"
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4"
@@ -2558,6 +2671,11 @@ tslib@^2.4.0:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01"
integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==
+tslib@^2.6.1, tslib@^2.6.2:
+ version "2.8.1"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
+ integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
+
type-detect@4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"