> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chainstack.com/llms.txt
> Use this file to discover all available pages before exploring further.

# wallet/isshieldedtrc20contractnotespent | TRON

> TRON API method that checks whether a specific shielded TRC20 contract note has been spent. wallet/isshieldedtrc20contractnotespent on TRON via Chainstack.

TRON API method that checks whether a specific shielded TRC20 contract note has been spent. This method is crucial for preventing double-spending in shielded transactions and maintaining the integrity of the privacy protocol.

<Warning>
  All hex values (`ak`, `nk`, `rcm`) must be provided **without the 0x prefix** and must be exactly 64 hexadecimal characters (32 bytes). The `shielded_TRC20_contract_address` must be in **hex format** (starting with 41), not base58 format. The `value` represents the scaled value multiplied by the contract's scalingFactor.
</Warning>

## Parameters

* `note` — the note object to check for spending status
  * `value` — scaled value (multiplied by contract's scalingFactor)
  * `payment_address` — shielded payment address (ztron1 format)
  * `rcm` — random commitment trapdoor (64 hex characters, no `0x` prefix)
* `ak` — authorization key (64 hex characters, no `0x` prefix)
* `nk` — nullifier key (64 hex characters, no `0x` prefix)
* `position` — leaf position index in Merkle tree
* `shielded_TRC20_contract_address` — the shielded TRC20 contract address (hex format starting with 41, no `0x` prefix)

## Response

* `is_spent` — boolean indicating if the note has been spent (true = spent, false = unspent)

## Use case

The `wallet/isshieldedtrc20contractnotespent` method is used for:

* Preventing double-spending attacks in shielded transactions
* Validating that notes are available for spending before creating transactions
* Maintaining the security and integrity of the shielded transaction system
* Supporting wallet implementations that need to track note spending status

<Info>
  The nullifier key (nk) and authorization key (ak) are used together with the note's position in the Merkle tree to generate a unique nullifier for each note. This nullifier is checked to determine if the note has been spent, preventing double-spending while maintaining privacy. The note's value is scaled by the contract's scalingFactor to maintain precision in token amounts.
</Info>


## OpenAPI

````yaml openapi/tron_node_api/isshieldedtrc20contractnotespent.json post /95e61622bf6a8af293978377718e3b77/wallet/isshieldedtrc20contractnotespent
openapi: 3.0.0
info:
  title: wallet/isshieldedtrc20contractnotespent TRON API
  version: 1.0.0
  description: Check if shielded TRC20 contract notes have been spent
servers:
  - url: https://tron-mainnet.core.chainstack.com
security: []
paths:
  /95e61622bf6a8af293978377718e3b77/wallet/isshieldedtrc20contractnotespent:
    post:
      tags:
        - Shielded Contract Methods
      summary: wallet/isshieldedtrc20contractnotespent
      operationId: isShieldedTRC20ContractNoteSpent
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - note
                - ak
                - nk
                - position
                - shielded_TRC20_contract_address
              properties:
                note:
                  type: object
                  description: The note to check for spending status
                  required:
                    - value
                    - payment_address
                    - rcm
                  properties:
                    value:
                      type: integer
                      description: Scaled value (multiplied by contract's scalingFactor)
                      example: 40
                    payment_address:
                      type: string
                      description: Shielded payment address
                      example: >-
                        ztron1768kf7dy4qquefp46szk978d65eeua66yhr4zv260c0uzj68t3tfjl3en9lhyyfxalv4jus30xs
                    rcm:
                      type: string
                      description: >-
                        Random commitment trapdoor (64 hex characters, no 0x
                        prefix)
                      example: >-
                        296070782a94c6936b0b4f6daf8d7c7605a4374fe595b96148dc0f4b59015d0d
                ak:
                  type: string
                  description: Authorization key (64 hex characters, no 0x prefix)
                  example: >-
                    8072d9110c9de9d9ade33d5d0f5890a7aa65b0cde42af7816d187297caf2fd64
                nk:
                  type: string
                  description: Nullifier key (64 hex characters, no 0x prefix)
                  example: >-
                    590bf33f93f792be659fd404df91e75c3b08d38d4e08ee226c3f5219cf598f14
                position:
                  type: integer
                  description: Leaf position index in Merkle tree
                  example: 272
                shielded_TRC20_contract_address:
                  type: string
                  description: Shielded TRC20 contract address (hex format, no 0x prefix)
                  example: 41274fc7464fadac5c00c893c58bce6c39bf59e4c7
      responses:
        '200':
          description: Successfully checked nullifier spending status
          content:
            application/json:
              schema:
                type: object
                properties:
                  is_spent:
                    type: boolean
                    description: >-
                      Whether the note has been spent (true = spent, false =
                      unspent)
                    example: false

````