Post

William Entriken
William Entriken@fulldecent·
Here more on the @joinPolynode exploration. I have tried several times and can consistently see its mempool stream comes before settled Polymarket trades on-chain. But I could not reproduce its claimed "~3 seconds ahead of the chain". Too detailed analysis below.
William Entriken tweet mediaWilliam Entriken tweet media
English
1
0
2
255
William Entriken
William Entriken@fulldecent·
First I measured for its data accuracy. In all my tests, it is accurate. You can reproduce this yourself. github.com/fulldecent/pol… The PolyNode stream is not missing data and it does not have extra data which does not actually settle. That's good 👍
English
1
0
0
130
William Entriken
William Entriken@fulldecent·
Next I did a speed test versus @ChainstackHQ RPC. And Chainstack is fast. PolyNode mempool stream events are average 650ms (median 650ms) before Chainstack settled stream. Accessing from Philadelphia, PA USA. That's a very weird latency for this product.
English
2
0
2
377
William Entriken
William Entriken@fulldecent·
If YOU designed a mempool sniffer on Polygon for trade data, what would you EXPECT the average latency to be? Assume: - Polygon execution layer is 0ms, no MEV - Polygon consensus layer is 0ms - Latency between "network" and you is 0ms - mempool filtering and enrichment is 0ms
English
1
0
0
103
William Entriken
William Entriken@fulldecent·
⭐️ Correct answer: 1000ms Because you also assume: trades spray into mempool at random times. Polygon blocks are 2000ms. (This is the same calculation for the average seek time of a disk spinning at 7200rpm. If you are wondering how a disk can spin, get off my lawn.)
English
1
0
0
101
William Entriken
William Entriken@fulldecent·
Now if you don't care about trade routing optimization, latency, geography and proxies and Cloudflare, here is a good time to close this X thread! It goes down from here 📉
English
1
0
0
135
William Entriken
William Entriken@fulldecent·
First let's look at the endpoints and the traceroutes and the basic physical geography of the network. Chainstack: 11ms RTT to Cloudflare POP (Philadelphia) Polymarket Gamma: 17ms to Cloudflare anycast Polynode: 130ms to Helsinki
English
1
0
0
154
William Entriken
William Entriken@fulldecent·
Inspecting through Cloudflare to find @Polymarket CLOB physical location... The Cloudflare network hides the IP address of the origin server. But still, I was able to triangulate it to: AWS eu-west-2 / London region Just based on the way that replication and the application works. We can assume that the CLOB server is the hottest of the Polymarket servers.
English
1
0
0
133
William Entriken
William Entriken@fulldecent·
The @0xPolygon is plurally "at" us-east. No further commentary or debate on that note.
English
1
0
0
91
William Entriken
William Entriken@fulldecent·
It appears that Polynode has a single region, it's in Helsinki. No web firewall.
English
1
0
0
97
William Entriken
William Entriken@fulldecent·
Chainstack was harder to triangulate, so I didn't spend time doing it.
English
1
0
0
88
William Entriken
William Entriken@fulldecent·
And I also tested using a Tor connection to Amsterdam.
English
1
0
0
83
William Entriken
William Entriken@fulldecent·
Now let's zoom out. Relying on Polynode for streaming data and also for broadcasting the transaction to the network was no faster than using Chainstack and then sending transactions over Tor. They were both two blocks to get inclusion!
English
1
0
0
87
William Entriken
William Entriken@fulldecent·
The problem is round trip time from Helsinki to Philadelphia.
English
1
0
0
81
William Entriken
William Entriken@fulldecent·
The solution is that Polynode should move its streaming origin and entire web infrastructure from Finland to London to colocate with Polymarket. Call PM on the phone, or repeat my experiments above to get a more precise location. And also they should document these things clearly to recommend exactly where to put your server.
English
1
0
0
202
William Entriken
William Entriken@fulldecent·
And also. Definitely not 3 seconds ahead of chain settlement.
English
1
0
0
129
polynode
polynode@joinPolynode·
opened a PR: github.com/fulldecent/pol… your stream was subscribed to `trades`, which is our post-confirmation firehose. the pre-confirmation channel is `settlements`. that's the one that fires the second we decode from the mempool. the 650ms you measured is actually a pretty clean tell that you were reading our confirmed trade events, not the mempool ones. swap the subscription and the lead shows up. ran your unchanged v2 with the fix: n=7464, median 3353ms, zero missed txs across every block.
English
1
0
0
405
polynode
polynode@joinPolynode·
@fulldecent not 100% but it seems like although their matching engine is in London and maybe one other place - the txns still all get routed through alchemy’s main infra in Germany so it propagates there first
English
1
0
1
27
polynode
polynode@joinPolynode·
@fulldecent Yessir definitely thinking about these things and it’s fun to fight physics
English
0
0
1
17
Paylaş