Go to file
George Belyakov eaeb81c95a
ED-62: p2p transfer add terminals (#377)
* move terms validation from ff_p2p_provider to p2p_transfer

* add terminals to p2p_transfer

* fix wrong route return

* return withdrawal changes

* fix type after merge

* add p2p_terminals to tests

* add get/2 to p2p_terminal (like p2p_provider's get)

* fix wrong ruleset tag

* wrong terminal in p2p routing tests

* wrong terminal in decisions in p2p routing test rulesets

* Revert 2x "Merge branch 'master' into ED-62/ft/p2p_transfer_add_terminals"

* Revert "Revert 2x "Merge branch 'master' into ED-62/ft/p2p_transfer_add_terminals""

This reverts commit cd593cb602b3ab06bcbe77e2b7b0974982e7a92c.

* return back 6,7,8 withdrawal terminals (being unused for my point of view)

* fix wrong func contract

* dialyzer
2021-04-01 17:16:33 +03:00
apps ED-62: p2p transfer add terminals (#377) 2021-04-01 17:16:33 +03:00
build-utils@56606f5cac Ed-74: added wallet revert adjustment (#376) 2021-03-25 12:40:59 +03:00
config FF-237: update lechiffre (part1) (#344) 2020-12-15 18:46:07 +03:00
schemes Ed-74: added wallet revert adjustment (#376) 2021-03-25 12:40:59 +03:00
test upgrade world (#360) 2020-12-29 17:16:07 +03:00
.gitignore ignore tags 2019-09-13 12:46:23 +03:00
.gitmodules HG-392: check limits for wallet and withdrawal (#25) 2018-10-30 17:30:42 +03:00
docker-compose.sh +upgrade world (#368) 2021-02-08 18:36:18 +03:00
Dockerfile.sh Nail wapi app here for a while 2018-07-06 16:49:30 +03:00
elvis.config ED-17: terminal cash flow priority (#370) 2021-02-15 14:34:44 +03:00
Jenkinsfile +upgrade world (#368) 2021-02-08 18:36:18 +03:00
LICENSE Let's make it opensource 2019-09-20 00:03:57 +03:00
Makefile +upgrade world (#368) 2021-02-08 18:36:18 +03:00
README.md Handle transfers through noion of accounts (yeah, again) (#9) 2018-07-16 17:21:17 +03:00
rebar.config +upgrade world (#368) 2021-02-08 18:36:18 +03:00
rebar.lock Ed-74: added wallet revert adjustment (#376) 2021-03-25 12:40:59 +03:00

Fistful

Wallet Processing Service

Development plan

Бизнес-функционал

  • Минимальный тестсьют для кошельков
  • Реализовать честный identity challenge
  • Запилить payment provider interface
  • Запилить контактные данные личности
  • Запилить нормально трансферы
  • Заворачивать изменения в единственный ивент в рамках операции
  • [.] Компактизировать состояние сессий
  • Запилить контроль лимитов по кошелькам
  • Запилить авторизацию по активной идентификации
  • Запилить отмену identity challenge
  • Запускать выводы через оплату инвойса провайдеру выводов
  • Обслуживать выводы по факту оплаты инвойса

Корректность

Удобство поддержки

  • Добавить служебные лимиты в рамках одного party
  • Добавить ручную прополку для всех асинхронных процессов
  • Вынести ff_withdraw в отдельный сервис
  • Разделить development, release и test зависимости
  • Вынести части ff_core в genlib

Поддержка checkout

Каждая машина, на которую мы можем сослаться в рамках асинхронной операции, должно в идеале давать возможность зафиксировать версию своего состояния посредством некой ревизии. Получение состояния по ревизии осуществляется с помощью вызова операции checkout. В тривиальном случае ревизия может быть выражена меткой времени, в идеале номером ревизии.

Коммуналка

Сервис должен давать возможность работать нескольким клиентам, которые возможно не знают ничего друг о друге кроме того, что у них разные tenant id. В идеале tenant должен иметь возможность давать знать о себе динамически, в рантайме, однако это довольно трудоёмкая задача. Если приводить аналогию с Riak KV, клиенты к нему могут: создать новый bucket type с необходимыми характеристиками, создать новый bucket с требуемыми параметрами N/R/W и так далее.

Дегидратация

В итоге как будто бы не самая здравая идея. Есть ощущение, что проще и дешевле хранить и оперировать идентификаторами, и разыменовывать их каждый раз по необходимости.

Служебные лимиты

Нужно уметь ограничивать максимальное ожидаемое количество тех или иных объектов, превышение которого может негативно влиять на качество обслуживания системы. Например, мы можем считать количество выводов одним участником неограниченным, однако при этом неограниченное количество созданных личностей мы совершенно не ожидаем. В этом случае возможно будет разумно ограничить их количество сверху труднодостижимой для подавляющего большинства планкой, например, в 1000 объектов. В идеале подобное должно быть точечно конфигурируемым.