taler-docs

Documentation for GNU Taler components, APIs and protocols
Log | Files | Refs | README | LICENSE

commit 56fba2d9371a47100df42b5cc3e2f0af81166abc
parent 43a2be878936049e09551c3e23968b5267b42313
Author: Christian Grothoff <grothoff@gnunet.org>
Date:   Tue, 16 Jun 2026 19:10:41 +0200

fix #11506 from my end

Diffstat:
Mdesign-documents/095-captcha-100.rst | 77+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 file changed, 73 insertions(+), 4 deletions(-)

diff --git a/design-documents/095-captcha-100.rst b/design-documents/095-captcha-100.rst @@ -4,7 +4,30 @@ DD 95: Captcha 100 Summary ======= - +One of the key applications we had always envisioned was the use of GNU Taler +for spam protection. A related application domain is Captcha's, where a server +needs some 'proof-of-humanity' to protect itself from handling expensive +requests on behalf of some out-of-control automated bot process. The key +insight is that here the operator is not necessarily interested in receiving +revenue from GNU Taler, but primarily in limiting their exposure to the attack +by increasing the cost to the initiator of the request. Furthermore, the +operator is often willing to inconvenience the sender, be it by various spam +filters (which have false-positives) or forcing the sender to solve Captcha's +or computational puzzles (Anubis). These existing methods are today often +failing, especially as LLMs enable bots to formulate messages that pass spam +filters or to solve Captcha's. In this context, forcing the sender to make a +Taler deposit becomes simply another form of imposing a cost, and one that +would cost an attacker more dearly. + +We can quickly enable this use-case by setting the Taler fees to 100%. At +this point, the "merchant" never actually receives any money (and customers +that withdrew tokens cannot get money when they return them either), so the +operator would not be a payment service as they do not give money to anybody. +While this is less attractive to the recipient, it would still be effective at +blocking bots. At the same time, this model can be rolled out globally pretty +quickly because at 100% fees we do not need a money transmitter or e-money +issuer license, as we no longer transmit money -- we only accept money in +return for a digital service, like many other regular unregulated businesses. Motivation ========== @@ -15,11 +38,58 @@ Motivation Requirements ============ +There are two high-level key requirements: + +- global availability for consumers; few sites or e-mail recipients would be + happy if they cannot be contacted by a large fraction of their partners + anymore. Thus, we need to have bank accounts for major currencies (USD, + EUR, ideally more) and Bitcoin (BTC) as a stop-gap. It is probably OK + to exclude parts of Asia or Africa initially, as many individuals or + businesses would have few relevant global connections. Explanations for + consumers withdrawing tokens must also be crystal-clear, especially + that they do not get digital cash. We may want a new "bank dialect" + to change user-facing terminology in the wallets to use language that + is less payment-focused. +- the paywalls must be well-documented, scalable to high traffic volumes + and easy to deploy. Instructions given to the blocked humans must also + be clear. Whitelisting must be possible to give services an easy way + to unblock highly desireable users without forcing them to pay. + +For the paywalls, we are mostly focusing on two: +- paivana-httpd: reverse proxy for HTTP that adds a paivana-style paywall +- pepsi: MTA/forwarder/proxy for SMTP that has a Taler payment gate and + logic to learn whitelisted senders from monitoring receivers of + outgoing traffic + +This will cover the two main use-cases. Proposed Solution ================= +Business: +- Open bank accounts in various currencies +- Consider getting no-action letters from regulators + +Wallets: +- Implement wallet dialect with non-payment captcha-oriented language +- Ensure wallets respect 'no deposit' and 'no-p2p' settings nicely +- Communicate special fee structure clearly on withdraw + +Other development: +- Implement, test and document Pepsi +- update merchant backend to support wire method 'void' + (auto-configured bank account payto://void/) for some + particular settings. + +Administration: +- Deploy a single exchange in CAPTCHAS and hook it up + to all of these accounts with some reasonable currency + conversion ratio +- Setup new web site explaining the solution +- Setup paivana-httpd in front of our Git Web +- Setup Pepsi in front of (some) of our e-mail accounts + Test Plan ========= @@ -36,9 +106,8 @@ Test Plan Definition of Done ================== -(Only applicable to design documents that describe a new feature. While the -DoD is not satisfied yet, a user-facing feature **must** be behind a feature -flag or dev-mode flag.) +- Exchange, Merchant backends and "demonstrators" (Git-Web, SMTP) live + Alternatives ============