A Proof of Reserves (PoR) is an verified proof of all the assets held by a custodian. It is usually done by a trusted third party who may use a variety of methods to verify that the custodian has access to their reserve assets, including digital signatures and instructed movement of funds.

Liabilities are the total amount of assets owed to customers on a custodian’s balance sheet. If you deposit funds to an exchange, then the exchange’s liabilities increase by the same amount. An exchange’s assets should always be equal to or exceed their total liabilities, otherwise they might be insolvent. Proof-of-Liabilities is a review of the total assets owed to users. Independent Proof-of-Liabilities can be conducted using a Merkle Tree Proof.

A Merkle Tree is a privacy-preserving data structure that uses hash proofs to store and manage large datasets. It uses these hash functions to construct layers of nodes that build a tree-like structure with several layers of decreasing size, until only a single node remains. This node is called the Merkle Root.
A Merkle Tree allows any exchange user to independently and mathematically verify that his balances were included in the total sum of all liabilities that were made available to the trusted third party who issued the Proof-of-Reserves report. For more information about the code that were used to construct the Merkle Tree, and for detailed steps on doing your own client verification, visit Github.