{
  "name": "Kodzi",
  "chain": {
    "name": "Robinhood Chain",
    "id": 4663,
    "rpc": "https://rpc.mainnet.chain.robinhood.com",
    "explorer": "https://robinhoodchain.blockscout.com"
  },
  "contracts": {
    "KodziProjectBook": {
      "address": "0x4e77bb7e739d9e7a1daa63d3bb0609b35d347f98",
      "deployedBlock": 100401616,
      "status": "deployed",
      "abi": [
        {
          "name": "MAX_TITLE_LENGTH",
          "type": "function",
          "stateMutability": "view",
          "inputs": [],
          "outputs": [
            {
              "type": "uint256"
            }
          ]
        },
        {
          "name": "MAX_LABEL_LENGTH",
          "type": "function",
          "stateMutability": "view",
          "inputs": [],
          "outputs": [
            {
              "type": "uint256"
            }
          ]
        },
        {
          "name": "MAX_FILES",
          "type": "function",
          "stateMutability": "view",
          "inputs": [],
          "outputs": [
            {
              "type": "uint32"
            }
          ]
        },
        {
          "name": "MAX_PAGE",
          "type": "function",
          "stateMutability": "view",
          "inputs": [],
          "outputs": [
            {
              "type": "uint256"
            }
          ]
        },
        {
          "name": "creatorCount",
          "type": "function",
          "stateMutability": "view",
          "inputs": [],
          "outputs": [
            {
              "type": "uint256"
            }
          ]
        },
        {
          "name": "createProject",
          "type": "function",
          "stateMutability": "nonpayable",
          "inputs": [
            {
              "type": "string",
              "name": "title"
            }
          ],
          "outputs": [
            {
              "type": "uint256",
              "name": "projectId"
            }
          ]
        },
        {
          "name": "anchorVersion",
          "type": "function",
          "stateMutability": "nonpayable",
          "inputs": [
            {
              "type": "uint256",
              "name": "projectId"
            },
            {
              "type": "bytes32",
              "name": "manifestHash"
            },
            {
              "type": "uint32",
              "name": "fileCount"
            },
            {
              "type": "uint64",
              "name": "totalBytes"
            },
            {
              "type": "string",
              "name": "label"
            }
          ],
          "outputs": [
            {
              "type": "uint256",
              "name": "versionId"
            }
          ]
        },
        {
          "name": "createAndAnchor",
          "type": "function",
          "stateMutability": "nonpayable",
          "inputs": [
            {
              "type": "string",
              "name": "title"
            },
            {
              "type": "bytes32",
              "name": "manifestHash"
            },
            {
              "type": "uint32",
              "name": "fileCount"
            },
            {
              "type": "uint64",
              "name": "totalBytes"
            },
            {
              "type": "string",
              "name": "label"
            }
          ],
          "outputs": [
            {
              "type": "uint256",
              "name": "projectId"
            },
            {
              "type": "uint256",
              "name": "versionId"
            }
          ]
        },
        {
          "name": "projectCount",
          "type": "function",
          "stateMutability": "view",
          "inputs": [],
          "outputs": [
            {
              "type": "uint256"
            }
          ]
        },
        {
          "name": "versionCount",
          "type": "function",
          "stateMutability": "view",
          "inputs": [],
          "outputs": [
            {
              "type": "uint256"
            }
          ]
        },
        {
          "name": "getProject",
          "type": "function",
          "stateMutability": "view",
          "inputs": [
            {
              "type": "uint256",
              "name": "projectId"
            }
          ],
          "outputs": [
            {
              "type": "tuple",
              "name": "v",
              "components": [
                {
                  "type": "uint256",
                  "name": "id"
                },
                {
                  "type": "address",
                  "name": "creator"
                },
                {
                  "type": "uint64",
                  "name": "createdBlock"
                },
                {
                  "type": "uint64",
                  "name": "createdAt"
                },
                {
                  "type": "uint64",
                  "name": "latest"
                },
                {
                  "type": "uint256",
                  "name": "versionCount"
                },
                {
                  "type": "string",
                  "name": "title"
                }
              ]
            }
          ]
        },
        {
          "name": "projects",
          "type": "function",
          "stateMutability": "view",
          "inputs": [
            {
              "type": "uint256",
              "name": "fromId"
            },
            {
              "type": "uint256",
              "name": "limit"
            }
          ],
          "outputs": [
            {
              "type": "tuple[]",
              "name": "out",
              "components": [
                {
                  "type": "uint256",
                  "name": "id"
                },
                {
                  "type": "address",
                  "name": "creator"
                },
                {
                  "type": "uint64",
                  "name": "createdBlock"
                },
                {
                  "type": "uint64",
                  "name": "createdAt"
                },
                {
                  "type": "uint64",
                  "name": "latest"
                },
                {
                  "type": "uint256",
                  "name": "versionCount"
                },
                {
                  "type": "string",
                  "name": "title"
                }
              ]
            }
          ]
        },
        {
          "name": "getVersion",
          "type": "function",
          "stateMutability": "view",
          "inputs": [
            {
              "type": "uint256",
              "name": "versionId"
            }
          ],
          "outputs": [
            {
              "type": "tuple",
              "name": "v",
              "components": [
                {
                  "type": "uint256",
                  "name": "id"
                },
                {
                  "type": "uint64",
                  "name": "projectId"
                },
                {
                  "type": "uint32",
                  "name": "number"
                },
                {
                  "type": "uint32",
                  "name": "fileCount"
                },
                {
                  "type": "uint64",
                  "name": "totalBytes"
                },
                {
                  "type": "uint64",
                  "name": "anchoredBlock"
                },
                {
                  "type": "uint64",
                  "name": "anchoredAt"
                },
                {
                  "type": "bytes32",
                  "name": "manifestHash"
                },
                {
                  "type": "address",
                  "name": "creator"
                },
                {
                  "type": "string",
                  "name": "label"
                }
              ]
            }
          ]
        },
        {
          "name": "versions",
          "type": "function",
          "stateMutability": "view",
          "inputs": [
            {
              "type": "uint256",
              "name": "fromId"
            },
            {
              "type": "uint256",
              "name": "limit"
            }
          ],
          "outputs": [
            {
              "type": "tuple[]",
              "name": "out",
              "components": [
                {
                  "type": "uint256",
                  "name": "id"
                },
                {
                  "type": "uint64",
                  "name": "projectId"
                },
                {
                  "type": "uint32",
                  "name": "number"
                },
                {
                  "type": "uint32",
                  "name": "fileCount"
                },
                {
                  "type": "uint64",
                  "name": "totalBytes"
                },
                {
                  "type": "uint64",
                  "name": "anchoredBlock"
                },
                {
                  "type": "uint64",
                  "name": "anchoredAt"
                },
                {
                  "type": "bytes32",
                  "name": "manifestHash"
                },
                {
                  "type": "address",
                  "name": "creator"
                },
                {
                  "type": "string",
                  "name": "label"
                }
              ]
            }
          ]
        },
        {
          "name": "versionIdsOf",
          "type": "function",
          "stateMutability": "view",
          "inputs": [
            {
              "type": "uint256",
              "name": "projectId"
            },
            {
              "type": "uint256",
              "name": "offset"
            },
            {
              "type": "uint256",
              "name": "limit"
            }
          ],
          "outputs": [
            {
              "type": "uint256[]"
            }
          ]
        },
        {
          "name": "projectCountOf",
          "type": "function",
          "stateMutability": "view",
          "inputs": [
            {
              "type": "address",
              "name": "creator"
            }
          ],
          "outputs": [
            {
              "type": "uint256"
            }
          ]
        },
        {
          "name": "projectIdsOf",
          "type": "function",
          "stateMutability": "view",
          "inputs": [
            {
              "type": "address",
              "name": "creator"
            },
            {
              "type": "uint256",
              "name": "offset"
            },
            {
              "type": "uint256",
              "name": "limit"
            }
          ],
          "outputs": [
            {
              "type": "uint256[]"
            }
          ]
        },
        {
          "name": "versionCountForHash",
          "type": "function",
          "stateMutability": "view",
          "inputs": [
            {
              "type": "bytes32",
              "name": "manifestHash"
            }
          ],
          "outputs": [
            {
              "type": "uint256"
            }
          ]
        },
        {
          "name": "versionIdsForHash",
          "type": "function",
          "stateMutability": "view",
          "inputs": [
            {
              "type": "bytes32",
              "name": "manifestHash"
            },
            {
              "type": "uint256",
              "name": "offset"
            },
            {
              "type": "uint256",
              "name": "limit"
            }
          ],
          "outputs": [
            {
              "type": "uint256[]"
            }
          ]
        },
        {
          "name": "chainBlock",
          "type": "function",
          "stateMutability": "view",
          "inputs": [],
          "outputs": [
            {
              "type": "uint64"
            }
          ]
        },
        {
          "name": "ProjectCreated",
          "type": "event",
          "inputs": [
            {
              "type": "uint256",
              "name": "projectId",
              "indexed": true
            },
            {
              "type": "address",
              "name": "creator",
              "indexed": true
            },
            {
              "type": "string",
              "name": "title"
            },
            {
              "type": "uint64",
              "name": "chainBlock"
            }
          ]
        },
        {
          "name": "VersionAnchored",
          "type": "event",
          "inputs": [
            {
              "type": "uint256",
              "name": "versionId",
              "indexed": true
            },
            {
              "type": "uint256",
              "name": "projectId",
              "indexed": true
            },
            {
              "type": "bytes32",
              "name": "manifestHash",
              "indexed": true
            },
            {
              "type": "uint32",
              "name": "number"
            },
            {
              "type": "uint32",
              "name": "fileCount"
            },
            {
              "type": "uint64",
              "name": "totalBytes"
            },
            {
              "type": "string",
              "name": "label"
            },
            {
              "type": "uint64",
              "name": "chainBlock"
            }
          ]
        },
        {
          "name": "BadTitle",
          "type": "error",
          "inputs": []
        },
        {
          "name": "BadLabel",
          "type": "error",
          "inputs": []
        },
        {
          "name": "BadHash",
          "type": "error",
          "inputs": []
        },
        {
          "name": "BadFileCount",
          "type": "error",
          "inputs": [
            {
              "type": "uint32",
              "name": "fileCount"
            }
          ]
        },
        {
          "name": "UnknownProject",
          "type": "error",
          "inputs": [
            {
              "type": "uint256",
              "name": "projectId"
            }
          ]
        },
        {
          "name": "UnknownVersion",
          "type": "error",
          "inputs": [
            {
              "type": "uint256",
              "name": "versionId"
            }
          ]
        },
        {
          "name": "NotCreator",
          "type": "error",
          "inputs": [
            {
              "type": "uint256",
              "name": "projectId"
            }
          ]
        },
        {
          "name": "SameAsLatest",
          "type": "error",
          "inputs": [
            {
              "type": "uint256",
              "name": "versionId"
            }
          ]
        }
      ]
    }
  },
  "notes": "manifestHash = keccak256 of the manifest text: one line per file, \"<sha256 hex> <size in bytes> <path>\\n\", sorted by path. No owner, no fees, never holds funds."
}