PaperPump — Tact multi-contract architecture

PaperPump — Tact multi-contract architecture An architecture diagram generated by Archify. TON wallet · creator · trader · NFT holder · Architecture component TON wallet creator · trader · NFT holder PaperPump TMA · Next.js · TonConnect · Architecture component PaperPump TMA Next.js · TonConnect Market · registry · curve · TON reserve · fees · Architecture component Market registry · curve · TON reserve · fees PaperJetton master · TEP-74 master · Market owns mint · Architecture component PaperJetton master TEP-74 master · Market owns mint Holder Jetton wallet · balance · transfer · burn · Architecture component Holder Jetton wallet balance · transfer · burn Market Jetton wallet · sell receiver · notification · Architecture component Market Jetton wallet sell receiver · notification TON API / TON Center · trace · runMethod · Architecture component TON API / TON Center trace · runMethod Transaction indexer · opcode router · metadata parser · Architecture component Transaction indexer opcode router · metadata parser SubscriptionNftMinter · draft · facade forwarding TODO · Architecture component SubscriptionNftMinter draft · facade forwarding TODO SubsNftCollection · draft · sequential mint · Architecture component SubsNftCollection draft · sequential mint SubNftItem · draft · activation state · Architecture component SubNftItem draft · activation state sign transaction CreateJetton · BuyJetton deploy · Mint · TokenBurn TokenTransferInternal · deploy wallet TokenTransfer + sell payload TokenNotification(amount, payload) TON payout − 1% fee on-chain transactions trace + get methods MintSubNft — TODO StateInit + Transfer Legend Frontend Backend Cloud External

Market — главный stateful-контракт

  • • Хранит jettons: master address → content, curveSettings, totalSupply, tonReserv.
  • • Отдельно хранит owner, version, instance, sequno и накопленную protocolCommision.
  • • CreateJetton требует 2 TON, curveK > 0, cubic curveType = 0 и thresholdDexListing ≥ 100 TON.
  • • Из 2 TON создания 1.8 TON учитываются как комиссия, 0.2 TON отправляются на deploy master-контракта.

BuyJetton — кубическая bonding curve

  • • С торгового value удерживается 1%; ещё 0.025 TON исключается из amountToTrade.
  • • newSupply = cbrt(oldSupply³ + amountToTrade × 3 × 10⁹ / curveK).
  • • Разница supply передаётся в PaperJetton через Mint; TON reserve растёт на amountToTrade.
  • • Market является owner master-контракта, поэтому только он имеет право mint.

Sell — wallet notification и burn

  • • Пользователь переводит Jetton на вычисляемый wallet Market с forward payload: TON refund address + master address.
  • • Market получает TokenNotification и считает gross TON как (oldSupply³ − newSupply³) × curveK / (3 × 10⁹).
  • • Reserve уменьшается на gross payout; пользователю отправляется сумма после 1% комиссии.
  • • Затем Market отправляет TokenBurn master-контракту. Проверка sender == expected Market wallet в исходнике отключена FIXME-комментарием.

PaperJetton и JettonDefaultWallet

  • • PaperJetton расширяет Jetton standard trait и сохраняет creator отдельно от owner.
  • • Каждый holder получает детерминированный wallet по StateInit(master, owner).
  • • Wallet проверяет владельца для transfer/burn, пересылает TokenNotification и восстанавливает balance при bounce.
  • • Master проверяет адрес wallet перед TokenBurnNotification и уменьшает общий totalSupply.

Subscription NFT — незавершённая ветка

  • • Minter задуман как платёжный фасад, но receive(MintSubNft) пока не пересылает сообщение коллекции.
  • • Collection детерминированно разворачивает SubNftItem и увеличивает nextItemIndex.
  • • Item хранит isActive, activator, activationPeriod и activatedAt; ActivateSub не ограничен владельцем.
  • • Эти контракты не включены в основной Tact build target; production-ready частью протокола они не являются.