✕

Безопасность, инфраструктура и время безотказной работы

Systems

Движок стоит ровно столько, сколько то, что держит его в живых.

Quant строит движки. Systems держит почву, на которой они стоят: одна дверь, одна вышка, одна рука на выключателе. Ниже — сама архитектура, а не брошюра о ней.

Вы уже внутри неё. Этот запрос отфильтрован, измерен по времени и зафиксирован на edge-узле — ·

Архитектура

Четыре этапа и одна рука. Каждая стрелка — решение; каждое решение фиксируется.

ПУБЛИЧНЫЙ ИНТЕРНЕТ клиенты · рынки · все остальные 01 EDGE-СЕТЬ работает в 300+ городах · origin-сервера нет правила применяются до появления трафика чисто 02 ДВЕРЬ подписанная сессия · ключ привязан к адресу три неверных ключа — закрыто ТУПИК ни намёка, ни ошибки, ни второй попытки опознан 03 ОПЕРАЦИЯ движки потоки сейф каждая часть изолирована от соседней взлом одной части не достаёт до остальных 04 ВЫШКА каждое событие — с городом, сетью и временем РУКА разрешить или закрыть — касание тревога это решение становится правилом на edge — за секунды, навсегда В этой схеме нет ничего гипотетического: эта страница раздаётся через неё.

Измерено, а не заявлено

Четыре цифры из той системы, через которую вы это читаете.

1016
пространство ключей
комбинаций на ключ доступа — и каждый ключ открывается только для одного адреса
3
попытки
неверных ключа — и дверь закрывается, а попытка фиксируется вместе с её источником
0
открытых узлов
origin-сервера для сканирования портов не существует: система и есть edge
365
дней HSTS
браузер, однажды встретивший нас, больше никогда не заговорит с нами в открытом виде

Что мы держим

Три функции. Больше не обещаем ничего, и эти три ни с кем не делим.

Нулевое доверие на входе

Ни одной учётной записи не верят только потому, что она пришла. Личность, ключ и источник проверяются вместе, при каждом запросе, а ключ, ушедший от своего адреса, перестаёт работать.

Вышка, которая докладывает

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

Системы, которые закрываются сами

При взломе движок останавливается прежде, чем потеряет деньги, проход перекрывается, а состояние восстанавливается из последнего чистого. Восстановление — это процедура, а не импровизация.

Интерфейс

Всё, что мы ставим рядом с вашим движком — каждая его строка, без зависимостей и без скрытых вызовов. Прочтите его прежде, чем подпустите к своим деньгам. Машинное отделение с нашей стороны остаётся закрытым; то, что работает в вашем доме, вы вправе проверять.

"""MatchTop · engine guard — the piece that sits beside your engine.
Standard library only. Nothing we did not write runs with these rights."""

import hmac, json, os, time
from hashlib import sha256
from urllib.request import Request, urlopen

KEY   = bytes.fromhex(os.environ["MT_KEY"])   # one key per engine, never on disk
EDGE  = os.environ["MT_EDGE"]                  # no address baked into the build
GRACE = 3                                     # one lost beat is the network. three is a decision.


def seal(payload: bytes, beat: int) -> str:
    """Every beat is signed and numbered. A replayed beat is not a beat."""
    return hmac.new(KEY, b"%d." % beat + payload, sha256).hexdigest()


def read_verdict(answer: dict, beat: int) -> str:
    """An answer counts only if it comes back signed, for this beat and no other."""
    ours = hmac.new(KEY, b"%d.%s" % (beat, answer["verdict"].encode()), sha256).hexdigest()
    if not hmac.compare_digest(ours, answer.get("seal", "")):   # constant time, always
        return "halt"                                          # unsigned is not trusted
    return answer["verdict"]


def pulse(engine, beat: int) -> str:
    payload = json.dumps({
        "engine":   engine.name,
        "at":       time.time_ns(),           # UTC nanoseconds. local clocks lie.
        "alive":    engine.alive,
        "latency":  engine.latency_ms,
        "drawdown": engine.drawdown,
    }, separators=(",", ":")).encode()

    call = Request(EDGE, payload, {
        "Content-Type": "application/json",
        "X-MT-Beat":    str(beat),
        "X-MT-Seal":    seal(payload, beat),
    })
    with urlopen(call, timeout=4) as answer:      # we dial out. nothing dials in.
        return read_verdict(json.load(answer), beat)


def guard(engine) -> None:
    beat, missed = time.time_ns(), 0
    while True:
        beat += 1
        try:
            verdict, missed = pulse(engine, beat), 0
        except Exception:
            missed += 1
            verdict = "halt" if missed >= GRACE else "run"   # silence is not consent

        if verdict == "halt":
            engine.halt()                     # stop the money first
            engine.seal()                     # then close the path
            return                            # and stay down until a human says otherwise

        time.sleep(engine.beat_seconds)

Что нельзя скопировать

Это не выбранные нами функции. Это форма дома.

Обычная схема
Здесь
Кто отвечает
Линия поддержки, работающая по скрипту. До инженера, который построил систему, не добраться — так задумано.
Инженер, который её построил. Больше обращаться не к кому, и между вами никто не стоит.
Каждый год
Ещё один модуль, ещё одна строка в счёте. Система может только тяжелеть.
Мы убираем то, что вам перестало быть нужным. Система становится меньше — и её стоимость для вас тоже.
Решение
Живёт в их консоли. Вас уведомляют, а потом вы ждёте того, у кого есть права действовать.
Живёт в вашей руке. Одно касание — и движок останавливается, где бы в мире он ни работал.
Когда ломается
Вам сообщают, что сломалось. Дальше это ваша задача.
Движок тоже построили мы, поэтому заходим и ремонтируем. Один дом отвечает за обе половины.
Соответствие
Продукт, настроенный под вас — из того же, что продан ещё тридцати тысячам.
Система по вашим меркам: ваша операция, ваша экспозиция, ваши часы, ваш часовой пояс.

Ничто из этого не является списком функций — именно поэтому это нельзя перебить ценой. Фирма с отделом продаж не может выдать вам своего инженера. Фирма, обязанная наращивать счёт каждый год, не может ничего убрать. Фирма, которая только наблюдает, не может ремонтировать. Они не отстают от нас — они устроены иначе и не могут перейти на эту сторону, не перестав быть собой.

По той же причине на этой странице нет прайс-листа. Сначала мы измеряем операцию, а потом называем цену за то, что измерили.

Скажите, что не должно останавливаться

Двух строк достаточно. Мы читаем их сами и отвечаем сами — за этим окном нет очереди.

Это попадёт к одному человеку, и этот человек ответит. Ничто здесь не передаётся, не продаётся и не уходит третьим лицам.

Mr. MatchTop · matchtopalgorithm.ai