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
129
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
376
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
102
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
100
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
134
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
153
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
132
William Entriken
William Entriken@fulldecent·
The @0xPolygon is plurally "at" us-east. No further commentary or debate on that note.
English
1
0
0
90
William Entriken
William Entriken@fulldecent·
It appears that Polynode has a single region, it's in Helsinki. No web firewall.
English
1
0
0
96
William Entriken
William Entriken@fulldecent·
Chainstack was harder to triangulate, so I didn't spend time doing it.
English
1
0
0
87
William Entriken
William Entriken@fulldecent·
And I also tested using a Tor connection to Amsterdam.
English
1
0
0
82
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
86
William Entriken
William Entriken@fulldecent·
The problem is round trip time from Helsinki to Philadelphia.
English
1
0
0
80
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
201
William Entriken
William Entriken@fulldecent·
And also. Definitely not 3 seconds ahead of chain settlement.
English
1
0
0
128
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
Paylaş