2024-08: GNU Taler v0.13 released
We are happy to announce the release of GNU Taler v0.13.
We have addressed over 100 individual issues, our bug tracker has the full list. Notable changes include:
- NEW: Significantly enhanced AML and KYC process support
- NEW: First version of real-time auditor
- NEW: Support for SEPA Instant credit transfers in libeufin
- NEW: Support for Cashless2ecash
- NEW: Debian packages for ARM64
- Various minor bugfixes, user experience and documentation improvements
Our AML/KYC work was partially funded by NLnet grant 2022-08-058. Our work is co-funded by the European Commission and the Swiss State Secretariat for Education, Research and Innovation (SERI) as part of the NGI TALER project.
KYC/AML code and documentation
The new KYC/AML functionality has code sprinkled all over the place, so here is an overview of where you find the main components:
- The Exchange KYC/AML Operator Manual is a new manual documenting the exchange setup for KYC and AML processes
- In our Taler KYC design document we documented our requirements analysis and the high-level the design.
- The taler.conf man page documents various new configuration options related to AML and KYC processes.
- The Taler Wire Gateway HTTP API was extended with a new IncomingKycAuthTransaction type that is used to demonstrate control over a bank account to the exchange.
- In the exchange database code the main tables related to AML/KYC are aml_history, kyc_attributes, kyc_events, legitimization_measures, legitimization_outcomes, legitimization_processes and kyc_auths_in.
- The main exchange endpoints are the KYC and AML operations as well as some new management endpoints.
- The single page apps for AML and KYC are in the wallet-core.git repository. There, you also find the new Challenger user interface for our Oauth 2.0-based address validation service.
- The Taler auditor was also modified to better handle outgoing wire transfers blocked on KYC. In particular, the new taler-helper-auditor-wire-debit will initially report missing outgoing wire transfers when an exchange fails to perform a transfer due to a pending KYC requirement. However, once the KYC process has completed and the wire transfer is made by the exchange, the warning will be automatically be cleared.
- The wallet-core component implements support for KYC. The wallet-core API docs contain new transaction details attributes (like "kycUrl") and requests (like "startExchangeWalletKyc") to allow wallet UIs to implement KYC.
KYC in Action
The following screenshots show (some of) the new KYC functionality in action using an iOS wallet. The backend was configured to use the "KYCS" test currency for demonstration purposes. It uses two KYC rules: (1) triggers KYC to identify the bank account owner when withdrawing more than 50 KYCS, and (2) triggers KYC to identify a wallet owner if the wallet balance crosses 100 KYCS.
We start with a virgin wallet and go to https://bank.kyctest.taler.net, register a new account, and start a withdrawal:
Next, we authorize at the bank by tapping the “Transfer” button. Go back to the Wallet app with the top left “back button” named “Taler Wallet” (seen in the leftmost screenshot), and find that the withdraw transaction is still pending, since it requires a (standard) KYC (1st withdrawal):
Here we can now tap on the “Open KYC website” button, Fill in the form, and the withdrawal succeeds:
To trigger the second KYC process, we go back to the bank and withdraw another 55 KYCS:
After authorization this again leads to a pending withdrawal transaction:
This can again be resolved by following the KYC procedure:
We again submit the form, and the wallet withdraws the amount:
The AML officer can view and manage the AML/KYC status of accounts in the exchange's AML backoffice single-page app. Accounts that are marked as "to investigate" by the automatic processes are listed separately and highlighted.
Download links
The wallet has its own download site here. The exchange, merchant backend, sync and bank components are distributed via the GNU FTP mirrors.
- http://ftpmirror.gnu.org/taler/taler-exchange-0.13.0.tar.gz
- http://ftpmirror.gnu.org/taler/taler-exchange-0.13.0.tar.gz.sig
- http://ftpmirror.gnu.org/taler/taler-merchant-0.13.0.tar.gz
- http://ftpmirror.gnu.org/taler/taler-merchant-0.13.0.tar.gz.sig
- http://ftpmirror.gnu.org/taler/taler-wallet-0.13.1.tar.gz
- http://ftpmirror.gnu.org/taler/taler-wallet-0.13.1.tar.gz.sig
- http://ftpmirror.gnu.org/taler/libeufin-0.13.0-sources.tar.gz
- http://ftpmirror.gnu.org/taler/libeufin-0.13.0-sources.tar.gz.sig
- http://ftpmirror.gnu.org/taler/sync-0.13.1.tar.gz
- http://ftpmirror.gnu.org/taler/sync-0.13.1.tar.gz.sig
- http://ftpmirror.gnu.org/taler/taler-mdb-0.13.0.tar.gz
- http://ftpmirror.gnu.org/taler/taler-mdb-0.13.0.tar.gz.sig
- http://ftpmirror.gnu.org/taler/taler-twister-0.9.4.tar.gz
- http://ftpmirror.gnu.org/taler/taler-twister-0.9.4.tar.gz.sig
- http://ftpmirror.gnu.org/taler/challenger-0.13.0.tar.gz
- http://ftpmirror.gnu.org/taler/challenger-0.13.0.tar.gz.sig
You must first install GNUnet v0.22.0 or the current Git master to compile GNU Taler 0.13 from source.