# Merkle Trees

| Status                    | Entrypoint                                                        |
| ------------------------- | ----------------------------------------------------------------- |
| In development on testnet | [dApp](https://docs.pantherprotocol.io/docs/panther-core/testnet) |

### Introduction

Panther’s [Shielded Pool](https://docs.pantherprotocol.io/docs/panther-core/panther-core/shielded-pool) architecture includes the following Merkle trees:

* [Bus](#bus-tree) processes UTXOs collectively by batching them
* [Taxi](#taxi-tree) processes UTXOs individually
* Ferry manages UTXO data in the multi-chain Panther ecosystem

In the dApp, users can choose between batched processing (taking the bus) and fast processing (taking the taxi) from the toggle available under the **Fee** section when submitting a transaction.

### Bus tree

Within the “Bus” tree, each leaf is a commitment to:

* An “asset” UTXO representing a [zAsset](https://docs.pantherprotocol.io/docs/panther-core/panther-core/overview) (or zNFTs) (essentially an “IOU” for the corresponding underlying collateral locked on the Panther Vault)
* “zAccount” UTXO, a record that keeps information about the owner of a zAccount

The name *Bus Tree* refers to the UTXOs being committed to the tree in batches of up to 64 UTXOs rather than individually. To get on the “bus”, a UTXO needs to be queued and wait until a [zMiner](https://docs.pantherprotocol.io/docs/ecosystem/ecosystem-operators/zminer) processes that queue.

The “bus” approach makes the process more cost-efficient as all UTXOs in a queue share processing costs. As such, the individual cost for a transaction per user is much lower. On the other hand, users are dependent on the zMiner to process the queue. Just as users of a blockchain incentivize miners to pick up their transactions by defining how much they are willing to pay for “gas”, Panther Protocol users define the reward (denominated in $zZKP) that they are willing to pay to the zMiner who processes their UTXOs.

### Taxi tree

Taxi tree has been released with [Stage 5](https://docs.pantherprotocol.io/docs/changelog/overview-1/stage-5) of the testnet dApp.

To avoid "waiting for the bus," the Taxi tree allows UTXOs to be processed individually to enable near-instant spending. This removes the wait time required to process a batch, with an extra cost tradeoff.
