Назад
Fintech Engineering Handbook: патерни для програм, що працюють із грошима
SiTech AI Team3 წთ. საკითხავი

Fintech Engineering Handbook: патерни для програм, що працюють із грошима

Войтек Пітула опублікував безкоштовний довідник про інженерні патерни грошових систем — від представлення сум і подвійної бухгалтерії до ідемпотентності, вебхуків, звірки та контролю доступу.

Три принципи для грошових систем

Войтек Пітула, інженер, чий досвід охоплює платежі, бухгалтерію, контролінг і управління казначейством як для фіату, так і для криптовалют, опублікував Fintech Engineering Handbook — безкоштовний довідник про патерни, які застосовують, коли головний предмет системи — гроші. Крізь нього проходять три принципи. Жодних вигаданих даних: ідемпотентність, дедуплікація та звірка, щоб гроші ніколи не створювалися й не дублювалися. Жодних втрачених даних: повна точність, доставка «принаймні один раз», event sourcing, аудиторський слід і незмінність. І жодної довіри — ні до зовнішніх постачальників, ні до внутрішніх компонентів, ні до світу — тому вебхуки перевіряють, дані зіставляють з незалежними джерелами, а хибні припущення голосно провалюються.

Представлення грошей і їхній облік

Перш ніж гроші рухаються, їх треба представити. Пітула порівнює чотири підходи: числа з рухомою комою, які він називає майже ніколи хорошою ідеєю; довільну точність, як-от Java BigDecimal, для ланцюгових обчислень; цілі числа в мінорних одиницях, кількість цифр у яких визначає ISO 4217 і яка не завжди дорівнює двом; і раціональні числа, коли втрата точності неприпустима. Суму також не слід серіалізувати як голе число JSON — більшість парсерів перетворює його на double. Округлення неминуче, але має бути явним, вирішеним бізнесом, якомога рідшим і облікованим, коли воно ламає суми.

Облік грошей означає леджер: подвійна бухгалтерія, розрізнення часу вартості, часу проводки та часу розрахунку, аудиторський слід, event sourcing і незмінність, а також сторно замість редагування — і напруга між незмінністю та вимогами видаляти дані.

Потоки, зовнішній світ і контролі

Виконання грошового потоку спирається на інваріанти, резервування коштів (hold-and-release, з різницею між повним і доступним балансом), явну обробку овердрафтів — які неможливо зробити непредставнимими, бо зовнішній світ не питає дозволу — ідемпотентність при повторних спробах і повну відновлюваність: потоки — це збережені машини станів, їх підхоплює незалежний драйвер, а кожен крок має бути безпечним для повторного запуску. Щодо інтеграцій Пітула радить виходити з того, що API поводитимуться погано, зберігати кожен запит і відповідь, стежити за квотами, а вебхуки вважати підказкою, а не істиною: перевіряти підпис на сирих байтах, зберігати payload, швидко підтверджувати, а потім запитувати API про авторитетний стан. Надійна публікація подій спирається на патерн outbox або CDC, а звірка — це запобіжна сітка, що ловить усе, що прослизнуло. Останній розділ присвячено розподілу обов’язків і схваленню «чотири ока», доступу за принципом найменших прав із періодичними перевірками та аудитованому сліду від коду до продакшену.

Додатки та чесні межі

Додатки розбирають три наскрізні потоки — виведення 0,5 ETH у криптовалюті, депозит карткою через платіжного провайдера та конвертацію 1 000 євро в USDC із кешбеком — і список літератури з бухгалтерії, платежів, ринків, криптовалют, KYC та AML. Пітула зазначає, що більшість тексту написав власноруч, а ШІ використав для вичитки, структурування, досліджень і рецензування; книга є живим документом, відгуки приймають на GitHub, і вона не є юридичною, комплаєнсною чи фінансовою порадою.

SSiTech

SiTech — веброзробка з підтримкою AI

Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.