# Note

A note represents some value of a particular asset attached to an owner's address (related to a shielded account) who has the authority to spend it. A user can zero or more notes in their shielded account. The asset balance of a shielded account is simply the sum of the values of all notes of that asset.

In our protocol, a Note is a tuple of multiple items:

* `assetId`: Identifier for the asset (ETH, WBTC, MATIC, etc.) this note represents the value of.
* `value`: Value or amount the note represents.
* `leafIndex`: The leaf index of the commitment merkle tree where this note will be inserted.
* `blinding`: A random blinding factor.
* `rootAddress`: The root address of a user having the authority to spend it.
* `revoker`: The chosen revoker's public key point.

```typescript

 return new Note({
      assetId,
      value,
      leafIndex,
      blinding,
      rootAddress: account.rootAddress,
      revoker: tx.revoker,
    });

```

All the notes to ever exist have their commitments stored in a data structure called [Merkle tree](https://labyrinth.gitbook.io/veilnyx/technical-implementation/core-architecture/merkle-tree). This is essential for bookkeeping as will be clear in the next sections.

The so-called `commitment` of a note is defined Poseidon hash of:

```typescript
commitment = H(assetId, owner, value)
```

where `owner` is the [blinded address](https://labyrinth.gitbook.io/veilnyx/shielded-address#blinded-address) generated using the `blinding` of the note:

`owner = H(rootAddress, revoker.x, revoker.y, blinding)`
