Search Apps Documentation Source Content File Folder Download Copy Actions Download State String Boolean Number Struct Map Slice Pointer Function Closure Reference Nil Package Type Interface Unknown

params.gno

2.79 Kb · 69 lines
 1package padv9
 2
 3// Protocol parameters (MVP). Tunable before deploy; post-deploy treated as constants
 4// unless a future governance path is added with timelock.
 5
 6const (
 7	// Token economics
 8	TotalSupply int64 = 1_000_000_000
 9	CurveSupply int64 = 800_000_000 // sold on bonding curve
10	// PoolSeed is legacy: graduation seeds LP with ALL remaining tokens
11	// (TotalSupply - RealSold), not a fixed 200M reserve.
12	PoolSeed int64 = 200_000_000
13
14	// Virtual constant-product seed (Pump-style)
15	VirtualUgnot0 int64 = 30_000_000    // 30 GNOT virtual
16	VirtualToken0 int64 = 1_073_000_191 // virtual token side
17
18	// Graduation when net ugnot raised into the curve reaches this.
19	// Sapphire deploy patches to 100 GNOT.
20	// Keep below the ugnot needed to exhaust CurveSupply on the virtual CPMM.
21	GraduationThreshold int64 = 100_000_000
22
23	// Fees: 1.20% total. Of the fee: 40% creator, 40% protocol, 20% LP/k remainder.
24	FeeBPS              int64 = 120
25	CreatorFeeShareBPS  int64 = 4000
26	ProtocolFeeShareBPS int64 = 4000
27
28	// Fallback create bond for unit tests / if bond realm unavailable.
29	// Production pad uses createbond.CurrentBondUgnot() (see bond package).
30	// Sapphire normal bond = 2 GNOT; promo ≈ $20 in ugnot set on bond.StartPromo.
31	CreateBondUgnot int64 = 2_000_000
32	BondRefundBuyers     int   = 5
33	BondRefundMinRaised  int64 = 10_000_000 // ≥5 GNOT raised
34	BondRefundMaxHeights int64 = 100_000
35
36	// Anti-snipe: first N heights, max cumulative tokens per address (BPS of TotalSupply).
37	AntiSnipeHeights   int64 = 30
38	AntiSnipeMaxBuyBPS int64 = 300 // 5% per address in window
39
40	// Status
41	StatusCurve     = 0
42	StatusGraduated = 1
43
44	// Trade history ring buffer.
45	MaxTradeHistory = 256
46	// Trade sides stored in history
47	TradeSideBuy  = 0
48	TradeSideSell = 1
49	TradeSideOpen = 2 // initial listing mark
50
51	DenomUgnot = "ugnot"
52
53	// --- Gnoswap auto-list (Sapphire) ---
54	// CreatePool fee is fixed in GNS (pool.GetPoolCreationFee, typically 100e6 = 100 GNS).
55	// GNOT cost of that fee MOVES with market (~10 GNOT/GNS on Sapphire probe → ~1000 GNOT/listing).
56	//
57	// Funding model (price-safe):
58	//   LP  = raised-sized WUGNOT (protected — never sold for fee)
59	//   Fee = pre-funded GNS on pad  OR  surplus WUGNOT above raised (ExactOut → GNS)
60	// wugnot.Deposit is EOA-only — protocol wraps off-pad and transfers inventory in.
61	GnoswapFeeTier     uint32 = 3000 // 0.3% meme tier
62	GnoswapTickSpacing int32  = 60
63	GnoswapMinTick     int32  = -887272
64	GnoswapMaxTick     int32  = 887272
65	// Max WUGNOT (ugnot units) allowed for ExactOut fee buy — price ceiling / slippage cap.
66	// Not tied to raised/2. At ~10 GNOT/GNS, 100 GNS needs ~1006 GNOT; 5000 leaves headroom
67	// if GNS becomes ~5× more expensive vs GNOT. Prefer pre-funding GNS to skip this path.
68	GnoswapMaxFeeWugnot int64 = 5_000_000_000 // 5000 GNOT
69)