diff options
author | Christian Grothoff <christian@grothoff.org> | 2018-01-06 18:33:04 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2018-01-06 18:33:04 +0100 |
commit | 330e66df5635de8d5b219b47edd80a7083f68d34 (patch) | |
tree | 6fb3f84d52e7b14d7fdda1c8e9725c6b3540ee22 | |
parent | 9438f3d7184eb70faebf1e994556231ef0e9f4ba (diff) |
first pass at new Web site
41 files changed, 675 insertions, 1617 deletions
diff --git a/.gitmodules b/.gitmodules index 0e2b9bd2..d83bc580 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,7 +1,3 @@ -[submodule "web-common"] - path = web-common - url = git://taler.net/web-common - branch = master [submodule "help"] path = help url = git://taler.net/help diff --git a/architecture.html.j2 b/architecture.html.j2 index 5f5e81c3..971c2326 100644 --- a/architecture.html.j2 +++ b/architecture.html.j2 @@ -11,6 +11,6 @@ </div> <div class="container"> - <img width="100%" src="{{ svg_localized('images/gnunet-arch-full') }}"></img> + <img width="100%" src="images/gnunet-arch-full.svg"></img> </div> {% endblock body_content %} diff --git a/bibliography.html.j2 b/bibliography.html.j2 deleted file mode 100644 index 88b02884..00000000 --- a/bibliography.html.j2 +++ /dev/null @@ -1,34 +0,0 @@ -{% extends "common/base.j2" %} -{% block body_content %} -<div class="container"> -<h1>{{ _("GNU Taler Bibliography")}}</h1> - -<h2>Blind Signatures for Untraceable Payments</h2> -<p> -<a href="{{ url('papers/chaum-blind-signatures.pdf') }}"><img border=0 align=right alt="PDF" width=32 height=32 src="{{ url('images/pdf.svg') }}"></a> -{{_("by")}} David Chaum<br> -CRYPTO '82<br> -</p> - -<h2>The One-More-RSA-Inversion Problems and the Security of Chaum's Blind Signature Scheme</h2> -<p> -<a href="{{ url('papers/bellare_blindsigs_proof.pdf') }}"><img border=0 align=right alt="PDF" width=32 height=32 src="{{ url('images/pdf.svg') }}"></a> -{{_("by")}} M. Bellare, C. Namprempre, D. Pointcheval {{ _("and") }} M. Semanko<br> -Financial Cryptography '01<br> -</p> - -<h2>Enabling Secure Web Payments with GNU Taler</h2> -<p> -<a href="{{ url('papers/taler2016space.pdf') }}"><img border=0 align=right width=32 height=32 alt="PDF" src="{{ url('images/pdf.svg') }}"></a> -{{_("by")}} Jeff Burdges, Florian Dold, Christian Grothoff {{ _("and") }} Marcello Stanisci<br> -SPACE 2016<br> -</p> - -<h2>Refreshing Coins for Giving Change and Refunds in Chaum-style Anonymous Payment Systems</h2> -<p> -{{_("by")}} Florian Dold, Sree Harsha Totakura, Benedikt Müller, Jeff Burdges {{ _("and") }} Christian Grothoff<br> -<em>{{_("available upon request")}}</em><br> -</p> - -</div> -{% endblock body_content %} diff --git a/citizens.html.j2 b/citizens.html.j2 deleted file mode 100644 index 2d5b677d..00000000 --- a/citizens.html.j2 +++ /dev/null @@ -1,143 +0,0 @@ -{% extends "common/base.j2" %} -{% block body_content %} -<div class="jumbotron"> - <div class="container text-center"> - <h1>{{ _("Advantages for Citizens") }}</h1> - <!-- p><a class="btn btn-lg btn-success" href="#" role="button">Get started today</a></p --> - <div class="col-lg-12"> - <p> - {% trans %} - Taler largely functions like digital cash. You - withdraw money from your bank account into your - electronic wallet, and can henceforth spend digital - cash. The electronic wallet can carry multiple - currencies. - {% endtrans %} - </p> - </div> - </div> -</div> - -<div class="container adorn_h3_bracket"> - <!-- Example row of columns --> - <div class="row"> - <div class="col-lg-6"> - <h3>{{ _("Secure") }}</h3> - - <p>{{ _("Taler uses modern cryptography, ensuring that there - is no counterfeit. Your digital wallet is safer - than your physical wallet. At most, you can lose - its contents because your computer or mobile is - irreparably damaged or compromised. Unlike a - physical wallet, you can make backups to secure - against data loss.") }}</p> - - </div> - <div class="col-lg-6"> - <h3>{{ _("Private") }}</h3> - - <p>{{ _("Your transactions are private, neither the payment - service provider nor merchant needs to learn your - identity. There is no need to give out credit card - numbers or other sensitive information. The merchant - will only be able to do exactly the transaction you - agreed to.") }}</p> - - </div> - </div> - <div class="row"> - <div class="col-lg-6"> - <h3>{{ _("Convenient") }}</h3> - - <p>{{ _("You will be able to withdraw money to replenish the - digital coins in your wallet using your credit card - or wire transfers. Afterwards you can pay with - one-click using the Taler wallet, which optionally - keeps your transaction history on your computer.") - }}</p> - - </div> - <div class="col-lg-6"> - <h3>{{ _("Stable") }}</h3> - - <p>{{ _("Coins in your digital wallet will be of the same - denomination as the cash in your physical wallet. - Taler is not a crypto-currency, so you do not have - to worry about cryto-currency related value - fluctuations. Banking with Taler is subject to the - usual government protections for financial - services.") }}</p> - - </div> - </div> -</div> - -<div class="container-fluid c_acronym"> -<div class="container"> - <div class="row"> - <div class="col-lg-6"> - <h2>{{ _("Wallet Browser Extension") }}</h2> - <p> - {% trans %} - We currently provide a <a href="wallet.html">wallet browser extension</a> for Chromium, Chrome, Firefox, Opera - and Edge. Wallets for mobile phones and other platforms will be available in the future. - {% endtrans %} - </p> - </div> - <div class="col-lg-6"> - <h2>{{ _("Taler Demo") }}</h2> - <p> - {% trans %} - You can see how Taler works in practice by visiting our <a href="https://demo.taler.net">demo page</a>. - {% endtrans %} - </p> - </div> - </div> -</div> -</div> - - -<div class="container"> - - <div class="col-lg-6"> - <h2 id="overview">{{ _("The Taler Wallet for customers") }}</h2> - - <p>{{ _("Customers interact with the Taler system using - the Taler wallet:") }}</p> - - <ul> - - <li>{{ _("To <b>withdraw</b> electronic coins, the customer - transfers funds from his bank account to the Taler - payment service provider (the exchange). The wire - transfer subject must match a code identifying the - customer's wallet. After the wire transfer is - complete, the wallet will automatically withdraw the - coins from the exchange.") }}</li> - - <li>{{ _("To <b>spend</b> electronic coins, a merchant must - cause the wallet to display a proposal for some - purchase. The wallet will ask the customer for - one-click confirmation. Payment is then instant. - Transaction histories and digitally signed contracts - can be preserved by the wallet.") }}</li> - - <li>{{ _("The customer can use the wallet to <b>review</b> his - balance. The wallet can contain different - currencies, and may be shared across - devices. Customers can make backups of the wallet to - secure its contents against hardware failures.") - }}</li> - - </ul> - </div> - - <div class="col-lg-6"> - <img src="{{ svg_localized('images/citizen') }}" - alt="{{ _("customer perspective") }}" - style="float: right; margin: 5px 5px 5px 5px;" width="100%"> - </div> - -</div> -<!-- /container --> -{% endblock body_content %} diff --git a/common/footer.j2.inc b/common/footer.j2.inc index aedd1e0c..7c973a6d 100644 --- a/common/footer.j2.inc +++ b/common/footer.j2.inc @@ -11,16 +11,15 @@ </div> <div class="col-xs-12 col-sm-4"> <ul class="footer-list"> - <li><p><a href="https://bugs.gnunet.org/">{{ _("Bug Tracker") }}</a></p></li> - <li><p><a href="discussion.html">{{ _("Discussion") }}</a></p></li> - <li><p><a href="https://logs.gnunet.org/gnunet">{{ _("IRC logs") }}</a></p></li> + <li><p><a href="https://gnunet.org/bugs/">{{ _("Bug Tracker") }}</a></p></li> + <li><p><a href="https://old.gnunet.org/bot/log/gnunet">{{ _("IRC logs") }}</a></p></li> </ul> </div> <div class="col-xs-12 col-sm-4"> <ul class="footer-list"> <li><p><a href="copyright.html">{{ _("Copyright Assignment") }}</a></p></li> - <li><p><a href="https://ci.gnunet.org/">{{ _("Continuous Integration") }}</a></p></li> - <li><p><a href="https://bibliography.gnunet.org/">{{ _("Bibliography") }}</a></p></li> + <li><p><a href="https://gnunet.org/buildbot/">{{ _("Continuous Integration") }}</a></p></li> + <li><p><a href="https://old.gnunet.org/bibliography">{{ _("Bibliography") }}</a></p></li> </ul> </div> </div> diff --git a/common/navigation.j2.inc b/common/navigation.j2.inc index 3bc62238..c82302ac 100644 --- a/common/navigation.j2.inc +++ b/common/navigation.j2.inc @@ -9,7 +9,7 @@ <li><a href="faq.html">{{ _("FAQ") }}</a></li> <li><a href="glossary.html">{{ _("Glossary") }}</a></li> <li><a href="copyright.html">{{ _("Copyright for Contributors") }} </a></li> - <li><a href="https://bibliography.gnunet.org/">{{ _("Bibliography") }}</a></li> + <li><a href="https://old.gnunet.org/bibliography">{{ _("Bibliography") }}</a></li> </ul> </li> </ul> diff --git a/developers.html.j2 b/developers.html.j2 index 0b2d20e1..c17cf991 100644 --- a/developers.html.j2 +++ b/developers.html.j2 @@ -2,52 +2,7 @@ {% block body_content %} <div class="jumbotron"> <div class="text-center"> - <h1>{{ _("Taler for developers") }}</h1> - </div> -</div> - -<div class="container"> - <div class="row"> - <div class="col-lg-6"> - <h3>{{ _("Free") }}</h3> - - <p> - {% trans %} - GNU Taler is free software implementing an open - protocol. Anybody is welcome to integrate our reference - implementation into their applications. Different - components of Taler are being made available under - different licenses. The Affero GPLv3+ is used for the - exchange, the LGPLv3+ is used for reference code - demonstrating integration with merchant platforms, and - licenses like GPLv3+ are used for - wallets and related customer-facing software. We are - open for constructive suggestions for maximizing the - adoption of this payment platform. - {% endtrans %} - </p> - - </div> - <div class="col-lg-6"> - <h3>{{ _("RESTful") }}</h3> - - <p> - {% trans %} - Taler is designed to work on the Internet. To - ensure that Taler payments can work with - restrictive network setups, Taler uses a RESTful - protocol over HTTP or HTTPS. Taler's security does - not depend upon the use of HTTPS, but obviously - merchants may choose to offer HTTPS for consistency - and because it generally is better for privacy - compared to HTTP. Taler uses JSON to encode - structure data, making it easy to integrate Taler - with existing Web applications. Taler's protocol - is documented in - detail at <a href="https://docs.taler.net/">docs.taler.net</a>. - {% endtrans %} - </p> - </div> + <h1>{{ _("GNUnet for developers") }}</h1> </div> </div> @@ -55,32 +10,23 @@ <div class="container"> <div class="row"> <div class="col-lg-4"> - <h3>{{ _("Code") }}</h3> + <h3>{{ _("Git") }}</h3> <p> {% trans %} - Taler is currently primarily developed by a - research team at <a href="http://www.inria.fr/">Inria</a> and - <a href="https://gnunet.org/">GNUnet</a>. However, - contributions from anyone are welcome. Our Git - repositories can be cloned using the Git and HTTP - access methods against <tt>git.taler.net</tt> with - the name of the respective repository. A list of + A list of our Git repositories can be found in - our <a href="https://git.taler.net/">GitWeb</a>. + our <a href="https://gnunet.org/git/">GitWeb</a>. {% endtrans %} </p> </div> <div class="col-lg-4"> - <h3>{{ _("Documentation") }}</h3> + <h3>{{ _("Bibliography") }}</h3> <p> {% trans %} - In addition to this website, the <a - href="https://git.taler.net/">documented code</a> and - the <a href="https://docs.taler.net/">API - documentation</a>. Technical papers can be found in - our <a href="bibliography.html">bibliography</a>. + Technical papers can be found in + our <a href="https://old.gnunet.org/bibliography">bibliography</a>. {% endtrans %} </p> </div> @@ -91,7 +37,7 @@ {% trans %} We have a mailing list for developer discussions. You can subscribe to or read the list archive at - <a href="http://lists.gnu.org/mailman/listinfo/taler">http://lists.gnu.org/mailman/listinfo/taler</a>. + <a href="http://lists.gnu.org/mailman/listinfo/gnunet-developers">http://lists.gnu.org/mailman/listinfo/gnunet-developers</a>. {% endtrans %} </p> </div> @@ -105,7 +51,7 @@ We have <a href="https://buildbot.net/">Buildbot</a> automation tests to detect regressions and check for portability at <a - href="https://buildbot.taler.net/">buildbot.taler.net</a>. + href="https://gnunet.org/buildbot/gnunet/">https://gnunet.org/buildbot/gnunet/</a>. {% endtrans %} </p> </div> @@ -118,7 +64,7 @@ <a href="http://ltp.sourceforge.net/coverage/lcov.php">LCOV</a> to analyze the code coverage of our tests, the results are available - at <a href="https://lcov.taler.net/">lcov.taler.net</a>. + at <a href="https://gnunet.org/coverage/">https://gnunet.org/coverage/</a>. {% endtrans %} </p> </div> @@ -131,7 +77,7 @@ use <a href="https://gnunet.org/gauger">Gauger</a> for performance regression analysis of the exchange backend - at <a href="https://gauger.taler.net/">gauger.taler.net</a>. + at <a href="https://gnunet.org/gauger/">https://gnunet.org/gauger/</a>. {% endtrans %} </p> </div> @@ -139,140 +85,4 @@ </div> </div> -<div class="container"> - - <div class="col-lg-12"> - <h3 id="overview">{{ _("Taler system overview") }}</h3> - - <p> - {% trans %} - The Taler system consists of protocols executed among - a number of actors as illustrated in the illustration on the right. - Typical transactions involve the following steps: - {% endtrans %} - </p> - - <img src="{{ svg_localized('images/system') }}" alt="{{_("system overview")}}" style="float: right; margin: 50px 5px 5px 5px;" width="50%"> - <ol> - <li> - {% trans %} - A customer instructs his <b>bank</b> to - transfer funds from his account to the Taler - exchange (top left). In the subject of the - transaction, he includes an authentication - token from his electronic <b>wallet</b>. In - Taler terminology, the customer creates a - reserve at the exchange. - {% endtrans %} - </li> - - <li> - {% trans %} - Once the exchange has received the wire - transfer, it allows the customer's electronic - wallet to <b>withdraw</b> electronic coins. - The electronic coins are digital - representations of the original currency from - the transfer. It is important to note that the - exchange does not learn the "serial - numbers" of the coins created in this - process, so it cannot tell later which customer - purchased what at which merchant. The use of - Taler does not change the currency or the total - value of the funds (except for fees which the - exchange may charge for the service). - {% endtrans %} - </li> - - <li> - {% trans %} - Once the customer has the digital coins in his - wallet, the wallet can be used to <b>spend</b> - the coins with merchant portals that support - the Taler payment system and accept the - respective exchange as a business partner - (bottom arrow). This creates a digital contract - signed by the customer's coins and the - merchant. If necessary, the customer can later - use this digitally signed contract in a court - of law to prove the exact terms of the contract - and that he paid the respective amount. The - customer does not learn the banking details of - the merchant, and Taler does not require the - merchant to learn the identity of the - customer. Naturally, the customer can spend any - fraction of his digital coins (the system takes - care of customers getting change). - {% endtrans %} - </li> - - <li> - {% trans %} - Merchants receiving digital - coins <b>deposit</b> the respective claims - that resulted from the contract signing with - the customer at the exchange to redeem the - coins. The deposit step does not reveal the - details of the contract between the customer - and the merchant or the identity of the - customer to the exchange in any way. However, - the exchange does learn the identity of the - merchant via the provided bank routing - information. The merchant can, for example - when compelled by the state for taxation, - provide information linking the individual - deposit to the respective contract signed by - the customer. Thus, the exchange's database - allows the state to enforce that merchants pay - applicable taxes (and do not engage in illegal - contracts). - {% endtrans %} - </li> - - <li> - {% trans %} - Finally, the exchange transfers funds - corresponding to the digital coins redeemed by - the merchants to the merchant's <b>bank</b> - account. The exchange may combine multiple - small transactions into one larger bank - transfer. The merchant can query the exchange - about the relationship between the bank - transfers and the individual claims that were - deposited. - {% endtrans %} - </li> - - <li> - {% trans %} - Most importantly, the exchange keeps - cryptographic proofs that allow it to - demonstrate that it is operating correctly to - third parties. The system requires an - external <b>auditor</b>, such as a - government-appointed financial regulatory body, - to frequently verify the exchange's databases - and check that its bank balance matches the - total value of the remaining coins in - circulation. - {% endtrans %} - </li> - - <li> - {% trans %} - Without the auditor, the exchange operators - could embezzle funds they are holding in - reserve. Customers and merchants cannot cheat - each other or the exchange. If any party's - computers are compromised, the financial damage - is limited to the respective party and - proportional to the funds they have in - circulation during the period of the - compromise. - {% endtrans %} - </li> - </ol> - <p></p> - </div> -</div> <!-- /container --> {% endblock body_content %} diff --git a/faq.html.j2 b/faq.html.j2 index edf3da60..e385c7b2 100644 --- a/faq.html.j2 +++ b/faq.html.j2 @@ -2,75 +2,16 @@ {% block body_content %} <div class="container"> -<h2>{{ _("How is Taler related to Bitcoin or Blockchains?") }}</h2> +<h2>{{ _("Q?") }}</h2> {% trans %} -<p>Taler does not use any Blockchain technology or Bitcoin directly. -Taler is not based on proof-of-work or any other distributed consensus -mechanism. Instead Taler is based on blind signatures.</p> +<p> +A: +</p> {% endtrans %} {% trans %} -<p>It would be possible, however, to withdraw coins denominated in -Bitcoin into a Taler wallet (with an appropriate exchange), which -would give some benefits over plain Bitcoin, such as instant -confirmation times.</p> -{% endtrans %} - -<h2>{{ _("Where is the balance in my wallet stored?") }}</h2> -{% trans %} -<p>Your wallet stores digital coins and thus ultimately your computer -holds your balance. The exchange keeps funds matching all unspent -coins in an escrow bank account.</p> -{% endtrans %} - -<h2>{{ _("What if my wallet is lost?") }}</h2> -{% trans %} -<p>Since the digital coins of value in your wallet are anonymized, the -exchange can not assist you in recovering a lost or stolen wallet. -Just like with a physical wallet for cash, you are responsible for -keeping it safe.</p> -{% endtrans %} -{% trans %} -<p>The risk of losing a wallet can be mitigated by making backups or -keeping the balance reasonably low.</p> -{% endtrans %} - -<h2>{{ _("What if my computer is hacked?") }}</h2> -{% trans %} -<p>In case of a compromise of one of your devices, an attacker can -spend coins from your wallet. Checking your balance might reveal -to you that your device has been compromised.</p> -{% endtrans %} - -<h2>{{ _("Can I send money to my friend with Taler?") }}</h2> -{% trans %} -<p>If your friend provides goods or services for you in exchange for a -payment, they can easily set up a Taler merchant and receive the -payment in their bank account.</p> -{% endtrans %} -{% trans %} -<p>Future versions of the Taler wallet may allow exchanging coins -among friends directly as well.</p> -{% endtrans %} - - -<h2>{{ _("How does Taler handle payments in different currencies?") }}</h2> -{% trans %} -<p>Taler wallets can store digital coins corresponding to multiple -different currencies such as the Euro, US Dollars or Bitcoins.</p> -{% endtrans %} -{% trans %} -<p>Taler currently does not offer conversion between currencies.</p> -{% endtrans %} - -<h2>{{ _("How does Taler protect my privacy?") }}</h2> -{% trans %} - -<p>Your wallet stores digital coins that are <a -href="https://en.wikipedia.org/wiki/Blind_signature">blindly -signed</a> by an exchange. The use of a blind signature protects your -privacy as it prevents the exchange from knowing which coin it signed -for which customer.</p> - +<p> +A: +</p> {% endtrans %} </div> diff --git a/financial-news.html.j2 b/financial-news.html.j2 deleted file mode 100644 index 8ebe2d42..00000000 --- a/financial-news.html.j2 +++ /dev/null @@ -1,43 +0,0 @@ -{% extends "common/base.j2" %} -{% block body_content %} - -<div class="jumbotron"> - <div class="container text-center"> - <h1>{{ _("Financial News") }}</h1> - <div class="col-lg-12"> - <p> - {% trans %} - This page explains (only in English) how Taler can change ongoing - developments in the financial industry. - {% endtrans %} - </p> - </div> - </div> -</div> - -<div class="container"> - <div class="row"> - <div class="col-lg-12"> - -{% include "financial-news/2017-07-20.inc" %} -{% include "financial-news/2017-04-04.inc" %} -{% include "financial-news/2017-04-03.inc" %} -{% include "financial-news/2016-10-26.inc" %} -{% include "financial-news/2016-10-24.inc" %} -{% include "financial-news/2016-10-21.inc" %} -{% include "financial-news/2016-10-15.inc" %} -{% include "financial-news/2016-07-23.inc" %} -{% include "financial-news/2015-12-22.inc" %} -{% include "financial-news/2015-04-30.inc" %} -{% include "financial-news/2015-03-17.inc" %} -{% include "financial-news/2014-12-06.inc" %} -{% include "financial-news/2014-12-05.inc" %} -{% include "financial-news/2014-11-13.inc" %} -{% include "financial-news/2014-09-10.inc" %} -{% include "financial-news/2013-09-15.inc" %} - - </div> - </div> -</div> <!-- /container --> - -{% endblock body_content %} diff --git a/financial-news/2013-09-15.inc b/financial-news/2013-09-15.inc deleted file mode 100644 index 2f13aec2..00000000 --- a/financial-news/2013-09-15.inc +++ /dev/null @@ -1,13 +0,0 @@ - <h3>15-9-2013: NSA follows the Money</h3> - <p>Despite the EU allowing the NSA access to financial transaction data to - track terrorists and organized crime, the NSA saw it necessary to - target international payment processors including SWIFT and Visa. - As terrorism and organized crime are covered by legal means, industrial - espionage to improve the US economy is the only remaining US national - interest within the NSA's mandate that would explain this illegal activity.<br> - With Taler, exchanges will only learn the value of a merchant's transactions, - not who paid or for what (governments may learn what was sold). Thus, - the Taler exchange is a significantly less interesting target for industrial - espionage. - </p> - <p><a class="btn btn-info" href="http://www.spiegel.de/international/world/spiegel-exclusive-nsa-spies-on-international-bank-transactions-a-922276.html" role="button">Source</a></p> diff --git a/financial-news/2014-09-10.inc b/financial-news/2014-09-10.inc deleted file mode 100644 index 2b886bc9..00000000 --- a/financial-news/2014-09-10.inc +++ /dev/null @@ -1,17 +0,0 @@ - <h3>10-9-2014: PayPal accounts hacked with a click</h3> - <p>Yasser Ali reports a now patched vulnerability in PayPal that would - have allowed him to reset other user's passwords and take over their - accounts. This is unlikely to be the last vulnerability found in - account-based payment systems.<br> - In Taler, customers do not have accounts with usernames, passwords - or associated e-mail addresses. Instead, Taler uses reserves which - are represented by a private key on the owner's computer. Users - create a reserve by depositing currency at a Taler exchange, and can then - withdraw digital coins from that reserve using the respective private - key. There is no limit on the number of reserves a user can have, and - even hacking the Taler exchange would not provide an adversary with access to - user's reserves (as the Taler exchange does not have the private keys). - Stealing in Taler requires breaking into each customer's computer to - extract the reserve keys or the coins from the digital wallet. - </p> - <p><a class="btn btn-info" href="http://yasserali.com/hacking-paypal-accounts-with-one-click/" role="button">Source</a></p> diff --git a/financial-news/2014-11-13.inc b/financial-news/2014-11-13.inc deleted file mode 100644 index 39a496e4..00000000 --- a/financial-news/2014-11-13.inc +++ /dev/null @@ -1,12 +0,0 @@ - <h3>13-11-2014: Visa and MasterCard's to move from passwords to biometrics</h3> - <p>Visa and MasterCard are planning to "simplify hated verification - systems" by moving from passwords to security codes on mobiles - and biometrics. Continuing their flawed insistence on verifying identity, - Visa and MasterCard will thus build a very personal picture of their - customers, from shopping habbits down to their cardiac rhythm.<br> - Taler does not require a customer's identity to verify a payment, as the - payment system cryptographically verifies the coins. Thus, Taler does - not have to intrude into any personal detail of a citizen's life, and - certainly not their private medical data. - </p> - <p><a class="btn btn-info" href="http://www.theguardian.com/money/2014/nov/13/mastercard-visa-kill-off-verification-systems" role="button">Source</a></p> diff --git a/financial-news/2014-12-05.inc b/financial-news/2014-12-05.inc deleted file mode 100644 index 9e65b078..00000000 --- a/financial-news/2014-12-05.inc +++ /dev/null @@ -1,21 +0,0 @@ - <h3>5-12-2014: PayPal for Android gains fingerprint support</h3> - <p>Following Visa and MasterCard's move to biometrics, PayPal - now supports authenticating purchases with fingerprint - recognition. - Hence, police can now <a href="http://www.findlaw.co.uk/law/government/civil_rights/500374.html">forcefully take user's fingerprints</a> and - <a href="http://www.wired.com/2013/09/the-unexpected-result-of-fingerprint-authentication-that-you-cant-take-the-fifth/">access their mobile computers</a> and possibly empty their electronic wallets - <a href="http://www.cbc.ca/news/world/american-shakedown-police-won-t-charge-you-but-they-ll-grab-your-money-1.2760736">in addition to their physical wallets</a>.<br> - For Taler, we advise users to protect their digital wallets using - passphrases. - </p> - <p><a class="btn btn-info" href="http://www.digitalspy.co.uk/tech/news/a614631/paypal-for-android-gains-fingerprint-support-on-samsung-devices.html" role="button">Source</a></p> - - <h3>5-12-2014: US judge rules banks can sue merchant for bad security</h3> - <p>Merchants taking credit card data from customers now have to additionally - fear banks suing them for losses. It is not suggested that the merchant - in question was not in compliance with PCI DSS security audit procedures.<br> - With Taler, merchants never handle sensitive personal credit data, and - thus neither customers, exchanges nor governments would even have standing to - sue merchants in court. Thus, if a merchant system were to be compromised, - the damage would be limited to the merchant's own operations. - <p><a class="btn btn-info" href="http://arstechnica.com/tech-policy/2014/12/judge-rules-that-banks-can-sue-target-for-2013-credit-card-hack/" role="button">Source</a></p> diff --git a/financial-news/2014-12-06.inc b/financial-news/2014-12-06.inc deleted file mode 100644 index bc0a6e7e..00000000 --- a/financial-news/2014-12-06.inc +++ /dev/null @@ -1,8 +0,0 @@ - <h3>6-12-2014: Visa and MasterCard's uncompetitive business practices</h3> - <p>The Visa and MasterCard duopoly has eliminated competition among - banks, setting fees that take away a significant share of profits from - small merchants.<br> - Taler is an open standard with free software - implementations, so merchants do not have to fear a lack of competition. - </p> - <p><a class="btn btn-info" href="http://www.ocregister.com/articles/gas-644344-card-fees.html" role="button">Source</a></p> diff --git a/financial-news/2015-03-17.inc b/financial-news/2015-03-17.inc deleted file mode 100644 index 8cdebfe7..00000000 --- a/financial-news/2015-03-17.inc +++ /dev/null @@ -1,9 +0,0 @@ - <h3>17-3-2015: Pointing Fingers in Apple Pay Fraud</h3> - <p>Apple Pay may be easy to use, but the simplistic - user identification creates opportunities for fraud, - resulting in much higher fraud rates than even with traditional - credit card systems.<br> - Taler does not require user identification, enabling - ease of use while also being effective against fraud. - </p> - <p><a class="btn btn-info" href="http://www.nytimes.com/2015/03/17/business/banks-find-fraud-abounds-in-apple-pay.html?_r=0" role="button">Source</a></p> diff --git a/financial-news/2015-04-30.inc b/financial-news/2015-04-30.inc deleted file mode 100644 index bd0e23d1..00000000 --- a/financial-news/2015-04-30.inc +++ /dev/null @@ -1,12 +0,0 @@ - <h3>30-4-2015: 1970 Researchers Predicted Debit Cards Would be Great for Surveillance</h3> - <p>"Suppose you were an advisor to the head of the KGB, - the Soviet Secret Police. Suppose you are given the - assignment of designing a system for the surveillance of all - citizens and visitors within the boundaries of the USSR. The - system is not to be too obtrusive or obvious. What would be - your decision?"<br> - The think tank RAND essentially answered this question with - a blueprint for modern payment systems. Taler offers an - escape from the financial panopticon. - </p> - <p><a class="btn btn-info" href="http://paleofuture.gizmodo.com/1970s-researchers-predicted-debit-cards-would-be-great-1699216972" role="button">Source</a></p> diff --git a/financial-news/2015-12-22.inc b/financial-news/2015-12-22.inc deleted file mode 100644 index c66cb4ac..00000000 --- a/financial-news/2015-12-22.inc +++ /dev/null @@ -1,10 +0,0 @@ - <h3>22-12-2015: Sicherheitsforscher hacken das EC-Bezahlsystem</h3> - <p>Security researchers found serious security flaws in the German "electronic cash" system - which enable criminals to withdraw funds from merchant accounts based on the information printed - on receipts and other information obtained from public sources or point-of-sales terminals purchased - online.<br> - The German "electronic cash" system is based on the "Poseidon" protocol, for - which there is no publicly accessible specification or reference implementation. This has allowed - such major security holes to persist for decades. - </p> - <p><a class="btn btn-info" href="http://www.zeit.de/digital/datenschutz/2015-12/electronic-cash-bezahlsystem-terminals-gehackt" role="button">Source</a></p> diff --git a/financial-news/2016-07-23.inc b/financial-news/2016-07-23.inc deleted file mode 100644 index 49955bde..00000000 --- a/financial-news/2016-07-23.inc +++ /dev/null @@ -1,9 +0,0 @@ - <h3>23-07-2016: How banks are refusing to shoulder responsibility for fraud</h3> - <p>Banks are naturally unhappy about shouldering the cost for fraud, and use - various tricks to impose the costs on their customers without providing - adequate help to minimize fraud.<br> - With GNU Taler, cryptography ensures that identity theft and many related - types of fraud are no longer possible, allowing banks to offer customers - a payment experience where neither side needs to worry about fraud. - </p> - <p><a class="btn btn-info" href="http://www.telegraph.co.uk/personal-banking/current-accounts/how-banks-are-refusing-to-shoulder-responsibility-for-fraud/" role="button">Source</a></p> diff --git a/financial-news/2016-10-15.inc b/financial-news/2016-10-15.inc deleted file mode 100644 index 2954dc1b..00000000 --- a/financial-news/2016-10-15.inc +++ /dev/null @@ -1,7 +0,0 @@ - <h3>15-10-2016: Thousands of online stores found skimming</h3> - <p>Security researchers found evidence of adversaries targeting online shops offering credit cards - to steal and resell credit card credentials.<br> - With GNU Taler, shops would never receive sensitive personal information such as credit cards, - thus hacked online shops would not create such hassles for consumers. - </p> - <p><a class="btn btn-info" href="https://gwillem.gitlab.io/2016/10/11/5900-online-stores-found-skimming/" role="button">Source</a></p> diff --git a/financial-news/2016-10-21.inc b/financial-news/2016-10-21.inc deleted file mode 100644 index 47cad2ca..00000000 --- a/financial-news/2016-10-21.inc +++ /dev/null @@ -1,8 +0,0 @@ - <h3>21-10-2016: Indian banks warn 3.2 million customers</h3> - <p>A major data breach of Indian banks forced these institutions to warn 3.2 million - customers that their accounts might have been compromised and that they need - to obtain new bank cards and PIN numbers.<br> - With GNU Taler, banks can implement privacy by design and minimize data collection, - minimizing the impact of security breaches and satisfying GDPR regulations in Europe. - </p> - <p><a class="btn btn-info" href="http://www.heise.de/newsticker/meldung/Vermutliche-Datenpanne-Indische-Banken-warnen-3-2-Millionen-Kunden-3356582.html" role="button">Source</a></p> diff --git a/financial-news/2016-10-24.inc b/financial-news/2016-10-24.inc deleted file mode 100644 index f7bee43a..00000000 --- a/financial-news/2016-10-24.inc +++ /dev/null @@ -1,10 +0,0 @@ - <h3>24-10-2016: ApplePay starts in France</h3> - <p>With ApplePay starting in France, pressure on - European banks increase as they are set to - lose market share to big technology providers.<br> - With GNU Taler, we could establish an open standard with a level - playing field preserving the independence of national economies - by establishing a commons that protects critical infrastructure - from domination by a handful of global players. - </p> - <p><a class="btn btn-info" href="http://www.heise.de/newsticker/meldung/Apple-Pay-startet-in-Frankreich-3272412.html" role="button">Source</a></p> diff --git a/financial-news/2016-10-26.inc b/financial-news/2016-10-26.inc deleted file mode 100644 index 7cfb01bd..00000000 --- a/financial-news/2016-10-26.inc +++ /dev/null @@ -1,10 +0,0 @@ - <h3>24-10-2016: Alipay gains acceptance in US and Europe</h3> - <p>With Alipay being increasingly accepted in retail stores in US and Europe, - European banks continue to lose market share to big technology - providers.<br> - With GNU Taler, we could establish an open standard with a level - playing field preserving the independence of national economies - by establishing a commons that protects critical infrastructure - from domination by a handful of global players. - </p> - <p><a class="btn btn-info" href="http://www.nfcworld.com/2016/10/24/347979/alipay-gains-acceptance-us-europe/" role="button">Source</a></p> diff --git a/financial-news/2017-04-03.inc b/financial-news/2017-04-03.inc deleted file mode 100644 index 269fb29d..00000000 --- a/financial-news/2017-04-03.inc +++ /dev/null @@ -1,12 +0,0 @@ - <h3>03-04-2017: Amazon launches Amazon Cash</h3> - <p>Despite Amazon being in the position of being allowed to keep - your credit card on file to enable faster payments, they have - now moved to enable payments without credit cards. - <br> - With GNU Taler, cash-based payments for customers without - credit cards would be possible not only for big brands that - can sell tokens at participating retailers, but for all online - stores as GNU Taler is an open standard and not another - walled-garden lock-in payment system. - </p> - <p><a class="btn btn-info" href="https://techcrunch.com/2017/04/03/amazon-launches-amazon-cash-a-way-to-shop-its-site-without-a-bank-card/" role="button">Source</a></p> diff --git a/financial-news/2017-04-04.inc b/financial-news/2017-04-04.inc deleted file mode 100644 index 81467914..00000000 --- a/financial-news/2017-04-04.inc +++ /dev/null @@ -1,12 +0,0 @@ - <h3>04-04-2017: WhatsApp to offer person-to-person payments in India</h3> - <p>With Indian demonetization policy pushing the country towards - a cashless society, it was only a question of time until the - Big Data oligopoly would make its move to take over the country's - economy. - <br> - With GNU Taler, India would maintain digital sovereignty, and - the privacy of citizens spending digital cash would - be preserved while achiving the laudable income transparency and - anti-counterfeiting goals of the Indian government. - </p> - <p><a class="btn btn-info" href="http://mashable.com/2017/04/04/whatsapp-person-to-person-payment-india/#_CZ7RRkKaiqN" role="button">Source</a></p> diff --git a/financial-news/2017-07-20.inc b/financial-news/2017-07-20.inc deleted file mode 100644 index 36887edd..00000000 --- a/financial-news/2017-07-20.inc +++ /dev/null @@ -1,10 +0,0 @@ - <h3>20-07-2017: Sofortüberweisung unreasonable</h3> - <p>The German Federal High Court of Justice has decided that - the online payment system Sofortüberweisung is - unreasonable, and thus must not be the only payment option offered - without additional fees for customers in Germany. - <br> - With GNU Taler, inexpensive instant payments that respect customers - privacy will be possible. - </p> - <p><a class="btn btn-info" href="https://www.heise.de/newsticker/meldung/BGH-Sofortueberweisung-darf-nicht-einziges-Gratis-Bezahlverfahren-sein-3777580.html" role="button">Source</a></p> diff --git a/glossary.html.j2 b/glossary.html.j2 index 03cb493e..a8ad7dd0 100644 --- a/glossary.html.j2 +++ b/glossary.html.j2 @@ -3,189 +3,10 @@ <div class="container"> <dl> -<dt>{{ _("auditor") }}</dt> +<dt>{{ _("term") }}</dt> <dd> {% trans %} - trusted third party that verifies that the `exchange` is operating correctly - {% endtrans %} - </dd> -<dt>{{ _("bank") }}</dt> - <dd> - {% trans %} - traditional financial service provider who offers wire `transfers` between accounts - {% endtrans %} - </dd> -<dt>{{ _("coin") }}</dt> - <dd> - {% trans %} - coins are individual token representing a certain amount of value, also known as the `denomination` of the coin - {% endtrans %} - </dd> -<dt>{{ _("contract") }}</dt> - <dd> - {% trans %} - the proposal signed by the wallet. - {% endtrans %} - </dd> -<dt>{{ _("denomination") }}</dt> - <dd> - {% trans %} - unit of currency, specifies both the currency and the face value of a `coin` - {% endtrans %} - </dd> -<dt>{{ _("denomination key") }}</dt> - <dd> - {% trans %} - RSA key used by the exchange to certify that a given `coin` is valid and of a particular `denomination` - {% endtrans %} - </dd> -<dt>{{ _("deposit") }}</dt> - <dd> - {% trans %} - operation by which a merchant passes coins to an exchange, expecting the exchange to credit his `bank` account in the future using a wire `transfer` - {% endtrans %} - </dd> -<dt>{{ _("dirty") }}</dt> - <dd> - {% trans %} - a `coin` is dirty if its public key may be known to an entity other than the customer, thereby creating the danger of some entity being able to link multiple transactions of coin's owner if the coin is not refreshed first - {% endtrans %} - </dd> -<dt>{{ _("exchange") }}</dt> - <dd> - {% trans %} - Taler's payment service provider. Issues eletronic `coins` during `withdrawal` and redeems them when they are `deposited` by merchants. - {% endtrans %} - </dd> -<dt>{{ _("extension") }}</dt> - <dd> - {% trans %} - implementation of a `wallet` for browsers - {% endtrans %} - </dd> -<dt>{{ _("fresh coin") }}</dt> - <dd> - {% trans %} - a `coin` is fresh if its public key is only known to the customer - {% endtrans %} - </dd> -<dt>{{ _("master key") }}</dt> - <dd> - {% trans %} - offline key used by the exchange to certify denomination keys and message signing keys - {% endtrans %} - </dd> -<dt>{{ _("message signing key") }}</dt> - <dd> - {% trans %} - key used by the exchange to sign online messages, other than coins - {% endtrans %} - </dd> -<dt>{{ _("offer") }}</dt> - <dd> - {% trans %} - specification of the details of a transaction, specifies the payment obligations - for the customer (i.e. the amount), the deliverables of the merchant and other - related information, such as deadlines or locations; However, it lacks some - information that the backend is supposed to provide. - In other words, after the backend adds the missing information to the offer and - signs it, it becomes a proposal. - {% endtrans %} - </dd> -<dt>{{ _("owner") }}</dt> - <dd> - {% trans %} - a `coin` is owned by the entity that knows the private key of the coin - {% endtrans %} - </dd> -<dt>{{ _("proof") }}</dt> - <dd> - {% trans %} - message that cryptographically demonstrates that a particular claim is correct - {% endtrans %} - </dd> -<dt>{{ _("proposal") }}</dt> - <dd> - {% trans %} - a sketch that has been completed and signed by the merchant backend. - {% endtrans %} - </dd> -<dt>{{ _("reserve") }}</dt> - <dd> - {% trans %} - funds set aside for future use; either the balance of a customer at the exchange ready for `withdrawal`, or the funds kept in the exchange's bank account to cover obligations from coins in circulation - {% endtrans %} - </dd> -<dt>{{ _("refreshing") }}</dt> - <dd> - {% trans %} - operation by which a `dirty` `coin` is converted into one or more `fresh` coins - {% endtrans %} - </dd> -<dt>{{ _("refund") }}</dt> - <dd> - {% trans %} - operation by which a merchant steps back from the right to funds that he obtained from a `deposit` operation, giving the right to the funds back to the customer - {% endtrans %} - </dd> -<dt>{{ _("sharing") }}</dt> - <dd> - {% trans %} - users can share ownership of a `coin` by sharing access to the coin's private key, thereby allowing all co-owners to spend the coin at any time. - {% endtrans %} - </dd> -<dt>{{ _("signing key") }}</dt> - <dd> - {% trans %} - see message signing key. - {% endtrans %} - </dd> -<dt>{{ _("spending") }}</dt> - <dd> - {% trans %} - operation by which a customer gives a merchant the right to `deposit` coins in return for merchandise - {% endtrans %} - </dd> -<dt>{{ _("transfer") }}</dt> - <dd> - {% trans %} - method of sending funds between `bank` accounts - {% endtrans %} - </dd> -<dt>{{ _("transaction") }}</dt> - <dd> - {% trans %} - method by which ownership is exclusively transferred from one entity to another - {% endtrans %} - </dd> -<dt>{{ _("transaction id") }}</dt> - <dd> - {% trans %} - unique number by which a merchant identifies a `transaction` - {% endtrans %} - </dd> -<dt>{{ _("wallet") }}</dt> - <dd> - {% trans %} - software running on a customer's computer; withdraws, stores and spends coins - {% endtrans %} - </dd> -<dt>{{ _("wire transfer") }}</dt> - <dd> - {% trans %} - see `transfer` - {% endtrans %} - </dd> -<dt>{{ _("wire transfer identifier") }}</dt> - <dd> - {% trans %} - subject of a wire `transfer`; usually a random string to uniquely identify the `transfer` - {% endtrans %} - </dd> -<dt>{{ _("withdrawal") }}</dt> - <dd> - {% trans %} - operation by which a `wallet` can convert funds from a reserve to fresh coins + explanation {% endtrans %} </dd> </dt> diff --git a/governments.html.j2 b/governments.html.j2 deleted file mode 100644 index be7ce52a..00000000 --- a/governments.html.j2 +++ /dev/null @@ -1,188 +0,0 @@ -{% extends "common/base.j2" %} -{% block body_content %} - -<div class="jumbotron"> - <div class="container text-center"> - <h1>{{ _("Advantages for Governments") }}</h1> - <p> - {% trans %} - Taler provides accountability to ensure business operate - legally, while also respecting civil liberties of - citizens. Taler is a payment system based on - open standards and free software. Taler needs - governments as they set a financial framework and act as - trusted regulators. Taler contributes to digital - sovereignty in the critical financial infrastructure. - {% endtrans %} - </p> - </div> -</div> - -<!-- Example row of columns --> -<div class="container adorn_h3_bracket"> - <div class="row"> - <div class="col-lg-6"> - <h3>{{ _("Taxable") }}</h3> - - <p> - {% trans %} - Taler was built with the goal of fighting corruption and - supporting taxation. With Taler, the receiver of any - form of payment is easily identified by the government, - and the merchant can be compelled to provide the contract - that was accepted by the customer. Governments can use - this data to tax businesses and individuals based on - their income, making tax evasion and black markets less - viable. - {% endtrans %} - </p> - - <p> - {% trans %} - Thus, despite offering anonymity for citizens spending - digital cash to buy goods and services, Taler also - ensures that the state can observe incoming funds. This - can be used to ensure businesses engage only in legal - activities, and do not evade income tax, sales tax or - value-added tax. However, this observational capability - does not extend to the immediate personal domain. In - particular, monitoring does not cover shared access to - funds with trusted friends and family, or synchronizing - wallets across multiple devices. - {% endtrans %} - </p> - - </p> - </div> - <div class="col-lg-6"> - <h3>{{ _("Secure") }}</h3> - - <p> - {% trans %} - Taler's payments are cryptographically secured. Thus, - customers, merchants and the Taler payment service provider - (the exchange) can mathematically - demonstrate their lawful behavior in court in case of - disputes. Financial damages are strictly limited, - improving economic security for individuals, merchants, - the exchange and the state. - {% endtrans %} - </p> - - <p> - {% trans %} - As a payment service provider, the Taler exchange is - subject to financial regulation. Financial regulation and - regular audits are critical to establish trust. In - particular, the Taler design mandates the existence of an - independent auditor who checks cryptographic proofs that - accumulate at the exchange to ensure that the escrow - account is managed honestly. This ensures that the - exchange does not threaten the economy due to fraud. - {% endtrans %} - </p> - </div> - </div> - <div class="row"> - <div class="col-lg-6"> - <h3>{{ _("Libre") }}</h3> - - <p> - {% trans %} - Taler is free software implementing an open protocol - standard. Thus, Taler will enable competition and avoid - the monopolization of payment systems that threatens - global political and financial stability today. - {% endtrans %} - </p> - - </div> - <div class="col-lg-6"> - <h3>{{ _("Efficient") }}</h3> - - <p> - {% trans %} - Taler has an efficient design. Unlike - Blockchain-based payment systems, such as Bitcoin, - Taler will not threaten the availability of - national electric grids or (significantly) - contribute to environmental pollution. - {% endtrans %} - </p> - </div> - </div> -</div> - - - -<div class="container-fluid c_acronym"> - <div class="container"> - <h2 id="documentation">{{ _("Taler and regulation") }}</h2> - <dl> - <dt>{{ _("Anti money laundering (AML)")}}</dt> - <dd>{{ _("With Taler, income is visible and can be tied to the contract signed by both parties.") }}</li> - <dt>{{ _("Know your customer (KYC)")}}</dt> - <dd>{{ _("In Taler, payer and payee are known by their bank accounts when withdrawing or depositing coins respectively") }}</dd> - <dt>{{ _("General Data Protection Regulation (GDPR)")}}</dt> - <dd>{{ _("Taler cryptographically protects citizen's privacy, and by design implements data minimization and privacy by default.") }}</dd> - <dt>{{ _("Payment Services Directive (PSD2)")}}</dt> - <dd>{{ _("Taler provides an open standard with public APIs contributing to a competitive banking sector.") }}</dt> - </dl> - </div> -</div> - - -<div class="container"> -<div class="col-lg-12"> - <h2 id="overview">{{ _("Taler provides privacy and accountability") }}</h2> - - <p> - {% trans %} - Taler assumes governments can observe traditional wire transfers - entering and leaving the Taler payment system. Starting with the - wire transfers, governments can obtain: - {% endtrans %} - <ul> - - <li> - {% trans %} - The total amount of digital currency withdrawn by a - customer. The government can impose limits on how much - digital cash a customer can withdraw within a - given time frame. - {% endtrans %} - </li> - - <li> - {% trans %} - The income received by any merchant via the Taler - system. - {% endtrans %} - </li> - - <li> - {% trans %} - - The exact details of the underlying contract that was - signed between customer and merchant. However, this - information would typically not include the identity - of the customer. - {% endtrans %} - </li> - - <li> - {% trans %} - The amounts of digital coins legitimately withdrawn - by customers from the exchange, the value of - non-redeemed digital coins in customer's wallets, the - value and corresponding wire details of deposit - operations performed by merchants with the exchange, - and the income of the exchange from transaction fees. - {% endtrans %} - </li> - </ul> - </p> -</div> -</div> - -{% endblock body_content %} diff --git a/images/gnunet-arch-full.svg b/images/gnunet-arch-full.svg new file mode 100644 index 00000000..766f2b85 --- /dev/null +++ b/images/gnunet-arch-full.svg @@ -0,0 +1,648 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by graphviz version 2.38.0 (20140413.2041) + --> +<!-- Title: dependencies Pages: 1 --> +<svg width="1277pt" height="836pt" + viewBox="0.00 0.00 1276.81 836.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 832)"> +<title>dependencies</title> +<polygon fill="white" stroke="none" points="-4,4 -4,-832 1272.81,-832 1272.81,4 -4,4"/> +<!-- voting --> +<g id="node1" class="node"><title>voting</title> +<polygon fill="none" stroke="black" points="120.944,-743.562 80,-756 39.0559,-743.562 39.0942,-723.438 120.906,-723.438 120.944,-743.562"/> +<text text-anchor="middle" x="80" y="-734.3" font-family="Times,serif" font-size="14.00">voting</text> +</g> +<!-- consensus --> +<g id="node2" class="node"><title>consensus</title> +<ellipse fill="none" stroke="black" cx="112" cy="-594" rx="46.2923" ry="18"/> +<text text-anchor="middle" x="112" y="-590.3" font-family="Times,serif" font-size="14.00">consensus</text> +</g> +<!-- voting->consensus --> +<g id="edge1" class="edge"><title>voting->consensus</title> +<path fill="none" stroke="black" d="M121.028,-728.482C145.315,-721.103 174.155,-707.724 189,-684 197.487,-670.436 196.445,-662.162 189,-648 180.933,-632.654 166.19,-620.887 151.748,-612.383"/> +<polygon fill="black" stroke="black" points="153.308,-609.247 142.857,-607.508 149.942,-615.385 153.308,-609.247"/> +</g> +<!-- identity --> +<g id="node3" class="node"><title>identity</title> +<ellipse fill="none" stroke="black" cx="282" cy="-450" rx="37.8943" ry="18"/> +<text text-anchor="middle" x="282" y="-446.3" font-family="Times,serif" font-size="14.00">identity</text> +</g> +<!-- voting->identity --> +<g id="edge2" class="edge"><title>voting->identity</title> +<path fill="none" stroke="black" d="M58.5145,-723.377C45.8789,-714.02 31.0387,-700.353 24,-684 5.02284,-639.911 -2.50901,-616.016 24,-576 46.6577,-541.798 71.8444,-557.396 109,-540 158.351,-516.894 214.207,-487.564 248.77,-469.032"/> +<polygon fill="black" stroke="black" points="250.781,-471.924 257.931,-464.105 247.466,-465.759 250.781,-471.924"/> +</g> +<!-- cadet --> +<g id="node4" class="node"><title>cadet</title> +<ellipse fill="none" stroke="black" cx="538" cy="-450" rx="29.4969" ry="18"/> +<text text-anchor="middle" x="538" y="-446.3" font-family="Times,serif" font-size="14.00">cadet</text> +</g> +<!-- voting->cadet --> +<g id="edge3" class="edge"><title>voting->cadet</title> +<path fill="none" stroke="black" d="M72.0051,-723.243C55.682,-693.149 22.8306,-620.604 57,-576 70.8829,-557.877 390.653,-484.265 500.977,-459.316"/> +<polygon fill="black" stroke="black" points="501.999,-462.673 510.983,-457.057 500.458,-455.845 501.999,-462.673"/> +</g> +<!-- secretsharing --> +<g id="node5" class="node"><title>secretsharing</title> +<ellipse fill="none" stroke="black" cx="123" cy="-666" rx="57.3905" ry="18"/> +<text text-anchor="middle" x="123" y="-662.3" font-family="Times,serif" font-size="14.00">secretsharing</text> +</g> +<!-- voting->secretsharing --> +<g id="edge4" class="edge"><title>voting->secretsharing</title> +<path fill="none" stroke="black" d="M88.4954,-723.17C93.8716,-714.418 100.986,-702.837 107.357,-692.466"/> +<polygon fill="black" stroke="black" points="110.45,-694.117 112.702,-683.764 104.486,-690.453 110.45,-694.117"/> +</g> +<!-- consensus->cadet --> +<g id="edge72" class="edge"><title>consensus->cadet</title> +<path fill="none" stroke="black" d="M146.507,-581.905C153.275,-579.85 160.34,-577.79 167,-576 236.135,-557.417 256.193,-562.96 324,-540 360.547,-527.625 367.474,-519.056 403,-504 437.068,-489.562 476.509,-474.236 503.927,-463.798"/> +<polygon fill="black" stroke="black" points="505.344,-467.004 513.453,-460.185 502.862,-460.459 505.344,-467.004"/> +</g> +<!-- set --> +<g id="node24" class="node"><title>set</title> +<ellipse fill="none" stroke="black" cx="517" cy="-522" rx="27" ry="18"/> +<text text-anchor="middle" x="517" y="-518.3" font-family="Times,serif" font-size="14.00">set</text> +</g> +<!-- consensus->set --> +<g id="edge71" class="edge"><title>consensus->set</title> +<path fill="none" stroke="black" d="M145.818,-581.678C152.772,-579.596 160.083,-577.583 167,-576 182.24,-572.511 394.44,-541.075 480.815,-528.33"/> +<polygon fill="black" stroke="black" points="481.561,-531.758 490.943,-526.837 480.539,-524.833 481.561,-531.758"/> +</g> +<!-- dht --> +<g id="node7" class="node"><title>dht</title> +<ellipse fill="none" stroke="black" cx="756" cy="-378" rx="27" ry="18"/> +<text text-anchor="middle" x="756" y="-374.3" font-family="Times,serif" font-size="14.00">dht</text> +</g> +<!-- cadet->dht --> +<g id="edge51" class="edge"><title>cadet->dht</title> +<path fill="none" stroke="black" d="M563.434,-440.833C602.822,-428.186 678.592,-403.856 722.428,-389.78"/> +<polygon fill="black" stroke="black" points="723.607,-393.078 732.058,-386.688 721.467,-386.413 723.607,-393.078"/> +</g> +<!-- core --> +<g id="node8" class="node"><title>core</title> +<ellipse fill="none" stroke="black" cx="555" cy="-234" rx="27" ry="18"/> +<text text-anchor="middle" x="555" y="-230.3" font-family="Times,serif" font-size="14.00">core</text> +</g> +<!-- cadet->core --> +<g id="edge50" class="edge"><title>cadet->core</title> +<path fill="none" stroke="black" d="M539.362,-431.849C542.303,-394.832 549.266,-307.181 552.824,-262.386"/> +<polygon fill="black" stroke="black" points="556.328,-262.478 553.631,-252.232 549.35,-261.924 556.328,-262.478"/> +</g> +<!-- block --> +<g id="node11" class="node"><title>block</title> +<polygon fill="none" stroke="black" points="429,-324 385.598,-306 429,-288 472.402,-306 429,-324"/> +<text text-anchor="middle" x="429" y="-302.3" font-family="Times,serif" font-size="14.00">block</text> +</g> +<!-- cadet->block --> +<g id="edge52" class="edge"><title>cadet->block</title> +<path fill="none" stroke="blue" stroke-dasharray="1,5" d="M522.106,-434.467C511.33,-424.227 497.085,-409.913 486,-396 469.058,-374.736 452.633,-348.272 441.802,-329.75"/> +<polygon fill="blue" stroke="blue" points="444.702,-327.773 436.674,-320.859 438.638,-331.27 444.702,-327.773"/> +</g> +<!-- secretsharing->consensus --> +<g id="edge5" class="edge"><title>secretsharing->consensus</title> +<path fill="none" stroke="black" d="M120.281,-647.697C119.069,-639.983 117.612,-630.712 116.261,-622.112"/> +<polygon fill="black" stroke="black" points="119.698,-621.44 114.688,-612.104 112.783,-622.526 119.698,-621.44"/> +</g> +<!-- fs --> +<g id="node6" class="node"><title>fs</title> +<polygon fill="none" stroke="black" points="100,-527.562 73,-540 46,-527.562 46.0252,-507.438 99.9748,-507.438 100,-527.562"/> +<text text-anchor="middle" x="73" y="-518.3" font-family="Times,serif" font-size="14.00">fs</text> +</g> +<!-- fs->identity --> +<g id="edge12" class="edge"><title>fs->identity</title> +<path fill="none" stroke="black" d="M100.21,-509.307C104.786,-507.46 109.507,-505.625 114,-504 164.764,-485.643 178.566,-484.387 230,-468 233.971,-466.735 238.108,-465.404 242.237,-464.067"/> +<polygon fill="black" stroke="black" points="243.351,-467.386 251.778,-460.965 241.186,-460.729 243.351,-467.386"/> +</g> +<!-- fs->cadet --> +<g id="edge9" class="edge"><title>fs->cadet</title> +<path fill="none" stroke="black" d="M100.01,-516.934C178.772,-505.077 408.387,-470.512 499.803,-456.75"/> +<polygon fill="black" stroke="black" points="500.372,-460.204 509.74,-455.254 499.33,-453.282 500.372,-460.204"/> +</g> +<!-- fs->dht --> +<g id="edge6" class="edge"><title>fs->dht</title> +<path fill="none" stroke="black" d="M100.081,-509.411C132.571,-495.433 183.726,-473.164 192,-468 213.144,-454.802 212.035,-441.688 235,-432 322.67,-395.017 615.27,-383.079 719.081,-379.955"/> +<polygon fill="black" stroke="black" points="719.199,-383.453 729.093,-379.664 718.996,-376.456 719.199,-383.453"/> +</g> +<!-- fs->core --> +<g id="edge7" class="edge"><title>fs->core</title> +<path fill="none" stroke="black" d="M65.0877,-507.277C55.5997,-488.827 42.6595,-455.618 57,-432 93.0072,-372.699 269.007,-312.27 334,-288 397.135,-264.424 474.404,-248.714 518.841,-240.869"/> +<polygon fill="black" stroke="black" points="519.614,-244.287 528.871,-239.134 518.42,-237.39 519.614,-244.287"/> +</g> +<!-- datastore --> +<g id="node9" class="node"><title>datastore</title> +<ellipse fill="none" stroke="black" cx="108" cy="-450" rx="42.4939" ry="18"/> +<text text-anchor="middle" x="108" y="-446.3" font-family="Times,serif" font-size="14.00">datastore</text> +</g> +<!-- fs->datastore --> +<g id="edge8" class="edge"><title>fs->datastore</title> +<path fill="none" stroke="black" d="M79.9149,-507.17C84.2467,-498.507 89.9645,-487.071 95.1098,-476.78"/> +<polygon fill="black" stroke="black" points="98.2763,-478.274 99.618,-467.764 92.0153,-475.143 98.2763,-478.274"/> +</g> +<!-- ats --> +<g id="node10" class="node"><title>ats</title> +<ellipse fill="none" stroke="black" cx="385" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="385" y="-86.3" font-family="Times,serif" font-size="14.00">ats</text> +</g> +<!-- fs->ats --> +<g id="edge10" class="edge"><title>fs->ats</title> +<path fill="none" stroke="black" d="M60.2844,-507.296C39.3694,-483.267 0,-431.113 0,-379 0,-379 0,-379 0,-233 0,-159.097 252.872,-111.714 348.742,-96.4063"/> +<polygon fill="black" stroke="black" points="349.504,-99.8296 358.84,-94.8203 348.418,-92.9144 349.504,-99.8296"/> +</g> +<!-- fs->block --> +<g id="edge11" class="edge"><title>fs->block</title> +<path fill="none" stroke="blue" stroke-dasharray="1,5" d="M99.0792,-507.426C116.81,-497.613 140.343,-483.417 159,-468 175.732,-454.174 174.815,-445.258 192,-432 259.224,-380.139 351.062,-338.689 398.245,-319.166"/> +<polygon fill="blue" stroke="blue" points="399.679,-322.361 407.611,-315.337 397.03,-315.881 399.679,-322.361"/> +</g> +<!-- dht->core --> +<g id="edge42" class="edge"><title>dht->core</title> +<path fill="none" stroke="black" d="M780.722,-370.233C802.496,-362.816 832.877,-348.569 847,-324 854.974,-310.128 857.48,-300.09 847,-288 810.092,-245.421 650.341,-266.908 596,-252 592.628,-251.075 589.164,-249.944 585.745,-248.709"/> +<polygon fill="black" stroke="black" points="586.936,-245.416 576.348,-245.037 584.388,-251.936 586.936,-245.416"/> +</g> +<!-- dht->block --> +<g id="edge44" class="edge"><title>dht->block</title> +<path fill="none" stroke="black" d="M730.132,-372.774C681.84,-364.697 574.817,-345.908 486,-324 478.104,-322.052 469.673,-319.694 461.782,-317.363"/> +<polygon fill="black" stroke="black" points="462.742,-313.997 452.157,-314.456 460.718,-320.698 462.742,-313.997"/> +</g> +<!-- nse --> +<g id="node27" class="node"><title>nse</title> +<ellipse fill="none" stroke="black" cx="811" cy="-306" rx="27" ry="18"/> +<text text-anchor="middle" x="811" y="-302.3" font-family="Times,serif" font-size="14.00">nse</text> +</g> +<!-- dht->nse --> +<g id="edge43" class="edge"><title>dht->nse</title> +<path fill="none" stroke="black" d="M767.934,-361.811C775.214,-352.546 784.663,-340.52 792.854,-330.094"/> +<polygon fill="black" stroke="black" points="795.663,-332.185 799.089,-322.159 790.159,-327.86 795.663,-332.185"/> +</g> +<!-- datacache --> +<g id="node28" class="node"><title>datacache</title> +<polygon fill="none" stroke="black" points="702,-324 637.818,-306 702,-288 766.182,-306 702,-324"/> +<text text-anchor="middle" x="702" y="-302.3" font-family="Times,serif" font-size="14.00">datacache</text> +</g> +<!-- dht->datacache --> +<g id="edge45" class="edge"><title>dht->datacache</title> +<path fill="none" stroke="black" d="M744.016,-361.465C736.66,-351.93 727.125,-339.57 718.998,-329.034"/> +<polygon fill="black" stroke="black" points="721.73,-326.846 712.851,-321.066 716.187,-331.121 721.73,-326.846"/> +</g> +<!-- peerinfo --> +<g id="node29" class="node"><title>peerinfo</title> +<ellipse fill="none" stroke="black" cx="518" cy="-90" rx="40.0939" ry="18"/> +<text text-anchor="middle" x="518" y="-86.3" font-family="Times,serif" font-size="14.00">peerinfo</text> +</g> +<!-- dht->peerinfo --> +<g id="edge46" class="edge"><title>dht->peerinfo</title> +<path fill="none" stroke="black" d="M728.828,-376.457C687.438,-374.282 608.033,-364.658 557,-324 495.436,-274.952 504.26,-168.494 512.535,-118.27"/> +<polygon fill="black" stroke="black" points="516.027,-118.624 514.32,-108.168 509.133,-117.406 516.027,-118.624"/> +</g> +<!-- hello --> +<g id="node30" class="node"><title>hello</title> +<polygon fill="none" stroke="black" points="854,-36 813.614,-18 854,-3.55271e-15 894.386,-18 854,-36"/> +<text text-anchor="middle" x="854" y="-14.3" font-family="Times,serif" font-size="14.00">hello</text> +</g> +<!-- dht->hello --> +<g id="edge47" class="edge"><title>dht->hello</title> +<path fill="none" stroke="black" d="M782.364,-373.864C833.24,-367.278 942.225,-350.399 968,-324 996.322,-294.992 988,-275.542 988,-235 988,-235 988,-235 988,-161 988,-99.7534 921.245,-54.2239 881.968,-32.736"/> +<polygon fill="black" stroke="black" points="883.108,-29.3792 872.632,-27.796 879.834,-35.5665 883.108,-29.3792"/> +</g> +<!-- transport --> +<g id="node33" class="node"><title>transport</title> +<ellipse fill="none" stroke="black" cx="680" cy="-162" rx="42.4939" ry="18"/> +<text text-anchor="middle" x="680" y="-158.3" font-family="Times,serif" font-size="14.00">transport</text> +</g> +<!-- core->transport --> +<g id="edge58" class="edge"><title>core->transport</title> +<path fill="none" stroke="black" d="M575.083,-221.753C594.251,-211.02 623.495,-194.643 646.244,-181.903"/> +<polygon fill="black" stroke="black" points="648.219,-184.809 655.234,-176.869 644.799,-178.701 648.219,-184.809"/> +</g> +<!-- exit --> +<g id="node12" class="node"><title>exit</title> +<polygon fill="none" stroke="black" points="952,-540 898,-540 898,-504 952,-504 952,-540"/> +<text text-anchor="middle" x="925" y="-518.3" font-family="Times,serif" font-size="14.00">exit</text> +</g> +<!-- exit->cadet --> +<g id="edge13" class="edge"><title>exit->cadet</title> +<path fill="none" stroke="black" d="M897.67,-514.323C883.742,-511.021 866.513,-507.093 851,-504 752.337,-484.331 635.236,-465.765 576.155,-456.729"/> +<polygon fill="black" stroke="black" points="576.571,-453.252 566.158,-455.206 575.517,-460.172 576.571,-453.252"/> +</g> +<!-- tun --> +<g id="node13" class="node"><title>tun</title> +<polygon fill="none" stroke="black" points="929,-468 897.995,-450 929,-432 960.005,-450 929,-468"/> +<text text-anchor="middle" x="929" y="-446.3" font-family="Times,serif" font-size="14.00">tun</text> +</g> +<!-- exit->tun --> +<g id="edge14" class="edge"><title>exit->tun</title> +<path fill="none" stroke="black" d="M925.989,-503.697C926.436,-495.868 926.975,-486.435 927.473,-477.728"/> +<polygon fill="black" stroke="black" points="930.974,-477.806 928.05,-467.622 923.985,-477.406 930.974,-477.806"/> +</g> +<!-- dnsstub --> +<g id="node14" class="node"><title>dnsstub</title> +<polygon fill="none" stroke="black" points="1032,-468 978.877,-450 1032,-432 1085.12,-450 1032,-468"/> +<text text-anchor="middle" x="1032" y="-446.3" font-family="Times,serif" font-size="14.00">dnsstub</text> +</g> +<!-- exit->dnsstub --> +<g id="edge15" class="edge"><title>exit->dnsstub</title> +<path fill="none" stroke="black" d="M951.175,-503.876C967.88,-492.948 989.443,-478.841 1006.1,-467.947"/> +<polygon fill="black" stroke="black" points="1008.33,-470.67 1014.78,-462.266 1004.49,-464.812 1008.33,-470.67"/> +</g> +<!-- vpn --> +<g id="node15" class="node"><title>vpn</title> +<ellipse fill="none" stroke="black" cx="815" cy="-522" rx="27" ry="18"/> +<text text-anchor="middle" x="815" y="-518.3" font-family="Times,serif" font-size="14.00">vpn</text> +</g> +<!-- vpn->cadet --> +<g id="edge16" class="edge"><title>vpn->cadet</title> +<path fill="none" stroke="black" d="M793.129,-511.116C787.017,-508.578 780.317,-506.003 774,-504 705.524,-482.293 623.185,-465.931 576.085,-457.463"/> +<polygon fill="black" stroke="black" points="576.482,-453.979 566.025,-455.678 575.26,-460.871 576.482,-453.979"/> +</g> +<!-- vpn->tun --> +<g id="edge18" class="edge"><title>vpn->tun</title> +<path fill="none" stroke="black" d="M834.339,-509.125C854.149,-496.961 884.945,-478.051 905.995,-465.126"/> +<polygon fill="black" stroke="black" points="907.942,-468.038 914.632,-459.822 904.279,-462.072 907.942,-468.038"/> +</g> +<!-- regex --> +<g id="node16" class="node"><title>regex</title> +<ellipse fill="none" stroke="black" cx="756" cy="-450" rx="30.5947" ry="18"/> +<text text-anchor="middle" x="756" y="-446.3" font-family="Times,serif" font-size="14.00">regex</text> +</g> +<!-- vpn->regex --> +<g id="edge17" class="edge"><title>vpn->regex</title> +<path fill="none" stroke="black" d="M802.198,-505.811C794.496,-496.673 784.53,-484.849 775.827,-474.524"/> +<polygon fill="black" stroke="black" points="778.307,-472.035 769.186,-466.644 772.954,-476.546 778.307,-472.035"/> +</g> +<!-- regex->dht --> +<g id="edge57" class="edge"><title>regex->dht</title> +<path fill="none" stroke="black" d="M756,-431.697C756,-423.983 756,-414.712 756,-406.112"/> +<polygon fill="black" stroke="black" points="759.5,-406.104 756,-396.104 752.5,-406.104 759.5,-406.104"/> +</g> +<!-- regex->block --> +<g id="edge49" class="edge"><title>regex->block</title> +<path fill="none" stroke="blue" stroke-dasharray="1,5" d="M732.22,-438.673C673.767,-413.29 523.157,-347.888 458.838,-319.957"/> +<polygon fill="blue" stroke="blue" points="459.85,-316.581 449.283,-315.808 457.061,-323.002 459.85,-316.581"/> +</g> +<!-- pt --> +<g id="node17" class="node"><title>pt</title> +<polygon fill="none" stroke="black" points="986,-599.562 959,-612 932,-599.562 932.025,-579.438 985.975,-579.438 986,-599.562"/> +<text text-anchor="middle" x="959" y="-590.3" font-family="Times,serif" font-size="14.00">pt</text> +</g> +<!-- pt->cadet --> +<g id="edge19" class="edge"><title>pt->cadet</title> +<path fill="none" stroke="black" d="M931.717,-579.439C928.807,-578.197 925.864,-577.023 923,-576 860.875,-553.809 836.841,-571.725 779,-540 758.602,-528.812 761.339,-515.294 741,-504 688.34,-474.76 619.008,-461.18 576.516,-455.23"/> +<polygon fill="black" stroke="black" points="576.951,-451.758 566.577,-453.91 576.029,-458.697 576.951,-451.758"/> +</g> +<!-- pt->vpn --> +<g id="edge20" class="edge"><title>pt->vpn</title> +<path fill="none" stroke="black" d="M931.915,-579.834C907.352,-567.894 871.179,-550.309 845.585,-537.868"/> +<polygon fill="black" stroke="black" points="846.864,-534.598 836.34,-533.373 843.803,-540.893 846.864,-534.598"/> +</g> +<!-- dns --> +<g id="node18" class="node"><title>dns</title> +<ellipse fill="none" stroke="black" cx="997" cy="-522" rx="27" ry="18"/> +<text text-anchor="middle" x="997" y="-518.3" font-family="Times,serif" font-size="14.00">dns</text> +</g> +<!-- pt->dns --> +<g id="edge21" class="edge"><title>pt->dns</title> +<path fill="none" stroke="black" d="M966.508,-579.17C971.277,-570.385 977.594,-558.748 983.241,-548.346"/> +<polygon fill="black" stroke="black" points="986.48,-549.716 988.175,-539.257 980.328,-546.376 986.48,-549.716"/> +</g> +<!-- dnsparser --> +<g id="node19" class="node"><title>dnsparser</title> +<polygon fill="none" stroke="black" points="1143,-540 1080.49,-522 1143,-504 1205.51,-522 1143,-540"/> +<text text-anchor="middle" x="1143" y="-518.3" font-family="Times,serif" font-size="14.00">dnsparser</text> +</g> +<!-- pt->dnsparser --> +<g id="edge22" class="edge"><title>pt->dnsparser</title> +<path fill="none" stroke="black" d="M986.15,-582.671C1018.5,-570.365 1072.61,-549.781 1108.05,-536.296"/> +<polygon fill="black" stroke="black" points="1109.42,-539.521 1117.52,-532.694 1106.93,-532.979 1109.42,-539.521"/> +</g> +<!-- dns->tun --> +<g id="edge23" class="edge"><title>dns->tun</title> +<path fill="none" stroke="black" d="M982.91,-506.496C972.543,-495.824 958.362,-481.226 947.147,-469.681"/> +<polygon fill="black" stroke="black" points="949.418,-466.995 939.94,-462.261 944.397,-471.873 949.418,-466.995"/> +</g> +<!-- dns->dnsstub --> +<g id="edge24" class="edge"><title>dns->dnsstub</title> +<path fill="none" stroke="black" d="M1005.12,-504.765C1009.59,-495.828 1015.21,-484.573 1020.16,-474.673"/> +<polygon fill="black" stroke="black" points="1023.3,-476.227 1024.64,-465.717 1017.04,-473.096 1023.3,-476.227"/> +</g> +<!-- gnsrecord --> +<g id="node25" class="node"><title>gnsrecord</title> +<ellipse fill="none" stroke="black" cx="1192" cy="-450" rx="45.4919" ry="18"/> +<text text-anchor="middle" x="1192" y="-446.3" font-family="Times,serif" font-size="14.00">gnsrecord</text> +</g> +<!-- dnsparser->gnsrecord --> +<g id="edge39" class="edge"><title>dnsparser->gnsrecord</title> +<path fill="none" stroke="blue" stroke-dasharray="1,5" d="M1152.92,-506.834C1159.12,-497.971 1167.29,-486.304 1174.55,-475.928"/> +<polygon fill="blue" stroke="blue" points="1177.51,-477.805 1180.38,-467.606 1171.77,-473.791 1177.51,-477.805"/> +</g> +<!-- zonemaster --> +<g id="node20" class="node"><title>zonemaster</title> +<polygon fill="none" stroke="black" points="914.433,-599.562 851,-612 787.567,-599.562 787.626,-579.438 914.374,-579.438 914.433,-599.562"/> +<text text-anchor="middle" x="851" y="-590.3" font-family="Times,serif" font-size="14.00">zonemaster</text> +</g> +<!-- zonemaster->dht --> +<g id="edge26" class="edge"><title>zonemaster->dht</title> +<path fill="none" stroke="black" d="M853.642,-579.298C856.499,-561.438 859.583,-529.479 851,-504 836.849,-461.994 802.343,-422.916 779.052,-399.996"/> +<polygon fill="black" stroke="black" points="781.264,-397.267 771.628,-392.861 776.413,-402.314 781.264,-397.267"/> +</g> +<!-- namestore --> +<g id="node21" class="node"><title>namestore</title> +<ellipse fill="none" stroke="black" cx="685" cy="-522" rx="47.3916" ry="18"/> +<text text-anchor="middle" x="685" y="-518.3" font-family="Times,serif" font-size="14.00">namestore</text> +</g> +<!-- zonemaster->namestore --> +<g id="edge25" class="edge"><title>zonemaster->namestore</title> +<path fill="none" stroke="black" d="M818.599,-579.337C791.812,-568.041 753.653,-551.95 724.971,-539.855"/> +<polygon fill="black" stroke="black" points="726.212,-536.58 715.637,-535.919 723.492,-543.03 726.212,-536.58"/> +</g> +<!-- namestore->identity --> +<g id="edge37" class="edge"><title>namestore->identity</title> +<path fill="none" stroke="black" d="M642.634,-513.641C566.046,-500.338 405.247,-472.408 326.867,-458.793"/> +<polygon fill="black" stroke="black" points="327.275,-455.312 316.823,-457.049 326.077,-462.208 327.275,-455.312"/> +</g> +<!-- namestore->gnsrecord --> +<g id="edge38" class="edge"><title>namestore->gnsrecord</title> +<path fill="none" stroke="black" d="M726.085,-512.971C742.503,-509.919 761.609,-506.564 779,-504 918.405,-483.451 954.522,-488.05 1094,-468 1109.42,-465.784 1126.13,-463.019 1141.32,-460.368"/> +<polygon fill="black" stroke="black" points="1142.32,-463.746 1151.56,-458.558 1141.1,-456.853 1142.32,-463.746"/> +</g> +<!-- gns --> +<g id="node22" class="node"><title>gns</title> +<ellipse fill="none" stroke="black" cx="850" cy="-666" rx="27" ry="18"/> +<text text-anchor="middle" x="850" y="-662.3" font-family="Times,serif" font-size="14.00">gns</text> +</g> +<!-- gns->identity --> +<g id="edge34" class="edge"><title>gns->identity</title> +<path fill="none" stroke="black" d="M823.048,-663.899C740.091,-660.169 489.801,-646.281 417,-612 395.952,-602.089 396.543,-591.28 379,-576 359.686,-559.178 350.742,-559.383 334,-540 317.464,-520.856 303.335,-495.717 293.996,-477.041"/> +<polygon fill="black" stroke="black" points="297.085,-475.39 289.562,-467.93 290.791,-478.453 297.085,-475.39"/> +</g> +<!-- gns->dht --> +<g id="edge28" class="edge"><title>gns->dht</title> +<path fill="none" stroke="black" d="M870.511,-653.985C875.467,-651.699 880.829,-649.525 886,-648 1002.11,-613.746 1046.93,-664.524 1156,-612 1236.59,-573.194 1305.75,-498.559 1246,-432 1215.85,-398.416 902.601,-384.19 793.343,-380.225"/> +<polygon fill="black" stroke="black" points="793.243,-376.719 783.125,-379.863 792.995,-383.715 793.243,-376.719"/> +</g> +<!-- gns->block --> +<g id="edge29" class="edge"><title>gns->block</title> +<path fill="none" stroke="blue" stroke-dasharray="1,5" d="M822.824,-664.872C770.707,-663.582 654.321,-655.598 569,-612 548.284,-601.414 548.925,-590.83 531,-576 509.902,-558.544 496.079,-562.857 481,-540 438.212,-475.142 430.206,-380.324 428.985,-334.208"/> +<polygon fill="blue" stroke="blue" points="432.483,-334.033 428.808,-324.096 425.484,-334.156 432.483,-334.033"/> +</g> +<!-- gns->dnsstub --> +<g id="edge33" class="edge"><title>gns->dnsstub</title> +<path fill="none" stroke="black" d="M871.065,-654.325C875.905,-652.077 881.078,-649.834 886,-648 941.778,-627.217 973.486,-654.658 1015,-612 1049.82,-576.222 1044.5,-512.583 1037.99,-476.971"/> +<polygon fill="black" stroke="black" points="1041.36,-476 1035.97,-466.88 1034.5,-477.373 1041.36,-476"/> +</g> +<!-- gns->vpn --> +<g id="edge31" class="edge"><title>gns->vpn</title> +<path fill="none" stroke="black" d="M827.858,-655.35C811.041,-646.688 789.135,-632.213 779,-612 768.086,-590.233 781.353,-564.325 794.756,-546.091"/> +<polygon fill="black" stroke="black" points="797.832,-547.84 801.242,-537.808 792.321,-543.524 797.832,-547.84"/> +</g> +<!-- gns->dns --> +<g id="edge27" class="edge"><title>gns->dns</title> +<path fill="none" stroke="black" d="M871.13,-654.496C875.967,-652.239 881.122,-649.949 886,-648 933.377,-629.072 964.65,-653.009 995,-612 1008.03,-594.39 1007.25,-568.995 1003.95,-549.835"/> +<polygon fill="black" stroke="black" points="1007.35,-549.022 1001.93,-539.921 1000.49,-550.418 1007.35,-549.022"/> +</g> +<!-- gns->dnsparser --> +<g id="edge32" class="edge"><title>gns->dnsparser</title> +<path fill="none" stroke="black" d="M870.586,-654.227C875.54,-651.931 880.881,-649.692 886,-648 963.461,-622.391 995.505,-653.066 1066,-612 1093.37,-596.054 1115.84,-566.774 1129.29,-546.163"/> +<polygon fill="black" stroke="black" points="1132.29,-547.978 1134.66,-537.654 1126.37,-544.243 1132.29,-547.978"/> +</g> +<!-- revocation --> +<g id="node23" class="node"><title>revocation</title> +<ellipse fill="none" stroke="black" cx="474" cy="-594" rx="48.1917" ry="18"/> +<text text-anchor="middle" x="474" y="-590.3" font-family="Times,serif" font-size="14.00">revocation</text> +</g> +<!-- gns->revocation --> +<g id="edge30" class="edge"><title>gns->revocation</title> +<path fill="none" stroke="black" d="M823.776,-661.482C769.658,-654.024 641.808,-635.374 536,-612 531.019,-610.9 525.841,-609.65 520.694,-608.34"/> +<polygon fill="black" stroke="black" points="521.456,-604.922 510.895,-605.77 519.68,-611.693 521.456,-604.922"/> +</g> +<!-- gns->gnsrecord --> +<g id="edge41" class="edge"><title>gns->gnsrecord</title> +<path fill="none" stroke="black" d="M870.549,-654.113C875.504,-651.822 880.856,-649.613 886,-648 978.027,-619.137 1009.84,-646.249 1100,-612 1156.37,-590.587 1185.79,-592.754 1215,-540 1225.98,-520.174 1217.7,-494.957 1208.15,-476.431"/> +<polygon fill="black" stroke="black" points="1211.2,-474.717 1203.29,-467.672 1205.08,-478.114 1211.2,-474.717"/> +</g> +<!-- revocation->core --> +<g id="edge35" class="edge"><title>revocation->core</title> +<path fill="none" stroke="black" d="M447.586,-578.755C410.639,-556.683 348,-510.49 348,-451 348,-451 348,-451 348,-377 348,-335.398 347.208,-317.038 377,-288 415.046,-250.916 477.859,-239.613 517.794,-236.267"/> +<polygon fill="black" stroke="black" points="518.191,-239.747 527.918,-235.547 517.695,-232.765 518.191,-239.747"/> +</g> +<!-- revocation->set --> +<g id="edge36" class="edge"><title>revocation->set</title> +<path fill="none" stroke="black" d="M484.409,-576.055C489.683,-567.469 496.183,-556.888 501.987,-547.439"/> +<polygon fill="black" stroke="black" points="505.024,-549.182 507.276,-538.829 499.06,-545.518 505.024,-549.182"/> +</g> +<!-- set->cadet --> +<g id="edge75" class="edge"><title>set->cadet</title> +<path fill="none" stroke="black" d="M522.084,-504.055C524.482,-496.059 527.401,-486.331 530.08,-477.4"/> +<polygon fill="black" stroke="black" points="533.442,-478.373 532.963,-467.789 526.737,-476.362 533.442,-478.373"/> +</g> +<!-- conversation --> +<g id="node26" class="node"><title>conversation</title> +<polygon fill="none" stroke="black" points="1017.18,-743.562 948,-756 878.82,-743.562 878.884,-723.438 1017.12,-723.438 1017.18,-743.562"/> +<text text-anchor="middle" x="948" y="-734.3" font-family="Times,serif" font-size="14.00">conversation</text> +</g> +<!-- conversation->cadet --> +<g id="edge53" class="edge"><title>conversation->cadet</title> +<path fill="none" stroke="black" d="M900.537,-723.335C873.864,-714.435 840.677,-701.257 814,-684 756.206,-646.615 759.329,-615.558 703,-576 673.069,-554.981 658.318,-561.866 629,-540 611.601,-527.024 611.36,-519.336 596,-504 585.077,-493.094 572.479,-481.475 561.82,-471.903"/> +<polygon fill="black" stroke="black" points="563.901,-469.069 554.107,-465.028 559.243,-474.295 563.901,-469.069"/> +</g> +<!-- conversation->gns --> +<g id="edge54" class="edge"><title>conversation->gns</title> +<path fill="none" stroke="black" d="M928.638,-723.17C913.533,-712.381 892.408,-697.291 875.857,-685.469"/> +<polygon fill="black" stroke="black" points="877.846,-682.589 867.674,-679.625 873.777,-688.285 877.846,-682.589"/> +</g> +<!-- conversation->gnsrecord --> +<g id="edge40" class="edge"><title>conversation->gnsrecord</title> +<path fill="none" stroke="blue" stroke-dasharray="1,5" d="M1017.21,-728.51C1076.25,-719.968 1155.24,-705.041 1179,-684 1241.33,-628.786 1256.97,-583.117 1231,-504 1227.58,-493.58 1221.24,-483.522 1214.65,-475.019"/> +<polygon fill="blue" stroke="blue" points="1217.15,-472.551 1208.08,-467.08 1211.76,-477.015 1217.15,-472.551"/> +</g> +<!-- speaker --> +<g id="node31" class="node"><title>speaker</title> +<polygon fill="none" stroke="black" points="948,-684 894.877,-666 948,-648 1001.12,-666 948,-684"/> +<text text-anchor="middle" x="948" y="-662.3" font-family="Times,serif" font-size="14.00">speaker</text> +</g> +<!-- conversation->speaker --> +<g id="edge55" class="edge"><title>conversation->speaker</title> +<path fill="none" stroke="black" d="M948,-723.17C948,-714.919 948,-704.153 948,-694.256"/> +<polygon fill="black" stroke="black" points="951.5,-694.019 948,-684.019 944.5,-694.019 951.5,-694.019"/> +</g> +<!-- microphone --> +<g id="node32" class="node"><title>microphone</title> +<polygon fill="none" stroke="black" points="1095,-684 1019.76,-666 1095,-648 1170.24,-666 1095,-684"/> +<text text-anchor="middle" x="1095" y="-662.3" font-family="Times,serif" font-size="14.00">microphone</text> +</g> +<!-- conversation->microphone --> +<g id="edge56" class="edge"><title>conversation->microphone</title> +<path fill="none" stroke="black" d="M976.692,-723.337C1001.14,-711.695 1036.29,-694.958 1061.92,-682.753"/> +<polygon fill="black" stroke="black" points="1063.71,-685.777 1071.23,-678.318 1060.7,-679.457 1063.71,-685.777"/> +</g> +<!-- nse->core --> +<g id="edge48" class="edge"><title>nse->core</title> +<path fill="none" stroke="black" d="M790.412,-294.231C785.459,-291.935 780.118,-289.695 775,-288 697.966,-262.487 673.625,-275.652 596,-252 592.83,-251.034 589.569,-249.913 586.336,-248.716"/> +<polygon fill="black" stroke="black" points="587.428,-245.385 576.841,-244.978 584.864,-251.899 587.428,-245.385"/> +</g> +<!-- peerinfo->hello --> +<g id="edge76" class="edge"><title>peerinfo->hello</title> +<path fill="none" stroke="black" d="M548.194,-77.9517C554.676,-75.8006 561.524,-73.6914 568,-72 654.752,-49.3407 758.747,-32.6176 814.333,-24.4966"/> +<polygon fill="black" stroke="black" points="815.063,-27.9277 824.46,-23.0344 814.062,-20.9995 815.063,-27.9277"/> +</g> +<!-- transport->ats --> +<g id="edge66" class="edge"><title>transport->ats</title> +<path fill="none" stroke="black" d="M644.122,-152.487C587.168,-138.972 476.742,-112.769 420.21,-99.3548"/> +<polygon fill="black" stroke="black" points="420.844,-95.9082 410.306,-97.0048 419.228,-102.719 420.844,-95.9082"/> +</g> +<!-- transport->peerinfo --> +<g id="edge68" class="edge"><title>transport->peerinfo</title> +<path fill="none" stroke="black" d="M651.411,-148.647C624.725,-137.116 584.738,-119.837 555.501,-107.204"/> +<polygon fill="black" stroke="black" points="556.601,-103.867 546.033,-103.113 553.824,-110.292 556.601,-103.867"/> +</g> +<!-- transport->hello --> +<g id="edge67" class="edge"><title>transport->hello</title> +<path fill="none" stroke="black" d="M721.405,-157.922C756.719,-153.037 806.213,-140.439 835,-108 850.042,-91.0495 854.193,-65.1533 854.935,-45.6573"/> +<polygon fill="black" stroke="black" points="858.435,-45.6195 855.044,-35.5822 851.436,-45.5437 858.435,-45.6195"/> +</g> +<!-- nat --> +<g id="node36" class="node"><title>nat</title> +<polygon fill="none" stroke="black" points="796,-108 765.835,-90 796,-72 826.165,-90 796,-108"/> +<text text-anchor="middle" x="796" y="-86.3" font-family="Times,serif" font-size="14.00">nat</text> +</g> +<!-- transport->nat --> +<g id="edge69" class="edge"><title>transport->nat</title> +<path fill="none" stroke="black" d="M703.474,-146.834C723.706,-134.626 752.749,-117.1 772.878,-104.953"/> +<polygon fill="black" stroke="black" points="774.946,-107.793 781.7,-99.6294 771.33,-101.799 774.946,-107.793"/> +</g> +<!-- fragmentation --> +<g id="node37" class="node"><title>fragmentation</title> +<polygon fill="none" stroke="black" points="662,-108 576.537,-90 662,-72 747.463,-90 662,-108"/> +<text text-anchor="middle" x="662" y="-86.3" font-family="Times,serif" font-size="14.00">fragmentation</text> +</g> +<!-- transport->fragmentation --> +<g id="edge70" class="edge"><title>transport->fragmentation</title> +<path fill="none" stroke="black" d="M675.643,-144.055C673.556,-135.941 671.011,-126.044 668.687,-117.006"/> +<polygon fill="black" stroke="black" points="672.073,-116.12 666.193,-107.307 665.294,-117.864 672.073,-116.12"/> +</g> +<!-- topology --> +<g id="node34" class="node"><title>topology</title> +<polygon fill="none" stroke="black" points="959.5,-324 894.5,-324 894.5,-288 959.5,-288 959.5,-324"/> +<text text-anchor="middle" x="927" y="-302.3" font-family="Times,serif" font-size="14.00">topology</text> +</g> +<!-- topology->core --> +<g id="edge61" class="edge"><title>topology->core</title> +<path fill="none" stroke="black" d="M894.413,-292.17C889.63,-290.593 884.724,-289.139 880,-288 756.312,-258.18 718.97,-284.656 596,-252 592.621,-251.103 589.151,-249.989 585.73,-248.765"/> +<polygon fill="black" stroke="black" points="586.918,-245.471 576.329,-245.106 584.379,-251.995 586.918,-245.471"/> +</g> +<!-- topology->peerinfo --> +<g id="edge59" class="edge"><title>topology->peerinfo</title> +<path fill="none" stroke="black" d="M894.233,-295.354C862.315,-285.612 812.655,-269.532 771,-252 705.781,-224.55 688.475,-218.336 629,-180 597.704,-159.827 564.778,-132.553 542.992,-113.534"/> +<polygon fill="black" stroke="black" points="545.032,-110.666 535.215,-106.682 540.404,-115.919 545.032,-110.666"/> +</g> +<!-- topology->hello --> +<g id="edge62" class="edge"><title>topology->hello</title> +<path fill="none" stroke="black" d="M922.652,-287.966C910.314,-239.626 875.032,-101.398 860.438,-44.2243"/> +<polygon fill="black" stroke="black" points="863.829,-43.3557 857.964,-34.532 857.046,-45.087 863.829,-43.3557"/> +</g> +<!-- topology->transport --> +<g id="edge60" class="edge"><title>topology->transport</title> +<path fill="none" stroke="black" d="M897.206,-287.871C850.798,-261.191 761.564,-209.891 713.17,-182.069"/> +<polygon fill="black" stroke="black" points="714.758,-178.945 704.344,-176.995 711.269,-185.014 714.758,-178.945"/> +</g> +<!-- hostlist --> +<g id="node35" class="node"><title>hostlist</title> +<polygon fill="none" stroke="black" points="214,-324 158,-324 158,-288 214,-288 214,-324"/> +<text text-anchor="middle" x="186" y="-302.3" font-family="Times,serif" font-size="14.00">hostlist</text> +</g> +<!-- hostlist->core --> +<g id="edge63" class="edge"><title>hostlist->core</title> +<path fill="none" stroke="black" d="M214.167,-292.599C218.733,-290.88 223.455,-289.271 228,-288 330.933,-259.219 456.746,-244.294 517.975,-238.275"/> +<polygon fill="black" stroke="black" points="518.666,-241.725 528.286,-237.286 517.998,-234.757 518.666,-241.725"/> +</g> +<!-- hostlist->peerinfo --> +<g id="edge64" class="edge"><title>hostlist->peerinfo</title> +<path fill="none" stroke="black" d="M212.608,-287.849C273.449,-248.632 422.455,-152.586 487.166,-110.875"/> +<polygon fill="black" stroke="black" points="489.21,-113.721 495.719,-105.362 485.418,-107.838 489.21,-113.721"/> +</g> +<!-- hostlist->hello --> +<g id="edge65" class="edge"><title>hostlist->hello</title> +<path fill="none" stroke="black" d="M192.198,-287.715C209.228,-243.039 261.382,-123.627 349,-72 425.521,-26.9118 694.449,-19.9666 805.486,-19.053"/> +<polygon fill="black" stroke="black" points="805.751,-22.5513 815.727,-18.9823 805.703,-15.5515 805.751,-22.5513"/> +</g> +<!-- scalarproduct --> +<g id="node38" class="node"><title>scalarproduct</title> +<ellipse fill="none" stroke="black" cx="636" cy="-594" rx="57.6901" ry="18"/> +<text text-anchor="middle" x="636" y="-590.3" font-family="Times,serif" font-size="14.00">scalarproduct</text> +</g> +<!-- scalarproduct->cadet --> +<g id="edge74" class="edge"><title>scalarproduct->cadet</title> +<path fill="none" stroke="black" d="M622.726,-576.035C614.79,-565.742 604.61,-552.266 596,-540 581.021,-518.662 564.9,-493.752 553.465,-475.721"/> +<polygon fill="black" stroke="black" points="556.241,-473.562 547.943,-466.975 550.322,-477.299 556.241,-473.562"/> +</g> +<!-- scalarproduct->set --> +<g id="edge73" class="edge"><title>scalarproduct->set</title> +<path fill="none" stroke="black" d="M610.179,-577.811C591.059,-566.564 565.021,-551.248 545.33,-539.665"/> +<polygon fill="black" stroke="black" points="546.899,-536.527 536.505,-534.473 543.349,-542.56 546.899,-536.527"/> +</g> +<!-- secushare --> +<g id="node39" class="node"><title>secushare</title> +<polygon fill="none" stroke="black" points="633.366,-815.562 578,-828 522.634,-815.562 522.686,-795.438 633.314,-795.438 633.366,-815.562"/> +<text text-anchor="middle" x="578" y="-806.3" font-family="Times,serif" font-size="14.00">secushare</text> +</g> +<!-- social --> +<g id="node42" class="node"><title>social</title> +<ellipse fill="none" stroke="black" cx="578" cy="-738" rx="31.3957" ry="18"/> +<text text-anchor="middle" x="578" y="-734.3" font-family="Times,serif" font-size="14.00">social</text> +</g> +<!-- secushare->social --> +<g id="edge80" class="edge"><title>secushare->social</title> +<path fill="none" stroke="black" d="M578,-795.17C578,-786.919 578,-776.153 578,-766.256"/> +<polygon fill="black" stroke="black" points="581.5,-766.019 578,-756.019 574.5,-766.019 581.5,-766.019"/> +</g> +<!-- multicast --> +<g id="node40" class="node"><title>multicast</title> +<ellipse fill="none" stroke="black" cx="326" cy="-594" rx="43.5923" ry="18"/> +<text text-anchor="middle" x="326" y="-590.3" font-family="Times,serif" font-size="14.00">multicast</text> +</g> +<!-- multicast->cadet --> +<g id="edge82" class="edge"><title>multicast->cadet</title> +<path fill="none" stroke="black" d="M347.889,-578.338C386.803,-552.273 467.927,-497.935 510.526,-469.402"/> +<polygon fill="black" stroke="black" points="512.642,-472.198 519.003,-463.725 508.747,-466.382 512.642,-472.198"/> +</g> +<!-- psyc --> +<g id="node41" class="node"><title>psyc</title> +<ellipse fill="none" stroke="black" cx="326" cy="-666" rx="27" ry="18"/> +<text text-anchor="middle" x="326" y="-662.3" font-family="Times,serif" font-size="14.00">psyc</text> +</g> +<!-- psyc->multicast --> +<g id="edge81" class="edge"><title>psyc->multicast</title> +<path fill="none" stroke="black" d="M326,-647.697C326,-639.983 326,-630.712 326,-622.112"/> +<polygon fill="black" stroke="black" points="329.5,-622.104 326,-612.104 322.5,-622.104 329.5,-622.104"/> +</g> +<!-- psycstore --> +<g id="node43" class="node"><title>psycstore</title> +<ellipse fill="none" stroke="black" cx="220" cy="-594" rx="44.393" ry="18"/> +<text text-anchor="middle" x="220" y="-590.3" font-family="Times,serif" font-size="14.00">psycstore</text> +</g> +<!-- psyc->psycstore --> +<g id="edge79" class="edge"><title>psyc->psycstore</title> +<path fill="none" stroke="black" d="M307.536,-652.807C291.938,-642.506 269.271,-627.537 250.911,-615.413"/> +<polygon fill="black" stroke="black" points="252.567,-612.312 242.294,-609.722 248.71,-618.154 252.567,-612.312"/> +</g> +<!-- social->gns --> +<g id="edge78" class="edge"><title>social->gns</title> +<path fill="none" stroke="black" d="M605.831,-729.838C655.82,-716.973 760.68,-689.987 815.282,-675.935"/> +<polygon fill="black" stroke="black" points="816.373,-679.268 825.185,-673.386 814.628,-672.489 816.373,-679.268"/> +</g> +<!-- social->psyc --> +<g id="edge77" class="edge"><title>social->psyc</title> +<path fill="none" stroke="black" d="M550.552,-729.376C504.247,-716.513 410.731,-690.537 360.222,-676.506"/> +<polygon fill="black" stroke="black" points="360.996,-673.089 350.424,-673.784 359.122,-679.833 360.996,-673.089"/> +</g> +<!-- rps --> +<g id="node44" class="node"><title>rps</title> +<ellipse fill="none" stroke="black" cx="593" cy="-306" rx="27" ry="18"/> +<text text-anchor="middle" x="593" y="-302.3" font-family="Times,serif" font-size="14.00">rps</text> +</g> +<!-- rps->core --> +<g id="edge83" class="edge"><title>rps->core</title> +<path fill="none" stroke="black" d="M584.187,-288.765C579.582,-280.283 573.845,-269.714 568.679,-260.197"/> +<polygon fill="black" stroke="black" points="571.613,-258.266 563.766,-251.147 565.461,-261.606 571.613,-258.266"/> +</g> +</g> +</svg> diff --git a/investors.html.j2 b/investors.html.j2 deleted file mode 100644 index 5ad01d46..00000000 --- a/investors.html.j2 +++ /dev/null @@ -1,143 +0,0 @@ -{% extends "common/base.j2" %} -{% block body_content %} - -<div class="jumbotron"> - <div class="container text-center"> - <h1>{{ _("Invest in Taler!") }}</h1> - <div class="col-lg-12"> - <p> - {% trans %} - We have created a company, Taler Systems SA in - Luxembourg.<br> - Please contact <tt>invest@taler.net</tt> - if you want to invest in Taler. - {% endtrans %} - </p> - </div> - </div> -</div> - - -<div class="container adorn_h3_bracket"> - <div class="row"> - <div class="col-lg-4"> - <h3>{{ _("The Team") }}</h3> - - <p> - {% trans %} - Our <a href="about.html">team</a> combines world-class business leaders, - cryptographers, software engineers, civil-rights - activists and academics. We are unified by a vision - of how payments should work and the goal of - imposing this vision upon the world. - {% endtrans %} - </p> - - <p> - {% trans %} - We are currently supported by <a href="http://www.inria.fr/">Inria</a>, the French - national institute for research in informatics and - automation, and the <a href="https://renewablefreedom.org/">Renewable Freedom Foundation</a>. - {% endtrans %} - </p> - </div> - <div class="col-lg-4"> - <h3>{{ _("The Technology") }}</h3> - - <p> - {% trans %} - All transactions in Taler are secured using <a href="bibliography.html">modern - cryptography</a> and trust in all parties is - minimized. Financial damage is bounded (for - customers, merchants and the exchange) even in the - case that systems are compromised and private keys - are stolen. Databases can be audited for - consistency, resulting in either the detection of - compromised systems or the demonstration that - participants were honest. Actual transaction costs - are fractions of a cent. - {% endtrans %} - </p> - </div> - <div class="col-lg-4"> - <h3>{{ _("The Business") }}</h3> - - <p> - {% trans %} - The scalable business model for Taler is the operation - of the payment service provider, which converts money from - traditional payment systems (MasterCard, SEPA, UPI, - Visa, Bitcoin, ACH, SWIFT, etc.) to anonymous - electronic coins in the same currency. The customer - can then redeem the electronic coins at a merchant, - who can exchange them for money represented using - traditional payment systems at the exchange. The - exchange charges fees to facilitate the transactions. - {% endtrans %} - </p> - </div> - </div> -</div> - - -<div class="container-fluid c_acronym"> - <div class="container"> - <h2>{{ _("The Business Case") }}</h2> - <div class="row"> - <div class="col-lg-4"> - <a href="{{ url('presentations/investors2017.pdf') }}"><img border=0 class="center-block" width=64 height=64 alt="PDF" src="{{ url('images/pdf.svg') }}"><br><p align="center">{{ _("Download") }}</p></a> - - <p> - {% trans %} - Our <a href="financial-news.html">financial news</a> page - explains in English how Taler can impact current developments in - the global payment market. - {% endtrans %} - </p> - </div> - <div class="col-lg-4" id="canvas-left" style="display:none"> - <canvas id="the-canvas-left"></canvas> - </div> - <div class="col-lg-4" id="canvas-right" style="display:none"> - <canvas id="the-canvas-right"></canvas> - </div> - <script type="text/javascript" src="{{ url('dist/js/pdf.min.js') }}"></script> - <script type="text/javascript" src="{{ url('dist/js/pdf-view.js') }}"></script> - </div> - </div> -</div> - - -<div class="container"> - <div class="row"> - <div class="col-lg-12"> - <h2 id="overview">{{ _("Running a Taler payment service operator") }}</h2> - - <p> - {% trans %} - The payment service operator runs the <em>Taler exchange</em>. - The exchange charges <b>transaction fees</b> to customers or merchants. - Its operational expenses are from wire transfers with the banking - system and the operation of the computing infrastructure. - {% endtrans %} - </p> - - <p> - <ul> - <li>{{ _("Cryptographic operations, bandwidth and storage costs are less than 0.01 cent per transaction.") }}</li> - - <li>{{ _("Multiple Taler transactions can be aggregated into larger wire transfers to merchants to minimize wire transfer costs.") }}</li> - - <li>{{ _("Protocol allows the exchange to charge fees for any expensive operation (withdraw, deposit, refresh, refund or aggregated wire transfers).") }}</li> - - <li>{{ _("Partnership with banks establishes consumer trust.") }}</li> - - <li>{{ _("Partnership with free software community enables rapid deployment.") }}</li> - - </ul> - </div> - </div> -</div> - - -{% endblock body_content %} diff --git a/merchants.html.j2 b/merchants.html.j2 deleted file mode 100644 index 970e5624..00000000 --- a/merchants.html.j2 +++ /dev/null @@ -1,182 +0,0 @@ -{% extends "common/base.j2" %} -{% block body_content %} -<div class="jumbotron"> - <div class="container text-center"> - <h1>{{ _("Advantages for Merchants") }}</h1> - - <p> - {% trans %} - Taler is a cost-effective electronic payment system - which provides you with cryptographic proof that - the payment worked correctly within milliseconds. - Your Web customers pay with previously unknown - levels of convenience without risk of fraud. - {% endtrans %} - </p> - </div> -</div> - -<div class="container adorn_h3_bracket"> - <div class="row"> - <div class="col-lg-4"> - <h3>{{ _("Fast") }}</h3> - - <p> - {% trans %} - Processing transactions with Taler is fast, - allowing you to confirm the transaction with your - customer virtually immediately. Your customers - will appreciate that they do not have to type in - credit card information and play the "verified - by" game. By making payments significantly - more convenient for your customers, you may be able - to use Taler for small transactions that would not - work with credit card payments due to the mental - overhead for customers. - {% endtrans %} - </p> - - </div> - <div class="col-lg-4"> - <h3>{{ _("Secure") }}</h3> - - <p> - {% trans %} - You will have cryptographic proof of payment from the - Taler payment service provider. With Taler you never - handle sensitive customer account information and thus - do not have to undergo any particular security audits - (such as PCI DSS). Your systems will have customer - contracts with qualified signatures for all - transactions which you can use in court in case of - disputes. - {% endtrans %} - </p> - - </div> - <div class="col-lg-4"> - <h3>{{ _("Free") }}</h3> - - <p> - {% trans %} - Taler is free software, and you can use the - liberally-licensed reference code as a starting - point to integrate Taler into your services. To use - Taler, you do not need to pay license fees, and the - free software development model will ensure that - you can select from many competing integrators for - support. - {% endtrans %} - </p> - - </div> - </div> - <div class="row"> - <div class="col-lg-4"> - <h3>{{ _("Cheap") }}</h3> - - <p> - {% trans %} - Taler is uses efficient cryptographic constructions with low - bandwidth and storage requirements. Combined with Taler's strong - security which makes fraud impossible, Taler payment service - providers can operate with very low overhead and - thus offer low transaction fees. - {% endtrans %} - </p> - </div> - <div class="col-lg-4"> - <h3>{{ _("Flexible") }}</h3> - - <p> - {% trans %} - Taler can be used for different currencies (such as - Euros, US Dollars or Bitcoins) and any amount, limited - only by applicable regulatation and what denominations - the payment service provider supports. - {% endtrans %} - </p> - </div> - <div class="col-lg-4"> - <h3>{{ _("Ethical") }}</h3> - - <p> - {% trans %} - Taler prevents tax evasion and money laundering. - Taler's protocols are efficient and do not use wasteful - proof-of-work calculations. Taler encourages - transparency by providing an open standard and free - software reference implementations. - {% endtrans %} - </p> - - </div> - </div> -</div> - -<div class="container-fluid c_acronym"> -<div class="container"> - <h2 id="documentation">{{ _("Manuals for merchants") }}</h2> - <p> - </p><ul> - <li>{{ _("The GNU Taler merchant backend operator manual") }} - (<a href="https://docs.taler.net/merchant/backend/html/manual.html">html</a>, - <a href="https://docs.taler.net/merchant/backend/pdf/manual.pdf">pdf</a>)</li> - <li>{{ _("The GNU Taler Web shop integration tutorial (PHP)") }} - (<a href="https://docs.taler.net/merchant/frontend/php/html/tutorial.html">html</a>, - <a href="https://docs.taler.net/merchant/frontend/php/pdf/tutorial.pdf">pdf</a>)</li> - <li>{{ _("The GNU Taler Web shop integration tutorial (Python)") }} - (<a href="https://docs.taler.net/merchant/frontend/python/html/tutorial.html">html</a>, - <a href="https://docs.taler.net/merchant/frontend/python/pdf/tutorial.pdf">pdf</a>)</li> - </ul> - <p></p> -</div> -</div> - - -<div class="container"> - - <div class="col-lg-6"> - <h2 id="overview">{{ _("The GNU Taler Merchant Backend") }}</h2> - - <p>{{ _("Merchants process payments using the Taler backend:") }}</p> - <p> - <ul> - - <li> - {% trans %} - The backend <b>signs</b> and <b>stores</b> the - complete terms of offers made by the merchant to customers. - For this, the merchant's frontend needs to give the - customer's order in a JSON format to the backend. - {% endtrans %} - </li> - - <li> - {% trans %} - The backend <b>validates</b> payments received from - the wallet and <b>executes</b> them with the Taler - payment service provider (the exchange). For this, - the merchant's frontend must pass the payment - request through to the Taler backend and check the - HTTP status code that is returned. - {% endtrans %} - </li> - - <li> - {% trans %} - The backend can <b>list</b> completed transactions - and <b>map</b> wire transfers to sets of business - transactions, including the exact terms of each - contract. - {% endtrans %} - </li> - - </ul> - </p> - </div> - <div class="col-lg-6"> - <img src="{{ svg_localized('images/backend') }}" alt="{{ _("customer perspective")}}" style="float: right; margin: 5px 5px 5px 5px;" width="100%"> - </div> -</div> <!-- /container --> -{% endblock body_content %} diff --git a/old-news.html.j2 b/old-news.html.j2 index cfdd0598..8780ee01 100644 --- a/old-news.html.j2 +++ b/old-news.html.j2 @@ -7,7 +7,7 @@ <div class="col-lg-12"> <p> {% trans %} - This page documents the GNU Taler history. + This page documents the GNUnet history. {% endtrans %} </p> </div> diff --git a/papers/bellare_blindsigs_proof.pdf b/papers/bellare_blindsigs_proof.pdf Binary files differdeleted file mode 100644 index d73aa27f..00000000 --- a/papers/bellare_blindsigs_proof.pdf +++ /dev/null diff --git a/papers/chaum-blind-signatures.pdf b/papers/chaum-blind-signatures.pdf Binary files differdeleted file mode 100644 index 7c9843fe..00000000 --- a/papers/chaum-blind-signatures.pdf +++ /dev/null diff --git a/papers/taler2016space.pdf b/papers/taler2016space.pdf Binary files differdeleted file mode 100644 index 92437f7b..00000000 --- a/papers/taler2016space.pdf +++ /dev/null diff --git a/presentations/investors2017.pdf b/presentations/investors2017.pdf Binary files differdeleted file mode 100644 index 4f48cda9..00000000 --- a/presentations/investors2017.pdf +++ /dev/null diff --git a/press.html.j2 b/press.html.j2 deleted file mode 100644 index d4e75792..00000000 --- a/press.html.j2 +++ /dev/null @@ -1,50 +0,0 @@ -{% extends "common/base.j2" %} -{% block body_content %} -<div class="container"> -<h1>{{ _("GNU Taler in the Press")}}</h1> - -<h2>2017</h2> -<p> -<ul> - <li><a href="https://news.ycombinator.com/item?id=15274110">Y-combinator</a></li> - <li><a href="http://hackerpublicradio.org/eps.php?id=2222">Hacker Public Radio</a></li> - <li><a href="https://www.secupay.com/de/Node/932">Secupay</a></li> - <li><a href="https://www.developpez.com/actu/142082/Taler-le-systeme-de-paiement-electronique-anonyme-developpe-par-GNU-et-l-INRIA-passe-en-version-0-3-0/">Developpez.com</a></li> - <li><a href="https://yourstory.com/2017/08/techie-tuesdays-richard-stallman/">Techie Tuesdays</a></li> - <li><a href="https://www.heise.de/tp/features/Kryptowaehrung-will-sich-an-den-Oelpreis-binden-3702862.html">Heise</a></li> -</ul> -</p> - -<h2>2016</h2> -<p> -<ul> - <li><a href="https://www.theguardian.com/technology/2016/sep/01/online-publishers-readers-ad-block-surveillance-donate-anonymously">The Guardian</a></li> - <li><a href="https://phoronix.com/scan.php?page=news_item&px=GNU-Taler-0.0.0">Phoronix</a></li> - <li><a href="https://www.reddit.com/r/technology/comments/4mnkin/gnu_taler_000_is_a_free_software_electronic/">Reddit</a></li> - <li><a href="http://www.heise.de/newsticker/meldung/GNU-Taler-Open-Source-Protokoll-fuer-Zahlungen-in-Version-0-0-0-erschienen-3228525.html">Heise</a></li> - <li><a href="http://www.golem.de/news/halbanonymes-bezahlsystem-gnu-taler-soll-kryptowaehrungen-gerechter-machen-1606-121323.html">Golem</a></li> - <li><a href="https://news.ycombinator.com/item?id=11840453">Y-combinator</a></li> - <li><a href="https://np.reddit.com/r/Anarcho_Capitalism/comments/4mnen4/gnutards_came_up_with_an_alternative_to_bitcoin/">Reddit</a></li> - <li><a href="http://www.theregister.co.uk/2016/06/06/gnu_cryptocurrency_aims_at_the_mainstream_economy_not_the_black_market/">The Register</a></li> - <li><a href="http://www.opennet.ru/opennews/art.shtml?num=44544">Opennet</a></li> - <li><a href="http://www.pro-linux.de/news/1/23626/gnu-startet-anonymes-bezahlsystem-taler.html">Pro-Linux</a></li> - <li><a href="https://www.nixp.ru/news/13738.html">nixp</a></li> - <li><a href="https://www.mittelstandswiki.de/2016/06/open-source-geld-gnu-taler-soll-landeswaehrungen-online-verbinden/">Mittelstands Wiki</a></li> - <li><a href="https://www.genbeta.com/especial/el-usuario-merece-que-sea-obligatorio-que-se-respete-su-libertad-entrevista-a-richard-stallman">Genbeta</a></li> - <li><a href="http://www.lupa.cz/clanky/stallman-vydavatele-musi-umoznit-ctenarum-platit-za-zpravy-anonymne/">Lupz</a></li> -</ul> -</p> - -<h2>2015</h2> -<p> -<ul> - <li><a href="https://www.reddit.com/r/Bitcoin/comments/3m037h/taler_a_gnu_attempt_at_replacing_bitcoin/">Reddit</a></li> - <li><a href="https://news.ycombinator.com/item?id=10258312">Y-combinator</a></li> - <li><a href="http://www.heise.de/tp/artikel/46/46089/1.html">Heise</a></li> - <li><a href="https://bitcoinmagazine.com/21901/bitcoin-governments-without-privacy-taxes/">Bitcoinmagazine</a></li> - <li><a href="http://www.econotimes.com/Will-identifiable-digital-currency-become-the-new-normal-88131">EconoTimes</a></li> -</ul> -</p> - -</div> -{% endblock body_content %} diff --git a/team-images/cristina-onete.jpg b/team-images/cristina-onete.jpg Binary files differdeleted file mode 100644 index 393d92a4..00000000 --- a/team-images/cristina-onete.jpg +++ /dev/null diff --git a/team-images/leon-schumacher.jpg b/team-images/leon-schumacher.jpg Binary files differdeleted file mode 100644 index dd38fcd3..00000000 --- a/team-images/leon-schumacher.jpg +++ /dev/null diff --git a/team-images/richard-stallman.jpg b/team-images/richard-stallman.jpg Binary files differdeleted file mode 100644 index 42205b81..00000000 --- a/team-images/richard-stallman.jpg +++ /dev/null diff --git a/wallet.html.j2 b/wallet.html.j2 deleted file mode 100644 index 667e570d..00000000 --- a/wallet.html.j2 +++ /dev/null @@ -1,194 +0,0 @@ -{% extends "common/base.j2" %} - -{% block head_content %} -<link rel="chrome-webstore-item" href="https://chrome.google.com/webstore/detail/millncjiddlpgdmkklmhfadpacifaonc" /> -<script src="web-common/taler-wallet-lib.js" type="text/javascript"></script> - -<script type="application/javascript"> -/* - @licstart The following is the entire license notice for the - JavaScript code in this page. - - Copyright (C) 2015 GNUnet e.V. - - The JavaScript code in this page is free software: you can - redistribute it and/or modify it under the terms of the GNU - Lesser General Public License (GNU LGPL) as published by the Free Software - Foundation, either version 2.1 of the License, or (at your option) - any later version. The code is distributed WITHOUT ANY WARRANTY; - without even the implied warranty of MERCHANTABILITY or FITNESS - FOR A PARTICULAR PURPOSE. See the GNU LGPL for more details. - - As additional permission under GNU LGPL version 2.1 section 7, you - may distribute non-source (e.g., minimized or compacted) forms of - that code without the copy of the GNU LGPL normally required by - section 4, provided you include this license notice and a URL - through which recipients can access the Corresponding Source. - - @licend The above is the entire license notice - for the JavaScript code in this page. -*/ - -var chrome_min_version = '51'; - -function onSuccess() { - console.log("installation successful"); - document.getElementById("install-result").appendChild(document.createTextNode("Installation was successful.")); -} - -function onFailure(detail) { - console.error("installation failed:", detail); - document.getElementById("install-result").appendChild(document.createTextNode("Installation failed: " + detail)); -} - -function installWallet() { - if (window.chrome) { - chrome.webstore.install("https://chrome.google.com/webstore/detail/millncjiddlpgdmkklmhfadpacifaonc", onSuccess, onFailure); - } else { - onFailure("Google Chrome or Chromium is required for installation."); - } -} - -try { - taler.onPresent(function () { - document.getElementById("box-present").style.display = "inherit"; - document.getElementById("box-not-present").style.display = "none"; - }); - taler.onAbsent(function () { - document.getElementById("box-present").style.display = "none"; - document.getElementById("box-not-present").style.display = "inherit"; - }); -} catch (err) {} - -function onLoad() { - if (typeof window.chrome != "object") { - document.getElementById("error-chrome").style.display = "inherit"; - } else { - var m = navigator.userAgent.match(/Chrome\/([0-9.]+)/); - if (null == m || m[1] < chrome_min_version) { - document.getElementById('chrome-min-version').appendChild(document.createTextNode(chrome_min_version)); - document.getElementById('error-chrome-version').style.display = "inherit"; - } - } -} - -document.addEventListener('DOMContentLoaded', onLoad); -</script> - -<style type="text/css"> - .greenbox { - background-color: #5EFF64; - border: solid; - border-radius: 5px; - padding: 0.5em; - } - .bluebox { - background-color: #C2C6FF; - border: solid; - border-radius: 5px; - padding: 0.5em; - } - .error { - font-style: italic; - display: none; - } - #install-result { - font-weight: bold; - } - - main ul li { - margin-bottom: 1em; - } -</style> -{% endblock head_content %} - -{% block body_content %} - <!-- Jumbotron --> - <div class="jumbotron"> - <div class="text-center"> - <h1 lang="en">Taler Wallet</h1> - </div> - </div> - - <div class="container"> - - <div class="row"> - <div class="col-lg-12"> - <p class="greenbox" id="box-present" style="display:none"> - Congratulations, you have installed the Taler wallet. - Check out the <a href="https://demo.taler.net/">demo</a>. - </p> - <p class="bluebox" id="box-not-present" style="display:none"> - You don't have a wallet installed yet. - </p> - </div> <!-- /col-lg-12 --> - </div> <!-- /row --> - - <div class="row"> - <div class="col-lg-12"> - Install the wallet for your browser below, then check out the - <a href="https://demo.taler.net">demonstration</a>. - </div> - </div> <!-- /row --> - - <div class="row"> - <div class="col-lg-6"> - <h2><a href="https://chrome.google.com/webstore/detail/gnu-taler-wallet/millncjiddlpgdmkklmhfadpacifaonc">Google Chrome / Chromium 51+</a></h2> - - <p id="error-chrome" class="error"> - <a href="https://www.google.com/chrome">Google Chrome</a> or <a href="https://www.chromium.org/">Chromium</a> - is required, but it appears you don't have it installed. - </p> - <p id="error-chrome-version" class="error"> - <a href="https://www.google.com/chrome">Google Chrome</a> or <a href="https://www.chromium.org/">Chromium</a> - version <span id="chrome-min-version"></span> or newer is required, but it appears you have an older version.</p> - <div id="inline-install-chrome"> - <button onclick="installWallet()" id="install-button"> - Install wallet - </button> - <noscript> - <em style="color:darkred;">JavaScript is disabled, installation won't work.</em> - </noscript> - <div id="install-result"></div> - </div> - </div> <!-- /col-lg-6 --> - - <div class="col-lg-6"> - <h2><a href="https://addons.mozilla.org/en-US/firefox/addon/taler-wallet/">Mozilla Firefox 57+</a></h2> -<!-- - <h3>Firefox Beta</h3> - <ol> - <li><a href="/releases/taler-wallet/taler-wallet-stable.xpi">Download the wallet</a> (right click, Save Link As...)</li> - <li>On the <code>about:debugging</code> page, "Load temporary extension"</li> - </ol> - - <h3>Firefox Developer Edition</h3> - <p>Either from the <code>about:debugging</code> page like above, or:</p> - <ol> - <li>On the <code>about:config</code> page set <code>xpinstall.signatures.required</code> to <code>false</code></li> - <li><a href="/releases/taler-wallet/taler-wallet-stable.xpi">Install the wallet</a></li> - </ol> ---> - </div> <!-- /col-lg-6 --> - - <div class="col-lg-6"> - <h2>Opera 36+</h2> - - <ol> - <li><a href="https://addons.opera.com/en/extensions/details/download-chrome-extension-9/">Install Download Chrome Extension</a></li> - <li><a href="https://chrome.google.com/webstore/detail/gnu-taler-wallet/millncjiddlpgdmkklmhfadpacifaonc">Install GNU Taler</a> from the Chrome Web Store</li> - </ol> - </div> <!-- /col-lg-6 --> - - </div> <!-- /row --> - - <div class="row"> - - <div class="col-lg-6"> - <h2>Other browsers</h2> - <p>Wallets for other browsers will be provided in the near future.</p> - </div> <!-- /col-lg-6 --> - - </div> <!-- /row --> - </div> <!-- /container --> -{% endblock body_content %} diff --git a/web-common b/web-common deleted file mode 160000 -Subproject caf5a98114402d057ba08b14279eb8e46481a02 |