Guide
In order to simulate bundles, first you need an API key, sign up on the Merkle Blockchain Services and grab an API key from the Keys page.
Simulate a bundle of calls
POST
https://api.merkle.io/v1/simulate
Request Body
Name | Type | Description |
---|---|---|
chainId* | Int | Must be either 1 (Ethereum mainnet), 56 (BNB) or 137 (Polygon |
block_number | Int | The block number to simulate on. (Optional, latest block by default). |
calls | Object | See below. |
overrides | Object | See blow. |
Request examples:
Re-simulate a swap without the wrapping sandwich to understand the impact. Let's take this transaction for example.
{
"chainId": 1,
"calls": [
{
"from": "0x3b42a0ed9050A79d8F35B07021272B3ef073266A",
"to": "0x881D40237659C251811CEC9c364ef91dC08D300C",
"data": "0x5f5755290000000000000000000000000000000000000000000000000000000000000080000000000000000000000000b2617246d0c6c0087f18703d576831899ca94f0100000000000000000000000000000000000000000000152d02c7e14af680000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000136f6e65496e6368563546656544796e616d6963000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b2617246d0c6c0087f18703d576831899ca94f01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000152d02c7e14af68000000000000000000000000000000000000000000000000000001464a6568a138eed0000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000002f063f978aab00000000000000000000000000f326e4de8f66a0bdc0970b79e0924e33c79f1915000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c80502b1c5000000000000000000000000b2617246d0c6c0087f18703d576831899ca94f0100000000000000000000000000000000000000000000152d02c7e14af68000000000000000000000000000000000000000000000000000001492bbd24caad01b0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000140000000000000003b6d0340b36ec83d844c0579ec2493f10b2087e96bb65460ab4991fe00000000000000000000000000000000000000000000000000a0"
}
],
"blockNumber": 19078685
}
Response:
{
"chainId": 1,
"blockNumber": "0x1231e1d",
"processTime": 246,
"calls": [
{
"logs": [
{
"address": "0xb2617246d0c6c0087f18703d576831899ca94f01",
"topics": [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
"0x0000000000000000000000003b42a0ed9050a79d8f35b07021272b3ef073266a",
"0x00000000000000000000000074de5d4fcbf63e00296fd95d33236b9794016631"
],
"data": "0x00000000000000000000000000000000000000000000152d02c7e14af6800000"
},
{
"address": "0xb2617246d0c6c0087f18703d576831899ca94f01",
"topics": [
"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
"0x0000000000000000000000003b42a0ed9050a79d8f35b07021272b3ef073266a",
"0x000000000000000000000000881d40237659c251811cec9c364ef91dc08d300c"
],
"data": "0xffffffffffffffffffffffffffffffffffffffffffff419e36568544b173efff"
},
{
"address": "0xb2617246d0c6c0087f18703d576831899ca94f01",
"topics": [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
"0x00000000000000000000000074de5d4fcbf63e00296fd95d33236b9794016631",
"0x000000000000000000000000b36ec83d844c0579ec2493f10b2087e96bb65460"
],
"data": "0x00000000000000000000000000000000000000000000152d02c7e14af6800000"
},
{
"address": "0xb2617246d0c6c0087f18703d576831899ca94f01",
"topics": [
"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
"0x00000000000000000000000074de5d4fcbf63e00296fd95d33236b9794016631",
"0x0000000000000000000000001111111254eeb25477b68fb85ed929f73a960582"
],
"data": "0xffffffffffffffffffffffffffffffffffffffffffedda9b1acfa1ddded9990a"
},
{
"address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"topics": [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
"0x000000000000000000000000b36ec83d844c0579ec2493f10b2087e96bb65460",
"0x0000000000000000000000001111111254eeb25477b68fb85ed929f73a960582"
],
"data": "0x00000000000000000000000000000000000000000000000014fe37d15de7c4ae"
},
{
"address": "0xb36ec83d844c0579ec2493f10b2087e96bb65460",
"topics": [
"0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1"
],
"data": "0x0000000000000000000000000000000000000000000903660c63774976aeb38e000000000000000000000000000000000000000000000008e14f01ad7087435a"
},
{
"address": "0xb36ec83d844c0579ec2493f10b2087e96bb65460",
"topics": [
"0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822",
"0x0000000000000000000000001111111254eeb25477b68fb85ed929f73a960582",
"0x0000000000000000000000001111111254eeb25477b68fb85ed929f73a960582"
],
"data": "0x00000000000000000000000000000000000000000000152d02c7e14af68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014fe37d15de7c4ae"
},
{
"address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"topics": [
"0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65",
"0x0000000000000000000000001111111254eeb25477b68fb85ed929f73a960582"
],
"data": "0x00000000000000000000000000000000000000000000000014fe37d15de7c4ae"
},
{
"address": "0xf326e4de8f66a0bdc0970b79e0924e33c79f1915",
"topics": [
"0x3d0ce9bfc3ed7d6862dbb28b2dea94561fe714a1b4d019aa8af39730d1ad7c3d",
"0x00000000000000000000000074de5d4fcbf63e00296fd95d33236b9794016631"
],
"data": "0x000000000000000000000000000000000000000000000000002f063f978aab00"
},
{
"address": "0x881d40237659c251811cec9c364ef91dc08d300c",
"topics": [
"0xbeee1e6e7fe307ddcf84b0a16137a4430ad5e2480fc4f4a8e250ab56ccd7630d",
"0xf35f348d53012d52a5d39f9390d246956ac932d5778d2bb49e359dba4fa0896d",
"0x0000000000000000000000003b42a0ed9050a79d8f35b07021272b3ef073266a"
],
"data": "0x"
}
],
"gasUsed": "0x38646",
"result": "",
"status": 1,
"internalTransfers": [
{
"from": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"to": "0x1111111254eeb25477b68fb85ed929f73a960582",
"amount": "0x14fe37d15de7c4ae"
},
{
"from": "0x1111111254eeb25477b68fb85ed929f73a960582",
"to": "0x74de5d4fcbf63e00296fd95d33236b9794016631",
"amount": "0x14fe37d15de7c4ae"
},
{
"from": "0x74de5d4fcbf63e00296fd95d33236b9794016631",
"to": "0xf326e4de8f66a0bdc0970b79e0924e33c79f1915",
"amount": "0x2f063f978aab00"
},
{
"from": "0x74de5d4fcbf63e00296fd95d33236b9794016631",
"to": "0x3b42a0ed9050a79d8f35b07021272b3ef073266a",
"amount": "0x14cf3191c65d19ae"
}
]
}
]
}
Overrides
Using the example above, let's apply some overrides:
{
"chainId": 1,
"calls": [
{
"from": "0x3b42a0ed9050A79d8F35B07021272B3ef073266A",
"to": "0x881D40237659C251811CEC9c364ef91dC08D300C",
"nonce": 1,
"data": "0x5f5755290000000000000000000000000000000000000000000000000000000000000080000000000000000000000000b2617246d0c6c0087f18703d576831899ca94f0100000000000000000000000000000000000000000000152d02c7e14af680000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000136f6e65496e6368563546656544796e616d6963000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b2617246d0c6c0087f18703d576831899ca94f01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000152d02c7e14af68000000000000000000000000000000000000000000000000000001464a6568a138eed0000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000002f063f978aab00000000000000000000000000f326e4de8f66a0bdc0970b79e0924e33c79f1915000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c80502b1c5000000000000000000000000b2617246d0c6c0087f18703d576831899ca94f0100000000000000000000000000000000000000000000152d02c7e14af68000000000000000000000000000000000000000000000000000001492bbd24caad01b0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000140000000000000003b6d0340b36ec83d844c0579ec2493f10b2087e96bb65460ab4991fe00000000000000000000000000000000000000000000000000a0"
}
],
"overrides": {
// account nonces and balances can be overwritten
"accounts": {
"0x3b42a0ed9050A79d8F35B07021272B3ef073266A": {
"nonce": 0,
"balance": 0,
}
},
// contract codes can be overwritten
"contractCodes": {
"0x881D40237659C251811CEC9c364ef91dC08D300C": "0x....."
},
// storage slots can be overwritten
"storage": {
"0x881D40237659C251811CEC9c364ef91dC08D300C": {
"0x0000000000000000000000000000000000000001": "0x...."
}
}
}
"blockNumber": 19078685
}
Response:
{
"error": true,
"name": "Error",
"message": "Nonce mismatch. Expected 0, got 1 on call #0",
"details": null
}
Last updated