Closed bh2smith closed 1 year ago
@fleupold suggested a few other options:
@sunce86 was also suggesting that it shouldn’t be hard to hack an existing client to serve events together with eth_call
(maybe on top of RETH?). Could be a cool ecosystem friday project. I wonder, can we also get ETH balance differences?
Every time I try Alchemy it NEVER works properly
➜ ~ curl --location --request POST 'https://eth-mainnet.g.alchemy.com/v2/${ALCHEMY_KEY}' \
--header 'Content-Type: application/json' \
--data-raw '{
"jsonrpc": "2.0",
"method": "alchemy_simulateAssetChanges",
"id": 1,
"params": [
{
"from": "0xb20b86c4e6deeb432a22d773a221898bbbd03036",
"to": "0x9008d19f58aabd9ed0d60971565aa8510560ab41",
"value": "0",
"data": "0x13d79a0b000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000003600000000000000000000000000000000000000000000000000000000000000002000000000000000000000000056fd409e1d7a124bd7017459dfea2f387b6d5cd000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000421b1f43250000000000000000000000000000000000000000000000000000000001b163c700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000006d474038cd18c1a2ce87dfcab635398c32379f6a000000000000000000000000000000000000000000000000000000421b1f43250000000000000000000000000000000000000000000000000000000001b15a0800000000000000000000000000000000000000000000000000000000643e661dee8205ef376013a542f973e5b9d13d65812daf35e516b56162e99a18832fbdfb00000000000000000000000000000000000000000000000000000000030dba240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000421b1f4325000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000412746c5eaa3bc43fd70ddc6244ae76a1059123eb9b7497ce3d118d3878e246dd24fc6eedaed49bc791640789ac9bc00ea4b7e439f8665cdd7d2d54ddcda0ecb2f1b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000004a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000001111111254eeb25477b68fb85ed929f73a96058200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000034812aa3caf0000000000000000000000001136b25047e142fa3018184793aec68fbb173ce4000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000056fd409e1d7a124bd7017459dfea2f387b6d5cd0000000000000000000000001136b25047e142fa3018184793aec68fbb173ce40000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41000000000000000000000000000000000000000000000000000000421b1f43250000000000000000000000000000000000000000000000000000000001b1430c000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a800000000000000000000000000000000000000000000018a00015c0000fc00a007e5c0d20000000000000000000000000000000000000000000000d80000ca0000b05120bebc44782c7db0a1a60cb6fe97d0b483032ff1c7dac17f958d2ee523a2206206994597c13d831ec700443df02124000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003b8ca698751618092a720020d6bdbf786b175474e89094c44da98b954eedeac495271d0f00a085db1a5900005af3107a400000a0cd211e1e056fd409e1d7a124bd7017459dfea2f387b6d5cd0000000000000000000000000000000000000000000000000000000001b163c7000000000000000000000000000001ee33ff9008d19f58aabd9ed0d60971565aa8510560ab4180a06c4eca27056fd409e1d7a124bd7017459dfea2f387b6d5cd1111111254eeb25477b68fb85ed929f73a960582000000000000000000000000000000000000000000000000d26cd1970000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
}
]
}'
responds with
{"jsonrpc":"2.0","id":1,"error":{"code":-32000,"message":"Must be authenticated!"}}%
but of course the requests from their documentation works:
curl https://eth-mainnet.g.alchemy.com/v2/${ALCHEMY_KEY} -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"alchemy_getTokenBalances","params": ["0x3f5ce5fbfe3e9af3971dd833d26ba9b5c936f0be", ["0x607f4c5bb672230e8672085532f7e901544a7375", "0x618e75ac90b12c6049ba3b27f5d5f8651b0037f6", "0x63b992e6246d88f07fc35a056d2c365e6d441a3d", "0x6467882316dc6e206feef05fba6deaa69277f155", "0x647f274b3a7248d6cf51b35f08e7e7fd6edfb271"]],"id":"42"}'
https://cowservices.slack.com/archives/C035RP0RH3P/p1683907822012099
Try this out (only requires a full node)!
Every time I try Alchemy it NEVER works properly
In the request you pasted ${ALCHEMY_KEY}
needs to be replaced by an actual API Key (see 1Password), which is also implied by the error message you shared.
Try this out (only requires a full node)!
One thing that I'm not sure if for this project it's enough to do "top of block" simulations or if you need to be able to specify a transaction index. If the latter, the EnsoFinance project needs to be somewhat adjusted to allow for mid block simulations (should be fairly easy to add)
In the request you pasted ${ALCHEMY_KEY} needs to be replaced by an actual API Key (see 1Password), which is also implied by the error message you shared.
I am 100% sure that I used an actual key, but I will try again sometime.
or if you need to be able to specify a transaction index.
No need for us to specify transaction index (at least not at this point).
Phalcon API (reverse engineered)
curl -X POST https://explorer.phalcon.xyz/api/v1/tx/simulate/2 \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{"chainID":1,"sender":"0x7f01D9b227593E033bf8d6FC86e634d27aa85568","receiver":"0x7f01D9b227593E033bf8d6FC86e634d27aa85568","inputData":"0x1234","value":"0","block":0,"position":0,"gasLimit":1000000,"gasPrice":"100"}'
Unfortunately, we will not be able to use Phalcon here as any form of "professional" simulator because of their overly processed response data:
See here: http://jsonblob.com/1109228672375865344
Or here if link is dead:
The problem is that their "balanceChanges" are not in WEI and they do not provide proper event logs.
Implementation started in #285 -- and stopped immediately after response data came back.
We created a "generic" simulation interface in hopes that there would be alternative options (so not to depend so heavily on Tenderly). At the moment, it is unclear what alternatives we have. CoW Protocol's backend services run "semi-simulations" via
estimateGas
calls to ETH-RPC. However, this is insufficient since we require state updates and event logs from the simulation (and not just whether or not the transaction succeeds).