Poinbase 只收 PSC、CRC、SPARK,新增 SPARK/CRC;DEX 稳定币对改为 StableSwap

- 钱包拦下往 Poinbase 充值地址转 CRT、CRA;资金页按上架币种列出
- 现货交易对跟着行情图选中的币(PSC/CRC、SPARK/CRC)
- CRT/CRC、CRA/CRC 用 StableSwap:手续费 0.04%、A=200;脱锚 A=20,崩盘 A=1 且深度四分之一
- 旧存档读档时补 SPARK/CRC、升级稳定币池

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ZHU MINCHAOandClaude Opus 5.5 committed 2026-11-07 23:03:59 +08:00
1 parent 6d8b05215c
commit fe82395d32
19 files changed
+192 -26

No files matched your search

+11 -6
View File
@@ -422,9 +422,8 @@ namespace Decentralized
Open();
}
private static void TradeRows(CustomUIBuilder b, Venue venue)
private static void TradeRows(CustomUIBuilder b, Pool pool)
{
foreach (var pool in Session.Data.Market.Pools.Where(x => x.Venue == venue))
{
var p = pool;
b.AddLabel(L.T("trade.pair", p.Base, p.Quote, L.T("venue." + p.Venue)) + " " + L.T("trade.price", Fmt.Num(p.Price)) + " " + L.T("trade.fee", (p.Fee * 100).ToString("0.0#", CultureInfo.InvariantCulture)));
@@ -491,16 +490,19 @@ namespace Decentralized
if (_poinTab == PoinTab.Funds) { FundsPage(b); return; }
Columns(b, l =>
{
CandleChart.AddPicker(l, "poin", Assets.PSC, Open, _picked);
CandleChart.AddPicker(l, "poin", Assets.PSC, Open, _picked, Exchange.Listed);
l.AddSeparator();
l.AddHeader(L.T("poin.account.h"));
Holdings(l, w, a => true);
if (w.Taint > 0.5) l.AddLabel(L.T("wallet.taint", Fmt.Credits(w.Taint)), "taint_note");
}, r =>
{
// 交易对跟着行情图选中的币(CRC 本身没有交易对,显示 PSC/CRC)
string sel = CandleChart.Selected("poin", Assets.PSC, Exchange.Listed);
var pair = d.Market.Find(Venue.Exchange, sel, Assets.CRC) ?? d.Market.Main;
r.AddHeader(L.T("trade.h"));
AmountRow(r, unit: d.Market.Main.Base);
TradeRows(r, venue);
AmountRow(r, unit: pair.Base);
TradeRows(r, pair);
});
}
@@ -529,8 +531,11 @@ namespace Decentralized
PledgerSkin.Pick(r, L.T("funds." + m.ToString().ToLowerInvariant()), mode == _fundsMode, () => { _fundsMode = mode; _message = null; Open(); }, _picked);
}
r.End();
// 入金只收 Poinbase 上架的币;出金另外列出账户里还有余额的其他币(旧存档里充进来的 CRT、CRA)
var coins = Exchange.Listed.Concat(_fundsMode == FundsMode.Send ? SwapCoins.Where(a => !Exchange.Listed.Contains(a) && w.Get(a) > 1e-9) : Enumerable.Empty<string>()).ToList();
if (!coins.Contains(_fundsAsset)) { _fundsAsset = Assets.CRC; _fundsBank = true; }
r.BeginRow(4f);
foreach (var c in SwapCoins)
foreach (var c in coins)
{
var coin = c;
PledgerSkin.Pick(r, coin, coin == _fundsAsset, () => { _fundsAsset = coin; if (coin != Assets.CRC) _fundsBank = false; Open(); }, _picked);