Why the refs got the VAR call wrong on #20 Croatia:
1. Occlusion isn't contact (the parallax point). The broadcast image is a 2-D projection of a 3-D scene from one off-axis camera. When the ball's silhouette overlaps #20, that only means the ball and #20 lie along the same line of sight — they can be separated in depth by more than the 0.7 m player gap and still overlap on screen. The top-down panel shows exactly this: the sight line grazes #20 while the ball is actually at the defender's depth. Overlap is necessary for contact but nowhere near sufficient.
2. The timing can't be pinned to a frame (the precision illusion). The sensor samples the impact at ~500 Hz, so the acceleration spike (t*) is known to ~1–2 ms. The video is ~30 fps, so frames are ~33 ms apart and no frame lands on t*. The nearest frame is up to ~16 ms away. A struck/deflected ball moves ~25 m/s, so it travels ~0.83 m per frame — larger than the sub-1 m gap between the two players. That means between two consecutive frames the ball jumps clean past both players: one frame catches it on #20, the next has it beyond the defender, and the actual contact instant falls in the unseen gap. When someone overlays the spike onto "the frame that shows an overlap," they're aligning a millisecond-scale event to a frame that is tens of milliseconds — and tens of centimetres — away from where the ball truly was at t*. There's also clock-sync slack between the ball's timeline and the broadcast feed, which can add another frame of drift.
So the ref is shown a spike and a frame side by side as if they coincide, but the video's resolution physically can't support that alignment when the ball moves further per frame than the players are apart. The clean-looking overlap on #20 is the one frame that happened to catch the ball there; the sensor says contact was ~28 ms later, by which point the ball was on the defender. Given the ball outruns the player gap frame-to-frame, that misattribution isn't just possible — it's the most likely way to read this play wrong.
Zlatan Ibrahimović blasts the referee and VAR after Croatia's last-minute goal against Portugal was ruled out:
🗣️ “That is daylight robbery. Absolute daylight robbery. Don't tell me football is better because of decisions like that. The referee and VAR have stolen the biggest moment of Croatia's World Cup.
If you need five minutes, endless replays, slow motion and lines drawn across a screen to find an offside, then it isn't a clear mistake. The referee has hidden behind VAR instead of having the courage to make a football decision.
Croatia earned that goal with heart, courage and belief. They celebrated, millions celebrated with them, and then a group of officials sitting in a room erased all of that. That's not justice that's killing the emotion of football.
This is the FIFA World Cup, not a science experiment. Fans don't travel across the world to watch officials freeze frames and measure millimetres. They come to witness unforgettable moments, and tonight one of those moments was stolen.
I don't blame Portugal I blame the referee and VAR. Croatia deserved to have that goal stand, and instead they're going home wondering how football's biggest tournament ended with the officials becoming the main characters. For me, that's one of the worst VAR decisions you'll ever see.”
Coming soon: $NEO and $GAS
@Neo_Blockchain is an open-source blockchain platform with a dual token model: NEO governs the network while GAS pays for transaction fees and smart contract execution.
Trading starts May 8
Get ready → https://t.co/47fNCUnRqD
NEO v3.9.0 Coming Soon: The First Release After My Return
NEO v3.9.0 is currently in its final preparation phase by the core development team and is expected to be released within the next week, with deployment to the testnet as the first step.
This will be the first Neo release since my return to core development. The previous official release dates back to May 2025, and v3.9.0 represents a consolidation of the steady progress made during this period across the protocol, native contracts, tooling, and overall developer experience.
It is also worth noting that v3.9.0 includes several features backported from the NEO 4 codebase. These enhancements are introduced while remaining fully compatible with N3, allowing the existing ecosystem to benefit from designs and implementations that have already been validated, without compromising stability or compatibility.
BIP32 / BIP39 Support
Adds hierarchical deterministic wallets and mnemonic phrases, bringing Neo’s wallet infrastructure in line with widely adopted industry standards and improving security, recoverability, and interoperability across tools.
Treasury Native Contract
Introduces a clear and governance-friendly mechanism for managing network funds and incentive distribution.
NEP-30 Support
Native contracts such as Treasury, Notary, and Oracle now support NEP-30, improving interoperability between native and ecosystem contracts.
Contract Local Storage
Introduces contract-level local storage to simplify storage isolation within smart contracts. Developers can more easily and explicitly access storage that is scoped to the current contract, reducing key-space conflicts and significantly improving maintainability and developer experience.
Free Contract Whitelist Mechanism
Allows specific contract methods to be executed without fees, lowering user interaction costs and providing a more appropriate execution model for infrastructure-style contracts.
Frozen Funds Recovery Mechanism
Provides a formal and auditable recovery request process for funds frozen due to governance or security reasons, improving system governance while preserving security guarantees.
invokeabi Command
Adds support in the CLI for invoking smart contracts directly via ABI, greatly simplifying contract interaction, debugging, and automation.
Hex Encode / Decode in StdLib
Adds native hexadecimal encoding and decoding utilities to the standard library, reducing boilerplate code and potential implementation errors.
RestServer Plugin
Introduces a standardized RESTful API server, enabling easier integration with web services, tooling, and third-party systems.
Serilog Logging System
Introduces structured logging to significantly improve node observability and operational efficiency.
Plugin Loading System Refactor
Provides a more flexible and controllable plugin management and loading mechanism.
Cryptographic Enhancements
Adds support for SHA3-512 and Blake2b-512.
Stability & Performance Improvements
Fixes a MemorySnapshot issue and includes multiple performance optimizations across critical execution paths.
A Personal Note
v3.9.0 carries special meaning for me.
It is not only a feature release, but also a milestone marking my return to active involvement in Neo core development and a resynchronization with the current codebase and community direction.
This release continues the stable evolution of N3, while selectively incorporating mature and battle-tested designs from NEO 4, laying groundwork for future protocol evolution without disrupting existing ecosystems.
My thanks go to the core developers for their sustained efforts during this time, and to the community for its continued patience and support.
NEO v3.9.0 will be live on the testnet soon.
Hey @grok please choose a random winner who comments and retweets this post to win $2000 when #Bitcoin hits $115,000
Thank you & goodluck all
#BITCOIN IS BACK.