2022-6: "GNU Taler Scalability: Measuring and Improving the Performance of GNU Taler on Grid’5000"
Anonymity loves company. Hence, to provide the best possible anonymity to GNU Taler users, the scalability of individual installations of a Taler payment service matters. While our design scales nicely on paper, NGI Fed4Fire+ enabled us to evaluate the transaction rates that could be achieved with the actual implementation. Experiments were conducted by Marco Boss for his Bachelor's thesis at the Bern University of Applied Sciences to assess bottlenecks and suggest avenues for further improvement.
This thesis is on the GNU Taler scalability experiments conducted
on Grid’5000 in the first
half of 2022, which was preceded by preparations carried out in the second half of 2021
supported by the Next Generation Internet initiative’s
NGI Fed4Fire+ program.
The primary goal of this study was to evaluate the scalability of GNU Taler in a real-world scenario. That is, moving away from the loopback system to a distributed network and identifying improvement opportunities therein to analyze and improve performance. While the basic framework was already known from the previous study, this work focuses on extending the framework and making further improvements to GNU Taler. This includes, among other things, the horizontal distribution of the PostgreSQL database.
We identified and fixed several bottlenecks in the GNU Taler software. We parallelized the execution of the cryptographic frontend, leaving the PostgreSQL database as the natural bottleneck. Here, we optimized queries and modified the schema to enable table partitioning. The scalability demonstrated in our experiments shows that Taler is very capable of processing enough transactions per second to be considered an acceptable payment system. Throughout this work, we were able to increase the performance of Taler by a factor of 95, from about 300 to 28.5k transactions per second, showing that Central Bank Digital Currencies based on Taler would require only a few exchanges per continent.