Mixer moves into the terminal's Web3 page as a sub-page

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
ZHU MINCHAOandClaude Sonnet 5.5 committed 2026-11-03 16:43:30 +08:00
1 parent 09a5cae69c
commit be18078f69
4 files changed
+17 -8

No files matched your search

+1 -1
View File
@@ -5,7 +5,7 @@
### 第二阶段(进行中) ### 第二阶段(进行中)
- 人脉网络里本 mod 单独一页"Web3":入口(400)和混币器(700,需先加入)都放在这页。 - 人脉网络里本 mod 单独一页"Web3":入口(400)和混币器(700,需先加入)都放在这页。
- 混币器:终端多一页"混币器"(买了升级才出现)。选币种、数量、1–5 轮,存入后每轮扣 2% 手续费并降低污点(基准每轮 35%,存入越大清洗越差,匿名集 = 2 万信用点背景量 + 存入量),轮数即等待天数,到期提回同一个地址;提回后一周内出金审查按"来自混币器"加重。镇压事件开始时 50% 被制裁 5 天,期间提出的币地址被标记,并上报纸;每晚 0.4% 跑路。夜间日志写提回与污点变化。开发者模式 F9 有 `Tainted wallet (test)`。游戏内验证了解锁、页面、存入与污点带走;夜间提回只有单元测试(测试存档里无法正常过夜)。 - 混币器:终端 Web3 页里多一个"混币器"子页(买了升级才出现,和"交易"并列)。选币种、数量、1–5 轮,存入后每轮扣 2% 手续费并降低污点(基准每轮 35%,存入越大清洗越差,匿名集 = 2 万信用点背景量 + 存入量),轮数即等待天数,到期提回同一个地址;提回后一周内出金审查按"来自混币器"加重。镇压事件开始时 50% 被制裁 5 天,期间提出的币地址被标记,并上报纸;每晚 0.4% 跑路。夜间日志写提回与污点变化。开发者模式 F9 有 `Tainted wallet (test)`。游戏内验证了解锁、页面、存入与污点带走;夜间提回只有单元测试(测试存档里无法正常过夜)。
- 用币付款的顾客:排队的买家里,上层付 CRC(12%)、黑市付 CRT(25%)、革命派付 CRA(25%)、下层付 PSC(10%)。成交时扣回信用点(现金不变),按当日币价换成币进热钱包,顾客当场说一句"成交,N CRT 已转入热钱包";赃物款项不记销赃,改成币带污点(货值 × 赃物热度%);夜间日志汇总当天用币结算的额度。开发者模式 F9 有测试入口(Coin buyer)。已在游戏里实测:成交后现金不变,四笔种子按币价记入 CRT,顾客对话显示。 - 用币付款的顾客:排队的买家里,上层付 CRC(12%)、黑市付 CRT(25%)、革命派付 CRA(25%)、下层付 PSC(10%)。成交时扣回信用点(现金不变),按当日币价换成币进热钱包,顾客当场说一句"成交,N CRT 已转入热钱包";赃物款项不记销赃,改成币带污点(货值 × 赃物热度%);夜间日志汇总当天用币结算的额度。开发者模式 F9 有测试入口(Coin buyer)。已在游戏里实测:成交后现金不变,四笔种子按币价记入 CRT,顾客对话显示。
@@ -192,10 +192,11 @@ mixer.go,Deposit to mixer
mixer.min,Deposits must be worth at least {0} credits. mixer.min,Deposits must be worth at least {0} credits.
mixer.done,Deposited {0} {1}; back on day {2}. mixer.done,Deposited {0} {1}; back on day {2}.
mixer.upgrade.title,Mixer mixer.upgrade.title,Mixer
mixer.upgrade.desc,"Unlocks the Mixer page in the terminal: deposit tainted coins, get them back days later with less taint. Cash-outs of freshly mixed coins are screened harder; during crackdowns the mixer may be sanctioned and coins withdrawn meanwhile are flagged." mixer.upgrade.desc,"Unlocks the mixer in the terminal's Web3 page: deposit tainted coins, get them back days later with less taint. Cash-outs of freshly mixed coins are screened harder; during crackdowns the mixer may be sanctioned and coins withdrawn meanwhile are flagged."
news.sanction.title,Mixer put on sanctions list news.sanction.title,Mixer put on sanctions list
news.sanction.desc,"Security has sanctioned a batch of mixing services. Funds withdrawn from mixers in the next few days will be treated as suspicious." news.sanction.desc,"Security has sanctioned a batch of mixing services. Funds withdrawn from mixers in the next few days will be treated as suspicious."
nightlog.mixer,Mixer returned {0} {1}; taint {2} -> {3}. nightlog.mixer,Mixer returned {0} {1}; taint {2} -> {3}.
nightlog.mixer_flag, (withdrawn during sanctions; address flagged) nightlog.mixer_flag, (withdrawn during sanctions; address flagged)
nightlog.mixer_rug,The mixer's operator ran off with it: {0} {1} never came back. nightlog.mixer_rug,The mixer's operator ran off with it: {0} {1} never came back.
tab.mixer,Mixer web3.sub.trade,Trade
web3.sub.mixer,Mixer
1 # Probably Decentralized localization table: English (en)
192 mixer.min
193 mixer.done
194 mixer.upgrade.title
195 mixer.upgrade.desc
196 news.sanction.title
197 news.sanction.desc
198 nightlog.mixer
199 nightlog.mixer_flag
200 nightlog.mixer_rug
201 tab.mixer web3.sub.trade
202 web3.sub.mixer
@@ -191,10 +191,11 @@ mixer.go,存入混币器
mixer.min,存入价值不得低于 {0} 信用点。 mixer.min,存入价值不得低于 {0} 信用点。
mixer.done,已存入 {0} {1},第 {2} 天提回。 mixer.done,已存入 {0} {1},第 {2} 天提回。
mixer.upgrade.title,混币器 mixer.upgrade.title,混币器
mixer.upgrade.desc,"解锁终端里的混币器页:把带污点的币存进去,几天后提回,污点降低。出金审查对刚从混币器出来的币更严格;镇压期间混币器可能被制裁,期间提出的币会被标记。" mixer.upgrade.desc,"解锁终端 Web3 页里的混币器:把带污点的币存进去,几天后提回,污点降低。出金审查对刚从混币器出来的币更严格;镇压期间混币器可能被制裁,期间提出的币会被标记。"
news.sanction.title,混币器被列入制裁名单 news.sanction.title,混币器被列入制裁名单
news.sanction.desc,"安保部门宣布制裁一批混币服务。此后几天从混币器提出的资金将被视为可疑。" news.sanction.desc,"安保部门宣布制裁一批混币服务。此后几天从混币器提出的资金将被视为可疑。"
nightlog.mixer,混币器提回 {0} {1},污点 {2} → {3}。 nightlog.mixer,混币器提回 {0} {1},污点 {2} → {3}。
nightlog.mixer_flag,(制裁期间提出,地址被标记) nightlog.mixer_flag,(制裁期间提出,地址被标记)
nightlog.mixer_rug,混币器的运营者卷款跑路了:{0} {1} 没有提回。 nightlog.mixer_rug,混币器的运营者卷款跑路了:{0} {1} 没有提回。
tab.mixer,混币器 web3.sub.trade,交易
web3.sub.mixer,混币器
1 # Probably Decentralized 本地化表:简体中文(zh)
191 mixer.min
192 mixer.done
193 mixer.upgrade.title
194 mixer.upgrade.desc
195 news.sanction.title
196 news.sanction.desc
197 nightlog.mixer
198 nightlog.mixer_flag
199 nightlog.mixer_rug
200 tab.mixer web3.sub.trade
201 web3.sub.mixer
+10 -3
View File
@@ -13,7 +13,7 @@ namespace Decentralized
public static class TerminalWindow public static class TerminalWindow
{ {
public const string Id = "pd_terminal"; public const string Id = "pd_terminal";
private enum Page { Home, Bank, Poinbase, Web3, Mixer, Report } private enum Page { Home, Bank, Poinbase, Web3, Report }
private static Page _page = Page.Home; private static Page _page = Page.Home;
private static string _amount = ""; private static string _amount = "";
@@ -28,7 +28,6 @@ namespace Decentralized
b.BeginRow(); b.BeginRow();
foreach (Page p in Enum.GetValues(typeof(Page))) foreach (Page p in Enum.GetValues(typeof(Page)))
{ {
if (p == Page.Mixer && !Unlock.MixerUnlocked) continue;
var page = p; var page = p;
string name = L.T("tab." + p.ToString().ToLowerInvariant()); string name = L.T("tab." + p.ToString().ToLowerInvariant());
b.AddButton(page == _page ? $"[{name}]" : name, () => { _page = page; _message = null; Open(); }); b.AddButton(page == _page ? $"[{name}]" : name, () => { _page = page; _message = null; Open(); });
@@ -42,7 +41,6 @@ namespace Decentralized
case Page.Bank: BankPage(b); break; case Page.Bank: BankPage(b); break;
case Page.Poinbase: ExchangePage(b, Venue.Exchange); break; case Page.Poinbase: ExchangePage(b, Venue.Exchange); break;
case Page.Web3: Web3Page(b); break; case Page.Web3: Web3Page(b); break;
case Page.Mixer: MixerPage(b); break;
default: ReportPage(b); break; default: ReportPage(b); break;
} }
b.End(); b.End();
@@ -237,6 +235,14 @@ namespace Decentralized
private static void Web3Page(CustomUIBuilder b) private static void Web3Page(CustomUIBuilder b)
{ {
var w = Session.Data.Hot; var w = Session.Data.Hot;
if (Unlock.MixerUnlocked)
{
b.BeginRow();
b.AddButton(_web3Mixer ? L.T("web3.sub.trade") : $"[{L.T("web3.sub.trade")}]", () => { _web3Mixer = false; _message = null; Open(); });
b.AddButton(_web3Mixer ? $"[{L.T("web3.sub.mixer")}]" : L.T("web3.sub.mixer"), () => { _web3Mixer = true; _message = null; Open(); });
b.End();
if (_web3Mixer) { MixerPage(b); return; }
}
Columns(b, l => Columns(b, l =>
{ {
l.AddHeader(L.T("web3.wallet.h")); l.AddHeader(L.T("web3.wallet.h"));
@@ -254,6 +260,7 @@ namespace Decentralized
}); });
} }
private static bool _web3Mixer;
private static string _mixAsset = Assets.PSC; private static string _mixAsset = Assets.PSC;
private static int _mixRounds = 2; private static int _mixRounds = 2;
private static readonly float[] MixW = { 70f, 100f, 100f, 80f }; private static readonly float[] MixW = { 70f, 100f, 100f, 80f };