{
  "type": "object",
  "title": "RosettaCoinChange",
  "description": "CoinChange is used to represent a change in state of a some coin identified by a coin_identifier. This object is part of the Operation model and must be populated for UTXO-based blockchains. Coincidentally, this abstraction of UTXOs allows for supporting both account-based transfers and UTXO-based transfers on the same blockchain (when a transfer is account-based, don't populate this model).",
  "required": ["coin_identifier", "coin_action"],
  "additionalProperties": false,
  "properties": {
    "coin_identifier": {
      "type": "object",
      "description": "CoinIdentifier uniquely identifies a Coin.",
      "required": ["identifier"],
      "properties": {
        "identifier": {
          "type": "string",
          "description": "Identifier should be populated with a globally unique identifier of a Coin. In Bitcoin, this identifier would be transaction_hash:index."
        }
      }
    },
    "coin_action": {
      "type": "string",
      "description": "CoinActions are different state changes that a Coin can undergo. When a Coin is created, it is coin_created. When a Coin is spent, it is coin_spent. It is assumed that a single Coin cannot be created or spent more than once.",
      "enum": ["coin_created", "coin_spent"]
    }
  }
}
