Ethereum Layer 2 scaling solution zkSync claims to have found a way to unfreeze the funds locked in Gemholic’s GemstoneIDO smart contract.

In an April 6 update on Twitter, zkSync said it had found an “elegant solution” to 921 ETH, worth around $1.7 million, locked in one of its contracts after the project’s token sale.

The issue arose from the .transfer() function in GemstoneIDO’s smart contract, which the zkSync team claims could have been avoided if the project had deployed the contract on a testnet.

“Unfortunately, the contracts were deployed on Era mainnet without having been tried on the testnet or local node, which would have immediately caught the problem,” said the zkSync team.

The Gemholic team, however, claims to have tested out the function on the zkSync testnet before the mainnet. 

The function was part of zkSync Era, the zero-knowledge rollup scaling solution released by Matter Labs last month. However, zkSync Era is not Ethereum Virtual Machine (EVM) equivalent, a “deliberate design choice” made by the team.

Era’s dynamic gas metering means that any ETH transfers will cost more than 2300 gas, and any .transfer() function entered without an explicit gas stipend would fail. The team said it had anticipated such a scenario and added a warning about the function directly to its compiler.

To solve the issue of GemstoneIDO’s locked funds, zkSync said it would make minimal changes to the gas metering of the protocol to allow for a full recovery of funds.

Despite a quick resolution, some critics alleged that the issues stemmed from zkSync Era’s lack of complete EVM equivalence, despite its claims to the contrary.