Транзакция – обмен информацией, в результате которого происходят изменения состояния аккаунтов участвующих сторон. Термин чаще всего применяется при совершении сделок с цифровыми деньгами и обозначает передачу средств от одной стороны к другой.
Рассмотрим ситуацию с покупателем и продавцом в магазине, когда покупатель расплачивается за покупки с помощью своей карты. Введя пин-код, покупатель подтверждает свою личность и дает право на снятие требуемого продавцом количества денег. Если система подтверждает наличие средств в кошельке, она их списывает и зачисляет на счет продавца. Продавец получает подтверждение и печатает чек. Комплекс действий по оплате товаров в данном случае называется транзакцией.
Транзакции в базах данных
Термин также используется в программировании баз данных. База данных – это таблица, в которую можно вносить новую или изменять уже существующую информацию. Изменения базы данных описываются как ее состояния. Если транзакция успешна – база переходит в новое состояние, если нет – откатывается к предыдущему.
Транзакцией называют список вносимых изменений. Результат транзакции, как и в случае с денежными переводами, может быть положительным и отрицательным. У транзакции несколько стадий, если хотя бы одна из них неудачна – вся транзакция отклоняется, а удачные этапы откатываются. В этом случае транзакция будет отклонена.
Изменение состояний базы данных пересекается с транзакциями в общепринятом смысле слова. По сути, при совершении платежа пользователь взаимодействует с базами данных, их состояния изменяются в зависимости от действий пользователя. В случае с банковской транзакцией, база данных хранится в определенном, защищенном месте.
Распределенные реестры, которые хранятся на нескольких компьютерах одновременно, тоже используют базы данных и транзакции меняют их состояние. Такие реестры называют блокчейнами, они состоят из транзакций, упакованных в блоки.
Виды транзакций
Мы будем рассматривать транзакцию применительно к денежным средствам, так как наиболее часто термин используют применительно к обмену деньгами. Слово произошло из латыни и означает «договор». Помимо наиболее часто используемого варианта, в ходу также «трансакция». Этот менее популярный вариант произошел из-за того, что букву «S» в исходном слове можно передать двумя звуками нашего языка.
Инициация транзакции может произойти следующими способами:
- Подачей заявления в банк – когда клиент банка, у которого есть счет, отдает распоряжения о трате средств в письменном виде.
- Подачей заявления посредством электронных платежных систем. Поскольку перед распоряжением средствами пользователь проходит идентификацию с помощью логина и пароля, заполнять заявления не требуется.
- Подачей заявки через блокчейн. Авторизация пользователя происходит благодаря закрытому ключу, который известен только владельцу криптовалютного кошелька.
Транзакции могут быть:
- Банковскими, происходят между расчетными счетами.
- Банкоматными – когда снимаются наличные в банкомате.
- С участием пластиковой карты платежных систем – оплата онлайн или в магазине.
- Электронными – денежные переводы в электронных платежных системах.
Кроме этого, деньги можно перевести с помощью моментальных переводов, при этом открытие счета не требуется. Деньги отправляются на имя человека и их можно забрать в одном из офисов компании. Одним из примеров является система переводов Western Union.
Если денежный перевод производится пользователем в режиме реального времени, процесс называют «онлайн транзакцией». Если расчеты производятся через некоторое время, то это офлайн транзакция.
Транзакции в банкоматах
Рассмотрим работу банкомата на примере VISA и MasterCard, карты которых обслуживаются практически по всему миру. Для подключения к системе, банк заключает соглашение с провайдером в своей стране, который прокладывает кабель для связи. Для выпуска карт банк получает BIN-номера, которые можно увидеть на лицевой стороне карты. С их помощью происходит идентификация банка и пользователя.
Процесс получения клиентом наличных будет выглядеть следующим образом:
- После получения карты банкомат ее сканирует и определяет банк-эмитент.
- Авторизация пользователя происходит путем введения правильного ПИН-кода.
- Если карта и банкомат обслуживаются одним и тем же банком, на экран будет выведен список доступных действий.
- Если карта обслуживается другим банком, обычно можно только проверить баланс и снять деньги.
- Пользователь выбирает выдачу определенного количества денег.
- Банкомат посылает зашифрованное сообщение в специальный интерфейс для обработки онлайн-платежей, который называется Front-End.
- Front-End проверяет наличие нужного количества денег на счету и не противоречит ли операция лимитам, установленным на карте.
- Затем зашифрованное сообщение с результатами обработки отправляется обратно в банкомат.
- Банкомат расшифровывает сообщение, если операция одобрена – выдает клиенту деньги и сообщает итоги в Front-End.
- Пользователь получает деньги и уходит.
Front-End получает результаты и замораживает сумму на лимите авторизации пользователя, который отображает состояние счета. Лимит авторизации отвечает за соблюдение установленных банком лимитов и может меняться в течение дня.
Реальное перемещение денег начинается лишь в конце этого дня или начале следующего. Именно тогда банк получает информацию по всем транзакциям за день, обрабатывает все суммы сразу и списывает деньги со счетов пользователей.
Если пользователь планирует получить деньги в чужом банкомате, то в процесс включается платежная система, обслуживающая карту. После авторизации:
- Банкомат пошлет зашифрованное сообщение в банк, обслуживающий банкомат.
- Банк свяжется с платежной системой и передаст ей детали требуемой транзакции.
- Платежная система свяжется с банком, который выпустил карту.
- Банк одобрит или отклонит транзакцию в зависимости от состояния счета.
- Обработанные данные будут переданы в банк, обслуживающий банкомат.
- Затем данные будут переданы в банкомат, который выдаст деньги или сообщит пользователю, что транзакция не прошла.
Расчет банков с платежной системой и между собой происходит позже, в офлайн-режиме.
Транзакции в электронных платежных сервисах
Многие электронные платежные сервисы выпускают карты международных систем и соединяют их со счетами своих пользователей. В качестве примера можно привести Яндекс-Деньги и Qiwi, которые сотрудничают с VISA и MasterCard соответственно. При работе с картами этих сервисов действует схема, описанная выше. Перечисление между счетами пользователей происходит следующим образом:
- Клиент авторизуется на сервисе с помощью логина и пароля.
- В случае двухфаторной аутентификации, вводит данные из полученного от эмитента карты текстового сообщения.
- Получает доступ к веб-интерфейсу своего счета, открытого в сервисе.
- Выбирает «перевести средства», вводит сумму и номер счета получателя. В случае с Qiwi – телефонный номер, ассоциированный со счетом пользователя, в случае с Яндекс-Деньгами – номер счета или адрес электронной почты.
- После нажатия кнопки «перевести», сервис проверяет наличие средств и осуществляет перевод. Балансы пользователей обновляются.
Работа других электронных сервисов не отличается от описанной схемы. В сети WebMoney или PayPal транзакции со стороны пользователя выглядят похожим образом.
Криптовалютные транзакции
В основе криптовалют лежит блокчейн – распределенный и децентрализованный реестр данных. Система автономна, у нее нет центра обработки транзакций и принятия решений. Проведение транзакции существенно отличается от банковских операций.
Вот порядок проведения криптовалютной транзакции:
- Пользователь авторизуется в сервисе с помощью приватного ключа, который вместе с публичным генерируется при создании кошелька. Приватный ключ известен только владельцу кошелька. Публичный ключ общедоступен, его используют в качестве номера счета.
- Во вкладке «совершить перевод» пользователь вводит требуемую сумму и публичный адрес кошелька получателя.
- После нажатия кнопки «подтвердить», транзакция определенным образом шифруется и поступает в обработку.
- Проверка транзакции происходит путем расшифровки заданной пользователем математической задачи. Этим занимаются майнеры – мощные компьютеры. Один из майнеров производит требуемые вычисления и посылает их в сеть.
- Другие майнеры проверяют правильность решения задачи. Если результаты сходятся – после получения определенного количества подтверждений транзакция добавляется в блок. Добавление временной метки позволяет хронологически упорядочивать транзакции.
- Блокчейн состоит из блоков, которые идут в хронологической последовательности. В каждом блоке может содержаться определенное количество транзакций.
- Когда набирается нужное количество, майнеры должны совершить сложные вычисления на основе всех добавленных в блок транзакций.
- Майнер, нашедший решение, запечатывает блок. Теперь транзакция считается подтвержденной.
Система работает благодаря стимуляции майнеров – они получают денежное вознаграждение за нахождение новых блоков. Это происходит за счет выпуска новых монет системы.
Время подтверждения транзакции зависит от криптовалютной сети. В сети Bitcoin, самой известной криптовалюты на сегодняшний день, процесс может занимать до 10 минут. Так долго ждать приходится из-за низкой пропускной способности сети, а также ее правил.
Вывод
В данном материале мы подробно рассказали, что такое транзакция. Виды транзакций и использование в базах данных. Так же рассказали о транзакциях в банкоматах и в электронных платежных сервисах. А ещё затронули тему о криптовалютных транзакциях.
А вы пользуетесь транзакциями и как часто? Напишите об этом в комментариях.