marketing

Marketing materials (presentations, posters, flyers)
Log | Files | Refs

en.tex (24762B)


      1 \documentclass{article}
      2 \usepackage[margin=1in]{geometry}
      3 \usepackage[utf8]{inputenc}
      4 \usepackage{wrapfig}
      5 
      6 \usepackage{textcomp}
      7 \usepackage{xcolor}
      8 \usepackage{bytefield}
      9 \usepackage{tikz}
     10 \usetikzlibrary{positioning,fit}
     11 \usepackage{graphicx}
     12 \usepackage{url}
     13 \title{Project Depolymerization: \\
     14   Bitcoin Payments with GNU Taler}
     15 
     16 \begin{document}
     17 
     18 \author{Antoine d'Aligny \and Emmanuel Benoist \and Christian Grothoff}
     19 
     20 \maketitle
     21 
     22 \begin{abstract}
     23   GNU Taler is an electronic payment system implemented as Free Software. The
     24   Depolymerization of the Bern University of Applied Sciences (BFH) enables
     25   payments with blockchain-based cryptocurrencies using GNU Taler.  This
     26   article explains how to use the resulting payment system to efficiently and
     27   quickly pay with Bitcoin.
     28 \end{abstract}
     29 
     30 \section{Introduction}
     31 
     32 Today, popular cryptocurrencies like Bitcoin~\cite{nakamoto2008bitcoin} and
     33 Ethereum~\cite{ethereum} are not useful for electronic payments in everyday
     34 life (say to buy bread, pay for a beer or a snack in a vending machine).  For
     35 real-world payments, on-chain transactions are too slow, too expensive and the
     36 decentralized nature of blockchains does not allow transaction rates required
     37 in practice.
     38 
     39 GNU Taler is a centralized payment system that allows privacy-preserving
     40 payments to be settled within milliseconds at minimal cost.  By combining
     41 the GNU Taler payment system with a blockchain, GNU Taler can address key
     42 performance and privacy limitations of blockchains.
     43 Figure~\ref{fig:offchain} shows the resulting architecture where GNU Taler
     44 serves as a layer-2 solution over a blockchain.
     45 
     46 \begin{figure}[hb]
     47     \begin{center}
     48         \input{figures/settlement_layer.tex}
     49     \end{center}
     50     \caption{Blockchain settlement layer with Depolymerization.}\label{fig:offchain}
     51 \end{figure}
     52 
     53 GNU Taler exchanges are expected to be operated by regulated payment service
     54 providers that can be trusted because they are audited in real-time.  Today,
     55 no such a regulated entity exists. To nevertheless enable experimentation with
     56 the technology, Prof. Benoist is operating an experimental exchange at {\tt
     57   https://bitcoin.ice.bfh.ch/} as a research project.  While the general
     58 public is at liberty to use the system, there is no warranty that the
     59 generated Bitcoin Taler coins will be redeemed as the university reserves the
     60 right to shut down the system at any time for any reason without enabling
     61 users to recover their assets.
     62 
     63 \section{Withdrawing Bitcoin}
     64 
     65 To begin using GNU Taler for Bitcoin payments, users need to install a GNU
     66 Taler wallet. Wallets are available from {\tt https://wallet.taler.net/}
     67 for various platforms and as extensions for various browsers.  We will
     68 largely focus on the user experience for the Android wallet, as in most
     69 cases the user experience is quite similar for the other implementations.
     70 
     71 \subsection{Adding the Bitcoin exchange}
     72 
     73 The experimental Bitcoin exchange operated by BFH is not in the default list
     74 of exchanges supported by a GNU Taler wallet. Thus, users must first add the
     75 exchange. To do so, we need to open the ``Settings'' dialog, as shown in
     76 Figures~\ref{fig:mainmenu:hamburger} and~\ref{fig:mainmenu:settings}.
     77 
     78 \begin{figure}[h!]
     79 \begin{center}
     80 \includegraphics[width=0.3\textwidth]{Screenshots/Screenshot_20221121-210438.png}
     81 \end{center}
     82 \caption{To withdraw Bitcoin, you must first select the main menu, using the
     83   ``hamburger'' icon in the main ``Balances'' view.}
     84 \label{fig:mainmenu:hamburger}
     85 \end{figure}
     86 
     87 \begin{figure}[h!]
     88 \begin{center}
     89 \includegraphics[width=0.3\textwidth]{Screenshots/Screenshot_20221121-210443.png}
     90 \end{center}
     91 \caption{In the main menu, select ``Settings''.}
     92 \label{fig:mainmenu:settings}
     93 \end{figure}
     94 
     95 In the ``Settings'' menu, the ``Exchanges'' entry can then be selected
     96 to inspect and modify the list of GNU Taler exchanges the wallet is
     97 configured to use.  To add the BFH exchange, select the ``+''
     98 button and add the respective URL as shown in Figure~\ref{fig:exchange:add}.
     99 
    100 %\begin{figure}
    101 %\begin{center}
    102 %\includegraphics[width=0.3\textwidth]{Screenshots/Screenshot_20221121-210448.png}
    103 %\end{center}
    104 %\caption{In ``Settings'', select ``Exchanges'' to view the list of Taler exchange providers.}
    105 %\end{figure}
    106 
    107 \begin{figure}[h!]
    108 \begin{center}
    109 \includegraphics[width=0.3\textwidth]{Screenshots/Screenshot_20221121-210513.png}
    110 \end{center}
    111 \caption{Unless already present, use the ``+'' button to add a Bitcoin exchange. We
    112   use {\tt bitcoin.ice.bfh.ch} which is the only Depolymerization operator we are
    113   aware of at this time.}
    114 \label{fig:exchange:add}
    115 \end{figure}
    116 
    117 The Taler shorthand for the ``mainnet'' Bitcoin currency is ``BITCOINBTC''
    118 (instead of just ``BTC''), as the Bitcoin ``testnet'' also uses ``BTC'' and
    119 thus the two currencies might be confused, especially given that within
    120 GNU Taler, the underlying Bitcoin addresses are not visible.
    121 
    122 %\begin{figure}
    123 %\begin{center}
    124 %\includegraphics[width=0.3\textwidth]{Screenshots/Screenshot_20221121-210559.png}
    125 %\end{center}
    126 %\caption{If done correctly, an exchange for ``BITCOINBTC'' should now be in the list.
    127 %  GNU Taler uses ``BITCOINBTC'' instead of just ``BTC'' to avoid confusion with
    128 %  the worthless ``TESTNETBTC''.}
    129 %\end{figure}
    130 
    131 \subsection{Adding BITCOINBTC to the Taler wallet}
    132 
    133 To move Bitcoins from a Bitcoin wallet to a Taler wallet,
    134 one starts with the menu reachable from the three horizontal dots next to the Bitcoin exchange and selects the
    135 ``Withdraw'' operation (Figure~\ref{fig:menu:withdraw}).
    136 
    137 \begin{figure}[h!]
    138 \begin{center}
    139 \includegraphics[width=0.3\textwidth]{Screenshots/Screenshot_20221121-210606.png}
    140 \end{center}
    141 \caption{By clicking the three dots next to the Bitcoin exchange, we get the menu
    142   to ``Withdraw'' bitcoins. Here, ``withdraw'' means to transfer BTC from a
    143   Bitcoin wallet to a Taler wallet.}
    144 \label{fig:menu:withdraw}
    145 \end{figure}
    146 
    147 Afterwards, the wallet will ask for the amount of BTC
    148 that the user wants to withdraw (Figure~\ref{fig:withdraw:amount})
    149 and ask for the user to agree to the terms of service
    150 of the Taler exchange operator.
    151 
    152 \begin{figure}[h!]
    153 \begin{center}
    154 \includegraphics[width=0.3\textwidth]{Screenshots/Screenshot_20221121-210626.png}
    155 \end{center}
    156 \caption{Specify the amount of (BITCOIN)BTC that you want to withdraw.}
    157 \label{fig:withdraw:amount}
    158 \end{figure}
    159 
    160 GNU Taler exchange operators can also charge transaction fees,
    161 just like Bitcoin miners or banks.  GNU Taler wallets show
    162 applicable fees for every operation before allowing the user
    163 to proceed with the transaction.  Figure~\ref{fig:withdraw:fees}
    164 shows a Taler wallet showing the fees for the withdraw operation.
    165 
    166 \begin{figure}[h!]
    167 \begin{center}
    168 \includegraphics[width=0.3\textwidth]{Screenshots/Screenshot_20221121-210653.png}
    169 \end{center}
    170 \caption{The Taler wallet will show applicable exchange fees before starting the
    171   actual process. Note that these fees do not include the on-chain transaction fees of the
    172   Bitcoin blockchain.}
    173 \label{fig:withdraw:fees}
    174 \end{figure}
    175 
    176 After the user agreed to the terms of service and the fees, the wallet
    177 internally sets up the withdraw process and shows instructions for how to
    178 transfer Bitcoins to the Taler exchange operator to top-up the Taler wallet
    179 (Figure~\ref{fig:withdraw:instructions}).  The Bitcoin transfer is a bit
    180 unusual, as the Deploymerization project encodes the access key of the Taler
    181 wallet in two fake Bitcoin addresses, while the actual transfer to the Bitcoin
    182 Taler exchange operator happens in a third address.  Thus, users need to copy
    183 the three lines with amounts and Bitcoin target addresses into their clipboard
    184 and from there import them into their Bitcoin wallet (see
    185 Figure~\ref{fig:bitcoin:import}).
    186 
    187 \begin{figure}[h!]
    188 \begin{center}
    189 \includegraphics[width=0.3\textwidth]{Screenshots/Screenshot_20221121-210709.png}
    190 \end{center}
    191 \caption{This is is the information needed for the Bitcoin wallet to make the
    192   on-chain wire transfer to send Bitcoins to your Taler wallet. You should copy
    193   this information into your Bitcoin wallet. If the Bitcoin wallet runs on the
    194   same device ``Open in banking app'' may work (if the Bitcoin wallet supports it).}
    195 \label{fig:withdraw:instructions}
    196 \end{figure}
    197 
    198 We will now show how to complete the operation using the Electrum wallet.
    199 The first step is to open the Electrum wallet and open the screen to
    200 ``Send'' funds (Figure~\ref{fig:electrum:send}).
    201 
    202 \begin{figure}[h!]
    203 \begin{center}
    204 \includegraphics[width=0.6\textwidth]{Screenshots/ScreenShot-2022-11-22_14.17.37.png}
    205 \end{center}
    206 \caption{Using your Bitcoin wallet (here: Electrum), you now need to send BTC to
    207   the Taler exchange to obtain BITCOINBTC in your Taler wallet.}
    208 \label{fig:electrum:send}
    209 \end{figure}
    210 
    211 Next, one needs to tell Electrum that the payment will go to multiple
    212 recipients. This requires using the ``Pay to many'' option in the
    213 menu (Figure~\ref{fig:electrum:many}).
    214 
    215 \begin{figure}[h!]
    216 \begin{center}
    217 \includegraphics[width=0.3\textwidth]{Screenshots/ScreenShot-2022-11-22_14.17.44.png}
    218 \end{center}
    219 \caption{When sending the funds, use the ``Pay to many'' option in the menu to be
    220   allowed to enter multiple recipients.}
    221 \label{fig:electrum:many}
    222 \end{figure}
    223 
    224 Once the ``Pay to many'' option has been activated, the three lines from the
    225 GNU Taler wallet can be pasted into the address field
    226 (Figure~\ref{fig:bitcoin:import}).  Electrum expects amounts in mBTC, while
    227 the lines generated by GNU Taler used BTC.  Hence, all amounts must be
    228 multiplied by 1000 and the ``BTC'' unit should be removed. Also, Electrum
    229 expects the lines in CSV format, thus commas need to be added between the
    230 addresses and the amounts.
    231 
    232 \begin{figure}[h!]
    233 \begin{center}
    234 \includegraphics[width=0.6\textwidth]{Screenshots/ScreenShot-2022-11-22_14.19.45.png}
    235 \end{center}
    236 \caption{Now you can import the three destinations that were generated by the GNU Taler
    237   wallet.  Note that Electrum expects the amounts to be specified in mBTC, while
    238   GNU Taler generated the amounts in BTC.
    239   Future versions of the Taler wallet may support the Electrum syntax directly.}
    240 \label{fig:bitcoin:import}
    241 \end{figure}
    242 
    243 The last step is then to confirm the transaction to Electrum
    244 and to provide Electrum with the passphrase (Figure~\ref{fig:electrum:pass}).
    245 
    246 \begin{figure}[h!]
    247 \begin{center}
    248 \includegraphics[width=0.3\textwidth]{Screenshots/ScreenShot-2022-11-22_14.20.32.png}
    249 \end{center}
    250 \caption{As usual, you need to unlock your Electrum wallet with your passphrase and
    251   specify how much you are willing to pay in terms of transaction fees.}
    252 \label{fig:electrum:pass}
    253 \end{figure}
    254 
    255 Afterwards, Electrum will show a final confirmation screen. Here, the two 234
    256 Satoshi transactions are used to encode which Taler wallet should receive the
    257 funds, while the main output goes to the Taler exchange to hold the funds in
    258 escrow. The fourth output is your remaining balance.  It will then take a few
    259 hours (or possibly days, if the Bitcoin transaction fee offered was low) for
    260 the Bitcoins to arrive at the Taler exchange. During that time, the GNU Taler
    261 wallet will show the transaction as ``pending''.  Once the Bitcoins have
    262 arrived at the Taler exchange operator, the wallet will withdraw the coins and
    263 show that the ``withdraw'' operation has completed.
    264 
    265 %\begin{figure}
    266 %\begin{center}
    267 %\includegraphics[width=0.6\textwidth]{Screenshots/ScreenShot-2022-11-22_14.22.44.png}
    268 %\end{center}
    269 %\caption{The final transaction should look like this. Here, the two 234 Satoshi transactions
    270 %  are used to encode which Taler wallet should receive the funds, while the main output goes
    271 %  to the Taler exchange to hold the funds in escrow. The fourth output is your remaining
    272 %  balance.}
    273 %\end{figure}
    274 
    275 \section{Making Peer-to-Peer payments}
    276 
    277 This section describes how to transact directly between Taler wallets.  It is
    278 possible to either create a QR code to send money to another wallet, or to
    279 create a QR code that allows the recipient to pay the sender.
    280 
    281 \subsection{Sending money}
    282 
    283 To send money, select the ``send funds'' button just next to the current
    284 balance (Figure~\ref{fig:p2p:menu}). If a wallet contains multiple currencies,
    285 one needs to first select the desired currency.
    286 
    287 \begin{figure}[h!]
    288 \begin{center}
    289 \includegraphics[width=0.6\textwidth]{Screenshot_2023-06-23-13-35-34-228_net.taler.wallet.jpg}
    290 \end{center}
    291 \caption{The buttons for peer-to-peer payments are next to the balance on the
    292   screen with the transaction history.}
    293 \label{fig:p2p:menu}
    294 \end{figure}
    295 
    296 Next, the wallet will ask for the amount to send, and ask for the destination
    297 (Figure~\ref{fig:p2p:amount}).  Sending back ``to a bank account'' will be
    298 discussed in Section~\ref{sec:to_chain}, for peer-to-peer payments select ``to
    299 another wallet''.
    300 
    301 \begin{figure}[h!]
    302 \begin{center}
    303 \includegraphics[width=0.6\textwidth]{Screenshot_2023-06-23-13-36-07-426_net.taler.wallet.jpg}
    304 \end{center}
    305 \caption{Next you will need to specify where to send the funds, and to whom. FIXME:
    306     this screen is changing as it will be split into two in the next version!}
    307 \label{fig:p2p:amount}
    308 \end{figure}
    309 
    310 % The wallet will now show the applicable fees.  FIXME: not implemented!
    311 
    312 Finally, a purpose for the transfer must be specified
    313 (Figure~\ref{fig:p2p:subject}). This is basically the summary message that
    314 will be shown in the transaction history (of both parties) for this
    315 transaction.
    316 
    317 \begin{figure}[h!]
    318   \begin{center}
    319 % FIXME: fees not shown!
    320 %\includegraphics[width=0.6\textwidth]{}
    321 \end{center}
    322 \caption{The buttons for peer-to-peer payments are next to the balance on the
    323   screen with the transaction history.}
    324 \label{fig:p2p:subject}
    325 \end{figure}
    326 
    327 Once all of the information has been specified, the wallet will show a QR code
    328 that the recipient must scan to receive the funds. It is also possible to copy
    329 the URL encoded in the QR code to the clipboard to exchange it via some secure
    330 messaging application.  Note that the first person to scan the code or enter
    331 the URL will receive the funds.
    332 
    333 To scan the QR code, the recipient must use the QR code button in the bottom
    334 right corner of the Taler wallet app. To enter a URL or paste one from a
    335 clipboard, hold the QR code button to get to the ``Enter Taler URI'' dialog
    336 (Figure~\ref{fig:qr:entry}).
    337 
    338 \begin{figure}[h!]
    339   \begin{center}
    340 %\includegraphics[width=0.6\textwidth]{}
    341 \end{center}
    342 \caption{Entering a Taler payment URL into the Android wallet requires briefly
    343   holding the QR code button.}
    344 \label{fig:qr:entry}
    345 \end{figure}
    346 
    347 After scanning the QR code or pasting the URL the wallet will show the
    348 purpose and amount of the payment and allow the user to confirm the action
    349 before proceeding.
    350 
    351 % FIXME: fees not shown!
    352 \begin{figure}[h!]
    353 \begin{center}
    354 %\includegraphics[width=0.6\textwidth]{}
    355 \end{center}
    356 \caption{Entering a Taler payment URL into the Android wallet requires briefly
    357   holding the QR code button.}
    358 \label{fig:qr:accept}
    359 \end{figure}
    360 
    361 
    362 \subsection{Sending invoices}
    363 
    364 To send money, select the ``receive funds'' button just next to the current
    365 balance (Figure~\ref{fig:p2p:menu}).  The remaining dialogs mirror the
    366 process for sending money, except that this time the direction of the
    367 transfer is reversed.
    368 
    369 % FIXME: expand once we have invoice attestation!
    370 
    371 \section{Paying Taler-enabled merchants}
    372 
    373 The GNU Taler merchant backend makes it easy to accept GNU Taler payments as
    374 part of an e-commerce site or at a point-of-sale.  In contrast to the
    375 peer-to-peer payments described above, accepting payments with the merchant
    376 backend always results in the money being transfer to the merchant using the
    377 real-time gross settlement (RTGS) layer underpinning transactions in the
    378 currency. In case of Bitcoin, this means that the merchant will always receive
    379 the money on-chain in their Bitcoin wallet as a UTXO.
    380 
    381 \subsection{Payment aggregation}
    382 
    383 As on-chain (or even traditional banking RTGS) transactions are expensive,
    384 the GNU Taler exchange does not trigger such a transfer for each GNU Taler
    385 transaction, but only at a frequency determined by the merchant backend.
    386 Three settings primarily affect when such a transfer will happen:
    387 \begin{itemize}
    388 \item The wire transfer fee set by the exchange. As the transfer is expensive,
    389   the exchange charges a fee, but will not execute transfers if the fee is
    390   larger than the amount to be transferred.
    391 \item The refund deadline. GNU Taler allows a merchant to give a customer a
    392   refund until the refund deadline, which is part of the contract between
    393   customer and merchant.  As refunds are not possible after the exchange
    394   has send the money to the merchant, any transfers to the merchant happen
    395   {\bf after the refund deadline} set by the merchant in the contract.
    396 \item The wire deadline. The wire deadline must be after the refund deadline
    397   and specifies the latest time by which the merchant wants to receive the
    398   funds. Thus, the exchange will execute the transfer {\bf before the wire deadline}.
    399 \end{itemize}
    400 
    401 When any outstanding payment hits the wire deadline, the exchange will
    402 sum up all other payments to the same merchant that are past the refund
    403 deadline and wire the total amount (minus the wire fee) to the merchant.
    404 
    405 
    406 \subsection{Configuring the merchant backend}
    407 
    408 To setup a merchant backend, you first need to install the {\tt
    409   taler-merchant-httpd} backend. This is described for various platforms in
    410 the GNU Taler merchant
    411 manual.\footnote{\url{https://docs.taler.net/taler-merchant-manual.html}}
    412 To configure the system for Bitcoin, you need to set the currency:
    413 \begin{verbatim}
    414 $ taler-config -s TALER -o CURRENCY -V BITCOINBTC
    415 \end{verbatim}
    416 Furthermore, you need to tell the backend to trust the respective
    417 exchange:
    418 \begin{verbatim}
    419 $ taler-config -s merchant-exchange-benoist \
    420   -o CURRENCY -V BITCOINBTC
    421 $ taler-config -s merchant-exchange-benoist \
    422   -o EXCHANGE_BASE_URL -V https://bitcoin.ice.bfh.ch/
    423 $ taler-config -s merchant-exchange-benoist \
    424   -o MASTER_KEY -V YCWD4QXP607YDZ47NF40MZ6BNMKNFKPECD6JYMTTMTAANZ6C7W00
    425 \end{verbatim}
    426 
    427 It is possible to support multiple exchanges in the same currency by varying
    428 the section name, as long as the section prefix is ``merchant-exchange-''.
    429 
    430 \begin{figure}[h!]
    431 \begin{center}
    432 %\includegraphics[width=0.6\textwidth]{}
    433 \end{center}
    434 \caption{The Taler Backoffice application with the page to configure
    435   the key settings for an e-commerce site or point-of-sale.}
    436 \label{fig:spa:settings}
    437 \end{figure}
    438 
    439 Assuming everything else was setup correctly, the rest of the configuration
    440 can be done with the browser (Figure~\ref{fig:spa:settings}).  Configuring the
    441 instance under ``Settings'' should be largely straightforward.  The only
    442 special setting is that under ``Bank account'' you need to specify ``bitcoin''
    443 as the ``Target type'' and enter your Bitcoin wallet address under
    444 ``Address''. The ``Name'' should be set to a human-readable identifier of the
    445 owner of the wallet; however, it is not checked or used in the on-chain
    446 transfer.
    447 
    448 The ``Default max deposit fee'' refers to the exchange's per-coin deposit
    449 fees.  The merchant backend will agree to pay up to this amount in fees for
    450 any transaction. This is, however, merely a default: the frontend can override
    451 the deposit fee the merchant is willing to cover each time it creates an
    452 order. If the actual deposit fees are higher, the customer will be asked to
    453 cover the excess deposit fees.
    454 
    455 The ``Default max wire fee'' is not a hard cap on the wire fee to be paid to
    456 the exchange. Instead, if the wire fee charged by the exchange is higher, the
    457 merchant backend will ask the customer to cover a fraction of the excess fee,
    458 as determined by the ``Default wire fee amortization'' setting.
    459 
    460 The ``Default wire transfer delay'' corresponds to the ``Wire deadline''
    461 mentioned above. If a specific contract from the frontend does not include a
    462 ``Wire deadline'' the ``Wire deadline'' will be automatically set to the
    463 current time plus the ``Default wire transfer delay'' by the merchant backend.
    464 
    465 \subsection{Creating an order}
    466 
    467 You can setup a new order using the backend Web interface or using the GNU
    468 Taler merchant REST
    469 API.\footnote{\url{https://docs.taler.net/core/api-merchant.html}} The GNU
    470 Taler Merchant API
    471 tutorial\footnote{\url{https://docs.taler.net/taler-merchant-api-tutorial.html}}
    472 provides a tutorial for using the REST API. Here we will just use the backend
    473 Web interface. Select the ``Orders'' tab to get a list of the current set of
    474 orders for this merchant. Clicking on the blue ``+'' icon launches the dialog
    475 for setting up a new order (Figure~\ref{fig:spa:order}).
    476 
    477 \begin{figure}[h!]
    478 \begin{center}
    479 %\includegraphics[width=0.6\textwidth]{}
    480 \end{center}
    481 \caption{The Taler Backoffice application with the page to configure
    482   the key settings for an e-commerce site or point-of-sale.}
    483 \label{fig:spa:order}
    484 \end{figure}
    485 
    486 Only the order price and a human-readable summary to be shown to the buyer are
    487 required. Once an order has been created it will appear in the order
    488 list. Clicking on it will show the order details. To get a customer to pay for
    489 it, you can either redirect the user to the ``Order status URL'' given on that
    490 page, or pass the ``Payment URL'' to the wallet (e.g. via clipboard, NFC or QR
    491 code).  Naturally, in practice, the e-commerce frontend or point-of-sale
    492 system would use the REST API to automatically setup an order and hand the
    493 resulting URL to the customer's wallet.
    494 
    495 
    496 \subsection{Making the payment}
    497 
    498 From the user's perspective, paying a Taler-enabled merchant is very similar
    499 to paying a peer-to-peer invoice, in that the user needs to scan the QR code,
    500 check the amount and purpose of the payment, and hit the confirm button.  With
    501 the WebExtension wallet, the process can be even further simplified: after
    502 granting the wallet the permission to ``Automatically open wallet based on
    503 page content'' in the settings, Web pages can directly transition into the
    504 wallet payment dialog without ever showing a QR code or asking the user to
    505 explicitly open the Taler wallet.  Note that it is also possible to make
    506 payments on Web sites opened in a browser on a desktop with a mobile wallet
    507 running on a different device.
    508 
    509 \section{Going back onto the chain} \label{sec:to_chain}
    510 
    511 Last but not least, it is possible to transfer the BITCOINBTC from the Taler
    512 wallet back to a Bitcoin wallet, effectively moving the funds out of the Taler
    513 payment system and back onto the chain.
    514 
    515 The process is started via the ``send funds'' button next to the current
    516 balance (Figure~\ref{fig:p2p:menu}).  When the wallet asks for the amount to
    517 send and the destination (Figure~\ref{fig:p2p:amount}, sending the money to a
    518 Bitcoin wallet corresponds to the ``to a bank account'' action, as in Bitcoin,
    519 the equivalent of a bank account is an actual native Bitcoin wallet.
    520 
    521 % FIXME: maybe change text shown for bitcoin?
    522 % FIXME: current Android wallet dialog for sending funds back onto chain is broken!
    523 
    524 
    525 \section{Future work}
    526 
    527 In the future, GNU Taler could be combined with technologies like the
    528 Lightning~\cite{lightening} network to create a federation of GNU Taler
    529 exchanges.  This would likely address open challenges for Lightening in terms
    530 of scalability and availability.  The main work required here is to add
    531 support for federation to the GNU Taler payment system.
    532 
    533 \section{Future work}
    534 
    535 As described, the current system requires trust in the Taler exchange
    536 operator. In banking, this trust is usually established by the operator being
    537 a regulated entity.  However, the existing system is NOT supervised by any
    538 regulator and there is no depost insurance.\footnote{More specifically, the
    539 deployment is a research prototype and all funds sent to the exchange are
    540 considered to be a donation to the research group. The research group may use
    541 the funds to make payments to third parties as specified above, or terminate
    542 the system at any time for any reason. Specifically, holders of the respective
    543 coins do not have a legal rights to any funds held by the research group.}
    544 
    545 While possible with GNU Taler, the existing system does not perform any kind
    546 of KYC or AML checks. As pointed out in our paper~\cite{depo2022}, the
    547 non-fungible nature of Bitcoin creates challenges for any regulated operator.
    548 Future business and legal work is required to overcome these challenges if
    549 this type of system were to be operated commercially.
    550 
    551 \section{Conclusion}
    552 
    553 We have described how GNU Taler can be used as a layer-2 solution on top of
    554 Bitcoin to facilitate inexpensive and virtually instant transactions, both
    555 between GNU Taler wallets and between customer wallets and merchants. The
    556 system supports the use of cryptographically secured microtransactions
    557 off-chain with large transactions on-chain when withdrawing or paying out to
    558 merchants.
    559 
    560 
    561 \bibliographystyle{alpha}
    562 \bibliography{taler,ui}
    563 
    564 \end{document}