{
  "work": "bit-rot",
  "pinned": [
    "0xc1c0d347ab073fb9807b17de85fc4f1940c98ee5/Contracts/BitRotRenderer.sol",
    "0x8928f01a2186ec8d6be03baf5e7fc15e40373c6c/contracts/erc721/custom/BitRot/BitRotGenerative.sol"
  ],
  "contracts": [
    {
      "name": "BitRotGenerative",
      "address": "0x8928f01a2186ec8d6be03baf5e7fc15e40373c6c",
      "role": "token implementation behind the highlight proxy, delegating to the renderer",
      "compiler": "0.8.10+commit.fc410830",
      "main": "contracts/erc721/custom/BitRot/BitRotGenerative.sol",
      "files": [
        "contracts/erc721/custom/BitRot/BitRotGenerative.sol",
        "contracts/erc721/ERC721Base.sol",
        "contracts/erc721/ERC721GeneralSequenceBase.sol",
        "contracts/erc721/custom/BitRot/interfaces/IBitRotRenderer.sol",
        "contracts/erc721/erc721a/ERC721AStorage.sol",
        "contracts/erc721/erc721a/ERC721AURIStorageUpgradeable.sol",
        "contracts/erc721/erc721a/ERC721AUpgradeable.sol",
        "contracts/erc721/erc721a/IERC721AUpgradeable.sol",
        "contracts/erc721/interfaces/IERC721GeneralMint.sol",
        "contracts/erc721/onchain/ERC721GenerativeOnchain.sol",
        "contracts/erc721/onchain/OnchainFileStorage.sol",
        "contracts/metadata/MetadataEncryption.sol",
        "contracts/metatx/ERC2771ContextUpgradeable.sol",
        "contracts/observability/IObservability.sol",
        "contracts/royaltyManager/interfaces/IRoyaltyManager.sol",
        "contracts/tokenManager/interfaces/IPostBurn.sol",
        "contracts/tokenManager/interfaces/IPostTransfer.sol",
        "contracts/tokenManager/interfaces/ITokenManager.sol",
        "contracts/utils/ERC165/ERC165CheckerUpgradeable.sol",
        "contracts/utils/ERC165/IERC165Upgradeable.sol",
        "contracts/utils/ERC2981/IERC2981Upgradeable.sol",
        "contracts/utils/Ownable.sol",
        "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
        "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
        "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol",
        "@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol",
        "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol",
        "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol",
        "@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol",
        "@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol",
        "@openzeppelin/contracts/utils/Context.sol",
        "@openzeppelin/contracts/utils/structs/EnumerableSet.sol"
      ],
      "focus": [
        {
          "file": "contracts/erc721/custom/BitRot/BitRotGenerative.sol",
          "match": "function tokenURI(uint256 tokenId) public view override returns (string memory) {",
          "lines": 12,
          "note": "each banknote is drawn from a block hash and its mint time"
        }
      ]
    },
    {
      "name": "BitRotRenderer",
      "address": "0xc1c0d347ab073fb9807b17de85fc4f1940c98ee5",
      "role": "renderer assembling each banknote's html and image sources",
      "compiler": "0.8.18+commit.87f61d96",
      "main": "Contracts/BitRotRenderer.sol",
      "files": [
        "Contracts/BitRotRenderer.sol",
        "@openzeppelin/contracts/access/Ownable.sol",
        "@openzeppelin/contracts/utils/Base64.sol",
        "@openzeppelin/contracts/utils/Context.sol",
        "@openzeppelin/contracts/utils/Strings.sol",
        "@openzeppelin/contracts/utils/math/Math.sol",
        "@openzeppelin/contracts/utils/math/SignedMath.sol",
        "scripty.sol/contracts/scripty/utils/DynamicBuffer.sol"
      ],
      "focus": [
        {
          "file": "Contracts/BitRotRenderer.sol",
          "match": "function fetchTokenURIs() internal view returns (bytes memory) {",
          "lines": 17,
          "note": "asks other collections where their images are kept, each time"
        },
        {
          "file": "Contracts/BitRotRenderer.sol",
          "match": "function fetchImages(address storageContract)",
          "lines": 6,
          "note": "coarse copies of the faces and buildings, kept on chain"
        },
        {
          "file": "Contracts/BitRotRenderer.sol",
          "match": "function generateHTML (",
          "lines": 23,
          "note": "the banknote's page put together from files kept on chain"
        }
      ]
    }
  ]
}
