Skip to main content
POST
/
95e61622bf6a8af293978377718e3b77
/
wallet
/
isshieldedtrc20contractnotespent
wallet/isshieldedtrc20contractnotespent
curl --request POST \
  --url https://tron-mainnet.core.chainstack.com/95e61622bf6a8af293978377718e3b77/wallet/isshieldedtrc20contractnotespent \
  --header 'Content-Type: application/json' \
  --data '{
  "note": {
    "value": 40,
    "payment_address": "ztron1768kf7dy4qquefp46szk978d65eeua66yhr4zv260c0uzj68t3tfjl3en9lhyyfxalv4jus30xs",
    "rcm": "296070782a94c6936b0b4f6daf8d7c7605a4374fe595b96148dc0f4b59015d0d"
  },
  "ak": "8072d9110c9de9d9ade33d5d0f5890a7aa65b0cde42af7816d187297caf2fd64",
  "nk": "590bf33f93f792be659fd404df91e75c3b08d38d4e08ee226c3f5219cf598f14",
  "position": 272,
  "shielded_TRC20_contract_address": "41274fc7464fadac5c00c893c58bce6c39bf59e4c7"
}'
{
  "is_spent": false
}
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.
Get you own node endpoint todayStart for free and get your app to production levels immediately. No credit card required.You can sign up with your GitHub, X, Google, or Microsoft account.
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.

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
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.

Body

application/json
note
object
required

The note to check for spending status

ak
string
required

Authorization key (64 hex characters, no 0x prefix)

Example:

"8072d9110c9de9d9ade33d5d0f5890a7aa65b0cde42af7816d187297caf2fd64"

nk
string
required

Nullifier key (64 hex characters, no 0x prefix)

Example:

"590bf33f93f792be659fd404df91e75c3b08d38d4e08ee226c3f5219cf598f14"

position
integer
required

Leaf position index in Merkle tree

Example:

272

shielded_TRC20_contract_address
string
required

Shielded TRC20 contract address (hex format, no 0x prefix)

Example:

"41274fc7464fadac5c00c893c58bce6c39bf59e4c7"

Response

200 - application/json

Successfully checked nullifier spending status

is_spent
boolean

Whether the note has been spent (true = spent, false = unspent)

Example:

false