View Issue Details

IDProjectCategoryView StatusLast Update
0003850TalerMerchant frontends (Python3)public2024-01-12 14:08
ReporterChristian Grothoff Assigned ToMarcello Stanisci  
PrioritynormalSeverityfeatureReproducibilityN/A
Status closedResolutionfixed 
Platformi7OSDebian GNU/LinuxOS Versionsqueeze
Product Versiongit (master) 
Target Version0.0Fixed in Version0.0 
Summary0003850: need demonstration
DescriptionWe need to have a reasonable toy merchant-mint setup to handle toy transactions. This involves running a toy merchant (toy.taler.net) where the user can 'donate' (i.e. "kudos"), and a toy wallet (demo.taler.net) where the toy merchant sends its coins.

Extra requirements:
0) Webpage should not look like crap
1) Toy merchant must actually have code that does the right thing, and must
   record list of successful transactions (we want to show this code)
2) Toy merchant must offer link to Taler extension for download, and
   link to demo.taler.net (so that the user can go there and 'withdraw'
   kudos).
TagsNo tags attached.

Relationships

parent of 0003851 closedChristian Grothoff need /admin/add/incoming request for (faking) bank deposits 
parent of 0003763 closedMarcello Stanisci wallet needs to support simple spending of coins (sending data for /deposit to merchant) 

Activities

Marcello Stanisci

2015-07-30 13:40

reporter   ~0009510

Last edited: 2015-07-31 12:21

Some design points about the demo merchant.

1. No crypto in PHP.
that is due to the complexity required to compile the code from wrap.c in PHP. It's not possible to simply
take wrap.c and compile it in PHP to extend Zend/PHP. To do that, a lot of simple C statements (even functions
declarations!) must be mediated by some macros provided by Zend/PHP; in other words, that would mean to rewrite
a wrap_php.c. There could also be the chance of using other crypto modules for PHP, but it could be quite error
prone to manipulate binary data (like contracts, etc..) directly in PHP - to say one, a function like GNUNET_CRYPTO_signature_encode
must be implemented from scratch entirely in PHP!; moreover,these crytpo routines do not come from one single project.

2. PHP + C
In this case, the merchant has a "presentational" part in PHP, and a "backend" in C. That way, the presentational
part is a "gateway" (for the wallet) to the backend that will take care of signing/verifying/bundling binaries/
managing the DB. The advantage is that the merchant gets the dynamicity from PHP, and the availability of all
the useful libraries from the GNUNET realm for the C part. Again, it is handier for a real merchant to install
a C backend and make its website talking with that rather than implement crypto routines directly in its website's
language. Actually, in this scenario, the mint runner could also run some merchants management division.
To implement this point, some JSON interaction between the presentational part and the backend has to be designed,
plus some functions from the existing merchant (written in C) have to be adapted to the scenario.

3. No merchant in JavaScript
the emscripted modules will need some modifications to export the functions to be imported inside the main nodejs
application.

Marcello Stanisci

2015-07-31 18:59

reporter   ~0009511

Last edited: 2015-07-31 19:04

update: setting up DB and test-ish MHD daemon skeleton for merchant's C backend.

Marcello Stanisci

2015-08-03 18:47

reporter   ~0009526

Currently, some files implementing the merchant's HTTP daemon need to be placed inside the mint's
tree to be compiled. That's because they use a few routines (still?) not exported as shared library
by the mint (as TMH_PARSE_post_json, for instance). They are kept in 'merchant/src/backend/melted/'.

Marcello Stanisci

2015-08-04 19:08

reporter   ~0009538

adding contract generation and storing into DB

Marcello Stanisci

2015-08-06 18:49

reporter   ~0009543

mgmt of non-200 HTTP responses + modification of old merchant's tables.

Marcello Stanisci

2015-10-22 11:24

reporter   ~0009769

Achieved. Other issues have dedicated bug-reports

Issue History

Date Modified Username Field Change
2015-06-21 11:15 Christian Grothoff New Issue
2015-06-21 11:15 Christian Grothoff Status new => assigned
2015-06-21 11:15 Christian Grothoff Assigned To => Marcello Stanisci
2015-06-21 11:19 Christian Grothoff Relationship added parent of 0003851
2015-06-21 11:20 Christian Grothoff Relationship added parent of 0003623
2015-07-30 13:40 Marcello Stanisci Note Added: 0009510
2015-07-30 13:46 Marcello Stanisci Note Edited: 0009510
2015-07-31 12:21 Marcello Stanisci Note Edited: 0009510
2015-07-31 18:59 Marcello Stanisci Note Added: 0009511
2015-07-31 19:04 Marcello Stanisci Note Edited: 0009511
2015-08-03 18:47 Marcello Stanisci Note Added: 0009526
2015-08-04 19:08 Marcello Stanisci Note Added: 0009538
2015-08-06 18:49 Marcello Stanisci Note Added: 0009543
2015-08-08 15:32 Christian Grothoff Relationship added child of 0003763
2015-10-16 16:24 Marcello Stanisci Relationship replaced parent of 0003763
2015-10-22 11:23 Marcello Stanisci Relationship deleted parent of 0003623
2015-10-22 11:24 Marcello Stanisci Note Added: 0009769
2015-10-22 11:24 Marcello Stanisci Status assigned => resolved
2015-10-22 11:24 Marcello Stanisci Resolution open => fixed
2015-10-23 01:08 Christian Grothoff Fixed in Version => 0.0
2015-10-23 01:09 Christian Grothoff Status resolved => closed
2015-11-29 13:48 Christian Grothoff Category merchant (demonstrator) => merchant frontend (demonstrator)
2016-02-17 03:24 Florian Dold Category merchant frontend (demonstrator) => merchant frontend (donations)
2024-01-12 14:08 Christian Grothoff Category merchant frontend (donations) => Merchant frontends (Python3)