Cygaar voices inefficiencies in Moonpay’s HyperMint NFT Launch


  • Moonpay could be capable of decreasing gas costs by 95% by using simple proxies.
  • With each project, HyperMint executes a large contract worth around 4 million gas units.
  • A basic proxy is an inexpensive method of duplicating the same technology across multiple contracts.

Cygaar tweeted that he was looking at Moonpay‘s NFT launch platform (HyperMint) and observed a significant inefficiency in how agreements are deployed. 

Cygaar also suggested that they may cut gas expenses by 95% by utilizing simple proxies. HyperMint implements a huge contract worth around 4 million gas units for each project. If they switched to a minimum proxy, they could reduce this gas cost to $200,000, a 95% lower cost.

HyperMint is a platform that facilitates the establishment of NFT projects. Puma and DigiDaigaku both used it for their latest NFTs. HyperMint employs ERC721A and does all smart contract tasks on behalf of developers.

A minimal proxy is a low-cost approach to reusing the same functionality across numerous contracts. In general, your proxy contract will use the same code as another published deal. The only distinction between proxy contracts is storage data, such as a token name or token symbol. They are useful if one frequently uses the same code but with various input variables.

Cygaar gave an example of Manifold. He stated that Manifold does not install contract semantics for each project. Rather, they have one logic contract and install a simple proxy for each project that links to this logic contract. 

But every time, Hypermint deploys the same contract, which costs them 4 million cubic feet of gas per deployment. This code was used by both Puma’s NFT and DigiDaigaku’s dragon eggs. Etherscan will even inform you whether the bytecode matches exactly.

Cygaar offered his opinion about contracts as well. Instead, they must modify their logic contract to be a proxy implementation (mostly by replacing the function Object() [in native code] with an initialize method), deploy it, and build simple proxies for each subsequent launch.