Protocol Overview
Data Schema

Data Schema

A standard data schema ensures that its easier to use the protocol across several platforms. A few have been shown here.

StandardBounties Schema

Bounty issuance data Schema:

{
  payload: {
    title: // a string representing the title of the bounty
    description: // a string representing the description of the bounty, including all requirements
    fulfillmentAmount: // an integer amount that will be paid out to fufillers
    categories: // an array of strings, representing the categories of tasks which are being requested
    expectedRevisions: // an integer of how many times the spec is expected to be adjusted during fulfillment
    difficulty: // a string representing how difficult this bounty is (one of: easy, medium, hard)
    privateFulfillments: // boolean desrcibing whether fulfillments are only visible to the issuer
    fulfillersNeedApproval: // boolean that forces users to be approved before fulfilling the bounty

    // ------- add optional fields here -------
    ipfsFilename: // a string representing the name of the file
    ipfsHash: // the IPFS hash of the directory which can be used to access the file
    webReferenceURL: // the link to a relevant web reference (ie github issue)
  },
  meta: {
    platform: // a string representing the original posting platform (ie 'gitcoin')
    schemaVersion: // a string representing the version number (ie '0.1')
    schemaName: // a string representing the name of the schema (ie 'standardSchema' or 'gitcoinSchema')
  }
}

Bounty fulfillment data Schema:

{
  payload: {
    description: // A string representing the description of the fulfillment, and any necessary links to works
    sourceFileName: // A string representing the name of the file being submitted
    sourceFileHash: // A string representing the IPFS hash of the file being submitted
    sourceDirectoryHash: // A string representing the IPFS hash of the directory which holds the file being submitted
    fulfillers: [
      // a list of personas for the individuals whose work is being submitted
    ]
    payoutAmounts: [
      // an array of floats which is equal in length to the fulfillers array, representing the % of tokens which should be paid to each of the fulfillers (ie [50, 50] would represent an equal split of a bounty by 2 fulfillers)
    ]

    // ------- add optional fields here -------
  },
  meta: {
    platform: // a string representing the original posting platform (ie 'gitcoin')
    schemaVersion: // a string representing the version number (ie '0.1')
    schemaName: // a string representing the name of the schema (ie 'standardSchema' or 'gitcoinSchema')
  }
}

Other schemas

Our older clients use this flat schema before we transitioned to the above schema.

{
    "name": "Round Pre-Release Bug Bounty",
    "description": "Help test Rounds's new bounty creation wizard, launching on https://round.new in a few weeks. Submit a claim with as many bugs as you can find, winner take all. More info in the Discord. ",
    "url": "https://discord.com/channels/882687582054518794/991406912564379648\n", // A comma separated list of URLs
    "requiresApproval": false, // Indicator of whethere an application is needed to apply for this bounty
    "externalFunding": true, // True if clients allow an option to add additional funds in the bounty (this is a choice we made, despite being available in the contract)
    "deadline": 1672549200, // Datetime 
    "creatorAddress": "0x1d3A61FD8D2dDD03C8E0089f7159e9DB01F9e2F5",
    "tokenSymbol": "ETH",
    "tokenAddress": "0x0000000000000000000000000000000000000000",
    "tokenAmount": 0.01,
    "tokenVersion": 0
}
Last updated on April 3, 2023