La colección de NFTs de Azuki destaca por su estilo artístico. Pero además de eso trajo a la mesa el ERC721A una nueva implementación del estándar ERC-721. El objetivo de esta librería es ahorrar gas a los participantes que deseen comprar mas de un NFT en el mercado primario. En este video haremos pruebas y compararemos los gastos de gas para los NFTs lanzados con Azuki y para los NFTs lanzados con las librerías de OpenZeppelin.
https://www.youtube.com/watch?v=TTEzsdQKU-g
Ejecuta los tests
Al ejecutar los siguientes comandos bajarás los tests desde el repo de github de Filosofía Código, los ejecutarás y verás los resultados en la terminal.
git clone https://github.com/FilosofiaCodigo/ERC721AComparison.git
cd ERC721AComparison/
npm install
npx hardhat run scripts/gas-comparison.js
Ejemplos usados en este video
Aquí les dejo los contratos con funcionalidad mínima que usamos para realizar los tests.
Azuki NFT
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
import "erc721a/contracts/ERC721A.sol";
contract Azuki is ERC721A {
constructor() ERC721A("Azuki", "AZUKI") {}
function mint(uint256 quantity) external payable {
// `_mint`'s second argument now takes in a `quantity`, not a `tokenId`.
_mint(msg.sender, quantity);
}
}
Openzeppelin NFT
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
contract GameItem is ERC721URIStorage {
using Counters for Counters.Counter;
Counters.Counter private _tokenIds;
constructor() ERC721("GameItem", "ITM") {}
function mint() external
{
_mint(msg.sender, _tokenIds.current());
_tokenIds.increment();
}
function mintWithAmount(uint amount) external
{
for(uint i; i<amount; i++)
{
_mint(msg.sender, _tokenIds.current());
_tokenIds.increment();
}
}
}
Gracias por ver este tutorial!
Sígannos en dev.to y en Youtube para todo lo relacionado al desarrollo en Blockchain en Español.
Top comments (0)