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.

Відкрити інтерактивну схему ↗