m.moddie / dev
← Все проекты
Проект / 07

PaperPump

Архивный TON-прототип: собственная система Tact-контрактов и парсер транзакций на TypeScript, написанный с нуля.

Tact · TON · Smart contractsPaperPumpTact / TypeScript / TON / TonAPI / Express
Роль

Blockchain / Indexer Engineer

Период / формат

2025

Статус

Проектная разработка

Личный вклад

  • Разработал смарт-контракты на Tact и высокопроизводительный парсер блокчейна TON на TypeScript: обход дерева транзакций, парсинг по opcode и декодирование метаданных Jetton.

TypeScript, Tact, TON, TonAPI, @ton/core

01 / О проекте

О проекте

Архивный TON-прототип: собственная система Tact-контрактов и парсер транзакций на TypeScript, написанный с нуля.

02 / Архитектурный разбор

Tact-контракты и собственный TypeScript-парсер

Разработал систему взаимодействующих смарт-контрактов на Tact и с нуля написал её парсер транзакций на TypeScript. Парсер получает traces из TonAPI, обходит дерево внутренних сообщений и формирует структурированные данные о создании и покупке Jetton. PaperPump остаётся архивным прототипом.

03 / Идея продукта

Автор разворачивает Jetton через market-контракт. Покупатели двигают цену по кубической bonding curve; продавцы возвращают токены через Jetton wallet flow и получают TON из резерва market. Indexer преобразует on-chain активность в данные для API и интерфейса.

Поток контрактов и данных

Внутренние сообщения TON связывают независимо развёрнутые контракты.

TON MESSAGE FLOW
01

Next.js / wallet

Создание и торговля

02

Market

Factory, кривая, резерв TON

03

PaperJetton

Master и контролируемый mint

04

JettonDefaultWallet

Баланс и перевод владельца

05

Indexer

События в данные приложения

Что демонстрирует прототип

01

Мой вклад: индексатор на TypeScript

С нуля написал парсер собственной системы Tact-контрактов на TypeScript с Express, TonAPI и @ton/core. Он распознаёт сообщения создания и покупки по opcode, обходит traces транзакций, читает результаты getter-методов контрактов и декодирует метаданные Jetton в структурированные отчёты.

02

Сохранение контекста сети при сериализации

При разработке в testnet стандартное форматирование адресов не добавляло test-only флаг. Raw-адрес TON не содержит этого флага. Вынес форматирование в общую функцию: она получает выбранную сеть и устанавливает testOnly для user-friendly адресов. То же значение сети определяет API endpoints и настраивает сериализацию HTTP-ответа. Это явное сохранение контекста отображения, без изменения адреса аккаунта или попыток определить сеть по нему.

03

Market как factory

Корневой контракт формирует StateInit и разворачивает отдельный PaperJetton master для каждого запуска.

04

Мультиконтрактная торговля

Покупка запускает mint через master и кошелёк владельца. Продажа возвращается как TokenNotification, после чего токены сжигаются, а TON высвобождается.

05

Детерминированная математика кривой

Кубическая кривая использует целочисленную арифметику, явную точность и реализацию целого кубического корня для VM.

06

Проверка адресов через конструкцию

Ожидаемые адреса дочерних контрактов выводятся из code и data, а не принимаются как произвольный ввод.

07

Эксперимент с subscription NFT

Minter, collection и item-контракт моделируют ограниченную по времени активацию отдельно от владения токеном.

Карта проекта

Логика Tact-контрактов и TypeScript-парсер, который преобразует traces транзакций в данные приложения.

PAPERPUMP / CONTRACTS
PAPERPUMP / CONTRACTS
contracts/Tact workspace
contracts/marketCore/v1/launch and trading protocol
market.tactfactory · curve · reserve · fees
paperJetton.tactJetton master controlled by Market
math.tactinteger cubic root
messages.tactcreate · buy · sell · withdraw
contracts/standards/jetton/master and holder wallet
contracts/standards/nft/collection and item base
contracts/subsNftMinter/v1/time-bound subscription experiment
tests/v1/TON Sandbox integration scenarios
indexer/TypeScript · Express · TonAPI
src/services/parser/v1/trace traversal · opcodes · Jetton metadata
utils.tsexplicit network-aware address formatting
src/controllers/HTTP response serialization
frontend/Next.js trade interface
backend/application and bot prototype
Границы прототипа

Проект не был завершён или выпущен. В sell-flow осталась нерешённая проверка wallet sender, а subscription minter содержит незавершённый forwarding flow. Это пример Tact и мультиконтрактной архитектуры, а не production-протокол.

06 / Архитектура системы

Архитектура системы

Контрактная карта создания, торговли по кубической кривой, сообщений Jetton wallet, индексации и незавершённой ветки subscription NFT.

Открыть интерактивную схему ↗