Andamio Logo
Protocol/Protocol V2/Transactions/Project/Owner/Contributor Blacklist

Contributor Blacklist Manage

Add or remove contributors from a project's blacklist

Project Owner Contributor Blacklist Manage

Add or remove contributors from a project's blacklist by updating the project state UTxO.

API Endpoint

POST /v2/tx/project/owner/contributor-blacklist/manage

Cost Summary

Cost TypeAmountNotes
Transaction Fee~0.34 ADANetwork fee
Protocol FeeNoneNo protocol fee for blacklist management
Total Wallet Delta~0.34 ADATransaction fee only

Request Body

{
  "alias": "james",
  "project_id": "1454468edf80c69f84314b689f56e2fc25aca385aecb037a912a5aba",
  "aliases_to_add": ["user1"],
  "aliases_to_remove": []
}
FieldTypeRequiredDescription
aliasstringYesOwner's access token alias
project_idstringYesProject NFT policy ID (56 char hex)
aliases_to_addstring[]YesAliases to blacklist (empty = none)
aliases_to_removestring[]YesAliases to un-blacklist (empty = none)

Transaction Pattern

Spend and Recreate with Observer — No minting. Consumes and recreates UTxOs with updated datum. An observer validates the operation via withdrawal.

┌─────────────────────────────────────────────────────────────────┐
│             CONTRIBUTOR BLACKLIST MANAGE TRANSACTION             │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  INPUTS                          OUTPUTS                        │
│  ──────                          ───────                        │
│  ┌─────────────────┐            ┌─────────────────┐            │
│  │ LocalStateNFT   │───────────▶│ LocalStateNFT   │            │
│  │ (project NFT)   │  SPEND     │ (unchanged)     │            │
│  └─────────────────┘            └─────────────────┘            │
│                                                                 │
│  ┌─────────────────┐            ┌─────────────────┐            │
│  │ Project State   │───────────▶│ Project State   │            │
│  │ (blacklist)     │  SPEND     │ (UPDATED list)  │            │
│  └─────────────────┘            └─────────────────┘            │
│                                                                 │
│  ┌─────────────────┐            ┌─────────────────┐            │
│  │ Wallet          │───────────▶│ User Wallet     │            │
│  │ (u-token + ADA) │            │ (u-token +      │            │
│  └─────────────────┘            │  change)        │            │
│                                  └─────────────────┘            │
│  OBSERVER                                                       │
│  ────────                                                       │
│  project-state-observer (via withdrawal, 0 ADA)                 │
│                                                                 │
│  NO MINTING                                                     │
│  NO PROTOCOL FEE                                                │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Inputs

InputTypeValidatorDescription
LocalStateNFTScriptlocal-state-nft-validatorProject NFT (spent with projectId redeemer)
Project StateScriptproject-state-validatorProject state UTxO (spent to update blacklist)
Access TokenWallet-Owner's u-token for authorization
Wallet UTxOsWallet-ADA for fees

Outputs (3)

OutputValidatorValueDescription
LocalStateNFTlocal-state-nft-validator~1.24 ADA + NFTRecreated unchanged
Project Stateproject-state-validator~1.47 ADA + tokenUpdated blacklist
User Walletwalletu-token + changeAccess token returned

Datum Changes

The project state datum is updated:

Before:

Constructor 0:
├── projectId: <28 bytes hex>
├── blacklist: []
└── metadata: ""

After:

Constructor 0:
├── projectId: <28 bytes hex>
├── blacklist: ["user1"]
└── metadata: ""

Redeemers

ScriptRedeemer
local-state-nft-validator{ bytes: "<projectId>" }
project-state-validator{ constructor: 0, fields: [] } (empty — action determined by observer)

Observer

The project-state-observer validates the blacklist update via a withdrawal:

ObserverRedeemerAmount
project-state-observer{ constructor: 1, fields: [projectId, stakeCredHash] }0 ADA

Reference Inputs

RefDescription
Script reference for project-state-observerObserver validation script
Script reference for local-state-nft-validatorNFT validation script

Key Notes

  • No protocol fee — Unlike project creation and manager management, blacklist updates are free (transaction fee only)
  • Uses an observer for validation (unlike managers manage which uses direct spend)
  • Blacklisted contributors cannot accept tasks, submit work, or claim rewards in this project
  • Owner is identified by their access token

See Also