Technical Reference

10.1 Contract Constants

  • AI_SERVICE_FEE = 0.00001 ether – Fee for AI agent services on issue creation.

  • MIN_CONTRIBUTOR_STAKE_PERCENTAGE = 5 – Minimum contributor stake as a percentage of the issue bounty.

  • MAX_CONTRIBUTOR_STAKE_PERCENTAGE = 20 – Maximum contributor stake as a percentage of the issue bounty.

  • DEFAULT_EASY_DURATION = 7 days – Default duration for EASY issues.

  • DEFAULT_MEDIUM_DURATION = 30 days – Default duration for MEDIUM issues.

  • DEFAULT_HARD_DURATION = 150 days – Default duration for HARD issues.


10.2 Events

  • IssueCreated(issueId, creator, githubIssueUrl, bounty, difficulty) – Emitted when a new issue is created.

  • IssueAssigned(issueId, contributor, deadline) – Emitted when a contributor takes an issue.

  • IssueCompleted(issueId, contributor, reward) – Emitted when an issue is marked complete and rewards are sent.

  • BountyIncreased(issueId, newBounty) – Emitted when the issue bounty is increased.

  • DeadlineExpired(issueId, contributor) – Emitted when an issue’s deadline passes and contributor claims expiration payout.

  • AIPaymentSent(from, amount) – Emitted when AI service fee is paid.

  • StakeForfeited(issueId, contributor, amount) – Emitted when contributor stake is forfeited due to insufficient completion.


10.3 View Functions

  • getIssueInfo(uint256 issueId) – Returns detailed information of a specific issue.

  • getOrganisationIssues() – Returns all issue IDs in the organization.

  • getIssueDurations(uint256 issueId) – Returns easy, medium, and hard durations for a given issue.

  • getCreatorIssues(address creator) – Returns all issue IDs created by a specific creator.

  • getContributorAssignedIssues(address contributor) – Returns all issues assigned to a contributor.

  • getIssuePreviousContributors(uint256 issueId) – Returns a list of contributors who previously attempted the issue.

  • hasContributorAttemptedIssue(uint256 issueId, address contributor) – Returns whether a contributor has attempted an issue.

  • isIssueExpired(uint256 issueId) – Checks if a given issue’s deadline has passed.

  • getContractBalance() – Returns the contract’s current ETH balance.

  • isAddressVerified(address user) – Checks whether a user has stored a nullifier and is verified.


10.4 GitHub Integration

DecentralizedIssueTracker integrates with GitHub URLs provided during issue creation to track:

  • Issue existence and metadata (URL, description).

  • Contributor identities via verification (nullifier mapping).

  • Reconciliation can be implemented off-chain by AI agents to verify:

    • Issue assignment correctness.

    • Completion verification based on AI confidence score.

    • Fractional completion claims.

    • Unauthorized stake forfeiture handling.

Last updated