For users of the dapp. No coding required. This guide covers everything from connecting your wallet to using advanced privacy and identity features.
| # DinoHook — The Collector's Art Guide | |
| > **CollectibleTrust DAO LLC - A RMI Registered Not-For-Profit · DinoHook Protocol** | |
| > *Your friendly guide to the art, the dinosaurs, the history, and the fun of collecting DinoHook NFTs. No code required.* | |
| --- | |
| ## Table of Contents | |
| 1. [Welcome to DinoHook](#1-welcome-to-dinohook) |
CollectibleTrust · DAO LLC · Dinosaur Vault Protocol
The definitive reference for minting, evolving, battling, and thriving in the DINO ecosystem.
CollectibleTrust DAO LLC - A RMI Registered Not-For-Profit · DinoHook Protocol
The definitive reference for minting, evolving, battling, and thriving in the DINO ecosystem.
| // SPDX-License-Identifier: MIT | |
| pragma solidity ^0.8.24; | |
| import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; | |
| import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; | |
| import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; | |
| /** | |
| * @title Dinosaur Amber Vault | |
| * @notice Locks exactly 100 DINO to mint 1 dynamic Dinosaur NFT. |
| // SPDX-License-Identifier: MIT | |
| pragma solidity ^0.8.24; | |
| import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; | |
| import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; | |
| import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; | |
| import "@openzeppelin/contracts/utils/Pausable.sol"; | |
| import "@openzeppelin/contracts/access/Ownable.sol"; | |
| /** |
| // SPDX-License-Identifier: MIT | |
| pragma solidity ^0.8.28; | |
| import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; | |
| import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol"; | |
| import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; | |
| import "@openzeppelin/contracts/access/Ownable.sol"; | |
| import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; | |
| import "@openzeppelin/contracts/utils/Pausable.sol"; |
[ { "uid": "SOL-2025-1", "name": "LostStorageArrayWriteOnSlotOverflow", "summary": "Operations that involve clearing or copying from arrays that straddle the end of storage could result in silent data retention.", "description": "Solidity makes it possible to define variables that extend past the last (2**256-th) slot of storage, which results in wrap-around back to slot zero. Since EVM uses 256-bit integer arithmetic, most operations on such variables just work. The only situation which requires special attention is iteration against absolute slot addresses: the invariant that the last slot belonging to a variable has the highest address does not hold. When implemented incorrectly, a loop over an array will immediately terminate if the container spans the end of storage - due to the initial position already being greater than the end position. This affected storage array clearing loops generated by both evmasm and IR pipelines. Additionally, (only in the evmasm pipeline) c
| // SPDX-License-Identifier: MIT | |
| pragma solidity ^0.8.20; | |
| import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; | |
| import "@openzeppelin/contracts/access/Ownable.sol"; | |
| /// @title CurrencyCoin Interface | |
| /// @notice Interface for interacting with the CurrencyCoin contract | |
| interface CurrencyCoin { |
| // SPDX-License-Identifier: MIT | |
| pragma solidity 0.8.30; | |
| import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; | |
| import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; | |
| import "@openzeppelin/contracts/access/Ownable.sol"; | |
| import "@openzeppelin/contracts/security/Pausable.sol"; | |
| import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; | |
| import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol"; |