diff options
-rw-r--r-- | api-mint.rst | 2 | ||||
-rw-r--r-- | dev-wallet-wx.rst | 94 | ||||
-rw-r--r-- | index.rst | 31 | ||||
-rw-r--r-- | wallet.rst | 34 |
4 files changed, 136 insertions, 25 deletions
diff --git a/api-mint.rst b/api-mint.rst index f789050..32ff0c5 100644 --- a/api-mint.rst +++ b/api-mint.rst @@ -216,7 +216,7 @@ When transfering money to the mint such as via SEPA transfers, the mint creates .. http:get:: /reserve/status - Request information about a reserve, including the blinding key that is necessary to withdraw a coin. + Request information about a reserve. :query reserve_pub: EdDSA reserve public key identifying the reserve. diff --git a/dev-wallet-wx.rst b/dev-wallet-wx.rst new file mode 100644 index 0000000..5790f80 --- /dev/null +++ b/dev-wallet-wx.rst @@ -0,0 +1,94 @@ +===================== +WebExtensions Wallet +===================== + +------------ +Introduction +------------ + +The WebExtensions Wallet (*wxwallet*) can be used to pay with GNU Taler on web +sites from within modern web browsers. The `WebExtensions +<https://wiki.mozilla.org/WebExtensions>`_ API interface that enables the +development cross-browser extensions. Google Chrome / Chromium, Mozilla +Firefox, Opera and Microsoft Edge will all offer support for WebExtensions in +the future. + +Currently Chrome hast the best support for WebExtensions (since the API is a superset +of Chrome's extension API). + +----------------------- +Development Environment +----------------------- + +The *wxwallet* mainly written in the `TypeScript +<http://www.typescriptlang.org/>`_ language, which is a statically typed +superset of JavaScript. + +While the *wxwallet* is mainly intended to be run from inside a browser, the +logic is implemented in browser-independent modules that can also be called +from other environments such as `nodejs <https://nodejs.org>`_. This is +especially useful for automatically running unit tests. + + +----------------- +Project Structure +----------------- + +.. parsed-literal:: + + **manifest.json** extension configuration + **package.json** node.js package configuration + **tsconfig.json** TypeScript compiler configuration + **lib/** + **vendor/** 3rd party libraries + **wallet/** actual application logic + **emscripten/** emscripten object file and glue + **test/** + **run_tests.js** nodejs entry point for tests + **tests/** test cases + **content_scripts/notify.ts** wallet<->website signaling + **backgrond/main.ts** backend entry point + **img/** static image resources + **style/** CSS stylesheets + **pages/** pages shown in browser tabs + **popup/** pages shown the extension popup + +---------- +Emscripten +---------- + +`Emscripten <https://kripken.github.io/emscripten-site/index.html>`_ is C/C++ +to JavaScript compiler. Emscripten is used in the *wxwallet* to access +low-level cryptography from *libgcrypt*, and miscellaneous functionality from +*libgnunetutil* and *libtalerwallet*. + + +-------------------------------------- +Target Environments and Modularization +-------------------------------------- + +Modules in the wallet are declared in TypeScript with +the ES6 module syntax. These modules are then compiled +to `SystemJS <https://github.com/systemjs/systemjs>`_ `register` modules. + +SystemJS modules can be loaded from the browser as well as from nodejs. +However they require special entry points that configure the module system, +load modules and execute code. Examples are `backgrond/main.ts` for the +browser and `test/run_tests.js` for nodejs. + +Note that special care has to be taken when loading the Emscript code, +as it is not compatible with the SystemJS module, even in the `globals` +compatibility mode. + +The TypeScript sources in the *wxwallet* are compiled down to ES5, both to +enable running in node.js without transpilers and to avoid a `bug +<https://github.com/Microsoft/TypeScript/issues/6426>`_ in the TypeScript +compiler. + +---------------------------- +IndexedDB Query Abstractions +---------------------------- + +The *wxwallet* uses a fluent-style API for queries on IndexedDB. + +TODO: say more @@ -1,5 +1,5 @@ -Welcome to Taler's REST API documentation! -========================================== +GNU Taler Documentation +======================= We are building an anonymous, taxable payment system using modern cryptography. Customers will use traditional money transfers to send @@ -21,10 +21,17 @@ In this document, we describe the REST-based API of the Mint, which is at the heart of the system. -Contents -======== +Operator Handbook +----------------- -Protocol Specification: +.. toctree:: + :maxdepth: 2 + + impl-mint + + +Protocol Specification +---------------------- .. toctree:: :maxdepth: 2 @@ -33,24 +40,22 @@ Protocol Specification: api-merchant banks -Implementation: + wallet -.. toctree:: - :maxdepth: 2 + wireformats - impl-mint - wallet -Supported Wire Transfer Formats: +Developer Handbook +------------------ .. toctree:: :maxdepth: 2 - wireformats + dev-wallet-wx Indices and tables -================== +------------------ * :ref:`search` @@ -2,13 +2,7 @@ The Wallet Reference ==================== - .. note:: - - This documentation goes in parallel with the wallet's development, so is to be considered as `work in pregress` - until a first operative version of the wallet will be released. - - -This section explains how to set up a wallet. It is worth noting that there are two versions for +This chapter explains how to set up a wallet. It is worth noting that there are two versions for this componenet - one browser based and the other implemented as an `app` for mobile systems. ------- @@ -31,16 +25,34 @@ Rationale: Joining non-canonical URLs with relative URLs (e.g. "mint.example.co results in different and slightly unexpected behavior in some URL handling libraries. Canonical URLs give more predictable results with standard URL joining. +--------------- +Error Handling +--------------- + +--------------- +User Experience +--------------- + +Balance Overview +~~~~~~~~~~~~~~~~ + +Transactions Log +~~~~~~~~~~~~~~~~ + +The transaction log shows all events that lead to a change in balance, including +withdrawal and purchases. + +Error Log +~~~~~~~~~ + + + -------------------- Browser based wallet -------------------- This paragraph gives instructions on how to proceed from getting the source code to build the final `.xpi` that can be installed into the Web browser. - .. note:: - - In this phase of development only support for Mozilla Firefox is provided. - .. ^^^^^^^^^^^^^^^^^^^^^^^. .. Getting the source code. |