Bitcoin Depolymerizer Limitations

10.2. Bitcoin Depolymerizer Limitations#

The Bitcoin blockchain operates differently from fiat currencies and traditional bank accounts. Consequently, certain design choices must be made to integrate it with GNU Taler.

10.2.1. Creditor Address#

In the GNU Taler model, accounts are unique, and transactions occur between a unique creditor and a unique debtor account.

Because Bitcoin aims to provide a form of pseudonymization, it does not follow this one-to-one model. We use a single Bitcoin address as the identifier for a unique account. To fit the Taler model, we must designate one of the transaction inputs (vin) as the debtor. We always consider the first input of the transaction as the incoming source, and the corresponding scriptPubKey of that input’s origin vout as the debtor account.

If you want to perform KYC verification to prove ownership of a Bitcoin address, you must manually create a transaction that uses the corresponding address as the first input.

10.2.2. Boucing transactions#

When a withdrawal is malformed, an adapter should attempt to return the funds to the debtor. We have chosen to implement this logic for depolymerizer-bitcoin, even though it is not a perfect solution.

Under this logic, we return all funds to the address we identified as the debtor (the first input). If you share an address with other users (which is common on third-party platforms or exchanges), it may be difficult for you to identify the returned funds as yours.