From 34b70023c9f9671b9e77c4f9c4f028f41fd5c722 Mon Sep 17 00:00:00 2001 From: ZHU MINCHAO <48154958+MinchaoZhu@users.noreply.github.com> Date: Sun, 8 Nov 2026 20:04:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B1=A1=E7=82=B9=E6=8C=89=E5=B8=81=E7=A7=8D?= =?UTF-8?q?=E8=AE=B0=E8=84=8F=E6=9E=9A=E6=95=B0=E3=80=81=E5=8F=AA=E5=9C=A8?= =?UTF-8?q?=20Web3=20=E9=92=B1=E5=8C=85=E9=87=8C=EF=BC=9BPoinbase=20?= =?UTF-8?q?=E5=8F=AA=E6=94=B6=E5=B9=B2=E5=87=80=E7=9A=84=E5=B8=81=EF=BC=9B?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=87=BA=E9=87=91=E5=AE=A1=E6=9F=A5=EF=BC=9B?= =?UTF-8?q?=E6=B0=B8=E7=BB=AD=E6=93=8D=E7=BA=B5=E5=8F=AA=E8=AE=B0=E7=BD=AA?= =?UTF-8?q?=E8=AF=81=EF=BC=9B=E6=B3=84=E9=9C=B2=E8=AE=B0=E7=BD=AA=E8=AF=81?= =?UTF-8?q?=EF=BC=9B=E5=89=A7=E6=83=85=E6=9B=BF=E6=8D=A2=EF=BC=9B=E5=AD=98?= =?UTF-8?q?=E6=A1=A3=E8=BF=81=E7=A7=BB=E5=88=B0=E6=95=B0=E6=8D=AE=E7=89=88?= =?UTF-8?q?=E6=9C=AC=205?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 15 + src/Decentralized.Domain/BlackMarket.cs | 8 +- src/Decentralized.Domain/BmOrders.cs | 19 +- src/Decentralized.Domain/BmSales.cs | 7 +- src/Decentralized.Domain/CoinPayment.cs | 5 +- src/Decentralized.Domain/Exchange.cs | 61 +--- src/Decentralized.Domain/Mixer.cs | 64 ++-- src/Decentralized.Domain/Otc.cs | 11 +- src/Decentralized.Domain/OwnMixer.cs | 35 +- src/Decentralized.Domain/Perps.cs | 25 +- src/Decentralized.Domain/Ponzi.cs | 2 +- src/Decentralized.Domain/Predict.cs | 86 ++--- src/Decentralized.Domain/Scams.cs | 35 +- src/Decentralized.Domain/Staking.cs | 21 +- src/Decentralized.Domain/StoryMods.cs | 9 +- src/Decentralized.Domain/TaintMigration.cs | 45 +++ src/Decentralized.Domain/Tuning.cs | 15 +- src/Decentralized.Domain/TuningTable.cs | 11 +- src/Decentralized.Domain/Wallet.cs | 132 ++++++-- src/Decentralized/CoinCustomers.cs | 6 +- src/Decentralized/Core.cs | 14 - .../ModFiles/Localization/de.csv | 40 +-- .../ModFiles/Localization/en.csv | 40 +-- .../ModFiles/Localization/es.csv | 40 +-- .../ModFiles/Localization/fr.csv | 40 +-- .../ModFiles/Localization/ja.csv | 40 +-- .../ModFiles/Localization/pl.csv | 38 +-- .../ModFiles/Localization/ru.csv | 38 +-- .../ModFiles/Localization/zh.csv | 40 +-- src/Decentralized/Night.cs | 10 +- src/Decentralized/OtcClient.cs | 8 +- src/Decentralized/Session.cs | 11 +- src/Decentralized/TerminalWindow.OwnMix.cs | 10 +- src/Decentralized/TerminalWindow.cs | 70 ++-- src/Decentralized/TumblerStory.cs | 11 +- src/Decentralized/WalletWindow.cs | 28 +- tests/Decentralized.Domain.Tests/Program.cs | 301 +++++++++--------- 37 files changed, 744 insertions(+), 647 deletions(-) create mode 100644 src/Decentralized.Domain/TaintMigration.cs diff --git a/CHANGELOG.md b/CHANGELOG.md index d37aad8..2fc51ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -47,6 +47,21 @@ - 修正:Tumbler 每次上门的外观原来是随机的,现在第一次上门定下后一直不变。 - 手册剧情联动一节补一段,8 种语言。 +### 第十一阶段 stage 5:污点按币种记脏枚数,删除出金审查 + +- 污点只在 Web3 钱包里,每种币分别记“其中有几枚是脏的”,钱包页、PLEDGER 的余额里能看到;钱包总表的“脏币”列按现价显示。原来整个钱包记一笔信用点的污点不再使用。 +- 花掉、转出、付手续费时按这种币的脏比例带走脏的;兑换成别的币时脏比例跟过去(60% 脏的 CRT 换成 PSC,PSC 也是 60% 脏);兑入 Ponero 时脏币消失,Ponero 是干净的。 +- Poinbase 只收干净的币:钱包往充值地址每种币最多转干净的枚数,超出时 PLEDGER 拦下并写明能充多少;资金页“从钱包入金”也列出每种币能充多少。Poinbase 账户和银行没有污点。 +- 出金审查整套删除:出金到银行不再有被查概率、没收和销赃罪证,只收手续费 0.1%、对超出成本的部分征税 8%。从 Ponero 兑出、刚从混币器提出的币也不再“出金加重”。 +- 带污点的收入都改成“收到的这批币里有几枚是脏的”:换币客户卖来的币、用币付款的顾客(按赃物热度)、灰网卖赃物的货款、预测盘内幕单和操纵的兑付、理财卷款、自营混币器的收入和卷款、卖密钥盘换来的 CRT。“加污点不能超过钱包价值、超出部分记诈骗罪证”的规则随之删除。 +- 永续被判操纵:盈利照常留在账户,只记诈骗罪证(盈利 × 50%,单次最多 400),不再加污点。 +- 混币器:存入时带走这种币的脏枚数,每轮减少;制裁期间到期的出款、从钓鱼混币器提出的币不洗,整笔都是脏的。 +- Tumbler 的密钥泄露:不再往钱包里加回污点,改为按最近 30 天混币器出款洗掉的污点记诈骗罪证(× 50%,单次最多 400)。 +- 剧情联动:塞尔皮科的证据交给治安部,原来的“出金审查更严”换成 30 天内混币器每轮清洗率 ×0.7;伦警官被捕,原来的“出金审查更严”换成 14 天内换币客户里的便衣 ×1.3。 +- 存档数据版本 5:读旧档时,每个钱包原来的污点按当前价格摊成各币的脏枚数;Poinbase 账户和永续仓位的污点挪到 1 号钱包一起摊(超出的作废);混币器、黑市订单、质押、空投池、预测持仓、自营混币器本金里托管的污点换成对应币的脏枚数。 +- 模拟(research/launder):混币器小额 1–3 轮洗钱成本 10%–15%,Ponero 约 12%、每天约 500,买币的换币客户是负成本但受客流限制;数值都不用改。 +- 手册“出金审查”一节改写为“污点”,相关段落 8 种语言同步改。 + ## 1.1.0 市场与洗钱的平衡调整:Poinbase 改为订单簿、DEX 稳定币对改为稳定币池、保险基金和爆仓新闻、预测市场流动性、收黑币、浏览器记录钱包的每一笔进出。存档兼容,读旧存档时自动升级。 diff --git a/src/Decentralized.Domain/BlackMarket.cs b/src/Decentralized.Domain/BlackMarket.cs index 5234f58..8e7e629 100644 --- a/src/Decentralized.Domain/BlackMarket.cs +++ b/src/Decentralized.Domain/BlackMarket.cs @@ -116,7 +116,7 @@ namespace Decentralized.Domain return true; } - /// 买一件:付 asset 币。钱包里按价值比例带走的污点和成本留在卖家那边。成功返回 true,库存减一。 + /// 买一件:付 asset 币。付出的币按它的脏比例带走脏枚数,成本按价值比例留在卖家那边。成功返回 true,库存减一。 public bool Buy(BmOffer o, Wallet w, string asset, Func price) { if (o == null || o.Qty <= 0 || asset == Assets.CRC) return false; @@ -126,7 +126,6 @@ namespace Decentralized.Domain if (w.Avail(asset) + 1e-9 < qty) return false; double total = w.Value(price); double share = total > 0 ? Math.Min(1, o.Price / total) : 0; - w.Taint -= w.Taint * share; w.Basis -= w.Basis * share; w.Add(asset, -qty); o.Qty--; @@ -139,14 +138,11 @@ namespace Decentralized.Domain public double DeskLeft(int day) => Math.Max(0, Tuning.PoneroDailyCap - (DeskDay == day ? DeskToday : 0)); - /// 兑入 Ponero:from 币 amount 个,扣手续费后按 Ponero 价到账;这部分价值带的污点被清除(不跟着 Ponero)。返回到账数量,额度或余额不足返回 -1。 + /// 兑入 Ponero:from 币 amount 个,扣手续费后按 Ponero 价到账;兑掉的币连同其中的脏枚数一起消失,换来的 Ponero 是干净的。返回到账数量,额度或余额不足返回 -1。 public double ToPonero(Wallet w, string from, double amount, int day, Func price) { double value = amount * price(from); if (from == Assets.Ponero || amount <= 0 || value <= 0 || w.Avail(from) + 1e-9 < amount || value > DeskLeft(day) + 1e-9) return -1; - double total = w.Value(price); - double share = total > 0 ? Math.Min(1, value / total) : 0; - w.Taint -= w.Taint * share; w.Add(from, -amount); double got = value * (1 - Tuning.PoneroFee) / price(Assets.Ponero); w.Add(Assets.Ponero, got); diff --git a/src/Decentralized.Domain/BmOrders.cs b/src/Decentralized.Domain/BmOrders.cs index 35f160e..fea3ea7 100644 --- a/src/Decentralized.Domain/BmOrders.cs +++ b/src/Decentralized.Domain/BmOrders.cs @@ -1,4 +1,5 @@ using System; +using Newtonsoft.Json; using System.Collections.Generic; using System.Linq; @@ -46,8 +47,10 @@ namespace Decentralized.Domain public double Qty; /// 付款的钱包地址:退款回这里。 public string Wallet; - /// 付款时留在卖家那边的污点与成本:退款时一并还回,免得"付脏币再退款"洗钱。 - public double Taint, Basis; + /// 付款的币里脏的枚数和成本:退款时一并还回,免得"付脏币再退款"洗钱。 + public double Dirty, Basis; + /// 旧存档(数据版本 5 之前)的污点额(信用点),读档迁移时换成 。 + [JsonProperty("Taint")] public double LegacyTaint; public int PlacedDay, DueDay; /// 被截获后执法选择了上门:到货时快递员是执法人员,签收即记罪证。 public bool Controlled; @@ -238,7 +241,7 @@ namespace Decentralized.Domain /// 目录里全部货按订单价算的总值(信用点),用来核对每周周转量。 public double CatalogValue => Catalog.Sum(l => (double)l.Price * l.Qty); - /// 下单:钱包里的币按实付折算扣除,污点与成本按比例留在卖家那边(记在订单上)。成功返回订单。 + /// 下单:钱包里的币按实付折算扣除,脏枚数与成本按比例留在卖家那边(记在订单上)。成功返回订单。 public BmOrder Place(BmListing l, int count, PayMode mode, Wallet w, string asset, int day, Func price) { if (l == null || count < 1 || count > l.Qty || asset == Assets.CRC || Closed(day)) return null; @@ -251,13 +254,13 @@ namespace Decentralized.Domain if (w.Avail(asset) + 1e-9 < qty) return null; double total = w.Value(price); double share = total > 0 ? Math.Min(1, credits / total) : 0; - double taint = w.Taint * share, basis = w.Basis * share; - w.Taint -= taint; w.Basis -= basis; + double dirty = qty * w.DirtyRatio(asset), basis = w.Basis * share; + w.Basis -= basis; w.Add(asset, -qty); var o = new BmOrder { Id = NextOrderId++, Item = l.Item, Seller = seller.Name, SellerScam = seller.Scam, Mode = mode, Count = count, Model = l.Model, FakeOf = l.FakeOf, Health = l.Health, Price = credits, Asset = asset, Qty = qty, - Taint = taint, Basis = basis, PlacedDay = day, DueDay = day + seller.Days, Wallet = w.Address, + Dirty = dirty, Basis = basis, PlacedDay = day, DueDay = day + seller.Days, Wallet = w.Address, }; l.Qty -= count; if (l.Qty <= 0) Catalog.Remove(l); @@ -268,8 +271,8 @@ namespace Decentralized.Domain private static void Refund(Wallet w, BmOrder o) { - w.Add(o.Asset, o.Qty); - w.Taint += o.Taint; w.Basis += o.Basis; + w.AddDirty(o.Asset, o.Qty, o.Dirty); + w.Basis += o.Basis; } /// 每晚推进订单:平台跑路、到期的订单(卖家跑路、被截获、死投被挖走)、转入可取状态。镇压期间到期顺延一天。 diff --git a/src/Decentralized.Domain/BmSales.cs b/src/Decentralized.Domain/BmSales.cs index d89ff89..2e6e942 100644 --- a/src/Decentralized.Domain/BmSales.cs +++ b/src/Decentralized.Domain/BmSales.cs @@ -115,7 +115,7 @@ namespace Decentralized.Domain if (w.Avail(feeAsset) + 1e-9 < qty) return null; double total = w.Value(price); double share = total > 0 ? Math.Min(1, ListFee(listPrice) / total) : 0; - w.Taint -= w.Taint * share; w.Basis -= w.Basis * share; + w.Basis -= w.Basis * share; w.Add(feeAsset, -qty); var s = new BmSale { Item = item, Model = model, FakeOf = fakeOf, Health = health, Ref = refValue, Mult = m, ListPrice = listPrice, ListedDay = day, Wallet = w.Address, Heat = Math.Max(0, Math.Min(100, heat)) }; Sales.Add(s); @@ -163,8 +163,9 @@ namespace Decentralized.Domain double p = price(pa); if (p <= 0) continue; var w = wallet(s.Wallet); - w.Add(pa, s.Proceeds / p); - w.Taint += s.Taint; + // 回款的币按 污点 / 回款额 的比例是脏的 + double got = s.Proceeds / p; + w.AddDirty(pa, got, s.Proceeds > 0 ? got * Math.Min(1, s.Taint / s.Proceeds) : 0); w.Basis += s.Proceeds; s.State = SaleState.Paid; ev.Add(new BmEvent { Kind = "sale_paid", Sale = s, Amount = s.Proceeds }); diff --git a/src/Decentralized.Domain/CoinPayment.cs b/src/Decentralized.Domain/CoinPayment.cs index a31ee99..d1971cd 100644 --- a/src/Decentralized.Domain/CoinPayment.cs +++ b/src/Decentralized.Domain/CoinPayment.cs @@ -33,13 +33,12 @@ namespace Decentralized.Domain } } - /// 收款:返回收到的币数。heatPct 是物品的赃物热度(0–100)。多付的溢价是顾客给的额外收入,不带污点。 + /// 收款:返回收到的币数。heatPct 是物品的赃物热度(0–100):按货值 × 热度那部分的币是脏的;多付的溢价是顾客给的额外收入,干净。 public static double Receive(Wallet w, string asset, double credits, double price, double heatPct) { if (credits <= 0 || price <= 0) return 0; double qty = credits * (1 + Tuning.CoinPayPremium) / price; // 溢价只加在币数上,污点与成本仍按货值算 - w.Add(asset, qty); - w.Taint += credits * Math.Max(0, Math.Min(100, heatPct)) / 100.0; + w.AddDirty(asset, qty, credits * Math.Max(0, Math.Min(100, heatPct)) / 100.0 / price); w.Basis += credits; return qty; } diff --git a/src/Decentralized.Domain/Exchange.cs b/src/Decentralized.Domain/Exchange.cs index 78cb2dd..afa4583 100644 --- a/src/Decentralized.Domain/Exchange.cs +++ b/src/Decentralized.Domain/Exchange.cs @@ -1,76 +1,49 @@ using System; -using System.Collections.Generic; -using System.Linq; namespace Decentralized.Domain { - public enum AmlOutcome { Clear, Light, Heavy } - - /// 一次合规出金的结果。罪证由接入层记进游戏的罪证账本(销赃)。 + /// 一次出金到银行的结果。 public sealed class CashoutResult { public double Requested; public double Received; - public double Confiscated; - public double Crime; public double Tax; - public double HitChance; - public AmlOutcome Outcome; } /// - /// 合规交易所出金:CRC 兑回信用点,过 AML。审查按单笔金额、7 天累计金额、污点比例、是否来自混币器或被标记地址判定。 - /// 轻度命中(污点 < 30%)没收污点部分、不记罪证;重度命中没收污点部分,并把污点额记为销赃罪证。 + /// 合规交易所 Poinbase:只收干净的币(钱包往充值地址最多转“价值 − 污点”,见 ),账户没有污点。 + /// 出金到银行把 CRC 兑回信用点,扣手续费,只对超出成本的部分计税,不做审查。 /// public sealed class Exchange { /// Poinbase 上架的币:只有这些能充值、能在现货交易。黑市的 CRT、革命军的 CRA 合规交易所不收。 public static readonly string[] Listed = { Assets.PSC, Assets.CRC, Assets.SPARK }; - /// 最近的出金记录:(天, 金额)。 - public List> History = new List>(); - - public static double HitChance(double amount, double taint, double recentTotal, double rent, bool fromMixerOrFlagged) + /// 存档迁移(数据版本 5):旧存档里 Poinbase 账户和永续仓位带的污点额(信用点),清零后返回总数,由调用方挪到 1 号钱包一起摊。 + public static double TakeLegacyTaint(Wallet account, System.Collections.Generic.IEnumerable positions) { - if (amount <= 0) return 0; - double ratio = taint / amount; - double big = Tuning.AmlBigRents * rent, cum = Tuning.AmlCumRents * rent; - double p = 0; - if (ratio >= Tuning.AmlTaintRatio) p += ratio * Tuning.AmlTaintMult; - p += Math.Max(0, (amount - big) / big) * Tuning.AmlExcessWeight; - p += Math.Max(0, (recentTotal + amount - cum) / cum) * Tuning.AmlExcessWeight; - if (fromMixerOrFlagged) p += Tuning.AmlMixerBonus; - return Math.Min(Tuning.AmlMaxChance, p); + double t = account.LegacyTaint; + account.LegacyTaint = 0; + foreach (var p in positions) { t += p.LegacyTaint; p.LegacyTaint = 0; } + return t; } /// - /// 从地址里取出 amount 个 CRC 兑成信用点(按 CRC 当前价格,平时为 1;脱锚期间按市价),扣手续费。污点与成本按比例随取出部分计算; + /// 从账户里取出 amount 个 CRC 兑成信用点(按 CRC 当前价格,平时为 1;脱锚期间按市价),扣手续费。成本按取出部分的价值比例带走, /// 只对超出成本的部分计税。 /// - public CashoutResult Cashout(Wallet wallet, double amount, Func price, int day, double rent, bool fromMixer, Rng rng) + public CashoutResult Cashout(Wallet account, double amount, Func price) { - amount = Math.Min(amount, wallet.Get(Assets.CRC)); + amount = Math.Min(amount, account.Get(Assets.CRC)); var r = new CashoutResult { Requested = amount }; if (amount <= 0) return r; - double total = wallet.Value(price); - double share = total > 0 ? Math.Min(1, amount * price(Assets.CRC) / total) : 0; - double taint = wallet.Taint * share, basis = wallet.Basis * share; - History.RemoveAll(h => h.Key <= day - Tuning.AmlWindowDays); - double recent = History.Sum(h => h.Value); + double total = account.Value(price); double value = amount * price(Assets.CRC); - r.HitChance = Math.Min(1, HitChance(value, taint, recent, rent, fromMixer || wallet.Flagged) * StoryMods.Current.Aml(day)); - wallet.Add(Assets.CRC, -amount); - wallet.Taint -= taint; - wallet.Basis -= basis; - History.Add(new KeyValuePair(day, value)); + double share = total > 0 ? Math.Min(1, value / total) : 0; + double basis = account.Basis * share; + account.Add(Assets.CRC, -amount); + account.Basis -= basis; double got = value * (1 - Tuning.ExchangeFee); - if (rng.Chance(r.HitChance)) - { - r.Outcome = taint / value >= Tuning.AmlHeavyRatio ? AmlOutcome.Heavy : AmlOutcome.Light; - r.Confiscated = Math.Min(got, taint); - got -= r.Confiscated; - if (r.Outcome == AmlOutcome.Heavy) r.Crime = taint; - } r.Tax = Math.Max(0, got - basis) * Tuning.TaxRate; r.Received = got; return r; diff --git a/src/Decentralized.Domain/Mixer.cs b/src/Decentralized.Domain/Mixer.cs index 76ccb72..4236935 100644 --- a/src/Decentralized.Domain/Mixer.cs +++ b/src/Decentralized.Domain/Mixer.cs @@ -1,4 +1,5 @@ using System; +using Newtonsoft.Json; using System.Collections.Generic; using System.Linq; @@ -9,15 +10,17 @@ namespace Decentralized.Domain { public string Asset; public double Amount; - /// 存入时一并带走的污点与成本(信用点)。 - public double Taint, Basis; + /// 存入的币里脏的枚数,和一并带走的成本(信用点)。 + public double Dirty, Basis; + /// 旧存档(数据版本 5 之前)的污点额(信用点),读档迁移时换成 。 + [JsonProperty("Taint")] public double LegacyTaint; public int Rounds; public int ReadyDay; /// 存入的钱包地址:到期提回这里。 public string Wallet; } - /// 一笔到期提回的出款记录(泄露时用来还原):Cleaned 是这笔洗掉的污点(信用点)。 + /// 一笔到期提回的出款记录(泄露时按它记罪证):Cleaned 是这笔洗掉的污点,按提回时的价格折成信用点。 public sealed class MixReturn { public int Day; @@ -25,11 +28,11 @@ namespace Decentralized.Domain public double Amount, Cleaned; } - /// 泄露的结果:还原了几笔出款,实际加回的污点,超出钱包价值的部分。 + /// 泄露的结果:最近几笔出款,一共洗掉了多少污点(信用点),折成的诈骗罪证。 public sealed class MixLeak { public int Count; - public double Taint, Over; + public double Cleaned, Fraud; } /// 一笔混币结束时的结果,供夜间日志使用。 @@ -38,6 +41,7 @@ namespace Decentralized.Domain public bool Rugged; public string Asset; public double Amount, TaintBefore, TaintAfter; + /// 被标记(制裁期间提出、从钓鱼混币器提出):不洗,整笔都是脏的。 public bool Flagged; } @@ -50,28 +54,18 @@ namespace Decentralized.Domain { public List Pending = new List(); public int SanctionedUntil = -1; - /// 提回的币最近一次从混币器出来的天数,用来给出金审查加重。 - public int LastReturnDay = -999; /// 最近的出款记录(Tumbler 的密钥落到治安部时用来还原)。 public List Returns = new List(); /// - /// 泄露:最近 天的出款,把洗掉的污点加回原钱包(带上限,超出部分返回给接入层折成罪证); - /// 钱包已经不在的跳过。记录清空。 + /// 泄露:最近 天的出款被还原,按这些出款洗掉的污点记诈骗罪证()。记录清空。 /// - public MixLeak Leak(int day, Func wallet, Func price) + public MixLeak Leak(int day) { - var r = new MixLeak(); - foreach (var g in Returns.Where(x => day - x.Day <= Tuning.TumblerLeakDays).GroupBy(x => x.Wallet)) - { - var w = wallet(g.Key); - if (w == null) continue; - double add = g.Sum(x => x.Cleaned); - double over = w.AddTaintCapped(add, price); - r.Count += g.Count(); r.Taint += add - over; r.Over += over; - } + var recent = Returns.Where(x => day - x.Day <= Tuning.TumblerLeakDays).ToList(); + double cleaned = recent.Sum(x => x.Cleaned); Returns.Clear(); - return r; + return new MixLeak { Count = recent.Count, Cleaned = cleaned, Fraud = Wallet.FraudFor(cleaned) }; } private void Remember(MixReturn ret) @@ -91,16 +85,13 @@ namespace Decentralized.Domain public bool Sanctioned(int day) => day <= SanctionedUntil; - /// 资金来自混币器:最近 AML 窗口内提回过币,或者被标记。 - public bool RecentlyMixed(int day) => day - LastReturnDay <= Tuning.AmlWindowDays; - /// 一轮的清洗率:基准 × 匿名集系数。 /// 每轮手续费(剧情可能改动)。 public static double Fee => Math.Min(0.5, Tuning.MixerFee * StoryMods.Current.MixerFee); - public static double RoundRate(double depositValue) => Tuning.MixerCleanRate * Tuning.MixerNpcVolume * StoryMods.Current.MixerVolume / (Tuning.MixerNpcVolume * StoryMods.Current.MixerVolume + Math.Max(0, depositValue)); + public static double RoundRate(double depositValue, int day = -1) => Tuning.MixerCleanRate * (day >= 0 ? StoryMods.Current.MixClean(day) : 1) * Tuning.MixerNpcVolume * StoryMods.Current.MixerVolume / (Tuning.MixerNpcVolume * StoryMods.Current.MixerVolume + Math.Max(0, depositValue)); - /// 存入:从钱包按价值比例带走污点与成本。轮数超出范围或余额不足返回 null。 + /// 存入:按这种币的脏比例带走脏枚数,按价值比例带走成本。轮数超出范围或余额不足返回 null。 public MixDeposit Deposit(Wallet w, string asset, double amount, int rounds, int day, Func price) { if (rounds < 1 || rounds > Tuning.MixerMaxRounds || amount <= 0 || w.Avail(asset) + 1e-9 < amount) return null; @@ -108,11 +99,10 @@ namespace Decentralized.Domain if (value < Tuning.MixerMin) return null; double total = w.Value(price); double share = total > 0 ? Math.Min(1, value / total) : 0; - double taint = w.Taint * share, basis = w.Basis * share; + double dirty = amount * w.DirtyRatio(asset), basis = w.Basis * share; w.Add(asset, -amount); - w.Taint -= taint; w.Basis -= basis; - var d = new MixDeposit { Asset = asset, Amount = amount, Taint = taint, Basis = basis, Rounds = rounds, ReadyDay = day + rounds, Wallet = w.Address }; + var d = new MixDeposit { Asset = asset, Amount = amount, Dirty = dirty, Basis = basis, Rounds = rounds, ReadyDay = day + rounds, Wallet = w.Address }; Pending.Add(d); return d; } @@ -140,19 +130,17 @@ namespace Decentralized.Domain } if (day < d.ReadyDay) continue; Pending.Remove(d); - double rate = RoundRate(d.Amount * price(d.Asset)); - double taint = d.Taint * Math.Pow(1 - rate, d.Rounds); - double amount = d.Amount * Math.Pow(1 - Fee, d.Rounds); - // 制裁期间提出的、从治安部的钓鱼混币器提出的,都被标记 + // 制裁期间提出的、从治安部的钓鱼混币器提出的,都被标记:不洗,这笔币按全额污点带回 bool flagged = Sanctioned(day) || StoryMods.Current.MixerHoneypot; + double rate = flagged ? 0 : RoundRate(d.Amount * price(d.Asset), day); + double amount = d.Amount * Math.Pow(1 - Fee, d.Rounds); + double dirty = flagged ? amount : Math.Min(amount, d.Dirty * Math.Pow(1 - rate, d.Rounds)); var w = wallet(d.Wallet); - w.Add(d.Asset, amount); - w.Taint += taint; + w.AddDirty(d.Asset, amount, dirty); w.Basis += d.Basis; - if (flagged) w.Flagged = true; - LastReturnDay = day; - Remember(new MixReturn { Day = day, Wallet = d.Wallet, Asset = d.Asset, Amount = amount, Cleaned = Math.Max(0, d.Taint - taint) }); - results.Add(new MixResult { Asset = d.Asset, Amount = amount, TaintBefore = d.Taint, TaintAfter = taint, Flagged = flagged }); + double p = price(d.Asset); + Remember(new MixReturn { Day = day, Wallet = d.Wallet, Asset = d.Asset, Amount = amount, Cleaned = Math.Max(0, d.Dirty - dirty) * p }); + results.Add(new MixResult { Asset = d.Asset, Amount = amount, TaintBefore = d.Dirty * p, TaintAfter = dirty * p, Flagged = flagged }); } return results; } diff --git a/src/Decentralized.Domain/Otc.cs b/src/Decentralized.Domain/Otc.cs index bb1dc41..e06d6d7 100644 --- a/src/Decentralized.Domain/Otc.cs +++ b/src/Decentralized.Domain/Otc.cs @@ -59,7 +59,7 @@ namespace Decentralized.Domain /// 否则在 PSC、CRT、CRA 里随机,污点比例在 OtcTaintMin–OtcTaintMax 之间。市值 = 房租 × 区间;现金价 = 市值 × 折扣,折扣按污点比例从 OtcCutClean 线性降到 OtcCutDirty。 /// crackdown:镇压期间便衣更多。 /// - public static OtcOffer MakeSell(ICollection active, bool poneroOpen, Func price, double rent, Rng rng) + public static OtcOffer MakeSell(ICollection active, bool poneroOpen, Func price, double rent, Rng rng, double stingMult = 1) { if (rent <= 0) return null; string asset = null; double ratio; @@ -75,7 +75,7 @@ namespace Decentralized.Domain return new OtcOffer { Side = OtcSide.Sell, Asset = asset, Qty = value / p, Value = value, TaintRatio = ratio, Cash = (int)Math.Round(value * cut), - Sting = rng.Chance(Tuning.OtcSting + (crackdown ? Tuning.OtcStingCrackdown : 0)), + Sting = rng.Chance(Math.Min(1, (Tuning.OtcSting + (crackdown ? Tuning.OtcStingCrackdown : 0)) * stingMult)), }; } @@ -101,12 +101,11 @@ namespace Decentralized.Domain return new OtcOffer { Side = o.Side, Asset = o.Asset, Qty = o.Qty * f, Value = o.Value * f, TaintRatio = o.TaintRatio, Cash = (int)Math.Round(o.Cash * f), Sting = o.Sting }; } - /// 收下卖币客户的币:币进钱包,成本是付出的现金;污点 = 市值 × 污点比例(带上限)。返回超出钱包价值、没加进去的污点。 - public static double Receive(Wallet w, OtcOffer o, Func price) + /// 收下卖币客户的币:币进钱包,其中 数量 × 污点比例 枚是脏的;成本是付出的现金。 + public static void Receive(Wallet w, OtcOffer o) { - w.Add(o.Asset, o.Qty); + w.AddDirty(o.Asset, o.Qty, o.Qty * o.TaintRatio); w.Basis += o.Cash; - return o.TaintRatio > 0 ? w.AddTaintCapped(o.Value * o.TaintRatio, price) : 0; } /// diff --git a/src/Decentralized.Domain/OwnMixer.cs b/src/Decentralized.Domain/OwnMixer.cs index f5f3e81..ab88443 100644 --- a/src/Decentralized.Domain/OwnMixer.cs +++ b/src/Decentralized.Domain/OwnMixer.cs @@ -1,13 +1,16 @@ using System; +using Newtonsoft.Json; using System.Collections.Generic; using System.Linq; namespace Decentralized.Domain { - /// 自营混币器里一种币:玩家的本金(数量、污点额)和还没取走的手续费收入(取走时全额带污点)。 + /// 自营混币器里一种币:玩家的本金(数量、其中脏的枚数)和还没取走的手续费收入(取走时整笔是脏的)。 public sealed class MixPool { - public double Capital, CapTaint, Earned; + public double Capital, CapDirty, Earned; + /// 旧存档(数据版本 5 之前)本金的污点额(信用点),读档迁移时换成 。 + [JsonProperty("CapTaint")] public double LegacyCapTaint; } /// NPC 客户的一笔存入:扣掉手续费后的数量、存入时的污点额(信用点)、轮数、到期日。 @@ -81,43 +84,39 @@ namespace Decentralized.Domain Rating = Remain(RoundRate(Anonymity(price))); } - /// 注资:币从钱包进本金,污点按价值比例随币走。 + /// 注资:币从钱包进本金,按这种币的脏比例带上脏枚数。 public bool Inject(Wallet w, string asset, double amount, Func price) { if (amount <= 0 || w.Avail(asset) + 1e-9 < amount || !AssetsList.Contains(asset)) return false; double total = w.Value(price), share = total > 0 ? Math.Min(1, amount * price(asset) / total) : 0; - double taint = w.Taint * share, basis = w.Basis * share; - w.Add(asset, -amount); w.Taint -= taint; w.Basis -= basis; + double dirty = amount * w.DirtyRatio(asset), basis = w.Basis * share; + w.Add(asset, -amount); w.Basis -= basis; var p = Pool(asset); - p.Capital += amount; p.CapTaint += taint; + p.Capital += amount; p.CapDirty += dirty; return true; } - /// 取回:不超过 。先取手续费收入(全额带污点),再取本金(按本金的污点比例)。over 是超出钱包价值、没加进去的污点。 - public bool Withdraw(Wallet w, string asset, double amount, Func price, out double over) + /// 取回:不超过 。先取手续费收入(整笔是脏的),再取本金(按本金的脏比例)。 + public bool Withdraw(Wallet w, string asset, double amount) { - over = 0; var p = Pool(asset); if (amount <= 0 || amount > Free(asset) + 1e-9) return false; double fromFees = Math.Min(amount, p.Earned), fromCap = Math.Min(p.Capital, amount - fromFees); - double capTaint = p.Capital > 1e-12 ? p.CapTaint * fromCap / p.Capital : 0; - p.Earned -= fromFees; p.Capital -= fromCap; p.CapTaint -= capTaint; - w.Add(asset, fromFees + fromCap); - over = w.AddTaintCapped(fromFees * price(asset) + capTaint, price); + double capDirty = p.Capital > 1e-12 ? p.CapDirty * fromCap / p.Capital : 0; + p.Earned -= fromFees; p.Capital -= fromCap; p.CapDirty -= capDirty; + w.AddDirty(asset, fromFees + fromCap, fromFees + capDirty); return true; } - /// 卷款跑路:本金、收入和客户在途的币全部进钱包、全额带污点,永久关闭。返回 (币种, 数量);over 是超出钱包价值的污点。 - public List> Rug(Wallet w, Func price, out double over) + /// 卷款跑路:本金、收入和客户在途的币全部进钱包,整笔是脏的,永久关闭。返回 (币种, 数量)。 + public List> Rug(Wallet w) { - over = 0; var got = new List>(); foreach (var a in AssetsList) { double amt = Total(a); if (amt <= 1e-9) continue; - w.Add(a, amt); - over += w.AddTaintCapped(amt * price(a), price); + w.AddDirty(a, amt, amt); got.Add(new KeyValuePair(a, amt)); } Pools.Clear(); Pending.Clear(); diff --git a/src/Decentralized.Domain/Perps.cs b/src/Decentralized.Domain/Perps.cs index 23f52e4..9d531fe 100644 --- a/src/Decentralized.Domain/Perps.cs +++ b/src/Decentralized.Domain/Perps.cs @@ -1,4 +1,5 @@ using System; +using Newtonsoft.Json; using System.Collections.Generic; using System.Linq; @@ -9,7 +10,9 @@ namespace Decentralized.Domain { public string Product; public bool Long; - public double Size, Entry, Margin, Taint, Basis; + public double Size, Entry, Margin, Basis; + /// 旧存档(数据版本 5 之前)保证金带的污点额:读档迁移时挪到 1 号钱包,之后为 0(Poinbase 没有污点)。 + [JsonProperty("Taint")] public double LegacyTaint; public double Notional(double price) => Size * price; public double Pnl(double price) => (Long ? 1 : -1) * Size * (price - Entry); @@ -97,13 +100,13 @@ namespace Decentralized.Domain double eq0 = (pos?.Margin ?? 0) + margin + (isLong ? 1 : -1) * sizeAll * (spot - entryAll); if (eq0 < (Tuning.PerpMaint + Tuning.PerpOpenBuffer) * sizeAll * spot) return PerpResult.Thin; double share = Share(acct, margin, pr); - double taint = acct.Taint * share, basis = acct.Basis * share; - acct.Add(Assets.CRC, -(margin + fee)); acct.Taint -= taint; acct.Basis -= basis; + double basis = acct.Basis * share; + acct.Add(Assets.CRC, -(margin + fee)); acct.Basis -= basis; InsuranceFund += fee * Tuning.PerpFeeToFund; if (pos == null) Positions.Add(pos = new PerpPosition { Product = product, Long = isLong, Entry = price }); double size = notional / price; pos.Entry = (pos.Size * pos.Entry + size * price) / (pos.Size + size); - pos.Size += size; pos.Margin += margin; pos.Taint += taint; pos.Basis += basis; + pos.Size += size; pos.Margin += margin; pos.Basis += basis; return PerpResult.Ok; } @@ -115,13 +118,13 @@ namespace Decentralized.Domain if (amount <= 0) return PerpResult.Margin; if (acct.Avail(Assets.CRC) + 1e-9 < amount) return PerpResult.Funds; double share = Share(acct, amount, pr); - double taint = acct.Taint * share, basis = acct.Basis * share; - acct.Add(Assets.CRC, -amount); acct.Taint -= taint; acct.Basis -= basis; - pos.Margin += amount; pos.Taint += taint; pos.Basis += basis; + double basis = acct.Basis * share; + acct.Add(Assets.CRC, -amount); acct.Basis -= basis; + pos.Margin += amount; pos.Basis += basis; return PerpResult.Ok; } - /// 平仓(按白天的现价):权益减手续费回到账户,污点按剩下的比例退回,盈利是干净的新币。权益不够付时缺口按穿仓处理。返回回到账户的 CRC。 + /// 平仓(按白天的现价):权益减手续费回到账户,成本按剩下的比例退回。权益不够付时缺口按穿仓处理。返回回到账户的 CRC。 public double Close(Wallet acct, string product, double price, int day, out double deficit) { deficit = 0; @@ -140,7 +143,7 @@ namespace Decentralized.Domain private void Return(Wallet acct, PerpPosition pos, double payout) { double keep = pos.Margin > 0 ? Math.Min(1, payout / pos.Margin) : 0; - acct.Add(Assets.CRC, payout); acct.Taint += pos.Taint * keep; acct.Basis += pos.Basis * keep; + acct.Add(Assets.CRC, payout); acct.Basis += pos.Basis * keep; } /// 穿仓缺口:保险基金先垫,不够的记成欠款。 @@ -223,8 +226,8 @@ namespace Decentralized.Domain if (repay > 1e-9) { double share = Share(acct, repay, pr); - double taint = acct.Taint * share, basis = acct.Basis * share; - acct.Add(Assets.CRC, -repay); acct.Taint -= taint; acct.Basis -= basis; + double basis = acct.Basis * share; + acct.Add(Assets.CRC, -repay); acct.Basis -= basis; Debt -= repay; evs.Add(new PerpEvent { Kind = "repaid", Amount = repay }); } diff --git a/src/Decentralized.Domain/Ponzi.cs b/src/Decentralized.Domain/Ponzi.cs index bd78236..1a53752 100644 --- a/src/Decentralized.Domain/Ponzi.cs +++ b/src/Decentralized.Domain/Ponzi.cs @@ -75,7 +75,7 @@ namespace Decentralized.Domain { if (!Open) return 0; double take = Pool; - acct.Add(Assets.CRC, take); acct.Taint += take; + acct.AddDirty(Assets.CRC, take, take); Open = false; Done = true; Pool = 0; return take; } diff --git a/src/Decentralized.Domain/Predict.cs b/src/Decentralized.Domain/Predict.cs index 5ae860d..d0fce5b 100644 --- a/src/Decentralized.Domain/Predict.cs +++ b/src/Decentralized.Domain/Predict.cs @@ -1,4 +1,5 @@ using System; +using Newtonsoft.Json; using System.Collections.Generic; using System.Linq; @@ -77,7 +78,10 @@ namespace Decentralized.Domain /// 持仓所在的钱包地址(下注签名的钱包,结算和卖出都回到它)。 public string Wallet; public bool Yes; - public double Shares, Cost, Taint, Basis, Insider; + /// Dirty:下注付出的 CRC 里脏的枚数(兑付时按比例带回)。 + public double Shares, Cost, Dirty, Basis, Insider; + /// 旧存档(数据版本 5 之前)的污点额(信用点),读档迁移时换成 。 + [JsonProperty("Taint")] public double LegacyTaint; } /// 情报贩子卖的内幕消息:对某个盘口给出"是 / 否"的说法,三档准确率,可能是假的(与真相相反)。 @@ -113,13 +117,13 @@ namespace Decentralized.Domain public bool Held; } - /// 夜间结算发生的事。Kind:win / lose / void / insider(内幕份额记了污点)/ manip(被判操纵,整笔兑付记了污点)。 - /// Amount 是兑付或本金;Taint 是实际加上的污点,Over 是超出钱包价值、折成罪证的部分,Fraud 是罪证。 + /// 夜间结算发生的事。Kind:win / lose / void / insider(内幕份额对应的兑付记成脏币)/ manip(被判操纵,整笔兑付记成脏币)。 + /// Amount 是兑付或本金;Taint 是因此记成脏的 CRC 枚数。 public sealed class PredictEvent { public string Kind, Title; public PredictMarket Market; - public double Amount, Taint, Over, Fraud; + public double Amount, Taint; } /// 候选盘口(接入层按游戏当前状态给出):先验概率按窗口算。 @@ -157,7 +161,7 @@ namespace Decentralized.Domain } /// - /// 买入:花 spend(含手续费)的 CRC。污点与成本按花掉的价值比例随资金进持仓。insider:这笔单下单时玩家已经知道答案(传闻纸条、派系特权)。 + /// 买入:花 spend(含手续费)的 CRC。CRC 的脏枚数按比例、成本按花掉的价值比例随资金进持仓。insider:这笔单下单时玩家已经知道答案(传闻纸条、派系特权)。 /// public PredictResult Buy(Wallet acct, PredictMarket m, bool yes, double spend, int day, Func pr, bool insider, out double shares) { @@ -172,25 +176,24 @@ namespace Decentralized.Domain shares = m.SharesFor(yes, cost); if (all.Sum(x => x.Shares) + shares > m.ShareCap + 1e-9) { shares = 0; return PredictResult.Cap; } double share = Share(acct, spend, pr); - double taint = acct.Taint * share, basis = acct.Basis * share; - acct.Add(Assets.CRC, -spend); acct.Taint -= taint; acct.Basis -= basis; + double dirty = spend * acct.DirtyRatio(Assets.CRC), basis = acct.Basis * share; + acct.Add(Assets.CRC, -spend); acct.Basis -= basis; if (yes) m.QYes += shares; else m.QNo += shares; if (pos == null) Positions.Add(pos = new PredictPos { Market = m.Id, Yes = yes, Wallet = acct.Address }); - pos.Shares += shares; pos.Cost += cost; pos.Taint += taint; pos.Basis += basis; + pos.Shares += shares; pos.Cost += cost; pos.Dirty += dirty; pos.Basis += basis; if (insider) pos.Insider += shares; return PredictResult.Ok; } - /// 全部卖出这个钱包在盘口里的持仓(盘口关闭前):收回 LMSR 的卖价减手续费,污点按比例退回,赚的部分是干净的。返回收回的 CRC。 - public PredictResult SellAll(Wallet acct, PredictMarket m, int day, Func price, out double got) => SellAll(acct, m, day, price, out got, out _, out _); + /// 全部卖出这个钱包在盘口里的持仓(盘口关闭前):收回 LMSR 的卖价减手续费,脏枚数按比例带回,赚的部分是干净的。返回收回的 CRC。 + public PredictResult SellAll(Wallet acct, PredictMarket m, int day, Func price, out double got) => SellAll(acct, m, day, price, out got, out _); /// - /// 全部卖出;持仓里的内幕份额(下单时已经知道答案)对应的那部分卖出所得记污点(带上限,见 ), - /// taint 是实际加上的污点,over 是超出钱包价值、没加进去的部分(由调用方按 折成罪证)。先买后卖、赶在结算前离场也一样。 + /// 全部卖出;持仓里的内幕份额(下单时已经知道答案)对应的那部分卖出所得记成脏的 CRC,taint 是记成脏的枚数。先买后卖、赶在结算前离场也一样。 /// - public PredictResult SellAll(Wallet acct, PredictMarket m, int day, Func price, out double got, out double taint, out double over) + public PredictResult SellAll(Wallet acct, PredictMarket m, int day, Func price, out double got, out double taint) { - got = 0; taint = 0; over = 0; + got = 0; taint = 0; var pos = PosOf(m.Id, acct.Address); if (pos == null) return PredictResult.NoPosition; if (!m.IsOpen(day)) return PredictResult.Closed; @@ -198,31 +201,37 @@ namespace Decentralized.Domain got = value * (1 - Tuning.PredictFee); if (pos.Yes) m.QYes -= pos.Shares; else m.QNo -= pos.Shares; Positions.Remove(pos); - Pay(acct, pos, got); - over = MarkInsider(acct, pos, got, price, out taint); + double back = Pay(acct, pos, got); + taint = MarkInsider(acct, pos, got, back); return PredictResult.Ok; } - private static void Pay(Wallet acct, PredictPos pos, double payout) + /// 兑付进钱包:下注时带进来的脏枚数按兑付占成本的比例带回(不超过兑付)。返回带回的脏枚数。 + private static double Pay(Wallet acct, PredictPos pos, double payout) { double keep = pos.Cost > 0 ? Math.Min(1, payout / pos.Cost) : 0; - acct.Add(Assets.CRC, payout); acct.Taint += pos.Taint * keep; acct.Basis += pos.Basis * keep; + double dirty = Math.Min(payout, pos.Dirty * keep); + acct.AddDirty(Assets.CRC, payout, dirty); acct.Basis += pos.Basis * keep; + return dirty; } - /// 内幕份额对应的兑付记污点(带上限)。taint 是实际加上的污点,返回超出钱包价值、没加进去的部分。 - private static double MarkInsider(Wallet acct, PredictPos pos, double payout, Func price, out double taint) + /// 这笔兑付里还干净的部分(兑付 − 已经带回的脏枚数)里,再记 qty 枚为脏的。返回记上的枚数。 + private static double MarkPayout(Wallet acct, double payout, double alreadyDirty, double qty) + { + double mark = Math.Max(0, Math.Min(qty, payout - alreadyDirty)); + return mark - acct.MarkDirty(Assets.CRC, mark); + } + + /// 内幕份额对应的兑付记成脏的 CRC。返回记上的枚数。 + private static double MarkInsider(Wallet acct, PredictPos pos, double payout, double alreadyDirty) { - taint = 0; if (pos.Insider <= 0 || pos.Shares <= 0 || payout <= 0) return 0; - double amount = payout * Math.Min(1, pos.Insider / pos.Shares); - double over = acct.AddTaintCapped(amount, price); - taint = amount - over; - return over; + return MarkPayout(acct, payout, alreadyDirty, payout * Math.Min(1, pos.Insider / pos.Shares)); } /// /// 夜间:先登记今晚的观测,再结算 ToDay 到了的盘口(赢的钱回到下注的钱包,wallet 按地址找)。outcome 由接入层给出(事件 / 派系读观测,纯度和行情读游戏数值),null 表示拿不到数据。 - /// 赢家每份兑付 1 信用点,照常兑付;内幕份额对应的兑付记污点,行情盘被判操纵时整笔兑付记污点(都带上限,超出钱包价值的部分折成罪证)。 + /// 赢家每份兑付 1 信用点,照常兑付;内幕份额对应的兑付记成脏的 CRC,行情盘被判操纵时整笔兑付都记成脏的。 /// public List Night(int day, IEnumerable activeNow, Func outcome, Func wallet, Func price, Rng rng, double push = 0) { @@ -258,27 +267,20 @@ namespace Decentralized.Domain else if (winners.Count > 0) { double payout = winners.Sum(x => x.Shares), profit = payout - cost; - // 操纵:行情盘上,赢家的方向和玩家推价的方向一致时按推价幅度被查——照常兑付,整笔兑付记污点 + // 操纵:行情盘上,赢家的方向和玩家推价的方向一致时按推价幅度被查——照常兑付,整笔兑付记成脏的 bool manip = m.Kind == PredictKind.Price && winners.Any(x => x.Yes ? push > 0 : push < 0) && rng.Chance(Math.Min(1, Market.ManipChance(push) * StoryMods.Current.Enforce(day))); - double taint = 0, over = 0; + double taint = 0; + bool insider = false; foreach (var pos in winners) { var w = wallet(pos.Wallet); - Pay(w, pos, pos.Shares); - if (manip) - { - double o = w.AddTaintCapped(pos.Shares, price); - taint += pos.Shares - o; over += o; - } - else - { - // 内幕份额(下单时已经知道答案)对应的兑付记污点,每个钱包各算各的 - over += MarkInsider(w, pos, pos.Shares, price, out double t); - taint += t; - } + double back = Pay(w, pos, pos.Shares); + // 内幕份额(下单时已经知道答案)对应的兑付记成脏的,每个钱包各算各的 + if (manip) taint += MarkPayout(w, pos.Shares, back, pos.Shares); + else if (pos.Insider > 0) { insider = true; taint += MarkInsider(w, pos, pos.Shares, back); } } - string kind = manip ? "manip" : taint + over > 1e-9 ? "insider" : "win"; - evs.Add(new PredictEvent { Kind = kind, Title = m.Title, Market = m, Amount = payout, Taint = taint, Over = over, Fraud = Wallet.OverflowFraud(over) }); + string kind = manip ? "manip" : insider ? "insider" : "win"; + evs.Add(new PredictEvent { Kind = kind, Title = m.Title, Market = m, Amount = payout, Taint = taint }); Record(day, m, m.Outcome, profit, true); } else Record(day, m, m.Outcome, 0, false); diff --git a/src/Decentralized.Domain/Scams.cs b/src/Decentralized.Domain/Scams.cs index f256fa6..34d8829 100644 --- a/src/Decentralized.Domain/Scams.cs +++ b/src/Decentralized.Domain/Scams.cs @@ -1,4 +1,5 @@ using System; +using Newtonsoft.Json; using System.Collections.Generic; using System.Linq; @@ -34,14 +35,22 @@ namespace Decentralized.Domain public double Rate, Reserve, Cap; public bool Timelock, Audited, Scam, Closed; public Dictionary Deposits = new Dictionary(); - public Dictionary Taint = new Dictionary(), Basis = new Dictionary(); + /// 每个钱包存入的 CRC 里脏的枚数、成本:取出时带回。 + public Dictionary Dirty = new Dictionary(), Basis = new Dictionary(); + /// 旧存档(数据版本 5 之前)的污点额(信用点),读档迁移时换成 。 + [JsonProperty("Taint")] public Dictionary LegacyTaint = new Dictionary(); /// 时间锁池子的取款队列:钱包 → (到账日, 数额)。 public List Pending = new List(); public double Total => Deposits.Values.Sum(); public double Of(string wallet) => Deposits.TryGetValue(wallet, out var v) ? v : 0; } - public sealed class YieldWithdraw { public string Wallet; public int Day; public double Amount, Taint, Basis; } + public sealed class YieldWithdraw + { + public string Wallet; public int Day; public double Amount, Dirty, Basis; + /// 旧存档(数据版本 5 之前)的污点额(信用点),读档迁移时换成 。 + [JsonProperty("Taint")] public double LegacyTaint; + } /// 夜间发生的事。Kind:drain(钓鱼授权转走)/ rug(收益池跑路)/ dry(正规池储备耗尽,退本金)/ paid(取款到账)/ wickback(插针回去了)。 public sealed class ScamEvent @@ -151,10 +160,10 @@ namespace Decentralized.Domain { if (p.Closed || amount <= 0 || w.Avail(Assets.CRC) + 1e-9 < amount || p.Total + amount > p.Cap + 1e-9) return false; double total = w.Value(pr), share = total > 0 ? Math.Min(1, amount * pr(Assets.CRC) / total) : 0; - double taint = w.Taint * share, basis = w.Basis * share; - w.Add(Assets.CRC, -amount); w.Taint -= taint; w.Basis -= basis; + double dirty = amount * w.DirtyRatio(Assets.CRC), basis = w.Basis * share; + w.Add(Assets.CRC, -amount); w.Basis -= basis; p.Deposits[w.Address] = p.Of(w.Address) + amount; - p.Taint[w.Address] = (p.Taint.TryGetValue(w.Address, out var t) ? t : 0) + taint; + p.Dirty[w.Address] = (p.Dirty.TryGetValue(w.Address, out var t) ? t : 0) + dirty; p.Basis[w.Address] = (p.Basis.TryGetValue(w.Address, out var b) ? b : 0) + basis; return true; } @@ -164,16 +173,16 @@ namespace Decentralized.Domain { double amt = p.Of(w.Address); if (amt <= 0 || p.Closed) return 0; - double taint = p.Taint.TryGetValue(w.Address, out var t) ? t : 0, basis = p.Basis.TryGetValue(w.Address, out var b) ? b : 0; - p.Deposits.Remove(w.Address); p.Taint.Remove(w.Address); p.Basis.Remove(w.Address); - if (p.Timelock) { p.Pending.Add(new YieldWithdraw { Wallet = w.Address, Day = day + Tuning.YieldLockDays, Amount = amt, Taint = taint, Basis = basis }); return 0; } - Pay(w, amt, taint, basis); + double dirty = p.Dirty.TryGetValue(w.Address, out var t) ? t : 0, basis = p.Basis.TryGetValue(w.Address, out var b) ? b : 0; + p.Deposits.Remove(w.Address); p.Dirty.Remove(w.Address); p.Basis.Remove(w.Address); + if (p.Timelock) { p.Pending.Add(new YieldWithdraw { Wallet = w.Address, Day = day + Tuning.YieldLockDays, Amount = amt, Dirty = dirty, Basis = basis }); return 0; } + Pay(w, amt, dirty, basis); return amt; } - private static void Pay(Wallet w, double amt, double taint, double basis) + private static void Pay(Wallet w, double amt, double dirty, double basis) { - w.Add(Assets.CRC, amt); w.Taint += taint; w.Basis += basis; + w.AddDirty(Assets.CRC, amt, dirty); w.Basis += basis; } // ——— 夜间 ——— @@ -209,7 +218,7 @@ namespace Decentralized.Domain foreach (var kv in p.Deposits.ToList()) { var w = own(kv.Key); - if (w != null) Pay(w, kv.Value, p.Taint.TryGetValue(kv.Key, out var t) ? t : 0, p.Basis.TryGetValue(kv.Key, out var b) ? b : 0); + if (w != null) Pay(w, kv.Value, p.Dirty.TryGetValue(kv.Key, out var t) ? t : 0, p.Basis.TryGetValue(kv.Key, out var b) ? b : 0); evs.Add(new ScamEvent { Kind = "dry", Name = p.Name, Wallet = kv.Key, Asset = Assets.CRC, Amount = kv.Value }); } p.Deposits.Clear(); p.Closed = true; @@ -223,7 +232,7 @@ namespace Decentralized.Domain { p.Pending.Remove(q); var w = own(q.Wallet); - if (w != null) Pay(w, q.Amount, q.Taint, q.Basis); + if (w != null) Pay(w, q.Amount, q.Dirty, q.Basis); evs.Add(new ScamEvent { Kind = "paid", Name = p.Name, Wallet = q.Wallet, Asset = Assets.CRC, Amount = q.Amount }); } } diff --git a/src/Decentralized.Domain/Staking.cs b/src/Decentralized.Domain/Staking.cs index 19f0303..7edeac8 100644 --- a/src/Decentralized.Domain/Staking.cs +++ b/src/Decentralized.Domain/Staking.cs @@ -1,16 +1,19 @@ using System; +using Newtonsoft.Json; using System.Collections.Generic; using System.Linq; namespace Decentralized.Domain { - /// 一个钱包在革命军质押池里的仓位:计息的本金、排队等解锁的部分,以及存入时带来的污点与成本。 + /// 一个钱包在革命军质押池里的仓位:计息的本金、排队等解锁的部分,以及存入时带来的脏枚数与成本(利息是干净的)。 public sealed class StakeLot { public string Wallet; public double Amount; public List> Unlocking = new List>(); - public double Taint, Basis; + public double Dirty, Basis; + /// 旧存档(数据版本 5 之前)的污点额(信用点),读档迁移时换成 。 + [JsonProperty("Taint")] public double LegacyTaint; public double Total => Amount + Unlocking.Sum(u => u.Value); } @@ -36,16 +39,16 @@ namespace Decentralized.Domain /// 全部计息中的质押量,补贴池按它算支出。 public double Earning => Lots.Sum(l => l.Amount); - /// 质押:从钱包取出 CRA,污点与成本按价值比例随币留在仓位里。余额不足返回 false。 + /// 质押:从钱包取出 CRA,脏枚数按 CRA 的脏比例、成本按价值比例随币留在仓位里。余额不足返回 false。 public bool Stake(Wallet w, double amount, Func price) { if (amount <= 0 || w.Avail(Assets.CRA) + 1e-9 < amount) return false; double total = w.Value(price); double share = total > 0 ? Math.Min(1, amount * price(Assets.CRA) / total) : 0; - double taint = w.Taint * share, basis = w.Basis * share; - w.Add(Assets.CRA, -amount); w.Taint -= taint; w.Basis -= basis; + double dirty = amount * w.DirtyRatio(Assets.CRA), basis = w.Basis * share; + w.Add(Assets.CRA, -amount); w.Basis -= basis; var lot = Of(w.Address) ?? AddLot(w.Address); - lot.Amount += amount; lot.Taint += taint; lot.Basis += basis; + lot.Amount += amount; lot.Dirty += dirty; lot.Basis += basis; return true; } @@ -74,11 +77,11 @@ namespace Decentralized.Domain { double total = lot.Total; double share = total > 0 ? Math.Min(1, u.Value / total) : 0; - double taint = lot.Taint * share, basis = lot.Basis * share; - lot.Taint -= taint; lot.Basis -= basis; + double dirty = lot.Dirty * share, basis = lot.Basis * share; + lot.Dirty -= dirty; lot.Basis -= basis; lot.Unlocking.Remove(u); var w = wallet(lot.Wallet); - w.Add(Assets.CRA, u.Value); w.Taint += taint; w.Basis += basis; + w.AddDirty(Assets.CRA, u.Value, dirty); w.Basis += basis; ev.Released += u.Value; } if (lot.Total < 1e-9) Lots.Remove(lot); diff --git a/src/Decentralized.Domain/StoryMods.cs b/src/Decentralized.Domain/StoryMods.cs index e2ea0a5..92f4a6f 100644 --- a/src/Decentralized.Domain/StoryMods.cs +++ b/src/Decentralized.Domain/StoryMods.cs @@ -17,9 +17,9 @@ namespace Decentralized.Domain public double CrcDepeg = 1, CrcHaircut = 1, CrtDepeg = 1, CrtFreeze = 1; /// 到这一天之前 CRA 螺旋概率减半。 public int CraSafeUntil = -1; - /// 治安部整顿到这一天:出金审查命中率、混币器制裁概率、操纵与内幕查处概率上调。 + /// 治安部整顿到这一天:混币器清洗变差,制裁概率、操纵查处概率上调。 public int SecUntil = -1; - /// 伦警官被捕后的立威期到这一天:出金审查、操纵、内幕查处概率上调。 + /// 伦警官被捕后的立威期到这一天:操纵查处概率、换币客户里便衣的概率上调。 public int LunUntil = -1; /// SPARK 每晚额外乘的倍数,还剩几晚。 public double SparkPush = 1; @@ -37,7 +37,10 @@ namespace Decentralized.Domain public bool Has(string key) => Applied.Contains(key); public double CraSpiral(int day) => day < CraSafeUntil ? Tuning.StoryCraSpiralMult : 1; - public double Aml(int day) => (day < SecUntil ? Tuning.StorySecAmlMult : 1) * (day < LunUntil ? Tuning.StoryLunMult : 1); + /// 混币器每轮清洗率的倍率(治安部监控资金流向期间洗得更差)。 + public double MixClean(int day) => day < SecUntil ? Tuning.StorySecMixClean : 1; + /// 换币客户里便衣概率的倍率(伦警官被捕后的立威期)。 + public double OtcSting(int day) => day < LunUntil ? Tuning.StoryLunMult : 1; public double Sanction(int day) => day < SecUntil ? Tuning.StorySecSanctionMult : 1; /// 操纵检出、内幕查处的概率倍率。 public double Enforce(int day) => (day < SecUntil ? Tuning.StorySecEnforceMult : 1) * (day < LunUntil ? Tuning.StoryLunMult : 1); diff --git a/src/Decentralized.Domain/TaintMigration.cs b/src/Decentralized.Domain/TaintMigration.cs new file mode 100644 index 0000000..d619512 --- /dev/null +++ b/src/Decentralized.Domain/TaintMigration.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Decentralized.Domain +{ + /// + /// 存档迁移(数据版本 5):旧存档的污点是一笔信用点(整个钱包、托管里各一笔),换成按币种记的脏枚数。 + /// 钱包:按当前价格摊到各种可追踪的币上();Poinbase 账户和永续仓位的污点先挪到 1 号钱包一起摊(超出的作废)。 + /// 托管(混币器在途、黑市订单、质押、空投池、预测持仓、自营混币器本金):按当前价格换成那种币的脏枚数,不超过数量。旧字段清零。 + /// + public static class TaintMigration + { + private static double Qty(Func price, string asset, double amount, double legacy) + { + double p = price(asset); + return legacy > 0 && p > 0 ? Math.Min(Math.Max(0, amount), legacy / p) : 0; + } + + /// 迁移全部,返回旧存档里的污点总额(信用点,日志用)。 + public static double Run(IList wallets, Wallet poinbase, IEnumerable perps, Mixer mixer, BlackMarket black, + Staking staking, Scams scams, PredictBook predict, OwnMixer own, Func price) + { + double total = wallets.Sum(w => w.LegacyTaint) + poinbase.LegacyTaint + perps.Sum(p => p.LegacyTaint); + double extra = Exchange.TakeLegacyTaint(poinbase, perps); + for (int i = 0; i < wallets.Count; i++) wallets[i].MigrateTaint(price, i == 0 ? extra : 0); + foreach (var d in mixer.Pending) { total += d.LegacyTaint; d.Dirty += Qty(price, d.Asset, d.Amount, d.LegacyTaint); d.LegacyTaint = 0; } + foreach (var o in black.Orders) { total += o.LegacyTaint; o.Dirty += Qty(price, o.Asset, o.Qty, o.LegacyTaint); o.LegacyTaint = 0; } + foreach (var l in staking.Lots) { total += l.LegacyTaint; l.Dirty += Qty(price, Assets.CRA, l.Total, l.LegacyTaint); l.LegacyTaint = 0; } + foreach (var p in scams.Pools) + { + foreach (var kv in p.LegacyTaint) + { + total += kv.Value; + p.Dirty[kv.Key] = (p.Dirty.TryGetValue(kv.Key, out var d) ? d : 0) + Qty(price, Assets.CRC, p.Of(kv.Key), kv.Value); + } + p.LegacyTaint.Clear(); + foreach (var q in p.Pending) { total += q.LegacyTaint; q.Dirty += Qty(price, Assets.CRC, q.Amount, q.LegacyTaint); q.LegacyTaint = 0; } + } + foreach (var p in predict.Positions) { total += p.LegacyTaint; p.Dirty += Qty(price, Assets.CRC, p.Cost * (1 + Tuning.PredictFee), p.LegacyTaint); p.LegacyTaint = 0; } + foreach (var kv in own.Pools) { total += kv.Value.LegacyCapTaint; kv.Value.CapDirty += Qty(price, kv.Key, kv.Value.Capital, kv.Value.LegacyCapTaint); kv.Value.LegacyCapTaint = 0; } + return total; + } + } +} diff --git a/src/Decentralized.Domain/Tuning.cs b/src/Decentralized.Domain/Tuning.cs index 1dc5d54..9b06c83 100644 --- a/src/Decentralized.Domain/Tuning.cs +++ b/src/Decentralized.Domain/Tuning.cs @@ -83,12 +83,7 @@ namespace Decentralized.Domain public const double SparkRaidShock = 1.15, SparkUnrestShock = 0.90; public static readonly double[] SparkSpiralPath = { 0.8, 0.3, 0.05 }; - // 合规出金与 AML(阈值以当前房租为单位) - public const double AmlBigRents = 5, AmlCumRents = 15; - /// 出金审查命中概率:污点占比达标后每占一分加 AmlTaintMult 倍;超出单笔 / 累计额度的部分按 AmlExcessWeight 加。 - public const double AmlTaintMult = 1.5, AmlExcessWeight = 0.2; - public const int AmlWindowDays = 7; - public const double AmlTaintRatio = 0.10, AmlHeavyRatio = 0.30, AmlMixerBonus = 0.30, AmlMaxChance = 0.9; + /// 出金到银行:超出成本的部分征税。 public const double TaxRate = 0.08; /// 混币器:每轮手续费、基准清洗率、NPC 背景量(信用点)、最大轮数、最小存入、制裁概率与天数、每晚跑路概率。 public const double MixerFee = 0.03, MixerCleanRate = 0.35, MixerNpcVolume = 20000, MixerMin = 100, MixerSanctionChance = 0.5, MixerRugChance = 0.004; @@ -246,7 +241,7 @@ namespace Decentralized.Domain public const double EraKjMult = 0.5; /// 预测市场:游戏第几天起开放;手续费;单盘额度 = 基础 + 每天增量 × 天数;所有钱包在单盘合计的份额上限(额度的倍数); - /// 同时开放的盘口数量范围、每天最多新开几个;污点超出钱包价值的部分折成诈骗罪证的比例与单次上限(内幕、操纵记污点时通用); + /// 同时开放的盘口数量范围、每天最多新开几个;按信用点额折诈骗罪证的比例与单次上限(永续被判操纵、Tumbler 泄露用); /// 派系行动的日均开始概率(先验);先验概率的夹紧范围;结算记录保留条数。 public const int PredictUnlockDay = 8; public const double PredictFee = 0.01, PredictLoss0 = 800, PredictLossPerDay = 25, PredictCap = 2; @@ -328,12 +323,12 @@ namespace Decentralized.Domain public const double BmAutoSwapSlip = 0.08; /// 剧情联动:塞尔皮科证据交给革命军(CRA 补贴池注资、螺旋概率倍率与期限、SPARK 几晚内涨到的倍数)、交给黑市(CRT 脱锚与被出卖的倍率)、 - /// 交给治安部(期限内出金审查命中、混币器制裁、操纵与内幕查处的倍率);埃莉诺泄露数据盘(CRC 托管减记倍率、SPARK 涨幅)、交回(CRC 脱锚倍率); - /// 伦警官被捕(期限与查处倍率);SPARK 推涨分几晚走完。 + /// 交给治安部(期限内混币器每轮清洗率、制裁、操纵查处的倍率);埃莉诺泄露数据盘(CRC 托管减记倍率、SPARK 涨幅)、交回(CRC 脱锚倍率); + /// 伦警官被捕(期限与倍率:操纵查处、换币客户里的便衣);SPARK 推涨分几晚走完。 public const double StoryRevSubsidy = 10000, StoryCraSpiralMult = 0.5, StorySerpicoSpark = 1.2; public const double StoryBmCrtMult = 0.5; public const int StorySecDays = 30; - public const double StorySecAmlMult = 1.5, StorySecSanctionMult = 1.5, StorySecEnforceMult = 1.3; + public const double StorySecMixClean = 0.7, StorySecSanctionMult = 1.5, StorySecEnforceMult = 1.3; public const double StoryLeakHaircutMult = 2, StoryLeakSpark = 1.15, StoryReturnCrcMult = 0.5; public const int StoryLunDays = 14, StorySparkNights = 5; /// 混币器运营者 Tumbler:第几天起开始;帮他藏好密钥盘后的混币器手续费、匿名集倍率和谢礼(CRT);举报的赏金(信用点)和治安部声望; diff --git a/src/Decentralized.Domain/TuningTable.cs b/src/Decentralized.Domain/TuningTable.cs index 77f9946..863eef7 100644 --- a/src/Decentralized.Domain/TuningTable.cs +++ b/src/Decentralized.Domain/TuningTable.cs @@ -16,15 +16,6 @@ namespace Decentralized.Domain ["AirdropRewardMax"] = Tuning.AirdropRewardMax, ["AirdropRewardMin"] = Tuning.AirdropRewardMin, ["AirdropScam"] = Tuning.AirdropScam, - ["AmlBigRents"] = Tuning.AmlBigRents, - ["AmlCumRents"] = Tuning.AmlCumRents, - ["AmlExcessWeight"] = Tuning.AmlExcessWeight, - ["AmlHeavyRatio"] = Tuning.AmlHeavyRatio, - ["AmlMaxChance"] = Tuning.AmlMaxChance, - ["AmlMixerBonus"] = Tuning.AmlMixerBonus, - ["AmlTaintMult"] = Tuning.AmlTaintMult, - ["AmlTaintRatio"] = Tuning.AmlTaintRatio, - ["AmlWindowDays"] = Tuning.AmlWindowDays, ["AsicChance"] = Tuning.AsicChance, ["AsicDeadValue"] = Tuning.AsicDeadValue, ["AsicNewShare"] = Tuning.AsicNewShare, @@ -428,9 +419,9 @@ namespace Decentralized.Domain ["StoryLunMult"] = Tuning.StoryLunMult, ["StoryReturnCrcMult"] = Tuning.StoryReturnCrcMult, ["StoryRevSubsidy"] = Tuning.StoryRevSubsidy, - ["StorySecAmlMult"] = Tuning.StorySecAmlMult, ["StorySecDays"] = Tuning.StorySecDays, ["StorySecEnforceMult"] = Tuning.StorySecEnforceMult, + ["StorySecMixClean"] = Tuning.StorySecMixClean, ["StorySecSanctionMult"] = Tuning.StorySecSanctionMult, ["StorySerpicoSpark"] = Tuning.StorySerpicoSpark, ["StorySparkNights"] = Tuning.StorySparkNights, diff --git a/src/Decentralized.Domain/Wallet.cs b/src/Decentralized.Domain/Wallet.cs index f2b9ce6..38916a1 100644 --- a/src/Decentralized.Domain/Wallet.cs +++ b/src/Decentralized.Domain/Wallet.cs @@ -1,23 +1,25 @@ using System; using System.Collections.Generic; using System.Linq; +using Newtonsoft.Json; namespace Decentralized.Domain { /// - /// 一个链上地址:各币种余额,加上整个地址的污点额与成本(信用点等值)。 - /// 污点和成本按转出的价值比例随币走。 + /// 一个链上地址:各币种余额,每种币里有几枚是脏的(),加上整个地址的成本(信用点)。 + /// 污点随具体的币进出:收到带污点的币时记下其中几枚脏;花掉、转出这种币时按它的脏比例带走;兑换成别的币时脏比例跟过去。 + /// 成本按转出的价值比例随币走。 /// public sealed class Wallet { public string Address; public Dictionary Balances = new Dictionary(); - /// 污点额(信用点等值)。 - public double Taint; + /// 每种币里脏的枚数(0 ≤ 脏 ≤ 余额)。 + public Dictionary Dirty = new Dictionary(); + /// 旧存档(数据版本 5 之前)整个钱包的污点额(信用点):只在读档迁移时读一次,之后为 0。 + [JsonProperty("Taint")] public double LegacyTaint; /// 成本(信用点):出金时只对超出成本的部分征税。 public double Basis; - /// 被执法标记。 - public bool Flagged; /// 钱包编号("钱包 n"),添加时定下,销毁别的钱包也不变。 public string Name; /// 玩家起的名字;空时用默认名。 @@ -43,7 +45,7 @@ namespace Decentralized.Domain { double v = Value(price); Balances.Clear(); Frozen.Clear(); FrozenUntil.Clear(); BuyQty.Clear(); BuyCost.Clear(); - Taint = 0; Basis = 0; + Dirty.Clear(); Basis = 0; return v; } @@ -101,55 +103,131 @@ namespace Decentralized.Domain BuyQty[asset] = bq * keep; BuyCost[asset] *= keep; if (BuyQty[asset] < 1e-9) { BuyQty.Remove(asset); BuyCost.Remove(asset); } } - double v = Get(asset) + amount; + double had = Get(asset), v = had + amount; if (v < -1e-9) throw new InvalidOperationException($"{Address}: {asset} 余额不足"); if (Math.Abs(v) < 1e-12) Balances.Remove(asset); else Balances[asset] = v; + // 拿走的币按这种币的脏比例带走脏枚数 + if (amount < 0 && Dirty.TryGetValue(asset, out var d)) SetDirty(asset, had > 1e-12 ? d * Math.Max(0, v) / had : 0); } - /// 按价格表估值(信用点)。 - /// 花掉(销毁)一笔币:污点与成本按这笔币占钱包总价值的比例一起带走。 + /// 这种币里脏的枚数(不超过余额)。 + public double DirtyOf(string asset) => Dirty.TryGetValue(asset, out var d) ? Math.Max(0, Math.Min(d, Get(asset))) : 0; + + /// 这种币的脏比例(0–1)。 + public double DirtyRatio(string asset) { double g = Get(asset); return g > 1e-12 ? DirtyOf(asset) / g : 0; } + + /// 这种币里干净的、能动用的枚数(不超过可动用余额)。钱包往 Poinbase 最多只能充这么多。 + public double CleanAvail(string asset) => Math.Max(0, Math.Min(Avail(asset), Get(asset) - DirtyOf(asset))); + + /// 按现价算的脏币总价值(信用点):钱包总表、日志用。 + public double Taint(Func price) => Balances.Keys.Sum(a => DirtyOf(a) * price(a)); + + private void SetDirty(string asset, double d) + { + d = Math.Max(0, Math.Min(d, Get(asset))); + if (d < 1e-9) Dirty.Remove(asset); else Dirty[asset] = d; + } + + /// 收到 amount 枚币,其中 dirty 枚是脏的(不超过 amount)。 + public void AddDirty(string asset, double amount, double dirty) + { + if (amount <= 0) return; + Add(asset, amount); + if (dirty > 0) SetDirty(asset, DirtyOf(asset) + Math.Min(dirty, amount)); + } + + /// 把这种币里干净的 qty 枚记成脏的(刚收到的兑付被判内幕、操纵时用);不够的部分不记,返回没记上的枚数。 + public double MarkDirty(string asset, double qty) + { + if (qty <= 0) return 0; + double clean = Math.Max(0, Get(asset) - DirtyOf(asset)), mark = Math.Min(qty, clean); + SetDirty(asset, DirtyOf(asset) + mark); + return qty - mark; + } + + /// 余额按比例缩水(CRC 托管银行减记):脏枚数同比例缩水。 + public void Scale(string asset, double factor) + { + double g = Get(asset); + if (g <= 0) return; + double d = DirtyOf(asset); + Add(asset, g * Math.Max(0, factor) - g); + SetDirty(asset, d * Math.Max(0, factor)); + } + + /// 兑换:付出 amount 枚 from(按它的脏比例带走脏枚数),收到 got 枚 to,脏比例跟过去;clean 为真时(兑入 Ponero)收到的是干净的。 + public void Convert(string from, double amount, string to, double got, bool clean = false) + { + double r = DirtyRatio(from); + Add(from, -amount); + AddDirty(to, got, clean ? 0 : got * r); + } + + /// 花掉(销毁)一笔币:脏枚数按这种币的脏比例带走,成本按这笔币占钱包总价值的比例带走。 public void Spend(string asset, double amount, Func price) { double total = Value(price), share = total > 0 ? Math.Min(1, amount * price(asset) / total) : 0; - double taint = Taint * share, basis = Basis * share; - Add(asset, -amount); Taint -= taint; Basis -= basis; + double basis = Basis * share; + Add(asset, -amount); Basis -= basis; } + /// 按价格表估值(信用点)。 + public double Value(Func price) => Balances.Sum(kv => kv.Value * price(kv.Key)); + /// 按信用点额折成的诈骗罪证:额 × ,单次封顶 (永续被判操纵、Tumbler 泄露用)。 + public static double FraudFor(double credits) => Math.Min(Tuning.PredictFraudCap, Math.Max(0, credits) * Tuning.PredictFraudShare); + /// - /// 加污点,加完不超过钱包当时的价值(只在加的这一刻检查,之后币价涨跌不再调整)。 - /// 返回加不进去的部分(超出额),由调用方按 折成罪证。 + /// 只转干净的币(往 Poinbase 充值):脏枚数全部留在原钱包,成本按价值比例带走。数量超过 的部分不转,返回实际转的数量。 /// - public double AddTaintCapped(double amount, Func price) + public static double TransferClean(Wallet from, Wallet to, string asset, double amount, Func price) { + amount = Math.Min(amount, from.CleanAvail(asset)); if (amount <= 0) return 0; - double add = Math.Min(amount, Math.Max(0, Value(price) - Taint)); - Taint += add; - return amount - add; + double total = from.Value(price); + double share = total > 0 ? Math.Min(1.0, amount * price(asset) / total) : 0; + double basis = from.Basis * share, dirty = from.DirtyOf(asset); + from.Add(asset, -amount); + from.SetDirty(asset, dirty); + from.Basis -= basis; + to.Add(asset, amount); + to.Basis += basis; + return amount; } - /// 污点超出钱包价值的部分折成的诈骗罪证:超出额 × ,单次封顶 。 - public static double OverflowFraud(double overflow) => Math.Min(Tuning.PredictFraudCap, Math.Max(0, overflow) * Tuning.PredictFraudShare); - /// - /// 转出:taint 和 basis 按转出价值占地址总价值的比例带走;被标记的地址转出可追踪的币,收款地址也被标记。 - /// Ponero 等不可追踪资产转入时,污点和标记都不随之进入目标地址。 + /// 转出:这种币按它的脏比例把脏枚数带过去,成本按转出价值占地址总价值的比例带走。 + /// Ponero 等不可追踪资产转入时,不带脏枚数。 /// public static void Transfer(Wallet from, Wallet to, string asset, double amount, Func price) { if (amount <= 0) return; double total = from.Value(price); double share = total > 0 ? Math.Min(1.0, amount * price(asset) / total) : 0; - double taint = from.Taint * share, basis = from.Basis * share; + double basis = from.Basis * share, dirty = amount * from.DirtyRatio(asset); from.Add(asset, -amount); - from.Taint -= taint; from.Basis -= basis; - to.Add(asset, amount); var spec = Assets.Get(asset); - if (spec == null || spec.Traceable) { to.Taint += taint; if (from.Flagged) to.Flagged = true; } + to.AddDirty(asset, amount, spec == null || spec.Traceable ? dirty : 0); to.Basis += basis; } + + /// + /// 存档迁移:旧的整钱包污点额(信用点)按当前价格摊成各币的脏枚数:脏比例 = min(1, 污点 / 可追踪币的价值),每种可追踪的币按这个比例记脏。 + /// extra 是另外挪进来的旧污点(Poinbase 账户、永续仓位),一起摊;超出的部分作废。旧字段清零。 + /// + public void MigrateTaint(Func price, double extra = 0) + { + double t = LegacyTaint + extra; + LegacyTaint = 0; + if (t <= 0) return; + var traceable = Balances.Keys.Where(a => Assets.Get(a) == null || Assets.Get(a).Traceable).ToList(); + double v = traceable.Sum(a => Get(a) * price(a)); + if (v <= 0) return; + double r = Math.Min(1, t / v); + foreach (var a in traceable) SetDirty(a, DirtyOf(a) + Get(a) * r); + } } } diff --git a/src/Decentralized/CoinCustomers.cs b/src/Decentralized/CoinCustomers.cs index 9e04b63..70078cd 100644 --- a/src/Decentralized/CoinCustomers.cs +++ b/src/Decentralized/CoinCustomers.cs @@ -44,8 +44,8 @@ namespace Decentralized ModHelper.AddDebugFunction(ModInfo.Id, ModInfo.Name, "Tainted wallet (test)", () => Log.Guard("带污点的钱包(测试)", () => { var w = Session.Data.Hot; - w.Add(Assets.PSC, 100); w.Add(Assets.CRT, 1000); w.Taint += 3000; w.Basis += 2000; - Log.Info($"钱包:PSC {w.Get(Assets.PSC):0.##},污点 {w.Taint:0}"); + w.AddDirty(Assets.PSC, 100, 30); w.AddDirty(Assets.CRT, 1000, 1000); w.Basis += 2000; + Log.Info($"钱包:PSC {w.Get(Assets.PSC):0.##}(脏 {w.DirtyOf(Assets.PSC):0.##}),CRT {w.Get(Assets.CRT):0}(脏 {w.DirtyOf(Assets.CRT):0})"); })); ModHelper.AddDebugFunction(ModInfo.Id, ModInfo.Name, "Terminal (test)", () => Log.Guard("终端(测试)", TerminalWindow.Open)); ModHelper.AddDebugFunction(ModInfo.Id, ModInfo.Name, "Black market +50 rep, restock (test)", () => Log.Guard("黑市(测试)", () => @@ -55,7 +55,7 @@ namespace Decentralized if (!Unlock.BlackUnlocked) ModHelper.GetNetworkUpgrade(Unlock.BlackId)?.Unlock(); if (!Unlock.MixerUnlocked) ModHelper.GetNetworkUpgrade(Unlock.MixerId)?.Unlock(); var d = Session.Data; - d.Hot.Add(Assets.PSC, 20); d.Hot.Add(Assets.CRT, 3000); d.Hot.Taint += 2000; d.Hot.Basis += 1000; + d.Hot.Add(Assets.PSC, 20); d.Hot.AddDirty(Assets.CRT, 3000, 2000); d.Hot.Basis += 1000; BlackDelivery.Restock(d, StoreStation.GetDayCounter(), true); Log.Info($"黑市:声望 {StoreReputation.GetBMReputation()},上架 {d.Black.Offers.Count} 种:{string.Join(", ", d.Black.Offers.Select(o => o.Item + "×" + o.Qty + "@" + o.Price))},解锁 {Unlock.BlackUnlocked}"); })); diff --git a/src/Decentralized/Core.cs b/src/Decentralized/Core.cs index 8d10882..d0b95fd 100644 --- a/src/Decentralized/Core.cs +++ b/src/Decentralized/Core.cs @@ -47,18 +47,4 @@ namespace Decentralized public static string Num(double v) => Math.Abs(v) >= 100 ? v.ToString("N0") : Math.Abs(v) >= 1 ? v.ToString("0.##") : v.ToString("0.####"); public static string Credits(double v) => v.ToString("N0"); } - - /// 污点超出钱包价值的部分:按 记诈骗罪证,返回接在消息后面的一句(没有超出返回空串)。 - public static class TaintCrime - { - public static string Commit(double over) - { - if (over <= 1e-9) return ""; - int fraud = (int)Math.Round(Decentralized.Domain.Wallet.OverflowFraud(over)); - if (fraud > 0) PlayerStore.Instance.secData.CommitCrime("FRAUD", fraud); - // 接在上一句后面:中日文不加空格,其他语言隔一个空格 - string sep = L.Code.StartsWith("zh") || L.Code.StartsWith("ja") ? "" : " "; - return sep + L.T("taint.overflow", Fmt.Credits(over)); - } - } } diff --git a/src/Decentralized/ModFiles/Localization/de.csv b/src/Decentralized/ModFiles/Localization/de.csv index 09a439e..745e7aa 100644 --- a/src/Decentralized/ModFiles/Localization/de.csv +++ b/src/Decentralized/ModFiles/Localization/de.csv @@ -22,7 +22,7 @@ tab.report,Bericht wallet.line,{0}: {1} (ca. {2} Credits) wallet.empty,Die Wallet ist leer. wallet.total,Gesamtwert: {0} Credits -wallet.taint,Kontaminierter Wert: {0} Credits +wallet.taint,Kontaminierte Coins: {0} Credits trade.amount,Betrag trade.deposit,Credits als CRC einzahlen trade.withdraw,CRC als Credits auszahlen @@ -38,8 +38,6 @@ msg.balance,Nicht genügend Guthaben. msg.trade,"{0} {1} gezahlt, {2} {3} erhalten." msg.deposit,{0} Credits als CRC eingezahlt. msg.cashout,{0} Credits erhalten. Steuer: {1} Credits. -msg.aml_light,Compliance-Prüfung: {0} Credits an kontaminierten Geldern wurden einbehalten. -msg.aml_heavy,Compliance-Prüfung: {0} Credits an kontaminierten Geldern wurden beschlagnahmt und an Security gemeldet. report.none,Noch kein Mining-Bericht vorhanden. report.day,Nacht von Tag {0} report.rigs,Rigs mit Strom: {0} von {1} @@ -141,6 +139,7 @@ col.asset,Asset col.amount,Betrag col.value,Wert col.avg,Ø-Kauf +col.dirty,Kontaminiert bank.cash.k,Credits bank.rent.k,Miete bank.rent.v,"{0}, fällig in {1} Tg." @@ -152,13 +151,12 @@ stable.ok,Gekoppelt stable.depeg,Entkoppelt stable.warn,Warnung: Staking-Reservedeckung knapp stable.spiral,Kollaps -aml.taint,Konto-Kontaminationsanteil: {0}% mixer.h,Mixer mixer.ok,Status: Normalbetrieb -mixer.sanctioned,Status: sanktioniert (noch {0} Tag(e)). Währenddessen abgehobene Coins werden markiert. +mixer.sanctioned,Status: Sanktioniert (noch {0} T.). Währenddessen fällige Auszahlungen werden nicht gewaschen und kommen vollständig kontaminiert zurück. mixer.pending,Ausstehende Einzahlungen mixer.none,Keine ausstehenden Einzahlungen. -mixer.col.taint,Kontamination +mixer.col.taint,Kontaminiert mixer.col.ready,Fällig mixer.day,Tag {0} mixer.deposit,Einzahlung @@ -169,12 +167,12 @@ mixer.go,In Mixer einzahlen mixer.min,Einzahlungen müssen mindestens {0} Credits wert sein. mixer.done,{0} {1} eingezahlt; Rückerhalt an Tag {2}. mixer.upgrade.title,Mixer -mixer.upgrade.desc,Schaltet den Mixer auf der Graunetz-Seite des Terminals frei: Kontaminierte Coins einzahlen und Tage später mit reduzierter Kontamination zurückerhalten. Auszahlungen frisch gemixter Coins werden strenger geprüft; bei Razzien kann der Mixer sanktioniert werden und währenddessen abgehobene Coins werden markiert. +mixer.upgrade.desc,"Schaltet den Mixer auf der Graunetz-Seite des Terminals frei: Kontaminierte Coins einzahlen und Tage später zurückerhalten, wobei weniger davon kontaminiert sind. Während Razzien kann der Mixer sanktioniert werden; in dieser Zeit fällige Auszahlungen kommen vollständig kontaminiert zurück." news.sanction.title,Mixer auf Sanktionsliste gesetzt -news.sanction.desc,Security hat eine Reihe von Mixing-Diensten sanktioniert. In den nächsten Tagen aus Mixern abgehobene Gelder gelten als verdächtig. +news.sanction.desc,Security hat eine Reihe von Mixing-Diensten sanktioniert. In den kommenden Tagen aus Mixern abgehobene Gelder werden als kontaminierte Gelder behandelt. nightlog.mixer,Mixer zahlte {0} {1} zurück; Kontamination {2} -> {3}. -nightlog.mixer_flag," (während Sanktionen abgehoben; Adresse markiert)" -nightlog.mixer_flag.trap," (die Auszahlungsadresse ist markiert)" +nightlog.mixer_flag," (während der Sanktionen abgehoben; vollständig als kontaminiert markiert)" +nightlog.mixer_flag.trap," (Security markiert die abgehobenen Coins als kontaminiert)" nightlog.mixer_rug,Der Mixer-Betreiber ist untergetaucht: {0} {1} kehrten nie zurück. web3.sub.trade,Handel gray.sub.mixer,Mixer @@ -249,7 +247,7 @@ black.kind.Contraband.3,Schmuggelware (hoch) black.kind.Tech,Hightech (Aufpreis) nightlog.bm.ready,"Schwarzmarkt: {0} eingetroffen; sobald du öffnest, kommt ein Kurier vorbei." guide.web3.title,Web3-Handbuch -guide.web3.text,"Bank und Handel: Die Bankseite ist nur lesbar und zeigt Bargeld, Miete und das CRC auf dem Poinbase-Konto. Die Seite „Guthaben“ von Poinbase regelt Ein- und Auszahlungen; zuerst wird der Coin gewählt: CRC geht über das Bankkonto oder die Wallet, alle anderen Coins nur über die Wallet. Eine Einzahlung von der Bank wandelt Credits in CRC auf deinem Poinbase-Konto um; eine Auszahlung auf die Bank wandelt CRC zurück in Credits um und durchläuft eine Compliance-Prüfung, die die Kontamination des Poinbase-Kontos bewertet. Eine Auszahlung auf eine Wallet braucht die Zieladresse und mehrere Bestätigungen bis zur Gutschrift; die Gasgebühr ist fest auf Normal gesetzt und wird vom abgehenden Coin abgezogen. Ist das Adressformat oder die Prüfziffer falsch, wird abgelehnt; bei einer formal gültigen Adresse, die niemand nutzt, sind die Coins nach der Überweisung weg.¶Handel: PSC steht für Probably Stolen Coin, den durch Grafikkarten und Miner geschürften Coin. Der Poinbase-Spotmarkt hat zwei Paare, PSC/CRC und SPARK/CRC, je nach dem im Chart gewählten Coin. Käufe und Verkäufe werden beide als Menge des gehandelten Coins eingegeben; die Vorschau zeigt den gezahlten oder erhaltenen Notierungs-Coin, der Durchschnittspreis enthält die Gebühr, die Slippage nicht.¶Auf der Web3-Handelsseite lassen sich beliebige zwei Coins tauschen, stets über CRC als Zwischenschritt: Ist CRC eine Seite, läuft der Tausch über einen Pool, sonst über zwei Pools mit zwei Gebühren und sich addierender Slippage; die Vorschau zeigt Menge, Anzahl der Pools und Verlust. Stablecoin-Tausch (CRT oder CRA gegen CRC) läuft über Stable-Pools: {StableFee:%} Gebühr und kaum Slippage nahe der Bindung; beim Depeg wird die Liquidität dünner, beim Zusammenbruch wird sie abgezogen und die Slippage springt.§Hardware-Wallets: On-Chain-Coins liegen auf PLEDGER-Hardware-Wallets, jede mit eigenem Guthaben und eigener Kontamination. Eine Wallet ist ein Gegenstand: Ziehe sie auf das Handelsterminal, um sie zu laden. Öffne sie auf der Wallets-Seite des Terminals; verbinde und trenne sie oben rechts im Terminal. Der Handel der Web3-Seite sowie Shop und Mixer der Graunetz-Seite nutzen die verbundene Wallet; ohne Wallet oder ohne Verbindung sind sie nur lesbar und alle Guthaben zeigen 0. Kunden, die in Coins zahlen, zahlen auf die verbundene Wallet.¶Zahlungen (Shop, Mixer, Ponero-Schalter, Einstellgebühren) beginnen als Rechnung auf dem Handelsterminal; gib die Empfängeradresse auf der Wallet ein und halte zum Signieren ✓ gedrückt. Die letzten beiden Zeichen einer Adresse bilden eine Prüfsumme, sodass ein einzelner Tippfehler meist abgefangen wird; gelegentlich ist die Eingabe dennoch gültig und die Coins gehen an eine ungenutzte Adresse. Auch DEX-Swaps erfordern eine Signatur auf der Wallet.¶Poinbase ist ein Verwahrkonto; Einzahlungen erfolgen von der Wallet an die Einzahlungsadresse von Poinbase (nur PSC, CRC und SPARK; die regulierte Börse nimmt weder das CRT des Schwarzmarkts noch das CRA der Revolution, und die Wallet blockiert Überweisungen dieser Coins an die Einzahlungsadresse), Auszahlungen werden auf der Seite „Guthaben“ von Poinbase gestartet. Der Explorer auf der Wallets-Seite zeigt Überweisungen nach Adresse, ausschließlich tatsächlich erfolgte: jede Bewegung in und aus deinen Wallets (Überweisungen, DEX-Tausch und andere Vertragsaufrufe, Miner-Erträge, Auszahlungen, Coins, die andere dir schicken); Ponero ist ein Privacy Coin und erscheint nie. Weitere Hardware-Wallets verkauft Dr. Jackson; ziehe eine auf das Handelsterminal, um sie hinzuzufügen, bis zu {WalletMax}. Im Shop gibt es günstigere Exemplare. Eine nicht mehr benötigte Wallet kann auf der Wallets-Seite zerstört werden; ihre Coins sind dauerhaft verloren, ebenso alles, was danach an ihre Adresse gesendet wird.¶Überweisungen kosten Gasgebühren: langsam, normal oder schnell, und die Gas-Preise steigen und fallen im Wochenverlauf; bei Netzwerküberlastung steigen die Gasgebühren und langsame Transaktionen können aus dem Mempool fliegen. Vor dem Senden die vollständige Adresse prüfen.§Staking: Im Revolution-Pool gestakte CRA erzielen einen Tageszinssatz, der dem Einsatz zugeschlagen wird; eine Auszahlung erfordert einen vorherigen Antrag und vier Tage Wartezeit – ohne Zinsen während des Wartens und ohne vorzeitige Entnahme. CRA ist teilbesichert: Jedes CRA wird von CRC-Reserven der Revolution und vom Ausgleichstoken SPARK gedeckt; Reservedeckung und Besicherungsquote stehen auf der Staking-Seite. Zinsen werden in neuem, unbesichertem CRA gezahlt, das die Reservedeckung verwässert, umso schneller, je mehr gestakt ist; bei zu niedriger Deckung senkt die Revolution den Zinssatz. Die Revolution greift manchmal in die Reserve; zuvor gibt es Gerüchte, das ist das Vorzeichen. Fällt die Deckung danach unter {CraCrashRatio:%}, bricht das System zusammen: CRA ist binnen drei Tagen wertlos und vier Tage Entsperrung sind zu langsam; darüber gibt es nur einen Abschlag, und Mittel aus Raubzügen gegen die Oberschicht füllen die Reserve allmählich wieder auf.¶Offizielles Prägen: CRC und SPARK einzahlen (Verhältnis nach aktueller Besicherungsquote, die Vorschau zeigt den Bedarf), um CRA zu prägen; Wartezeit {CraMintDaysMin}–{CraMintDaysMax} Tage, das geprägte CRA wandert direkt ins Staking. Verbrennen tauscht CRA zurück in CRC und SPARK, mit gleich langer Wartezeit wie die Entsperrung; reicht die Reserve nicht, wird der CRC-Anteil nach Deckung gekürzt. Wartende Präge- und Verbrennungsaufträge kann die Revolution komplett verweigern: Die nächtliche Wahrscheinlichkeit ist der Betrag, um den der CRA-Preis unter 1 liegt, mal {CraRugPerDepeg}; liegt der Preis nicht unter 1, passiert nichts.¶Gestakt werden können CRA, CRC, CRT und SPARK: die letzten drei werden zuvor am Sekundärmarkt zum Marktpreis in CRA getauscht (über CRC, mit Gebühr und Slippage). Der Kurs von SPARK schwankt heftig und stürzt beim Kollaps mit ab. Staking, Prägen und Verbrennen sind Contract-Aufrufe und erfordern eine Signatur auf der Wallet.§Miner: RatDigg-Miner (M1 / M2 / M3) sind eigenständige Geräte mit weitaus mehr Hashrate als eine Grafikkarte und geringerem Stromverbrauch pro Hash; sie benötigen eine Batterie, nehmen Module auf und belegen keine Rig-Plätze. Nur die Miner-Dealer im Shop verkaufen sie, gebunden an Schwarzmarkt-Ansehen (M1 {AsicRepM1}, M2 {AsicRepM2}, M3 {AsicRepM3}), gelegentlich auch gebraucht. Wenn einer durchbrennt, repariere ihn, indem du Elektronikkomponenten der Reihe nach auf ihn ziehst; sein Zustand ist danach um {AsicRepairHealthCut} verringert. Irgendwann zwischen Tag {EraMin} und Tag {EraMax} bricht eine ""Miner-Ära"" an, die einige Tage zuvor in der Zeitung angekündigt wird: Große Mining-Farmen halbieren ihre Stromkosten, die Netzwerk-Hashrate steigt, die Erträge von GPU-Minenarbeitern werden verwässert und leistungsschwache Grafikkarten werfen kaum noch etwas ab, während Miner weiterhin gut dastehen.¶Auszahlungsadresse: Jeder Miner (Mining-Rigs und ASIC-Miner) hat eine im eigenen Fenster festgelegte Auszahlungsadresse; der Mining-Ertrag wird jede Nacht proportional zur Hash-Leistung dorthin geschickt, sodass zwei Miner an zwei verschiedene Adressen auszahlen können. Standardmäßig ist keine eingerichtet; ohne Adresse oder bei einem zerstörten Wallet geht dieser Anteil verloren. Passe die Adresse also an, wenn du Wallets wechselst.¶Turbo-Booster funktionieren bei Mining-Rigs und Minern nach denselben Regeln wie bei anderen Geräten: Jede Nutzung führt einen zusätzlichen Zyklus aus, was bedeutet, dass sofort eine Nacht lang geschürft wird. Dieser Zyklus verbraucht den Strom einer Nacht, sein Ertrag basiert auf der aktuellen Netzwerk-Hashrate und geht an die Auszahlungsadresse dieses Geräts, und er zählt als ein Durchlauf für Abnutzung und Totalausfallprüfung; das Gerät schürft in dieser Nacht dennoch wie gewohnt weiter.§Perpetual-Futures: Der Tab „Perps“ auf Poinbase nutzt deine Konto-CRC als Margin, bis zu {PerpPscLev}× auf PSC und {PerpSparkLev}× auf SPARK, nur Isolated Margin, jeweils nur eine Position (niemals gleichzeitig Long und Short); aufstocken geht nur über zusätzliche Margin. Ausführungen weichen zum Schlechteren vom Kurs ab (bei größeren Orders umso mehr, ähnlich wie im Spot-Pool), und das Eröffnen wie Schließen kostet Gebühren. Die Liquidation wird ausschließlich nachts anhand des Tagesdurchschnittspreises geprüft: Fällt das Eigenkapital unter {PerpMaint:%} des Nominalwerts, wird die Margin vollständig eingezogen. Zudem gibt es eine nächtliche Finanzierungsgebühr; liegt der Kurs über seinem 7-Tage-Durchschnitt, zahlen Longs an Shorts.¶Auch die Positionen anderer Trader werden mit dem Markt liquidiert: Bei den meisten Liquidationen bleibt Margin übrig, die in den Versicherungsfonds fließt; je schneller die Bewegung, desto mehr Positionen gehen bankrott, und der Fonds deckt die Lücke; nach einer großen Tagesbewegung berichtet die Zeitung, wie viele Trader liquidiert wurden und um welchen Betrag (deine Position eingeschlossen). Übersteigt der Verlust bei einer Liquidation die Margin, gleicht der Versicherungsfonds die Lücke aus; leert sich dieser (nur eine extreme Welle von Insolvenzen am ganzen Markt bewirkt dies), greift für Gewinnpositionen das Auto-Deleveraging, wodurch sie die Hälfte ihres Gewinns abgeben müssen; verbleibende Fehlbeträge werden als Schulden verbucht. Die Schulden wachsen täglich um {PerpDebtInterest:%}, werden jede Nacht vorrangig aus den CRC auf dem Konto getilgt, blockieren neue Positionen sowie Auszahlungen, und nach {PerpDebtDays} Tagen werden Gegenstände aus deinem Shop gepfändet, um sie zu decken; nicht gedeckte Restbeträge werden abgeschrieben und das Perpetual-Futures-Konto für {PerpBanDays} Tage gesperrt.§Shop: Nur Coins, kein CRC, {BmPremium:%} teurer als normale Kanäle, mit zusätzlichem Aufschlag auf High-Tech-Waren und Grafikkarten; die gezahlten Coins hinterlassen ihren Kontaminationsanteil beim Verkäufer und die Waren tragen keine „Gestohlen“-Markierung; Grafikkarten können Fälschungen sein, überprüfe sie selbst.¶Einkäufe im Shop: Wähle links einen Verkäufer, rechts befindet sich das Regal; nach Klick auf „Kaufen“ legst du im Zahlungsfenster Menge, Zahlungsart und Coin fest. Jeder Verkäufertyp akzeptiert andere Coins: Hardware und Technik nehmen PSC und CRT; Waffen, Drogen, Chemikalien, Dokumente, Luxusgüter und Privatverkäufer nehmen CRT und den Privacy Coin; Landwirtschaft, Tierhaltung, Wasser und Brauerei nehmen PSC und CRA; der Plattform-Spotmarkt nimmt PSC, CRT und CRA. Fehlt dir ein vom Verkäufer akzeptierter Coin, kannst du den integrierten Auto-Umtausch nutzen: Sie tauscht einen anderen Coin aus der Wallet mit {BmAutoSwapSlip:%} Slippage um und wird einmalig signiert; alternativ tauschst du vorab selbst auf der DEX – mit deutlich weniger Slippage, aber einem zusätzlichen Schritt. Auch bei Einstellgebühren wählst du den Coin erst bei der Zahlung.¶Warenkorb im Shop: Ein Klick auf „Kaufen“ am Regal legt den Artikel in den Warenkorb; der schwebende Warenkorb unten rechts zeigt die Artikelanzahl und öffnet die Kasse. Die Kasse zeigt links den Warenkorb (nach Verkäufer gruppiert, Mengen anpassbar, Artikel entfernbar; Treuhand oder Vorzeitige Freigabe bei Verkäufern, die dies gestatten) und rechts die Zahlung: Jeder Verkäufer besitzt eine eigene Empfängeradresse, daher zahlst du Verkäufer für Verkäufer – wähle den vom Verkäufer akzeptierten Coin, erstelle eine Rechnung und überweise aus der Wallet; oder nutze den Auto-Umtausch aus einem anderen Coin der Wallet (zzgl. {BmAutoSwapSlip:%} Slippage) und signiere einmalig für diesen Verkäufer.§Bestellungen und Verkauf: Bestellungen sind günstiger als der Sofortkauf, dauern aber einige Tage und können abgefangen werden; Händler verkaufen nach Typ zu eigenen Preisfaktoren, ab {BmBulk1Count}+ Artikeln gibt es {BmBulk1Discount:%} Rabatt und ab {BmBulk2Count}+ {BmBulk2Discount:%} Rabatt; ein Großhändler erscheint zufällig mit den niedrigsten Preisen, aber {BmBulkDays} Tagen Wartezeit; Treuhand kostet {BmEscrowFee:%}, wird bei Lieferung freigegeben und erstattet, falls der Verkäufer flieht; vorzeitige Freigabe gewährt weitere {BmAdvanceDiscount:%} Rabatt, doch ein Betrüger behält das Geld und nur Verkäufer mit {BmAdvanceMinTrades}+ Abschlüssen akzeptieren dies; die Plattform selbst kann einen Rug Pull durchführen, von der Security übernommen werden oder ein Verkäufer kann verhaftet werden, woraufhin deine Bestellungen zurückverfolgt und Verbrechen erfasst werden; Forengerüchte können als Warnung dienen. Ein abgefangenes Paket führt manchmal dazu, dass die Security vor der Tür steht: Beim Signieren wird das Verbrechen sofort erfasst und die Ware beschlagnahmt, bei Annahmeverweigerung verliert man nur die Zahlung.¶Verkaufen: Im Shop-Reiter „Verkaufen“ Schmuggelware, Hightech-Waren und Grafikkarten aus dem Lager zum {BmSellMin}- bis {BmSellMax}-Fachen des Referenzpreises einstellen. Je höher der Multiplikator, desto langsamer der Verkauf (unter {BmSellFastMult}x etwa {BmSellDaysFast} Tag, bei {BmSellDay1Mult}x etwa {BmSellDays1} Tage, bei {BmSellMax}x etwa {BmSellDaysMax} Tage) und desto wahrscheinlicher und höher die Kontamination der Auszahlung, die auch mit dem Verkaufsvolumen der letzten 7 Tage steigt; bei Diebesgut ist die Auszahlung nach dessen Diebesgut-Heat kontaminiert (Auszahlung × Heat %); der Reiter „Verkaufen“ zeigt zuerst deine Vitrine mit den eingestellten Waren, mit „Mehr einstellen“ stellst du weitere bereit: gleiche Waren werden zusammengefasst, mit − und + legst du die Stückzahl fest, den Multiplikator wählst du links, und erst nach Zahlung der Einstellgebühr über die Schaltfläche „Regal“ wird eingestellt; alle Stücke einer Ware haben denselben Multiplikator, zum Ändern müssen erst alle entfernt werden; höchstens {BmMaxKinds} Sorten gleichzeitig und {BmMaxStack} je Sorte, {BmListFee:%} Einstellgebühr pro Stück; in der Vitrine lassen sich Waren entfernen, sie kehren ins Lager zurück, die Gebühr wird nicht erstattet; unter „Akzeptierte Coins“ wählst du, welche Coins du annimmst: jeder weitere Coin bringt jede Nacht eine weitere Verkaufsrunde (in zufälliger Reihenfolge, je Coin unterschiedlich viele Käufer), mehr akzeptierte Coins verkaufen also schneller, und die Auszahlung kommt in dem Coin der erfolgreichen Runde; {BmCommission:%} Provision, Auszahlung wird {BmSaleHold} Tage lang einbehalten, bevor sie deine Wallet erreicht; eine gefälschte Grafikkarte kann erkannt und zurückgeschickt werden, was deine Bewertung senkt; führt die Plattform einen Rug Pull durch, sind eingestellte Waren und nicht freigegebene Auszahlungen verloren.§Prognosemärkte (Web3-Seite „Prognose“, ab Spieltag {PredictUnlockDay}): Jeder Markt ist eine Ja/Nein-Frage zu Ereignissen, die das Spiel selbst auswürfelt oder plant: das Erscheinen eines Nachrichtenereignisses, der Beginn einer Fraktionsoperation, die morgige Wasserreinheit, der PSC-Preis. Ein Markt ist geöffnet, bis sein Zeitfenster beginnt, und wird in der Nacht des letzten Fenstertags abgerechnet. Der Kauf von „Ja“ oder „Nein“ erfolgt mit CRC aus der On-Chain-Wallet (ein Contract-Aufruf: auf der Wallet signieren; die Position gehört der signierenden Wallet); der Preis entspricht der impliziten Wahrscheinlichkeit des Marktes und steigt beim Kauf; jeder Gewinnanteil zahlt 1 Credit aus; {PredictFee:%} Gebühr pro Handel; jeder Markt hat ein Positionslimit. Gewinne übernehmen die Kontaminationsquote des Einsatzes.¶Gerüchtezettel und Fraktionsvorteile können vorab verraten, dass ein Ereignis eintreten wird; auf einem solchen Markt auf „Ja“ zu setzen, gilt als Insider-Wette. Insider-Wetten werden regulär ausgezahlt, doch die Polizei vermutet Insiderhandel: Bei der Abrechnung oder beim Verkauf wird die Auszahlung für die Insider-Anteile als Kontamination auf der empfangenden Wallet verbucht. Fehlen Spieldaten für das Zeitfenster (z. B. wenn die nächtliche Abrechnung übersprungen wurde), ist der Markt ungültig und der Einsatz wird erstattet.§Preise reagieren auf Nachrichten: Jede Nacht nähert sich jeder offene Markt zur Hälfte der fairen Wahrscheinlichkeit an, die sich aus den öffentlichen Informationen ergibt, zuzüglich etwas Rauschen; wer also zuerst die Zeitung, einen Gerüchtezettel oder einen Fraktionsvorteil liest, kann vorab kaufen und nach der Bewegung verkaufen, anstatt auf die Abrechnung zu warten. Die Hinweisliste im Marktfenster zeigt deine bekannten Informationen dazu: Zeitpläne, Abklingzeiten, den Halving-Tag, jüngste Gas-Werte, den Stand der CRA-Reserve sowie Ankündigungen der Miner-Ära.¶Muster, die sich ableiten lassen: Fraktionsoperationen werden durch verdeckte Machtwerte bei Schwellenwerten ausgelöst (eine Razzia erfordert beispielsweise Security >= 20 und Schwarzmarkt >= 40 und senkt Security um 20); Gas folgt einem 7-Tage-Zyklus; der Preisanker steigt in der Woche vor einem Halving stetig an; geplante Razzien und Stromausfälle verschieben den Anker, doch der Marktpreis spiegelt sie nicht vorab wider; je schneller die Reserve schrumpft (je mehr gestakt ist), desto früher warnt CRA; der PSC-Preismarkt kann durch deine eigenen Großaufträge bewegt werden. Der Informationshändler (erfordert ausreichend Schwarzmarkt-Ansehen) verkauft Lageberichte (die fünf Machtwerte und welche Aktionen jede Fraktion aktuell starten kann, in CRT) sowie Insider-Tipps in drei Stufen (nur für bereits feststehende Fraktionsoperationen und die Miner-Ära; Trefferquote steigt mit jeder Stufe; Preis richtet sich nach der Marktgröße; manche Tipps sind Fälschungen und behaupten das Gegenteil der Wahrheit); auf die empfohlene Seite zu setzen, zählt als Insider-Wette. Die Marktgröße wächst mit fortlaufenden Tagen und eine falsche Wette verliert den gesamten Einsatz; setze daher nicht alles auf einen einzigen Markt.§Manipulationsprüfungen: Große Poinbase-Spot-Orders verschieben den Preis weg von seinem unbeeinflussten Niveau (die Verschiebung baut sich nächtlich mit der Preisrückkehr ab; der Markthinweis zeigt dies an). Übersteigt die Verschiebung {ManipFree:%}, besteht bei Gewinnen aus der Preisbewegung (eine gewonnene PSC-Preisprognose in Schieberichtung oder eine in dieser Richtung mit Gewinn geschlossene Perp-Position) das Risiko, entdeckt zu werden: Je größer die Verschiebung, desto wahrscheinlicher (maximal {ManipMax:%}). Bei einer Entdeckung erfolgt die Auszahlung dennoch: Eine Prognose-Auszahlung wird als Kontamination auf der Wallet verbucht, ein Perp-Gewinn als Kontamination auf dem Poinbase-Konto, und die Zeitung berichtet über die Ermittlungen.¶Die Kontamination darf den aktuellen Wert der Wallet nicht übersteigen: Beim Hinzufügen von Kontamination wird der übersteigende Betrag zu {PredictFraudShare:%} als Betrug verbucht, jedes Mal bis zu {PredictFraudCap}. Diese Regel gilt sowohl für Insider-Wetten als auch für Marktmanipulation. Short-then-Dump ist kein sicherer Gewinn: Die beidseitige Perp-Slippage und der Spot-Roundtrip kosten oft mehr, als die Short-Position einbringt.§Schneeballsystem (Seite „Rendite“, Ausgabe; ab Spieltag {PonziMinDay}, einmal pro Spielstand): Wähle einen Tageszinssatz ({PonziRates[0]:%}-{PonziRates[4]:%}), zahle die Marketingkosten für den Start (Start und Rug Pull sind Contract-Aufrufe, die auf der Wallet signiert werden); Bewohner der Unteren Ebene zahlen je nach Zinssatz und Ansehen in der Unteren Ebene CRC ein; je höher der Satz, desto schneller kommen sie. Jede Nacht werden Zinsen zuerst aus neuen Einzahlungen bezahlt, danach aus der Wallet des Emittenten; kannst du sie nicht decken, kommt es zum Bankansturm und das System kollabiert; {PonziWithdraw:%} des Pools wird jede Nacht abgehoben; je größer der Pool und je höher der Zinssatz, desto wahrscheinlicher ist eine Anzeige, die es ebenfalls zum Einsturz bringt. Beim Kollaps wird der Pool beschlagnahmt. Du kannst jederzeit einen Rug Pull durchführen (zweimal klicken zum Bestätigen): Das Guthaben geht vollständig kontaminiert an die Wallet des Emittenten (vor dem Auszahlen waschen). Sowohl ein Rug Pull als auch ein Kollaps werden als Betrug erfasst und löschen dein Ansehen in der Unteren Ebene vollständig. Die Zeile „Melderisiko“ deutet auf das Risiko einer Anzeige hin.§Betrug: Wicks – An manchen Morgen schlägt der Kurs zur Eröffnung um {WickMin:%}-{WickMax:%} nach oben oder unten aus; meist korrigiert er sich noch am selben Abend, manche Ausschläge sind jedoch echt; der Perp-Markpreis berücksichtigt nur die Hälfte, also bei einem Wick nicht in Panik verkaufen.¶Airdrops (Web3-Airdrop-Seite) – Für jeden Airdrop muss zuerst die Wallet autorisiert werden (ein signierter Autorisierungsvertrag), danach wird das Beanspruchen signiert; prüfe vor der Autorisierung den Freigabeumfang: Echte Airdrops verlangen keine Freigabe oder nur eine minimale im zweistelligen Bereich; unbegrenzte Freigaben oder solche, die weit über der Belohnung liegen, sind Phishing – oft unter Nachahmernamen (0 statt o, 1 statt l) –, und ein bis zwei Nächte später wird der entsprechende Coin aus der Wallet entwendet. Freigaben werden rechts auf der Airdrop-Seite aufgeführt und können per Signatur widerrufen werden, wonach nichts mehr entwendet werden kann.¶Drittanbieter-Renditepools (Seite „Rendite“, Einzahlung) – {YieldRates[0]:%}-{YieldRates[2]:%} täglich; Reserve, Timelock und Audit sind einsehbar, nicht jedoch, ob es sich um Betrug handelt: Je höher der Zinssatz, desto wahrscheinlicher ein Rug Pull; Timelock und Audit verringern das Risiko; ein seriöser Pool schließt und erstattet das Kapital, wenn die Reserve keine Zinsen mehr zahlen kann – ein Betrugspool kann jede Nacht verschwinden. Auszahlungsdauer bei Pools mit Timelock: {YieldLockDays} Tage.¶Falscher Support – Jemand am Tresen gibt sich als Poinbase-Support aus und fordert dazu auf, CRC auf eine „sichere Adresse“ zu überweisen: Poinbase kommt nie vorbei und fordert niemals Überweisungen. Gefälschte Überweisungen – Kunden, die mit Coins zahlen und sagen „Bereits gesendet, hier ist der Screenshot, her mit der Ware“, zahlen nie; ehrliche Kunden erklären, dass die On-Chain-Bestätigung einen Moment dauert.§Charts: Auf der Poinbase-Spot-Seite und der Web3-Handelsseite kann zwischen den Tageskerzen aller Coins gewechselt werden (die Perp-Seite zeigt das aktuelle Produkt, Prognosen zeigen PSC), Grün steht für Anstieg und Rot für Rückgang; die gelbe Linie ist der 7-Tage-Durchschnitt (von der Perp-Finanzierungsgebühr genutzt); die Balken darunter zeigen das Volumen (Grau: Markt, Cyan: du selbst – Spot, DEX, Prägen/Verbrennen, Ponero-Swaps sowie Perp-Eröffnungen/-Schließungen zählen alle). Je größer die Kursbewegung, desto mehr handelt der Markt; Wicks hinterlassen lange Schatten.§Story-Verknüpfungen: Entscheidungen in den Handlungssträngen des Spiels verändern diesen Markt; die Zeitung berichtet am nächsten Tag darüber und der Markt benötigt einige Tage für die Reaktion. Serpicos Beweise an die Revolution: Die CRA-Reserve wird aufgestockt, die Kollapschance halbiert sich für {StorySecDays} d und SPARK steigt über {StorySparkNights} Nächte um {StorySerpicoSpark:+%}; an den Schwarzmarkt: Wahrscheinlichkeiten für CRT-Depeg und Verrat halbieren sich; an die Security: Für {StorySecDays} d werden Auszahlungsprüfungen, Mixer-Sanktionen und Prüfungen auf Marktmanipulation verschärft. Eleanor leakt das Datenlaufwerk: Die Wahrscheinlichkeit einer Abschreibung durch die CRC-Verwahrstelle verdoppelt sich und SPARK steigt um {StoryLeakSpark:+%}; gibt sie es zurück: Die CRC-Depeg-Wahrscheinlichkeit halbiert sich. Officer Lun verhaftet: Strengere Auszahlungsprüfungen und Prüfungen auf Marktmanipulation für {StoryLunDays} d.¶Mixer-Betreiber Tumbler (nach Freischaltung des Mixers, ab Tag {TumblerMinDay}): Er kommt mehrmals vorbei und bittet dich schließlich, ein Schlüssellaufwerk zu verstecken. Verstecken und zurückgeben: Mixer-Gebühren halbieren sich, das Anonymitätsset wächst und es gibt eine Belohnung; das Laufwerk gilt jedoch als Schmuggelware und wird aktenkundig, falls eine Durchsuchung es in der Zwischenzeit entdeckt. Ihn melden: Kopfgeld und Ansehen bei der Security, und der Mixer wird geschlossen (Coins im Transfer werden zurückerstattet). An den Schwarzmarkt verkaufen: Ein Betrag an CRT (zur Hälfte kontaminiert) und Schwarzmarkt-Ansehen; danach steigen die Mixer-Gebühren und das Risiko eines Rug Pulls erhöht sich.¶Nach Tumbler: Zwischen seinem zweiten und dritten Besuch kommt ein Sicherheitsagent vorbei und fragt, ob er in deinem Laden war. Zugeben: Security-Ansehen +{TumblerAgentSecRep}; versteckst du das Laufwerk danach jedoch für ihn, durchsucht der Agent den Laden am Tag vor Tumblers Rückkehr, beschlagnahmt das Laufwerk und vermerkt Schmuggelware, falls er es findet. Gelangt der Schlüssel zur Security (durch Meldung, Beschlagnahmung oder Verlust vor seiner Rückkehr), werden die Mixer-Aufzeichnungen rekonstruiert: Jegliche Kontamination, die in den letzten {TumblerLeakDays} d von Mixer-Auszahlungen gewaschen wurde, wird den ursprünglichen Wallets wieder zugewiesen; der den Wallet-Wert übersteigende Teil wird als Betrug erfasst. Eine Meldung führt zum Prozess: Auf dem Prognosemarkt kann auf das Urteil gewettet werden, und die Zeitung berichtet täglich über die Verhandlungen; wird er freigesprochen, rächt er sich. Wurde das Laufwerk an den Schwarzmarkt verkauft, vollzieht dieser {TumblerBmRugMin}–{TumblerBmRugMax} d später einen Rug Pull, alle Coins im Mixer-Transfer gehen verloren und er rächt sich ebenfalls. Versteckst du das Laufwerk und gibst es zurück, warnt er dich in der Nacht vor einer Razzia der Security. {TumblerRebrandDays} d nach der Schließung geht der Mixer unter neuem Namen wieder online; einige davon sind Honeypots der Security, und jeder daraus abgehobene Coin wird markiert. Vorsicht vor auffällig niedrigen Gebühren.§Mixer und Privacy Coin: Wähle Coin, Betrag und Runden; jede Runde verlangt eine Gebühr und senkt die Kontamination, Runden entsprechen den Tagen an Wartezeit und die Coins kehren zur selben Adresse zurück; je mehr eingezahlt wird, desto schlechter die Reinigung.¶Privacy-Coin-Tausch (Web3-Handelsseite, erfordert Schwarzmarkt-Ansehen): Ponero ist ein Privacy Coin und das Eintauschen tilgt die Kontamination dieses Werts; jeweils {PoneroFee:%} Gebühr in beide Richtungen mit Tageslimit; aus Ponero herausgetauschte Coins haben keinen Ursprung und die Compliance-Prüfung verschärft sich.§OTC-Kunden (Netzwerk-Upgrade „OTC-Schalter“): Die Schwarze Lampe erhält ein weiteres Ziel: OTC-Kunde (Doppelklick auf die Lampe zum Umschalten). Sie leuchtet nur in der Vitrine und lockt Personen wie die ursprüngliche Schwarze Lampe an – basierend auf der Lampenanzahl und deinem Schwarzmarkt-Ansehen; das Upgrade enthält eine Lampe. Die Hälfte der Kunden möchte dir Coins verkaufen, die andere Hälfte Coins von dir kaufen, stets gegen Bargeld. Nachdem der Kunde sein Anliegen vorgebracht hat, wähle am Terminal verhandeln: Das Handelsterminal öffnet die Schalter-Handelsseite, während der Kunde am Schalter wartet. Du kannst auch nur einen Teil des Handels annehmen (25% / 50% / 75% / 100% oder einen eingegebenen Betrag); das Bargeld passt sich entsprechend an. Wähle „Passen“ oder schicke den Kunden weg, um abzulehnen. Das Handelsvolumen steigt mit der Miete.¶Verkaufende Kunden: Bei einem Abschluss zahlst du Bargeld und die Coins gehen direkt in die verbundene Wallet. Wenn auf der Station etwas vorfällt, stammen die Coins meist daraus: CRT während Bandenkriegen oder Razzien, PSC bei Angriffen der Revolution auf die Obere Ebene oder bei Unruhen auf der Unteren Ebene – zum vollen Marktwert kontaminiert. Andernfalls handelt es sich zufällig um PSC, CRT oder CRA, mit einer Kontamination von {OtcTaintMin:%}–{OtcTaintMax:%} des Wertes; schmutzigere Coins sind günstiger (der geforderte Preis sinkt von {OtcCutClean:%} auf {OtcCutDirty:%} des Wertes). Der Kunde sagt nicht, wie schmutzig die Coins sind: Die Handelsseite zeigt seine Adresse, und „Nachschlagen“ öffnet den Verlauf im Explorer; je mehr davon aus dem Mixer, von Schwarzmarkt-Plattformen oder Betrugsadressen stammt, desto schmutziger sind sie. Sobald der Ponero-Schalter eröffnet ist, verkauft gelegentlich jemand Ponero; diese tragen keine Kontamination, kosten aber mehr. Hinzugefügte Kontamination darf den Wert der Wallet nicht überschreiten; der Überschuss wird als Betrug erfasst. Hin und wieder ist der Kunde ein verdeckter Ermittler: Schließt du das Geschäft ab, verlierst du das Bargeld und es wird Hehlerei erfasst – während einer Razzia noch häufiger.¶Kaufende Kunden: Sie können jeden Coin verlangen und bieten den Marktpreis plus einen zufälligen Aufschlag (von {OtcBidMin:+%} bis {OtcBidMax:+%} des Marktpreises, kann also unter Marktwert liegen); ob sich der Verkauf lohnt, liegt bei dir. Bei einem Abschluss öffnet sich PLEDGER mit bereits ausgefüllter Adresse und Betrag; signiere und warte auf die Bestätigung – sobald sie eingeht, zahlt der Kunde bar und geht. Verlässt der Kunde das Geschäft, bevor du signierst, ist der Handel ungültig. Von dir verkaufte Coins werden nicht auf Kontamination geprüft.¶Eigener Mixer (Graunetz-Seite, mit dem OTC-Schalter freigeschaltet): Mit Kapital ausstatten und eröffnen; Kunden zahlen kontaminierte Coins ein und nach einigen Tagen werden sie ausgezahlt, während du die Gebühr behältst. Jede Runde wäscht einen Teil der Kontamination anhand des Anonymitätssets ab, das hauptsächlich aus deinem Kapital und ungesammelten Einnahmen besteht (Kunden-Coins im Transit zählen nur teilweise); je mehr Kapital eingezahlt wird, desto sauberer wäscht er. Kunden vergleichen die Gebühr plus verbleibende Kontamination bei Auszahlungen mit Tumblers Mixer und gehen dorthin, wo es günstiger ist; ein höheres Schwarzmarkt-Ansehen zieht mehr von ihnen an. Das angezeigte Ansehen entspricht der kürzlich bei Auszahlungen verbliebenen Kontamination. Gebühreneinnahmen verbleiben im Pool und sind bei der Entnahme vollständig kontaminiert; Kapital kehrt mit seiner ursprünglichen Kontamination zurück. Mehr Betrieb erhöht das Fahndungsaufkommen (ein größerer Pool verschleiert Coins zwar etwas besser, zieht aber auch mehr Betrieb an und erregt insgesamt mehr Aufmerksamkeit) und damit die Wahrscheinlichkeit einer Security-Razzia: Kapital, Einnahmen und Kunden-Coins werden komplett beschlagnahmt, es wird Hehlerei erfasst und der Mixer wird für {OwnMixSeizeDays} d geschlossen. Zahlt in einer Betriebsnacht gelegentlich ein verdeckter Ermittler ein, wird ebenfalls Hehlerei erfasst. Du kannst jederzeit einen Rug Pull durchführen: Alles, einschließlich der Kunden-Coins, geht vollständig kontaminiert an dich, es wird Betrug erfasst, das Schwarzmarkt-Ansehen sinkt und der Mixer schließt dauerhaft.§Compliance-Prüfung bei Auszahlungen (die Anzeige zeigt weder Freibetrag noch Prüfwahrscheinlichkeit; es gelten folgende Regeln): Das Auszahlen von CRC bei Poinbase gegen Credits wird anhand der aktuellen Miete bewertet – eine Einzelauszahlung über dem {AmlBigRents}-Fachen der Miete oder Gesamtsummen über dem {AmlCumRents}-Fachen der Miete binnen {AmlWindowDays} Tagen erhöhen die Prüfwahrscheinlichkeit proportional zum Überschuss; beträgt der kontaminierte Anteil mindestens {AmlTaintRatio:%} des Betrags, steigt die Wahrscheinlichkeit um „Quote × {AmlTaintMult}“; vor Kurzem aus dem Mixer zurückgeholte Coins oder Gelder aus einer markierten Wallet addieren {AmlMixerBonus:%}; die Obergrenze liegt bei {AmlMaxChance:%}. Bei einer Prüfung: Liegt die Kontamination unter {AmlHeavyRatio:%}, gilt dies als leicht – der kontaminierte Teil wird beschlagnahmt, kein Verbrechen vermerkt; ab {AmlHeavyRatio:%} gilt dies als schwer – der kontaminierte Teil wird beschlagnahmt und der kontaminierte Betrag als Hehlerei erfasst. Ohne Prüfung wird der volle Betrag gutgeschrieben. Auszahlungen kosten {ExchangeFee:%} Gebühr und Gewinne über den Anschaffungskosten werden mit {TaxRate:%} besteuert. Stückelung in kleine Beträge, Aufteilung über Tage und vorheriges Waschen senken die Wahrscheinlichkeit; Freibetrag und Trefferwahrscheinlichkeit werden jedoch nicht angezeigt – schätze sie selbst ab.¶Bevor du eine Wallet zerstörst, transferiere die Coins selbst heraus und hebe zuvor Positionen und Einzahlungen ab: Alles, was bleibt, geht mit der Wallet verloren." +guide.web3.text,"Bank und Handel: Die Bank-Seite ist schreibgeschützt und zeigt Bargeld, Miete und die CRC auf deinem Poinbase-Konto an. Die Guthaben-Seite von Poinbase wickelt Ein- und Auszahlungen ab; wähle zuerst den Coin: CRC kann über das Bankkonto oder eine Wallet laufen, jeder andere Coin nur über eine Wallet. Einzahlungen von der Bank wandeln Credits in CRC auf deinem Poinbase-Konto um; Auszahlungen auf das Bankkonto wandeln CRC ohne Prüfung wieder in Credits um (das Poinbase-Konto hält ausschließlich sauberes Geld). Auszahlungen an eine Wallet erfordern eine Empfängeradresse und einige Bestätigungen, bevor sie ankommen; die Gas-Gebühr ist fest auf der normalen Stufe und wird vom gesendeten Coin abgezogen. Ein falsches Adressformat oder eine fehlerhafte Prüfsumme wird abgelehnt; eine korrekt formatierte Adresse, die niemand nutzt, bedeutet, dass die Coins verloren sind.¶Handel: PSC steht für Probably Stolen Coin, den von Grafikkarten und Minern geschürften Coin. Der Poinbase-Spotmarkt hat zwei Handelspaare, PSC/CRC und SPARK/CRC, die dem im Chart ausgewählten Coin folgen. Käufe und Verkäufe werden jeweils als Betrag des gehandelten Coins eingegeben; die Vorschau zeigt die gezahlte oder erhaltene Notierungswährung, der Durchschnittspreis enthält die Gebühr, die Slippage nicht.¶Die Web3-Handelsseite kann zwei beliebige Coins tauschen, immer über CRC: Liegt CRC auf einer Seite, nutzt sie einen Pool, andernfalls zwei Pools mit doppelten Gebühren und gestapelter Slippage; die Vorschau zeigt den erhaltenen Betrag, die durchlaufenen Pools und den Verlust. Stablecoin-Swaps (CRT oder CRA gegen CRC) nutzen Stable-Pools: eine Gebühr von {StableFee:%} und nahezu keine Slippage nahe der Bindung; bei einer Entkopplung wird die Liquidität dünner, und bei einem Kollaps wird sie abgezogen und die Slippage springt in die Höhe.§Hardware-Wallets: On-Chain-Coins liegen in PLEDGER-Hardware-Wallets, jede mit eigenen Guthaben und kontaminierten Coins (bei jedem Coin wird erfasst, wie viele davon kontaminiert sind; siehe Kontamination). Eine Wallet ist ein Gegenstand: Ziehe sie auf das Handelsterminal, um sie zu laden. Öffne sie auf der Wallets-Seite des Terminals; das Verbinden und Trennen erfolgt oben rechts am Terminal. Der Handel auf der Web3-Seite sowie der Shop und Mixer auf der Graunetz-Seite nutzen die verbundene Wallet; ohne Wallet oder Verbindung sind sie schreibgeschützt und jedes Guthaben steht bei 0. Kunden, die mit Coins zahlen, zahlen auf die verbundene Wallet ein.¶Zahlungen (Shop, Mixer, Ponero-Schalter, Listungsgebühren) beginnen als Rechnung auf dem Terminal; tippe die Empfängeradresse auf der Wallet ein und halte ✓ gedrückt, um zu signieren. Die letzten beiden Zeichen einer Adresse sind eine Prüfsumme, sodass ein Tippfehler um ein Zeichen meistens abgefangen wird; gelegentlich ist sie zufällig gültig und die Coins gehen an eine Adresse, die niemand nutzt. DEX-Swaps erfordern ebenfalls eine Signatur auf der Wallet.¶Poinbase ist ein verwahrtes Konto; Einzahlungen werden von einer Wallet an die Einzahlungsadresse von Poinbase gesendet (nur PSC, CRC und SPARK; die konforme Börse akzeptiert weder das CRT des Schwarzmarkts noch das CRA der Revolution, und die Wallet blockiert das Senden an die Einzahlungsadresse; es können nur saubere Coins eingezahlt werden, siehe Kontamination) und Auszahlungen werden auf der Guthaben-Seite von Poinbase veranlasst. Der Explorer auf der Wallets-Seite sucht Überweisungen nach Adresse und zeigt nur tatsächlich erfolgte Überweisungen an: jede Bewegung in und aus deinen Wallets (Überweisungen, DEX-Swaps und andere Contract-Aufrufe, Miner-Auszahlungen, Auszahlungen, von anderen gesendete Coins); Ponero ist ein Privacy Coin und wird nie angezeigt. Weitere Hardware-Wallets werden von Dr. Jackson verkauft; ziehe eine auf das Handelsterminal, um sie hinzuzufügen, bis zu maximal {WalletMax}. Der Shop bietet günstigere an. Eine Wallet, die du nicht mehr benötigst, kann auf der Wallets-Seite zerstört werden; ihre Coins sind unwiderruflich verloren, und alles, was danach an ihre Adresse gesendet wird, ist ebenfalls verloren.¶Überweisungen zahlen eine Gas-Gebühr: langsam, normal oder schnell, und die Gas-Preise steigen und fallen über etwa eine Woche hinweg; bei Netzwerküberlastung steigen die Gas-Gebühren und langsame Transaktionen können aus dem Mempool verworfen werden. Prüfe vor dem Absenden die vollständige Adresse.§Staking: Im Revolution-Pool gestakte CRA erzielen einen Tageszinssatz, der dem Einsatz zugeschlagen wird; eine Auszahlung erfordert einen vorherigen Antrag und vier Tage Wartezeit – ohne Zinsen während des Wartens und ohne vorzeitige Entnahme. CRA ist teilbesichert: Jedes CRA wird von CRC-Reserven der Revolution und vom Ausgleichstoken SPARK gedeckt; Reservedeckung und Besicherungsquote stehen auf der Staking-Seite. Zinsen werden in neuem, unbesichertem CRA gezahlt, das die Reservedeckung verwässert, umso schneller, je mehr gestakt ist; bei zu niedriger Deckung senkt die Revolution den Zinssatz. Die Revolution greift manchmal in die Reserve; zuvor gibt es Gerüchte, das ist das Vorzeichen. Fällt die Deckung danach unter {CraCrashRatio:%}, bricht das System zusammen: CRA ist binnen drei Tagen wertlos und vier Tage Entsperrung sind zu langsam; darüber gibt es nur einen Abschlag, und Mittel aus Raubzügen gegen die Oberschicht füllen die Reserve allmählich wieder auf.¶Offizielles Prägen: CRC und SPARK einzahlen (Verhältnis nach aktueller Besicherungsquote, die Vorschau zeigt den Bedarf), um CRA zu prägen; Wartezeit {CraMintDaysMin}–{CraMintDaysMax} Tage, das geprägte CRA wandert direkt ins Staking. Verbrennen tauscht CRA zurück in CRC und SPARK, mit gleich langer Wartezeit wie die Entsperrung; reicht die Reserve nicht, wird der CRC-Anteil nach Deckung gekürzt. Wartende Präge- und Verbrennungsaufträge kann die Revolution komplett verweigern: Die nächtliche Wahrscheinlichkeit ist der Betrag, um den der CRA-Preis unter 1 liegt, mal {CraRugPerDepeg}; liegt der Preis nicht unter 1, passiert nichts.¶Gestakt werden können CRA, CRC, CRT und SPARK: die letzten drei werden zuvor am Sekundärmarkt zum Marktpreis in CRA getauscht (über CRC, mit Gebühr und Slippage). Der Kurs von SPARK schwankt heftig und stürzt beim Kollaps mit ab. Staking, Prägen und Verbrennen sind Contract-Aufrufe und erfordern eine Signatur auf der Wallet.§Miner: RatDigg-Miner (M1 / M2 / M3) sind eigenständige Geräte mit weitaus mehr Hashrate als eine Grafikkarte und geringerem Stromverbrauch pro Hash; sie benötigen eine Batterie, nehmen Module auf und belegen keine Rig-Plätze. Nur die Miner-Dealer im Shop verkaufen sie, gebunden an Schwarzmarkt-Ansehen (M1 {AsicRepM1}, M2 {AsicRepM2}, M3 {AsicRepM3}), gelegentlich auch gebraucht. Wenn einer durchbrennt, repariere ihn, indem du Elektronikkomponenten der Reihe nach auf ihn ziehst; sein Zustand ist danach um {AsicRepairHealthCut} verringert. Irgendwann zwischen Tag {EraMin} und Tag {EraMax} bricht eine ""Miner-Ära"" an, die einige Tage zuvor in der Zeitung angekündigt wird: Große Mining-Farmen halbieren ihre Stromkosten, die Netzwerk-Hashrate steigt, die Erträge von GPU-Minenarbeitern werden verwässert und leistungsschwache Grafikkarten werfen kaum noch etwas ab, während Miner weiterhin gut dastehen.¶Auszahlungsadresse: Jeder Miner (Mining-Rigs und ASIC-Miner) hat eine im eigenen Fenster festgelegte Auszahlungsadresse; der Mining-Ertrag wird jede Nacht proportional zur Hash-Leistung dorthin geschickt, sodass zwei Miner an zwei verschiedene Adressen auszahlen können. Standardmäßig ist keine eingerichtet; ohne Adresse oder bei einem zerstörten Wallet geht dieser Anteil verloren. Passe die Adresse also an, wenn du Wallets wechselst.¶Turbo-Booster funktionieren bei Mining-Rigs und Minern nach denselben Regeln wie bei anderen Geräten: Jede Nutzung führt einen zusätzlichen Zyklus aus, was bedeutet, dass sofort eine Nacht lang geschürft wird. Dieser Zyklus verbraucht den Strom einer Nacht, sein Ertrag basiert auf der aktuellen Netzwerk-Hashrate und geht an die Auszahlungsadresse dieses Geräts, und er zählt als ein Durchlauf für Abnutzung und Totalausfallprüfung; das Gerät schürft in dieser Nacht dennoch wie gewohnt weiter.§Perpetual-Futures: Der Tab „Perps“ auf Poinbase nutzt deine Konto-CRC als Margin, bis zu {PerpPscLev}× auf PSC und {PerpSparkLev}× auf SPARK, nur Isolated Margin, jeweils nur eine Position (niemals gleichzeitig Long und Short); aufstocken geht nur über zusätzliche Margin. Ausführungen weichen zum Schlechteren vom Kurs ab (bei größeren Orders umso mehr, ähnlich wie im Spot-Pool), und das Eröffnen wie Schließen kostet Gebühren. Die Liquidation wird ausschließlich nachts anhand des Tagesdurchschnittspreises geprüft: Fällt das Eigenkapital unter {PerpMaint:%} des Nominalwerts, wird die Margin vollständig eingezogen. Zudem gibt es eine nächtliche Finanzierungsgebühr; liegt der Kurs über seinem 7-Tage-Durchschnitt, zahlen Longs an Shorts.¶Auch die Positionen anderer Trader werden mit dem Markt liquidiert: Bei den meisten Liquidationen bleibt Margin übrig, die in den Versicherungsfonds fließt; je schneller die Bewegung, desto mehr Positionen gehen bankrott, und der Fonds deckt die Lücke; nach einer großen Tagesbewegung berichtet die Zeitung, wie viele Trader liquidiert wurden und um welchen Betrag (deine Position eingeschlossen). Übersteigt der Verlust bei einer Liquidation die Margin, gleicht der Versicherungsfonds die Lücke aus; leert sich dieser (nur eine extreme Welle von Insolvenzen am ganzen Markt bewirkt dies), greift für Gewinnpositionen das Auto-Deleveraging, wodurch sie die Hälfte ihres Gewinns abgeben müssen; verbleibende Fehlbeträge werden als Schulden verbucht. Die Schulden wachsen täglich um {PerpDebtInterest:%}, werden jede Nacht vorrangig aus den CRC auf dem Konto getilgt, blockieren neue Positionen sowie Auszahlungen, und nach {PerpDebtDays} Tagen werden Gegenstände aus deinem Shop gepfändet, um sie zu decken; nicht gedeckte Restbeträge werden abgeschrieben und das Perpetual-Futures-Konto für {PerpBanDays} Tage gesperrt.§Shop: Nur Coins, kein CRC, {BmPremium:%} über regulären Kanälen, mit zusätzlichem Aufschlag auf High-Tech-Waren und GPUs; der gezahlte Coin führt seinen Anteil an kontaminierten Coins mit ab und die Ware trägt kein Kennzeichen für Diebesgut; GPUs können gefälscht sein, prüfe sie selbst.¶Shop-Käufe: Wähle links einen Verkäufer, die Auslage ist rechts, und nach „Kaufen“ legt das Zahlungsfenster Menge, Zahlungsmethode und Coin fest. Jede Art von Verkäufer nimmt unterschiedliche Coins: Hardware und Technik nehmen PSC und CRT; Waffen, Drogen, Chemikalien, Dokumente, Luxusgüter und persönliche Verkäufer nehmen CRT und den Privacy Coin; Landwirtschaft, Tierhaltung, Wasser und Brauerei nehmen PSC und CRA; der Plattform-Spotmarkt nimmt PSC, CRT und CRA. Fehlt dir ein Coin, den der Verkäufer akzeptiert, kannst du die integrierte automatische Konvertierung nutzen: Sie tauscht aus einem anderen Coin in der Wallet mit {BmAutoSwapSlip:%} Slippage und signiert einmalig; oder tausche zuerst selbst auf der DEX, mit deutlich weniger Slippage, aber einem zusätzlichen Schritt. Auch bei Listungsgebühren wird der Coin erst bei der Zahlung gewählt.¶Shop-Warenkorb: „Kaufen“ an einer Auslage legt Artikel in den Warenkorb; der schwebende Warenkorb unten rechts zeigt die Anzahl und öffnet die Kasse. Die Kasse zeigt links den Warenkorb (gruppiert nach Verkäufer, Mengen anpassbar, Artikel entfernbar, Treuhand oder vorzeitige Freigabe bei Verkäufern, die dies erlauben) und rechts die Zahlung: Jeder Verkäufer hat eine andere Empfängeradresse, daher zahlst du Verkäufer für Verkäufer – wähle einen vom Verkäufer akzeptierten Coin, erstelle eine Rechnung und überweise aus der Wallet; oder nutze die automatische Konvertierung aus einem anderen Coin in der Wallet ({BmAutoSwapSlip:%} zusätzliche Slippage) und signiere einmal für diesen Verkäufer.§Bestellungen und Verkauf: Bestellungen sind günstiger als am Spotmarkt, dauern Tage und können abgefangen werden; Händler verkaufen nach Warentyp mit eigenem Preisfaktor, ab {BmBulk1Count}+ Stück gibt es {BmBulk1Discount:%} Rabatt und ab {BmBulk2Count}+ Stück {BmBulk2Discount:%} Rabatt, und ein Großhändler erscheint zufällig mit Tiefstpreisen, aber {BmBulkDays} T. Wartezeit; Treuhand kostet {BmEscrowFee:%}, wird bei Lieferung freigegeben und erstattet, falls der Verkäufer abtaucht; Vorzeitige Freigabe gewährt weitere {BmAdvanceDiscount:%} Rabatt, doch ein Betrüger behält das Geld und nur Verkäufer mit {BmAdvanceMinTrades}+ Abschlüssen akzeptieren dies; die Plattform selbst kann einen Rug Pull durchführen, von Security übernommen werden oder ein Verkäufer wird verhaftet, woraufhin deine Bestellungen zurückverfolgt und Vergehen erfasst werden; Forengerüchte dienen als Warnung. Ein abgefangenes Paket führt manchmal zu Security vor der Tür: Unterschreiben erfasst das Vergehen sofort und beschlagnahmt die Ware, Ablehnen kostet nur die Zahlung.¶Verkauf: Stelle im Shop-Reiter „Verkaufen“ Schmuggelware, Hightech-Waren und Grafikkarten aus dem Lager zum {BmSellMin}- bis {BmSellMax}-Fachen des Referenzpreises ein. Je höher der Multiplikator, desto langsamer der Verkauf (unter {BmSellFastMult}x ca. {BmSellDaysFast} T., bei {BmSellDay1Mult}x ca. {BmSellDays1} T., bei {BmSellMax}x ca. {BmSellDaysMax} T.) und desto wahrscheinlicher sowie höher ist die Kontamination der Auszahlung, die zudem mit deinem Verkaufsvolumen der letzten 7 Tage steigt; Diebesgut kontaminiert die Auszahlung entsprechend seiner Hitze (Hitze-% der ausgezahlten Coins sind kontaminiert); der Reiter „Verkaufen“ öffnet die Vitrine deiner gelisteten Waren, und „Weitere einstellen“ bereitet Nachschub vor: Identische Waren werden gruppiert, Tasten − und + legen die Menge fest, der Multiplikator wird links gewählt und Waren werden erst nach Zahlung der Einstellgebühr über die Regal-Schaltfläche gelistet; alle Einheiten eines Artikels teilen denselben Multiplikator; um ihn zu ändern, müssen zuerst alle abgeräumt werden; bis zu {BmMaxKinds} Arten gleichzeitig und je max. {BmMaxStack} Stück, {BmListFee:%} Einstellgebühr pro Einheit; Waren können aus der Vitrine zurück ins Lager gelegt werden, die Gebühr verfällt; „Akzeptierte Coins“ in der Vitrine legt fest, welche Coins du annimmst: Jeder zusätzliche Coin bringt jede Nacht einen weiteren Verkaufswurf (in zufälliger Reihenfolge mit unterschiedlicher Käuferzahl pro Coin) – mehr Coins beschleunigen den Verkauf, und die Auszahlung erfolgt im Coin des Zuschlagswurfs; {BmCommission:%} Provision, Auszahlung wird {BmSaleHold} T. einbehalten, bevor sie deine Wallet erreicht; eine gefälschte Karte kann auffliegen und retourniert werden, was deine Bewertung senkt; bei einem Rug Pull der Plattform sind gelistete Waren und unbezahlte Auszahlungen verloren.§Prognosemärkte (Web3-Seite „Prognose“, ab Spieltag {PredictUnlockDay}): Jeder Markt ist eine Ja/Nein-Frage zu Ereignissen, die das Spiel selbst auswürfelt oder ansetzt: Auftreten einer Nachricht, Beginn einer Fraktionsoperation, morgige Wasserreinheit, PSC-Preis. Ein Markt ist offen, bis sein Zeitfenster beginnt, und rechnet in der Nacht des letzten Fenstertags ab. Kaufe Ja oder Nein mit CRC aus deiner On-Chain-Wallet (ein Contract-Aufruf: auf der Wallet signieren; die Position gehört der signierenden Wallet); der Preis entspricht der implizierten Marktwahrscheinlichkeit und steigt beim Kauf; jeder Gewinnanteil zahlt 1 Credit aus; {PredictFee:%} Gebühr pro Trade; jeder Markt hat ein Positionslimit. War das eingesetzte CRC teils kontaminiert, ist jener Anteil der Auszahlung ebenfalls kontaminiert.¶Gerüchtezettel und Fraktionsvorteile können Ereignisse vorab verraten; auf solche Märkte Ja zu setzen gilt als Insider-Wette. Insider-Wetten zahlen regulär aus, doch die Polizei vermutet Insiderhandel: Bei Abrechnung oder Verkauf wird die Auszahlung für Insider-Anteile in der Empfänger-Wallet als kontaminierte Coins markiert. Fehlen Spieldaten für das Zeitfenster (z. B. nächtliche Abrechnung übersprungen), wird der Markt annulliert und der Einsatz erstattet.§Preise reagieren auf Nachrichten: Jede Nacht nähert sich jeder offene Markt zur Hälfte der fairen Wahrscheinlichkeit an, die sich aus den öffentlichen Informationen ergibt, zuzüglich etwas Rauschen; wer also zuerst die Zeitung, einen Gerüchtezettel oder einen Fraktionsvorteil liest, kann vorab kaufen und nach der Bewegung verkaufen, anstatt auf die Abrechnung zu warten. Die Hinweisliste im Marktfenster zeigt deine bekannten Informationen dazu: Zeitpläne, Abklingzeiten, den Halving-Tag, jüngste Gas-Werte, den Stand der CRA-Reserve sowie Ankündigungen der Miner-Ära.¶Muster, die sich ableiten lassen: Fraktionsoperationen werden durch verdeckte Machtwerte bei Schwellenwerten ausgelöst (eine Razzia erfordert beispielsweise Security >= 20 und Schwarzmarkt >= 40 und senkt Security um 20); Gas folgt einem 7-Tage-Zyklus; der Preisanker steigt in der Woche vor einem Halving stetig an; geplante Razzien und Stromausfälle verschieben den Anker, doch der Marktpreis spiegelt sie nicht vorab wider; je schneller die Reserve schrumpft (je mehr gestakt ist), desto früher warnt CRA; der PSC-Preismarkt kann durch deine eigenen Großaufträge bewegt werden. Der Informationshändler (erfordert ausreichend Schwarzmarkt-Ansehen) verkauft Lageberichte (die fünf Machtwerte und welche Aktionen jede Fraktion aktuell starten kann, in CRT) sowie Insider-Tipps in drei Stufen (nur für bereits feststehende Fraktionsoperationen und die Miner-Ära; Trefferquote steigt mit jeder Stufe; Preis richtet sich nach der Marktgröße; manche Tipps sind Fälschungen und behaupten das Gegenteil der Wahrheit); auf die empfohlene Seite zu setzen, zählt als Insider-Wette. Die Marktgröße wächst mit fortlaufenden Tagen und eine falsche Wette verliert den gesamten Einsatz; setze daher nicht alles auf einen einzigen Markt.§Manipulationsprüfung: Deine großen Poinbase-Spot-Orders verzerren den Preis weg vom Niveau ohne deine Trades (die Verschiebung baut sich jede Nacht mit der Preisrückkehr ab; der Markthinweis zeigt dies). Übersteigt die Verschiebung {ManipFree:%} und du profitierst von der Kursbewegung (gewonnener PSC-Preismarkt in Richtung deiner Verschiebung oder ein in dieser Richtung mit Gewinn geschlossener Perpetual-Future), kannst du auffliegen: Je größer die Verschiebung, desto wahrscheinlicher (gedeckelt bei {ManipMax:%}). Bei Entdeckung erfolgt die Auszahlung dennoch: Eine Prognose-Auszahlung wird vollständig als kontaminierte Coins markiert; Perpetual-Gewinne verbleiben auf dem Konto und {PredictFraudShare:%} davon wird als Betrug erfasst (bis zu {PredictFraudCap}); die Zeitung berichtet über die Ermittlung.¶Erst shorten, dann dumpen ist keine sichere Sache: Slippage auf beiden Seiten bei Perpetual-Futures und der Hin- und Rückkauf am Spotmarkt kosten oft mehr, als der Short einbringt.§Schneeballsystem (Seite „Rendite“, Ausgabe; ab Spieltag {PonziMinDay}, einmal pro Spielstand): Wähle einen Tageszinssatz ({PonziRates[0]:%}-{PonziRates[4]:%}) und zahle die Marketingkosten zum Start (Start und Rug Pull sind Contract-Aufrufe, die auf der Wallet signiert werden); Bewohner der Unteren Ebene zahlen CRC je nach Zinssatz und Ansehen der Unteren Ebene ein; je höher der Satz, desto schneller kommen sie. Jede Nacht werden Zinsen zuerst aus neuen Einzahlungen bedient, danach aus der Emittenten-Wallet; reicht das Guthaben nicht, droht ein Bankrun und das System bricht zusammen; jede Nacht werden {PonziWithdraw:%} des Pools abgehoben, und je größer der Pool sowie je höher der Zinssatz, desto wahrscheinlicher eine Anzeige, die es ebenfalls zum Einsturz bringt. Bei Kollaps wird der Pool beschlagnahmt. Du kannst den Pool jederzeit per Rug Pull leerräumen (zweimal klicken zum Bestätigen): Er fließt in die Emittenten-Wallet und all diese CRC sind kontaminiert (vor der Einzahlung bei Poinbase waschen). Rug Pull und Kollaps erfassen Betrug als Vergehen und setzen dein Ansehen der Unteren Ebene zurück. Die Zeile „Straßengerüchte“ deutet das Melderisiko an.§Betrug: Wicks – An manchen Morgen schlägt der Kurs zur Eröffnung um {WickMin:%}-{WickMax:%} nach oben oder unten aus; meist korrigiert er sich noch am selben Abend, manche Ausschläge sind jedoch echt; der Perp-Markpreis berücksichtigt nur die Hälfte, also bei einem Wick nicht in Panik verkaufen.¶Airdrops (Web3-Airdrop-Seite) – Für jeden Airdrop muss zuerst die Wallet autorisiert werden (ein signierter Autorisierungsvertrag), danach wird das Beanspruchen signiert; prüfe vor der Autorisierung den Freigabeumfang: Echte Airdrops verlangen keine Freigabe oder nur eine minimale im zweistelligen Bereich; unbegrenzte Freigaben oder solche, die weit über der Belohnung liegen, sind Phishing – oft unter Nachahmernamen (0 statt o, 1 statt l) –, und ein bis zwei Nächte später wird der entsprechende Coin aus der Wallet entwendet. Freigaben werden rechts auf der Airdrop-Seite aufgeführt und können per Signatur widerrufen werden, wonach nichts mehr entwendet werden kann.¶Drittanbieter-Renditepools (Seite „Rendite“, Einzahlung) – {YieldRates[0]:%}-{YieldRates[2]:%} täglich; Reserve, Timelock und Audit sind einsehbar, nicht jedoch, ob es sich um Betrug handelt: Je höher der Zinssatz, desto wahrscheinlicher ein Rug Pull; Timelock und Audit verringern das Risiko; ein seriöser Pool schließt und erstattet das Kapital, wenn die Reserve keine Zinsen mehr zahlen kann – ein Betrugspool kann jede Nacht verschwinden. Auszahlungsdauer bei Pools mit Timelock: {YieldLockDays} Tage.¶Falscher Support – Jemand am Tresen gibt sich als Poinbase-Support aus und fordert dazu auf, CRC auf eine „sichere Adresse“ zu überweisen: Poinbase kommt nie vorbei und fordert niemals Überweisungen. Gefälschte Überweisungen – Kunden, die mit Coins zahlen und sagen „Bereits gesendet, hier ist der Screenshot, her mit der Ware“, zahlen nie; ehrliche Kunden erklären, dass die On-Chain-Bestätigung einen Moment dauert.§Charts: Auf der Poinbase-Spot-Seite und der Web3-Handelsseite kann zwischen den Tageskerzen aller Coins gewechselt werden (die Perp-Seite zeigt das aktuelle Produkt, Prognosen zeigen PSC), Grün steht für Anstieg und Rot für Rückgang; die gelbe Linie ist der 7-Tage-Durchschnitt (von der Perp-Finanzierungsgebühr genutzt); die Balken darunter zeigen das Volumen (Grau: Markt, Cyan: du selbst – Spot, DEX, Prägen/Verbrennen, Ponero-Swaps sowie Perp-Eröffnungen/-Schließungen zählen alle). Je größer die Kursbewegung, desto mehr handelt der Markt; Wicks hinterlassen lange Schatten.§Story-Verknüpfungen: Entscheidungen in den Handlungssträngen des Spiels verändern diesen Markt; die Zeitung berichtet am nächsten Tag darüber und der Markt braucht einige Tage, um zu reagieren. Serpicos Beweise an die Revolution: Die CRA-Reserve wird aufgestockt, die Kollapschance halbiert sich für {StorySecDays} Tg. und SPARK steigt um {StorySerpicoSpark:+%} über {StorySparkNights} Nächte; an den Schwarzmarkt: Die Wahrscheinlichkeiten für CRT-Depeg und Verrat halbieren sich; an Security: Für {StorySecDays} Tg. reinigt der Mixer schlechter (jede Runde ×{StorySecMixClean}), und Mixer-Sanktionen sowie Prüfungen auf Marktmanipulation sind strenger. Eleanor leakt das Laufwerk: Die Wahrscheinlichkeit einer Abschreibung der CRC-Verwahrstelle verdoppelt sich und SPARK steigt um {StoryLeakSpark:+%}; gibt sie es zurück: Die CRC-Depeg-Wahrscheinlichkeit halbiert sich. Officer Lun verhaftet: Für {StoryLunDays} Tg. sind Prüfungen auf Marktmanipulation strenger und mehr OTC-Kunden sind verdeckte Ermittler.¶Mixer-Betreiber Tumbler (nach Freischaltung des Mixers, ab Tag {TumblerMinDay}): Er kommt einige Male vorbei und bittet dich schließlich, ein Schlüssel-Laufwerk zu verstecken. Verstecken und zurückgeben: Mixer-Gebühren halbieren sich und das Anonymitätsset wächst, plus ein Geschenk; das Laufwerk ist jedoch Schmuggelware und wird in deiner Akte vermerkt, falls eine Durchsuchung es zwischenzeitlich aufspürt. Ihn melden: Kopfgeld und Security-Ansehen, und der Mixer schließt (Coins darin kommen zurück). An den Schwarzmarkt verkaufen: Eine Summe CRT (zur Hälfte kontaminiert) und Schwarzmarkt-Ansehen; danach steigen die Mixer-Gebühren und die Chance auf einen Rug Pull nimmt zu.¶Nach Tumbler: Zwischen seinem zweiten und dritten Besuch kommt ein Sicherheitsagent vorbei und fragt, ob er in deinem Laden war. Zugeben: Security-Ansehen +{TumblerAgentSecRep}; versteckst du das Laufwerk danach jedoch für ihn, durchsucht der Agent den Laden am Tag, bevor Tumbler es abholen will, konfisziert das Laufwerk und vermerkt Schmuggelware in deiner Akte, falls er es findet. Gelangt der Schlüssel zur Security (du meldest ihn, das Laufwerk wird beschlagnahmt oder du hast es bei seiner Rückkehr nicht mehr), werden die Mixer-Protokolle rekonstruiert: {PredictFraudShare:%} der von Mixer-Auszahlungen in den letzten {TumblerLeakDays} Tg. reingewaschenen Kontamination wird als Betrug in deiner Akte vermerkt (bis zu {PredictFraudCap}). Eine Meldung führt zum Prozess: Auf dem Prognosemarkt kannst du auf das Urteil wetten, und die Zeitung berichtet täglich über die Verhandlungen; wird er freigesprochen, rächt er sich. Hast du das Laufwerk verkauft, vollzieht der Schwarzmarkt {TumblerBmRugMin}–{TumblerBmRugMax} Tg. später einen Rug Pull, alle Coins im Mixer-Transfer gehen verloren und er rächt sich ebenfalls. Verstecke das Laufwerk und gib es zurück, dann warnt er dich in der Nacht vor einer Security-Razzia. {TumblerRebrandDays} Tg. nach Abschaltung des Mixers geht er unter neuem Namen wieder online; einige davon sind Security-Honeypots, und jeder daraus abgehobene Coin kommt vollständig kontaminiert zurück. Vorsicht vor auffällig niedrigen Gebühren.§Mixer und Privacy Coin: Coin, Betrag und Runden wählen; jede Runde kostet eine Gebühr und reinigt einen Teil der kontaminierten Coins, Runden entsprechen Tagen an Wartezeit, und die Coins kehren an dieselbe Adresse zurück; je mehr eingezahlt wird, desto schlechter die Reinigung. Während Razzien kann der Mixer sanktioniert werden; in dieser Zeit fällige Auszahlungen werden nicht gereinigt und kommen vollständig kontaminiert zurück.¶Privacy-Coin-Tausch (Web3-Handelsseite, erfordert Schwarzmarkt-Ansehen): Ponero ist ein Privacy Coin; eingetauschte kontaminierte Coins verschwinden einfach und die erhaltenen Ponero sind sauber; {PoneroFee:%} Gebühr je Richtung, und Zu- wie Rücktausch teilen sich ein tägliches Limit von {PoneroDailyCap} Credits.§OTC-Kunden (Netzwerk-Upgrade „OTC-Schalter“): Die Schwarze Lampe erhält ein weiteres Ziel: OTC-Kunde (Doppelklick auf die Lampe zum Umschalten). Sie leuchtet nur in der Vitrine und zieht Personen wie die ursprüngliche Schwarze Lampe an, basierend auf der Lampenanzahl und deinem Schwarzmarkt-Ansehen; das Upgrade enthält eine Lampe. Die Hälfte der Kunden möchte dir Coins verkaufen, die andere Hälfte Coins von dir kaufen, stets gegen Bargeld. Sobald der Kunde sein Angebot nennt, wähle Am Terminal verhandeln: Das Terminal öffnet die Schalter-Handelsseite, während der Kunde am Schalter wartet. Du kannst auch nur einen Teil des Handels annehmen, zu 25 % / 50 % / 75 % / 100 % oder über einen eingegebenen Betrag, wobei das Bargeld entsprechend skaliert; wähle Passen oder schicke den Kunden weg, um abzulehnen. Das Handelsvolumen steigt mit der Miete.¶Verkaufende Kunden: Bei Abschluss zahlst du Bargeld und die Coins gehen direkt in die verbundene Wallet. Passiert etwas auf der Station, stammen die Coins meist daraus: CRT während eines Bandenkriegs oder einer Razzia, PSC bei einem Überfall der Revolution auf die Obere Ebene oder bei Unruhen auf der Unteren Ebene – ausnahmslos kontaminiert. Andernfalls handelt es sich zufällig um PSC, CRT oder CRA, wovon {OtcTaintMin:%}–{OtcTaintMax:%} kontaminiert sind; je kontaminierter die Coins, desto günstiger sind sie (der Preis fällt von {OtcCutClean:%} auf {OtcCutDirty:%} des Werts). Der Kunde verrät nicht, wie kontaminiert die Coins sind: Die Handelsseite zeigt seine Adresse, und Nachschlagen öffnet ihren Verlauf im Explorer; je mehr davon aus dem Mixer, der Schwarzmarkt-Plattform oder von Betrugsadressen stammt, desto kontaminierter. Sobald der Ponero-Schalter geöffnet ist, verkauft gelegentlich jemand Ponero – diese tragen keinerlei Kontamination, kosten jedoch mehr. Hin und wieder ist der Kunde ein verdeckter Ermittler: Nimmst du den Handel an, verlierst du das Bargeld und Hehlerei wird in deiner Akte vermerkt – während einer Razzia noch häufiger.¶Kaufende Kunden: Sie können jeden beliebigen Coin nachfragen und bieten den Marktpreis plus einen zufälligen Aufschlag (von {OtcBidMin:+%} bis {OtcBidMax:+%} des Marktpreises, kann also auch darunter liegen); ob sich der Verkauf lohnt, liegt bei dir. Bei Abschluss öffnet sich PLEDGER mit bereits ausgefüllter Adresse und Betrag; signiere und warte auf Bestätigung – sobald sie eintrifft, zahlt der Kunde bar und geht. Verlässt der Kunde das Geschäft, bevor du signierst, ist der Handel ungültig. Von dir verkaufte Coins werden nicht auf Kontamination zurückverfolgt.¶Eigener Mixer (Graunetz-Seite, enthalten beim OTC-Schalter): Mit Kapital ausstatten und eröffnen; Kunden zahlen kontaminierte Coins ein und nach einigen Tagen werden sie ausgezahlt, während du die Gebühr behältst. Jede Runde wäscht einen Teil der Kontamination entsprechend dem Anonymitätsset ab, welches hauptsächlich aus deinem Kapital und nicht abgehobenen Einnahmen besteht (Coins von Kunden im Transfer zählen nur teilweise); eine höhere Kapitalisierung wäscht also sauberer. Kunden vergleichen die Gebühr plus die bei Auszahlungen verbleibende Kontamination mit Tumblers Mixer und wählen die günstigere Option; ein höheres Schwarzmarkt-Ansehen lockt mehr Kunden an; das angezeigte Ansehen entspricht der kürzlich bei Auszahlungen verbliebenen Kontamination. Gebühreneinnahmen verbleiben im Pool und sind bei Entnahme vollständig kontaminiert; das Kapital kehrt mit seinem eigenen Anteil kontaminierter Coins zurück. Mehr Zulauf steigert das Aufsehen (ein größerer Pool verschleiert Coins etwas besser, zieht aber auch mehr Zulauf an, erregt also insgesamt mehr Aufmerksamkeit) und damit die Chance auf eine Security-Razzia: Kapital, Einnahmen und Kunden-Coins werden vollständig beschlagnahmt, Hehlerei wird in der Akte vermerkt und der Mixer wird für {OwnMixSeizeDays} Tg. geschlossen. Hin und wieder zahlt in einer aktiven Nacht ein verdeckter Ermittler ein, was ebenfalls als Hehlerei vermerkt wird. Du kannst jederzeit einen Rug Pull durchführen: Alles, einschließlich der Kunden-Coins, geht vollständig kontaminiert an dich, Betrug wird in der Akte vermerkt, das Schwarzmarkt-Ansehen sinkt und der Mixer schließt für immer.§Kontamination: In jeder Wallet wird für jeden Coin erfasst, wie viele Einheiten davon kontaminiert sind (einsehbar in den Guthaben auf der Seite „Wallets“ und auf dem PLEDGER). Kontaminierte Coins stammen von OTC-Kunden, die an dich verkaufen, von mit Coins zahlenden Kunden (anhand der Hitze des Diebesguts), aus Graunetz-Verkäufen von Diebesgut, Insider-Wetten und Marktmanipulation im Prognosemarkt, dem Abschöpfen aus einem Schneeballsystem, Einnahmen aus dem eigenen Mixer, den CRT aus dem Verkauf des Schlüssel-Laufwerks sowie markierten Mixer-Auszahlungen. Kontamination existiert nur in Web3-Wallets: Beim Ausgeben, Versenden oder Zahlen von Gebühren werden kontaminierte Coins proportional zum Kontaminationsanteil dieser Coin abgezogen; beim Tauschen überträgt sich dieser Anteil auf die erhaltene Coin (werden zu 60 % kontaminierte CRT in PSC getauscht, sind 60 % der PSC kontaminiert); Ponero trägt keine Kontamination. Poinbase akzeptiert nur saubere Coins: Pro Coin kann maximal der saubere Betrag eingezahlt werden, während die kontaminierten in der Wallet verbleiben; somit führen das Poinbase-Konto und die Bank stets nur sauberes Geld, und Auszahlungen an die Bank werden nicht überprüft – es fallen lediglich {ExchangeFee:%} Gebühren sowie {TaxRate:%} Steuern auf Gewinne über den Anschaffungskosten an. Das Senden sauberer Coins in eine Wallet macht die kontaminierten nicht sauber. Möglichkeiten, kontaminierte Coins loszuwerden: der Mixer, der Ponero-Tausch, der Verkauf von Coins an kaufende OTC-Kunden (verkaufte Coins werden nicht zurückverfolgt) und das Bezahlen im Web3-Shop.¶Vor dem Zerstören einer Wallet müssen Coins selbst transferiert sowie Positionen und Einzahlungen vorab abgehoben werden: Was darin verbleibt, geht mit der Wallet verloren." courier.odd1,...Paket ist da. courier.odd2,(Seine Hand bleibt in der Tasche.) Hier unterschreiben. courier.sign,Unterschreiben @@ -362,10 +360,11 @@ hw.wallet.n,Wallet {0} hw.review.own,Eigene Wallet: {0} hw.review.poinbase,Poinbase-Einzahlungsadresse poin.deposit,Einzahlungsadresse: {0} +poin.deposit.clean,In {0} einzahlbare saubere Coins: {1} wallets.count,Wallets {0}/{1} wallets.col.name,Name wallets.col.addr,Adresse -wallets.col.taint,Kontamination +wallets.col.taint,Kontaminiert wallets.open,Öffnen wallets.use,Verbinden wallets.current,Verbunden @@ -379,6 +378,7 @@ hw.paste,Einfügen hw.copied,Adresse kopiert. hw.copied.addr,{0} kopiert hw.balance.frozen," (gefroren {0})" +hw.balance.dirty," ({0} kontaminiert)" wallets.destroy,Zerstören wallets.destroy.sure,Bestätigen wallets.destroyed,{0} zerstört: {1} @@ -550,7 +550,7 @@ predict.purity.rust,Wasser (Obere Ebene) nightlog.predict.win,"Prognose richtig: „{0}“, {1} ausgezahlt." nightlog.predict.lose,"Prognose falsch: „{0}“, Einsatz {1} verloren." nightlog.predict.void,"Prognose ungültig: „{0}“, Einsatz {1} erstattet." -nightlog.predict.insider,"""{0}"" mit {1} abgerechnet. Die Polizei vermutet Insiderhandel; die Auszahlung wird markiert und die Kontamination der Wallet steigt um {2}." +nightlog.predict.insider,"""{0}"" für {1} abgerechnet. Die Polizei vermutet Insiderhandel; {2} CRC davon werden als kontaminiert markiert." predict.tab.markets,Märkte predict.tab.intel,Informationen predict.acct.crt,{0}: CRT {1} @@ -593,11 +593,10 @@ predict.brief.queued,{0}: Operation geplant predict.brief.none,{0}: Keine Operation möglich predict.brief.can,{0}: Kann {1} starten predict.clue.push,Preis um {0}% bewegt: hohes Manipulationsrisiko -nightlog.predict.manip,"""{0}"" mit {1} abgerechnet. Die Aufsichtsbehörden vermuten Marktmanipulation; die Auszahlung wird markiert und die Kontamination der Wallet steigt um {2}." +nightlog.predict.manip,"""{0}"" für {1} abgerechnet. Die Aufsichtsbehörden vermuten, dass du den Preis manipuliert hast; {2} CRC davon werden als kontaminiert markiert." news.manip.title,Börse untersucht ungewöhnlichen Handel news.manip.desc,"Die Aufsichtsbehörden melden, dass jemand den Preis mit großen Spot-Orders bewegt und aus Derivaten sowie Prognosen profitiert hat; die betroffenen Konten wurden markiert." -taint.overflow,Die Kontamination übersteigt nun den Wert der Wallet; der Überschuss von {0} wird als Betrug erfasst. -perp.manip,Mit Gewinn von {0} geschlossen. Die Aufsichtsbehörden vermuten Marktmanipulation; der Gewinn wird markiert und die Kontamination des Poinbase-Kontos steigt um {1}. +perp.manip,Mit Gewinn von {0} geschlossen. Die Aufsichtsbehörden vermuten Marktmanipulation; Betrugsbeweise in deiner Akte: {1}. web3.sub.ponzi,Rendite ponzi.h,Schneeballsystem ponzi.acct,Emittenten-Wallet {0}: CRC {1} @@ -688,7 +687,7 @@ scam.support.name,Poinbase-Support scam.support.1,"Hallo, hier ist der Poinbase-Support. Wir haben eine ungewöhnliche Anmeldung in Ihrem Konto festgestellt und es wurde markiert." scam.support.2,Bitte senden Sie heute {0} CRC zur Verifizierung an die sichere Adresse {1}; der Betrag wird direkt im Anschluss zurückerstattet. scam.support.3,"Andernfalls wird das Konto dauerhaft gefroren. Ich muss los, denken Sie an die Überweisung." -predict.sold.caught,"Verkauft, {0} erhalten. Die Polizei vermutet Insiderhandel; der Erlös wird markiert und die Kontamination der Wallet steigt um {1}." +predict.sold.caught,"Verkauft, {0} erhalten. Die Polizei vermutet Insiderhandel; {1} CRC davon werden als kontaminiert markiert." predict.row.move," (letzte Nacht {0} {1})" predict.stats.h,Verlauf (durchschnittl. Eröffnungskurs / tatsächliche Quote) predict.stats.row,"{0}: {1} Märkte, Eröffnungsschnitt {2}, eingetreten {3}%" @@ -711,7 +710,7 @@ news.story.serpico_rev.desc,"Die Revolution hat Berichten zufolge Beweise für i news.story.serpico_bm.title,Schwarzmarkt trifft stille Vereinbarung news.story.serpico_bm.desc,"Ein internes Security-Dokument wechselte auf dem Schwarzmarkt den Besitzer. Die Abrechnung im Darknet läuft seither spürbar stabiler, und CRT-Einlösungen liefen ausnahmslos reibungslos." news.story.serpico_sec.title,Security leitet interne Säuberung ein -news.story.serpico_sec.desc,"Die Security kündigte eine umfassende Untersuchung interner Korruption und eine strengere Überwachung von Geldflüssen an. Poinbase verschärft Auszahlungsprüfungen, und Mixer-Dienste wurden namentlich genannt." +news.story.serpico_sec.desc,Security kündigte eine umfassende Untersuchung interner Korruption und eine strengere Überwachung der Geldströme an; Mixer-Dienste wurden namentlich genannt. news.story.eleanor_leak.title,Zuchtdaten der Nährfrucht durchgesickert news.story.eleanor_leak.desc,"Die Zeitung der Unteren Ebene veröffentlichte Forschungsergebnisse, mit denen die Nährfrucht wieder Samen bilden kann; Pastelle-Aktien stürzten ab. Die Depotbank für Gelder der Oberen Ebene meldet faule Kredite, und die Revolution gewinnt an Auftrieb." news.story.eleanor_return.title,Pastelle stellt gestohlene Daten sicher @@ -772,7 +771,7 @@ agent.search.none,... Nichts. Entschuldigung für die Störung. tumbler.v4.seized.1,"Ich habe gehört, die Security hat deinen Laden durchsucht." tumbler.v4.seized.2,Sie haben jetzt den Schlüssel. Die Aufzeichnungen aller Nutzer werden aufgedeckt. tumbler.v4.seized.3,"Was auch immer du ihnen erzählt hast, ich will es gar nicht mehr wissen." -nightlog.tumbler.leak,"Die Security nutzte Tumblers Signaturschlüssel, um die Mixer-Aufzeichnungen zu rekonstruieren: Die bei Auszahlungen ({0}) reingewaschene Kontamination ({1}) wurde den Wallets wieder zugeschrieben." +nightlog.tumbler.leak,Security nutzte Tumblers Signaturschlüssel zur Rekonstruktion der Mixer-Aufzeichnungen: Auszahlungen: {0} ({1} Kontamination reingewaschen); Betrugsbeweise in deiner Akte: {2}. nightlog.tumbler.leak.none,"Security hat Tumblers Signaturschlüssel verwendet, um die Mixer-Aufzeichnungen zu rekonstruieren. Du hast in letzter Zeit nichts aus dem Mixer abgehoben." nightlog.tumbler.note,"Ein Zettel wurde unter der Tür durchgeschoben: ""Du schuldest mir was, und ich hole es mir zurück. —T""" nightlog.tumbler.tip,Nachricht von Tumbler: Die Security geht morgen womöglich gegen die Mixer-Dienste vor. @@ -1038,7 +1037,7 @@ otc.cancel,Passen otc.msg.gone,Der Kunde ist gegangen. otc.msg.cash,Nicht genug Bargeld. otc.msg.sting,"Der Kunde war ein verdeckter Ermittler: {0} Bargeld beschlagnahmt, Hehlerei erfasst." -otc.msg.bought,"{0} {1} erhalten, {2} Bargeld gezahlt." +otc.msg.bought,"{0} {1} erhalten ({3} davon kontaminiert), {2} in bar gezahlt." otc.msg.sold,"{0} {1} gesendet, {2} Bargeld erhalten." gray.sub.own,Eigener Mixer ownmix.h,Eigener Mixer @@ -1088,3 +1087,4 @@ otc.nocash,Du hast nicht mal das Bargeld? Vergiss es. otc.nowallet,"Keine Wallet verbunden, wohin sollen die Coins? Vergiss es." otc.sting,"Keine Bewegung. Security. Ankauf gestohlener Gelder: Das Bargeld wird beschlagnahmt, und das kommt in deine Akte." hw.err.poinbase,Poinbase nimmt kein {0} an. +hw.err.tainted,{0} der {1} dieser Wallet sind kontaminiert und Poinbase akzeptiert nur saubere Coins: maximal {2} {1}. diff --git a/src/Decentralized/ModFiles/Localization/en.csv b/src/Decentralized/ModFiles/Localization/en.csv index 0df737c..860bb66 100644 --- a/src/Decentralized/ModFiles/Localization/en.csv +++ b/src/Decentralized/ModFiles/Localization/en.csv @@ -22,7 +22,7 @@ tab.report,Report wallet.line,{0}: {1} (about {2} credits) wallet.empty,The wallet is empty. wallet.total,Total value: {0} credits -wallet.taint,Tainted value: {0} credits +wallet.taint,Dirty coins: {0} credits trade.amount,Amount trade.deposit,Deposit credits as CRC trade.withdraw,Withdraw CRC as credits @@ -38,8 +38,6 @@ msg.balance,Not enough balance. msg.trade,"Paid {0} {1}, received {2} {3}." msg.deposit,Deposited {0} credits as CRC. msg.cashout,Received {0} credits. Tax {1} credits. -msg.aml_light,Compliance review: {0} credits of tainted funds were withheld. -msg.aml_heavy,Compliance review: {0} credits of tainted funds were seized and reported to Security. report.none,No mining report yet. report.day,Night of day {0} report.rigs,Rigs with power: {0} of {1} @@ -141,6 +139,7 @@ col.asset,Asset col.amount,Amount col.value,Value col.avg,Avg. buy +col.dirty,Dirty bank.cash.k,Credits bank.rent.k,Rent bank.rent.v,"{0}, due in {1} days" @@ -152,13 +151,12 @@ stable.ok,Pegged stable.depeg,Depegged stable.warn,Warning: staking reserve coverage low stable.spiral,Collapsing -aml.taint,Account taint share: {0}% mixer.h,Mixer mixer.ok,Status: operating normally -mixer.sanctioned,Status: sanctioned ({0} more day(s)). Coins withdrawn meanwhile are flagged. +mixer.sanctioned,Status: sanctioned ({0} more day(s)). Payouts due meanwhile are not cleaned and come back all dirty. mixer.pending,Pending deposits mixer.none,No pending deposits. -mixer.col.taint,Taint +mixer.col.taint,Dirty mixer.col.ready,Ready mixer.day,Day {0} mixer.deposit,Deposit @@ -169,12 +167,12 @@ mixer.go,Deposit to mixer mixer.min,Deposits must be worth at least {0} credits. mixer.done,Deposited {0} {1}; back on day {2}. mixer.upgrade.title,Mixer -mixer.upgrade.desc,"Unlocks the mixer in the terminal's Gray Net 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." +mixer.upgrade.desc,"Unlocks the mixer in the terminal's Gray Net page: deposit dirty coins, get them back days later with fewer of them dirty. During crackdowns the mixer may be sanctioned, and payouts due meanwhile come back all dirty." 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 dirty money. nightlog.mixer,Mixer returned {0} {1}; taint {2} -> {3}. -nightlog.mixer_flag," (withdrawn during sanctions; address flagged)" -nightlog.mixer_flag.trap," (the withdrawal address is flagged)" +nightlog.mixer_flag," (withdrawn during sanctions; all of it marked dirty)" +nightlog.mixer_flag.trap," (Security marks the withdrawn coins as dirty)" nightlog.mixer_rug,The mixer's operator ran off with it: {0} {1} never came back. web3.sub.trade,Trade gray.sub.mixer,Mixer @@ -249,7 +247,7 @@ black.kind.Contraband.3,Contraband (high) black.kind.Tech,High-tech (markup) nightlog.bm.ready,Black market: {0} arrived; a courier will come by once you open. guide.web3.title,Web3 Handbook -guide.web3.text,"Bank and trading: the Bank page is read-only and shows cash, rent and the CRC in your Poinbase account. Poinbase's Funds page handles deposits and withdrawals; pick the coin first: CRC can go through the bank account or a wallet, every other coin only through a wallet. Depositing from the bank turns credits into CRC in your Poinbase account; withdrawing to the bank turns CRC back into credits and goes through compliance screening, which looks at the Poinbase account's taint. Withdrawing to a wallet needs a payee address and a few confirmations before it arrives; the gas fee is fixed at the normal tier and taken from the coin sent. A wrong address format or checksum is rejected; a correctly formatted address nobody uses means the coins are gone.¶Trading: PSC stands for Probably Stolen Coin, the coin mined by GPUs and miners. Poinbase spot has two pairs, PSC/CRC and SPARK/CRC, following the coin picked on the chart. Buys and sells are both entered as an amount of the traded coin; the preview shows the quote coin paid or received, the average price includes the fee and the slippage does not.¶The Web3 trade page can swap any two coins, always through CRC: with CRC on one side it uses one pool, otherwise two pools, with two fees and stacked slippage; the preview shows the amount received, the pools crossed and the loss. Stablecoin swaps (CRT or CRA against CRC) use stable pools: a {StableFee:%} fee and almost no slippage near the peg; during a depeg liquidity thins, and in a collapse it is pulled and slippage jumps.§Hardware wallets: on-chain coins sit in PLEDGER hardware wallets, each with its own balances and taint. A wallet is an item: drag it onto the trading terminal to load it. Open it on the terminal's Wallets page; connect and disconnect at the top right of the terminal. Trading on the Web3 page and the shop and mixer on the Gray Net page use the connected wallet; with no wallet or no connection they are view-only and every balance reads 0. Coin-paying customers pay into the connected wallet.¶Payments (shop, mixer, Ponero desk, listing fees) start as an invoice on the terminal; type the payee address on the wallet and hold ✓ to sign. The last two characters of an address are a checksum, so a one-character typo is usually caught; once in a while it happens to be valid and the coins go to an address nobody uses. DEX swaps also need a signature on the wallet.¶Poinbase is a custodial account; deposits are sent from a wallet to Poinbase's deposit address (only PSC, CRC and SPARK; the compliant exchange takes neither the black market's CRT nor the Revolution's CRA, and the wallet blocks sending them to the deposit address) and withdrawals are started on Poinbase's Funds page. The Explorer on the Wallets page looks up transfers by address and shows only transfers that really happened: every movement in and out of your wallets (transfers, DEX swaps and other contract calls, miner payouts, withdrawals, coins others send you); Ponero is a privacy coin and never shows. More hardware wallets are sold by Dr. Jackson; drag one onto the trading terminal to add it, up to {WalletMax}. The shop has cheaper ones. A wallet you no longer want can be destroyed on the Wallets page; its coins are lost for good, and anything sent to its address afterwards is lost too.¶Transfers pay a gas fee: slow, normal or fast, and gas prices rise and fall over roughly a week; when the network is congested gas fees rise and slow transactions may be dropped from the mempool. Check the full address before sending.§Staking: CRA staked in the Revolution pool earns a daily rate that compounds into the stake; withdrawing means requesting first and waiting four days, with no interest while waiting and no way to take it early. CRA is partly collateralized: each CRA is backed by the CRC reserve the Revolution holds and by the balance token SPARK; reserve coverage and the collateral ratio are shown on the staking page. Interest is paid in new uncollateralized CRA, which dilutes reserve coverage, faster the more is staked; when coverage is too low the Revolution cuts the rate. The Revolution sometimes diverts the reserve, preceded by rumors: that is the warning. If coverage then falls below {CraCrashRatio:%} it collapses: CRA is worthless within three days and four days of unlocking is too slow; above that there is only a discount, and money from raiding the upper class slowly refills the reserve.¶Official minting: deposit CRC and SPARK (ratio per the current collateral ratio; the preview shows what is needed) to mint CRA, queued {CraMintDaysMin}-{CraMintDaysMax} days; the minted CRA goes straight into staking. Burning turns CRA back into CRC and SPARK, waiting as long as the unlock period; when the reserve is short the CRC share is cut by coverage. Queued mints and burns may be dishonored in full by the Revolution: the nightly chance is how far the CRA price is below 1 times {CraRugPerDepeg}; if the price is not below 1 it cannot happen.¶Staking accepts CRA, CRC, CRT and SPARK: the last three are first swapped into CRA on the secondary market at the going price (through CRC, with fees and slippage). SPARK's price swings hard and crashes with the collapse. Staking, minting and burning are contract calls and need a signature on the wallet.§Miners: RatDigg miners (M1 / M2 / M3) are standalone machines with far more hash than a card and a lower power draw per hash; they need a battery, take modules and use no rig slots. Only the shop's miner dealers sell them, gated by black-market standing (M1 {AsicRepM1}, M2 {AsicRepM2}, M3 {AsicRepM3}), sometimes second-hand. When one burns out, repair it by dragging electronic components onto it in order; it comes back {AsicRepairHealthCut} health lower. Somewhere between day {EraMin} and day {EraMax} a ""miner era"" arrives, announced in the paper a few days earlier: the big farms halve their power costs, network hash climbs, GPU miners are diluted and low-end cards barely earn, while miners still do fine.¶Payout address: each miner (rigs and ASIC miners) has a payout address set in its own window; its mining output is sent there every night in proportion to hash power, so two miners can pay two different addresses. It starts unset; with no address, or a wallet that has been destroyed, that share is lost, so change the address when you change wallets.¶Turbo boosters work on rigs and miners with the same rules as other machines: each use runs one extra cycle, which means mining one night right away. The cycle draws a night's power, its output is based on the current network hash and goes to that machine's payout address, and it counts one round of wear and sudden-death checks; the machine still mines as usual that night.§Perps: the Perps tab on Poinbase uses your account CRC as margin, up to {PerpPscLev}× on PSC and {PerpSparkLev}× on SPARK, isolated margin only, a single position at a time (never long and short at once); to add to it, top up the margin. Fills are worse than the quote (more so for bigger orders, like the spot pool) and opening and closing both cost a fee. Liquidation is checked only overnight against the day's average price: equity under {PerpMaint:%} of notional wipes the margin. There is also a nightly funding payment; when the price is above its 7-day average, longs pay shorts.¶Other traders' positions get liquidated with the market too: most liquidations leave margin that goes to the insurance fund, and the faster the move the more of them go bankrupt, with the fund covering the gap; after a big one-day move the newspaper reports how many traders were liquidated and for how much (your position included). If a liquidation loses more than the margin, the insurance fund covers the gap; when it runs dry (only an extreme, market-wide wave of bankruptcies does that) winning positions are auto-deleveraged and give up half their profit; anything beyond that becomes your debt. Debt grows {PerpDebtInterest:%} a day, is repaid first from CRC in the account every night, blocks new positions and cash-outs, and after {PerpDebtDays} days items in your shop are seized to cover it; whatever is still short is written off and the perp account is banned for {PerpBanDays} days.§Shop: coin only, no CRC, {BmPremium:%} above normal channels, with extra markup on high-tech goods and GPUs; the coin you pay leaves its share of taint with the seller and the goods carry no stolen tag; GPUs may be fake, inspect them yourself.¶Shop purchases: pick a seller on the left, the shelf is on the right, and after 'Buy' the payment panel sets quantity, payment method and coin. Each kind of seller takes different coins: hardware and tech take PSC and CRT; arms, drugs, chemicals, documents, luxury and personal sellers take CRT and the privacy coin; farming, husbandry, water and brewing take PSC and CRA; platform spot takes PSC, CRT and CRA. If you lack a coin the seller takes you can use the built-in auto-convert: it swaps from another coin in the wallet at an {BmAutoSwapSlip:%} slippage and signs once; or swap on the DEX yourself first, with far less slippage but an extra step. Listing fees pick a coin at payment time too.¶Shop cart: 'Buy' on a shelf adds to the cart; the floating cart at the bottom right shows the count and opens checkout. Checkout shows the cart on the left (grouped by seller, quantities adjustable, items removable, escrow or advance release for sellers that allow it) and payment on the right: each seller has a different payee address, so you pay seller by seller - pick a coin that seller takes, create an invoice and transfer from the wallet; or auto-convert from another coin in the wallet ({BmAutoSwapSlip:%} slippage extra) and sign once for that seller.§Orders and selling: Orders are cheaper than spot but take days and may be intercepted; merchants sell by type at their own price factor, {BmBulk1Count}+ items get {BmBulk1Discount:%} off and {BmBulk2Count}+ get {BmBulk2Discount:%} off, and a bulk merchant appears at random with the lowest prices but {BmBulkDays} days of waiting; escrow costs {BmEscrowFee:%}, is released on delivery and refunded if the seller runs; advance release takes another {BmAdvanceDiscount:%} off, but a scammer keeps the money and only sellers with {BmAdvanceMinTrades}+ trades accept; the platform itself can rug, be taken over by enforcement, or a seller can be arrested, after which your orders get traced and crime logged; forum rumors can be warnings. An intercepted parcel sometimes turns into enforcement at your door: signing logs the crime on the spot and seizes the goods, refusing only costs the payment.¶Selling: on the shop's Sell tab, list contraband, high-tech goods and GPUs from storage at {BmSellMin}x to {BmSellMax}x the reference price. The higher the multiplier, the slower the sale (below {BmSellFastMult}x about {BmSellDaysFast} day, {BmSellDay1Mult}x about {BmSellDays1}, {BmSellMax}x about {BmSellDaysMax}), and the likelier and larger the taint on the payout, which also grows with how much you sold in the last 7 days; stolen goods taint the payout by their stolen heat (payout × heat%); the Sell tab opens on your showcase of listed goods, and “Add listings” stages more: identical goods are grouped, the − and + keys set the quantity, the multiplier is picked on the left, and goods are listed only after you pay the listing fee with the Shelf button; all units of one item share one multiplier, so to change it take them all down first; up to {BmMaxKinds} kinds at once and {BmMaxStack} of each, {BmListFee:%} listing fee per unit; goods can be taken down from the showcase and return to storage, the fee is not refunded; “Accepted coins” on the showcase chooses which coins you take: every extra coin adds one more sale roll each night (in random order, with a different number of buyers per coin), so accepting more coins sells faster, and the payout arrives in the coin of the winning roll; {BmCommission:%} commission, payout held {BmSaleHold} days before reaching your wallet; a fake card may be spotted and returned, hurting your rating; if the platform rugs, listed goods and unreleased payouts are gone.§Prediction markets (Web3 Predict page, from game day {PredictUnlockDay}): each market is a yes/no question about things the game itself rolls or schedules: a news event appearing, a faction operation starting, tomorrow's water purity, the PSC price. A market is open until its window starts and settles on the night of the window's last day. Buy Yes or No with CRC from your on-chain wallet (a contract call: sign on the wallet; the position belongs to the signing wallet); the price is the market's implied probability and rises as you buy; each winning share pays 1 credit; {PredictFee:%} fee on each trade; each market has a position limit. Winnings inherit the taint ratio of the stake.¶Rumor slips and faction perks can tell you ahead of time that something will happen; betting Yes on such a market is an insider bet. Insider bets pay out as usual, but the police suspect insider trading: at settlement or on sale, the payout for the insider shares is marked as taint on the receiving wallet. If game data is missing for the window (for example you skipped the nightly settlement), the market is void and the stake is refunded.§Prices react to news: each night every open market moves halfway toward the fair probability given public information, plus some noise; so whoever reads the paper, a rumor slip or a faction perk first can buy ahead and sell after the move instead of waiting for settlement. The clue list in a market panel shows what you know about it: schedules, cooldowns, the halving day, recent gas values, the CRA reserve level, ASIC-era announcements.¶Patterns you can work out: faction operations are triggered by hidden power values at thresholds (for example a crackdown needs security >= 20 and black market >= 40, and drops security by 20); gas runs on a seven-day cycle; the price anchor ramps up the week before a halving; scheduled crackdowns and blackouts move the anchor but the market price does not reflect them ahead of time; the faster the reserve drains (the more is staked) the earlier CRA warns; the PSC price market can be moved by your own big orders. The intel broker (needs enough black-market standing) sells a situation brief (the five power values and what each faction can launch now, in CRT) and three grades of insider tip (only for faction operations and the ASIC era, which are already decided; accuracy rises with each tier; priced by market size; some tips are fake and say the opposite of the truth); betting the tipped side counts as an insider bet. Market size grows with the day and a wrong bet loses the whole stake, so do not put everything on one market.§Manipulation checks: your big Poinbase spot orders push the price away from where it would be without you (the push decays nightly with the price reversion; the market clue shows it). Once the push exceeds {ManipFree:%}, if you profit from the price (a PSC price market won in the direction you pushed, or a perp closed at a profit in that direction) you may be caught: the bigger the push the likelier (capped at {ManipMax:%}). When caught, the payout still goes through: a prediction payout becomes taint on the wallet, a perp profit becomes taint on the Poinbase account, and the paper reports the investigation.¶Taint cannot exceed the wallet's value at that moment: when taint is added, the excess goes on record as fraud at {PredictFraudShare:%}, up to {PredictFraudCap} each time. Insider bets and manipulation both follow this rule. Short-then-dump is not a sure thing: perp slippage on both sides and the spot round trip often cost more than the short earns.§High-yield scheme (Yield page, Issue; from game day {PonziMinDay}, one per save): pick a daily rate ({PonziRates[0]:%}-{PonziRates[4]:%}), pay the marketing cost to launch (launching and rugging are contract calls signed on the wallet), and lower-level people deposit CRC by rate and lower-level standing; the higher the rate the faster they come. Each night interest is paid first from new deposits, then from the issuer wallet; if you cannot cover it there is a run and the scheme collapses; {PonziWithdraw:%} of the pool is withdrawn each night, and the bigger the pool and the higher the rate the likelier a report, which also collapses it. On collapse the pool is confiscated. You can rug the pool any time (click twice to confirm): it goes to the issuer wallet fully tainted (launder it before cashing out). Rugging and collapse both put fraud on record and wipe your lower-level standing. The word-on-the-street line hints at the report risk.§Scams: wicks - some mornings the price is slammed {WickMin:%}-{WickMax:%} up or down at open; most of it reverts that night, but some are real; the perp mark price only takes half, so do not panic-sell into a wick.¶Airdrops (Web3 Airdrops page) - each airdrop needs the wallet authorized first (one signed authorization contract), then a signed claim; check the approval scope before authorizing: real airdrops need no approval or a small one of a few dozen; an unlimited approval, or one far larger than the reward, is phishing, often under a lookalike name (0 for o, 1 for l), and a night or two later that coin is taken from the wallet. Approvals are listed on the right of the Airdrops page and can be revoked with a signature, after which nothing can be taken.¶Third-party yield pools (Yield page, Deposit) - {YieldRates[0]:%}-{YieldRates[2]:%} a day; you can see the reserve, whether there is a timelock and an audit, but not whether it is a scam: the higher the rate the likelier a rug, a timelock and an audit make it less likely; an honest pool closes and returns principal when its reserve cannot pay interest, a scam pool can vanish any night. Timelocked pools take {YieldLockDays} days to withdraw.¶Fake support - someone at the counter claiming to be Poinbase support asks you to move CRC to a ""safe address"": Poinbase never visits and never asks you to transfer. Forged transfers - a coin-paying customer who opens with ""already sent, here's the screenshot, hand it over"" never pays; honest ones say it takes a moment to confirm on chain.§Charts: the Poinbase spot page and the Web3 trade page can switch between daily candles of every coin (the perp page shows the current product, predictions show PSC), green up and red down; the yellow line is the 7-day average (perp funding uses it); the bars below are volume (grey the market, cyan you: spot, DEX, mint/burn, Ponero swaps and perp opens/closes all count). The bigger the move the more the market trades; wicks leave long shadows.§Story links: choices in the game's storylines change this market; the paper reports them the next day and the market takes a few days to react. Serpico's evidence to the Revolution: the CRA reserve is topped up, the collapse chance halves for {StorySecDays} days and SPARK rises {StorySerpicoSpark:+%} over {StorySparkNights} nights; to the black market: CRT depeg and sell-out chances halve; to Security: for {StorySecDays} days cash-out screening, mixer sanctions and manipulation checks are stricter. Eleanor leaks the drive: the CRC custodian write-down chance doubles and SPARK rises {StoryLeakSpark:+%}; returns it: the CRC depeg chance halves. Officer Lun arrested: stricter cash-out screening and manipulation checks for {StoryLunDays} days.¶Mixer operator Tumbler (after unlocking the mixer, from day {TumblerMinDay}): he visits a few times and finally asks you to hide a key drive. Hide it and give it back: mixer fees halve and the anonymity set grows, plus a gift; but the drive is contraband and goes on your record if a search turns it up meanwhile. Report him: a bounty and Security standing, and the mixer shuts down (coins inside come back). Sell it to the black market: a sum of CRT (half tainted) and black-market standing, after which mixer fees rise and the chance of a rug goes up.¶After Tumbler: between his second and third visits a Security agent comes to ask whether he has been to your shop. Admit it: Security standing +{TumblerAgentSecRep}; but if you then hide the drive for him, the agent searches the shop the day before Tumbler comes back for it, and confiscates the drive and records contraband if he finds it. If the key ends up with Security (you report him, the drive is seized, or you no longer have it when he comes back), the mixing records are rebuilt: all taint washed off mixer payouts in the last {TumblerLeakDays} days is added back to the original wallets, and the part beyond a wallet's value goes on record as fraud. A report leads to a trial: you can bet on the verdict in the prediction market, and the paper covers the hearings each day; if he is acquitted, he takes revenge. If you sold the drive, the black market pulls the rug {TumblerBmRugMin}–{TumblerBmRugMax} days later, every coin in transit in the mixer is lost, and he takes revenge as well. Hide the drive and give it back, and he warns you the night before a Security crackdown. {TumblerRebrandDays} days after the mixer shuts down it comes back online under a new name; some of these are Security honeypots, and every coin withdrawn from one is flagged. Be wary of a fee that looks too low.§Mixer and privacy coin: pick a coin, amount and rounds; each round takes a fee and lowers taint, rounds equal days of waiting, and the coins come back to the same address; the more you deposit, the worse the cleaning.¶Privacy-coin swap (Web3 trade page, needs black-market standing): Ponero is a privacy coin and swapping in wipes the taint on that value; {PoneroFee:%} fee each way with a daily limit; coin swapped out of Ponero has no origin and cash-out screening gets stricter.§OTC clients (network upgrade ""OTC Desk""): the Black Lamp gets one more target, OTC client (double-click the lamp to switch). It lights up only in the display case and attracts people like the original Black Lamp, by the number of lamps and your black-market reputation; the upgrade includes one lamp. Half of the clients want to sell you coins, half want to buy coins from you, always for cash. After the client states the offer, choose to talk at the terminal: the terminal opens the counter trade page while the client waits at the counter. You can take only part of the deal, at 25% / 50% / 75% / 100% or a typed amount, and the cash scales with it; choose Pass or send the client away to decline. Deal sizes grow with the rent.¶Selling clients: on a deal you pay cash and the coins go straight to the connected wallet. When something happens in the station the coins usually come from it: CRT during a gang war or crackdown, PSC during a Revolution raid on the upper levels or lower-level unrest, tainted at full market value. Otherwise they are PSC, CRT or CRA at random, with taint at {OtcTaintMin:%}–{OtcTaintMax:%} of the value, and dirtier coins are cheaper (the asking price falls from {OtcCutClean:%} to {OtcCutDirty:%} of the value). The client does not say how dirty the coins are: the trade page shows his address, and Look up opens its history in the explorer; the more of it comes from the mixer, the black-market platform or scam addresses, the dirtier. Once the Ponero desk is open someone occasionally sells Ponero, which carries no taint but costs more. Added taint cannot exceed the wallet's value; the excess goes on record as fraud. Now and then the client is undercover: taking the deal loses the cash and records fencing, more often during a crackdown.¶Buying clients: they may want any coin, and they bid the market price plus a random markup (from {OtcBidMin:+%} to {OtcBidMax:+%} of the market price, so it can be below market); whether it is worth selling is up to you. On a deal PLEDGER opens with the address and amount filled in; sign and wait for confirmation, and the client pays cash and leaves when it arrives. If the client leaves before you sign, the deal is void. Coins you sell are not traced for taint.¶My mixer (Gray Net page, comes with the OTC Desk): fund it and open, clients deposit tainted coins, and after a few days they are paid out while you keep the fee. Each round washes off part of the taint according to the anonymity set, which is mostly your capital and uncollected earnings (client coins in transit count only partly), so more funding washes cleaner. Clients compare the fee plus the taint left on payouts with Tumbler's mixer and go where it is cheaper, and a higher black-market reputation brings more of them; the reputation shown is the taint recently left on payouts. Fee earnings stay in the pool and are fully tainted when you take them out; capital comes back with its own taint. More traffic raises the heat (a bigger pool hides coins a little better, but it also draws more traffic, so overall it gets more attention), and with it the chance of a Security raid: capital, earnings and client coins are all confiscated, fencing goes on record, and the mixer is closed for {OwnMixSeizeDays} days. Now and then an undercover officer deposits on an open night, which also records fencing. You can pull the rug at any time: everything, client coins included, comes to you fully tainted, fraud goes on record, black-market reputation drops, and the mixer closes for good.§Withdrawal screening (the screen shows neither the allowance nor the hit chance; the rules are these): withdrawing CRC from Poinbase for credits is judged against the current rent - a single withdrawal above {AmlBigRents}x rent, or totals above {AmlCumRents}x rent within {AmlWindowDays} days, raises the chance of being checked in proportion to the excess; once taint is at least {AmlTaintRatio:%} of the amount the chance gains 'ratio x {AmlTaintMult}'; coin recently returned by the mixer or from a flagged wallet adds {AmlMixerBonus:%}; the chance caps at {AmlMaxChance:%}. On a hit: taint under {AmlHeavyRatio:%} is light - the tainted part is confiscated and no crime is recorded; {AmlHeavyRatio:%} or more is heavy - the tainted part is confiscated and the taint amount is recorded as fencing. With no hit the full amount arrives. Withdrawals cost {ExchangeFee:%} and gains above cost are taxed {TaxRate:%}. Splitting into small amounts, spreading over days and washing first all lower the chance, but nothing tells you the allowance or the odds; estimate them yourself.¶Before destroying a wallet move the coins out yourself, and withdraw positions and deposits first: whatever is left goes with the wallet." +guide.web3.text,"Bank and trading: the Bank page is read-only and shows cash, rent and the CRC in your Poinbase account. Poinbase's Funds page handles deposits and withdrawals; pick the coin first: CRC can go through the bank account or a wallet, every other coin only through a wallet. Depositing from the bank turns credits into CRC in your Poinbase account; withdrawing to the bank turns CRC back into credits with no screening (the Poinbase account only ever holds clean money). Withdrawing to a wallet needs a payee address and a few confirmations before it arrives; the gas fee is fixed at the normal tier and taken from the coin sent. A wrong address format or checksum is rejected; a correctly formatted address nobody uses means the coins are gone.¶Trading: PSC stands for Probably Stolen Coin, the coin mined by GPUs and miners. Poinbase spot has two pairs, PSC/CRC and SPARK/CRC, following the coin picked on the chart. Buys and sells are both entered as an amount of the traded coin; the preview shows the quote coin paid or received, the average price includes the fee and the slippage does not.¶The Web3 trade page can swap any two coins, always through CRC: with CRC on one side it uses one pool, otherwise two pools, with two fees and stacked slippage; the preview shows the amount received, the pools crossed and the loss. Stablecoin swaps (CRT or CRA against CRC) use stable pools: a {StableFee:%} fee and almost no slippage near the peg; during a depeg liquidity thins, and in a collapse it is pulled and slippage jumps.§Hardware wallets: on-chain coins sit in PLEDGER hardware wallets, each with its own balances and dirty coins (each coin tracks how many of it are dirty; see Taint). A wallet is an item: drag it onto the trading terminal to load it. Open it on the terminal's Wallets page; connect and disconnect at the top right of the terminal. Trading on the Web3 page and the shop and mixer on the Gray Net page use the connected wallet; with no wallet or no connection they are view-only and every balance reads 0. Coin-paying customers pay into the connected wallet.¶Payments (shop, mixer, Ponero desk, listing fees) start as an invoice on the terminal; type the payee address on the wallet and hold ✓ to sign. The last two characters of an address are a checksum, so a one-character typo is usually caught; once in a while it happens to be valid and the coins go to an address nobody uses. DEX swaps also need a signature on the wallet.¶Poinbase is a custodial account; deposits are sent from a wallet to Poinbase's deposit address (only PSC, CRC and SPARK; the compliant exchange takes neither the black market's CRT nor the Revolution's CRA, and the wallet blocks sending them to the deposit address; only clean coins can be deposited, see Taint) and withdrawals are started on Poinbase's Funds page. The Explorer on the Wallets page looks up transfers by address and shows only transfers that really happened: every movement in and out of your wallets (transfers, DEX swaps and other contract calls, miner payouts, withdrawals, coins others send you); Ponero is a privacy coin and never shows. More hardware wallets are sold by Dr. Jackson; drag one onto the trading terminal to add it, up to {WalletMax}. The shop has cheaper ones. A wallet you no longer want can be destroyed on the Wallets page; its coins are lost for good, and anything sent to its address afterwards is lost too.¶Transfers pay a gas fee: slow, normal or fast, and gas prices rise and fall over roughly a week; when the network is congested gas fees rise and slow transactions may be dropped from the mempool. Check the full address before sending.§Staking: CRA staked in the Revolution pool earns a daily rate that compounds into the stake; withdrawing means requesting first and waiting four days, with no interest while waiting and no way to take it early. CRA is partly collateralized: each CRA is backed by the CRC reserve the Revolution holds and by the balance token SPARK; reserve coverage and the collateral ratio are shown on the staking page. Interest is paid in new uncollateralized CRA, which dilutes reserve coverage, faster the more is staked; when coverage is too low the Revolution cuts the rate. The Revolution sometimes diverts the reserve, preceded by rumors: that is the warning. If coverage then falls below {CraCrashRatio:%} it collapses: CRA is worthless within three days and four days of unlocking is too slow; above that there is only a discount, and money from raiding the upper class slowly refills the reserve.¶Official minting: deposit CRC and SPARK (ratio per the current collateral ratio; the preview shows what is needed) to mint CRA, queued {CraMintDaysMin}-{CraMintDaysMax} days; the minted CRA goes straight into staking. Burning turns CRA back into CRC and SPARK, waiting as long as the unlock period; when the reserve is short the CRC share is cut by coverage. Queued mints and burns may be dishonored in full by the Revolution: the nightly chance is how far the CRA price is below 1 times {CraRugPerDepeg}; if the price is not below 1 it cannot happen.¶Staking accepts CRA, CRC, CRT and SPARK: the last three are first swapped into CRA on the secondary market at the going price (through CRC, with fees and slippage). SPARK's price swings hard and crashes with the collapse. Staking, minting and burning are contract calls and need a signature on the wallet.§Miners: RatDigg miners (M1 / M2 / M3) are standalone machines with far more hash than a card and a lower power draw per hash; they need a battery, take modules and use no rig slots. Only the shop's miner dealers sell them, gated by black-market standing (M1 {AsicRepM1}, M2 {AsicRepM2}, M3 {AsicRepM3}), sometimes second-hand. When one burns out, repair it by dragging electronic components onto it in order; it comes back {AsicRepairHealthCut} health lower. Somewhere between day {EraMin} and day {EraMax} a ""miner era"" arrives, announced in the paper a few days earlier: the big farms halve their power costs, network hash climbs, GPU miners are diluted and low-end cards barely earn, while miners still do fine.¶Payout address: each miner (rigs and ASIC miners) has a payout address set in its own window; its mining output is sent there every night in proportion to hash power, so two miners can pay two different addresses. It starts unset; with no address, or a wallet that has been destroyed, that share is lost, so change the address when you change wallets.¶Turbo boosters work on rigs and miners with the same rules as other machines: each use runs one extra cycle, which means mining one night right away. The cycle draws a night's power, its output is based on the current network hash and goes to that machine's payout address, and it counts one round of wear and sudden-death checks; the machine still mines as usual that night.§Perps: the Perps tab on Poinbase uses your account CRC as margin, up to {PerpPscLev}× on PSC and {PerpSparkLev}× on SPARK, isolated margin only, a single position at a time (never long and short at once); to add to it, top up the margin. Fills are worse than the quote (more so for bigger orders, like the spot pool) and opening and closing both cost a fee. Liquidation is checked only overnight against the day's average price: equity under {PerpMaint:%} of notional wipes the margin. There is also a nightly funding payment; when the price is above its 7-day average, longs pay shorts.¶Other traders' positions get liquidated with the market too: most liquidations leave margin that goes to the insurance fund, and the faster the move the more of them go bankrupt, with the fund covering the gap; after a big one-day move the newspaper reports how many traders were liquidated and for how much (your position included). If a liquidation loses more than the margin, the insurance fund covers the gap; when it runs dry (only an extreme, market-wide wave of bankruptcies does that) winning positions are auto-deleveraged and give up half their profit; anything beyond that becomes your debt. Debt grows {PerpDebtInterest:%} a day, is repaid first from CRC in the account every night, blocks new positions and cash-outs, and after {PerpDebtDays} days items in your shop are seized to cover it; whatever is still short is written off and the perp account is banned for {PerpBanDays} days.§Shop: coin only, no CRC, {BmPremium:%} above normal channels, with extra markup on high-tech goods and GPUs; the coin you pay takes its share of dirty coins with it and the goods carry no stolen tag; GPUs may be fake, inspect them yourself.¶Shop purchases: pick a seller on the left, the shelf is on the right, and after 'Buy' the payment panel sets quantity, payment method and coin. Each kind of seller takes different coins: hardware and tech take PSC and CRT; arms, drugs, chemicals, documents, luxury and personal sellers take CRT and the privacy coin; farming, husbandry, water and brewing take PSC and CRA; platform spot takes PSC, CRT and CRA. If you lack a coin the seller takes you can use the built-in auto-convert: it swaps from another coin in the wallet at an {BmAutoSwapSlip:%} slippage and signs once; or swap on the DEX yourself first, with far less slippage but an extra step. Listing fees pick a coin at payment time too.¶Shop cart: 'Buy' on a shelf adds to the cart; the floating cart at the bottom right shows the count and opens checkout. Checkout shows the cart on the left (grouped by seller, quantities adjustable, items removable, escrow or advance release for sellers that allow it) and payment on the right: each seller has a different payee address, so you pay seller by seller - pick a coin that seller takes, create an invoice and transfer from the wallet; or auto-convert from another coin in the wallet ({BmAutoSwapSlip:%} slippage extra) and sign once for that seller.§Orders and selling: Orders are cheaper than spot but take days and may be intercepted; merchants sell by type at their own price factor, {BmBulk1Count}+ items get {BmBulk1Discount:%} off and {BmBulk2Count}+ get {BmBulk2Discount:%} off, and a bulk merchant appears at random with the lowest prices but {BmBulkDays} days of waiting; escrow costs {BmEscrowFee:%}, is released on delivery and refunded if the seller runs; advance release takes another {BmAdvanceDiscount:%} off, but a scammer keeps the money and only sellers with {BmAdvanceMinTrades}+ trades accept; the platform itself can rug, be taken over by enforcement, or a seller can be arrested, after which your orders get traced and crime logged; forum rumors can be warnings. An intercepted parcel sometimes turns into enforcement at your door: signing logs the crime on the spot and seizes the goods, refusing only costs the payment.¶Selling: on the shop's Sell tab, list contraband, high-tech goods and GPUs from storage at {BmSellMin}x to {BmSellMax}x the reference price. The higher the multiplier, the slower the sale (below {BmSellFastMult}x about {BmSellDaysFast} day, {BmSellDay1Mult}x about {BmSellDays1}, {BmSellMax}x about {BmSellDaysMax}), and the likelier and larger the taint on the payout, which also grows with how much you sold in the last 7 days; stolen goods taint the payout by their stolen heat (heat% of the payout coins are dirty); the Sell tab opens on your showcase of listed goods, and “Add listings” stages more: identical goods are grouped, the − and + keys set the quantity, the multiplier is picked on the left, and goods are listed only after you pay the listing fee with the Shelf button; all units of one item share one multiplier, so to change it take them all down first; up to {BmMaxKinds} kinds at once and {BmMaxStack} of each, {BmListFee:%} listing fee per unit; goods can be taken down from the showcase and return to storage, the fee is not refunded; “Accepted coins” on the showcase chooses which coins you take: every extra coin adds one more sale roll each night (in random order, with a different number of buyers per coin), so accepting more coins sells faster, and the payout arrives in the coin of the winning roll; {BmCommission:%} commission, payout held {BmSaleHold} days before reaching your wallet; a fake card may be spotted and returned, hurting your rating; if the platform rugs, listed goods and unreleased payouts are gone.§Prediction markets (Web3 Predict page, from game day {PredictUnlockDay}): each market is a yes/no question about things the game itself rolls or schedules: a news event appearing, a faction operation starting, tomorrow's water purity, the PSC price. A market is open until its window starts and settles on the night of the window's last day. Buy Yes or No with CRC from your on-chain wallet (a contract call: sign on the wallet; the position belongs to the signing wallet); the price is the market's implied probability and rises as you buy; each winning share pays 1 credit; {PredictFee:%} fee on each trade; each market has a position limit. If the CRC you staked was partly dirty, that share of the payout is dirty too.¶Rumor slips and faction perks can tell you ahead of time that something will happen; betting Yes on such a market is an insider bet. Insider bets pay out as usual, but the police suspect insider trading: at settlement or on sale, the payout for the insider shares is marked as dirty coins in the receiving wallet. If game data is missing for the window (for example you skipped the nightly settlement), the market is void and the stake is refunded.§Prices react to news: each night every open market moves halfway toward the fair probability given public information, plus some noise; so whoever reads the paper, a rumor slip or a faction perk first can buy ahead and sell after the move instead of waiting for settlement. The clue list in a market panel shows what you know about it: schedules, cooldowns, the halving day, recent gas values, the CRA reserve level, ASIC-era announcements.¶Patterns you can work out: faction operations are triggered by hidden power values at thresholds (for example a crackdown needs security >= 20 and black market >= 40, and drops security by 20); gas runs on a seven-day cycle; the price anchor ramps up the week before a halving; scheduled crackdowns and blackouts move the anchor but the market price does not reflect them ahead of time; the faster the reserve drains (the more is staked) the earlier CRA warns; the PSC price market can be moved by your own big orders. The intel broker (needs enough black-market standing) sells a situation brief (the five power values and what each faction can launch now, in CRT) and three grades of insider tip (only for faction operations and the ASIC era, which are already decided; accuracy rises with each tier; priced by market size; some tips are fake and say the opposite of the truth); betting the tipped side counts as an insider bet. Market size grows with the day and a wrong bet loses the whole stake, so do not put everything on one market.§Manipulation checks: your big Poinbase spot orders push the price away from where it would be without you (the push decays nightly with the price reversion; the market clue shows it). Once the push exceeds {ManipFree:%}, if you profit from the price (a PSC price market won in the direction you pushed, or a perp closed at a profit in that direction) you may be caught: the bigger the push the likelier (capped at {ManipMax:%}). When caught, the payout still goes through: a prediction payout is marked as dirty coins in full; a perp profit stays in the account and {PredictFraudShare:%} of it goes on record as fraud (up to {PredictFraudCap}); the paper reports the investigation.¶Short-then-dump is not a sure thing: perp slippage on both sides and the spot round trip often cost more than the short earns.§High-yield scheme (Yield page, Issue; from game day {PonziMinDay}, one per save): pick a daily rate ({PonziRates[0]:%}-{PonziRates[4]:%}), pay the marketing cost to launch (launching and rugging are contract calls signed on the wallet), and lower-level people deposit CRC by rate and lower-level standing; the higher the rate the faster they come. Each night interest is paid first from new deposits, then from the issuer wallet; if you cannot cover it there is a run and the scheme collapses; {PonziWithdraw:%} of the pool is withdrawn each night, and the bigger the pool and the higher the rate the likelier a report, which also collapses it. On collapse the pool is confiscated. You can rug the pool any time (click twice to confirm): it goes to the issuer wallet and all of that CRC is dirty (launder it before depositing to Poinbase). Rugging and collapse both put fraud on record and wipe your lower-level standing. The word-on-the-street line hints at the report risk.§Scams: wicks - some mornings the price is slammed {WickMin:%}-{WickMax:%} up or down at open; most of it reverts that night, but some are real; the perp mark price only takes half, so do not panic-sell into a wick.¶Airdrops (Web3 Airdrops page) - each airdrop needs the wallet authorized first (one signed authorization contract), then a signed claim; check the approval scope before authorizing: real airdrops need no approval or a small one of a few dozen; an unlimited approval, or one far larger than the reward, is phishing, often under a lookalike name (0 for o, 1 for l), and a night or two later that coin is taken from the wallet. Approvals are listed on the right of the Airdrops page and can be revoked with a signature, after which nothing can be taken.¶Third-party yield pools (Yield page, Deposit) - {YieldRates[0]:%}-{YieldRates[2]:%} a day; you can see the reserve, whether there is a timelock and an audit, but not whether it is a scam: the higher the rate the likelier a rug, a timelock and an audit make it less likely; an honest pool closes and returns principal when its reserve cannot pay interest, a scam pool can vanish any night. Timelocked pools take {YieldLockDays} days to withdraw.¶Fake support - someone at the counter claiming to be Poinbase support asks you to move CRC to a ""safe address"": Poinbase never visits and never asks you to transfer. Forged transfers - a coin-paying customer who opens with ""already sent, here's the screenshot, hand it over"" never pays; honest ones say it takes a moment to confirm on chain.§Charts: the Poinbase spot page and the Web3 trade page can switch between daily candles of every coin (the perp page shows the current product, predictions show PSC), green up and red down; the yellow line is the 7-day average (perp funding uses it); the bars below are volume (grey the market, cyan you: spot, DEX, mint/burn, Ponero swaps and perp opens/closes all count). The bigger the move the more the market trades; wicks leave long shadows.§Story links: choices in the game's storylines change this market; the paper reports them the next day and the market takes a few days to react. Serpico's evidence to the Revolution: the CRA reserve is topped up, the collapse chance halves for {StorySecDays} days and SPARK rises {StorySerpicoSpark:+%} over {StorySparkNights} nights; to the black market: CRT depeg and sell-out chances halve; to Security: for {StorySecDays} days the mixer cleans worse (each round ×{StorySecMixClean}), and mixer sanctions and manipulation checks are stricter. Eleanor leaks the drive: the CRC custodian write-down chance doubles and SPARK rises {StoryLeakSpark:+%}; returns it: the CRC depeg chance halves. Officer Lun arrested: for {StoryLunDays} days manipulation checks are stricter and more OTC clients are undercover.¶Mixer operator Tumbler (after unlocking the mixer, from day {TumblerMinDay}): he visits a few times and finally asks you to hide a key drive. Hide it and give it back: mixer fees halve and the anonymity set grows, plus a gift; but the drive is contraband and goes on your record if a search turns it up meanwhile. Report him: a bounty and Security standing, and the mixer shuts down (coins inside come back). Sell it to the black market: a sum of CRT (half of it dirty) and black-market standing, after which mixer fees rise and the chance of a rug goes up.¶After Tumbler: between his second and third visits a Security agent comes to ask whether he has been to your shop. Admit it: Security standing +{TumblerAgentSecRep}; but if you then hide the drive for him, the agent searches the shop the day before Tumbler comes back for it, and confiscates the drive and records contraband if he finds it. If the key ends up with Security (you report him, the drive is seized, or you no longer have it when he comes back), the mixing records are rebuilt: {PredictFraudShare:%} of the taint washed off mixer payouts in the last {TumblerLeakDays} days goes on record as fraud (up to {PredictFraudCap}). A report leads to a trial: you can bet on the verdict in the prediction market, and the paper covers the hearings each day; if he is acquitted, he takes revenge. If you sold the drive, the black market pulls the rug {TumblerBmRugMin}–{TumblerBmRugMax} days later, every coin in transit in the mixer is lost, and he takes revenge as well. Hide the drive and give it back, and he warns you the night before a Security crackdown. {TumblerRebrandDays} days after the mixer shuts down it comes back online under a new name; some of these are Security honeypots, and every coin withdrawn from one comes back dirty. Be wary of a fee that looks too low.§Mixer and privacy coin: pick a coin, amount and rounds; each round takes a fee and cleans part of the dirty coins, rounds equal days of waiting, and the coins come back to the same address; the more you deposit, the worse the cleaning. During crackdowns the mixer may be sanctioned; payouts due meanwhile are not cleaned and come back all dirty.¶Privacy-coin swap (Web3 trade page, needs black-market standing): Ponero is a privacy coin and dirty coins swapped in simply disappear and the Ponero you get is clean; {PoneroFee:%} fee each way, and swaps in and out share a daily limit of {PoneroDailyCap} credits.§OTC clients (network upgrade ""OTC Desk""): the Black Lamp gets one more target, OTC client (double-click the lamp to switch). It lights up only in the display case and attracts people like the original Black Lamp, by the number of lamps and your black-market reputation; the upgrade includes one lamp. Half of the clients want to sell you coins, half want to buy coins from you, always for cash. After the client states the offer, choose to talk at the terminal: the terminal opens the counter trade page while the client waits at the counter. You can take only part of the deal, at 25% / 50% / 75% / 100% or a typed amount, and the cash scales with it; choose Pass or send the client away to decline. Deal sizes grow with the rent.¶Selling clients: on a deal you pay cash and the coins go straight to the connected wallet. When something happens in the station the coins usually come from it: CRT during a gang war or crackdown, PSC during a Revolution raid on the upper levels or lower-level unrest, all of them dirty. Otherwise they are PSC, CRT or CRA at random, {OtcTaintMin:%}–{OtcTaintMax:%} of them dirty, and dirtier coins are cheaper (the asking price falls from {OtcCutClean:%} to {OtcCutDirty:%} of the value). The client does not say how dirty the coins are: the trade page shows his address, and Look up opens its history in the explorer; the more of it comes from the mixer, the black-market platform or scam addresses, the dirtier. Once the Ponero desk is open someone occasionally sells Ponero, which carries no taint but costs more. Now and then the client is undercover: taking the deal loses the cash and records fencing, more often during a crackdown.¶Buying clients: they may want any coin, and they bid the market price plus a random markup (from {OtcBidMin:+%} to {OtcBidMax:+%} of the market price, so it can be below market); whether it is worth selling is up to you. On a deal PLEDGER opens with the address and amount filled in; sign and wait for confirmation, and the client pays cash and leaves when it arrives. If the client leaves before you sign, the deal is void. Coins you sell are not traced for taint.¶My mixer (Gray Net page, comes with the OTC Desk): fund it and open, clients deposit tainted coins, and after a few days they are paid out while you keep the fee. Each round washes off part of the taint according to the anonymity set, which is mostly your capital and uncollected earnings (client coins in transit count only partly), so more funding washes cleaner. Clients compare the fee plus the taint left on payouts with Tumbler's mixer and go where it is cheaper, and a higher black-market reputation brings more of them; the reputation shown is the taint recently left on payouts. Fee earnings stay in the pool and are all dirty when you take them out; capital comes back with its own share of dirty coins. More traffic raises the heat (a bigger pool hides coins a little better, but it also draws more traffic, so overall it gets more attention), and with it the chance of a Security raid: capital, earnings and client coins are all confiscated, fencing goes on record, and the mixer is closed for {OwnMixSeizeDays} days. Now and then an undercover officer deposits on an open night, which also records fencing. You can pull the rug at any time: everything, client coins included, comes to you all dirty, fraud goes on record, black-market reputation drops, and the mixer closes for good.§Taint: in every wallet, each coin tracks how many of it are dirty (shown in the balances on the Wallets page and on PLEDGER). Dirty coins come from OTC clients who sell to you, coin-paying customers (by the goods' stolen heat), Gray Net sales of stolen goods, insider bets and manipulation in the prediction market, a Ponzi pull-out, earnings from your own mixer, the CRT from selling the key drive, and flagged mixer payouts. Taint lives only in Web3 wallets: spending, sending or paying fees takes dirty coins in proportion to that coin's dirty share; swapping carries the share over to the coin you get (60% dirty CRT swapped for PSC gives 60% dirty PSC); Ponero carries none. Poinbase takes only clean coins: each coin can deposit at most its clean amount and the dirty ones stay in the wallet; so the Poinbase account and the bank only ever hold clean money, and withdrawing to the bank has no screening, just a {ExchangeFee:%} fee and {TaxRate:%} tax on gains above cost. Sending clean coins into a wallet does not make the dirty ones clean. Ways to get rid of dirty coins: the mixer, the Ponero swap, selling coins to buying OTC clients (coins you sell are not traced), and paying in the Web3 shop.¶Before destroying a wallet move the coins out yourself, and withdraw positions and deposits first: whatever is left goes with the wallet." courier.odd1,...Package is here. courier.odd2,(His hand stays in his pocket.) Sign here. courier.sign,Sign @@ -362,10 +360,11 @@ hw.wallet.n,Wallet {0} hw.review.own,Own wallet: {0} hw.review.poinbase,Poinbase deposit address poin.deposit,Deposit address: {0} +poin.deposit.clean,Clean coins {0} can deposit: {1} wallets.count,Wallets {0}/{1} wallets.col.name,Name wallets.col.addr,Address -wallets.col.taint,Taint +wallets.col.taint,Dirty wallets.open,Open wallets.use,Connect wallets.current,Connected @@ -379,6 +378,7 @@ hw.paste,Paste hw.copied,Address copied. hw.copied.addr,Copied {0} hw.balance.frozen," (frozen {0})" +hw.balance.dirty," ({0} dirty)" wallets.destroy,Destroy wallets.destroy.sure,Confirm wallets.destroyed,Destroyed {0}: {1} @@ -550,7 +550,7 @@ predict.purity.rust,Upper water nightlog.predict.win,"Prediction right: ""{0}"", paid out {1}." nightlog.predict.lose,"Prediction wrong: ""{0}"", stake {1} lost." nightlog.predict.void,"Prediction void: ""{0}"", stake {1} refunded." -nightlog.predict.insider,"""{0}"" settled for {1}. Police suspect insider trading; the payout is marked and the wallet's taint rises by {2}." +nightlog.predict.insider,"""{0}"" settled for {1}. Police suspect insider trading; {2} CRC of it is marked as dirty." predict.tab.markets,Markets predict.tab.intel,Intel predict.acct.crt,{0}: CRT {1} @@ -593,11 +593,10 @@ predict.brief.queued,{0}: operation scheduled predict.brief.none,{0}: nothing to launch predict.brief.can,{0}: can launch {1} predict.clue.push,You moved the price {0}%: risky -nightlog.predict.manip,"""{0}"" settled for {1}. Regulators suspect you manipulated the price; the payout is marked and the wallet's taint rises by {2}." +nightlog.predict.manip,"""{0}"" settled for {1}. Regulators suspect you manipulated the price; {2} CRC of it is marked as dirty." news.manip.title,Exchange probes unusual trading news.manip.desc,Regulators report that someone moved the price with large spot orders and profited from derivatives and predictions; the accounts involved have been flagged. -taint.overflow,Taint now exceeds the wallet's value; the excess {0} goes on record as fraud. -perp.manip,Closed with profit {0}. Regulators suspect price manipulation; the profit is marked and the Poinbase account's taint rises by {1}. +perp.manip,Closed with profit {0}. Regulators suspect price manipulation; {1} fraud goes on your record. web3.sub.ponzi,Yield ponzi.h,High-yield scheme ponzi.acct,Issuer wallet {0}: CRC {1} @@ -688,7 +687,7 @@ scam.support.name,Poinbase Support scam.support.1,"Hello, Poinbase support here. We detected an unusual login on your account and it has been flagged." scam.support.2,Please send {0} CRC to the safe address {1} today for verification; it will be returned right after. scam.support.3,"Otherwise the account will be frozen for good. I have to go, remember to send it." -predict.sold.caught,"Sold, received {0}. Police suspect insider trading; the proceeds are marked and the wallet's taint rises by {1}." +predict.sold.caught,"Sold, received {0}. Police suspect insider trading; {1} CRC of it is marked as dirty." predict.row.move," (last night {0} {1})" predict.stats.h,History (avg opening price / actual rate) predict.stats.row,"{0}: {1} markets, avg open {2}, happened {3}%" @@ -711,7 +710,7 @@ news.story.serpico_rev.desc,"The Revolution reportedly obtained evidence of corr news.story.serpico_bm.title,Black market strikes a quiet deal news.story.serpico_bm.desc,"An internal Security document changed hands on the black market. Darknet settlement has been noticeably steadier since, and CRT redemptions have not slipped once." news.story.serpico_sec.title,Security launches internal purge -news.story.serpico_sec.desc,Security announced a full investigation into internal corruption and tighter monitoring of money flows. Poinbase is tightening cash-out screening and mixing services have been named. +news.story.serpico_sec.desc,Security announced a full investigation into internal corruption and tighter monitoring of money flows; mixing services have been named. news.story.eleanor_leak.title,Nutrifruit breeding data leaked news.story.eleanor_leak.desc,"The lower-level paper published research that lets nutrifruit set seed again; Pastelle shares plunged. The bank custodying upper-level funds reports bad debts, and the Revolution is gaining ground." news.story.eleanor_return.title,Pastelle recovers stolen data @@ -772,7 +771,7 @@ agent.search.none,...Nothing. Sorry for the trouble. tumbler.v4.seized.1,I heard Security searched your shop. tumbler.v4.seized.2,They have the key now. Every user's records will be dug up. tumbler.v4.seized.3,"Whatever you told them, I don't want to know anymore." -nightlog.tumbler.leak,"Security used Tumbler's signing key to rebuild the mixing records: the taint washed off {0} payouts, {1}, was added back to the wallets." +nightlog.tumbler.leak,Security used Tumbler's signing key to rebuild the mixing records: {0} payouts had {1} of taint washed off; {2} fraud goes on your record. nightlog.tumbler.leak.none,Security used Tumbler's signing key to rebuild the mixing records. You have not withdrawn anything from the mixer recently. nightlog.tumbler.note,"A note was slipped under the door: ""You owe me, and I'll take it back. —T""" nightlog.tumbler.tip,Message from Tumbler: Security may go after the mixing services tomorrow. @@ -1038,7 +1037,7 @@ otc.cancel,Pass otc.msg.gone,The client has left. otc.msg.cash,Not enough cash. otc.msg.sting,"The client was undercover: {0} cash confiscated, fencing on record." -otc.msg.bought,"Received {0} {1}, paid {2} cash." +otc.msg.bought,"Received {0} {1} ({3} of them dirty), paid {2} cash." otc.msg.sold,"Sent {0} {1}, received {2} cash." gray.sub.own,My mixer ownmix.h,My mixer @@ -1088,3 +1087,4 @@ otc.nocash,You can't even put up the cash? Forget it. otc.nowallet,"No wallet connected, so where would the coins go? Forget it." otc.sting,Don't move. Security. Buying stolen funds: the cash is confiscated and this goes on your record. hw.err.poinbase,Poinbase does not accept {0}. +hw.err.tainted,{0} of this wallet's {1} are dirty and Poinbase takes only clean coins: at most {2} {1}. diff --git a/src/Decentralized/ModFiles/Localization/es.csv b/src/Decentralized/ModFiles/Localization/es.csv index e470549..b3569e0 100644 --- a/src/Decentralized/ModFiles/Localization/es.csv +++ b/src/Decentralized/ModFiles/Localization/es.csv @@ -22,7 +22,7 @@ tab.report,Reporte wallet.line,{0}: {1} (aprox. {2} créditos) wallet.empty,La billetera está vacía. wallet.total,Valor total: {0} créditos -wallet.taint,Valor contaminado: {0} créditos +wallet.taint,Monedas contaminadas: {0} créditos trade.amount,Cantidad trade.deposit,Depositar créditos como CRC trade.withdraw,Retirar CRC como créditos @@ -38,8 +38,6 @@ msg.balance,Saldo insuficiente. msg.trade,Pagado: {0} {1}; recibido: {2} {3}. msg.deposit,Se depositaron {0} créditos como CRC. msg.cashout,Se recibieron {0} créditos. Impuesto: {1} créditos. -msg.aml_light,Revisión de cumplimiento: se retuvieron {0} créditos de fondos contaminados. -msg.aml_heavy,Revisión de cumplimiento: se confiscaron {0} créditos de fondos contaminados y se reportó a Seguridad. report.none,Aún no hay reporte de minería. report.day,Noche del día {0} report.rigs,Plataformas con energía: {0} de {1} @@ -141,6 +139,7 @@ col.asset,Activo col.amount,Cantidad col.value,Valor col.avg,Prom. compra +col.dirty,Contaminadas bank.cash.k,Créditos bank.rent.k,Renta bank.rent.v,"{0}, vence en {1} día(s)" @@ -152,13 +151,12 @@ stable.ok,Anclado stable.depeg,Desanclado stable.warn,Advertencia: cobertura de reserva del staking baja stable.spiral,En colapso -aml.taint,Porcentaje de contaminación de la cuenta: {0}% mixer.h,Mezclador mixer.ok,Estado: en funcionamiento normal -mixer.sanctioned,Estado: sancionado (días restantes: {0}). Las monedas retiradas mientras tanto se marcarán. +mixer.sanctioned,Estado: bajo sanción (días restantes: {0}). Los pagos que venzan en este período no se limpian y se devuelven todos como contaminados. mixer.pending,Depósitos pendientes mixer.none,No hay depósitos pendientes. -mixer.col.taint,Contaminación +mixer.col.taint,Contaminadas mixer.col.ready,Listo mixer.day,Día {0} mixer.deposit,Depósito @@ -169,12 +167,12 @@ mixer.go,Depositar en el mezclador mixer.min,Los depósitos deben valer al menos {0} créditos. mixer.done,Se depositaron {0} {1}; retorno el día {2}. mixer.upgrade.title,Mezclador -mixer.upgrade.desc,"Desbloquea el mezclador en la página Red gris de la terminal: deposita monedas contaminadas y recupéralas días después con menos contaminación. El retiro de monedas recién mezcladas pasa por una revisión más estricta; durante las represiones, el mezclador puede ser sancionado y las monedas retiradas mientras tanto quedarán marcadas." +mixer.upgrade.desc,"Desbloquea el mezclador en la página de la Red gris de la terminal: deposita monedas contaminadas y recupéralas días después con menos unidades contaminadas. Durante las redadas el mezclador puede ser sancionado, y los pagos que venzan en ese período volverán totalmente contaminados." news.sanction.title,Mezclador incluido en la lista de sanciones -news.sanction.desc,Seguridad sancionó un lote de servicios de mezcla. Los fondos retirados de mezcladores en los próximos días se tratarán como sospechosos. +news.sanction.desc,Seguridad ha sancionado varios servicios de mezcla. Los fondos retirados de mezcladores en los próximos días se considerarán fondos contaminados. nightlog.mixer,El mezclador devolvió {0} {1}; contaminación {2} -> {3}. -nightlog.mixer_flag," (retirado durante las sanciones; dirección marcada)" -nightlog.mixer_flag.trap," (la dirección de retiro está marcada)" +nightlog.mixer_flag," (retirado durante las sanciones; todo marcado como contaminado)" +nightlog.mixer_flag.trap," (Seguridad marca las monedas retiradas como contaminadas)" nightlog.mixer_rug,El operador del mezclador se fugó con el dinero: {0} {1} nunca regresaron. web3.sub.trade,Comercio gray.sub.mixer,Mezclador @@ -249,7 +247,7 @@ black.kind.Contraband.3,Contrabando (alto) black.kind.Tech,Alta tecnología (con sobreprecio) nightlog.bm.ready,Mercado negro: {0} ha llegado; un mensajero pasará en cuanto abras. guide.web3.title,Manual de Web3 -guide.web3.text,"Banco y comercio: la página del banco es de solo lectura y muestra efectivo, alquiler y el CRC de la cuenta de Poinbase. La página Fondos de Poinbase gestiona depósitos y retiros; primero se elige la moneda: el CRC puede ir por la cuenta bancaria o la billetera, las demás monedas solo por la billetera. Depositar desde el banco convierte créditos en CRC en tu cuenta de Poinbase; retirar al banco convierte CRC nuevamente en créditos y pasa por una revisión de cumplimiento que evalúa la contaminación de la cuenta de Poinbase. Retirar a una billetera exige la dirección de destino y varias confirmaciones hasta acreditarse; la comisión de gas es fija, nivel normal, y se descuenta de la moneda enviada. Si el formato de la dirección o el dígito de control es incorrecto, se rechaza; si el formato es válido pero nadie usa esa dirección, las monedas enviadas se pierden.¶Comercio: PSC significa Probably Stolen Coin, la moneda minada por tarjetas gráficas y mineros (máquinas). El mercado spot de Poinbase tiene dos pares, PSC/CRC y SPARK/CRC, según la moneda elegida en el gráfico. Tanto las compras como las ventas se introducen como cantidad de la moneda negociada; la vista previa muestra la moneda de cotización pagada o recibida, el precio medio incluye la comisión y el deslizamiento no.¶La página de comercio de Web3 permite intercambiar cualquier par de monedas, siempre a través de CRC: si CRC está en un extremo se usa un fondo, si no, dos fondos, con dos comisiones y deslizamiento acumulado; la vista previa muestra la cantidad obtenida, los fondos recorridos y la pérdida. Los canjes entre stablecoins (CRT o CRA contra CRC) usan fondos estables: comisión de {StableFee:%} y casi sin deslizamiento cerca de la paridad; durante una pérdida de paridad la liquidez se reduce, y en un colapso se retira y el deslizamiento se dispara.§Billeteras de hardware: las monedas en cadena residen en billeteras de hardware PLEDGER, cada una con sus propios saldos y contaminación. Una billetera es un objeto: arrástrala a la terminal de comercio para cargarla. Ábrela en la página Billeteras de la terminal; conéctala y desconéctala arriba a la derecha de la terminal. El comercio de la página Web3, la tienda y el mezclador de la página Red gris usan la billetera conectada; sin billetera o sin conexión, son solo de lectura y todos los saldos marcan 0. Los clientes que pagan con monedas pagan a la billetera conectada.¶Los pagos (tienda, mezclador, mostrador de Ponero, tarifas de publicación) comienzan como una factura en la terminal; ingresa la dirección del destinatario en la billetera y mantén presionado ✓ para firmar. Los dos últimos caracteres de una dirección son una suma de verificación, por lo que un error tipográfico de un carácter suele detectarse; de vez en cuando resulta válido y las monedas van a una dirección que nadie usa. Los intercambios en DEX también requieren firmar en la billetera.¶Poinbase es una cuenta de custodia; los depósitos se envían desde la billetera a la dirección de depósito de Poinbase (solo PSC, CRC y SPARK; la plataforma regulada no acepta el CRT del mercado negro ni el CRA de la Revolución, y la billetera bloquea su envío a la dirección de depósito) y los retiros se inician en la página Fondos de Poinbase. El Explorador de la página Billeteras permite consultar transferencias por dirección y solo muestra transferencias realmente ocurridas: cada entrada y salida de tus billeteras (transferencias, canjes en DEX y otras llamadas a contratos, ingresos de mineros, retiros, monedas que otros te envían); Ponero es una moneda de privacidad y nunca aparece. El Dr. Jackson vende más billeteras de hardware; arrastra una a la terminal de comercio para agregarla, hasta {WalletMax}. La tienda tiene opciones más baratas. Una billetera que ya no desees puede destruirse en la página Billeteras; sus monedas se pierden para siempre, y todo lo que se envíe después a su dirección también.¶Las transferencias pagan una comisión de gas: lenta, normal o rápida, y los precios del gas suben y bajan en aproximadamente una semana; cuando la red se congestiona, las comisiones de gas suben y las transacciones lentas pueden ser descartadas del mempool. Verifica la dirección completa antes de enviar.§Staking: el CRA en staking en el fondo de la Revolución genera una tasa diaria que se capitaliza en el monto; retirar implica solicitarlo primero y esperar cuatro días, sin intereses durante la espera y sin forma de retirarlo antes. CRA está parcialmente colateralizado: cada CRA está respaldado por la reserva de CRC de la Revolución y por el token de balance SPARK; la cobertura de la reserva y la tasa de colateralización aparecen en la página de staking. Los intereses se pagan con CRA nuevo sin colateral, lo que diluye la cobertura de la reserva, más rápido cuanto más staking haya; si la cobertura es demasiado baja, la Revolución recorta la tasa. La Revolución a veces desvía la reserva, precedida de rumores: es la señal de aviso. Si tras ello la cobertura cae por debajo de {CraCrashRatio:%}, hay colapso: CRA pierde todo su valor en tres días y los cuatro días de desbloqueo serán demasiado lentos; si no baja de ahí, solo hay un descuento, y los fondos de los saqueos a la clase alta van reponiendo la reserva poco a poco.¶Acuñación oficial: depositar CRC y SPARK (proporción según la tasa de colateralización actual; la vista previa indica cuánto hace falta) para acuñar CRA, con una cola de {CraMintDaysMin} a {CraMintDaysMax} días; el CRA acuñado entra directamente en staking. La quema cambia CRA por CRC y SPARK, con una espera igual de larga que el desbloqueo; si la reserva no alcanza, la parte de CRC se reduce según la cobertura. Las acuñaciones y quemas en cola pueden no cumplirse nunca: la probabilidad nocturna es cuánto está el precio de CRA por debajo de 1 multiplicado por {CraRugPerDepeg}; si el precio no está por debajo de 1, no ocurre.¶El staking admite CRA, CRC, CRT y SPARK: los tres últimos se cambian primero por CRA en el mercado secundario al precio de mercado (vía CRC, con comisión y deslizamiento). El precio de SPARK oscila con fuerza y se desploma con el colapso. El staking, la acuñación y la quema son llamadas de contrato y requieren firmar en la billetera.§Mineros (máquinas): Los mineros RatDigg (M1 / M2 / M3) son máquinas independientes con una tasa de hash muy superior a la de una tarjeta y menor consumo de energía por hash; necesitan una batería, admiten módulos y no ocupan ranuras de la plataforma de minería. Solo los venden los camellos de mineros de la tienda, según la Reputación en el Mercado negro (M1 {AsicRepM1}, M2 {AsicRepM2}, M3 {AsicRepM3}), a veces de segunda mano. Cuando uno queda quemado, repáralo arrastrándole componentes electrónicos en orden; volverá con {AsicRepairHealthCut} menos de salud. Entre el día {EraMin} y el día {EraMax} llega una ""era de los mineros"", anunciada en el periódico unos días antes: las grandes granjas reducen a la mitad sus costos de energía, la tasa de hash de la red aumenta, las ganancias de los mineros de GPU se diluyen y las tarjetas de gama baja apenas generan ingresos, mientras que los mineros siguen rindiendo bien.¶Dirección de pago: cada minero (plataformas de minería y mineros ASIC) tiene una dirección de pago configurada en su propia ventana; su producción de minería se envía allí cada noche en proporción a la tasa de hash, por lo que dos mineros pueden pagar a dos direcciones distintas. Por defecto no está configurada; sin dirección, o con una billetera destruida, esa parte se pierde, así que cambia la dirección cuando cambies de billetera.¶Los turbocompresores funcionan en plataformas de minería y mineros con las mismas reglas que en otras máquinas: cada uso ejecuta un ciclo adicional, lo que significa minar una noche de inmediato. El ciclo consume la energía de una noche, su producción se calcula según la tasa de hash actual de la red y va a la dirección de pago de esa máquina, y cuenta como una ronda de desgaste y control de muerte súbita; la máquina seguirá minando como de costumbre esa noche.§Futuros perpetuos: la pestaña Perpetuos en Poinbase usa el CRC de tu cuenta como margen, hasta {PerpPscLev}× en PSC y {PerpSparkLev}× en SPARK, solo margen aislado, una sola posición a la vez (nunca en largo y corto a la vez); para aumentarla solo se puede añadir margen. El precio de ejecución es peor que la cotización (más aún con órdenes grandes, como en el fondo al contado) y tanto abrir como cerrar cobran comisión. La liquidación solo se verifica por la noche con respecto al precio promedio diario: un capital inferior al {PerpMaint:%} del nocional borra el margen. También hay una tasa de financiación nocturna; cuando el precio está por encima de su promedio de 7 días, los largos pagan a los cortos.¶Las posiciones de otros traders también se liquidan con el mercado: la mayoría de las liquidaciones dejan margen que va al fondo de seguro, y cuanto más rápido el movimiento, más acaban en quiebra, con el fondo cubriendo la diferencia; tras un gran movimiento en un día, el periódico informa de cuántos traders fueron liquidados y por cuánto (tu posición incluida). Si una liquidación pierde más que el margen, el fondo de seguro cubre la diferencia; cuando este se agota (solo una oleada extrema de quiebras en todo el mercado lo provoca), las posiciones ganadoras sufren un desapalancamiento auto y ceden la mitad de sus ganancias; cualquier faltante posterior se convierte en tu deuda. La deuda crece un {PerpDebtInterest:%} al día, se liquida primero con el CRC de la cuenta cada noche, bloquea nuevas posiciones y retiros de fondos, y tras {PerpDebtDays} días se confiscan artículos de tu tienda para cubrirla; lo que aún no se cubra se cancela y la cuenta de futuros perpetuos queda suspendida por {PerpBanDays} días.§Tienda: solo criptomonedas, sin CRC, un {BmPremium:%} por encima de los canales habituales, con un recargo adicional en artículos de alta tecnología y tarjetas gráficas; la moneda que pagas deja su parte proporcional de contaminación con el vendedor y la mercancía no lleva etiqueta de robada; las tarjetas gráficas pueden ser falsas, inspecciónalas tú mismo.¶Compras en la tienda: elige un vendedor a la izquierda, el catálogo está a la derecha, y tras pulsar 'Comprar', el panel de pago permite definir cantidad, método de pago y moneda. Cada tipo de vendedor acepta monedas distintas: hardware y tecnología aceptan PSC y CRT; armas, drogas, sustancias químicas, documentos, artículos de lujo y vendedores particulares aceptan CRT y la moneda de privacidad; agricultura, ganadería, agua y destilería aceptan PSC y CRA; el mercado al contado de la plataforma acepta PSC, CRT y CRA. Si no tienes una moneda que acepte el vendedor, puedes usar la conversión automática integrada: intercambia desde otra moneda de la billetera con un {BmAutoSwapSlip:%} de deslizamiento y firma una sola vez; o intercambia tú mismo en el DEX antes, con mucho menos deslizamiento pero un paso adicional. Para la tarifa de publicación también se elige la moneda al momento del pago.¶Carrito de la tienda: 'Comprar' en un estante añade al carrito; el carrito flotante en la parte inferior derecha muestra la cantidad y abre la pantalla de pago. La pantalla de pago muestra el carrito a la izquierda (agrupado por vendedor, cantidades ajustables, artículos eliminables, depósito de garantía o liberación anticipada para los vendedores que lo permitan) y el pago a la derecha: cada vendedor tiene una dirección de cobro distinta, por lo que pagas vendedor por vendedor: elige una moneda que acepte ese vendedor, genera una factura y transfiere desde la billetera; o convierte automáticamente desde otra moneda de la billetera ({BmAutoSwapSlip:%} de deslizamiento adicional) y firma una vez para ese vendedor.§Pedidos y venta: los pedidos son más baratos que al contado, pero tardan días y pueden ser interceptados; los mercaderes venden por tipo según su propio factor de precio, {BmBulk1Count}+ artículos obtienen un {BmBulk1Discount:%} de descuento y {BmBulk2Count}+ un {BmBulk2Discount:%} de descuento, y un mercader mayorista aparece al azar con los precios más bajos pero con una espera de {BmBulkDays} días; el depósito de garantía cuesta un {BmEscrowFee:%}, se libera al entregarse y se reembolsa si el vendedor huye; la liberación anticipada descuenta otro {BmAdvanceDiscount:%}, pero un estafador se quedará con el dinero y solo la aceptan vendedores con {BmAdvanceMinTrades}+ transacciones; la propia plataforma puede hacer un rug pull, ser intervenida por Seguridad o un vendedor puede quedar bajo arresto, tras lo cual se rastrean tus pedidos y se registra el delito; los rumores del foro pueden servir de advertencia. A veces, un paquete interceptado acaba en agentes de Seguridad llamando a tu puerta: firmar registra el delito al instante y confisca los productos; rechazar solo te cuesta el pago.¶Venta: en la pestaña Vender de la tienda, pon a la venta contrabando, artículos de alta tecnología y tarjetas gráficas del almacén a un precio de entre {BmSellMin}x y {BmSellMax}x el de referencia. Cuanto mayor sea el multiplicador, más lenta será la venta (por debajo de {BmSellFastMult}x aprox. {BmSellDaysFast} día, a {BmSellDay1Mult}x aprox. {BmSellDays1} días, a {BmSellMax}x aprox. {BmSellDaysMax} días) y más probable y mayor será la contaminación del pago, que además aumenta con el volumen vendido en los últimos 7 días; en artículos robados, el pago se contamina según su nivel de robo (pago × nivel %); la pestaña Vender se abre en tu escaparate con los artículos publicados, y «Añadir artículos» prepara más: los artículos idénticos se agrupan, las teclas − y + fijan la cantidad, el multiplicador se elige a la izquierda y solo se publica tras pagar la tarifa de publicación con el botón Estante; todas las unidades de un artículo comparten multiplicador, así que para cambiarlo hay que retirarlas todas; máximo {BmMaxKinds} tipos a la vez y {BmMaxStack} de cada uno, tarifa de publicación del {BmListFee:%} por unidad; desde el escaparate se pueden retirar artículos, que vuelven al almacén sin devolución de la tarifa; «Monedas aceptadas» en el escaparate elige qué monedas aceptas: cada moneda extra añade cada noche una tirada de venta más (en orden aleatorio, con distinto número de compradores según la moneda), así que aceptar más monedas vende más rápido, y el pago llega en la moneda de la tirada ganadora; comisión del {BmCommission:%}; pago retenido durante {BmSaleHold} días antes de llegar a tu billetera; una tarjeta falsa puede ser detectada y devuelta, perjudicando tu calificación; si la plataforma hace un rug pull, los artículos publicados y los pagos no liberados se pierden.§Mercados de predicción (página Predecir de Web3, a partir del día {PredictUnlockDay}): cada mercado es una pregunta de sí o no sobre eventos que el juego determina al azar o programa: la aparición de una noticia, el inicio de una operación de facción, la pureza del agua de mañana o el precio de PSC. Un mercado permanece abierto hasta el inicio de su ventana y se liquida la noche del último día de dicha ventana. Compra Sí o No con CRC desde tu billetera en cadena (una llamada de contrato: firma en la billetera; la posición pertenece a la billetera firmante); el precio es la probabilidad implícita del mercado y sube al comprar; cada participación ganadora paga 1 crédito; comisión de {PredictFee:%} por operación; cada mercado tiene un límite de posición. Las ganancias heredan la proporción de fondos contaminados de la apuesta.¶Las notas de rumores y las ventajas de facción pueden avisarte con anticipación de que algo sucederá; apostar Sí en ese mercado es una apuesta con información privilegiada. Estas apuestas pagan como de costumbre, pero la policía sospecha de información privilegiada: en la liquidación o al vender, el pago de las participaciones con información privilegiada se marca como fondos contaminados en la billetera receptora. Si faltan datos del juego para la ventana (por ejemplo, si te saltaste la liquidación nocturna), el mercado se anula y se reembolsa la apuesta.§Reacción a las noticias: cada noche, cada mercado abierto se mueve a medio camino hacia la probabilidad justa según la información pública, más algo de ruido; por tanto, quien lea primero el periódico, una nota de rumores o una ventaja de facción puede comprar antes y vender tras la fluctuación en vez de esperar a la liquidación. La lista de pistas en el panel del mercado muestra lo que sabes sobre él: cronogramas, enfriamientos, el día del halving, valores recientes de gas, el nivel de la reserva de CRA y anuncios de la era ASIC.¶Patrones que puedes deducir: las operaciones de facción se activan mediante valores de poder ocultos al alcanzar ciertos umbrales (por ejemplo, una represión requiere Seguridad >= 20 y Mercado negro >= 40, y reduce Seguridad en 20); el gas sigue un ciclo de siete días; el ancla de precio se eleva progresivamente la semana previa a un halving; las represiones y los apagones programados mueven el ancla, pero el precio de mercado no los refleja por adelantado; cuanto más rápido se agota la reserva (más staking hay), más pronto advierte CRA; el mercado del precio de PSC puede verse afectado por tus propias órdenes grandes. El traficante de información (requiere suficiente reputación en el Mercado negro) vende un informe de situación (los cinco valores de poder y lo que cada facción puede iniciar ahora, en CRT) y tres niveles de pistas confidenciales (solo para operaciones de facción y la era ASIC, que ya están decididas; la precisión aumenta con cada nivel; su precio varía según el tamaño del mercado; algunas pistas son falsas y dicen lo opuesto a la verdad); apostar por el lado indicado cuenta como una apuesta con información privilegiada. El tamaño del mercado crece con los días y una apuesta incorrecta pierde todo el importe apostado, así que no pongas todo en un solo mercado.§Controles de manipulación: tus órdenes grandes al contado en Poinbase desvían el precio de donde estaría sin ti (el desvío decae cada noche con la reversión del precio; la pista del mercado lo muestra). Una vez que el desvío supera el {ManipFree:%}, si obtienes ganancias a partir del precio (ganar un mercado del precio de PSC en la dirección que empujaste, o cerrar futuros perpetuos con ganancias en esa dirección), pueden descubrirte: cuanto mayor sea el desvío, más probable será (tope: {ManipMax:%}). Si te descubren, el pago se realiza igualmente: el pago de la predicción se convierte en fondos contaminados en la billetera, la ganancia de futuros perpetuos se convierte en fondos contaminados en la cuenta de Poinbase y el periódico informa de la investigación.¶Los fondos contaminados no pueden superar el valor de la billetera en ese momento: al añadirse, el exceso se registra como fraude al {PredictFraudShare:%}, hasta {PredictFraudCap} por vez. Tanto las apuestas con información privilegiada como la manipulación siguen esta regla. Vender en corto para luego desplomar el precio no garantiza ganancias: el deslizamiento de los futuros perpetuos en ambas direcciones y la operación de ida y vuelta al contado suelen costar más de lo que gana la posición corta.§Esquema Ponzi (página Rendimiento, Emitir; a partir del día {PonziMinDay} del juego, uno por partida guardada): elige una tasa diaria ({PonziRates[0]:%}-{PonziRates[4]:%}), paga el costo de publicidad para iniciar (el lanzamiento y el rug pull son llamadas de contrato que se firman en la billetera) y la gente del Nivel inferior depositará CRC según la tasa y tu reputación en el Nivel inferior; cuanto más alta sea la tasa, más rápido llegarán. Cada noche, el interés se paga primero con los nuevos depósitos y luego desde la billetera emisora; si no puedes cubrirlo, se produce una corrida bancaria y el esquema colapsa; cada noche se retira el {PonziWithdraw:%} del fondo, y cuanto más grande sea el fondo y más alta la tasa, más probable será una denuncia, lo que también causará su colapso. Al colapsar, el fondo es confiscado. Puedes hacer un rug pull al fondo en cualquier momento (haz clic dos veces para confirmar): se transferirá a la billetera emisora totalmente contaminado (lávalo antes de retirarlo). Tanto hacer un rug pull como el colapso registran antecedentes por fraude y ponen a cero tu reputación en el Nivel inferior. La línea de rumores en la calle indica el nivel de riesgo de denuncia.§Estafas: mechas - algunas mañanas el precio se dispara o se desploma {WickMin:%}-{WickMax:%} al abrir; la mayor parte se revierte esa noche, pero algunas son reales; el precio de marca de futuros perpetuos solo toma la mitad, así que no vendas por pánico ante una mecha.¶Airdrops (página de Airdrops de Web3): cada airdrop exige primero autorizar la billetera (un contrato de autorización firmado) y luego firmar la reclamación; revisa el alcance de la aprobación antes de autorizar: los airdrops legítimos no requieren aprobación o solo una pequeña de unas decenas; una aprobación ilimitada o muy superior a la recompensa es phishing, a menudo bajo un nombre similar (0 por o, 1 por l), y una o dos noches después retiran esa moneda de la billetera. Las aprobaciones figuran a la derecha de la página de Airdrops y pueden revocarse con una firma, tras lo cual no podrán retirar nada.¶Fondos de rendimiento de terceros (página de Rendimiento, Depósito): {YieldRates[0]:%}-{YieldRates[2]:%} al día; puedes ver la reserva, si hay bloqueo temporal y auditoría, pero no si es una estafa: a mayor tasa, mayor probabilidad de rug pull; un bloqueo temporal y una auditoría lo hacen menos probable; un fondo honesto cierra y devuelve el capital cuando su reserva no puede pagar intereses, mientras que un fondo fraudulento puede desaparecer cualquier noche. Los fondos con bloqueo temporal tardan {YieldLockDays} días en retirarse.¶Falso soporte: alguien en el mostrador que afirma ser de soporte de Poinbase te pide transferir CRC a una ""dirección segura"": Poinbase nunca hace visitas ni pide transferir. Transferencias falsas: un cliente que paga con monedas y empieza con ""ya lo envié, aquí está la captura, dámelo"" nunca paga; los honestos dicen que la confirmación en cadena tarda un momento.§Gráficos: la página spot de Poinbase y la página de comercio de Web3 pueden alternar entre velas diarias de cada moneda (la página de futuros perpetuos muestra el producto actual, la de predicciones muestra PSC), verde al alza y rojo a la baja; la línea amarilla es el promedio de 7 días (la tasa de financiación de futuros perpetuos la utiliza); las barras inferiores son el volumen (gris para el mercado, cian para ti: spot, DEX, acuñar / quemar, canjes de Ponero y aperturas/cierres de futuros perpetuos cuentan todos). Cuanto mayor sea el movimiento, más opera el mercado; las mechas dejan sombras largas.§Vínculos de la historia: las decisiones en las tramas del juego alteran este mercado; el periódico las publica al día siguiente y el mercado tarda unos días en reaccionar. Pruebas de Serpico a la Revolución: se inyectan fondos a la reserva de CRA, la probabilidad de colapso se reduce a la mitad por {StorySecDays} d y SPARK sube {StorySerpicoSpark:+%} a lo largo de {StorySparkNights} noches; al Mercado negro: se reducen a la mitad las probabilidades de desanclaje de CRT y de delación; a Seguridad: por {StorySecDays} d, las revisiones de retiro, las sanciones al mezclador y las inspecciones por manipulación son más estrictas. Eleanor filtra la unidad de datos: se duplica la probabilidad de depreciación del custodio de CRC y SPARK sube {StoryLeakSpark:+%}; si la devuelve: la probabilidad de desanclaje de CRC se reduce a la mitad. Agente Lun bajo arresto: revisiones de retiro e inspecciones por manipulación más estrictas por {StoryLunDays} d.¶Operador del mezclador Tumbler (tras desbloquear el mezclador, a partir del día {TumblerMinDay}): visita tu tienda varias veces y al final te pide ocultar una unidad de claves. Ocultarla y devolvérsela: las comisiones del mezclador se reducen a la mitad y el conjunto de anonimato crece, además de recibir un regalo; pero la unidad es Contrabando y se añadirá a tu expediente si un registro la descubre mientras tanto. Denunciarlo: obtienes una recompensa y Reputación con Seguridad, y el mezclador se clausura (las monedas en tránsito se recuperan). Venderla al Mercado negro: recibes una suma de CRT (la mitad con Fondos contaminados) y Reputación con el Mercado negro; tras esto, las comisiones del mezclador aumentan y sube la probabilidad de un rug pull.¶Tras Tumbler: entre su segunda y tercera visita, un Agente de Seguridad viene a preguntar si ha estado en tu tienda. Admitirlo: Reputación con Seguridad +{TumblerAgentSecRep}; pero si luego ocultas la unidad para él, el agente registrará la tienda el día antes de que Tumbler vuelva a buscarla, confiscándola y registrando cargos de Contrabando si la encuentra. Si la clave cae en manos de Seguridad (lo denuncias, confiscan la unidad o ya no la tienes cuando él regrese), se reconstruyen los registros del mezclador: toda contaminación lavada en los pagos del mezclador durante los últimos {TumblerLeakDays} d se añade de vuelta a las billeteras originales, y la parte que exceda el valor de la billetera se registra como fraude. Una denuncia da lugar a un juicio: puedes apostar por el veredicto en el Mercado de predicción y el periódico cubre las audiencias cada día; si resulta absuelto, tomará represalias. Si vendiste la unidad, el Mercado negro hace un rug pull {TumblerBmRugMin}–{TumblerBmRugMax} d después, se pierde cada moneda en tránsito en el mezclador y él también tomará represalias. Si ocultas la unidad y se la devuelves, te dará un aviso la noche previa a una redada de Seguridad. {TumblerRebrandDays} d tras clausurarse el mezclador, este vuelve a estar en línea con un nuevo nombre; algunos son señuelos de Seguridad y cada moneda retirada queda marcada. Desconfía de comisiones que parezcan demasiado bajas.§Mezclador y moneda de privacidad: elige una moneda, cantidad y rondas; cada ronda cobra una comisión y reduce la contaminación, las rondas equivalen a días de espera y las monedas vuelven a la misma dirección; cuanto más deposites, peor será la limpieza.¶Canje de moneda de privacidad (página de comercio Web3, requiere reputación con el mercado negro): Ponero es una moneda de privacidad y canjear hacia ella elimina la contaminación de ese valor; comisión de {PoneroFee:%} en cada sentido con un límite diario; la moneda canjeada desde Ponero no tiene origen y la revisión de cumplimiento se vuelve más estricta.§Clientes OTC (mejora de red ""Mostrador OTC""): la Lámpara negra suma un objetivo más: Cliente OTC (haz doble clic en la lámpara para alternar). Solo se enciende en la vitrina y atrae personas igual que la Lámpara negra original, según la cantidad de lámparas y tu Reputación en el Mercado negro; la mejora incluye una lámpara. La mitad de los clientes quiere venderte monedas y la otra mitad comprártelas, siempre en efectivo. Tras escuchar la propuesta del cliente, elige hablar en la terminal: esta abrirá la página de comercio en mostrador mientras el cliente espera en el mostrador. Puedes aceptar solo una parte del trato, al 25% / 50% / 75% / 100% o ingresando una cantidad manual, y el efectivo se ajusta en proporción; elige Pasar o despacha al cliente para rechazarlo. El volumen de los tratos aumenta con el alquiler.¶Clientes vendedores: al cerrar el trato pagas en efectivo y las monedas van directo a la billetera conectada. Si ocurre algo en la estación, las monedas suelen provenir de allí: CRT durante una guerra de bandas o una redada; PSC durante una incursión de la Revolución en el Nivel superior o disturbios en el Nivel inferior, contaminadas por el total de su valor de mercado. De lo contrario, serán PSC, CRT o CRA al azar, con una contaminación del {OtcTaintMin:%}–{OtcTaintMax:%} de su valor, y cuanto más sucias sean las monedas, más baratas serán (el precio solicitado baja del {OtcCutClean:%} al {OtcCutDirty:%} del valor). El cliente no revela qué tan sucias están las monedas: la página de comercio muestra su dirección y Buscar abre su historial en el Explorador; entre más fondos provengan del Mezclador, de la plataforma del Mercado negro o de direcciones de estafa, más sucias estarán. Tras abrir el mostrador de Ponero, de vez en cuando alguien venderá Ponero, el cual no tiene contaminación, pero cuesta más. La contaminación añadida no puede superar el valor de la billetera; el excedente se registra como fraude. De vez en cuando el cliente es un agente encubierto: aceptar el trato te hace perder el efectivo y registra receptación, algo más frecuente durante una redada.¶Clientes compradores: pueden pedir cualquier moneda y ofrecen el precio de mercado más un margen aleatorio (del {OtcBidMin:+%} al {OtcBidMax:+%} del precio de mercado, por lo que puede quedar por debajo del mercado); decidir si vale la pena vender depende de ti. Al acordar el trato, se abre PLEDGER con la dirección y la cantidad ya ingresadas; firma y espera la confirmación: en cuanto llegue, el cliente paga en efectivo y se retira. Si el cliente se marcha antes de que firmes, el trato queda anulado. A las monedas que vendes no se les rastrea la contaminación.¶Mi mezclador (página de Red gris, se incluye con el Mostrador OTC): deposita fondos para abrirlo; los clientes depositan monedas contaminadas y, tras unos días, se pagan los retiros mientras tú te quedas con la comisión. Cada ronda limpia parte de la contaminación según el conjunto de anonimato, formado principalmente por tu capital y las ganancias no retiradas (las monedas de clientes en tránsito solo cuentan parcialmente), así que aportar más fondos limpia mejor. Los clientes comparan la comisión más la contaminación restante en los pagos con el mezclador de Tumbler y van a donde sea más barato; una mayor Reputación en el Mercado negro atrae a más clientes. La reputación mostrada refleja la contaminación que quedó recientemente en los pagos. Las ganancias por comisiones permanecen en el fondo y salen totalmente contaminadas al retirarlas; el capital se recupera con su propia contaminación. A mayor tráfico aumenta la presión policial (un fondo más grande oculta las monedas un poco mejor, pero también atrae más tráfico, por lo que en total llama más la atención) y, con ello, la probabilidad de una redada de Seguridad: el capital, las ganancias y las monedas de los clientes se confiscan, se registra receptación y el mezclador se clausura por {OwnMixSeizeDays} d. De vez en cuando, un agente encubierto deposita en una noche de operaciones, lo cual también registra receptación. Puedes hacer un rug pull en cualquier momento: todo, incluidas las monedas de los clientes, pasa a tus manos totalmente contaminado, se registra fraude, baja la Reputación en el Mercado negro y el mezclador cierra definitivamente.§Revisión de cumplimiento de retiros (la pantalla no muestra el límite ni la probabilidad de detección; las reglas son estas): retirar CRC de Poinbase por créditos se evalúa según la renta actual; un retiro individual superior a {AmlBigRents}x la renta, o totales superiores a {AmlCumRents}x la renta en {AmlWindowDays} días, aumentan la probabilidad de inspección proporcionalmente al exceso; cuando los fondos contaminados alcancen al menos el {AmlTaintRatio:%} de la cantidad, la probabilidad suma 'proporción x {AmlTaintMult}'; monedas devueltas recientemente por el mezclador o desde una billetera marcada suman {AmlMixerBonus:%}; la probabilidad tiene un tope de {AmlMaxChance:%}. Si se detecta: una contaminación inferior al {AmlHeavyRatio:%} es leve: la parte contaminada se confisca y no se registra delito; {AmlHeavyRatio:%} o más es grave: la parte contaminada se confisca y la cantidad contaminada se registra como receptación. Si no se detecta, se recibe el monto total. Los retiros cuestan {ExchangeFee:%} y las ganancias sobre el costo pagan {TaxRate:%} de impuestos. Dividir en montos pequeños, repartir entre varios días y lavar primero reducen la probabilidad, pero nada te dirá el límite ni las probabilidades; calcúlalas tú mismo.¶Antes de destruir una billetera, transfiere las monedas tú mismo y retira posiciones y depósitos primero: todo lo que quede se perderá con la billetera." +guide.web3.text,"Banco y comercio: la página del Banco es de solo lectura y muestra el efectivo, el alquiler y el CRC en tu cuenta de Poinbase. La página de Fondos de Poinbase gestiona depósitos y retiros; primero elige la moneda: CRC puede operar mediante cuenta bancaria o billetera, mientras que cualquier otra moneda solo puede hacerlo mediante billetera. Depositar desde el banco convierte créditos en CRC dentro de tu cuenta de Poinbase; retirar al banco vuelve a convertir CRC en créditos sin revisión (la cuenta de Poinbase solo contiene dinero limpio). Retirar a una billetera requiere una dirección de destinatario y varias confirmaciones antes de llegar; la tarifa de Gas es fija en nivel normal y se descuenta de la moneda enviada. Un formato de dirección o suma de verificación incorrecto se rechaza; si la dirección tiene el formato correcto pero nadie la usa, las monedas se pierden.¶Comercio: PSC son las siglas de Probably Stolen Coin, la moneda extraída por tarjetas gráficas y mineros. El mercado spot de Poinbase tiene dos pares, PSC/CRC y SPARK/CRC, según la moneda seleccionada en el gráfico. Las compras y ventas se ingresan como una cantidad de la moneda negociada; la vista previa muestra la moneda de cotización pagada o recibida, el precio promedio incluye la comisión y el deslizamiento no.¶La página de comercio Web3 permite intercambiar cualquier par de monedas, siempre a través de CRC: con CRC en un extremo se usa un pool; de lo contrario, dos pools, con dos comisiones y deslizamiento acumulado; la vista previa muestra la cantidad recibida, los pools cruzados y la pérdida. Los intercambios entre monedas estables (CRT o CRA frente a CRC) utilizan pools estables: comisión del {StableFee:%} y casi nulo deslizamiento cerca de la paridad; durante una pérdida de paridad la liquidez disminuye, y ante un colapso se retira por completo disparando el deslizamiento.§Billeteras de hardware: las monedas en cadena residen en billeteras de hardware PLEDGER, cada una con sus propios saldos y monedas contaminadas (cada moneda registra cuántas unidades están contaminadas; consulta Contaminación). Una billetera es un objeto: arrástrala a la terminal de comercio para cargarla. Ábrela en la página de Billeteras de la terminal; conéctala y desconéctala en la esquina superior derecha de la terminal. El comercio en la página Web3 y la tienda y el mezclador en la página de la Red gris usan la billetera conectada; sin billetera o sin conexión son de solo lectura y todos los saldos marcan 0. Los clientes que pagan con monedas depositan en la billetera conectada.¶Los pagos (tienda, mezclador, mostrador de Ponero, tarifas de listado) comienzan como una factura en la terminal; ingresa la dirección del destinatario en la billetera y mantén presionado ✓ para firmar. Los dos últimos caracteres de una dirección corresponden a una suma de verificación, por lo que un error de un solo carácter suele detectarse; de vez en cuando resulta ser válido por casualidad y las monedas van a una dirección que nadie usa. Los intercambios en DEX también requieren una firma en la billetera.¶Poinbase es una cuenta de custodia; los depósitos se envían desde una billetera a la dirección de depósito de Poinbase (solo PSC, CRC y SPARK; el intercambio regulado no acepta el CRT del Mercado negro ni el CRA de la Revolución, y la billetera bloquea su envío a la dirección de depósito; solo pueden depositarse monedas limpias, consulta Contaminación) y los retiros se inician en la página de Fondos de Poinbase. El Explorador en la página de Billeteras consulta transferencias por dirección y solo muestra las transacciones reales: cada movimiento entrante y saliente de tus billeteras (transferencias, intercambios en DEX y otras llamadas de contrato, pagos de mineros, retiros, monedas enviadas por otros); Ponero es una moneda de privacidad y nunca se muestra. El Dr. Jackson vende más billeteras de hardware; arrastra una a la terminal de comercio para agregarla, hasta un máximo de {WalletMax}. La tienda tiene opciones más económicas. Una billetera que ya no desees puede destruirse en la página de Billeteras; sus monedas se perderán para siempre, y todo lo que se envíe a su dirección después también se perderá.¶Las transferencias pagan una tarifa de Gas: lenta, normal o rápida, y los precios del Gas suben y bajan en ciclos de aproximadamente una semana; cuando la red está congestionada las tarifas de Gas aumentan y las transacciones lentas pueden ser eliminadas de la mempool. Revisa la dirección completa antes de enviar.§Staking: el CRA en staking en el fondo de la Revolución genera una tasa diaria que se capitaliza en el monto; retirar implica solicitarlo primero y esperar cuatro días, sin intereses durante la espera y sin forma de retirarlo antes. CRA está parcialmente colateralizado: cada CRA está respaldado por la reserva de CRC de la Revolución y por el token de balance SPARK; la cobertura de la reserva y la tasa de colateralización aparecen en la página de staking. Los intereses se pagan con CRA nuevo sin colateral, lo que diluye la cobertura de la reserva, más rápido cuanto más staking haya; si la cobertura es demasiado baja, la Revolución recorta la tasa. La Revolución a veces desvía la reserva, precedida de rumores: es la señal de aviso. Si tras ello la cobertura cae por debajo de {CraCrashRatio:%}, hay colapso: CRA pierde todo su valor en tres días y los cuatro días de desbloqueo serán demasiado lentos; si no baja de ahí, solo hay un descuento, y los fondos de los saqueos a la clase alta van reponiendo la reserva poco a poco.¶Acuñación oficial: depositar CRC y SPARK (proporción según la tasa de colateralización actual; la vista previa indica cuánto hace falta) para acuñar CRA, con una cola de {CraMintDaysMin} a {CraMintDaysMax} días; el CRA acuñado entra directamente en staking. La quema cambia CRA por CRC y SPARK, con una espera igual de larga que el desbloqueo; si la reserva no alcanza, la parte de CRC se reduce según la cobertura. Las acuñaciones y quemas en cola pueden no cumplirse nunca: la probabilidad nocturna es cuánto está el precio de CRA por debajo de 1 multiplicado por {CraRugPerDepeg}; si el precio no está por debajo de 1, no ocurre.¶El staking admite CRA, CRC, CRT y SPARK: los tres últimos se cambian primero por CRA en el mercado secundario al precio de mercado (vía CRC, con comisión y deslizamiento). El precio de SPARK oscila con fuerza y se desploma con el colapso. El staking, la acuñación y la quema son llamadas de contrato y requieren firmar en la billetera.§Mineros (máquinas): Los mineros RatDigg (M1 / M2 / M3) son máquinas independientes con una tasa de hash muy superior a la de una tarjeta y menor consumo de energía por hash; necesitan una batería, admiten módulos y no ocupan ranuras de la plataforma de minería. Solo los venden los camellos de mineros de la tienda, según la Reputación en el Mercado negro (M1 {AsicRepM1}, M2 {AsicRepM2}, M3 {AsicRepM3}), a veces de segunda mano. Cuando uno queda quemado, repáralo arrastrándole componentes electrónicos en orden; volverá con {AsicRepairHealthCut} menos de salud. Entre el día {EraMin} y el día {EraMax} llega una ""era de los mineros"", anunciada en el periódico unos días antes: las grandes granjas reducen a la mitad sus costos de energía, la tasa de hash de la red aumenta, las ganancias de los mineros de GPU se diluyen y las tarjetas de gama baja apenas generan ingresos, mientras que los mineros siguen rindiendo bien.¶Dirección de pago: cada minero (plataformas de minería y mineros ASIC) tiene una dirección de pago configurada en su propia ventana; su producción de minería se envía allí cada noche en proporción a la tasa de hash, por lo que dos mineros pueden pagar a dos direcciones distintas. Por defecto no está configurada; sin dirección, o con una billetera destruida, esa parte se pierde, así que cambia la dirección cuando cambies de billetera.¶Los turbocompresores funcionan en plataformas de minería y mineros con las mismas reglas que en otras máquinas: cada uso ejecuta un ciclo adicional, lo que significa minar una noche de inmediato. El ciclo consume la energía de una noche, su producción se calcula según la tasa de hash actual de la red y va a la dirección de pago de esa máquina, y cuenta como una ronda de desgaste y control de muerte súbita; la máquina seguirá minando como de costumbre esa noche.§Futuros perpetuos: la pestaña Perpetuos en Poinbase usa el CRC de tu cuenta como margen, hasta {PerpPscLev}× en PSC y {PerpSparkLev}× en SPARK, solo margen aislado, una sola posición a la vez (nunca en largo y corto a la vez); para aumentarla solo se puede añadir margen. El precio de ejecución es peor que la cotización (más aún con órdenes grandes, como en el fondo al contado) y tanto abrir como cerrar cobran comisión. La liquidación solo se verifica por la noche con respecto al precio promedio diario: un capital inferior al {PerpMaint:%} del nocional borra el margen. También hay una tasa de financiación nocturna; cuando el precio está por encima de su promedio de 7 días, los largos pagan a los cortos.¶Las posiciones de otros traders también se liquidan con el mercado: la mayoría de las liquidaciones dejan margen que va al fondo de seguro, y cuanto más rápido el movimiento, más acaban en quiebra, con el fondo cubriendo la diferencia; tras un gran movimiento en un día, el periódico informa de cuántos traders fueron liquidados y por cuánto (tu posición incluida). Si una liquidación pierde más que el margen, el fondo de seguro cubre la diferencia; cuando este se agota (solo una oleada extrema de quiebras en todo el mercado lo provoca), las posiciones ganadoras sufren un desapalancamiento auto y ceden la mitad de sus ganancias; cualquier faltante posterior se convierte en tu deuda. La deuda crece un {PerpDebtInterest:%} al día, se liquida primero con el CRC de la cuenta cada noche, bloquea nuevas posiciones y retiros de fondos, y tras {PerpDebtDays} días se confiscan artículos de tu tienda para cubrirla; lo que aún no se cubra se cancela y la cuenta de futuros perpetuos queda suspendida por {PerpBanDays} días.§Tienda: solo monedas, no CRC, {BmPremium:%} por encima de los canales habituales, con recargo adicional en artículos de alta tecnología y tarjetas gráficas; las monedas con las que pagas descuentan su parte proporcional de monedas contaminadas y los artículos no llevan la etiqueta de robado; las tarjetas gráficas pueden ser falsas, inspecciónalas por tu cuenta.¶Compras en la tienda: elige un vendedor a la izquierda, los estantes están a la derecha, y tras pulsar 'Comprar', el panel de pago define la cantidad, el método de pago y la moneda. Cada tipo de vendedor acepta monedas diferentes: hardware y tecnología aceptan PSC y CRT; armas, drogas, químicos, documentos, lujo y vendedores particulares aceptan CRT y la moneda de privacidad; agricultura, ganadería, agua y destilería aceptan PSC y CRA; el mercado spot de la plataforma acepta PSC, CRT y CRA. Si no tienes la moneda que acepta el vendedor, puedes usar la conversión automática integrada: cambia desde otra moneda de la billetera con un {BmAutoSwapSlip:%} de deslizamiento y requiere firmar una sola vez; o puedes cambiar tú mismo en el DEX primero, con mucho menor deslizamiento pero con un paso adicional. Las tarifas de listado también eligen la moneda al momento de pagar.¶Carrito de la tienda: 'Comprar' en un estante agrega al carrito; el carrito flotante en la parte inferior derecha muestra la cantidad y abre el proceso de pago. El proceso de pago muestra el carrito a la izquierda (agrupado por vendedor, cantidades ajustables, artículos eliminables, depósito de garantía o liberación anticipada para los vendedores que lo permitan) y el pago a la derecha: cada vendedor tiene una dirección de destinatario diferente, por lo que pagas vendedor por vendedor: elige una moneda que acepte ese vendedor, genera una factura y transfiere desde la billetera; o realiza una conversión automática desde otra moneda en la billetera ({BmAutoSwapSlip:%} de deslizamiento adicional) y firma una vez para ese vendedor.§Pedidos y venta: Los pedidos son más baratos que al contado, pero tardan días y pueden ser interceptados; los mercaderes venden por tipo con su propio factor de precio; a partir de {BmBulk1Count}+ artículos se aplica un {BmBulk1Discount:%} de descuento y con {BmBulk2Count}+, un {BmBulk2Discount:%}; un mercader mayorista aparece al azar con los precios más bajos, pero con {BmBulkDays} d de espera; el depósito de garantía cuesta un {BmEscrowFee:%}, se libera al entregar y se reembolsa si el vendedor huye; la liberación anticipada descuenta otro {BmAdvanceDiscount:%}, pero si es un estafador se quedará con el dinero y solo la aceptan vendedores con {BmAdvanceMinTrades}+ operaciones; la plataforma misma puede hacer un rug pull o ser intervenida por Seguridad, o un vendedor puede caer bajo arresto, tras lo cual tus pedidos se rastrearán y se registrarán delitos; los rumores del foro sirven de advertencia. Un paquete interceptado a veces se convierte en agentes de Seguridad a tu puerta: firmar registra el delito en el acto y confisca la mercancía; rechazarlo solo cuesta el pago.¶Venta: en la pestaña Vender de la tienda, pon a la venta contrabando, artículos de alta tecnología y tarjetas gráficas del almacén de {BmSellMin}x a {BmSellMax}x el precio de referencia. Cuanto mayor sea el multiplicador, más lenta será la venta (menos de {BmSellFastMult}x: aprox. {BmSellDaysFast} d; {BmSellDay1Mult}x: aprox. {BmSellDays1} d; {BmSellMax}x: aprox. {BmSellDaysMax} d), y mayor y más probable será la contaminación del pago, la cual también aumenta según lo vendido en los últimos 7 días; los artículos robados contaminan el pago según su nivel de búsqueda (el % de búsqueda de las monedas del pago estará contaminado); la pestaña Vender abre tu escaparate de artículos listados, y «Añadir artículos» prepara más: los artículos idénticos se agrupan, las teclas − y + ajustan la cantidad, el multiplicador se elige a la izquierda y los productos solo se ponen a la venta tras pagar la tarifa de publicación con el botón Estante; todas las unidades de un artículo comparten multiplicador; para cambiarlo, retíralas todas primero; hasta {BmMaxKinds} tipos a la vez y un máximo de {BmMaxStack} de cada uno, con una tarifa de publicación de {BmListFee:%} por unidad; los artículos se pueden retirar del escaparate para volver al almacén (la tarifa no se reembolsa); «Monedas aceptadas» en el escaparate permite elegir qué monedas aceptas: cada moneda adicional añade una tirada de venta extra cada noche (en orden aleatorio y con un número distinto de compradores por moneda), así que aceptar más monedas vende más rápido y el pago llega en la moneda de la tirada ganadora; comisión del {BmCommission:%}; el pago queda retenido {BmSaleHold} d antes de llegar a tu billetera; una tarjeta falsa puede ser detectada y devuelta, perjudicando tu calificación; si la plataforma hace un rug pull, los artículos listados y los pagos pendientes se pierden.§Mercados de predicción (página Predicción de Web3, a partir del día {PredictUnlockDay}): cada mercado es una pregunta de sí/no sobre eventos que el propio juego determina o programa: la aparición de una noticia, el inicio de una operación de facción, la pureza del agua de mañana o el precio de PSC. Un mercado permanece abierto hasta que comienza su ventana y se liquida en la noche del último día de la ventana. Compra Sí o No con CRC desde tu billetera en cadena (una llamada de contrato: firma en la billetera; la posición pertenece a la billetera firmante); el precio es la probabilidad implícita del mercado y sube a medida que compras; cada participación ganadora paga 1 crédito; tarifa de {PredictFee:%} por operación; cada mercado tiene un límite de posición. Si el CRC que apostaste estaba parcialmente contaminado, esa proporción del pago también estará contaminada.¶Las notas de rumores y las ventajas de facción te permiten saber de antemano si algo va a ocurrir; apostar Sí en ese mercado cuenta como apuesta con información privilegiada. Las apuestas con información privilegiada pagan como de costumbre, pero la policía sospechará uso de información privilegiada: en la liquidación o venta, el pago correspondiente a las participaciones con información privilegiada se marcará como monedas sucias en la billetera receptora. Si faltan datos del juego para esa ventana (por ejemplo, si te saltaste la liquidación nocturna), el mercado se anula y se reembolsa la apuesta.§Reacción a las noticias: cada noche, cada mercado abierto se mueve a medio camino hacia la probabilidad justa según la información pública, más algo de ruido; por tanto, quien lea primero el periódico, una nota de rumores o una ventaja de facción puede comprar antes y vender tras la fluctuación en vez de esperar a la liquidación. La lista de pistas en el panel del mercado muestra lo que sabes sobre él: cronogramas, enfriamientos, el día del halving, valores recientes de gas, el nivel de la reserva de CRA y anuncios de la era ASIC.¶Patrones que puedes deducir: las operaciones de facción se activan mediante valores de poder ocultos al alcanzar ciertos umbrales (por ejemplo, una represión requiere Seguridad >= 20 y Mercado negro >= 40, y reduce Seguridad en 20); el gas sigue un ciclo de siete días; el ancla de precio se eleva progresivamente la semana previa a un halving; las represiones y los apagones programados mueven el ancla, pero el precio de mercado no los refleja por adelantado; cuanto más rápido se agota la reserva (más staking hay), más pronto advierte CRA; el mercado del precio de PSC puede verse afectado por tus propias órdenes grandes. El traficante de información (requiere suficiente reputación en el Mercado negro) vende un informe de situación (los cinco valores de poder y lo que cada facción puede iniciar ahora, en CRT) y tres niveles de pistas confidenciales (solo para operaciones de facción y la era ASIC, que ya están decididas; la precisión aumenta con cada nivel; su precio varía según el tamaño del mercado; algunas pistas son falsas y dicen lo opuesto a la verdad); apostar por el lado indicado cuenta como una apuesta con información privilegiada. El tamaño del mercado crece con los días y una apuesta incorrecta pierde todo el importe apostado, así que no pongas todo en un solo mercado.§Detección de manipulación: tus órdenes grandes al contado en Poinbase desvían el precio de donde estaría sin ti (la desviación disminuye cada noche con la reversión de precios; la pista del mercado lo muestra). Una vez que la desviación supera el {ManipFree:%}, si obtienes ganancias del precio (ganar un mercado de precio de PSC en la dirección que empujaste o cerrar un contrato perpetuo con ganancias en esa dirección), pueden descubrirte: cuanto mayor sea el desvío, más probable será (con un límite de {ManipMax:%}). Si te descubren, el pago se procesa igualmente: el pago de la predicción se marca por completo como monedas sucias; las ganancias del perpetuo permanecen en la cuenta y un {PredictFraudShare:%} de ellas se registra como prueba de fraude (hasta {PredictFraudCap}); el periódico informa sobre la investigación.¶Vender en corto y tirar el precio no es garantía de ganancia: el deslizamiento del perpetuo en ambos lados y la ida y vuelta al contado suelen costar más de lo que genera la posición corta.§Esquema Ponzi (página Rendimiento, Emisión; a partir del día {PonziMinDay}, uno por partida): elige una tasa diaria ({PonziRates[0]:%}-{PonziRates[4]:%}), paga los costos de publicidad para iniciar (lanzar y hacer un rug pull son llamadas de contrato firmadas en la billetera) y la gente del nivel inferior depositará CRC según la tasa y tu reputación en el nivel inferior; cuanto mayor sea la tasa, más rápido llegarán. Cada noche, los intereses se pagan primero con los nuevos depósitos y luego desde la billetera emisora; si no puedes cubrirlos, habrá una retirada masiva y el esquema colapsará; se retira un {PonziWithdraw:%} del fondo cada noche; cuanto mayor sea el fondo y más alta la tasa, más probable será una denuncia, lo que también causará su colapso. Al colapsar, el fondo es confiscado. Puedes hacer un rug pull al fondo en cualquier momento (haz clic dos veces para confirmar): se transfiere a la billetera emisora y todo ese CRC estará contaminado (lávalo antes de depositarlo en Poinbase). Tanto hacer un rug pull como el colapso registran pruebas de fraude y anulan tu reputación en el nivel inferior. La línea de rumores callejeros indica el nivel de riesgo de denuncia.§Estafas: mechas - algunas mañanas el precio se dispara o se desploma {WickMin:%}-{WickMax:%} al abrir; la mayor parte se revierte esa noche, pero algunas son reales; el precio de marca de futuros perpetuos solo toma la mitad, así que no vendas por pánico ante una mecha.¶Airdrops (página de Airdrops de Web3): cada airdrop exige primero autorizar la billetera (un contrato de autorización firmado) y luego firmar la reclamación; revisa el alcance de la aprobación antes de autorizar: los airdrops legítimos no requieren aprobación o solo una pequeña de unas decenas; una aprobación ilimitada o muy superior a la recompensa es phishing, a menudo bajo un nombre similar (0 por o, 1 por l), y una o dos noches después retiran esa moneda de la billetera. Las aprobaciones figuran a la derecha de la página de Airdrops y pueden revocarse con una firma, tras lo cual no podrán retirar nada.¶Fondos de rendimiento de terceros (página de Rendimiento, Depósito): {YieldRates[0]:%}-{YieldRates[2]:%} al día; puedes ver la reserva, si hay bloqueo temporal y auditoría, pero no si es una estafa: a mayor tasa, mayor probabilidad de rug pull; un bloqueo temporal y una auditoría lo hacen menos probable; un fondo honesto cierra y devuelve el capital cuando su reserva no puede pagar intereses, mientras que un fondo fraudulento puede desaparecer cualquier noche. Los fondos con bloqueo temporal tardan {YieldLockDays} días en retirarse.¶Falso soporte: alguien en el mostrador que afirma ser de soporte de Poinbase te pide transferir CRC a una ""dirección segura"": Poinbase nunca hace visitas ni pide transferir. Transferencias falsas: un cliente que paga con monedas y empieza con ""ya lo envié, aquí está la captura, dámelo"" nunca paga; los honestos dicen que la confirmación en cadena tarda un momento.§Gráficos: la página spot de Poinbase y la página de comercio de Web3 pueden alternar entre velas diarias de cada moneda (la página de futuros perpetuos muestra el producto actual, la de predicciones muestra PSC), verde al alza y rojo a la baja; la línea amarilla es el promedio de 7 días (la tasa de financiación de futuros perpetuos la utiliza); las barras inferiores son el volumen (gris para el mercado, cian para ti: spot, DEX, acuñar / quemar, canjes de Ponero y aperturas/cierres de futuros perpetuos cuentan todos). Cuanto mayor sea el movimiento, más opera el mercado; las mechas dejan sombras largas.§Vínculos de la historia: las decisiones en las tramas del juego modifican este mercado; el periódico las publica al día siguiente y el mercado tarda unos días en reaccionar. Pruebas de Serpico a la Revolución: se inyectan fondos a la reserva de CRA, la probabilidad de colapso se reduce a la mitad durante {StorySecDays} d. y SPARK sube {StorySerpicoSpark:+%} en {StorySparkNights} noches; al Mercado negro: las probabilidades de desanclaje de CRT y de delación se reducen a la mitad; a Seguridad: durante {StorySecDays} d. el mezclador limpia peor (cada ronda ×{StorySecMixClean}) y las sanciones al mezclador y los controles de manipulación son más estrictos. Eleanor filtra la unidad: se duplica la probabilidad de reducción contable del custodio de CRC y SPARK sube {StoryLeakSpark:+%}; la devuelve: la probabilidad de desanclaje de CRC se reduce a la mitad. Agente Lun bajo arresto: durante {StoryLunDays} d. los controles de manipulación son más estrictos y hay más clientes OTC encubiertos.¶Operador del mezclador Tumbler (tras desbloquear el mezclador, a partir del día {TumblerMinDay}): te visita varias veces y finalmente te pide ocultar una unidad de claves. Ocúltala y devuélvesela: las comisiones del mezclador se reducen a la mitad, el conjunto de anonimato crece y recibes un obsequio; pero la unidad es contrabando y quedará registrada en tu expediente si una inspección la descubre en el ínterin. Denúncialo: obtienes una recompensa y Reputación con Seguridad, y el mezclador se clausura (las monedas en su interior se devuelven). Véndela al Mercado negro: obtienes una suma de CRT (la mitad contaminada) y Reputación con el Mercado negro, tras lo cual las comisiones del mezclador aumentan y sube la probabilidad de un rug pull.¶Tras Tumbler: entre su segunda y tercera visita, un Agente de Seguridad viene a preguntar si ha estado en tu tienda. Admítelo: Reputación con Seguridad +{TumblerAgentSecRep}; pero si luego le ocultas la unidad, el agente registrará la tienda el día previo a que Tumbler vuelva a buscarla, y si la encuentra, confiscará la unidad y registrará contrabando. Si la clave termina en manos de Seguridad (lo denuncias, confiscan la unidad o ya no la tienes cuando vuelva), se reconstruyen los registros del mezclador: el {PredictFraudShare:%} de la contaminación lavada en los retiros del mezclador en los últimos {TumblerLeakDays} d. se registra como fraude (hasta {PredictFraudCap}). Una denuncia conduce a un juicio: puedes apostar por el veredicto en el Mercado de predicción y el periódico cubre las audiencias cada día; si es absuelto, se vengará. Si vendiste la unidad, el Mercado negro hace un rug pull {TumblerBmRugMin}–{TumblerBmRugMax} d. después, se pierden todas las monedas en tránsito en el mezclador y él también se vengará. Oculta la unidad y devuélvesela, y te avisará la noche previa a una represión de Seguridad. {TumblerRebrandDays} d. después de que el mezclador cierre, vuelve a estar en línea con un nuevo nombre; algunos de estos son señuelos de Seguridad y cada moneda retirada de uno vuelve contaminada. Desconfía de comisiones que parezcan demasiado bajas.§Mezclador y moneda de privacidad: elige moneda, cantidad y rondas; cada ronda cobra una comisión y limpia parte de las monedas contaminadas, las rondas equivalen a días de espera y las monedas vuelven a la misma dirección; cuanto más deposites, peor será la limpieza. Durante las represiones el mezclador puede ser sancionado; los pagos que venzan en el ínterin no se limpian y vuelven totalmente contaminados.¶Canje de monedas de privacidad (página de comercio Web3, requiere Reputación con el Mercado negro): Ponero es una moneda de privacidad; las monedas contaminadas canjeadas simplemente desaparecen y el Ponero obtenido está limpio; comisión del {PoneroFee:%} en cada sentido, y los canjes de entrada y salida comparten un límite diario de {PoneroDailyCap} créditos.§Clientes OTC (mejora de red ""Mostrador OTC""): la Lámpara negra obtiene un objetivo adicional: Cliente OTC (haz doble clic en la lámpara para alternar). Solo se ilumina en la vitrina y atrae personas al igual que la Lámpara negra original, según la cantidad de lámparas y tu Reputación con el Mercado negro; la mejora incluye una lámpara. La mitad de los clientes desea venderte monedas y la otra mitad desea comprártelas, siempre en efectivo. Tras exponer el cliente su oferta, elige hablar en la terminal: la terminal abre la página de comercio de mostrador mientras el cliente espera allí. Puedes aceptar solo una parte del trato, al 25% / 50% / 75% / 100% o ingresando una cantidad manual, y el efectivo se ajusta en proporción; elige Pasar o despide al cliente para rechazarlo. El volumen de los tratos aumenta con el alquiler.¶Clientes vendedores: al concretar un trato pagas en efectivo y las monedas van directo a la billetera conectada. Cuando ocurre algún evento en la estación, las monedas suelen provenir de allí: CRT durante una guerra de pandillas o una represión; PSC durante una incursión de la Revolución en el Nivel superior o disturbios en el Nivel inferior, todas ellas contaminadas. De lo contrario, son PSC, CRT o CRA al azar, con un {OtcTaintMin:%}–{OtcTaintMax:%} contaminado, y cuanto más contaminadas estén las monedas, más baratas son (el precio pedido cae del {OtcCutClean:%} al {OtcCutDirty:%} de su valor). El cliente no indica qué tan contaminadas están las monedas: la página de comercio muestra su dirección y Consultar abre su historial en el explorador; cuanto más provenga del mezclador, de plataformas del Mercado negro o de direcciones de estafa, más contaminadas estarán. Una vez abierto el mostrador de Ponero, de vez en cuando alguien vende Ponero, que no lleva contaminación pero cuesta más. De vez en cuando el cliente es encubierto: aceptar el trato supone perder el efectivo y registra receptación, lo que ocurre con mayor frecuencia durante una represión.¶Clientes compradores: pueden solicitar cualquier moneda y ofrecen el precio de mercado más un margen aleatorio (del {OtcBidMin:+%} al {OtcBidMax:+%} sobre el precio de mercado, por lo que puede quedar por debajo de este); depende de ti si vale la pena vender. Al cerrar un trato, se abre PLEDGER con la dirección y la cantidad ya completadas; firma y espera la confirmación, y cuando llegue, el cliente paga en efectivo y se marcha. Si el cliente se marcha antes de que firmes, el trato queda anulado. No se rastrea la contaminación de las monedas que vendes.¶Mi mezclador (página de la Red gris, se incluye con el Mostrador OTC): deposita fondos y ponlo en marcha; los clientes ingresan monedas contaminadas y, tras unos días, se les paga mientras tú conservas la comisión. Cada ronda elimina parte de la contaminación en función del conjunto de anonimato, que se compone principalmente de tu capital y de las ganancias aún no cobradas (las monedas de clientes en tránsito solo cuentan parcialmente), por lo que una mayor financiación limpia mejor. Los clientes comparan la comisión sumada a la contaminación restante en los retiros con el mezclador de Tumbler y eligen la opción más económica; una mayor Reputación con el Mercado negro atrae a más clientes; la reputación visible equivale a la contaminación restante reciente en los pagos. Las ganancias por comisiones permanecen en el fondo y se extraen totalmente contaminadas al retirarlas; el capital vuelve con su propia proporción de monedas contaminadas. Un mayor tráfico aumenta la atención policial (un fondo más grande oculta las monedas un poco mejor, pero también atrae más tráfico, por lo que en general atrae más miradas) y, con ello, la probabilidad de una redada de Seguridad: el capital, las ganancias y las monedas de los clientes son confiscados, se registra receptación y el mezclador queda clausurado durante {OwnMixSeizeDays} d. De vez en cuando, un agente encubierto deposita en una noche de apertura, lo que también registra receptación. Puedes hacer un rug pull en cualquier momento: todo, incluidas las monedas de los clientes, pasa a tus manos totalmente contaminado, se registra fraude, la Reputación con el Mercado negro disminuye y el mezclador se clausura definitivamente.§Contaminación: en cada billetera, cada moneda registra cuántas unidades están sucias (visible en los saldos de la página Billeteras y en PLEDGER). Las monedas sucias provienen de clientes OTC que te venden, clientes que pagan con monedas (según el nivel de sospecha de la mercancía robada), ventas de artículos robados en la Red gris, apuestas con información privilegiada y manipulación en el mercado de predicción, retirar fondos de un esquema Ponzi, ganancias de tu propio mezclador, el CRT por vender la unidad de claves y pagos de mezcladores marcados. La contaminación solo existe en billeteras Web3: al gastar, transferir o pagar comisiones se descuentan monedas sucias en proporción a su tasa de suciedad; intercambiar transfiere esa proporción a la moneda obtenida (cambiar CRT con 60% sucio por PSC da 60% de PSC sucio); Ponero no lleva contaminación. Poinbase solo acepta monedas limpias: cada moneda solo puede depositarse hasta su cantidad limpia y las sucias permanecen en la billetera; así, la cuenta de Poinbase y el banco solo tienen dinero limpio, y retirar al banco no requiere revisión, solo una comisión del {ExchangeFee:%} y un impuesto del {TaxRate:%} sobre las ganancias por encima del costo. Transferir monedas limpias a una billetera no limpia las sucias. Formas de eliminar monedas sucias: el mezclador, intercambiar por Ponero, vender monedas a clientes OTC compradores (las monedas que vendes no se rastrean) y pagar en la tienda Web3.¶Antes de destruir una billetera, transfiere las monedas tú mismo y retira las posiciones y depósitos primero: todo lo que quede se perderá con la billetera." courier.odd1,...Llegó el paquete. courier.odd2,(Mantiene la mano en el bolsillo). Firma aquí. courier.sign,Firmar @@ -362,10 +360,11 @@ hw.wallet.n,Billetera {0} hw.review.own,Billetera propia: {0} hw.review.poinbase,Dirección de depósito de Poinbase poin.deposit,Dirección de depósito: {0} +poin.deposit.clean,Monedas limpias que {0} puede depositar: {1} wallets.count,Billeteras {0}/{1} wallets.col.name,Nombre wallets.col.addr,Dirección -wallets.col.taint,Contaminación +wallets.col.taint,Sucias wallets.open,Abrir wallets.use,Conectar wallets.current,Conectada @@ -379,6 +378,7 @@ hw.paste,Pegar hw.copied,Dirección copiada. hw.copied.addr,Copiado: {0} hw.balance.frozen," (congelado: {0})" +hw.balance.dirty," (sucias: {0})" wallets.destroy,Destruir wallets.destroy.sure,Confirmar wallets.destroyed,Se destruyó {0}: {1} @@ -550,7 +550,7 @@ predict.purity.rust,Agua del nivel superior nightlog.predict.win,"Predicción acertada: ""{0}""; se pagaron {1}." nightlog.predict.lose,"Predicción fallida: ""{0}""; perdiste la apuesta de {1}." nightlog.predict.void,"Predicción anulada: ""{0}""; se reembolsó la apuesta de {1}." -nightlog.predict.insider,"""{0}"" se liquidó por {1}. La policía sospecha de información privilegiada; el pago queda marcado y los fondos contaminados de la billetera aumentan en {2}." +nightlog.predict.insider,"""{0}"" se liquidó por {1}. La policía sospecha información privilegiada; {2} CRC de esa cantidad se marcaron como sucios." predict.tab.markets,Mercados predict.tab.intel,Información predict.acct.crt,{0}: CRT {1} @@ -593,11 +593,10 @@ predict.brief.queued,{0}: operación programada predict.brief.none,{0}: nada que iniciar predict.brief.can,{0}: puede iniciar {1} predict.clue.push,Moviste el precio un {0}%: riesgoso -nightlog.predict.manip,"""{0}"" se liquidó por {1}. Los reguladores sospechan que manipulaste el precio; el pago queda marcado y los fondos contaminados de la billetera aumentan en {2}." +nightlog.predict.manip,"""{0}"" se liquidó por {1}. Los reguladores sospechan manipulación de precio; {2} CRC de esa cantidad se marcaron como sucios." news.manip.title,El exchange investiga operaciones inusuales news.manip.desc,Los reguladores informan que alguien movió el precio con grandes órdenes al contado y obtuvo ganancias con derivados y predicciones; las cuentas involucradas han sido marcadas. -taint.overflow,Los fondos contaminados superan ahora el valor de la billetera; el exceso de {0} se registra como fraude. -perp.manip,Cierre con ganancias de {0}. Los reguladores sospechan de manipulación de precio; la ganancia queda marcada y los fondos contaminados de la cuenta de Poinbase aumentan en {1}. +perp.manip,Cierre con ganancia de {0}. Los reguladores sospechan manipulación de precio; se registra {1} de fraude en tu expediente. web3.sub.ponzi,Rendimiento ponzi.h,Esquema Ponzi ponzi.acct,Billetera emisora {0}: CRC {1} @@ -688,7 +687,7 @@ scam.support.name,Soporte de Poinbase scam.support.1,"Hola, soporte de Poinbase por aquí. Detectamos un inicio de sesión inusual en tu cuenta y fue marcada." scam.support.2,Envía {0} CRC hoy a la dirección segura {1} para verificación; se devolverá inmediatamente después. scam.support.3,"De lo contrario, la cuenta quedará congelada para siempre. Me tengo que ir, no olvides enviarlo." -predict.sold.caught,"Vendido, se recibieron {0}. La policía sospecha de información privilegiada; los ingresos quedan marcados y los fondos contaminados de la billetera aumentan en {1}." +predict.sold.caught,"Vendido, recibiste {0}. La policía sospecha información privilegiada; {1} CRC de esa cantidad se marcaron como sucios." predict.row.move," (anoche {0} {1})" predict.stats.h,Historial (precio prom. apertura / tasa real) predict.stats.row,"{0}: {1} mercados, prom. apertura {2}, ocurrió {3}%" @@ -711,7 +710,7 @@ news.story.serpico_rev.desc,"Según se informa, la Revolución obtuvo pruebas de news.story.serpico_bm.title,El Mercado negro llega a un acuerdo discreto news.story.serpico_bm.desc,"Un documento interno de Seguridad cambió de manos en el Mercado negro. La liquidación en la Darknet ha sido notablemente más estable desde entonces, y los canjes de CRT no han fallado ni una sola vez." news.story.serpico_sec.title,Seguridad inicia una purga interna -news.story.serpico_sec.desc,Seguridad anunció una investigación exhaustiva sobre corrupción interna y mayor control del flujo de dinero. Poinbase endurece la revisión de retiros y se han señalado los servicios de mezcla. +news.story.serpico_sec.desc,Seguridad anunció una investigación exhaustiva sobre la corrupción interna y un mayor control del flujo de dinero; los servicios de mezclador fueron señalados. news.story.eleanor_leak.title,Se filtran datos de cultivo de nutrifrutas news.story.eleanor_leak.desc,El periódico del Nivel inferior publicó una investigación que permite a la nutrifruta volver a dar semillas; las acciones de Pastelle se desplomaron. El banco custodio de fondos del Nivel superior reporta deudas incobrables y la Revolución gana terreno. news.story.eleanor_return.title,Pastelle recupera datos robados @@ -772,7 +771,7 @@ agent.search.none,...Nada. Perdón por la molestia. tumbler.v4.seized.1,Me enteré de que Seguridad registró tu tienda. tumbler.v4.seized.2,Ahora tienen la clave. Van a desenterrar los registros de todos los usuarios. tumbler.v4.seized.3,"Lo que sea que les hayas dicho, ya no quiero saberlo." -nightlog.tumbler.leak,"Seguridad usó la clave de firma de Tumbler para reconstruir los registros del mezclador: la contaminación lavada en pagos ({0}), {1}, se devolvió a las billeteras." +nightlog.tumbler.leak,"Seguridad usó la clave de firma de Tumbler para reconstruir los registros de mezcla: pagos: {0}, con {1} de contaminación lavada; se registra {2} de fraude en tu expediente." nightlog.tumbler.leak.none,Seguridad usó la clave de firma de Tumbler para reconstruir los registros de mezcla. No has retirado nada del mezclador recientemente. nightlog.tumbler.note,"Deslizaron una nota por debajo de la puerta: ""Me debes, y lo voy a recuperar. —T""" nightlog.tumbler.tip,Mensaje de Tumbler: puede que Seguridad inspeccione los servicios de mezclador mañana. @@ -1038,7 +1037,7 @@ otc.cancel,Pasar otc.msg.gone,El cliente se fue. otc.msg.cash,Efectivo insuficiente. otc.msg.sting,"El cliente era un agente encubierto: {0} en efectivo confiscado, receptación registrada." -otc.msg.bought,"Recibiste {0} {1}, pagaste {2} en efectivo." +otc.msg.bought,"Recibiste {0} {1} (sucias: {3}), pagaste {2} en efectivo." otc.msg.sold,"Enviaste {0} {1}, recibiste {2} en efectivo." gray.sub.own,Mi mezclador ownmix.h,Mi mezclador @@ -1088,3 +1087,4 @@ otc.nocash,¿Ni siquiera tienes el efectivo? Olvídalo. otc.nowallet,"No hay billetera conectada, ¿adónde mando las monedas? Olvídalo." otc.sting,Quieto. Seguridad. Compra de fondos robados: el efectivo queda confiscado y esto va a tu expediente. hw.err.poinbase,Poinbase no acepta {0}. +hw.err.tainted,Esta billetera tiene {0} {1} de saldo sucio y Poinbase solo acepta monedas limpias: máximo {2} {1}. diff --git a/src/Decentralized/ModFiles/Localization/fr.csv b/src/Decentralized/ModFiles/Localization/fr.csv index 9078925..9a65732 100644 --- a/src/Decentralized/ModFiles/Localization/fr.csv +++ b/src/Decentralized/ModFiles/Localization/fr.csv @@ -22,7 +22,7 @@ tab.report,Rapport wallet.line,{0} : {1} (environ {2} crédits) wallet.empty,Le portefeuille est vide. wallet.total,Valeur totale : {0} crédits -wallet.taint,Valeur contaminée : {0} crédits +wallet.taint,Pièces contaminées (crédits) : {0} trade.amount,Montant trade.deposit,Déposer des crédits en CRC trade.withdraw,Retirer des CRC en crédits @@ -38,8 +38,6 @@ msg.balance,Solde insuffisant. msg.trade,"Payé {0} {1}, reçu {2} {3}." msg.deposit,{0} crédits déposés en CRC. msg.cashout,{0} crédits reçus. Taxe : {1} crédits. -msg.aml_light,Contrôle de conformité : {0} crédits de fonds contaminés ont été retenus. -msg.aml_heavy,Contrôle de conformité : {0} crédits de fonds contaminés ont été saisis et signalés à la Sécurité. report.none,Aucun rapport de minage pour le moment. report.day,Nuit du jour {0} report.rigs,Plateformes alimentées : {0} sur {1} @@ -141,6 +139,7 @@ col.asset,Actif col.amount,Montant col.value,Valeur col.avg,Achat moy. +col.dirty,Contaminé bank.cash.k,Crédits bank.rent.k,Loyer bank.rent.v,"{0}, échéance dans {1} jour(s)" @@ -152,13 +151,12 @@ stable.ok,Arrimé stable.depeg,Désarrimé stable.warn,Attention : couverture de réserve du staking au plus bas stable.spiral,Effondrement en cours -aml.taint,Part de contamination du compte : {0} % mixer.h,Mixeur mixer.ok,Statut : fonctionnement normal -mixer.sanctioned,Statut : sanctionné (encore {0} jour(s)). Les pièces retirées pendant cette période sont signalées. +mixer.sanctioned,Statut : sanctionné (encore {0} j). Les versements dus pendant cette période ne sont pas nettoyés et reviennent entièrement contaminés. mixer.pending,Dépôts en attente mixer.none,Aucun dépôt en attente. -mixer.col.taint,Contamination +mixer.col.taint,Contaminé mixer.col.ready,Échéance mixer.day,Jour {0} mixer.deposit,Dépôt @@ -169,12 +167,12 @@ mixer.go,Déposer au mixeur mixer.min,Les dépôts doivent valoir au moins {0} crédits. mixer.done,{0} {1} déposés ; retour au jour {2}. mixer.upgrade.title,Mixeur -mixer.upgrade.desc,"Débloque le mixeur sur la page Réseau gris du terminal : déposez des pièces contaminées pour les récupérer quelques jours plus tard avec une contamination réduite. Les retraits de pièces fraîchement mixées font l'objet d'un contrôle plus strict ; en période de répression, le mixeur peut être sanctionné et les pièces retirées pendant cette période sont signalées." +mixer.upgrade.desc,"Débloque le mixeur sur la page Réseau gris du terminal : déposez des pièces contaminées, récupérez-les quelques jours plus tard avec moins de pièces contaminées. En période de répression, le mixeur peut être sanctionné, et les versements dus pendant cette période reviennent entièrement contaminés." news.sanction.title,Mixeur placé sur la liste des sanctions -news.sanction.desc,La Sécurité a sanctionné plusieurs services de mixage. Les fonds retirés des mixeurs au cours des prochains jours seront considérés comme suspects. +news.sanction.desc,La Sécurité a sanctionné une série de services de mixage. Les fonds retirés des mixeurs au cours des prochains jours seront traités comme des fonds contaminés. nightlog.mixer,Le mixeur a restitué {0} {1} ; contamination {2} -> {3}. -nightlog.mixer_flag," (retiré pendant les sanctions ; adresse signalée)" -nightlog.mixer_flag.trap," (l'adresse de retrait est signalée)" +nightlog.mixer_flag," (retiré pendant les sanctions ; intégralité marquée comme contaminée)" +nightlog.mixer_flag.trap," (la Sécurité marque les pièces retirées comme contaminées)" nightlog.mixer_rug,L'opérateur du mixeur a pris la fuite : {0} {1} ne sont jamais revenus. web3.sub.trade,Trading gray.sub.mixer,Mixeur @@ -249,7 +247,7 @@ black.kind.Contraband.3,Contrebande (élevée) black.kind.Tech,High-tech (majoration) nightlog.bm.ready,Marché noir : {0} est arrivé ; un livreur passera dès l'ouverture. guide.web3.title,Manuel Web3 -guide.web3.text,"Banque et trading : la page Banque est en lecture seule et affiche les espèces, le loyer et les CRC du compte Poinbase. La page Fonds de Poinbase gère dépôts et retraits ; on choisit d'abord la pièce : le CRC passe par le compte bancaire ou le portefeuille, les autres pièces uniquement par le portefeuille. Le dépôt depuis la banque convertit les crédits en CRC sur votre compte Poinbase ; le retrait vers la banque reconvertit les CRC en crédits et passe par un contrôle de conformité, qui évalue la contamination du compte Poinbase. Un retrait vers un portefeuille demande l'adresse du destinataire et plusieurs confirmations avant d'arriver ; les frais de gas sont fixés au niveau normal et prélevés sur la pièce envoyée. Un format d'adresse ou un chiffre de contrôle incorrect est refusé ; une adresse au format valide mais que personne n'utilise fait perdre les pièces envoyées.¶Trading : PSC signifie Probably Stolen Coin, la pièce minée par les cartes graphiques et les mineurs (machines). Le spot de Poinbase propose deux paires, PSC/CRC et SPARK/CRC, selon la pièce choisie sur le graphique. Les achats comme les ventes se saisissent en quantité de la monnaie échangée ; l'aperçu indique la monnaie de cotation payée ou reçue, le prix moyen inclut les frais et le glissement non.¶La page de trading Web3 permet d'échanger deux pièces au choix, toujours via le CRC : si le CRC est d'un côté, un seul pool est utilisé, sinon deux pools, avec deux frais et un glissement cumulé ; l'aperçu indique le montant obtenu, le nombre de pools traversés et la perte. Les échanges entre stablecoins (CRT ou CRA contre CRC) passent par des pools stables : {StableFee:%} de frais et quasiment aucun glissement près de l'ancrage ; en cas de désancrage la liquidité s'amincit, et en cas d'effondrement elle est retirée et le glissement s'envole.§Portefeuilles matériels : les pièces sur la blockchain sont conservées dans des portefeuilles matériels PLEDGER, chacun avec ses propres soldes et sa contamination. Un portefeuille est un objet : glissez-le sur le terminal de trading pour le charger. Ouvrez-le sur la page Portefeuilles du terminal ; connectez et déconnectez-le en haut à droite du terminal. Le trading de la page Web3, la boutique et le mixeur de la page Réseau gris utilisent le portefeuille connecté ; sans portefeuille ou sans connexion, ils sont en lecture seule et tous les soldes affichent 0. Les clients qui paient en pièces paient sur le portefeuille connecté.¶Les paiements (boutique, mixeur, comptoir Ponero, frais de mise en vente) débutent par une facture sur le terminal ; saisissez l'adresse du destinataire sur le portefeuille et maintenez ✓ pour signer. Les deux derniers caractères d'une adresse sont une somme de contrôle, de sorte qu'une faute de frappe d'un caractère est généralement interceptée ; il arrive parfois qu'elle soit valide par hasard et les pièces partent alors vers une adresse inutilisée. Les échanges sur le DEX nécessitent également une signature sur le portefeuille.¶Poinbase est un compte dépositaire ; le dépôt s'effectue depuis le portefeuille vers l'adresse de dépôt de Poinbase (uniquement PSC, CRC et SPARK ; la plateforme réglementée n'accepte ni le CRT du Marché noir ni le CRA de la Révolution, et le portefeuille bloque leur envoi vers l'adresse de dépôt), le retrait se lance depuis la page Fonds de Poinbase. L'Explorateur de la page Portefeuilles permet de consulter les transferts par adresse, en n'affichant que les transferts réellement effectués : chaque entrée et sortie de vos portefeuilles (transferts, échanges DEX et autres appels de contrat, gains des mineurs, retraits, pièces que d'autres vous envoient) ; Ponero est une monnaie de confidentialité et n'apparaît jamais. D'autres portefeuilles matériels sont vendus par le Pr Jackson ; glissez-en un sur le terminal de trading pour l'ajouter, jusqu'à {WalletMax} au total. La boutique en propose des moins chers. Un portefeuille devenu inutile peut être détruit sur la page Portefeuilles ; ses pièces sont perdues définitivement, et tout ce qui est envoyé ensuite à son adresse l'est aussi.¶Les transferts sont soumis à des frais de gas : lent, normal ou rapide, et le prix du gas monte et descend sur environ une semaine ; lorsque le réseau est saturé, les frais de gas augmentent et les transactions lentes peuvent être évincées de la mempool. Vérifiez l'adresse complète avant d'envoyer.§Staking : le CRA staké dans le pool de la Révolution rapporte un taux quotidien capitalisé dans le montant staké ; retirer nécessite d'en faire la demande préalable et d'attendre quatre jours, sans intérêt durant cette période ni moyen de récupérer les fonds plus tôt. Le CRA est partiellement collatéralisé : chaque CRA est soutenu par la réserve de CRC détenue par la Révolution et par le jeton d'équilibre SPARK ; le taux de couverture de la réserve et le taux de collatéralisation figurent sur la page de staking. Les intérêts sont versés en nouveaux CRA non collatéralisés, ce qui dilue la couverture de la réserve, d'autant plus vite que le staking est important ; si la couverture est trop faible, la Révolution réduit le taux. La Révolution détourne parfois la réserve, précédée de rumeurs : c'est le présage. Si la couverture tombe ensuite sous {CraCrashRatio:%}, c'est l'effondrement : le CRA perd toute valeur en trois jours et quatre jours de déverrouillage arrivent trop tard ; au-dessus, il y a seulement une décote, et l'argent des pillages de la haute société reconstitue peu à peu la réserve.¶Frappe officielle : déposer du CRC et du SPARK (proportion selon le taux de collatéralisation actuel, l'aperçu indique les montants requis) pour frapper du CRA, avec une file d'attente de {CraMintDaysMin} à {CraMintDaysMax} jours ; le CRA frappé entre directement en staking. La destruction reconvertit le CRA en CRC et SPARK, avec une attente aussi longue que le déverrouillage ; si la réserve est insuffisante, la part de CRC est réduite selon la couverture. Les frappes et destructions en attente peuvent ne jamais être honorées par la Révolution : la probabilité nocturne est l'écart du cours du CRA sous 1 multiplié par {CraRugPerDepeg} ; si le cours n'est pas sous 1, elle est nulle.¶Le staking accepte CRA, CRC, CRT et SPARK : les trois derniers sont d'abord convertis en CRA sur le marché secondaire au cours du marché (via le CRC, avec frais et glissement). Le cours du SPARK oscille fortement et s'effondre lors du krach. Le staking, la frappe et la destruction sont des appels de contrat nécessitant une signature sur le portefeuille.§Mineurs : les mineurs RatDigg (M1 / M2 / M3) sont des machines autonomes dotées de bien plus de puissance de hachage qu'une carte et d'une consommation électrique par hachage plus faible ; ils nécessitent une batterie, acceptent des modules et n'occupent aucun emplacement de plateforme de minage. Seuls les dealeurs de mineurs de la boutique en vendent, selon votre Réputation auprès du Marché noir (M1 {AsicRepM1}, M2 {AsicRepM2}, M3 {AsicRepM3}), parfois d'occasion. Lorsqu'un mineur grille, réparez-le en y faisant glisser des composants électroniques dans l'ordre ; il revient avec {AsicRepairHealthCut} d'état en moins. Entre le jour {EraMin} et le jour {EraMax}, une ""ère des mineurs"" arrive, annoncée dans le journal quelques jours plus tôt : les grandes fermes divisent leurs coûts d'électricité par deux, le taux de hachage du réseau grimpe, les gains des mineurs GPU sont dilués et les cartes d'entrée de gamme ne rapportent presque rien, tandis que les mineurs s'en sortent toujours bien.¶Adresse de paiement : chaque mineur (plateformes et mineurs ASIC) possède une adresse de paiement définie dans sa propre fenêtre ; son rendement de minage y est envoyé chaque nuit proportionnellement à sa puissance de hachage, de sorte que deux mineurs peuvent verser vers deux adresses différentes. Elle n'est pas définie au départ ; sans adresse ou si le portefeuille a été détruit, cette part est perdue, pensez donc à changer d'adresse lorsque vous changez de portefeuille.¶Les turbos fonctionnent sur les plateformes et les mineurs selon les mêmes règles que les autres machines : chaque utilisation lance un cycle supplémentaire, ce qui revient à miner immédiatement une nuit. Ce cycle consomme l'électricité d'une nuit, son rendement est basé sur le taux de hachage actuel du réseau et envoyé à l'adresse de paiement de cette machine, et il compte pour un tour d'usure et de contrôle de mort subite ; la machine mine toujours comme d'habitude cette nuit-là.§Contrats perpétuels : l'onglet Perps de Poinbase utilise le CRC de votre compte comme marge, jusqu'à {PerpPscLev}× sur le PSC et {PerpSparkLev}× sur le SPARK, en marge isolée uniquement, une seule position à la fois (jamais longue et courte à la fois) ; pour l'augmenter, ajoutez de la marge. Le prix d'exécution est moins avantageux que la cotation (d'autant plus pour les ordres importants, comme sur le pool au comptant) et l'ouverture comme la clôture entraînent des frais. La liquidation n'est vérifiée que pendant la nuit selon le prix moyen de la journée : une valeur nette inférieure à {PerpMaint:%} du montant notionnel anéantit la marge. Un financement a également lieu chaque nuit ; lorsque le prix est supérieur à sa moyenne sur 7 jours, les positions longues paient les positions courtes.¶Les positions des autres traders sont aussi liquidées avec le marché : la plupart des liquidations laissent une marge qui va au fonds d'assurance, et plus le mouvement est rapide, plus elles finissent en faillite, le fonds comblant le déficit ; après un fort mouvement sur une journée, le journal annonce combien de traders ont été liquidés et pour quel montant (votre position comprise). Si une liquidation engendre des pertes supérieures à la marge, le fonds d'assurance comble le déficit ; lorsqu'il est à sec (seule une vague extrême de faillites sur tout le marché peut provoquer cela), les positions gagnantes subissent un désendettement auto et abandonnent la moitié de leurs gains ; tout déficit restant devient votre dette. La dette augmente de {PerpDebtInterest:%} par jour, est remboursée en priorité chaque nuit par le CRC présent sur le compte, bloque l'ouverture de nouvelles positions et les retraits, et après {PerpDebtDays} jours, les articles de votre boutique sont saisis pour la rembourser ; tout solde restant impayé est effacé et le compte de contrats perpétuels est banni pendant {PerpBanDays} jours.§Boutique : pièces uniquement, pas de CRC, {BmPremium:%} de plus que les circuits normaux, avec une majoration supplémentaire sur les articles high-tech et les cartes graphiques ; les pièces que vous dépensez transmettent leur part de contamination au vendeur et les marchandises ne portent aucune mention de vol ; les cartes graphiques peuvent être contrefaites, inspectez-les vous-même.¶Achats en boutique : choisissez un vendeur sur la gauche, le rayon se trouve sur la droite, et après « Acheter », le panneau de paiement permet de définir la quantité, le mode de paiement et la monnaie. Chaque catégorie de vendeur accepte des devises différentes : le matériel et la technologie acceptent le PSC et le CRT ; les vendeurs d'armes, de drogues, de produits chimiques, de documents, de luxe et particuliers acceptent le CRT et la monnaie de confidentialité ; l'agriculture, l'élevage, l'eau et la brasserie acceptent le PSC et le CRA ; le marché au comptant de la plateforme accepte le PSC, le CRT et le CRA. S'il vous manque une monnaie acceptée par le vendeur, vous pouvez utiliser la conversion automatique intégrée : elle échange une autre monnaie du portefeuille avec un glissement de {BmAutoSwapSlip:%} et une seule signature ; ou bien effectuez d'abord vous-même l'échange sur le DEX, avec bien moins de glissement mais une étape supplémentaire. Le choix de la monnaie pour les frais de mise en vente s'effectue également au moment du paiement.¶Panier de la boutique : cliquer sur « Acheter » dans un rayon ajoute au panier ; le panier flottant en bas à droite affiche le nombre d'articles et ouvre la caisse. La caisse affiche le panier sur la gauche (regroupé par vendeur, quantités ajustables, articles supprimables, tiers de confiance ou déblocage anticipé pour les vendeurs qui l'autorisent) et le paiement sur la droite : chaque vendeur ayant une adresse de paiement distincte, vous réglez vendeur par vendeur — choisissez une monnaie acceptée par ce vendeur, générez une facture et transférez depuis le portefeuille ; ou convertissez automatiquement depuis une autre monnaie du portefeuille ({BmAutoSwapSlip:%} de glissement supplémentaire) et signez une seule fois pour ce vendeur.§Commandes et vente : les commandes sont moins chères qu'au comptant, mais prennent plusieurs jours et peuvent être interceptées ; les marchands vendent par type selon leur propre coefficient de prix, {BmBulk1Count}+ articles bénéficient de {BmBulk1Discount:%} de réduction et {BmBulk2Count}+ articles de {BmBulk2Discount:%} de réduction, et un marchand de gros apparaît au hasard avec les prix les plus bas mais {BmBulkDays} jours d'attente ; le tiers de confiance coûte {BmEscrowFee:%}, est débloqué à la livraison et remboursé si le vendeur s'enfuit ; le déblocage anticipé accorde {BmAdvanceDiscount:%} de réduction supplémentaire, mais un arnaqueur garde l'argent et seuls les vendeurs ayant au moins {BmAdvanceMinTrades} transactions l'acceptent ; la plateforme elle-même peut faire un rug pull, être reprise par les forces de l'ordre, ou un vendeur peut être arrêté, après quoi vos commandes sont tracées et un crime est enregistré ; les rumeurs sur le forum peuvent servir d'avertissement. Un colis intercepté se traduit parfois par la Sécurité à votre porte : signer enregistre le crime sur place et saisit les marchandises, refuser ne fait perdre que le paiement.¶Vente : dans l'onglet Vente de la boutique, mettez en vente la contrebande, les objets de haute technologie et les cartes graphiques du stockage entre {BmSellMin}x et {BmSellMax}x le prix de référence. Plus le multiplicateur est élevé, plus la vente est lente (sous {BmSellFastMult}x env. {BmSellDaysFast} jour, à {BmSellDay1Mult}x env. {BmSellDays1} jours, à {BmSellMax}x env. {BmSellDaysMax} jours), et plus la contamination du paiement est probable et importante ; elle augmente aussi avec le volume que vous avez vendu sur les 7 derniers jours ; pour un objet volé, le paiement est contaminé selon sa chaleur de recel (paiement × chaleur %) ; l'onglet Vente s'ouvre sur votre vitrine des articles en vente, et « Ajouter des articles » en prépare d'autres : les articles identiques sont regroupés, les touches − et + règlent la quantité, le multiplicateur se choisit à gauche, et l'article n'est mis en vente qu'après paiement des frais de mise en vente via le bouton Étagère ; toutes les unités d'un même article partagent un multiplicateur, il faut donc tout retirer pour le changer ; au maximum {BmMaxKinds} types à la fois et {BmMaxStack} unités par type, frais de mise en vente de {BmListFee:%} par unité ; on peut retirer des articles depuis la vitrine, ils retournent au stockage sans remboursement des frais ; « Cryptos acceptées » sur la vitrine choisit les cryptos que vous prenez : chaque crypto de plus ajoute chaque nuit un tirage de vente (dans un ordre aléatoire, avec plus ou moins d'acheteurs selon la crypto), donc plus vous en acceptez, plus vous vendez vite, et le paiement arrive dans la crypto du tirage gagnant ; commission de {BmCommission:%}, paiement retenu {BmSaleHold} jours avant d'arriver dans votre portefeuille ; une fausse carte peut être repérée et renvoyée, nuisant à votre évaluation ; si la plateforme fait un rug pull, les biens en vente et les paiements non débloqués sont perdus.§Marchés de prédiction (page Prédictions Web3, dès le jour {PredictUnlockDay}) : chaque marché est une question oui/non sur des événements tirés ou planifiés par le jeu : apparition d'une actualité, lancement d'une opération de faction, pureté de l'eau de demain, cours du PSC. Un marché reste ouvert jusqu'au début de sa fenêtre et fait l'objet d'un règlement la nuit du dernier jour de la fenêtre. Achetez « Oui » ou « Non » avec des CRC depuis votre portefeuille on-chain (appel de contrat : signer sur le portefeuille ; la position appartient au portefeuille signataire) ; le cours correspond à la probabilité implicite du marché et augmente à chaque achat ; chaque part gagnante rapporte 1 crédit ; {PredictFee:%} de frais par transaction ; chaque marché a une limite de position. Les gains héritent du ratio de contamination de la mise.¶Les fiches de rumeur et les avantages de faction vous permettent de savoir à l'avance qu'un événement va arriver ; parier « Oui » sur un tel marché est un pari d'initié. Les paris d'initié sont payés normalement, mais la police soupçonne un délit d'initié : lors du règlement ou de la vente, le paiement des parts d'initié est marqué comme fonds contaminés sur le portefeuille bénéficiaire. Si les données de jeu sont manquantes pour la fenêtre (par exemple si vous avez sauté le règlement nocturne), le marché est annulé et la mise est remboursée.§Réaction aux nouvelles : chaque nuit, chaque marché ouvert se rapproche de moitié de la juste probabilité selon les informations publiques, plus un peu de bruit aléatoire ; ainsi, quiconque lit en premier le journal, un billet de rumeur ou un avantage de faction peut acheter en amont et revendre après l'ajustement sans attendre le règlement. La liste d'indices du panneau de marché affiche ce que vous savez à son sujet : plannings, temps de recharge, date du halving, valeurs récentes du gas, niveau de la réserve du CRA, annonces de l'ère ASIC.¶Tendances à déduire : les opérations de faction sont déclenchées par des seuils de puissance cachés (par exemple, une répression nécessite Sécurité >= 20 et Marché noir >= 40, et réduit la Sécurité de 20) ; le gas suit un cycle de sept jours ; le point d'ancrage du cours monte la semaine précédant un halving ; les répressions et coupures de courant planifiées déplacent l'ancre mais le cours du marché ne l'anticipe pas ; plus la réserve s'épuise vite (plus il y a de staking), plus le CRA prévient tôt ; le marché du cours du PSC peut être influencé par vos propres ordres massifs. Le courtier en infos secrètes (nécessite assez de réputation au Marché noir) vend un point de situation (les cinq valeurs de puissance et ce que chaque faction peut lancer actuellement, en CRT) ainsi que trois niveaux de tuyaux d'initié (uniquement pour les opérations de faction et l'ère ASIC, déjà décidées ; la précision augmente à chaque niveau ; tarif selon la taille du marché ; certains tuyaux sont faux et annoncent l'inverse de la vérité) ; parier sur le côté recommandé compte comme un pari d'initié. La taille du marché grandit au fil des jours et un mauvais pari fait perdre toute la mise, ne misez donc pas tout sur un seul marché.§Contrôles de manipulation : vos gros ordres spot sur Poinbase font dévier le cours de son niveau de référence (cet écart diminue chaque nuit avec le retour du cours ; l'indice du marché l'indique). Dès que l'écart dépasse {ManipFree:%}, si vous profitez de ce cours (marché sur le cours du PSC gagné dans le sens provoqué, ou contrat perpétuel clôturé avec profit dans ce sens), vous risquez d'être repéré : plus l'écart est grand, plus le risque est élevé (plafonné à {ManipMax:%}). En cas de détection, le paiement est tout de même effectué : le gain de prédiction devient des fonds contaminés sur le portefeuille, le profit du contrat perpétuel devient des fonds contaminés sur le compte Poinbase, et le journal publie l'enquête.¶Les fonds contaminés ne peuvent dépasser la valeur du portefeuille à ce moment-là : lors de l'ajout, l'excédent est enregistré comme fraude à hauteur de {PredictFraudShare:%}, jusqu'à {PredictFraudCap} à chaque fois. Les paris d'initié et les manipulations suivent cette règle. Vendre à découvert puis dumper n'est pas un gain garanti : le glissement des deux côtés sur les contrats perpétuels et l'aller-retour au comptant coûtent souvent plus que ce que rapporte la position courte.§Système de Ponzi (page Rendement, Lancer un Ponzi ; à partir du jour {PonziMinDay}, un seul par sauvegarde) : choisissez un taux quotidien ({PonziRates[0]:%}-{PonziRates[4]:%}), payez les frais marketing pour vous lancer (lancer le projet et faire un rug pull sont des appels de contrat signés sur le portefeuille), et les habitants du Niveau inférieur déposent des CRC selon le taux et votre réputation au Niveau inférieur ; plus le taux est élevé, plus ils affluent vite. Chaque nuit, les intérêts sont payés d'abord avec les nouveaux dépôts, puis depuis le portefeuille de l'émetteur ; si vous ne pouvez pas les couvrir, une panique bancaire se produit et le système s'effondre ; {PonziWithdraw:%} du pool est retiré chaque nuit, et plus le pool est volumineux et le taux élevé, plus un signalement est probable, ce qui provoque aussi son effondrement. En cas d'effondrement, le pool est confisqué. Vous pouvez faire un rug pull sur le pool à tout moment (cliquez deux fois pour confirmer) : il rejoint le portefeuille de l'émetteur avec des fonds entièrement contaminés (blanchissez-les avant tout retrait). Le rug pull et l'effondrement enregistrent tous deux une fraude et réinitialisent votre réputation au Niveau inférieur. La ligne des rumeurs de la rue indique le risque de signalement.§Arnaques : mèches – certains matins à l'ouverture, le cours est propulsé ou écrasé de {WickMin:%}-{WickMax:%} ; la majeure partie se résorbe le soir même, mais certaines variations sont réelles ; le prix repère des contrats perpétuels n'en prend en compte que la moitié, ne cédez donc pas à la panique en vendant sur une mèche.¶Airdrops (page Airdrops de Web3) – chaque airdrop exige d'abord d'autoriser le portefeuille (un contrat d'autorisation signé), puis de signer la réclamation ; vérifiez la portée de l'approbation avant d'autoriser : les vrais airdrops n'exigent aucune approbation ou une minime de quelques dizaines ; une approbation illimitée ou bien supérieure à la récompense est du phishing, souvent sous un nom trompeur (0 pour o, 1 pour l), et une ou deux nuits plus tard, cette pièce est retirée du portefeuille. Les approbations sont listées à droite de la page Airdrops et peuvent être révoquées en signant, après quoi rien ne peut être prélevé.¶Pools de rendement tiers (page Rendement, Dépôt) – {YieldRates[0]:%}-{YieldRates[2]:%} par jour ; la réserve, la présence d'un verrouillage temporel et d'un audit sont visibles, mais pas s'il s'agit d'une arnaque : plus le taux est élevé, plus le rug pull est probable, un verrouillage temporel et un audit réduisant ce risque ; un pool honnête ferme et restitue le capital quand sa réserve ne peut plus payer les intérêts, alors qu'un pool frauduleux peut disparaître n'importe quelle nuit. Le retrait des pools avec verrouillage temporel prend {YieldLockDays} jours.¶Faux support – quelqu'un au comptoir prétendant appartenir au support de Poinbase vous demande de transférer des CRC vers une « adresse sécurisée » : Poinbase ne se déplace jamais et ne demande jamais de virement. Faux virements – un client payant en pièces qui débute par « déjà envoyé, voici la capture d'écran, donnez l'article » ne paie jamais ; les honnêtes précisent que la confirmation sur la chaîne prend un moment.§Graphiques : la page spot de Poinbase et la page Trading de Web3 permettent d'alterner entre les bougies journalières de chaque pièce (la page des contrats perpétuels affiche le produit en cours, les prédictions affichent le PSC), vert à la hausse et rouge à la baisse ; la ligne jaune est la moyenne sur 7 jours (utilisée pour le financement des contrats perpétuels) ; les barres en bas représentent le volume (gris pour le marché, cyan pour vous : spot, DEX, frappe/brûlage, échanges Ponero et ouvertures/fermetures de contrats perpétuels comptent tous). Plus la variation est forte, plus les volumes échangés sont importants ; les mèches laissent de longues ombres.§Liens scénaristiques : les choix dans les intrigues du jeu modifient ce marché ; le journal les publie le lendemain et le marché met quelques jours à réagir. Preuves de Serpico remises à la Révolution : la réserve de CRA est renflouée, le risque d'effondrement diminue de moitié pendant {StorySecDays} j et le SPARK progresse de {StorySerpicoSpark:+%} sur {StorySparkNights} nuits ; au Marché noir : le risque de décrochage du CRT et de dénonciation diminue de moitié ; à la Sécurité : pendant {StorySecDays} j, les contrôles de conformité sur les retraits, les sanctions contre les mixeurs et la traque des manipulations de marché sont renforcés. Eleanor divulgue les données du disque : le risque de dépréciation du dépositaire de CRC double et le SPARK progresse de {StoryLeakSpark:+%} ; elle le restitue : le risque de décrochage du CRC diminue de moitié. Arrestation de l'Agent Lun : contrôles de conformité sur les retraits et traque des manipulations de marché renforcés pendant {StoryLunDays} j.¶Tumbler, opérateur du mixeur (après déblocage du mixeur, à partir du jour {TumblerMinDay}) : il vient vous voir plusieurs fois et finit par vous demander de cacher un disque de clés. Le cacher et le lui rendre : les frais du mixeur diminuent de moitié et l'ensemble d'anonymat s'agrandit, en plus d'une récompense ; mais le disque est de la Contrebande et sera inscrit à votre casier si une fouille le découvre entre-temps. Le dénoncer : prime et Réputation auprès de la Sécurité, et le mixeur ferme (les pièces à l'intérieur sont restituées). Le vendre au Marché noir : une somme en CRT (à moitié contaminés) et de la Réputation auprès du Marché noir, après quoi les frais du mixeur augmentent et le risque de rug pull grandit.¶Après Tumbler : entre sa deuxième et sa troisième visite, un Agent de la Sécurité vient demander s'il est passé dans votre boutique. L'avouer : Réputation auprès de la Sécurité +{TumblerAgentSecRep} ; mais si vous cachez ensuite le disque pour lui, l'agent fouillera la boutique la veille du retour de Tumbler, confisquera le disque et inscrira une infraction pour Contrebande s'il le trouve. Si la clé finit aux mains de la Sécurité (vous le dénoncez, le disque est saisi, ou vous ne l'avez plus à son retour), les registres de mixage sont reconstitués : toute la contamination blanchie lors des versements du mixeur au cours des {TumblerLeakDays} derniers j est réattribuée aux portefeuilles d'origine, et la part dépassant la valeur du portefeuille est inscrite pour fraude. Une dénonciation mène à un procès : vous pouvez parier sur le verdict dans le Marché de prédiction et le journal couvre les audiences chaque jour ; s'il est acquitté, il se vengera. Si vous avez vendu le disque, le Marché noir fait un rug pull {TumblerBmRugMin} à {TumblerBmRugMax} j plus tard, toutes les pièces en transit dans le mixeur sont perdues et il se venge également. Si vous cachez le disque et le lui rendez, il vous avertira la veille d'une descente de la Sécurité. {TumblerRebrandDays} j après la fermeture du mixeur, il réapparaît en ligne sous un nouveau nom ; certains d'entre eux sont des pièges de la Sécurité, et chaque pièce retirée est signalée. Méfiez-vous des frais anormalement bas.§Mixeur et monnaie de confidentialité : choisissez une pièce, un montant et le nombre de tours ; chaque tour prélève des frais et réduit la contamination, les tours équivalent aux jours d'attente et les pièces reviennent à la même adresse ; plus le dépôt est élevé, moins le nettoyage est efficace.¶Échange de monnaies de confidentialité (page de trading Web3, requiert de la réputation au Marché noir) : Ponero est une monnaie de confidentialité et la conversion vers celle-ci efface la contamination sur cette valeur ; {PoneroFee:%} de frais dans chaque sens avec une limite quotidienne ; les pièces converties depuis Ponero n'ont aucune origine et le contrôle des retraits devient plus strict.§Clients OTC (amélioration de réseau « Comptoir OTC ») : la Lampe noire gagne une cible supplémentaire, Client OTC (double-cliquez sur la lampe pour changer de cible). Elle ne s'allume que dans la vitrine et attire les clients comme la Lampe noire d'origine, selon le nombre de lampes et votre Réputation au Marché noir ; l'amélioration comprend une lampe. La moitié des clients souhaitent vous vendre des cryptos, l'autre moitié veut vous en acheter, toujours en liquide. Une fois l'offre formulée par le client, choisissez de discuter au terminal : le Terminal de trading ouvre la page des opérations de comptoir pendant que le client attend au comptoir. Vous pouvez ne conclure qu'une partie de l'échange, à 25 % / 50 % / 75 % / 100 % ou selon un montant saisi, et le montant en liquide s'ajuste proportionnellement ; choisissez Passer ou renvoyez le client pour refuser. Le volume des transactions augmente avec le loyer.¶Clients vendeurs : lors d'un accord, vous payez en liquide et les cryptos vont directement dans le Portefeuille connecté. Quand un événement a lieu dans la station, les cryptos en proviennent généralement : du CRT pendant une guerre de gangs ou une répression, du PSC pendant un raid de la Révolution sur le Niveau supérieur ou des troubles au Niveau inférieur, contaminés à 100 % de la valeur marchande. En temps normal, il s'agit aléatoirement de PSC, CRT ou CRA, avec une contamination représentant {OtcTaintMin:%}–{OtcTaintMax:%} de la valeur, et plus les cryptos sont sales, moins elles sont chères (le prix demandé passe de {OtcCutClean:%} à {OtcCutDirty:%} de la valeur). Le client ne précise pas à quel point les cryptos sont sales : la page d'échange indique son adresse, et « Rechercher » ouvre son historique dans l'Explorateur ; plus les fonds proviennent d'un Mixeur, de la plateforme du Marché noir ou d'adresses d'arnaque, plus ils sont sales. Une fois le comptoir Ponero ouvert, un client vend parfois du Ponero, qui ne comporte aucune contamination mais coûte plus cher. La contamination ajoutée ne peut pas dépasser la valeur du Portefeuille ; l'excédent est enregistré comme preuve de fraude. De temps en temps, le client est un agent infiltré : accepter l'échange vous fait perdre l'argent liquide et enregistre une preuve de recel, plus fréquemment pendant une répression.¶Clients acheteurs : ils peuvent demander n'importe quelle crypto et proposent le prix du marché majoré d'un pourcentage aléatoire (de {OtcBidMin:+%} à {OtcBidMax:+%} du prix du marché, ce qui peut donc être inférieur au marché) ; à vous de juger si la vente est rentable. En cas d'accord, PLEDGER s'ouvre avec l'adresse et le montant préremplis ; signez et attendez la confirmation, puis le client paie en liquide et part dès réception. Si le client part avant votre signature, la transaction est annulée. Les cryptos que vous vendez ne font l'objet d'aucun traçage de contamination.¶Mon mixeur (page Réseau gris, fourni avec le Comptoir OTC) : financez-le et ouvrez-le, les clients y déposent des cryptos contaminées, puis ils sont payés au bout de quelques jours tandis que vous conservez les frais. Chaque tour élimine une partie de la contamination selon l'ensemble d'anonymat, composé principalement de votre capital et des gains non réclamés (les cryptos des clients en transit ne comptent que partiellement), donc plus le financement est élevé, plus le blanchiment est efficace. Les clients comparent les frais additionnés à la contamination restante lors des versements avec le Mixeur de Tumbler et choisissent le moins cher ; une Réputation au Marché noir plus élevée en attire davantage, la réputation affichée correspondant au taux de contamination récemment laissé sur les versements. Les revenus des frais restent dans le pool et sont entièrement contaminés lors de leur retrait ; le capital est récupéré avec sa contamination initiale. Un trafic accru fait monter la pression (un pool plus vaste masque un peu mieux les cryptos, mais attire aussi plus de trafic, attirant globalement davantage l'attention), augmentant le risque d'un raid de la Sécurité : capital, revenus et cryptos des clients sont saisis, une preuve de recel est enregistrée et le Mixeur ferme pendant {OwnMixSeizeDays} j. De temps en temps, un agent infiltré effectue un dépôt lors d'une nuit d'ouverture, ce qui enregistre également une preuve de recel. Vous pouvez faire un Rug pull à tout moment : l'intégralité des fonds, y compris les cryptos des clients, vous revient totalement contaminée, une preuve de fraude est enregistrée, votre Réputation au Marché noir baisse et le Mixeur ferme définitivement.§Contrôle de conformité des retraits (l'écran n'indique ni quota ni probabilité de contrôle ; voici les règles) : retirer des CRC de Poinbase contre des crédits est évalué par rapport au loyer actuel – un retrait unique supérieur à {AmlBigRents}x le loyer, ou un cumul supérieur à {AmlCumRents}x le loyer sur {AmlWindowDays} jours, augmente la probabilité d'un contrôle proportionnellement à l'excédent ; dès lors que la contamination atteint au moins {AmlTaintRatio:%} du montant, la probabilité s'accroît de « ratio x {AmlTaintMult} » ; les pièces récemment restituées par le mixeur ou provenant d'un portefeuille signalé ajoutent {AmlMixerBonus:%} ; la probabilité est plafonnée à {AmlMaxChance:%}. En cas de contrôle : une contamination sous {AmlHeavyRatio:%} est légère – la part contaminée est confisquée sans enregistrer d'infraction ; à partir de {AmlHeavyRatio:%}, c'est grave – la part contaminée est confisquée et le montant contaminé est inscrit comme recel. Sans contrôle, le montant intégral arrive. Les retraits coûtent {ExchangeFee:%} et les gains au-delà du coût sont taxés à {TaxRate:%}. Fractionner en petits montants, étaler sur plusieurs jours et blanchir d'abord diminuent la probabilité, mais rien n'indique le quota ni les chances ; estimez-les vous-même.¶Avant de détruire un portefeuille, transférez vous-même les pièces, et retirez positions et dépôts au préalable : tout ce qui reste disparaît avec le portefeuille." +guide.web3.text,"Banque et trading : la page Banque est en lecture seule et affiche les liquidités, le loyer et les CRC de votre compte Poinbase. La page Fonds de Poinbase gère les dépôts et les retraits ; choisissez d'abord la cryptomonnaie : le CRC peut passer par le compte bancaire ou un portefeuille, toutes les autres uniquement par un portefeuille. Déposer depuis la banque convertit des crédits en CRC sur votre compte Poinbase ; retirer vers la banque retransforme les CRC en crédits sans contrôle (le compte Poinbase ne contient que des fonds propres). Retirer vers un portefeuille nécessite une adresse de destinataire et quelques confirmations avant d'arriver ; les frais de gas sont fixés au niveau normal et prélevés sur la monnaie envoyée. Un format d'adresse ou une somme de contrôle incorrect est rejeté ; si l'adresse est valide mais que personne ne l'utilise, les pièces sont perdues.¶Trading : PSC signifie Probably Stolen Coin, la monnaie minée par les cartes graphiques et les mineurs. Le marché au comptant de Poinbase propose deux paires, PSC/CRC et SPARK/CRC, qui suivent la monnaie sélectionnée sur le graphique. Les achats et les ventes sont tous deux saisis sous forme de montant de la monnaie échangée ; l'aperçu indique la monnaie de cotation payée ou reçue, le prix moyen inclut les frais et le glissement non.¶La page d'échange Web3 permet de convertir deux monnaies quelconques, toujours via le CRC : avec le CRC d'un côté, elle utilise un seul pool, sinon deux pools, avec deux fois des frais et un glissement cumulé ; l'aperçu affiche le montant reçu, les pools traversés et la perte. Les échanges de stablecoins (CRT ou CRA contre CRC) utilisent des pools stables : des frais de {StableFee:%} et presque aucun glissement près de l'ancrage ; lors d'un décrochage, la liquidité se tarit, et en cas d'effondrement, elle est retirée et le glissement explose.§Portefeuilles matériels : les pièces sur la chaîne sont stockées dans des portefeuilles matériels PLEDGER, chacun ayant ses propres soldes et pièces contaminées (chaque monnaie comptabilise combien d'unités sont contaminées ; voir Contamination). Un portefeuille est un objet : faites-le glisser sur le terminal de trading pour le charger. Ouvrez-le sur la page Portefeuilles du terminal ; connectez-le et déconnectez-le en haut à droite du terminal. Le trading sur la page Web3 ainsi que la boutique et le mixeur sur la page Réseau gris utilisent le portefeuille connecté ; sans portefeuille ou sans connexion, ils sont en lecture seule et chaque solde affiche 0. Les clients payant en pièces versent leurs fonds sur le portefeuille connecté.¶Les paiements (boutique, mixeur, comptoir Ponero, frais de mise en vente) débutent sous la forme d'une facture sur le terminal ; saisissez l'adresse du destinataire sur le portefeuille et maintenez ✓ enfoncé pour signer. Les deux derniers caractères d'une adresse constituent une somme de contrôle, de sorte qu'une faute de frappe d'un seul caractère est généralement détectée ; il arrive parfois qu'elle soit valide par hasard, et les pièces sont alors envoyées à une adresse que personne n'utilise. Les échanges sur le DEX nécessitent également une signature sur le portefeuille.¶Poinbase est un compte dépositaire ; les dépôts sont envoyés depuis un portefeuille vers l'adresse de dépôt de Poinbase (uniquement PSC, CRC et SPARK ; la plateforme conforme n'accepte ni le CRT du Marché noir ni le CRA de la Révolution, et le portefeuille bloque leur envoi vers l'adresse de dépôt ; seules les pièces propres peuvent être déposées, voir Contamination) et les retraits sont initiés sur la page Fonds de Poinbase. L'Explorateur sur la page Portefeuilles recherche les transferts par adresse et n'affiche que ceux qui ont réellement eu lieu : chaque mouvement entrant et sortant de vos portefeuilles (transferts, échanges DEX et autres appels de contrat, gains des mineurs, retraits, pièces reçues d'autrui) ; Ponero est une monnaie de confidentialité et n'apparaît jamais. Des portefeuilles matériels supplémentaires sont vendus par le Pr Jackson ; faites-en glisser un sur le terminal de trading pour l'ajouter, jusqu'à {WalletMax}. La boutique en propose des moins chers. Un portefeuille dont vous ne voulez plus peut être détruit sur la page Portefeuilles ; ses pièces sont définitivement perdues, et tout ce qui sera envoyé à son adresse par la suite le sera également.¶Les transferts paient des frais de gas : lent, normal ou rapide, et le prix du gas monte et descend sur environ une semaine ; lorsque le réseau est congestionné, les frais de gas augmentent et les transactions lentes peuvent être éjectées du mempool. Vérifiez l'adresse complète avant d'envoyer.§Staking : le CRA staké dans le pool de la Révolution rapporte un taux quotidien capitalisé dans le montant staké ; retirer nécessite d'en faire la demande préalable et d'attendre quatre jours, sans intérêt durant cette période ni moyen de récupérer les fonds plus tôt. Le CRA est partiellement collatéralisé : chaque CRA est soutenu par la réserve de CRC détenue par la Révolution et par le jeton d'équilibre SPARK ; le taux de couverture de la réserve et le taux de collatéralisation figurent sur la page de staking. Les intérêts sont versés en nouveaux CRA non collatéralisés, ce qui dilue la couverture de la réserve, d'autant plus vite que le staking est important ; si la couverture est trop faible, la Révolution réduit le taux. La Révolution détourne parfois la réserve, précédée de rumeurs : c'est le présage. Si la couverture tombe ensuite sous {CraCrashRatio:%}, c'est l'effondrement : le CRA perd toute valeur en trois jours et quatre jours de déverrouillage arrivent trop tard ; au-dessus, il y a seulement une décote, et l'argent des pillages de la haute société reconstitue peu à peu la réserve.¶Frappe officielle : déposer du CRC et du SPARK (proportion selon le taux de collatéralisation actuel, l'aperçu indique les montants requis) pour frapper du CRA, avec une file d'attente de {CraMintDaysMin} à {CraMintDaysMax} jours ; le CRA frappé entre directement en staking. La destruction reconvertit le CRA en CRC et SPARK, avec une attente aussi longue que le déverrouillage ; si la réserve est insuffisante, la part de CRC est réduite selon la couverture. Les frappes et destructions en attente peuvent ne jamais être honorées par la Révolution : la probabilité nocturne est l'écart du cours du CRA sous 1 multiplié par {CraRugPerDepeg} ; si le cours n'est pas sous 1, elle est nulle.¶Le staking accepte CRA, CRC, CRT et SPARK : les trois derniers sont d'abord convertis en CRA sur le marché secondaire au cours du marché (via le CRC, avec frais et glissement). Le cours du SPARK oscille fortement et s'effondre lors du krach. Le staking, la frappe et la destruction sont des appels de contrat nécessitant une signature sur le portefeuille.§Mineurs : les mineurs RatDigg (M1 / M2 / M3) sont des machines autonomes dotées de bien plus de puissance de hachage qu'une carte et d'une consommation électrique par hachage plus faible ; ils nécessitent une batterie, acceptent des modules et n'occupent aucun emplacement de plateforme de minage. Seuls les dealeurs de mineurs de la boutique en vendent, selon votre Réputation auprès du Marché noir (M1 {AsicRepM1}, M2 {AsicRepM2}, M3 {AsicRepM3}), parfois d'occasion. Lorsqu'un mineur grille, réparez-le en y faisant glisser des composants électroniques dans l'ordre ; il revient avec {AsicRepairHealthCut} d'état en moins. Entre le jour {EraMin} et le jour {EraMax}, une ""ère des mineurs"" arrive, annoncée dans le journal quelques jours plus tôt : les grandes fermes divisent leurs coûts d'électricité par deux, le taux de hachage du réseau grimpe, les gains des mineurs GPU sont dilués et les cartes d'entrée de gamme ne rapportent presque rien, tandis que les mineurs s'en sortent toujours bien.¶Adresse de paiement : chaque mineur (plateformes et mineurs ASIC) possède une adresse de paiement définie dans sa propre fenêtre ; son rendement de minage y est envoyé chaque nuit proportionnellement à sa puissance de hachage, de sorte que deux mineurs peuvent verser vers deux adresses différentes. Elle n'est pas définie au départ ; sans adresse ou si le portefeuille a été détruit, cette part est perdue, pensez donc à changer d'adresse lorsque vous changez de portefeuille.¶Les turbos fonctionnent sur les plateformes et les mineurs selon les mêmes règles que les autres machines : chaque utilisation lance un cycle supplémentaire, ce qui revient à miner immédiatement une nuit. Ce cycle consomme l'électricité d'une nuit, son rendement est basé sur le taux de hachage actuel du réseau et envoyé à l'adresse de paiement de cette machine, et il compte pour un tour d'usure et de contrôle de mort subite ; la machine mine toujours comme d'habitude cette nuit-là.§Contrats perpétuels : l'onglet Perps de Poinbase utilise le CRC de votre compte comme marge, jusqu'à {PerpPscLev}× sur le PSC et {PerpSparkLev}× sur le SPARK, en marge isolée uniquement, une seule position à la fois (jamais longue et courte à la fois) ; pour l'augmenter, ajoutez de la marge. Le prix d'exécution est moins avantageux que la cotation (d'autant plus pour les ordres importants, comme sur le pool au comptant) et l'ouverture comme la clôture entraînent des frais. La liquidation n'est vérifiée que pendant la nuit selon le prix moyen de la journée : une valeur nette inférieure à {PerpMaint:%} du montant notionnel anéantit la marge. Un financement a également lieu chaque nuit ; lorsque le prix est supérieur à sa moyenne sur 7 jours, les positions longues paient les positions courtes.¶Les positions des autres traders sont aussi liquidées avec le marché : la plupart des liquidations laissent une marge qui va au fonds d'assurance, et plus le mouvement est rapide, plus elles finissent en faillite, le fonds comblant le déficit ; après un fort mouvement sur une journée, le journal annonce combien de traders ont été liquidés et pour quel montant (votre position comprise). Si une liquidation engendre des pertes supérieures à la marge, le fonds d'assurance comble le déficit ; lorsqu'il est à sec (seule une vague extrême de faillites sur tout le marché peut provoquer cela), les positions gagnantes subissent un désendettement auto et abandonnent la moitié de leurs gains ; tout déficit restant devient votre dette. La dette augmente de {PerpDebtInterest:%} par jour, est remboursée en priorité chaque nuit par le CRC présent sur le compte, bloque l'ouverture de nouvelles positions et les retraits, et après {PerpDebtDays} jours, les articles de votre boutique sont saisis pour la rembourser ; tout solde restant impayé est effacé et le compte de contrats perpétuels est banni pendant {PerpBanDays} jours.§Boutique : pièces uniquement, pas de CRC, {BmPremium:%} plus cher que les circuits normaux, avec une majoration supplémentaire sur les produits de haute technologie et les cartes graphiques ; la monnaie que vous payez emporte sa part de pièces contaminées et les marchandises ne portent aucune étiquette d'objet volé ; les cartes graphiques peuvent être contrefaites, inspectez-les vous-même.¶Achats dans la boutique : choisissez un vendeur sur la gauche, le rayon se trouve sur la droite, et après « Acheter », le panneau de paiement permet de définir la quantité, le moyen de paiement et la monnaie. Chaque type de vendeur accepte des monnaies différentes : le matériel et la tech acceptent le PSC et le CRT ; les armes, les drogues, les produits chimiques, les documents, le luxe et les vendeurs particuliers acceptent le CRT et la monnaie de confidentialité ; l'agriculture, l'élevage, l'eau et le brassage acceptent le PSC et le CRA ; le comptant de la plateforme accepte le PSC, le CRT et le CRA. Si vous n'avez pas la monnaie acceptée par le vendeur, vous pouvez utiliser la conversion automatique intégrée : elle échange une autre monnaie du portefeuille avec un glissement de {BmAutoSwapSlip:%} et signe en une seule fois ; ou bien faites d'abord l'échange vous-même sur le DEX, avec beaucoup moins de glissement mais une étape supplémentaire. Les frais de mise en vente choisissent aussi leur monnaie au moment du paiement.¶Panier de la boutique : « Acheter » sur un rayon ajoute au panier ; le panier flottant en bas à droite affiche le nombre d'articles et ouvre le règlement. Le règlement affiche le panier sur la gauche (groupé par vendeur, quantités modifiables, articles supprimables, tiers de confiance ou déblocage anticipé pour les vendeurs qui l'autorisent) et le paiement sur la droite : chaque vendeur ayant une adresse de destinataire différente, vous payez vendeur par vendeur — choisissez une monnaie acceptée par ce vendeur, générez une facture et transférez depuis le portefeuille ; ou convertissez automatiquement depuis une autre monnaie du portefeuille ({BmAutoSwapSlip:%} de glissement en plus) et signez en une seule fois pour ce vendeur.§Commandes et vente : les commandes sont moins chères qu'au comptant, mais prennent plusieurs jours et risquent d'être interceptées ; les marchands vendent par type selon leur propre coefficient de prix, {BmBulk1Count}+ articles bénéficient de {BmBulk1Discount:%} de remise et {BmBulk2Count}+ de {BmBulk2Discount:%} de remise, et un marchand de gros apparaît aléatoirement avec les prix les plus bas mais une attente de {BmBulkDays} j ; le tiers de confiance coûte {BmEscrowFee:%}, est débloqué à la livraison et remboursé en cas de fuite du vendeur ; le déblocage anticipé accorde {BmAdvanceDiscount:%} de réduction supplémentaire, mais un arnaqueur garde l'argent et seuls les vendeurs à {BmAdvanceMinTrades}+ transactions l'acceptent ; la plateforme elle-même peut faire un rug pull, être reprise par la Sécurité, ou un vendeur peut être arrêté, après quoi vos commandes sont tracées et une infraction est enregistrée ; les rumeurs sur les forums peuvent servir d'avertissement. Un colis intercepté se traduit parfois par la Sécurité à votre porte : signer enregistre immédiatement l'infraction et saisit les marchandises, refuser ne fait perdre que le paiement.¶Vente : dans l'onglet Vente de la boutique, mettez en vente la contrebande, les objets high-tech et les cartes graphiques de la réserve entre {BmSellMin}x et {BmSellMax}x le prix de référence. Plus le multiplicateur est élevé, plus la vente est lente (sous {BmSellFastMult}x : environ {BmSellDaysFast} j, à {BmSellDay1Mult}x : environ {BmSellDays1} j, à {BmSellMax}x : environ {BmSellDaysMax} j), et plus la probabilité et la proportion de fonds contaminés sur le versement augmentent, ce qui croît aussi avec votre volume vendu ces 7 derniers jours ; les biens volés contaminent le versement selon leur niveau de recherche (% de recherche des pièces du versement contaminées) ; l'onglet Vente s'ouvre sur la vitrine de vos objets en vente, et « Ajouter des offres » permet d'en préparer d'autres : les objets identiques sont regroupés, les touches − et + règlent la quantité, le multiplicateur se choisit à gauche, et les objets ne sont mis en vente qu'après paiement des frais de mise en vente avec le bouton Étagère ; tous les exemplaires d'un même article partagent le même multiplicateur, donc pour le modifier, retirez-les d'abord tous ; jusqu'à {BmMaxKinds} types à la fois et {BmMaxStack} de chaque, avec {BmListFee:%} de frais de mise en vente par unité ; les objets peuvent être retirés de la vitrine pour retourner dans la réserve, les frais ne sont pas remboursés ; « Monnaies acceptées » sur la vitrine permet de choisir les devises acceptées : chaque devise supplémentaire ajoute un tirage de vente chaque nuit (ordre aléatoire, nombre d'acheteurs différent par devise), accepter plus de devises accélère donc les ventes, et le versement arrive dans la devise du tirage retenu ; commission de {BmCommission:%}, versement retenu pendant {BmSaleHold} j avant d'arriver dans votre portefeuille ; une fausse carte peut être repérée et renvoyée, nuisant à votre évaluation ; en cas de rug pull de la plateforme, les objets mis en vente et les gains non débloqués sont perdus.§Marchés de prédiction (page Prédictions de Web3, à partir du jour {PredictUnlockDay}) : chaque marché est une question par oui ou non portant sur des événements tirés au sort ou planifiés par le jeu : apparition d'une actualité, lancement d'une opération de faction, pureté de l'eau de demain, cours du PSC. Un marché reste ouvert jusqu'au début de sa fenêtre et fait l'objet d'un règlement la nuit du dernier jour de celle-ci. Achetez Oui ou Non avec des CRC depuis votre portefeuille on-chain (appel de contrat : signez sur le portefeuille ; la position appartient au portefeuille signataire) ; le cours correspond à la probabilité implicite du marché et monte à mesure de vos achats ; chaque part gagnante rapporte 1 crédit ; frais de {PredictFee:%} sur chaque transaction ; chaque marché a une limite de position. Si les CRC engagés étaient en partie contaminés, la même proportion des gains sera contaminée.¶Des notes de rumeurs et des atouts de faction peuvent vous révéler à l'avance qu'un événement va se produire ; parier Oui sur un tel marché constitue un pari d'initié. Les paris d'initié paient normalement, mais la police suspecte un délit d'initié : lors du règlement ou de la vente, les gains des parts d'initié sont marqués comme pièces contaminées dans le portefeuille de réception. S'il manque des données de jeu pour la fenêtre (par exemple si vous avez sauté le règlement nocturne), le marché est annulé et la mise remboursée.§Réaction aux nouvelles : chaque nuit, chaque marché ouvert se rapproche de moitié de la juste probabilité selon les informations publiques, plus un peu de bruit aléatoire ; ainsi, quiconque lit en premier le journal, un billet de rumeur ou un avantage de faction peut acheter en amont et revendre après l'ajustement sans attendre le règlement. La liste d'indices du panneau de marché affiche ce que vous savez à son sujet : plannings, temps de recharge, date du halving, valeurs récentes du gas, niveau de la réserve du CRA, annonces de l'ère ASIC.¶Tendances à déduire : les opérations de faction sont déclenchées par des seuils de puissance cachés (par exemple, une répression nécessite Sécurité >= 20 et Marché noir >= 40, et réduit la Sécurité de 20) ; le gas suit un cycle de sept jours ; le point d'ancrage du cours monte la semaine précédant un halving ; les répressions et coupures de courant planifiées déplacent l'ancre mais le cours du marché ne l'anticipe pas ; plus la réserve s'épuise vite (plus il y a de staking), plus le CRA prévient tôt ; le marché du cours du PSC peut être influencé par vos propres ordres massifs. Le courtier en infos secrètes (nécessite assez de réputation au Marché noir) vend un point de situation (les cinq valeurs de puissance et ce que chaque faction peut lancer actuellement, en CRT) ainsi que trois niveaux de tuyaux d'initié (uniquement pour les opérations de faction et l'ère ASIC, déjà décidées ; la précision augmente à chaque niveau ; tarif selon la taille du marché ; certains tuyaux sont faux et annoncent l'inverse de la vérité) ; parier sur le côté recommandé compte comme un pari d'initié. La taille du marché grandit au fil des jours et un mauvais pari fait perdre toute la mise, ne misez donc pas tout sur un seul marché.§Détection de manipulation : vos ordres d'achat massifs au comptant sur Poinbase dévient le cours par rapport à son niveau naturel (l'ampleur de la déviation diminue chaque nuit avec le retour du cours ; l'indice de marché l'indique). Dès que la déviation dépasse {ManipFree:%}, si vous tirez profit de ce cours (marché de cours du PSC remporté dans le sens impulsé, ou contrat perpétuel clôturé en gain dans ce sens), vous risquez d'être repéré : plus la manipulation est forte, plus la probabilité augmente (plafonnée à {ManipMax:%}). En cas de détection, le versement a tout de même lieu : le gain de prédiction est intégralement classé en pièces contaminées ; les bénéfices du contrat perpétuel restent sur le compte et {PredictFraudShare:%} de ceux-ci sont inscrits au casier comme fraude (jusqu'à {PredictFraudCap}) ; le journal relate l'enquête.¶Vendre à découvert puis dumper n'est pas garanti : le glissement des deux côtés sur le contrat perpétuel et l'aller-retour au comptant coûtent souvent plus que les gains de la vente à découvert.§Système de Ponzi (page Rendement, Émettre ; dès le jour {PonziMinDay}, un seul par sauvegarde) : choisissez un taux quotidien ({PonziRates[0]:%}-{PonziRates[4]:%}), payez les frais de promotion pour démarrer (lancer le projet et faire un rug pull sont des appels de contrat signés sur le portefeuille), et les habitants du Niveau inférieur déposent des CRC selon ce taux et votre réputation du Niveau inférieur ; plus le taux est haut, plus ils affluent vite. Chaque nuit, les intérêts sont versés d'abord avec les nouveaux dépôts, puis depuis le portefeuille émetteur ; si vous ne pouvez pas couvrir la somme, une ruée bancaire éclate et le système s'effondre ; {PonziWithdraw:%} du pool est retiré chaque nuit, et plus le pool est gros et le taux élevé, plus une dénonciation est probable, provoquant aussi son effondrement. En cas d'effondrement, le pool est confisqué. Vous pouvez faire un rug pull sur le pool à tout moment (cliquez deux fois pour confirmer) : il est transféré vers le portefeuille émetteur et l'intégralité de ces CRC est contaminée (blanchissez-les avant de les déposer sur Poinbase). Le rug pull comme l'effondrement inscrivent une fraude à votre casier et réduisent à néant votre réputation du Niveau inférieur. La ligne des bruits qui courent indique le niveau de risque de dénonciation.§Arnaques : mèches – certains matins à l'ouverture, le cours est propulsé ou écrasé de {WickMin:%}-{WickMax:%} ; la majeure partie se résorbe le soir même, mais certaines variations sont réelles ; le prix repère des contrats perpétuels n'en prend en compte que la moitié, ne cédez donc pas à la panique en vendant sur une mèche.¶Airdrops (page Airdrops de Web3) – chaque airdrop exige d'abord d'autoriser le portefeuille (un contrat d'autorisation signé), puis de signer la réclamation ; vérifiez la portée de l'approbation avant d'autoriser : les vrais airdrops n'exigent aucune approbation ou une minime de quelques dizaines ; une approbation illimitée ou bien supérieure à la récompense est du phishing, souvent sous un nom trompeur (0 pour o, 1 pour l), et une ou deux nuits plus tard, cette pièce est retirée du portefeuille. Les approbations sont listées à droite de la page Airdrops et peuvent être révoquées en signant, après quoi rien ne peut être prélevé.¶Pools de rendement tiers (page Rendement, Dépôt) – {YieldRates[0]:%}-{YieldRates[2]:%} par jour ; la réserve, la présence d'un verrouillage temporel et d'un audit sont visibles, mais pas s'il s'agit d'une arnaque : plus le taux est élevé, plus le rug pull est probable, un verrouillage temporel et un audit réduisant ce risque ; un pool honnête ferme et restitue le capital quand sa réserve ne peut plus payer les intérêts, alors qu'un pool frauduleux peut disparaître n'importe quelle nuit. Le retrait des pools avec verrouillage temporel prend {YieldLockDays} jours.¶Faux support – quelqu'un au comptoir prétendant appartenir au support de Poinbase vous demande de transférer des CRC vers une « adresse sécurisée » : Poinbase ne se déplace jamais et ne demande jamais de virement. Faux virements – un client payant en pièces qui débute par « déjà envoyé, voici la capture d'écran, donnez l'article » ne paie jamais ; les honnêtes précisent que la confirmation sur la chaîne prend un moment.§Graphiques : la page spot de Poinbase et la page Trading de Web3 permettent d'alterner entre les bougies journalières de chaque pièce (la page des contrats perpétuels affiche le produit en cours, les prédictions affichent le PSC), vert à la hausse et rouge à la baisse ; la ligne jaune est la moyenne sur 7 jours (utilisée pour le financement des contrats perpétuels) ; les barres en bas représentent le volume (gris pour le marché, cyan pour vous : spot, DEX, frappe/brûlage, échanges Ponero et ouvertures/fermetures de contrats perpétuels comptent tous). Plus la variation est forte, plus les volumes échangés sont importants ; les mèches laissent de longues ombres.§Liens narratifs : les choix dans les intrigues du jeu modifient ce marché ; le journal les relaie le lendemain et le marché met quelques jours à réagir. Preuves de Serpico remises à la Révolution : la réserve de CRA est renflouée, le risque d'effondrement diminue de moitié pendant {StorySecDays} j et SPARK augmente de {StorySerpicoSpark:+%} en {StorySparkNights} nuits ; remises au Marché noir : les risques de perte d'ancrage du CRT et de trahison diminuent de moitié ; remises à la Sécurité : pendant {StorySecDays} j, le mixeur nettoie moins bien (chaque tour ×{StorySecMixClean}), et les sanctions contre le mixeur ainsi que les contrôles de manipulation de marché sont renforcés. Eleanor divulgue la clé de données : le risque de dépréciation de la banque dépositaire de CRC double et SPARK augmente de {StoryLeakSpark:+%} ; elle la restitue : le risque de perte d'ancrage du CRC diminue de moitié. Agent Lun arrêté : pendant {StoryLunDays} j, les contrôles de manipulation de marché sont renforcés et les clients OTC comptent plus d'agents infiltrés.¶Tumbler, exploitant du mixeur (après déverrouillage du mixeur, dès le jour {TumblerMinDay}) : il vient vous voir à plusieurs reprises et finit par demander de cacher une clé de chiffrement. Cachez-la et rendez-la-lui : les frais de mixeur diminuent de moitié et l'ensemble d'anonymat s'élargit, en plus d'une récompense ; mais la clé constitue de la contrebande et sera inscrite à votre dossier si une fouille la découvre entre-temps. Dénoncez-le : prime et Réputation auprès de la Sécurité, avec fermeture du mixeur (les pièces en transit sont récupérées). Vendez-la au Marché noir : une somme de CRT (dont la moitié contaminée) et de la Réputation auprès du Marché noir, après quoi les frais de mixeur augmentent et le risque de rug pull grandit.¶Après Tumbler : entre sa deuxième et troisième visite, un Agent de la Sécurité vient demander s'il est passé dans votre boutique. L'avouer : Réputation auprès de la Sécurité +{TumblerAgentSecRep} ; mais si vous cachez ensuite la clé pour lui, l'agent fouille la boutique la veille du jour où Tumbler revient la chercher : s'il la trouve, il la confisque et inscrit la contrebande à votre dossier. Si la clé tombe aux mains de la Sécurité (dénonciation, saisie de la clé ou si vous ne l'avez plus à son retour), l'historique du mixeur est reconstitué : {PredictFraudShare:%} de la contamination éliminée lors des retraits du mixeur au cours des {TumblerLeakDays} derniers j est retenu comme fraude (dans la limite de {PredictFraudCap}). Une dénonciation débouche sur un procès : vous pouvez parier sur le verdict sur le Marché de prédiction, et le journal couvre les audiences chaque jour ; s'il est acquitté, il se venge. Si vous avez vendu la clé, le Marché noir fait un rug pull {TumblerBmRugMin} à {TumblerBmRugMax} j plus tard, toutes les pièces en transit dans le mixeur sont perdues, et il se venge également. Cachez la clé et rendez-la-lui : il vous prévient la veille d'une répression de la Sécurité. {TumblerRebrandDays} j après la fermeture du mixeur, il rouvre sous un nouveau nom ; certains sont des pièges de la Sécurité, et chaque pièce retirée en ressort totalement contaminée. Méfiez-vous des frais anormalement bas.§Mixeur et monnaie de confidentialité : choisissez la pièce, le montant et le nombre de tours ; chaque tour prélève des frais et nettoie une partie des pièces contaminées, le nombre de tours équivaut aux jours d'attente et les pièces reviennent à la même adresse ; plus vous déposez, moins le nettoyage est efficace. Pendant les répressions, le mixeur peut être sanctionné ; les versements dus pendant cette période ne sont pas nettoyés et reviennent totalement contaminés.¶Échange de monnaie de confidentialité (page de trading Web3, requiert de la Réputation auprès du Marché noir) : Ponero est une monnaie de confidentialité ; les pièces contaminées converties disparaissent tout simplement et le Ponero obtenu est propre ; {PoneroFee:%} de frais dans chaque sens, les échanges entrants comme sortants partageant un plafond quotidien de {PoneroDailyCap} crédits.§Clients OTC (amélioration de réseau « Comptoir OTC ») : la Lampe noire gagne une cible supplémentaire, Client OTC (double-cliquez sur la lampe pour changer). Elle ne s'allume que dans la vitrine et attire les clients comme la Lampe noire d'origine, selon le nombre de lampes et votre Réputation auprès du Marché noir ; l'amélioration inclut une lampe. La moitié des clients souhaite vous vendre des pièces, l'autre moitié veut vous en acheter, toujours en liquide. Une fois la proposition du client annoncée, choisissez de négocier au terminal : le terminal ouvre la page d'échange au comptoir pendant que le client attend au comptoir. Vous pouvez n'accepter qu'une partie de la transaction (25 % / 50 % / 75 % / 100 % ou un montant saisi), l'argent liquide s'ajustant en conséquence ; choisissez Passer ou renvoyez le client pour refuser. Le volume des transactions augmente avec le loyer.¶Clients vendeurs : lors d'une transaction, vous payez en liquide et les pièces vont directement au portefeuille connecté. Quand un événement survient dans la station, les pièces en proviennent généralement : du CRT lors d'une guerre de gangs ou d'une répression, du PSC lors d'un raid de la Révolution au Niveau supérieur ou d'émeutes au Niveau inférieur, toutes contaminées. Sinon, il s'agit aléatoirement de PSC, CRT ou CRA, dont {OtcTaintMin:%} à {OtcTaintMax:%} sont contaminées, les pièces les plus sales étant moins chères (le prix demandé chute de {OtcCutClean:%} à {OtcCutDirty:%} de la valeur). Le client n'indique pas à quel point les pièces sont contaminées : la page d'échange affiche son adresse, et Rechercher ouvre son historique dans l'Explorateur ; plus les transferts proviennent du mixeur, de plateformes du Marché noir ou d'adresses d'arnaque, plus elles sont contaminées. Une fois le comptoir Ponero ouvert, quelqu'un vend parfois du Ponero, qui ne porte aucune trace de contamination mais coûte plus cher. De temps à autre, le client est un agent infiltré : accepter l'offre fait perdre l'argent liquide et inscrit un recel au dossier, d'autant plus souvent pendant une répression.¶Clients acheteurs : ils peuvent demander n'importe quelle pièce et proposent le prix du marché majoré d'une marge aléatoire (de {OtcBidMin:+%} à {OtcBidMax:+%} du prix du marché, ce qui peut être inférieur au cours) ; à vous de voir si la vente vaut le coup. En cas d'accord, PLEDGER s'ouvre avec l'adresse et le montant préremplis ; signez et attendez la confirmation : le client paie en liquide et s'en va à l'arrivée des fonds. Si le client part avant votre signature, la transaction est annulée. Les pièces vendues ne font l'objet d'aucun traçage de contamination.¶Mon mixeur (page Réseau gris, inclus avec le Comptoir OTC) : injectez des fonds et ouvrez, les clients y déposent des pièces contaminées, et après quelques jours, les paiements sont effectués pendant que vous conservez les frais. Chaque tour élimine une partie de la contamination selon l'ensemble d'anonymat, composé principalement de votre capital et des gains non réclamés (les pièces en transit des clients ne comptent que partiellement) ; injecter plus de fonds permet donc de mieux nettoyer. Les clients comparent les frais additionnés à la contamination restante sur les retraits avec le mixeur de Tumbler et vont au moins cher ; une Réputation plus élevée auprès du Marché noir en attire davantage, la réputation affichée correspondant au ratio de contamination récemment laissé sur les retraits. Les gains issus des frais restent dans le pool et sont totalement contaminés lors du retrait ; le capital récupéré conserve sa propre proportion de pièces contaminées. Plus le trafic augmente, plus l'attention monte (un pool plus grand dissimule un peu mieux les pièces, mais attire aussi plus de trafic et suscite donc globalement plus d'attention), augmentant le risque d'une descente de la Sécurité : capital, gains et pièces des clients sont tous confisqués, un recel est consigné au dossier et le mixeur est fermé pendant {OwnMixSeizeDays} j. De temps à autre, un agent infiltré effectue un dépôt lors d'une nuit d'ouverture, ce qui inscrit également un recel au dossier. Vous pouvez faire un rug pull à tout moment : l'intégralité des fonds, pièces des clients comprises, vous revient totalement contaminée, une fraude est inscrite au dossier, la Réputation auprès du Marché noir baisse et le mixeur ferme définitivement.§Contamination : dans chaque portefeuille, chaque pièce comptabilise ses unités sales (visibles dans les soldes de la page Portefeuilles et sur le PLEDGER). Les pièces sales proviennent des clients OTC qui vous en vendent, des clients payant en crypto (selon le niveau de vol des objets), des ventes de biens volés sur le Réseau gris, des paris d'initié et des manipulations sur le marché de prédiction, du retrait d'un système de Ponzi, des gains de votre propre mixeur, des CRT issus de la vente de la clé et des versements de mixeurs signalés. La contamination n'existe que dans les portefeuilles Web3 : dépenser, transférer ou payer des frais utilise des pièces sales proportionnellement à leur part sale ; échanger transmet cette proportion à la pièce obtenue (60 % de CRT sales échangés contre des PSC donnent 60 % de PSC sales) ; Ponero n'en porte aucune. Poinbase n'accepte que les pièces propres : chaque pièce ne peut être déposée qu'à hauteur de son montant propre et les pièces sales restent dans le portefeuille ; le compte Poinbase et la banque ne détiennent donc que de l'argent propre, et les retraits vers la banque ne font l'objet d'aucun contrôle, seulement de {ExchangeFee:%} de frais et de {TaxRate:%} de taxe sur les plus-values. Envoyer des pièces propres dans un portefeuille ne nettoie pas les pièces sales. Pour vous débarrasser des pièces sales : le mixeur, l'échange en Ponero, la vente à des clients OTC acheteurs (les pièces vendues ne sont pas tracées) et les achats dans la boutique Web3.¶Avant de détruire un portefeuille, transférez vous-même les pièces et retirez d'abord vos positions et dépôts : ce qui reste disparaît avec le portefeuille." courier.odd1,...Le colis est là. courier.odd2,(Sa main reste dans sa poche.) Signez ici. courier.sign,Signer @@ -362,10 +360,11 @@ hw.wallet.n,Portefeuille {0} hw.review.own,Portefeuille personnel : {0} hw.review.poinbase,Adresse de dépôt Poinbase poin.deposit,Adresse de dépôt : {0} +poin.deposit.clean,Pièces propres déposables depuis {0} : {1} wallets.count,Portefeuilles {0}/{1} wallets.col.name,Nom wallets.col.addr,Adresse -wallets.col.taint,Contamination +wallets.col.taint,Sale wallets.open,Ouvrir wallets.use,Connecter wallets.current,Connecté @@ -379,6 +378,7 @@ hw.paste,Coller hw.copied,Adresse copiée. hw.copied.addr,{0} copié hw.balance.frozen," (gelé {0})" +hw.balance.dirty," (sale : {0})" wallets.destroy,Détruire wallets.destroy.sure,Confirmer wallets.destroyed,{0} détruit : {1} @@ -550,7 +550,7 @@ predict.purity.rust,Eau du niveau supérieur nightlog.predict.win,"Prédiction correcte : ""{0}"", {1} versés." nightlog.predict.lose,"Prédiction incorrecte : ""{0}"", mise de {1} perdue." nightlog.predict.void,"Prédiction annulée : ""{0}"", mise de {1} remboursée." -nightlog.predict.insider,« {0} » réglé pour {1}. La police soupçonne un délit d'initié ; le paiement est marqué et les fonds contaminés du portefeuille augmentent de {2}. +nightlog.predict.insider,"""{0}"" a été réglé pour {1}. La police soupçonne un délit d'initié ; {2} CRC sont marqués comme sales." predict.tab.markets,Marchés predict.tab.intel,Infos secrètes predict.acct.crt,{0} : CRT {1} @@ -593,11 +593,10 @@ predict.brief.queued,{0} : opération programmée predict.brief.none,{0} : rien à lancer predict.brief.can,{0} : peut lancer {1} predict.clue.push,Vous avez fait bouger le prix de {0} % : risqué -nightlog.predict.manip,« {0} » réglé pour {1}. Les régulateurs vous soupçonnent d'avoir manipulé le cours ; le paiement est marqué et les fonds contaminés du portefeuille augmentent de {2}. +nightlog.predict.manip,"""{0}"" a été réglé pour {1}. Les régulateurs vous soupçonnent d'avoir manipulé le cours ; {2} CRC sont marqués comme sales." news.manip.title,La bourse enquête sur des transactions inhabituelles news.manip.desc,Les régulateurs indiquent qu'un acteur a fait bouger le cours avec de gros ordres spot pour tirer profit des dérivés et des prédictions ; les comptes impliqués ont été signalés. -taint.overflow,Les fonds contaminés dépassent désormais la valeur du portefeuille ; l'excédent de {0} est enregistré comme fraude. -perp.manip,Clôturé avec un gain de {0}. Les régulateurs soupçonnent une manipulation de marché ; le profit est marqué et les fonds contaminés du compte Poinbase augmentent de {1}. +perp.manip,Position clôturée avec un profit de {0}. Les régulateurs soupçonnent une manipulation de marché ; fraude inscrite à votre dossier : {1}. web3.sub.ponzi,Rendement ponzi.h,Système de Ponzi ponzi.acct,Portefeuille émetteur {0} : CRC {1} @@ -688,7 +687,7 @@ scam.support.name,Support Poinbase scam.support.1,"Bonjour, ici le support Poinbase. Nous avons détecté une connexion anormale sur votre compte et celui-ci a été signalé." scam.support.2,Veuillez envoyer aujourd'hui {0} CRC à l'adresse sécurisée {1} pour vérification ; ils seront restitués immédiatement après. scam.support.3,"Sinon, le compte sera gelé définitivement. Je dois filer, n'oubliez pas d'effectuer l'envoi." -predict.sold.caught,"Vendu, reçu {0}. La police soupçonne un délit d'initié ; le produit de la vente est marqué et les fonds contaminés du portefeuille augmentent de {1}." +predict.sold.caught,"Vendu, reçu {0}. La police soupçonne un délit d'initié ; {1} CRC sont marqués comme sales." predict.row.move," (la nuit dernière {0} {1})" predict.stats.h,Historique (prix ouv. moy. / taux réel) predict.stats.row,"{0} : {1} marchés, ouv. moy. {2}, survenu {3} %" @@ -711,7 +710,7 @@ news.story.serpico_rev.desc,"La Révolution aurait obtenu des preuves de corrupt news.story.serpico_bm.title,Le Marché noir conclut un accord discret news.story.serpico_bm.desc,"Un document interne de la Sécurité a changé de mains sur le Marché noir. Les règlements sur le Darknet sont nettement plus stables depuis, et les remboursements en CRT n'ont pas failli une seule fois." news.story.serpico_sec.title,La Sécurité lance une purge interne -news.story.serpico_sec.desc,La Sécurité a annoncé une enquête approfondie sur la corruption interne et une surveillance accrue des flux financiers. Poinbase durcit l'examen des retraits et les services de mixeur ont été ciblés. +news.story.serpico_sec.desc,La Sécurité a annoncé une enquête approfondie sur la corruption interne et une surveillance accrue des flux financiers ; les services de mixage ont été cités. news.story.eleanor_leak.title,Fuite des données de sélection de Nutrifruit news.story.eleanor_leak.desc,"Le journal du Niveau inférieur a publié des recherches permettant au Nutrifruit de donner à nouveau des graines ; l'action Pastelle s'est effondrée. La banque dépositaire des fonds du Niveau supérieur signale des créances douteuses, et la Révolution gagne du terrain." news.story.eleanor_return.title,Pastelle récupère les données dérobées @@ -772,7 +771,7 @@ agent.search.none,... Rien. Désolé pour le dérangement. tumbler.v4.seized.1,J'ai appris que la Sécurité a fouillé ta boutique. tumbler.v4.seized.2,Ils ont la clé désormais. Les registres de chaque utilisateur vont être déterrés. tumbler.v4.seized.3,"Peu importe ce que tu leur as dit, je ne veux plus le savoir." -nightlog.tumbler.leak,"La Sécurité a utilisé la clé de signature de Tumbler pour reconstituer les registres du mixeur : la contamination blanchie lors de versements (total : {0}), soit {1}, a été réattribuée aux portefeuilles." +nightlog.tumbler.leak,La Sécurité a utilisé la clé de signature de Tumbler pour reconstituer les registres de mixage : {0} paiements avaient blanchi {1} de contamination ; fraude inscrite à votre dossier : {2}. nightlog.tumbler.leak.none,La Sécurité a utilisé la clé de signature de Tumbler pour reconstituer les registres de mixage. Vous n'avez rien retiré du mixeur récemment. nightlog.tumbler.note,"Un mot a été glissé sous la porte : ""Tu me dois ça, et je viendrai le reprendre. — T""" nightlog.tumbler.tip,Message de Tumbler : la Sécurité pourrait cibler les services de mixage demain. @@ -1038,7 +1037,7 @@ otc.cancel,Passer otc.msg.gone,Le client est parti. otc.msg.cash,Espèces insuffisantes. otc.msg.sting,"Le client était sous couverture : {0} en espèces confisqués, recel consigné." -otc.msg.bought,"Reçu {0} {1}, payé {2} en espèces." +otc.msg.bought,"Reçu {0} {1} (dont sale : {3}), payé {2} en liquide." otc.msg.sold,"Envoyé {0} {1}, reçu {2} en espèces." gray.sub.own,Mon mixeur ownmix.h,Mon mixeur @@ -1088,3 +1087,4 @@ otc.nocash,Vous n'avez même pas le liquide ? Laissez tomber. otc.nowallet,"Aucun portefeuille connecté, où envoyer les pièces ? Laissez tomber." otc.sting,Pas un geste. Sécurité. Achat de fonds volés : le liquide est confisqué et ce sera inscrit à votre dossier. hw.err.poinbase,Poinbase n'accepte pas le {0}. +hw.err.tainted,{0} des {1} de ce portefeuille sont sales et Poinbase n'accepte que les pièces propres : {2} {1} au maximum. diff --git a/src/Decentralized/ModFiles/Localization/ja.csv b/src/Decentralized/ModFiles/Localization/ja.csv index f69a3b7..d4ad378 100644 --- a/src/Decentralized/ModFiles/Localization/ja.csv +++ b/src/Decentralized/ModFiles/Localization/ja.csv @@ -22,7 +22,7 @@ tab.report,レポート wallet.line,{0}:{1}(約{2}クレジット) wallet.empty,ウォレットは空です。 wallet.total,総額:{0}クレジット -wallet.taint,汚染額:{0}クレジット +wallet.taint,汚染コイン: {0} クレジット trade.amount,数量 trade.deposit,クレジットを入金してCRCに交換 trade.withdraw,CRCを出金してクレジットに交換 @@ -38,8 +38,6 @@ msg.balance,残高が不足しています。 msg.trade,{0} {1}を支払い、{2} {3}を受け取りました。 msg.deposit,{0}クレジットを入金し、CRCに変換しました。 msg.cashout,{0}クレジットを受け取りました。税:{1}クレジット。 -msg.aml_light,コンプライアンス審査:{0}クレジットの汚染資金が保留されました。 -msg.aml_heavy,コンプライアンス審査:{0}クレジットの汚染資金が没収され、警察に通報されました。 report.none,マイニングレポートはまだありません。 report.day,{0}日目の夜 report.rigs,稼働リグ:{0}/{1} @@ -141,6 +139,7 @@ col.asset,資産 col.amount,数量 col.value,評価額 col.avg,平均単価 +col.dirty,汚染分 bank.cash.k,クレジット bank.rent.k,家賃 bank.rent.v,{0}、期日:{1}日後 @@ -152,13 +151,12 @@ stable.ok,ペグ正常 stable.depeg,デペグ stable.warn,警告:ステーキング準備率低下 stable.spiral,崩壊中 -aml.taint,アカウント汚染率:{0}% mixer.h,ミキサー mixer.ok,状態:正常稼働 -mixer.sanctioned,状態:制裁中(残り{0}日)。この間に出金されたコインはフラグ付きとなる。 +mixer.sanctioned,状態: 制裁中(残り{0}日)。この間に期日を迎える出金は洗浄されず、全額が汚染コインとして戻る。 mixer.pending,入金処理中 mixer.none,処理中の入金はありません。 -mixer.col.taint,汚染 +mixer.col.taint,汚染分 mixer.col.ready,完了 mixer.day,{0}日目 mixer.deposit,入金 @@ -169,12 +167,12 @@ mixer.go,ミキサーに入金 mixer.min,入金には最低{0}クレジット相当が必要です。 mixer.done,{0} {1} を入金。{2}日目に受取可能。 mixer.upgrade.title,ミキサー -mixer.upgrade.desc,ターミナルのグレーネットページにあるミキサーをアンロック:汚染コインを入金し、数日後に汚染を減らして回収する。ミックス直後のコインは出金審査がより厳格化される。取締期間中はミキサーが制裁対象となる可能性があり、その間に出金されたコインはフラグ付きとなる。 +mixer.upgrade.desc,ターミナルのグレーネットページでミキサーをアンロック: 汚染コインを入金すると、数日後に汚染分が減少して戻る。鎮圧期間中はミキサーが制裁を受ける可能性があり、その間に期日を迎える出金は全額が汚染コインとして戻る。 news.sanction.title,ミキサーを制裁リストに追加 -news.sanction.desc,警察が複数のミキシングサービスに制裁を実施。今後数日間にミキサーから出金された資金は不審として扱われる。 +news.sanction.desc,警察が複数のミキサーサービスに制裁を科した。今後数日間にミキサーから出金された資金は汚染資金として扱われる。 nightlog.mixer,ミキサーから {0} {1} を回収。汚染 {2} → {3}。 -nightlog.mixer_flag,(制裁期間中に出金。アドレスはフラグ付き) -nightlog.mixer_flag.trap,(出金先アドレスがフラグ付き) +nightlog.mixer_flag,(制裁期間中の出金。全額が汚染コインとして記録) +nightlog.mixer_flag.trap,(出金したコインは警察により全額汚染コインとして記録) nightlog.mixer_rug,ミキサーの運営者が持ち逃げした:{0} {1} は戻ってこなかった。 web3.sub.trade,取引 gray.sub.mixer,ミキサー @@ -249,7 +247,7 @@ black.kind.Contraband.3,禁制品(高) black.kind.Tech,ハイテク品(割増) nightlog.bm.ready,闇市場:{0} が到着。開店後に配達人が届けてくれる。 guide.web3.title,Web3ハンドブック -guide.web3.text,銀行と取引:銀行ページは閲覧専用で、現金、家賃、Poinbase口座のCRCを表示する。入金と出金はPoinbaseの資金ページで行い、先にコインを選ぶ。CRCは銀行口座とウォレットのどちらでも可能で、他のコインはウォレットのみ。銀行からの入金はクレジットをPoinbase口座のCRCに変換し、銀行への出金はCRCをクレジットに戻すが、Poinbase口座の汚染を対象としたコンプライアンス審査が行われる。ウォレットへの出金は受取アドレスの入力が必要で、数回の承認を経て着金する。ガス代は通常の段階で固定され、送るコインから差し引かれる。アドレスの形式やチェックディジットが誤っていると拒否される。形式が正しくても誰も使っていないアドレスに送ったコインは失われる。¶取引:PSCは Probably Stolen Coin の略称で、グラフィックボードや専用採掘機で採掘されるコイン。Poinbaseの現物にはPSC/CRCとSPARK/CRCの2つのペアがあり、チャートで選んだコインに合わせて切り替わる。買いも売りも取引対象のコインの数量で入力する。プレビューには支払う・受け取る決済通貨が表示され、平均価格は手数料込み、スリッページは手数料を含まない。¶Web3の取引ページでは任意の2種類のコインを交換でき、必ずCRCを経由する。CRCが片側なら1つのプール、そうでなければ2つのプールを通り、手数料は2回、スリッページは重なる。プレビューに受取数量、経由するプール数、損失が表示される。ステーブルコイン同士(CRT・CRAとCRC)はステーブルプールを使い、手数料は{StableFee:%}、ペッグ付近ではスリッページがほぼない。ペッグが外れると流動性が薄くなり、崩壊時には流動性が引き揚げられてスリッページが急増する。§ハードウェアウォレット:チェーン上のコインはPLEDGERハードウェアウォレットに保管され、ウォレットごとに残高と汚染が個別に管理される。ウォレットはアイテムで、取引ターミナルにドラッグして読み込む。ターミナルのウォレットページで開き、ターミナル右上で接続・切断する。Web3ページの取引とグレーネットページのショップ、ミキサーは接続されたウォレットを使用する。ウォレットがない、または接続していないときは閲覧のみで、残高はすべて0になる。コイン決済の客は接続されたウォレットに支払う。¶支払い(ショップ、ミキサー、Ponero窓口、出品手数料)はまずターミナルで請求書を発行し、ウォレット側で送金先アドレスを入力して✓を長押しして署名する。アドレスの末尾2文字はチェックサムのため、1文字の誤入力なら通常は検出されるが、偶然有効なアドレスに一致した場合は誰も使っていないアドレスにコインが送られてしまう。DEXでのスワップもウォレットでの署名が必要となる。¶Poinbaseはカストディ口座で、入金はウォレットからPoinbaseの入金アドレスへ送金し(受け付けるのはPSC、CRC、SPARKのみ。規制下の取引所なので闇市場のCRTと革命軍のCRAは受け付けず、入金アドレスへの送金はウォレットが止める)、出金はPoinbaseの資金ページで行う。ウォレットページのエクスプローラーではアドレスで送金履歴を検索でき、実際に行われた送金のみが表示される:自分のウォレットのすべての入出金(送金、DEXスワップなどのコントラクト呼び出し、採掘機の収益、出金、他人から送られたコイン)。Poneroはプライバシーコインのため表示されない。追加のハードウェアウォレットはジャックソン博士から購入し、取引ターミナルにドラッグして追加する(最大{WalletMax}個)。ショップにはより安価なものもある。不要になったウォレットは、ウォレットページで破棄できる。中のコインは永久に失われ、その後このアドレスに送られたものも失われる。¶送金にはガス代が必要で、低速・通常・高速の3段階があり、ガス価格は約1週間周期で上下する。ネットワーク混雑時はガス代が高騰し、低速のトランザクションはメムプールから除外されることがある。送金前にアドレス全体を必ず確認すること。§ステーキング:革命家のプールにCRAをステーキングすると日利が付与され、利息は元本に複利で組み入れられる。出金するにはまず申請して4日間待つ必要があり、待機期間中は利息が発生せず、早期引き出しもできない。CRAは部分担保で、CRA1枚ごとに革命家が保有するCRC準備金とバランストークンSPARKが裏付けとなる。準備率と担保率はステーキングページに表示される。利息は担保のない新規CRAで支払われるため準備率が薄まり、ステーキングが多いほど速く進む。準備率が低すぎると革命家は日利を引き下げる。革命家は時折準備金を流用し、事前に噂が流れる。それが予兆だ。流用後に準備率が{CraCrashRatio:%}を割り込むと崩壊する。3日以内にCRAは無価値となり、4日間のロック解除期間では間に合わない。割り込まなければディスカウントにとどまり、上流階級への略奪で得た資金が準備金を徐々に補う。¶公式ミント:CRCとSPARK(比率は現在の担保率による。必要量はプレビューに表示)を預けてCRAをミントし、{CraMintDaysMin}〜{CraMintDaysMax}日待つ。ミントしたCRAはそのままステーキングされる。バーンはCRAをCRCとSPARKに戻し、待機期間はロック解除期間と同じ長さ。準備金が不足するとCRC分は準備率に応じて減額される。待機中のミントとバーンは、公式が全額履行しない場合がある。毎晩の確率は、CRAの価格が1を下回る幅に{CraRugPerDepeg}を掛けたもので、価格が1を下回らなければ発生しない。¶ステーキングにはCRA、CRC、CRT、SPARKを預けられる。後の3種は先に二次市場で時価によりCRAへ交換してから(CRC経由、手数料とスリッページあり)ステーキングされる。SPARKの価格変動は激しく、崩壊時には連動して暴落する。ステーキング、ミント、バーンはすべてコントラクト呼出であり、ウォレットでの署名が必要となる。§専用採掘機:RatDigg製専用採掘機(M1 / M2 / M3)は独立したマシンで、グラフィックボードより遥かに高いハッシュレートを持ち、ハッシュあたりの消費電力も抑えられている。稼働にはバッテリーが必要で、モジュールを装着でき、マイニングリグのスロットを消費しない。ショップの専用採掘機取引人のみから購入可能で、闇市場の評判(M1 {AsicRepM1}、M2 {AsicRepM2}、M3 {AsicRepM3})が必要となり、たまに中古品も出回る。焼損した場合は、電子部品を順番にドラッグして修理する。修理後は耐久度が {AsicRepairHealthCut} 低下する。{EraMin}日目から{EraMax}日目の間に「専用採掘機時代」が到来し、数日前に新聞で予告される。大規模ファームの電力コストが半減し、ネットワーク全体のハッシュレートが上昇するため、グラフィックボード採掘の収益は希薄化し、低性能ボードはほとんど稼げなくなるが、専用採掘機なら依然として十分採算が取れる。¶受取アドレス:各採掘機器(マイニングリグおよびASIC専用採掘機)は、専用ウィンドウ内で受取アドレスを設定する。採掘の産出量は毎晩ハッシュレートの比率に応じてこのアドレスへ送られるため、2台の採掘機で別々のアドレスへ送金することも可能。初期状態では未設定となっており、未設定の場合や指定したウォレットが破棄されている場合、その分の産出量は失われてしまう。ウォレットを変更した際は必ずアドレスも更新すること。¶ターボブースターは、他の機械と同じルールでマイニングリグや専用採掘機にも使用可能。1回使用するごとに追加で1サイクル実行され、すなわち直ちに1晩分の採掘が行われる。このサイクルは1晩分の電力を消費し、産出量は現在のネットワークハッシュレートに基づいて算出され、その機器の受取アドレスへ送られる。また、1回分の損耗および突然死の判定も行われるが、その機器はその夜も通常どおり採掘を行う。§無期限先物:Poinbaseの「無期限先物」タブでは、口座内のCRCを証拠金として使用し、PSCは最大{PerpPscLev}倍、SPARKは最大{PerpSparkLev}倍のレバレッジが可能。分離マージン方式のみ対応で、同時に保有できるポジションは1つのみ(ロングとショートの同時保有はできない)。増やすには証拠金の追加のみ可能。約定価格は提示価格より不利になり(現物プールと同様、注文量が大きいほど乖離する)、建玉および決済の双方に手数料がかかる。ロスカット判定は夜間に当日の平均価格でのみ行われ、有効証拠金が想定元本の{PerpMaint:%}を下回るとロスカットが執行され証拠金はゼロになる。また毎晩資金調達料の支払いがあり、価格が7日平均を上回っている場合はロングがショートへ支払う。¶他のトレーダーのポジションも相場に応じてロスカットされる。大半のロスカットでは残った証拠金が保険基金に入り、値動きが急なほど破綻が増え、その不足分を基金が補填する。1日で大きく動いた日は、全体のロスカット人数と金額(自分のポジションを含む)が新聞に載る。ロスカットで証拠金を超える損失が出た場合は保険基金が不足分を補填する。基金が枯渇した場合(市場全体で破綻が相次ぐ極端な相場のみ)、利益が出ているポジションに対して自動減倉が実行され利益の半分が削減される。それでも不足する分は負債となる。負債は1日ごとに{PerpDebtInterest:%}増加し、毎晩口座内のCRCから最優先で返済に充てられる。完済するまでは新規建てや出金が制限され、{PerpDebtDays}日経過すると店内の商品が差し押さえられて返済に充てられる。それでも補填しきれない分は貸倒処理され、無期限先物口座は{PerpBanDays}日間利用停止となる。§ショップ:コイン決済のみ(CRC不可)。通常ルートより{BmPremium:%}割高で、ハイテク品やグラフィックボードには追加の上乗せがある。支払ったコインの汚染は割合に応じて売り手側に残り、商品に盗品タグは付かない。グラフィックボードは偽物の可能性もあるため、自身で鑑定すること。¶ショップでの購入:左側で売り手を選択し、右側に商品棚が表示される。「購入」を押すと支払いパネルで数量、支払い方法、コインを設定できる。売り手の種類によって対応コインが異なり、ハードウェア・技術系はPSCとCRT、武器・医薬品・化学品・キーカード・チップ・高級品・個人売り手はCRTとプライバシーコイン、農業・畜産・水・醸造はPSCとCRA、プラットフォーム現物はPSC、CRT、CRAを受け付ける。売り手が受け付けるコインを持っていない場合は内蔵の自動スワップを利用でき、ウォレット内の別コインからスリッページ{BmAutoSwapSlip:%}でスワップして1回の署名で完了する。あるいは事前に自身でDEXでスワップすれば、スリッページはずっと抑えられるが手順が1つ増える。出品手数料も支払い時にコインを選択する。¶ショップのカート:棚の「購入」を押すとカートに追加され、右下のフローティングカートに数量が表示され、開くと決済画面に進む。決済画面の左側にはカート詳細が表示され(売り手ごとにグループ化、数量変更・削除が可能、対応する売り手ではエスクローまたは事前リリースを選択可能)、右側は支払いとなる。売り手ごとに送金先アドレスが異なるため、売り手ごとに個別決済を行う。その売り手が受け付けるコインを選んで請求書を作成し、ウォレットから送金するか、ウォレット内の別コインから自動スワップ(スリッページ{BmAutoSwapSlip:%}上乗せ)して1回の署名でその売り手への支払いを済ませる。§注文と出品:注文は現物より安価だが届くまで数日かかり、途中で押収される可能性がある。商人は種別ごとに独自の価格係数で販売し、{BmBulk1Count}点以上で{BmBulk1Discount:%}引き、{BmBulk2Count}点以上で{BmBulk2Discount:%}引きとなる。大口商人はランダムに出現し、価格は最安だが{BmBulkDays}日待つ必要がある。エスクローは{BmEscrowFee:%}の手数料がかかり、配達時に売り手へ送金され、売り手が逃走した場合は返金される。事前リリースならさらに{BmAdvanceDiscount:%}引きになるが、売り手が詐欺師なら返金されず、取引実績{BmAdvanceMinTrades}件以上の売り手のみが受け付ける。プラットフォーム自体のラグプル、警察による接収、または売り手が逮捕された場合、注文が追跡されて犯罪証拠が記録される。フォーラムの噂が前兆となる。押収された荷物が、警察の訪問に変わることがある。署名するとその場で犯罪証拠が記録され品物は没収されるが、拒否すれば代金を失うだけで済む。¶出品:ショップの出品タブで、保管庫の禁制品、ハイテク品、グラフィックボードを参考価格の{BmSellMin}倍〜{BmSellMax}倍で出品できる。倍率が高いほど売れるのが遅くなり({BmSellFastMult}倍未満で約{BmSellDaysFast}日、{BmSellDay1Mult}倍で約{BmSellDays1}日、{BmSellMax}倍で約{BmSellDaysMax}日)、売上金が汚染される確率と割合も高くなる。直近7日間の販売量が多いほど汚染も重くなる。盗品の売上金は、その盗品の熱度に応じて汚染される(売上金 × 熱度%)。出品タブはまず出品中のショーケースが開き、「出品を追加」でさらに準備する。同じ商品はまとめて表示され、−と+で数量を決め、倍率は左で選び、「棚」ボタンで出品手数料を払って初めて出品される。同じ商品の倍率は共通で、変えるにはいったん全部取り下げる。同時出品は最大{BmMaxKinds}種類、各{BmMaxStack}個まで、出品手数料は1個あたり{BmListFee:%}。ショーケースから取り下げると商品は保管庫に戻り、手数料は返らない。ショーケースの「受取コイン」で受け付けるコインを選ぶと、コインが増えるごとに夜の売却判定が1回増え(順番はランダムで、コインごとに買い手の数が違う)、受け付けるほど売れやすくなり、売上金は成約した判定のコインで届く。販売手数料として{BmCommission:%}が引かれ、売上金は{BmSaleHold}日間保留された後にウォレットへ届く。偽カードは買い手に見破られて返品され評価を落とす恐れがある。プラットフォームがラグプルした場合、出品中の商品も未払いの売上金も失われる。§予測市場(Web3の予測ページ、{PredictUnlockDay}日目以降):各市場はゲーム自身が抽選・決定する事象(ニュース発生、勢力の作戦開始、翌日の水純度、PSC価格など)に関する二者択一の質問。期間開始前まで購入可能で、最終日の夜に決済される。オンチェーンウォレットのCRCで「はい」または「いいえ」を購入(コントラクト呼出:ウォレット上で署名。ポジションは署名したウォレットに帰属)。価格は市場の織り込み確率であり、購入するほど高騰する。的中1株につき1クレジット払い戻され、取引ごとに {PredictFee:%} の手数料が発生する。各市場には保有上限がある。払戻金は賭け金の汚染比率を引き継ぐ。¶噂のメモや勢力特典で事前に発生を知った上で「はい」に賭けるとインサイダー注文となる。インサイダー注文も通常通り払い戻されるが、警察からインサイダー取引を疑われ、決済時や売却時にインサイダー分の払戻金が受取ウォレットの汚染として記録される。期間中のゲームデータが存在しない場合(夜間の決済をスキップした等)、市場は無効となり賭け金は返還される。§ニュースへの反応:毎晩、開催中の各市場は公開情報に基づく適正確率へ半分近づき、さらに若干の変動が加わる。そのため新聞、噂のメモ、派閥特典からいち早く情報を得れば、決済を待たずに先回りして購入し、変動後に売却できる。市場パネルの手がかり欄には、その市場に関する既知の情報が一覧表示される(予定、クールダウン、半減期の日、直近のガス値、CRA準備金の水位、専用採掘機時代の予告など)。¶推測できる法則:派閥作戦は隠された勢力値が閾値に達することでトリガーされる(例えば取締には警察≥20、闇市場≥40が必要で、警察が20低下する)。ガスは7日周期で変動する。半減期の1週間前から価格アンカーが日ごとに上昇する。予定された取締や停電はアンカーを動かすが、市場価格には事前に反映されない。準備金の消費が早い(ステーキングが多い)ほど、CRAの警告が早く発令される。PSC価格の市場はプレイヤー自身の大口注文で動かすことができる。情報ブローカー(十分な闇市場の評判が必要)は情勢ブリーフィング(5つの勢力値および各派閥が現在発動可能な行動、CRT払い)と、3段階のインサイダー情報(確定済みの派閥作戦と専用採掘機時代の市場のみが対象。ランクごとに精度が上昇し、価格は市場規模に応じる。真相と正反対の偽情報もある)を販売している。情報と同じ側に賭けるとインサイダー取引とみなされる。市場規模は日数の経過とともに拡大し、予測を外すと賭け金は全額失われるため、1つの市場に全額を投じてはならない。§価格操縦の検知:Poinbase現物での大口注文は、本来あるべき水準から価格を乖離させる(乖離幅は毎晩の価格回帰で減衰し、市場の手がかりで確認可能)。乖離が {ManipFree:%} を超えた後、その価格変動から利益を得た場合(動かした方向でのPSC価格予測の的中、または同方向での無期限先物の利確)、摘発される可能性がある。乖離が大きいほど摘発率は上がる(上限 {ManipMax:%})。摘発時も払戻し自体は行われるが、予測市場の払戻金はウォレットの汚染に、無期限先物の利益はPoinbaseアカウントの汚染となり、新聞に捜査が報じられる。¶汚染はその時点のウォレット価値を超えることはできない。汚染付与時に超過した分は、{PredictFraudShare:%} の割合で詐欺の罪状として記録される(1回あたり最大 {PredictFraudCap})。インサイダー注文と価格操縦はいずれもこの規則に従う。空売りしてからの価格暴落誘導(ショート&ダンプ)は確実な手段ではない。無期限先物の往復スリッページや現物売買のコストが、ショートで得られる利益を上回ることが多いためだ。§ポンジ・スキーム(利回りページの「スキーム発行」、ゲーム{PonziMinDay}日目より、1セーブにつき1回のみ):日利({PonziRates[0]:%}〜{PonziRates[4]:%})を設定し、宣伝費を支払って開始する(開始やラグプルはウォレットで署名するコントラクト呼出)。下層の住民は日利と下層の評判に応じてプールへCRCを入金し、日利が高いほど集まる速度が上がる。毎晩、利息はまず新規の入金から支払われ、不足分は発行者ウォレットから補填される。補填できない場合は取り付け騒ぎが発生して崩壊する。プールからは毎晩{PonziWithdraw:%}が出金され、プールが大きく日利が高いほど通報される確率が上がり、通報されても同様に崩壊する。崩壊時、プールは没収される。プールはいつでもラグプル可能(2回クリックして確定):全額が汚染資金として発行者ウォレットへ送金される(出金前に資金洗浄が必要)。ラグプルと崩壊はどちらも詐欺の犯罪証拠として記録され、下層の評判はリセットされる。「通報リスク」欄で通報リスクの目安を確認できる。§詐欺:ヒゲ――朝の開店時に価格が一瞬で上下に{WickMin:%}〜{WickMax:%}振れることがある。大半はその夜のうちに大きく戻るが、本物の値動きもある。無期限先物のマーク価格には半分しか反映されないため、ヒゲに動揺して狼狽売りしないこと。¶エアドロップ(Web3のエアドロップページ)――エアドロップごとに、まずウォレットを承認し(承認コントラクトに署名)、次に署名して受け取る。承認する前に対象のトークン承認範囲を確認すること。正規のエアドロップはトークン承認が不要か、数十程度の少額承認で済む。「無制限承認」や報酬を大幅に上回る大口承認を要求するものはフィッシング詐欺であり、紛らわしい名前(oを0、lを1に置き換えるなど)が使われることが多い。1〜2晩後に該当コインがウォレットから抜き取られる。トークン承認はエアドロップページの右側に一覧表示され、署名によって取り消すことができる。取り消せば資金を持ち出されることはない。¶サードパーティ収益プール(利回りページ「入金」)――日利{YieldRates[0]:%}〜{YieldRates[2]:%}。準備金、タイムロックや監査の有無は確認できるが、詐欺かどうかは見抜けない。日利が高いほどラグプルの可能性が高く、タイムロックや監査があればその確率は下がる。健全なプールは利息を支払えなくなると元本を返還して閉鎖するが、詐欺プールは毎晩のように持ち逃げして消える可能性がある。タイムロック付きプールからの出金には{YieldLockDays}日かかる。¶偽サポート――Poinbaseのサポートを名乗る者が店頭に現れ、CRCを「安全なアドレス」へ移すよう要求してくる。Poinbaseが訪問したり、送金を要求することは決してない。偽造送金――コイン決済の客が「もう送金した、これがスクショだ、早く品物を渡せ」と言い出す場合、代金が支払われることはない。真っ当な客ならオンチェーンでの承認に少し時間がかかると言うはずだ。§チャート:Poinbase現物ページとWeb3取引ページでは、各コインの日足ローソク足(無期限先物ページは現在の銘柄、予測市場はPSC)を切り替えられる。緑は上昇、赤は下落。黄色のラインは7日移動平均線(無期限先物の資金調達料の算出に使用)。下部の棒グラフは出来高(灰色は市場、シアンは自身:現物、DEX、ミント / バーン、Poneroスワップ、無期限先物の新規・決済のすべてがカウントされる)。値動きが大きいほど市場の取引量も増加し、ヒゲは長い影を残す。§ストーリー連動:ゲーム内のストーリー選択によってこの市場が変動する。翌日の新聞で報じられ、市場は数日かけて反応する。セルピコの証拠を革命家に渡す:CRA準備金が補充され、{StorySecDays} 日間は崩壊確率が半減、SPARKが {StorySparkNights} 晩で {StorySerpicoSpark:+%} 上昇;闇市場に渡す:CRTのディペッグおよび裏切られる確率が半減;警察に渡す:{StorySecDays} 日間、出金審査、ミキサー制裁、価格操縦の取り締まりが強化。エレノアがドライブを流出:CRCカストディ減記の確率が2倍、SPARKが {StoryLeakSpark:+%} 上昇;返却:CRCのディペッグ確率が半減。ルン警部逮捕:{StoryLunDays} 日間、出金審査と価格操縦の取り締まりが強化。¶ミキサー運営者タンブラー(ミキサー解放後、{TumblerMinDay} 日目以降):店に数回来店し、最後に暗号鍵ドライブを隠すよう頼んでくる。隠して返却:ミキサー手数料が半減し匿名セットが拡大、謝礼も獲得。ただしドライブは禁制品であり、その間に捜索で見つかると前歴に記録される。警察に通報:賞金と警察の評判を獲得、ミキサーは停止(処理中のコインは返還)。闇市場に売却:まとまったCRT(半分は汚染)と闇市場の評判を獲得、以降はミキサー手数料が上昇しラグプル確率も上昇。¶タンブラーの後日談:2回目と3回目の来店の間に治安部の捜査官が訪ねてきて、彼が店に来たか尋ねられる。認める:警察の評判 +{TumblerAgentSecRep}。ただしその後彼のためにドライブを隠すと、タンブラーが受け取りに来る前日に捜査官が店を捜索し、発見されるとドライブを押収され禁制品として記録される。鍵が警察の手に渡った場合(通報、ドライブ押収、彼が戻った時に手元にない等)、ミキサーの記録が復元される:過去 {TumblerLeakDays} 日間にミキサー出金で洗浄された汚染がすべて元のウォレットに戻され、ウォレットの価値を超えた分は詐欺の罪状として記録される。通報すると裁判が開廷:予測市場で判決に賭けることができ、新聞で毎日の審理が報じられる。無罪となった場合、彼は復讐してくる。ドライブを売却した場合、闇市場は {TumblerBmRugMin}–{TumblerBmRugMax} 日後にラグプルを決行、ミキサー内で処理中のコインは全損し、彼も同様に復讐してくる。隠して返却した場合、警察による手入れの前夜に彼から警告が届く。ミキサー閉鎖から {TumblerRebrandDays} 日後、別名で再開される。その一部は警察のおとりであり、出金したコインはすべてフラグ付きとなる。手数料が低すぎるものには要注意。§ミキサーとプライバシーコイン:コイン、数量、ラウンド数を選択する。ラウンドごとに手数料が引かれて汚染が減少し、ラウンド数は待機日数に等しく、同一アドレスにコインが戻る。入金額が多いほど洗浄効果は低下する。¶プライバシーコインのスワップ(Web3取引ページ、闇市場の評判が必要):Poneroはプライバシーコインであり、Poneroへのスワップでその価値相当の汚染が除去される。どちらの方向も{PoneroFee:%}の手数料と1日の限度額がある。Poneroからスワップしたコインは出所不明となり、出金審査が厳しくなる。§OTC客(人脈アップグレード「OTCデスク」):黒いランプのターゲットに「OTC客」が追加される(ランプをダブルクリックして切り替え)。ショーケース内に配置した時のみ点灯し、元の黒いランプと同様にランプの数と闇市場の評判に応じて客を引き寄せる。アップグレード時にランプ1個が付属する。訪れる客の半数はコインの売却、半数はコインの購入を希望し、常に現金で決済される。客が用件を伝えた後、「ターミナルで話す」を選択すると取引ターミナルで店頭取引ページが開き、客はカウンターの前で待機する。25% / 50% / 75% / 100%または手入力した数量で一部のみ取引可能で、現金もそれに比例して計算される。「パス」を選ぶか客を追い払えば断ることができる。取引数量は家賃とともに増加する。¶コインを売る客:取引成立時に現金を支払い、コインは接続されたウォレットに直接入る。ステーション内で事件が発生すると、多くはその事件に由来するコインとなる。抗争や警察の取り締まり期間中はCRT、革命家による上層襲撃や下層の動揺期間中はPSCとなり、時価全額の汚染を帯びている。通常時はPSC、CRT、CRAからランダムとなり、汚染は価値の{OtcTaintMin:%}–{OtcTaintMax:%}を占め、汚れているほど安くなる(提示額は価値の{OtcCutClean:%}から{OtcCutDirty:%}に低下する)。客はコインがどれほど汚れているかを口にしない。取引ページに客のアドレスが表示され、「照会」を押すとエクスプローラーでその履歴が開く。ミキサー、闇市場プラットフォーム、詐欺アドレスからの流入が多いほど汚染度が高い。Poneroデスクの開放後は時折Poneroを売る客が現れ、汚染はないが価格は高い。加算される汚染はウォレットの価値を超えることができず、超過分は詐欺として記録される。客は時折潜入捜査官のことがあり、取引に応じると現金を失い盗品売買として記録される。警察の取り締まり期間中は特に出現しやすい。¶コインを買う客:あらゆるコインを求める可能性があり、提示額は市場価格にランダムな上乗せ(市場価格の{OtcBidMin:+%}から{OtcBidMax:+%}。市場価格を下回ることもある)を加えた額となる。売る価値があるかは自分次第となる。取引成立時にアドレスと数量が入力された状態でPLEDGERが開き、署名して承認を待つと、着金時に客が現金を支払って立ち去る。署名する前に客が立ち去った場合、取引は無効となる。売却したコインの汚染が追跡されることはない。¶自営ミキサー(グレーネットのページ、「OTCデスク」に付属):資金を投入して開業すると、客が汚染されたコインを入金し、数日後に出金が行われ手数料が手元に残る。各ラウンドでは匿名性セットに応じて汚染の一部が洗い落とされる。匿名性セットは主に元金と未回収の収益で構成され(処理中の客のコインは一部のみカウント)、資金を多く投入するほど綺麗に洗浄される。客は手数料に出金時に残った汚染を加えた額をタンブラーのミキサーと比較し、より安い方を利用する。闇市場の評判が高いほど多くの客が訪れる。表示される評判は直近の出金に残った汚染割合である。手数料収益はプールに留まり、引き出す際は全額が汚染資金となる。元金は元々の汚染を保持したまま戻る。客足が増えるほど警戒度が上昇し(プールが大きいと隠蔽力はわずかに増すが、客足も増えるため全体として目を付けられやすくなる)、それに伴い警察の手入れを受ける確率が高まる。元金、収益、客のコインはすべて没収され、盗品売買として記録され、ミキサーは{OwnMixSeizeDays}日間閉鎖される。営業中の夜には時折潜入捜査官が入金を行い、これも盗品売買として記録される。いつでもラグプルが可能:客のコインを含むすべてが全額汚染された状態で手元に入り、詐欺として記録され、闇市場の評判が低下し、ミキサーは永久に閉鎖される。§出金審査(画面には限度額も検知率も表示されない。ルールは以下の通り):PoinbaseからCRCを出金してクレジットに換金する際、現在の家賃を基準に判定される。1回の出金が家賃の{AmlBigRents}倍を超える、または直近{AmlWindowDays}日間の累計が家賃の{AmlCumRents}倍を超えると、超過分に比例して審査される確率が上昇する。金額に対する汚染割合が{AmlTaintRatio:%}以上に達すると、「割合 × {AmlTaintMult}」の確率が加算される。最近ミキサーから戻されたコインやフラグ付きウォレットからの資金はさらに{AmlMixerBonus:%}加算される。確率は最大{AmlMaxChance:%}。検知された場合:汚染率が{AmlHeavyRatio:%}未満なら軽微とみなされ、汚染分のみ没収されて犯罪証拠は記録されない。{AmlHeavyRatio:%}以上の場合は重大とみなされ、汚染分が没収された上で汚染額が盗品売買の犯罪証拠として記録される。検知されなければ全額が着金する。出金には{ExchangeFee:%}の手数料がかかり、原価を上回る利益には{TaxRate:%}の税金が課される。少額に分割する、複数日に分散する、あらかじめ洗浄するなどの手段で確率を下げられるが、限度額や確率は表示されないため自身で推測すること。¶ウォレットを破棄する前に必ず自分でコインを送金し、ポジションや入金分も先に出金しておくこと。残された資産はウォレットと共に消滅する。 +guide.web3.text,"銀行と取引: 銀行ページは閲覧専用で、現金、家賃、Poinbaseアカウント内のCRCを表示する。Poinbaseの資金ページで入出金を管理し、まず通貨を選択する。CRCは銀行口座またはウォレットを経由できるが、他の通貨はウォレット経由のみとなる。銀行から入金するとクレジットがPoinbaseアカウント内のCRCに変換され、銀行へ出金すると審査なしでCRCがクレジットに戻る(Poinbaseアカウントにはクリーンな資金しか入らない)。ウォレットへ出金する場合は送金先アドレスが必要で、数回の承認を経て着金する。ガス代は「標準」に固定され、送金する通貨から差し引かれる。アドレスの形式やチェックサムに誤りがあると拒否されるが、形式が正しくても誰も使っていないアドレスに送金した場合、そのコインは失われる。¶取引: PSCの正式名称はProbably Stolen Coinで、グラフィックボードや専用採掘機で採掘される通貨。Poinbase現物にはチャートで選択した通貨に応じてPSC/CRCとSPARK/CRCの2つの取引ペアがある。買い・売りともに取引する通貨の数量を入力し、プレビューには支払うまたは受け取る決済通貨が表示される。平均価格には手数料が含まれるが、スリッページは含まれない。¶Web3取引ページでは任意の2通貨をスワップできるが、常にCRCを経由する。一方がCRCなら1つのプール、それ以外は2つのプールを経由し、2回の手数料とスリッページの重複が発生する。プレビューには受取数量、経由するプール数、損失が表示される。ステーブルコイン同士のスワップ(CRTまたはCRA対CRC)はステーブルプールを使用し、手数料は{StableFee:%}で、ペッグ付近ではスリッページがほぼ発生しない。デペッグ時は流動性が薄れ、崩壊時には流動性が引き抜かれてスリッページが急増する。§ハードウェアウォレット: オンチェーンの通貨はPLEDGERハードウェアウォレットに保管され、残高と汚染コインはウォレットごとに個別に管理される(各通貨で何枚が汚染されているかを記録。「汚染」を参照)。ウォレットはアイテムであり、取引ターミナルにドラッグして読み込ませる。ターミナルのウォレットページで開き、ターミナル右上から接続・切断を行う。Web3ページの取引やグレーネットページのショップ、ミキサーは接続中のウォレットを使用する。ウォレットがない、または未接続の場合は閲覧専用となり、全残高が0と表示される。通貨で支払う客の代金も接続中のウォレットに入る。¶支払い(ショップ、ミキサー、Poneroデスク、出品手数料)はターミナルで請求書を発行し、ウォレットで送金先アドレスを入力して✓を長押しして署名する。アドレスの末尾2文字はチェックサムのため、1文字の入力ミスは大半が検知されるが、偶然有効なアドレスに一致すると誰も使っていないアドレスに送金されてしまう。DEXでのスワップにもウォレットでの署名が必要。¶Poinbaseはカストディ型アカウントであり、入金はウォレットからPoinbaseの入金用アドレスへ送金して行う(PSC、CRC、SPARKのみ受付。規制準拠の取引所は闇市場のCRTや革命家のCRAを取り扱っておらず、入金用アドレスへの送金はウォレット側で遮断される。入金できるのはクリーンなコインのみ。「汚染」を参照)。出金はPoinbaseの資金ページから開始する。ウォレットページのエクスプローラーではアドレスごとに送金履歴を照会でき、実際に成立した取引のみが表示される。ウォレットのあらゆる入出金(送金、DEXスワップやその他のコントラクト呼出、採掘機の収益、出金、第三者からの送金)が対象。Poneroはプライバシーコインのため表示されない。追加のハードウェアウォレットはジャックソン博士から購入でき、取引ターミナルにドラッグして追加する(最大{WalletMax}個)。ショップにはより安価なものもある。不要になったウォレットはウォレットページで破棄できるが、中のコインは永久に失われ、破棄後にそのアドレスへ送金されたものも消失する。¶送金にはガス代がかかり、「低速」「標準」「高速」の3段階がある。ガス価格はおよそ1週間の周期で上下する。ネットワーク混雑時はガス代が高騰し、低速の取引はメムプールから排除される可能性がある。送金前にアドレス全体をよく確認すること。§ステーキング:革命家のプールにCRAをステーキングすると日利が付与され、利息は元本に複利で組み入れられる。出金するにはまず申請して4日間待つ必要があり、待機期間中は利息が発生せず、早期引き出しもできない。CRAは部分担保で、CRA1枚ごとに革命家が保有するCRC準備金とバランストークンSPARKが裏付けとなる。準備率と担保率はステーキングページに表示される。利息は担保のない新規CRAで支払われるため準備率が薄まり、ステーキングが多いほど速く進む。準備率が低すぎると革命家は日利を引き下げる。革命家は時折準備金を流用し、事前に噂が流れる。それが予兆だ。流用後に準備率が{CraCrashRatio:%}を割り込むと崩壊する。3日以内にCRAは無価値となり、4日間のロック解除期間では間に合わない。割り込まなければディスカウントにとどまり、上流階級への略奪で得た資金が準備金を徐々に補う。¶公式ミント:CRCとSPARK(比率は現在の担保率による。必要量はプレビューに表示)を預けてCRAをミントし、{CraMintDaysMin}〜{CraMintDaysMax}日待つ。ミントしたCRAはそのままステーキングされる。バーンはCRAをCRCとSPARKに戻し、待機期間はロック解除期間と同じ長さ。準備金が不足するとCRC分は準備率に応じて減額される。待機中のミントとバーンは、公式が全額履行しない場合がある。毎晩の確率は、CRAの価格が1を下回る幅に{CraRugPerDepeg}を掛けたもので、価格が1を下回らなければ発生しない。¶ステーキングにはCRA、CRC、CRT、SPARKを預けられる。後の3種は先に二次市場で時価によりCRAへ交換してから(CRC経由、手数料とスリッページあり)ステーキングされる。SPARKの価格変動は激しく、崩壊時には連動して暴落する。ステーキング、ミント、バーンはすべてコントラクト呼出であり、ウォレットでの署名が必要となる。§専用採掘機:RatDigg製専用採掘機(M1 / M2 / M3)は独立したマシンで、グラフィックボードより遥かに高いハッシュレートを持ち、ハッシュあたりの消費電力も抑えられている。稼働にはバッテリーが必要で、モジュールを装着でき、マイニングリグのスロットを消費しない。ショップの専用採掘機取引人のみから購入可能で、闇市場の評判(M1 {AsicRepM1}、M2 {AsicRepM2}、M3 {AsicRepM3})が必要となり、たまに中古品も出回る。焼損した場合は、電子部品を順番にドラッグして修理する。修理後は耐久度が {AsicRepairHealthCut} 低下する。{EraMin}日目から{EraMax}日目の間に「専用採掘機時代」が到来し、数日前に新聞で予告される。大規模ファームの電力コストが半減し、ネットワーク全体のハッシュレートが上昇するため、グラフィックボード採掘の収益は希薄化し、低性能ボードはほとんど稼げなくなるが、専用採掘機なら依然として十分採算が取れる。¶受取アドレス:各採掘機器(マイニングリグおよびASIC専用採掘機)は、専用ウィンドウ内で受取アドレスを設定する。採掘の産出量は毎晩ハッシュレートの比率に応じてこのアドレスへ送られるため、2台の採掘機で別々のアドレスへ送金することも可能。初期状態では未設定となっており、未設定の場合や指定したウォレットが破棄されている場合、その分の産出量は失われてしまう。ウォレットを変更した際は必ずアドレスも更新すること。¶ターボブースターは、他の機械と同じルールでマイニングリグや専用採掘機にも使用可能。1回使用するごとに追加で1サイクル実行され、すなわち直ちに1晩分の採掘が行われる。このサイクルは1晩分の電力を消費し、産出量は現在のネットワークハッシュレートに基づいて算出され、その機器の受取アドレスへ送られる。また、1回分の損耗および突然死の判定も行われるが、その機器はその夜も通常どおり採掘を行う。§無期限先物:Poinbaseの「無期限先物」タブでは、口座内のCRCを証拠金として使用し、PSCは最大{PerpPscLev}倍、SPARKは最大{PerpSparkLev}倍のレバレッジが可能。分離マージン方式のみ対応で、同時に保有できるポジションは1つのみ(ロングとショートの同時保有はできない)。増やすには証拠金の追加のみ可能。約定価格は提示価格より不利になり(現物プールと同様、注文量が大きいほど乖離する)、建玉および決済の双方に手数料がかかる。ロスカット判定は夜間に当日の平均価格でのみ行われ、有効証拠金が想定元本の{PerpMaint:%}を下回るとロスカットが執行され証拠金はゼロになる。また毎晩資金調達料の支払いがあり、価格が7日平均を上回っている場合はロングがショートへ支払う。¶他のトレーダーのポジションも相場に応じてロスカットされる。大半のロスカットでは残った証拠金が保険基金に入り、値動きが急なほど破綻が増え、その不足分を基金が補填する。1日で大きく動いた日は、全体のロスカット人数と金額(自分のポジションを含む)が新聞に載る。ロスカットで証拠金を超える損失が出た場合は保険基金が不足分を補填する。基金が枯渇した場合(市場全体で破綻が相次ぐ極端な相場のみ)、利益が出ているポジションに対して自動減倉が実行され利益の半分が削減される。それでも不足する分は負債となる。負債は1日ごとに{PerpDebtInterest:%}増加し、毎晩口座内のCRCから最優先で返済に充てられる。完済するまでは新規建てや出金が制限され、{PerpDebtDays}日経過すると店内の商品が差し押さえられて返済に充てられる。それでも補填しきれない分は貸倒処理され、無期限先物口座は{PerpBanDays}日間利用停止となる。§ショップ: 通貨決済のみ、CRC不可。通常ルートより{BmPremium:%}割高で、ハイテク品やグラフィックボードには追加の価格上乗せがある。支払った通貨はその通貨の汚染比率に応じて汚染分も消費され、商品に盗品タグは付かない。グラフィックボードは偽物の可能性があるため、各自で鑑定すること。¶ショップでの購入: 左側で売り手を選択すると右側に商品棚が表示され、「購入」後に支払いパネルで数量、支払方法、通貨を設定する。売り手のカテゴリごとに受け付ける通貨が異なり、ハードウェア・技術系はPSCとCRT。武器、薬品、化学物質、身分証、高級品、個人出品者はCRTとプライバシーコイン。農業、畜産、水処理、醸造はPSCとCRA。プラットフォーム現物はPSC、CRT、CRAに対応している。売り手が受け付ける通貨がない場合は内蔵の自動両替を利用可能。ウォレット内の別通貨からスリッページ{BmAutoSwapSlip:%}でスワップし、1回の署名で完了する。あるいは事前にDEXで自分でスワップすれば、ひと手間増えるがスリッページはずっと抑えられる。出品手数料も同様に支払い時に通貨を選択する。¶ショップのカート: 商品棚の「購入」を押すとカートに追加され、右下のフローティングカートに点数が表示され、開くと決済画面に進む。決済画面の左側にはカート詳細(売り手ごとにグループ化、数量調整や削除が可能、対応する売り手ではエスクローまたは事前リリースを選択可能)、右側には支払いが表示される。売り手ごとに送金先アドレスが異なるため、売り手ごとに支払う。その売り手が受け付ける通貨を選択して請求書を発行し、ウォレットから送金するか、ウォレット内の別通貨から自動両替(スリッページ{BmAutoSwapSlip:%}追加)して1回の署名でその売り手への支払いを済ませる。§注文と出品:注文は現物より安価だが日数がかかり、途中で押収される可能性がある。商人は種別ごとに独自の価格係数で販売し、{BmBulk1Count}点以上で{BmBulk1Discount:%}引き、{BmBulk2Count}点以上で{BmBulk2Discount:%}引きとなる。大口商人はランダムに出現し、価格は最安だが待ち時間は{BmBulkDays}日。エスクローは手数料{BmEscrowFee:%}で、配達時に支払われ、売り手が逃走した場合は返金される。事前リリースはさらに{BmAdvanceDiscount:%}引きとなるが、詐欺師なら代金は戻らず、取引実績{BmAdvanceMinTrades}件以上の売り手のみが受け付ける。プラットフォーム自体のラグプルや警察による接収、売り手が逮捕される可能性もあり、その場合注文が追跡され罪証が記録される。フォーラムの噂は予兆となる。押収された小包は警察自らの訪問に化けることがある。受取に署名するとその場で罪証が記録され品物は押収されるが、受取拒否なら代金の損失だけで済む。¶出品:ショップの出品タブで、保管庫の禁制品、ハイテク品、グラフィックボードを基準価格の{BmSellMin}倍〜{BmSellMax}倍で出品できる。倍率が高いほど売れるのは遅くなり({BmSellFastMult}倍以下は約{BmSellDaysFast}日、{BmSellDay1Mult}倍は約{BmSellDays1}日、{BmSellMax}倍は約{BmSellDaysMax}日)、売上金の汚染確率と割合も高くなり、直近7日間の販売量が多いほど汚染は重くなる。盗品はヒート値に応じて売上金を汚染する(売上コインのヒート値%が汚染資金)。出品タブを開くと出品中ショーケースが表示され、「出品追加」でさらに準備できる。同一品はまとめられ、−と+キーで数量を調整、倍率は左側で選択し、棚ボタンで出品手数料を支払うと出品される。同一アイテムの倍率はすべて共通のため、変更するにはまず全品取り下げる必要がある。同時に最大{BmMaxKinds}種、各{BmMaxStack}点まで出品可能で、1点あたり{BmListFee:%}の出品手数料がかかる。ショーケースから取り下げた品は保管庫に戻るが、手数料は返金されない。ショーケースの「受取通貨」で受け付けるコインを選択する。受け付ける通貨を1種増やすごとに毎晩1回成約判定が増え(順序はランダム、通貨ごとに買い手数が異なる)、対応通貨が多いほど早く売れ、成約した回の通貨で売上金が支払われる。手数料{BmCommission:%}、売上金は{BmSaleHold}日間エスクローされた後にウォレットへ届く。偽グラフィックボードは買い手に見破られて返品され、評価が下がる恐れがある。プラットフォームがラグプルした場合、出品中の品と未払いの売上金は失われる。§予測市場(Web3「予測」ページ、ゲーム内日数: {PredictUnlockDay}日目以降):各市場はゲーム自体の抽選やスケジュールに関する二者択一の質問となる(ニュースの発生、派閥行動の開始、明日の水純度、PSC価格など)。市場はウィンドウ開始前まで開放され、ウィンドウ最終日の夜に決済される。オンチェーンウォレットのCRCでYesまたはNoを購入する(コントラクト呼出:ウォレットで署名が必要。ポジションは署名したウォレットに属する)。価格は市場の予想確率であり、購入するほど上昇する。的中時は1口につき1クレジットが支払われる。取引ごとに手数料{PredictFee:%}、各市場にはポジション上限がある。賭けたCRCに汚染資金が含まれていた場合、配当金もその比率分が汚染される。¶噂のメモや派閥特典によって出来事を事前に知ることができる。そうした市場でYesに賭ける行為はインサイダーベットと見なされる。インサイダーベットも通常通り配当されるが、警察からインサイダー取引を疑われる。決済時または売却時、インサイダー分の配当金は受取ウォレット内で汚染コインとして記録される。ウィンドウ内のゲームデータが欠落している場合(夜の決済をスキップした場合など)、市場は無効となり賭け金は返金される。§ニュースへの反応:毎晩、開催中の各市場は公開情報に基づく適正確率へ半分近づき、さらに若干の変動が加わる。そのため新聞、噂のメモ、派閥特典からいち早く情報を得れば、決済を待たずに先回りして購入し、変動後に売却できる。市場パネルの手がかり欄には、その市場に関する既知の情報が一覧表示される(予定、クールダウン、半減期の日、直近のガス値、CRA準備金の水位、専用採掘機時代の予告など)。¶推測できる法則:派閥作戦は隠された勢力値が閾値に達することでトリガーされる(例えば取締には警察≥20、闇市場≥40が必要で、警察が20低下する)。ガスは7日周期で変動する。半減期の1週間前から価格アンカーが日ごとに上昇する。予定された取締や停電はアンカーを動かすが、市場価格には事前に反映されない。準備金の消費が早い(ステーキングが多い)ほど、CRAの警告が早く発令される。PSC価格の市場はプレイヤー自身の大口注文で動かすことができる。情報ブローカー(十分な闇市場の評判が必要)は情勢ブリーフィング(5つの勢力値および各派閥が現在発動可能な行動、CRT払い)と、3段階のインサイダー情報(確定済みの派閥作戦と専用採掘機時代の市場のみが対象。ランクごとに精度が上昇し、価格は市場規模に応じる。真相と正反対の偽情報もある)を販売している。情報と同じ側に賭けるとインサイダー取引とみなされる。市場規模は日数の経過とともに拡大し、予測を外すと賭け金は全額失われるため、1つの市場に全額を投じてはならない。§価格操縦の検知:Poinbase現物での大口注文は、注文がなかった場合の水準から価格を乖離させる(乖離幅は毎晩の価格回帰に伴い減衰し、予測の手がかりで確認できる)。乖離幅が{ManipFree:%}を超えた後、その価格から利益を得た場合(推した方向でのPSC価格市場の的中、または同方向での無期限先物の利確決済)、摘発される可能性がある。乖離が大きいほど確率は高まる(上限{ManipMax:%})。摘発されても配当や利益自体は受領できる。予測市場の配当金は全額が汚染コインとして記録され、無期限先物の利益は口座に残るものの、利益の{PredictFraudShare:%}が詐欺の罪証として記録される(上限{PredictFraudCap})。新聞でも捜査が報じられる。¶空売りからの売り崩しは確実に儲かるわけではない。無期限先物の往復スリッページと現物の往復売買コストが、空売りの利益を上回ることが多い。§ポンジ・スキーム(利回りページ「発行」、ゲーム内日数: {PonziMinDay}日目以降、1セーブにつき1回のみ):日利({PonziRates[0]:%}〜{PonziRates[4]:%})を設定し、宣伝費を支払って開始する(開始やラグプルはウォレットで署名するコントラクト呼出)。下層の住民は日利と下層の評判に応じてプールへCRCを入金し、日利が高いほど集まる速度も早くなる。毎晩、利息はまず新規の入金から支払われ、不足分は発行者のウォレットから補填される。支払えない場合は取り付け騒ぎが発生して崩壊する。プールからは毎晩{PonziWithdraw:%}が引き出され、プール規模が大きく日利が高いほど通報される確率が上がり、通報されても崩壊する。崩壊時、プール内の資金は没収される。プールはいつでもラグプル可能(2回クリックして確定):資金は発行者ウォレットへ送金され、そのCRCは全額が汚染資金となる(Poinbaseに入金する前に洗浄が必要)。ラグプルと崩壊はいずれも詐欺の罪証が記録され、下層の評判がゼロになる。「巷の噂」欄で通報リスクの目安が示される。§詐欺:ヒゲ――朝の開店時に価格が一瞬で上下に{WickMin:%}〜{WickMax:%}振れることがある。大半はその夜のうちに大きく戻るが、本物の値動きもある。無期限先物のマーク価格には半分しか反映されないため、ヒゲに動揺して狼狽売りしないこと。¶エアドロップ(Web3のエアドロップページ)――エアドロップごとに、まずウォレットを承認し(承認コントラクトに署名)、次に署名して受け取る。承認する前に対象のトークン承認範囲を確認すること。正規のエアドロップはトークン承認が不要か、数十程度の少額承認で済む。「無制限承認」や報酬を大幅に上回る大口承認を要求するものはフィッシング詐欺であり、紛らわしい名前(oを0、lを1に置き換えるなど)が使われることが多い。1〜2晩後に該当コインがウォレットから抜き取られる。トークン承認はエアドロップページの右側に一覧表示され、署名によって取り消すことができる。取り消せば資金を持ち出されることはない。¶サードパーティ収益プール(利回りページ「入金」)――日利{YieldRates[0]:%}〜{YieldRates[2]:%}。準備金、タイムロックや監査の有無は確認できるが、詐欺かどうかは見抜けない。日利が高いほどラグプルの可能性が高く、タイムロックや監査があればその確率は下がる。健全なプールは利息を支払えなくなると元本を返還して閉鎖するが、詐欺プールは毎晩のように持ち逃げして消える可能性がある。タイムロック付きプールからの出金には{YieldLockDays}日かかる。¶偽サポート――Poinbaseのサポートを名乗る者が店頭に現れ、CRCを「安全なアドレス」へ移すよう要求してくる。Poinbaseが訪問したり、送金を要求することは決してない。偽造送金――コイン決済の客が「もう送金した、これがスクショだ、早く品物を渡せ」と言い出す場合、代金が支払われることはない。真っ当な客ならオンチェーンでの承認に少し時間がかかると言うはずだ。§チャート:Poinbase現物ページとWeb3取引ページでは、各コインの日足ローソク足(無期限先物ページは現在の銘柄、予測市場はPSC)を切り替えられる。緑は上昇、赤は下落。黄色のラインは7日移動平均線(無期限先物の資金調達料の算出に使用)。下部の棒グラフは出来高(灰色は市場、シアンは自身:現物、DEX、ミント / バーン、Poneroスワップ、無期限先物の新規・決済のすべてがカウントされる)。値動きが大きいほど市場の取引量も増加し、ヒゲは長い影を残す。§ストーリー連動:ゲーム内のストーリー選択によってこの市場が変動する。翌日の新聞で報道され、市場が反応するまで数日かかる。セルピコの証拠を革命家に渡した場合:CRA準備金に資金注入され、{StorySecDays} 日間は崩壊確率が半減、SPARKは {StorySparkNights} 晩で {StorySerpicoSpark:+%} 上昇する。闇市場に渡した場合:CRTのデペッグおよび鎮圧時の密告確率が半減する。警察に渡した場合:{StorySecDays} 日間ミキサーの洗浄効率が低下し(各ラウンド ×{StorySecMixClean})、ミキサーへの制裁と価格操縦の取り締まりが厳格化する。エレノアがデータドライブを流出させた場合:CRCカストディアンの評価損発生確率が2倍になり、SPARKが {StoryLeakSpark:+%} 上昇する。返却した場合:CRCのデペッグ確率が半減する。ルン警部が逮捕された場合:{StoryLunDays} 日間価格操縦の取り締まりが厳格化し、OTC客に潜入捜査官が混ざる確率が上がる。¶ミキサー運営者タンブラー(ミキサー解放後、{TumblerMinDay} 日目以降):数回来店し、最後にキードライブを隠してほしいと頼んでくる。隠しておいて返却した場合:ミキサー手数料が半減し匿名セットが拡大、謝礼も貰える。ただしドライブは禁制品であり、その間に捜索で発見されると罪証として記録される。通報した場合:懸賞金と警察の評判を獲得、ミキサーは閉鎖される(送金途中のコインは返却される)。闇市場に売却した場合:まとまったCRT(半分は汚染)と闇市場の評判を獲得、その後のミキサー手数料が上昇し、ラグプルの確率も高くなる。¶タンブラーの後:2回目と3回目の来店の間に、警察の捜査官が店を訪れて彼が来たかどうかを尋ねてくる。認めた場合:警察の評判 +{TumblerAgentSecRep}。ただし、その後にドライブを隠してあげると、タンブラーが受け取りに来る前日に捜査官が店を捜索し、見つかれば押収されて禁制品の罪証が記録される。キーが警察の手に渡った場合(通報、ドライブの押収、彼が戻った時に手元にない場合)、ミキシング記録が復元される。過去 {TumblerLeakDays} 日間のミキサー出金で洗浄された汚染の {PredictFraudShare:%} が詐欺の罪証として記録される(最大 {PredictFraudCap})。通報すると裁判が行われ、予測市場で判決に賭けることができ、新聞が連日公判の様子を報じる。無罪放免になった場合、彼は復讐してくる。ドライブを売却した場合、闇市場は {TumblerBmRugMin}–{TumblerBmRugMax} 日後にラグプルを実行し、ミキサー内の処理中のコインは全損し、彼からも同様に復讐される。ドライブを隠して返却した場合、警察の手入れの前夜に彼が警告してくれる。ミキサー閉鎖から {TumblerRebrandDays} 日後、別名で再開されるが、その一部は警察のハニーポットであり、出金したコインは全額が汚染資金となる。不自然に低い手数料には警戒すること。§ミキサーとプライバシーコイン:通貨、数量、ラウンド数を選択する。各ラウンドで手数料が差し引かれ、汚染コインの一部が洗浄される。ラウンド数は待機日数に相当し、コインは同じアドレスに返却される。預入額が多いほど洗浄効率は低下する。取り締まり期間中はミキサーが制裁を受ける場合があり、その期間中に期限を迎えた出金は洗浄されず、全額が汚染された状態で返却される。¶プライバシーコインの両替(Web3取引ページ、闇市場の評判が必要):Poneroはプライバシーコインであり、交換時に投入したコインは汚染分も含めて消失し、手に入るPoneroはクリーンな状態となる。交換および逆交換にそれぞれ {PoneroFee:%} の手数料がかかり、両者は1日あたり {PoneroDailyCap} クレジットの利用枠を共有する。§OTC客(人脈アップグレード「OTCデスク」):黒いランプの対象に「OTC客」が1つ追加される(ランプをダブルクリックして切り替え)。ショーケース内でのみ点灯し、従来の黒いランプ同様、ランプの数と闇市場の評判に応じて客を引き寄せる。アップグレード時にランプが1つ付属する。客の半数はコインの売却を、残り半数はコインの購入を希望し、常に現金で決済される。客が希望を伝えた後、「ターミナルで交渉」を選択すると、客がカウンターで待つ間に取引ターミナルでカウンター取引ページが開く。25% / 50% / 75% / 100% または直接数値を入力して一部のみ取引することも可能で、現金もそれに応じて按分される。「パス」を選ぶか客を追い払えば断ることができる。取引規模は家賃に伴って増加する。¶コインを売却する客:取引が成立すると現金を支払い、コインは接続中のウォレットに直接送られる。ステーション内で事件が発生している場合、コインはその事件由来であることが多い。抗争や警察の手入れの期間中はCRT、革命家による上層襲撃や下層の動乱期間中はPSCとなり、これらはすべて汚染されている。それ以外の場合はPSC、CRT、CRAからランダムで選ばれ、そのうち {OtcTaintMin:%}–{OtcTaintMax:%} が汚染されており、汚染がひどいほど安価になる(提示価格は市場価格の {OtcCutClean:%} から {OtcCutDirty:%} まで下落する)。客はコインの汚染度を口にしない。取引ページに客のアドレスが表示され、「照会」を押すとエクスプローラーで履歴を確認できる。ミキサー、闇市場プラットフォーム、詐欺アドレスからの入金が多いほど汚染されている。Ponero窓口の開放後は時折Poneroを売りに来る客が現れ、汚染はないものの価格は高くなる。時折、客がおとり捜査官の場合がある。取引に応じると現金を失い盗品関与の罪証が記録され、取り締まり期間中はさらに発生確率が上がる。¶コインを購入する客:あらゆるコインを求める可能性があり、市場価格にランダムな上乗せを加えた価格(市場価格の {OtcBidMin:+%} から {OtcBidMax:+%}。市場価格を下回る場合もある)を提示する。売る価値があるかはプレイヤーの判断次第となる。取引に応じると、送金先アドレスと数量が入力された状態でPLEDGERが起動する。署名して確定を待ち、着金すると客は現金を支払って立ち去る。署名する前に客が立ち去った場合、取引は無効となる。売却したコインの汚染が追跡されることはない。¶自営ミキサー(グレーネットのページ、OTCデスクに付属):資金を投入して開業すると、客が汚染コインを入金し、数日後に出金されて手数料が手元に残る。毎ラウンド、主にプレイヤーの元本と未回収の収益で構成される匿名セット(客の送金途中のコインは一部のみカウント)に応じて汚染の一部が洗浄されるため、資金が多いほど綺麗に洗浄される。客は手数料と出金に残る汚染度をタンブラーのミキサーと比較し、より割安な方を利用する。闇市場の評判が高いほど来客数が増加し、表示される評判は直近の出金に残った汚染割合となる。手数料収入はプールに留まり、引き出す際は全額が汚染資金となる。元本は元の汚染比率を維持して返却される。客足が増えるほど警戒度が上がり(プールが大きいほど隠蔽性はわずかに高まるが、客足も増えるため全体として目を付けられやすくなる)、それに伴い警察の手入れを受ける確率が上昇する。手入れを受けると元本、収益、客のコインはすべて押収され、盗品関与の罪証が記録され、ミキサーは {OwnMixSeizeDays} 日間閉鎖される。営業中の夜に時折おとり捜査官が入金してくることがあり、これも盗品関与として記録される。いつでもラグプルを実行可能:客のコインを含む全額を汚染された状態で持ち逃げでき、詐欺の罪証が記録され、闇市場の評判が低下し、ミキサーは永久に閉鎖される。§汚染:ウォレットごとに、各通貨で何枚が汚染されているかが個別に記録される(ウォレットページやPLEDGERの残高で確認可能)。汚染コインは、コインを売却してくるOTC客、コインで支払う客(商品の盗品ヒートに応じる)、グレーネットでの盗品売上、予測市場でのインサイダー賭けや価格操縦、ポンジ・スキームの持ち逃げ、自営ミキサーの収益、キードライブ売却で得たCRT、フラグ付きミキサーからの出金などから発生する。汚染はWeb3ウォレット内にのみ存在する:消費、送金、手数料支払いの際は、その通貨の汚染割合に応じて汚染コインが消費される。他通貨へスワップする場合、その割合が獲得した通貨に引き継がれる(汚染割合60%のCRTをPSCにスワップすると、PSCも60%が汚染される)。Poneroに汚染は発生しない。Poinbaseが受け入れるのはクリーンなコインのみ:各通貨とも入金できるのはクリーンな数量までに限られ、汚染された分はウォレット内に残る。そのためPoinbase口座や銀行には常にクリーンな資金のみが保持され、銀行への出金時に審査はなく、{ExchangeFee:%}の手数料と原価を超えた利益に対する{TaxRate:%}の税金のみが発生する。ウォレットにクリーンなコインを送金しても、汚染されたコインがクリーンになることはない。汚染コインを解消する方法:ミキサー、Poneroスワップ、買い手のOTC客へのコイン売却(売却したコインは追跡されない)、Web3ショップでの決済。¶ウォレットを破棄する前に、自身でコインを送金し、保有ポジションや預金を事前に出金しておくこと。残された資産はウォレットと共に消失する。" courier.odd1,……荷物が届いた。 courier.odd2,(ポケットに手を入れたままだ)ここにサインを。 courier.sign,サイン @@ -362,6 +360,7 @@ hw.wallet.n,ウォレット {0} hw.review.own,自身のウォレット:{0} hw.review.poinbase,Poinbase入金アドレス poin.deposit,入金アドレス:{0} +poin.deposit.clean,{0}から入金可能なクリーンコイン: {1} wallets.count,ウォレット {0}/{1} wallets.col.name,名前 wallets.col.addr,アドレス @@ -379,6 +378,7 @@ hw.paste,貼り付け hw.copied,アドレスをコピーしました。 hw.copied.addr,{0} をコピーしました hw.balance.frozen,(凍結 {0}) +hw.balance.dirty,(汚染 {0}) wallets.destroy,破棄 wallets.destroy.sure,破棄の確認 wallets.destroyed,{0} を破棄しました:{1} @@ -550,7 +550,7 @@ predict.purity.rust,上層水 nightlog.predict.win,予測的中:「{0}」、{1}が払い戻された。 nightlog.predict.lose,予測不的中:「{0}」、賭け金{1}を失った。 nightlog.predict.void,予測無効:「{0}」、賭け金{1}が返還された。 -nightlog.predict.insider,「{0}」が {1} で決済。警察はインサイダー取引を疑っており、払戻金がマークされウォレットの汚染が {2} 増加した。 +nightlog.predict.insider,「{0}」が{1}で決済された。警察はインサイダー取引を疑っており、そのうち {2} CRC が汚染コインとして記録された。 predict.tab.markets,市場 predict.tab.intel,情報 predict.acct.crt,{0}:CRT {1} @@ -593,11 +593,10 @@ predict.brief.queued,{0}:作戦予定あり predict.brief.none,{0}:発動可能な作戦なし predict.brief.can,{0}:{1}を発動可能 predict.clue.push,プレイヤーの価格誘導 {0}%: 操縦リスク高 -nightlog.predict.manip,「{0}」が {1} で決済。規制当局は価格操縦を疑っており、払戻金がマークされウォレットの汚染が {2} 増加した。 +nightlog.predict.manip,「{0}」が{1}で決済された。規制当局は価格操縦を疑っており、そのうち {2} CRC が汚染コインとして記録された。 news.manip.title,取引所が不審な取引を調査 news.manip.desc,規制当局の発表によると、大口の現物注文で価格を動かし、デリバティブや予測市場から利益を得た者が存在し、関係口座はフラグ付きとなった。 -taint.overflow,汚染がウォレットの価値を超過。超過した {0} は詐欺の罪状として記録される。 -perp.manip,決済利益 {0}。規制当局は価格操縦を疑っており、利益がマークされPoinbaseアカウントの汚染が {1} 増加した。 +perp.manip,利益 {0} で決済。規制当局は価格操縦を疑っており、犯罪記録に詐欺が{1}件追加された。 web3.sub.ponzi,利回り ponzi.h,ポンジ・スキーム ponzi.acct,発行者ウォレット {0}:CRC {1} @@ -688,7 +687,7 @@ scam.support.name,Poinbaseサポート scam.support.1,こんにちは、Poinbaseサポートです。お客様のアカウントで異常なログインが検出され、フラグ付きとなりました。 scam.support.2,本日中に確認のため安全アドレス {1} へ {0} CRC を送金してください。確認後すぐに返金されます。 scam.support.3,対応いただけない場合、アカウントは永久に凍結されます。では失礼します、送金を忘れずに。 -predict.sold.caught,売却完了、{0} を受領。警察はインサイダー取引を疑っており、受取金がマークされウォレットの汚染が {1} 増加した。 +predict.sold.caught,売却し、{0}を回収。警察はインサイダー取引を疑っており、そのうち {1} CRC が汚染コインとして記録された。 predict.row.move,(昨晩 {0} {1}) predict.stats.h,履歴(始値平均 / 実際の発生率) predict.stats.row,{0}:{1}件、始値平均 {2}、発生率 {3}% @@ -711,7 +710,7 @@ news.story.serpico_rev.desc,革命家が警察内部の汚職証拠を入手し news.story.serpico_bm.title,闇市場が密約を交わす news.story.serpico_bm.desc,警察の内部文書が闇市場で取引された。以降、ダークネット決済は著しく安定し、CRTの償還に滞りは一切起きていない。 news.story.serpico_sec.title,警察が内部粛清を開始 -news.story.serpico_sec.desc,警察は内部汚職の徹底調査と資金の流れの監視強化を発表した。Poinbaseは出金審査を厳格化し、ミキサーサービスが名指しされた。 +news.story.serpico_sec.desc,警察は内部腐敗の徹底調査と資金フローの監視強化を発表し、ミキサーサービスが名指しされた。 news.story.eleanor_leak.title,栄養フルーツの育種データが流出 news.story.eleanor_leak.desc,下層の新聞社が栄養フルーツを再び結実させる研究データを公開し、パステルの株価が急落した。上層の資金を管理する保管銀行で焦げ付きが発生し、革命家が勢力を拡大している。 news.story.eleanor_return.title,パステルが盗難データを回収 @@ -756,7 +755,7 @@ news.tumbler.caught.desc,タンブラーとして知られるミキサー運営 news.tumbler.sold.title,ミキサーサービスが別人の手に渡る news.tumbler.sold.desc,下層のミキサーサービスの署名鍵が闇市場の手に渡り、手数料が即座に引き上げられたとの情報がある。ユーザーは資金の安全を懸念している。 nightlog.tumbler.gift,タンブラーはキードライブを回収し、お礼として {0} CRT を残した({1} に送金済み)。ミキサー手数料が半減した。 -agent.name,治安部の捜査官 +agent.name,警察の捜査官 agent.v1.1,警察だ。邪魔するぞ。 agent.v1.2,タンブラーと名乗る人物を探している。オンチェーンでミキサーサービスを運営している男だ。 agent.v1.3,この近辺で目撃されている。 @@ -772,7 +771,7 @@ agent.search.none,……何もないな。邪魔した。 tumbler.v4.seized.1,警察が店を捜索したと聞いた。 tumbler.v4.seized.2,鍵は奴らの手に渡った。全ユーザーの記録が洗い出される。 tumbler.v4.seized.3,あんたが奴らに何を話したか、もう知りたくもない。 -nightlog.tumbler.leak,警察はタンブラーの署名鍵を使ってミキサーの記録を復元した:{0} 件の出金で洗浄された汚染 {1} がウォレットに戻された。 +nightlog.tumbler.leak,警察はタンブラーの署名鍵を使ってミキサー記録を復元した:{0}件の出金で{1}の汚染が洗い落とされており、犯罪記録に詐欺が{2}件追加された。 nightlog.tumbler.leak.none,警察はタンブラーの署名鍵を使ってミキシング記録を復元した。最近ミキサーから何も出金していない。 nightlog.tumbler.note,ドアの隙間からメモが差し入れられていた:「借りは必ず取り戻す。—T」 nightlog.tumbler.tip,タンブラーからのメッセージ:明日、警察がミキサーサービスの取り締まりに動くかもしれない。 @@ -1038,7 +1037,7 @@ otc.cancel,見送り otc.msg.gone,客はすでに立ち去った。 otc.msg.cash,現金が足りない。 otc.msg.sting,相手は潜入捜査官だった:現金{0}が没収され、盗品売買が記録された。 -otc.msg.bought,{0} {1}を受け取り、現金{2}を支払った。 +otc.msg.bought,{0} {1}(うち汚染 {3})を受け取り、現金 {2} を支払った。 otc.msg.sold,{0} {1}を送金し、現金{2}を受け取った。 gray.sub.own,自営ミキサー ownmix.h,自営ミキサー @@ -1088,3 +1087,4 @@ otc.nocash,現金も用意できないのか?ならやめだ。 otc.nowallet,ウォレットがつながっていない。コインをどこに送れと?やめだ。 otc.sting,動くな、警察だ。盗まれた資金の買い取りだな。現金は没収、記録にも残る。 hw.err.poinbase,Poinbaseは{0}を受け付けない。 +hw.err.tainted,このウォレットの{1}のうち{0}が汚染されており、Poinbaseが受け付けるのはクリーンなコインのみ:最大 {2} {1}。 diff --git a/src/Decentralized/ModFiles/Localization/pl.csv b/src/Decentralized/ModFiles/Localization/pl.csv index 4352fae..911e769 100644 --- a/src/Decentralized/ModFiles/Localization/pl.csv +++ b/src/Decentralized/ModFiles/Localization/pl.csv @@ -22,7 +22,7 @@ tab.report,Raport wallet.line,{0}: {1} (ok. {2} kredytów) wallet.empty,Portfel jest pusty. wallet.total,Wartość łączna: {0} kredytów -wallet.taint,Wartość skażona: {0} kredytów +wallet.taint,Skażone monety: {0} kred. trade.amount,Kwota trade.deposit,Wpłata kredytów jako CRC trade.withdraw,Wypłata CRC jako kredyty @@ -38,8 +38,6 @@ msg.balance,Niewystarczające saldo. msg.trade,"Zapłacono {0} {1}, otrzymano {2} {3}." msg.deposit,Wpłacono {0} kredytów jako CRC. msg.cashout,Otrzymano {0} kredytów. Podatek: {1} kredytów. -msg.aml_light,Kontrola zgodności: wstrzymano {0} kredytów skażonych środków. -msg.aml_heavy,Kontrola zgodności: skonfiskowano {0} kredytów skażonych środków i zgłoszono do Ochrony. report.none,Brak raportu wydobycia. report.day,Noc dnia {0} report.rigs,Zasilane koparki: {0} z {1} @@ -141,6 +139,7 @@ col.asset,Aktywo col.amount,Kwota col.value,Wartość col.avg,Śr. zakup +col.dirty,Skażone bank.cash.k,Kredyty bank.rent.k,Czynsz bank.rent.v,"{0}, termin: {1} d." @@ -152,13 +151,12 @@ stable.ok,W parytecie stable.depeg,Utrata parytetu stable.warn,Ostrzeżenie: niskie pokrycie rezerwy stakingu stable.spiral,Zapaść -aml.taint,Udział skażenia konta: {0}% mixer.h,Mikser mixer.ok,Status: działa normalnie -mixer.sanctioned,Status: objęty sankcjami (pozostałe dni: {0}). Wypłacone w tym czasie monety zostaną oznaczone. +mixer.sanctioned,Status: objęty sankcjami (dni: {0}). Wypłaty przypadające w tym czasie nie są czyszczone i wracają w całości skażone. mixer.pending,Oczekujące wpłaty mixer.none,Brak oczekujących wpłat. -mixer.col.taint,Skażenie +mixer.col.taint,Skażone mixer.col.ready,Gotowe mixer.day,Dzień {0} mixer.deposit,Wpłata @@ -169,12 +167,12 @@ mixer.go,Wpłać do miksera mixer.min,Minimalna wartość wpłaty: {0} kredytów. mixer.done,Wpłacono {0} {1}; zwrot w dniu {2}. mixer.upgrade.title,Mikser -mixer.upgrade.desc,"Odblokowuje mikser w zakładce Szara sieć terminala: wpłacaj skażone monety i odbieraj je po kilku dniach z mniejszym skażeniem. Wypłata świeżo zmiksowanych monet podlega surowszej kontroli; podczas obławy mikser może zostać objęty sankcjami, a wypłacone w tym czasie monety zostaną oznaczone." +mixer.upgrade.desc,"Odblokowuje mikser na stronie Szara sieć w terminalu: wpłacaj skażone monety i odbieraj je kilka dni później z mniejszą liczbą skażonych. Podczas obław mikser może zostać objęty sankcjami, a wypłaty przypadające w tym czasie wracają w całości skażone." news.sanction.title,Mikser wpisany na listę sankcyjną -news.sanction.desc,Ochrona objęła sankcjami grupę usług miksujących. Środki wypłacone z mikserów w ciągu najbliższych kilku dni będą traktowane jako podejrzane. +news.sanction.desc,Ochrona nałożyła sankcje na grupę mikserów. Środki wypłacone z mikserów w ciągu najbliższych kilku dni będą traktowane jako skażone środki. nightlog.mixer,Mikser zwrócił {0} {1}; skażenie {2} -> {3}. -nightlog.mixer_flag," (wypłacono w trakcie sankcji; adres oznaczony)" -nightlog.mixer_flag.trap," (adres wypłaty jest oznaczony)" +nightlog.mixer_flag," (wypłacono podczas sankcji; całość oznaczona jako skażona)" +nightlog.mixer_flag.trap," (Ochrona oznacza wypłacone monety jako skażone)" nightlog.mixer_rug,Operator miksera uciekł ze środkami: {0} {1} nigdy nie wróciło. web3.sub.trade,Handel gray.sub.mixer,Mikser @@ -249,7 +247,7 @@ black.kind.Contraband.3,Kontrabanda (wysoki poziom) black.kind.Tech,Zaawansowana technologia (marża) nightlog.bm.ready,Czarny Rynek: {0} na miejscu; kurier pojawi się po otwarciu lokalu. guide.web3.title,Podręcznik Web3 -guide.web3.text,"Bank i handel: strona banku jest tylko do odczytu i pokazuje gotówkę, czynsz oraz CRC na koncie Poinbase. Strona Środki w Poinbase obsługuje wpłaty i wypłaty; najpierw wybiera się monetę: CRC może iść przez konto bankowe lub portfel, pozostałe monety tylko przez portfel. Wpłata z banku zamienia kredyty na CRC na koncie Poinbase; wypłata do banku zamienia CRC z powrotem na kredyty i podlega kontroli zgodności, sprawdzającej skażenie konta Poinbase. Wypłata do portfela wymaga podania adresu odbiorcy i kilku potwierdzeń do zaksięgowania; opłata gas jest stała, na poziomie normalnym, i pobierana z wysyłanej monety. Błędny format adresu lub cyfra kontrolna powoduje odrzucenie; adres o poprawnym formacie, którego nikt nie używa, oznacza utratę wysłanych monet.¶Handel: PSC to skrót od Probably Stolen Coin, monety wydobywanej przez karty graficzne i koparki. Rynek spot Poinbase ma dwie pary, PSC/CRC i SPARK/CRC, zależnie od monety wybranej na wykresie. Zarówno zakup, jak i sprzedaż wpisuje się jako ilość monety bazowej; podgląd pokazuje zapłaconą lub otrzymaną monetę kwotowaną, średnia cena zawiera prowizję, a poślizg nie.¶Strona handlu Web3 pozwala wymienić dowolne dwie monety, zawsze przez CRC: gdy CRC jest po jednej stronie, używana jest jedna pula, w przeciwnym razie dwie, z dwiema opłatami i sumującym się poślizgiem; podgląd pokazuje otrzymaną ilość, liczbę pul i stratę. Wymiany między stablecoinami (CRT lub CRA na CRC) idą przez pule stabilne: prowizja {StableFee:%} i prawie zerowy poślizg blisko powiązania; przy utracie powiązania płynność maleje, a przy krachu zostaje wycofana i poślizg gwałtownie rośnie.§Portfele sprzętowe: monety w łańcuchu znajdują się w portfelach sprzętowych PLEDGER, a każdy z nich ma własne saldo i poziom skażenia. Portfel jest przedmiotem: przeciągnij go na terminal handlowy, aby go załadować. Otwórz go na stronie Portfele w terminalu; połącz i odłącz w prawym górnym rogu terminala. Handel na stronie Web3 oraz sklep i mikser na stronie Szara sieć korzystają z połączonego portfela; bez portfela lub bez połączenia są tylko do odczytu, a wszystkie salda wynoszą 0. Klienci płacący monetami płacą na połączony portfel.¶Płatności (sklep, mikser, kantor Ponero, opłaty za wystawienie) zaczynają się od rachunku w terminalu; wpisz adres odbiorcy w portfelu i przytrzymaj ✓, aby podpisać. Dwa ostatnie znaki adresu to suma kontrolna, więc pomyłka o jeden znak jest zwykle wychwytywana; sporadycznie zdarza się, że okazuje się poprawny i monety trafiają pod adres, z którego nikt nie korzysta. Wymiany na DEX również wymagają podpisu na portfelu.¶Poinbase to konto powiernicze; wpłaty wysyła się z portfela na adres wpłat Poinbase (tylko PSC, CRC i SPARK; regulowana giełda nie przyjmuje CRT Czarnego Rynku ani CRA Rewolucji, a portfel blokuje wysłanie ich na adres wpłat), a wypłaty zleca się na stronie Środki w Poinbase. Eksplorator na stronie Portfele pozwala sprawdzać przelewy według adresu i pokazuje wyłącznie przelewy, które faktycznie miały miejsce: każdy ruch do i z twoich portfeli (przelewy, wymiany na DEX i inne wywołania kontraktów, zyski koparek, wypłaty, monety wysyłane ci przez innych); Ponero to moneta prywatności i nigdy się nie pojawia. Więcej portfeli sprzętowych sprzedaje Dr Jackson; przeciągnij portfel na terminal handlowy, aby go dodać – maksymalnie do {WalletMax}. W sklepie dostępne są tańsze. Niepotrzebny portfel można zniszczyć na stronie Portfele; jego monety przepadają na zawsze, podobnie jak wszystko, co zostanie później wysłane na jego adres.¶Przelewy wymagają opłaty gas: wolnej, normalnej lub szybkiej, a ceny gasu rosną i spadają w cyklu około tygodnia; gdy sieć jest przeciążona, opłaty gas rosną, a powolne transakcje mogą zostać usunięte z mempoola. Przed wysłaniem sprawdź pełny adres.§Staking: CRA ulokowane w puli Rewolucji przynosi dzienny zysk według stawki dziennej, doliczany do wkładu; wypłata wymaga wcześniejszego złożenia wniosku i odczekania czterech dni, bez naliczania odsetek w okresie oczekiwania i bez możliwości wcześniejszego odbioru. CRA jest częściowo zabezpieczone: każde CRA wspierają rezerwa CRC należąca do Rewolucji oraz token równoważący SPARK; pokrycie rezerwy i stopa zabezpieczenia widnieją na stronie stakingu. Odsetki wypłacane są w nowych, niezabezpieczonych CRA, co rozwadnia pokrycie rezerwy, tym szybciej, im więcej w stakingu; przy zbyt niskim pokryciu Rewolucja obniża stawkę. Rewolucja czasem sięga po rezerwę, a wcześniej krążą pogłoski: to zapowiedź. Jeśli potem pokrycie spadnie poniżej {CraCrashRatio:%}, następuje krach: CRA staje się bezwartościowe w ciągu trzech dni, a cztery dni na odblokowanie to za wolno; powyżej tego progu jest tylko dyskonto, a środki z grabieży Górnego poziomu stopniowo odbudowują rezerwę.¶Oficjalne wybijanie: wpłać CRC i SPARK (proporcja według bieżącej stopy zabezpieczenia, podgląd pokazuje wymagane ilości), aby wybić CRA, w kolejce {CraMintDaysMin}–{CraMintDaysMax} dni; wybite CRA trafia od razu do stakingu. Spalanie zamienia CRA z powrotem na CRC i SPARK, z oczekiwaniem tak długim jak odblokowanie; gdy rezerwy brakuje, udział CRC jest zmniejszany według pokrycia. Oczekujące wybijanie i spalanie Rewolucja może w całości nie zrealizować: nocne prawdopodobieństwo to wartość, o jaką cena CRA jest poniżej 1, razy {CraRugPerDepeg}; jeśli cena nie jest poniżej 1, nic się nie dzieje.¶Do stakingu można wpłacać CRA, CRC, CRT i SPARK: ostatnie trzy są najpierw wymieniane na CRA na rynku wtórnym po cenie rynkowej (przez CRC, z opłatą i poślizgiem). Kurs SPARK gwałtownie się waha i załamuje się przy krachu. Staking, wybijanie i spalanie to wywołania kontraktu i wymagają podpisu na portfelu.§Koparki (sprzęt): Koparki RatDigg (M1 / M2 / M3) to samodzielne maszyny o znacznie większej mocy obliczeniowej niż karta i niższym poborze energii w przeliczeniu na moc; wymagają baterii, obsługują moduły i nie zajmują slotów koparki. Sprzedają je wyłącznie dilerzy koparek w sklepie, a dostęp zależy od reputacji na Czarnym Rynku (M1 {AsicRepM1}, M2 {AsicRepM2}, M3 {AsicRepM3}); czasami trafiają się używane. Gdy ulegnie przepaleniu, napraw ją, przeciągając na nią po kolei komponenty elektroniczne; po naprawie jej zdrowie będzie niższe o {AsicRepairHealthCut}. Między dniem {EraMin} a dniem {EraMax} nadchodzi ""era koparek"", zapowiadana w gazecie kilka dni wcześniej: koszty energii dużych farm spadają o połowę, moc obliczeniowa sieci rośnie, zyski górników korzystających z kart graficznych ulegają rozmyciu, a karty z niższej półki ledwo przynoszą zysk, podczas gdy koparki (sprzęt) wciąż radzą sobie dobrze.¶Adres wypłat: każde urządzenie wydobywcze (koparki oraz koparki (sprzęt)) ma adres wypłat ustawiany we własnym oknie; jego urobek z wydobycia trafia tam każdej nocy proporcjonalnie do mocy obliczeniowej, więc dwie koparki mogą przesyłać środki na dwa różne adresy. Domyślnie adres nie jest ustawiony; w przypadku braku adresu lub zniszczenia portfela dana część urobku przepada, dlatego pamiętaj o zmianie adresu przy zmianie portfela.¶Turbodoładowacze działają na koparkach oraz koparkach (sprzęt) na takich samych zasadach jak na innych maszynach: każde użycie uruchamia jeden dodatkowy cykl, co oznacza natychmiastowe wydobycie z jednej nocy. Cykl ten pobiera energię za jedną noc, a jego urobek zależy od aktualnej mocy obliczeniowej sieci i trafia na adres wypłat danej maszyny; liczy się to również jako jedna runda zużycia oraz testów nagłej awarii, a maszyna nadal kopie tej nocy jak zwykle.§Kontrakty wieczyste: zakładka Wieczyste w Poinbase wykorzystuje CRC z konta jako depozyt zabezpieczający, do {PerpPscLev}× na PSC i {PerpSparkLev}× na SPARK, wyłącznie z depozytem izolowanym i jedną pozycją naraz (nigdy długą i krótką jednocześnie); aby ją zwiększyć, można tylko dołożyć depozyt. Ceny realizacji są gorsze niż kwotowane (im większe zlecenie, tym bardziej – jak w puli spot), a otwarcie i zamknięcie pozycji wiąże się z opłatą. Likwidacja jest sprawdzana tylko w nocy według średniej ceny z danego dnia: kapitał poniżej {PerpMaint:%} wartości nominalnej zeruje depozyt zabezpieczający. Obowiązuje też nocna opłata finansująca; gdy cena przewyższa średnią z 7 dni, pozycje długie płacą krótkim.¶Pozycje innych traderów też są likwidowane razem z rynkiem: przy większości likwidacji zostaje depozyt, który trafia do funduszu ubezpieczeniowego, a im szybszy ruch, tym więcej kończy się bankructwem, którego lukę pokrywa fundusz; po dużym jednodniowym ruchu gazeta podaje, ilu traderów zlikwidowano i na jaką kwotę (łącznie z twoją pozycją). Jeśli strata z likwidacji przekroczy depozyt zabezpieczający, różnicę pokrywa fundusz ubezpieczeniowy; gdy ten się wyczerpie (do czego prowadzi tylko skrajna fala bankructw na całym rynku), zyskowne pozycje podlegają auto-delewarowaniu i oddają połowę zysku, a wszystko ponadto staje się twoim długiem. Dług rośnie o {PerpDebtInterest:%} dziennie, jest spłacany co noc w pierwszej kolejności z CRC na koncie, blokuje otwieranie nowych pozycji i wypłaty, a po {PerpDebtDays} dniach przedmioty w twoim sklepie zostają zajęte na jego pokrycie; pozostała niespłacona kwota zostaje spisana na straty, a konto kontraktów wieczystych zostaje zablokowane na {PerpBanDays} dni.§Sklep: wyłącznie monety, bez CRC, ceny o {BmPremium:%} wyższe niż w normalnych kanałach, z dodatkową marżą na zaawansowaną technologię i karty graficzne; płacone monety przekazują sprzedającemu odpowiednią część skażenia, a towary nie mają oznaczenia kradzionych; karty graficzne mogą być podróbkami – sprawdź je samodzielnie.¶Zakupy w sklepie: wybierz sprzedającego po lewej, półka znajduje się po prawej, a po kliknięciu „Kup” panel płatności pozwala ustalić ilość, metodę płatności i monetę. Każdy typ sprzedającego przyjmuje inne monety: sprzęt i technologia przyjmują PSC oraz CRT; broń, leki, chemikalia, dokumenty, towary luksusowe i sprzedający prywatni przyjmują CRT oraz monetę prywatności; rolnictwo, hodowla, woda i browarnictwo przyjmują PSC oraz CRA; handel spot na platformie przyjmuje PSC, CRT oraz CRA. Jeśli nie masz monety akceptowanej przez sprzedającego, możesz skorzystać z wbudowanej automatycznej konwersji: wymienia ona inną monetę z portfela przy poślizgu {BmAutoSwapSlip:%} i wymaga jednego podpisu; możesz też najpierw samodzielnie wymienić monety na DEX przy znacznie mniejszym poślizgu, ale wymaga to dodatkowego kroku. Przy opłatach za wystawienie monetę również wybiera się w momencie płatności.¶Koszyk sklepowy: kliknięcie „Kup” na półce dodaje przedmiot do koszyka; pływający koszyk w prawym dolnym rogu pokazuje liczbę sztuk i otwiera kasę. Kasa pokazuje koszyk po lewej stronie (pogrupowany według sprzedających, z możliwością zmiany ilości i usuwania pozycji oraz wyborem: depozyt lub wypłata zaliczkowa u sprzedających, którzy na to zezwalają), a płatność po prawej: każdy sprzedający ma inny adres odbiorcy, więc płaci się każdemu sprzedającemu osobno – wybierz monetę akceptowaną przez danego sprzedającego, utwórz rachunek i wykonaj przelew z portfela; albo skorzystaj z automatycznej konwersji z innej monety w portfelu (dodatkowy poślizg {BmAutoSwapSlip:%}) i podpisz raz dla danego sprzedającego.§Zamówienia i sprzedaż: Zamówienia są tańsze niż na rynku spot, lecz wymagają kilku dni i mogą zostać przechwycone; handlarze sprzedają towary według typów z własnym mnożnikiem cen; zakup {BmBulk1Count}+ szt. daje {BmBulk1Discount:%} zniżki, a {BmBulk2Count}+ szt. daje {BmBulk2Discount:%} zniżki; losowo pojawia się handlarz hurtowy z najniższymi cenami, lecz czas oczekiwania wynosi {BmBulkDays} dni; depozyt kosztuje {BmEscrowFee:%}, jest uwalniany po dostawie i zwracany, jeśli sprzedający ucieknie; wypłata zaliczkowa obniża cenę o kolejne {BmAdvanceDiscount:%}, lecz oszust zatrzymuje pieniądze, a opcję tę akceptują tylko sprzedający z co najmniej {BmAdvanceMinTrades} udanymi transakcjami; sama platforma może zrobić rug pull, zostać przejęta przez Ochronę lub sprzedający może trafić do aresztu, po czym twoje zamówienia zostaną namierzone, a przestępstwo odnotowane w kartotece; plotki na forum mogą służyć jako ostrzeżenia. Przechwycona paczka czasami kończy się wizytą Ochrony u drzwi: podpisanie odbioru natychmiast odnotowuje przestępstwo i skutkuje konfiskatą towaru, odmowa oznacza jedynie utratę zapłaconej kwoty.¶Sprzedaż: w zakładce Sprzedaż wystawiaj kontrabandę, zaawansowaną technologię i karty graficzne z magazynu po cenie od {BmSellMin}x do {BmSellMax}x ceny referencyjnej. Im wyższy mnożnik, tym wolniejsza sprzedaż (poniżej {BmSellFastMult}x: ok. {BmSellDaysFast} dnia, przy {BmSellDay1Mult}x: ok. {BmSellDays1} dni, przy {BmSellMax}x: ok. {BmSellDaysMax} dni) oraz większe prawdopodobieństwo i poziom skażenia wypłaty (rośnie on także wraz z wolumenem sprzedaży z ostatnich 7 dni); przy towarach kradzionych wypłata jest skażona według ich poziomu kradzieży (wypłata × poziom %); zakładka Sprzedaż otwiera się na witrynie z wystawionymi towarami, a „Dodaj oferty” przygotowuje kolejne: identyczne towary są grupowane, klawisze − i + ustawiają liczbę, mnożnik wybiera się po lewej, a towar zostaje wystawiony dopiero po zapłaceniu opłaty za wystawienie przyciskiem Półka; wszystkie sztuki jednego towaru mają ten sam mnożnik, więc by go zmienić, trzeba najpierw zdjąć wszystkie; maksymalnie {BmMaxKinds} rodzajów jednocześnie i {BmMaxStack} sztuk każdego, opłata za wystawienie: {BmListFee:%} za sztukę; z witryny można zdejmować towary, wracają do magazynu, a opłata nie jest zwracana; „Akceptowane monety” w witrynie wybierają, jakie monety przyjmujesz: każda dodatkowa moneta dodaje co noc jedną rundę losowania sprzedaży (w losowej kolejności, z różną liczbą kupujących zależnie od monety), więc im więcej monet, tym szybsza sprzedaż, a wypłata przychodzi w monecie wygrywającej rundy; prowizja wynosi {BmCommission:%}; wypłata jest wstrzymywana na {BmSaleHold} dni przed przekazaniem do portfela; podrobiona karta może zostać wykryta i zwrócona, co obniża ocenę; w razie rug pulla platformy wystawione towary i niewypłacone środki przepadają.§Rynki predykcyjne (Web3, strona Predykcje, od dnia gry {PredictUnlockDay}): każdy rynek to pytanie typu tak/nie o zdarzenia losowane lub planowane przez samą grę: pojawienie się wiadomości, rozpoczęcie operacji frakcji, jutrzejsza czystość wody, cena PSC. Rynek jest otwarty do momentu rozpoczęcia swojego okna i rozliczany w nocy ostatniego dnia okna. Kupuj Tak lub Nie za CRC ze swojego portfela on-chain (wywołanie kontraktu: podpisz na portfelu; pozycja należy do podpisującego portfela); cena odzwierciedla domniemane prawdopodobieństwo rynkowe i rośnie w miarę zakupu; każdy wygrywający udział wypłaca 1 kredyt; prowizja {PredictFee:%} od każdej transakcji; każdy rynek ma limit pozycji. Wygrane dziedziczą wskaźnik skażenia stawki.¶Notatki z plotkami i atuty frakcji mogą wcześniej ujawnić, że coś się wydarzy; postawienie Tak na takim rynku to zakład poufny. Zakłady poufne są wypłacane normalnie, lecz policja podejrzewa transakcje poufne: przy rozliczeniu lub sprzedaży wypłata z udziałów poufnych zostaje oznaczona jako skażenie odbierającego portfela. Jeśli dla danego okna brakuje danych gry (np. pominięto nocne rozliczenie), rynek zostaje unieważniony, a stawka zwrócona.§Reakcja cen na wiadomości: każdej nocy każdy otwarty rynek przesuwa się o połowę dystansu w stronę rzeczywistego prawdopodobieństwa wynikającego z informacji publicznych, plus drobne zakłócenia losowe; kto więc pierwszy przeczyta gazetę, notatkę z plotką lub skorzysta z przywileju frakcji, może kupić wcześniej i sprzedać po zmianie kursu zamiast czekać na rozliczenie. Lista wskazówek w panelu rynku pokazuje to, co o nim wiesz: harmonogramy, czasy odnowienia, dzień halvingu, ostatnie wartości gas, poziom rezerwy CRA i zapowiedzi ery koparek.¶Zależności, które można wyliczyć: operacje frakcji są wyzwalane przez progi ukrytych wartości siły (np. nalot wymaga: Ochrona >= 20 i Czarny Rynek >= 40 oraz obniża Ochronę o 20); gas działa w cyklu 7-dniowym; kotwica cenowa rośnie w tygodniu przed halvingiem; zaplanowane obławy i awarie zasilania przesuwają kotwicę, lecz cena rynkowa nie odzwierciedla ich z góry; im szybciej wyczerpuje się rezerwa (im więcej CRA w stakingu), tym wcześniej ostrzega CRA; rynek ceny PSC może zostać poruszony twoimi własnymi dużymi zleceniami. Handlarz informacjami (wymaga odpowiedniej reputacji na Czarnym Rynku) sprzedaje raport sytuacyjny (pięć wartości siły i działania, które dana frakcja może podjąć natychmiast, płatne w CRT) oraz trzy poziomy poufnych wskazówek (dotyczą tylko przesądzonych operacji frakcji i ery koparek; celność rośnie z każdym poziomem; cena zależy od wielkości rynku; niektóre wskazówki są fałszywe i mówią coś przeciwnego niż prawda); obstawienie wskazanej strony liczy się jako transakcja poufna. Wielkość rynku rośnie z każdym dniem, a błędny zakład oznacza utratę całej stawki, więc nie stawiaj wszystkiego na jeden rynek.§Wykrywanie manipulacji rynkowej: twoje duże zlecenia spot na Poinbase odchylają cenę od poziomu bazowego (odchylenie maleje co noc wraz z powrotem ceny; informuje o tym wskazówka rynkowa). Gdy odchylenie przekroczy {ManipFree:%}, jeśli osiągniesz zysk z ruchu ceny (wygrana na rynku ceny PSC w pchniętym kierunku lub zamknięcie kontraktu wieczystego z zyskiem w tym samym kierunku), możesz wpaść: im większe odchylenie, tym wyższa szansa (limit: {ManipMax:%}). W razie wpadki wypłata nadal przechodzi: wypłata z rynku predykcyjnego staje się skażeniem portfela, zysk z kontraktu wieczystego staje się skażeniem konta Poinbase, a gazeta opisuje śledztwo.¶Skażenie nie może przekraczać bieżącej wartości portfela: podczas dodawania skażenia nadwyżka jest odnotowywana jako oszustwo według stawki {PredictFraudShare:%}, maksymalnie do {PredictFraudCap} za każdym razem. Reguła ta dotyczy zarówno zakładów poufnych, jak i manipulacji rynkowej. Krótka pozycja przed zrzutem to nie gwarantowany zarobek: poślizg po obu stronach kontraktu wieczystego oraz koszt pełnego cyklu na rynku spot często przewyższają zysk z pozycji krótkiej.§Piramida finansowa (zakładka Lokaty, Emisja piramidy; od dnia gry: {PonziMinDay}, jedna na zapis gry): wybierz stawkę dzienną ({PonziRates[0]:%}-{PonziRates[4]:%}), opłać koszty marketingu, aby wystartować (uruchomienie i ucieczka z pulą to wywołania kontraktu podpisywane na portfelu); mieszkańcy Dolnego poziomu wpłacają CRC zależnie od stawki i twojej Reputacji na Dolnym poziomie – im wyższa stawka, tym szybciej napływają wpłaty. Każdej nocy odsetki są wypłacane najpierw z nowych wpłat, a następnie z portfela emitenta; jeśli nie zdołasz ich pokryć, następuje run i piramida upada; każdej nocy z puli wypłacane jest {PonziWithdraw:%}, a im większa pula i wyższa stawka dzienna, tym większe prawdopodobieństwo donosu, który również doprowadza do upadku. W razie upadku pula ulega konfiskacie. W dowolnym momencie możesz zrobić rug pull puli (kliknij dwukrotnie, aby potwierdzić): środki trafiają do portfela emitenta jako w pełni skażone środki (wypierz je przed wypłatą). Zarówno rug pull, jak i upadek odnotowują oszustwo w kartotece i zerują Reputację na Dolnym poziomie. Wiersz „Ryzyko zgłoszenia” podpowiada poziom ryzyka donosu.§Oszustwa: knoty – w niektóre poranki tuż po otwarciu cena zostaje zbita lub wystrzelona o {WickMin:%}-{WickMax:%}; większość cofa się tej samej nocy, lecz niektóre ruchy są prawdziwe; cena wskaźnikowa (mark price) kontraktów wieczystych uwzględnia tylko połowę, więc nie sprzedawaj w panice na knocie.¶Airdropy (zakładka Airdropy w Web3) – przy każdym airdropie najpierw trzeba autoryzować portfel (jedna podpisana umowa autoryzacji), a potem podpisać odbiór; przed autoryzacją sprawdź zakres zgody: prawdziwe airdropy nie wymagają autoryzacji lub żądają niewielkiej na kilkadziesiąt sztuk; nielimitowana autoryzacja lub znacznie przewyższająca nagrodę to phishing, często pod łudząco podobną nazwą (0 zamiast o, 1 zamiast l), a noc lub dwie później moneta zostaje wyczyszczona z portfela. Autoryzacje są wymienione po prawej stronie zakładki Airdropy i można je cofnąć podpisem, uniemożliwiając kradzież.¶Zewnętrzne pule dochodowe (zakładka Lokaty, Pule zysku, Wpłata) – {YieldRates[0]:%}-{YieldRates[2]:%} dziennie; widać rezerwę, blokadę czasową oraz audyt, ale nie to, czy to oszustwo: im wyższa stawka, tym większa szansa na rug pull; blokada czasowa i audyt zmniejszają ryzyko; uczciwa pula zamyka się i zwraca kapitał, gdy rezerwa nie wystarcza na odsetki, a pula-oszustwo może zniknąć każdej nocy. Wypłata z pul z blokadą czasową trwa {YieldLockDays} dni.¶Fałszywe wsparcie – osoba przy ladzie podająca się za wsparcie Poinbase prosi o przelanie CRC na „bezpieczny adres”: Poinbase nigdy nie składa wizyt ani nie prosi o przelewy. Sfałszowane przelewy – klient płacący monetami, który zaczyna od „już wysłałem, oto zrzut ekranu, dawaj towar”, nigdy nie płaci; uczciwi klienci wiedzą, że potwierdzenie w łańcuchu chwilę trwa.§Wykresy: strona rynku spot Poinbase i strona handlu Web3 pozwalają przełączać dzienne świece każdej monety (strona kontraktów wieczystych pokazuje bieżący instrument, rynki predykcyjne – PSC), zielony to wzrost, czerwony to spadek; żółta linia to średnia 7-dniowa (wykorzystuje ją opłata finansująca kontraktów wieczystych); słupki poniżej to wolumen (szary to rynek, błękitny to ty: liczą się spot, DEX, wybijanie/spalanie, wymiany Ponero oraz otwarcia/zamknięcia kontraktów wieczystych). Im większy ruch, tym większy handel na rynku; knoty zostawiają długie cienie.§Powiązania fabularne: wybory w wątkach fabularnych gry zmieniają ten rynek; gazeta informuje o nich następnego dnia, a rynek potrzebuje kilku dni na reakcję. Dowody Serpico przekazane Rewolucji: rezerwa CRA zostaje zasilona, ryzyko krachu spada o połowę (dni: {StorySecDays}), a SPARK rośnie o {StorySerpicoSpark:+%} (noce: {StorySparkNights}); przekazane na Czarny Rynek: ryzyko depegu CRT i wyprzedaży spada o połowę; przekazane Ochronie: surowsza kontrola wypłat, sankcje na miksery i badanie manipulacji (dni: {StorySecDays}). Eleanor ujawnia dysk: szansa na odpis u powiernika CRC rośnie dwukrotnie, a SPARK rośnie o {StoryLeakSpark:+%}; zwraca go: ryzyko depegu CRC spada o połowę. Areszt Oficera Luna: surowsza kontrola wypłat i badania manipulacji (dni: {StoryLunDays}).¶Operator miksera Tumbler (po odblokowaniu miksera, od dnia: {TumblerMinDay}): odwiedza cię kilka razy i w końcu prosi o ukrycie dysku z kluczem. Ukryj go i oddaj: opłaty miksera spadają o połowę, zbiór anonimowości rośnie, a do tego otrzymasz prezent; dysk to jednak kontrabanda i w razie znalezienia podczas przeszukania trafi do kartoteki. Zgłoś go: nagroda i Reputacja u Ochrony, a mikser zostaje wyłączony (środki w toku wracają). Sprzedaj na Czarny Rynek: suma w CRT (w połowie skażone środki) i Reputacja na Czarnym Rynku, po czym opłaty miksera rosną, a szansa na rug pull się zwiększa.¶Po Tumblerze: między jego drugą a trzecią wizytą przychodzi Agent Bezpieczeństwa z pytaniem, czy był w twoim sklepie. Przyznaj to: Reputacja u Ochrony +{TumblerAgentSecRep}; jeśli jednak potem ukryjesz dla niego dysk, agent przeszuka sklep dzień przed powrotem Tumblera, a w razie znalezienia skonfiskuje dysk i odnotuje kontrabandę. Jeśli klucz trafi do Ochrony (zgłosisz go, dysk zostanie skonfiskowany lub nie masz go przy jego powrocie), rejestry miksowania zostaną odtworzone: całe skażenie zmyte z wypłat miksera w ostatnim okresie (dni: {TumblerLeakDays}) powróci do pierwotnych portfeli, a część przekraczająca wartość portfela trafi do kartoteki jako oszustwo. Zgłoszenie prowadzi do procesu: na rynku predykcyjnym można obstawiać wyrok, a gazeta codziennie relacjonuje rozprawy; jeśli zostanie uniewinniony, zemści się. Jeśli sprzedasz dysk, Czarny Rynek robi rug pull po upływie dni: {TumblerBmRugMin}–{TumblerBmRugMax}, wszystkie monety w toku w mikserze przepadają, a on również dokona zemsty. Ukryj dysk i oddaj go, a ostrzeże cię w noc poprzedzającą nalot Ochrony. Po upływie dni: {TumblerRebrandDays} od zamknięcia miksera wraca on do sieci pod nową nazwą; niektóre z nich to honeypoty Ochrony, a każda wypłacona z nich moneta zostaje oznaczona. Uważaj na opłatę, która wygląda na zbyt niską.§Mikser i moneta prywatności: wybierz monetę, kwotę i liczbę rund; każda runda pobiera opłatę i obniża skażenie, liczba rund odpowiada dniom oczekiwania, a monety wracają na ten sam adres; im większa wpłata, tym gorsze czyszczenie.¶Wymiana monet prywatności (zakładka handlu Web3, wymaga reputacji na Czarnym Rynku): Ponero to moneta prywatności, a wymiana na nią usuwa skażenie tej wartości; obowiązuje prowizja {PoneroFee:%} w każdą stronę oraz dzienny limit; moneta uzyskana z wymiany Ponero nie ma historii pochodzenia, przez co kontrola zgodności przy wypłacie staje się surowsza.§Klienci OTC (ulepszenie sieci „Punkt OTC”): Czarna lampa zyskuje dodatkowy cel – Klient OTC (kliknij dwukrotnie lampę, aby przełączyć). Świeci tylko w gablocie i przyciąga ludzi jak pierwotna Czarna lampa, zależnie od liczby lamp i twojej Reputacji na Czarnym Rynku; ulepszenie zawiera jedną lampę. Połowa klientów chce sprzedać ci monety, a połowa kupić je od ciebie, zawsze za gotówkę. Gdy klient przedstawi ofertę, wybierz rozmowę przy terminalu: terminal handlowy otworzy stronę handlu przy ladzie, podczas gdy klient czeka przy ladzie. Możesz zrealizować tylko część transakcji: 25% / 50% / 75% / 100% lub wpisaną kwotę, a gotówka przelicza się proporcjonalnie; wybierz „Pasuj” lub odpraw klienta, aby odmówić. Wielkości transakcji rosną wraz z czynszem.¶Klienci sprzedający: po zawarciu transakcji płacisz gotówką, a monety trafiają bezpośrednio do połączonego portfela. Gdy na stacji coś się dzieje, monety zazwyczaj pochodzą z tych wydarzeń: CRT podczas wojny gangów lub obławy, PSC podczas ataku Rewolucji na Górny poziom lub zamieszek na Dolnym poziomie – skażone w pełnej wartości rynkowej. Poza tym są to losowo PSC, CRT lub CRA ze skażeniem na poziomie {OtcTaintMin:%}–{OtcTaintMax:%} wartości; im brudniejsze monety, tym są tańsze (cena wywoławcza spada z {OtcCutClean:%} do {OtcCutDirty:%} wartości). Klient nie mówi, jak bardzo monety są brudne: strona transakcji pokazuje jego adres, a opcja „Sprawdź” otwiera jego historię w Eksploratorze – im więcej wpływów z miksera, platformy Czarnego Rynku lub adresów oszustw, tym monety są brudniejsze. Po otwarciu punktu Ponero okazjonalnie ktoś sprzedaje Ponero, które nie niesie skażenia, ale kosztuje więcej. Dodane skażenie nie może przekroczyć wartości portfela; nadwyżka trafia do akt jako oszustwo. Od czasu do czasu klient jest tajniakiem: przyjęcie oferty oznacza utratę gotówki i odnotowanie paserstwa, co zdarza się częściej podczas obławy.¶Klienci kupujący: mogą chcieć dowolnej monety i oferują cenę rynkową plus losową marżę (od {OtcBidMin:+%} do {OtcBidMax:+%} ceny rynkowej, więc cena może być poniżej rynkowej); to, czy warto sprzedać, zależy od ciebie. Przy transakcji otwiera się PLEDGER z wypełnionym adresem oraz kwotą; podpisz i zaczekaj na potwierdzenie – gdy środki dotrą, klient płaci gotówką i odchodzi. Jeśli klient wyjdzie, zanim podpiszesz, transakcja zostaje anulowana. Sprzedawane monety nie są sprawdzane pod kątem skażenia.¶Własny mikser (strona w Szarej sieci, dostępna z Punktem OTC): zasil go kapitałem i otwórz; klienci wpłacają skażone monety, a po kilku dniach są one wypłacane, podczas gdy ty zachowujesz prowizję. Każda runda zmywa część skażenia w zależności od zbioru anonimowości, na który składa się głównie twój kapitał i nieodebrane zyski (monety klientów w tranzycie liczą się tylko częściowo), więc większe dofinansowanie czyści dokładniej. Klienci porównują prowizję oraz skażenie pozostałe po wypłacie z mikserem Tumblera i wybierają tańszą opcję, a wyższa Reputacja na Czarnym Rynku przyciąga ich więcej; wyświetlana reputacja to skażenie niedawno pozostałe przy wypłatach. Zyski z prowizji pozostają w puli i przy wypłacie są w pełni skażone; kapitał powraca z własnym poziomem skażenia. Większy ruch zwiększa zainteresowanie służb (większa pula pozwala nieco lepiej ukryć monety, ale przyciąga też większy ruch, więc ogólnie zwraca większą uwagę), a wraz z nim rośnie szansa na nalot Ochrony: kapitał, zyski i monety klientów zostają skonfiskowane, do akt trafia paserstwo, a mikser zostaje zamknięty na {OwnMixSeizeDays} d. Od czasu do czasu w otwartą noc wpłaty dokonuje oficer pod przykrywką, co również skutkuje odnotowaniem paserstwa. W każdej chwili możesz zrobić rug pull: wszystko, w tym monety klientów, trafia do ciebie jako w pełni skażone, do akt trafia oszustwo, Reputacja na Czarnym Rynku spada, a mikser zostaje zamknięty na stałe.§Kontrola zgodności wypłat (ekran nie pokazuje limitu ani prawdopodobieństwa kontroli; zasady są następujące): wypłata CRC z Poinbase na kredyty jest oceniana względem bieżącego czynszu – pojedyncza wypłata powyżej {AmlBigRents}x czynszu lub suma powyżej {AmlCumRents}x czynszu w ciągu {AmlWindowDays} dni zwiększa szansę kontroli proporcjonalnie do nadwyżki; gdy skażenie wynosi co najmniej {AmlTaintRatio:%} kwoty, szansa wzrasta o „wskaźnik x {AmlTaintMult}”; monety niedawno zwrócone przez mikser lub pochodzące z oznaczonego portfela dodają {AmlMixerBonus:%}; szansa jest ograniczona do {AmlMaxChance:%}. W przypadku kontroli: skażenie poniżej {AmlHeavyRatio:%} to przypadek lekki – skażona część ulega konfiskacie, a przestępstwo nie jest odnotowywane; {AmlHeavyRatio:%} lub więcej to przypadek ciężki – skażona część ulega konfiskacie, a kwota skażenia zostaje wpisana jako paserstwo. Bez kontroli dociera cała kwota. Wypłaty kosztują {ExchangeFee:%}, a zyski ponad koszt są opodatkowane stawką {TaxRate:%}. Dzielenie na małe kwoty, rozkładanie na wiele dni oraz wcześniejsze pranie obniżają szansę, lecz nic nie informuje o limicie ani szansach – musisz szacować samodzielnie.¶Przed zniszczeniem portfela musisz samodzielnie wycofać monety, a także zamknąć pozycje i wypłacić depozyty: wszystko, co zostanie, przepadnie wraz z portfelem." +guide.web3.text,"Bank i handel: strona Bank jest tylko do odczytu i pokazuje gotówkę, czynsz oraz CRC na koncie Poinbase. Strona Środki w Poinbase obsługuje wpłaty i wypłaty; najpierw wybierz monetę: CRC może przejść przez konto bankowe lub portfel, każda inna moneta wyłącznie przez portfel. Wpłata z banku zamienia kredyty na CRC na koncie Poinbase; wypłata do banku zamienia CRC z powrotem na kredyty bez kontroli (konto Poinbase przechowuje wyłącznie czyste środki). Wypłata do portfela wymaga adresu odbiorcy i kilku potwierdzeń przed zaksięgowaniem; opłata gas jest stała na poziomie normalnym i pobierana z wysyłanej monety. Błędny format adresu lub sumy kontrolnej jest odrzucany; poprawnie sformatowany adres, którego nikt nie używa, oznacza utratę monet.¶Handel: PSC oznacza Probably Stolen Coin – monetę wydobywaną przez karty graficzne i koparki. Rynek spot Poinbase ma dwie pary: PSC/CRC i SPARK/CRC, zależnie od monety wybranej na wykresie. Zlecenia kupna i sprzedaży wprowadza się jako kwotę handlowanej monety; podgląd pokazuje płaconą lub otrzymywaną walutę kwotowaną, średnia cena uwzględnia prowizję, a poślizg nie.¶Strona handlu Web3 pozwala na wymianę dowolnych dwóch monet, zawsze za pośrednictwem CRC: z CRC po jednej stronie korzysta z jednej puli, w przeciwnym razie z dwóch pul, z dwiema prowizjami i sumującym się poślizgiem; podgląd pokazuje otrzymaną kwotę, przebyte pule i stratę. Wymiana stablecoinów (CRT lub CRA na CRC) korzysta ze stabilnych pul: prowizja {StableFee:%} i prawie zerowy poślizg w pobliżu parytetu; przy odkotwiczeniu płynność spada, a przy krachu zostaje wycofana i poślizg gwałtownie rośnie.§Portfele sprzętowe: monety w łańcuchu znajdują się w portfelach sprzętowych PLEDGER, z osobnymi saldami i skażonymi monetami dla każdego z nich (dla każdej monety rejestrowana jest liczba skażonych sztuk; patrz: Skażenie). Portfel jest przedmiotem: przeciągnij go na terminal handlowy, aby go załadować. Otwórz go na stronie Portfele w terminalu; łącz i rozłączaj w prawym górnym rogu terminala. Handel na stronie Web3 oraz sklep i mikser na stronie Szara sieć korzystają z połączonego portfela; bez portfela lub połączenia są one tylko do odczytu, a każde saldo wynosi 0. Klienci płacący monetami wpłacają do połączonego portfela.¶Płatności (sklep, mikser, punkt Ponero, opłaty za wystawienie) zaczynają się od rachunku w terminalu; wpisz adres odbiorcy na portfelu i przytrzymaj ✓, aby podpisać. Ostatnie dwa znaki adresu to suma kontrolna, więc literówka o jeden znak jest zwykle wychwytywana; sporadycznie okazuje się poprawna i monety trafiają pod adres, którego nikt nie używa. Wymiany na DEX również wymagają podpisu na portfelu.¶Poinbase to konto powiernicze; wpłaty wysyła się z portfela na adres depozytowy Poinbase (tylko PSC, CRC i SPARK; giełda zgodna z przepisami nie przyjmuje ani CRT z Czarnego Rynku, ani CRA od Rewolucji, a portfel blokuje ich wysłanie na adres depozytowy; wpłacać można tylko czyste monety, patrz: Skażenie), a wypłaty zleca się na stronie Środki w Poinbase. Eksplorator na stronie Portfele wyszukuje transfery według adresu i pokazuje tylko transakcje, które rzeczywiście miały miejsce: każdy przepływ do i z Twoich portfeli (przelewy, wymiany DEX i inne wywołania kontraktów, wypłaty z koparek, wypłaty, monety przesłane przez innych); Ponero to moneta prywatności i nigdy się nie wyświetla. Więcej portfeli sprzętowych sprzedaje Dr Jackson; przeciągnij taki na terminal handlowy, aby go dodać, maksymalnie do {WalletMax}. W sklepie dostępne są tańsze. Niepotrzebny portfel można zniszczyć na stronie Portfele; znajdujące się w nim monety przepadają na zawsze, a wszystko wysłane później na jego adres również zostanie utracone.¶Za przelewy płaci się opłatę gas: wolną, normalną lub szybką, a ceny gasu rosną i spadają w cyklu około tygodniowym; gdy sieć jest przeciążona, opłaty gas rosną, a wolne transakcje mogą zostać usunięte z mempoola. Przed wysłaniem sprawdź pełny adres.§Staking: CRA ulokowane w puli Rewolucji przynosi dzienny zysk według stawki dziennej, doliczany do wkładu; wypłata wymaga wcześniejszego złożenia wniosku i odczekania czterech dni, bez naliczania odsetek w okresie oczekiwania i bez możliwości wcześniejszego odbioru. CRA jest częściowo zabezpieczone: każde CRA wspierają rezerwa CRC należąca do Rewolucji oraz token równoważący SPARK; pokrycie rezerwy i stopa zabezpieczenia widnieją na stronie stakingu. Odsetki wypłacane są w nowych, niezabezpieczonych CRA, co rozwadnia pokrycie rezerwy, tym szybciej, im więcej w stakingu; przy zbyt niskim pokryciu Rewolucja obniża stawkę. Rewolucja czasem sięga po rezerwę, a wcześniej krążą pogłoski: to zapowiedź. Jeśli potem pokrycie spadnie poniżej {CraCrashRatio:%}, następuje krach: CRA staje się bezwartościowe w ciągu trzech dni, a cztery dni na odblokowanie to za wolno; powyżej tego progu jest tylko dyskonto, a środki z grabieży Górnego poziomu stopniowo odbudowują rezerwę.¶Oficjalne wybijanie: wpłać CRC i SPARK (proporcja według bieżącej stopy zabezpieczenia, podgląd pokazuje wymagane ilości), aby wybić CRA, w kolejce {CraMintDaysMin}–{CraMintDaysMax} dni; wybite CRA trafia od razu do stakingu. Spalanie zamienia CRA z powrotem na CRC i SPARK, z oczekiwaniem tak długim jak odblokowanie; gdy rezerwy brakuje, udział CRC jest zmniejszany według pokrycia. Oczekujące wybijanie i spalanie Rewolucja może w całości nie zrealizować: nocne prawdopodobieństwo to wartość, o jaką cena CRA jest poniżej 1, razy {CraRugPerDepeg}; jeśli cena nie jest poniżej 1, nic się nie dzieje.¶Do stakingu można wpłacać CRA, CRC, CRT i SPARK: ostatnie trzy są najpierw wymieniane na CRA na rynku wtórnym po cenie rynkowej (przez CRC, z opłatą i poślizgiem). Kurs SPARK gwałtownie się waha i załamuje się przy krachu. Staking, wybijanie i spalanie to wywołania kontraktu i wymagają podpisu na portfelu.§Koparki (sprzęt): Koparki RatDigg (M1 / M2 / M3) to samodzielne maszyny o znacznie większej mocy obliczeniowej niż karta i niższym poborze energii w przeliczeniu na moc; wymagają baterii, obsługują moduły i nie zajmują slotów koparki. Sprzedają je wyłącznie dilerzy koparek w sklepie, a dostęp zależy od reputacji na Czarnym Rynku (M1 {AsicRepM1}, M2 {AsicRepM2}, M3 {AsicRepM3}); czasami trafiają się używane. Gdy ulegnie przepaleniu, napraw ją, przeciągając na nią po kolei komponenty elektroniczne; po naprawie jej zdrowie będzie niższe o {AsicRepairHealthCut}. Między dniem {EraMin} a dniem {EraMax} nadchodzi ""era koparek"", zapowiadana w gazecie kilka dni wcześniej: koszty energii dużych farm spadają o połowę, moc obliczeniowa sieci rośnie, zyski górników korzystających z kart graficznych ulegają rozmyciu, a karty z niższej półki ledwo przynoszą zysk, podczas gdy koparki (sprzęt) wciąż radzą sobie dobrze.¶Adres wypłat: każde urządzenie wydobywcze (koparki oraz koparki (sprzęt)) ma adres wypłat ustawiany we własnym oknie; jego urobek z wydobycia trafia tam każdej nocy proporcjonalnie do mocy obliczeniowej, więc dwie koparki mogą przesyłać środki na dwa różne adresy. Domyślnie adres nie jest ustawiony; w przypadku braku adresu lub zniszczenia portfela dana część urobku przepada, dlatego pamiętaj o zmianie adresu przy zmianie portfela.¶Turbodoładowacze działają na koparkach oraz koparkach (sprzęt) na takich samych zasadach jak na innych maszynach: każde użycie uruchamia jeden dodatkowy cykl, co oznacza natychmiastowe wydobycie z jednej nocy. Cykl ten pobiera energię za jedną noc, a jego urobek zależy od aktualnej mocy obliczeniowej sieci i trafia na adres wypłat danej maszyny; liczy się to również jako jedna runda zużycia oraz testów nagłej awarii, a maszyna nadal kopie tej nocy jak zwykle.§Kontrakty wieczyste: zakładka Wieczyste w Poinbase wykorzystuje CRC z konta jako depozyt zabezpieczający, do {PerpPscLev}× na PSC i {PerpSparkLev}× na SPARK, wyłącznie z depozytem izolowanym i jedną pozycją naraz (nigdy długą i krótką jednocześnie); aby ją zwiększyć, można tylko dołożyć depozyt. Ceny realizacji są gorsze niż kwotowane (im większe zlecenie, tym bardziej – jak w puli spot), a otwarcie i zamknięcie pozycji wiąże się z opłatą. Likwidacja jest sprawdzana tylko w nocy według średniej ceny z danego dnia: kapitał poniżej {PerpMaint:%} wartości nominalnej zeruje depozyt zabezpieczający. Obowiązuje też nocna opłata finansująca; gdy cena przewyższa średnią z 7 dni, pozycje długie płacą krótkim.¶Pozycje innych traderów też są likwidowane razem z rynkiem: przy większości likwidacji zostaje depozyt, który trafia do funduszu ubezpieczeniowego, a im szybszy ruch, tym więcej kończy się bankructwem, którego lukę pokrywa fundusz; po dużym jednodniowym ruchu gazeta podaje, ilu traderów zlikwidowano i na jaką kwotę (łącznie z twoją pozycją). Jeśli strata z likwidacji przekroczy depozyt zabezpieczający, różnicę pokrywa fundusz ubezpieczeniowy; gdy ten się wyczerpie (do czego prowadzi tylko skrajna fala bankructw na całym rynku), zyskowne pozycje podlegają auto-delewarowaniu i oddają połowę zysku, a wszystko ponadto staje się twoim długiem. Dług rośnie o {PerpDebtInterest:%} dziennie, jest spłacany co noc w pierwszej kolejności z CRC na koncie, blokuje otwieranie nowych pozycji i wypłaty, a po {PerpDebtDays} dniach przedmioty w twoim sklepie zostają zajęte na jego pokrycie; pozostała niespłacona kwota zostaje spisana na straty, a konto kontraktów wieczystych zostaje zablokowane na {PerpBanDays} dni.§Sklep: tylko monety, bez CRC, ceny o {BmPremium:%} wyższe niż w normalnych kanałach, z dodatkową marżą na towary zaawansowane technologicznie i karty graficzne; płacone monety zabierają ze sobą proporcjonalną część skażonych monet, a towar nie ma oznaczenia kradzionego; karty graficzne mogą być podróbkami, sprawdzaj je samodzielnie.¶Zakupy w sklepie: wybierz sprzedającego po lewej, półka jest po prawej, a po kliknięciu „Kup” panel płatności pozwala ustalić ilość, metodę płatności i monetę. Każdy rodzaj sprzedającego przyjmuje inne monety: sprzęt i technologia przyjmują PSC i CRT; broń, narkotyki, chemikalia, dokumenty, luksus i sprzedawcy prywatni przyjmują CRT oraz monetę prywatności; rolnictwo, hodowla, woda i piwowarstwo przyjmują PSC i CRA; rynek spot platformy przyjmuje PSC, CRT i CRA. Jeśli nie masz monety akceptowanej przez sprzedającego, możesz skorzystać z wbudowanej automatycznej konwersji: zamienia ona inną monetę z portfela przy poślizgu {BmAutoSwapSlip:%} i wymaga jednego podpisu; możesz też najpierw samodzielnie wymienić walutę na DEX przy znacznie mniejszym poślizgu, ale wymaga to dodatkowego kroku. Opłaty za wystawienie również wybierają monetę w momencie płatności.¶Koszyk sklepowy: „Kup” na półce dodaje do koszyka; pływający koszyk w prawym dolnym rogu pokazuje liczbę sztuk i otwiera kasę. Kasa pokazuje koszyk po lewej (pogrupowany według sprzedających, z możliwością zmiany ilości, usuwania przedmiotów, depozytem lub wypłatą zaliczkową u sprzedających, którzy na to zezwalają) oraz płatność po prawej: każdy sprzedający ma inny adres odbiorcy, więc płacisz każdemu sprzedającemu z osobna – wybierz monetę akceptowaną przez danego sprzedającego, wygeneruj rachunek i przelej z portfela; albo użyj automatycznej konwersji z innej monety w portfelu (dodatkowy poślizg {BmAutoSwapSlip:%}) i podpisz raz dla danego sprzedającego.§Zamówienia i sprzedaż: Zamówienia są tańsze niż transakcje spot, lecz wymagają kilku dni i mogą zostać przejęte; handlarze sprzedają towary według typu z własnym mnożnikiem ceny, od {BmBulk1Count} szt. zniżka wynosi {BmBulk1Discount:%}, a od {BmBulk2Count} szt. – {BmBulk2Discount:%}, a handlarz hurtowy pojawia się losowo z najniższymi cenami, lecz czas oczekiwania wynosi {BmBulkDays} d.; depozyt kosztuje {BmEscrowFee:%}, środki są zwalniane po dostawie i zwracane, jeśli sprzedający ucieknie; wypłata zaliczkowa daje kolejne {BmAdvanceDiscount:%} zniżki, lecz oszust zatrzymuje pieniądze, a opcję tę akceptują tylko sprzedający z co najmniej {BmAdvanceMinTrades} transakcjami; sama platforma może zrobić rug pull, zostać przejęta przez Ochronę lub sprzedający może trafić do aresztu – po czym twoje zamówienia zostaną namierzone, a przestępstwo odnotowane; plotki na forum mogą stanowić ostrzeżenie. Przejęta paczka może skutkować wizytą Ochrony pod drzwiami: podpisanie odbioru na miejscu odnotowuje przestępstwo i skutkuje konfiskatą towaru, odmowa kosztuje tylko utratę zapłaty.¶Sprzedaż: w zakładce Sprzedaż w sklepie wystawiaj kontrabandę, zaawansowaną technologię i karty graficzne z magazynu po cenie od {BmSellMin}x do {BmSellMax}x ceny referencyjnej. Im wyższy mnożnik, tym wolniejsza sprzedaż (poniżej {BmSellFastMult}x: ok. {BmSellDaysFast} d., {BmSellDay1Mult}x: ok. {BmSellDays1} d., {BmSellMax}x: ok. {BmSellDaysMax} d.) oraz większe prawdopodobieństwo i stopień skażenia wypłaty, który rośnie także wraz z wielkością sprzedaży z ostatnich 7 dni; kradzione towary skażają wypłatę zależnie od poziomu gorąca (taki % monet z wypłaty to brudne monety); zakładka Sprzedaż otwiera się na gablocie z wystawionymi towarami, a „Wystaw więcej” przygotowuje kolejne: jednakowe towary są grupowane, klawisze − i + ustawiają liczbę, mnożnik wybiera się po lewej, a towary trafiają do oferty dopiero po opłaceniu prowizji przyciskiem Półka; wszystkie sztuki danego towaru mają ten sam mnożnik, więc aby go zmienić, należy najpierw wycofać wszystkie; jednocześnie do {BmMaxKinds} rodzajów towarów, po maks. {BmMaxStack} szt. każdy, opłata za wystawienie wynosi {BmListFee:%} za sztukę; towary można wycofać z gabloty do magazynu, opłata nie podlega zwrotowi; opcja „Akceptowane monety” w gablocie określa przyjmowane monety: każda dodatkowa moneta dodaje jedno losowanie sprzedaży każdej nocy (w losowej kolejności, przy różnej liczbie kupujących dla każdej monety), więc akceptowanie większej liczby monet przyspiesza sprzedaż, a wypłata następuje w monecie ze zwycięskiego losowania; prowizja wynosi {BmCommission:%}, wypłata jest wstrzymana na {BmSaleHold} d. przed trafieniem do portfela; fałszywa karta może zostać wykryta i zwrócona przez kupującego, co obniża ocenę; jeśli platforma zrobi rug pull, wystawione towary i niewypłacone środki przepadają.§Rynki predykcyjne (zakładka Prognozy w Web3, od dnia gry {PredictUnlockDay}): każdy rynek to pytanie tak/nie dotyczące zdarzeń losowanych lub planowanych przez grę: pojawienia się wiadomości, rozpoczęcia operacji frakcji, jutrzejszej czystości wody czy ceny PSC. Rynek jest otwarty do momentu rozpoczęcia swojego okna i rozliczany w nocy ostatniego dnia tego okna. Kupuj Tak lub Nie za CRC ze swojego portfela on-chain (wywołanie kontraktu: złóż podpis na portfelu; pozycja należy do podpisującego portfela); cena odzwierciedla prawdopodobieństwo rynkowe i rośnie wraz z zakupami; każdy zwycięski udział wypłaca 1 kredyt; prowizja wynosi {PredictFee:%} od każdej transakcji; każdy rynek ma limit pozycji. Jeśli postawione CRC były częściowo brudne, odpowiednia część wypłaty również będzie brudna.¶Notatki z plotkami i atuty frakcji pozwalają dowiedzieć się z wyprzedzeniem o nadchodzących zdarzeniach; postawienie na Tak na takim rynku stanowi transakcję poufną. Transakcje poufne są wypłacane normalnie, lecz policja podejrzewa transakcje poufne: przy rozliczeniu lub sprzedaży wypłata za te udziały zostaje oznaczona jako brudne monety w portfelu odbiorczym. Jeśli w danym oknie brakuje danych gry (np. pominięto nocne rozliczenie), rynek zostaje unieważniony, a stawka zwrócona.§Reakcja cen na wiadomości: każdej nocy każdy otwarty rynek przesuwa się o połowę dystansu w stronę rzeczywistego prawdopodobieństwa wynikającego z informacji publicznych, plus drobne zakłócenia losowe; kto więc pierwszy przeczyta gazetę, notatkę z plotką lub skorzysta z przywileju frakcji, może kupić wcześniej i sprzedać po zmianie kursu zamiast czekać na rozliczenie. Lista wskazówek w panelu rynku pokazuje to, co o nim wiesz: harmonogramy, czasy odnowienia, dzień halvingu, ostatnie wartości gas, poziom rezerwy CRA i zapowiedzi ery koparek.¶Zależności, które można wyliczyć: operacje frakcji są wyzwalane przez progi ukrytych wartości siły (np. nalot wymaga: Ochrona >= 20 i Czarny Rynek >= 40 oraz obniża Ochronę o 20); gas działa w cyklu 7-dniowym; kotwica cenowa rośnie w tygodniu przed halvingiem; zaplanowane obławy i awarie zasilania przesuwają kotwicę, lecz cena rynkowa nie odzwierciedla ich z góry; im szybciej wyczerpuje się rezerwa (im więcej CRA w stakingu), tym wcześniej ostrzega CRA; rynek ceny PSC może zostać poruszony twoimi własnymi dużymi zleceniami. Handlarz informacjami (wymaga odpowiedniej reputacji na Czarnym Rynku) sprzedaje raport sytuacyjny (pięć wartości siły i działania, które dana frakcja może podjąć natychmiast, płatne w CRT) oraz trzy poziomy poufnych wskazówek (dotyczą tylko przesądzonych operacji frakcji i ery koparek; celność rośnie z każdym poziomem; cena zależy od wielkości rynku; niektóre wskazówki są fałszywe i mówią coś przeciwnego niż prawda); obstawienie wskazanej strony liczy się jako transakcja poufna. Wielkość rynku rośnie z każdym dniem, a błędny zakład oznacza utratę całej stawki, więc nie stawiaj wszystkiego na jeden rynek.§Wykrywanie manipulacji: twoje duże zlecenia spot na Poinbase odchylają cenę od poziomu, na którym byłaby bez twojego udziału (odchylenie maleje co noc w wyniku powrotu ceny do normy; widać je we wskazówkach rynkowych). Gdy odchylenie przekroczy {ManipFree:%}, jeśli osiągniesz zysk z ruchu ceny (wygrany rynek ceny PSC w kierunku twojego nacisku lub zamknięcie kontraktu wieczystego z zyskiem w tym samym kierunku), możesz wpaść: im większe odchylenie, tym wyższe prawdopodobieństwo (do maks. {ManipMax:%}). W razie wykrycia wypłata i tak zostaje zrealizowana: wypłata z rynku predykcyjnego zostaje w całości oznaczona jako brudne monety; zysk z kontraktu wieczystego pozostaje na koncie, a {PredictFraudShare:%} tej kwoty zostaje odnotowane w kartotece jako oszustwo (maksymalnie {PredictFraudCap}); gazeta opisuje śledztwo.¶Krótka pozycja przed zrzutem nie daje gwarancji zysku: poślizg na kontraktach wieczystych po obu stronach i obrót na rynku spot w obie strony często kosztują więcej, niż zysk z pozycji krótkiej.§Piramida finansowa (zakładka Zyski, opcja Emisja; od dnia gry {PonziMinDay}, jedna na zapis gry): wybierz stawkę dzienną ({PonziRates[0]:%}-{PonziRates[4]:%}), opłać koszty marketingu, aby wystartować (uruchomienie i rug pull to wywołania kontraktu podpisywane na portfelu), a ludzie z Dolnego poziomu będą wpłacać CRC w zależności od stawki i twojej reputacji na Dolnym poziomie; im wyższa stawka, tym szybciej napływają. Każdej nocy odsetki są wypłacane najpierw z nowych wpłat, a następnie z portfela emitenta; jeśli nie możesz ich pokryć, następuje panika i piramida upada; każdej nocy z puli wypłacane jest {PonziWithdraw:%}, a im większa pula i wyższa stawka, tym większe prawdopodobieństwo donosu, co również powoduje jej upadek. W razie upadku pula ulega konfiskacie. W każdej chwili możesz zrobić rug pull na puli (kliknij dwukrotnie, aby potwierdzić): środki trafiają do portfela emitenta, a całość tych CRC jest brudna (wypierz je przed wpłatą na Poinbase). Zarówno rug pull, jak i upadek odnotowują oszustwo w kartotece i zerują reputację na Dolnym poziomie. Pozycja „Wieści z ulicy” wskazuje ryzyko donosu.§Oszustwa: knoty – w niektóre poranki tuż po otwarciu cena zostaje zbita lub wystrzelona o {WickMin:%}-{WickMax:%}; większość cofa się tej samej nocy, lecz niektóre ruchy są prawdziwe; cena wskaźnikowa (mark price) kontraktów wieczystych uwzględnia tylko połowę, więc nie sprzedawaj w panice na knocie.¶Airdropy (zakładka Airdropy w Web3) – przy każdym airdropie najpierw trzeba autoryzować portfel (jedna podpisana umowa autoryzacji), a potem podpisać odbiór; przed autoryzacją sprawdź zakres zgody: prawdziwe airdropy nie wymagają autoryzacji lub żądają niewielkiej na kilkadziesiąt sztuk; nielimitowana autoryzacja lub znacznie przewyższająca nagrodę to phishing, często pod łudząco podobną nazwą (0 zamiast o, 1 zamiast l), a noc lub dwie później moneta zostaje wyczyszczona z portfela. Autoryzacje są wymienione po prawej stronie zakładki Airdropy i można je cofnąć podpisem, uniemożliwiając kradzież.¶Zewnętrzne pule dochodowe (zakładka Lokaty, Pule zysku, Wpłata) – {YieldRates[0]:%}-{YieldRates[2]:%} dziennie; widać rezerwę, blokadę czasową oraz audyt, ale nie to, czy to oszustwo: im wyższa stawka, tym większa szansa na rug pull; blokada czasowa i audyt zmniejszają ryzyko; uczciwa pula zamyka się i zwraca kapitał, gdy rezerwa nie wystarcza na odsetki, a pula-oszustwo może zniknąć każdej nocy. Wypłata z pul z blokadą czasową trwa {YieldLockDays} dni.¶Fałszywe wsparcie – osoba przy ladzie podająca się za wsparcie Poinbase prosi o przelanie CRC na „bezpieczny adres”: Poinbase nigdy nie składa wizyt ani nie prosi o przelewy. Sfałszowane przelewy – klient płacący monetami, który zaczyna od „już wysłałem, oto zrzut ekranu, dawaj towar”, nigdy nie płaci; uczciwi klienci wiedzą, że potwierdzenie w łańcuchu chwilę trwa.§Wykresy: strona rynku spot Poinbase i strona handlu Web3 pozwalają przełączać dzienne świece każdej monety (strona kontraktów wieczystych pokazuje bieżący instrument, rynki predykcyjne – PSC), zielony to wzrost, czerwony to spadek; żółta linia to średnia 7-dniowa (wykorzystuje ją opłata finansująca kontraktów wieczystych); słupki poniżej to wolumen (szary to rynek, błękitny to ty: liczą się spot, DEX, wybijanie/spalanie, wymiany Ponero oraz otwarcia/zamknięcia kontraktów wieczystych). Im większy ruch, tym większy handel na rynku; knoty zostawiają długie cienie.§Powiązania fabularne: wybory w wątkach gry zmieniają ten rynek; gazeta opisuje je nazajutrz, a reakcja rynku trwa kilka dni. Dowody Serpico dla Rewolucji: rezerwa CRA zostaje zasilona, szansa krachu spada o połowę przez {StorySecDays} d., a SPARK rośnie o {StorySerpicoSpark:+%} w ciągu {StorySparkNights} n.; dla Czarnego Rynku: szanse na depeg CRT i zdradę spadają o połowę; dla Ochrony: przez {StorySecDays} d. mikser czyści gorzej (każda runda ×{StorySecMixClean}), a sankcje na miksery i kontrole manipulacji rynkowej są surowsze. Eleanor ujawnia dysk: szansa odpisu wartości przez powiernika CRC podwaja się, a SPARK rośnie o {StoryLeakSpark:+%}; oddaje go: szansa na depeg CRC spada o połowę. Oficer Lun aresztowany: przez {StoryLunDays} d. kontrole manipulacji rynkowej są surowsze, a wśród klientów OTC jest więcej tajniaków.¶Operator miksera Tumbler (po odblokowaniu miksera, od dnia {TumblerMinDay}): odwiedza cię kilka razy i w końcu prosi o ukrycie dysku z kluczami. Schowaj go i oddaj: opłaty miksera spadają o połowę, zbiór anonimowości rośnie, otrzymujesz też upominek; dysk to jednak kontrabanda i trafi do twojej kartoteki, jeśli przeszukanie ujawni go w międzyczasie. Zgłoś go: nagroda i Reputacja u Ochrony, a mikser zostaje zamknięty (monety w toku wracają). Sprzedaj go na Czarnym Rynku: suma w CRT (w połowie skażona) i Reputacja na Czarnym Rynku, po czym opłaty miksera rosną, a ryzyko rug pulla się zwiększa.¶Po Tumblerze: między jego drugą a trzecią wizytą przychodzi Agent Bezpieczeństwa z pytaniem, czy był w twoim sklepie. Przyznaj się: Reputacja u Ochrony +{TumblerAgentSecRep}; jeśli jednak potem ukryjesz dysk, agent przeszuka sklep dzień przed powrotem Tumblera, a w razie znalezienia skonfiskuje dysk i odnotuje kontrabandę. Jeśli klucz trafi w ręce Ochrony (zgłosisz go, dysk zostanie przejęty lub nie będziesz go mieć przy jego powrocie), rejestry miksowania zostają odtworzone: {PredictFraudShare:%} skażenia zmytego z wypłat z miksera w ciągu ostatnich {TumblerLeakDays} d. trafia do kartoteki jako oszustwo (maksymalnie {PredictFraudCap}). Donos prowadzi do procesu: na rynku predykcyjnym możesz obstawiać wyrok, a gazeta codziennie relacjonuje rozprawy; jeśli zostanie uniewinniony, zemści się. Jeśli sprzedasz dysk, Czarny Rynek przeprowadzi rug pull po {TumblerBmRugMin}–{TumblerBmRugMax} d., wszystkie monety w toku w mikserze przepadną, a on również się zemści. Ukryj dysk i oddaj go, a ostrzeże cię w noc poprzedzającą obławę Ochrony. Po {TumblerRebrandDays} d. od zamknięcia mikser powraca pod nową nazwą; niektóre z nich to pułapki Ochrony, a każda wypłacona z nich moneta wraca jako skażona. Uważaj na opłatę, która wygląda na zbyt niską.§Mikser i moneta prywatności: wybierz monetę, kwotę i liczbę rund; każda runda pobiera opłatę i czyści część skażonych monet, liczba rund odpowiada dniom oczekiwania, a monety wracają na ten sam adres; im więcej wpłacisz, tym gorsze czyszczenie. Podczas obław mikser może zostać objęty sankcjami; wypłaty przypadające na ten czas nie są czyszczone i wracają w całości jako skażone.¶Wymiana monety prywatności (strona handlu Web3, wymaga Reputacji na Czarnym Rynku): Ponero to moneta prywatności – wymieniane skażone monety po prostu znikają, a otrzymane Ponero jest czyste; opłata wynosi {PoneroFee:%} w każdą stronę, a wymiany w obie strony dzielą wspólny dzienny limit: {PoneroDailyCap} kredytów.§Klienci OTC (ulepszenie sieci kontaktów „Punkt OTC”): Czarna lampa zyskuje kolejny cel – klient OTC (kliknij dwukrotnie lampę, aby przełączyć). Świeci tylko w gablocie i przyciąga ludzi jak pierwotna Czarna lampa, zależnie od liczby lamp i twojej Reputacji na Czarnym Rynku; ulepszenie zawiera jedną lampę. Połowa klientów chce sprzedać ci monety, a połowa kupić je od ciebie – zawsze za gotówkę. Gdy klient przedstawi ofertę, wybierz rozmowę przy terminalu: terminal otworzy stronę handlu przy ladzie, podczas gdy klient czeka przy ladzie. Możesz zrealizować tylko część transakcji (25% / 50% / 75% / 100% lub wpisana kwota), a gotówka skaluje się proporcjonalnie; wybierz Pas lub odpraw klienta, aby odrzucić ofertę. Wielkości transakcji rosną wraz z czynszem.¶Klienci sprzedający: po zawarciu transakcji płacisz gotówką, a monety trafiają bezpośrednio do podłączonego portfela. Gdy na stacji coś się dzieje, monety zazwyczaj pochodzą z tych wydarzeń: CRT podczas wojny gangów lub obławy, PSC podczas rajdu Rewolucji na Górny poziom lub zamieszek na Dolnym poziomie – wszystkie są skażone. W innych przypadkach to losowo PSC, CRT lub CRA, z czego {OtcTaintMin:%}–{OtcTaintMax:%} jest skażonych, a bardziej skażone monety są tańsze (cena wywoławcza spada z {OtcCutClean:%} do {OtcCutDirty:%} wartości). Klient nie mówi, jak bardzo monety są skażone: strona transakcji pokazuje jego adres, a przycisk „Sprawdź” otwiera jego historię w eksploratorze; im więcej środków pochodzi z miksera, platformy Czarnego Rynku lub adresów oszustw, tym są bardziej skażone. Po otwarciu punktu Ponero okazjonalnie ktoś sprzedaje Ponero, które nie niesie ze sobą skażenia, ale kosztuje więcej. Od czasu do czasu klient to tajniak: przyjęcie transakcji oznacza utratę gotówki i odnotowanie paserstwa w kartotece, co zdarza się częściej podczas obławy.¶Klienci kupujący: mogą chcieć dowolnej monety i oferują cenę rynkową powiększoną o losową marżę (od {OtcBidMin:+%} do {OtcBidMax:+%} ceny rynkowej, więc cena może być poniżej rynkowej); decyzja, czy warto sprzedać, należy do ciebie. Po zaakceptowaniu transakcji otwiera się PLEDGER z wypełnionym adresem i kwotą; podpisz i zaczekaj na potwierdzenie, a po jego nadejściu klient zapłaci gotówką i wyjdzie. Jeśli klient wyjdzie przed złożeniem podpisu, transakcja zostaje anulowana. Sprzedawane przez ciebie monety nie są sprawdzane pod kątem skażenia.¶Własny mikser (strona Szarej sieci, dostępny wraz z Punktem OTC): zasil go środkami i otwórz, klienci wpłacają skażone monety, a po kilku dniach są one wypłacane, podczas gdy ty zatrzymujesz opłatę. Każda runda zmywa część skażenia w oparciu o zbiór anonimowości, który składa się głównie z twojego kapitału i nieodebranych zysków (monety klientów w toku liczą się tylko częściowo), więc większe dofinansowanie czyści skuteczniej. Klienci porównują opłatę oraz skażenie pozostałe po wypłatach z mikserem Tumblera i wybierają tańszą opcję, a wyższa Reputacja na Czarnym Rynku przyciąga ich więcej; wyświetlana reputacja to skażenie niedawno pozostawione na wypłatach. Zyski z opłat pozostają w puli i przy wypłacie są w całości skażone; kapitał powraca z właściwą sobie częścią skażonych monet. Większy ruch zwiększa zainteresowanie służb (większa pula ukrywa monety nieco lepiej, ale przyciąga też więcej ruchu, więc w sumie ściąga większą uwagę), a wraz z nim szansę na nalot Ochrony: kapitał, zyski i monety klientów ulegają konfiskacie, do kartoteki trafia paserstwo, a mikser zostaje zamknięty na {OwnMixSeizeDays} d. Od czasu do czasu podczas otwartej nocy wpłaty dokonuje tajniak, co również skutkuje odnotowaniem paserstwa. W każdej chwili możesz przeprowadzić rug pull: wszystko, włącznie z monetami klientów, trafia do ciebie jako w pełni skażone, do kartoteki trafia oszustwo, Reputacja na Czarnym Rynku spada, a mikser zostaje zamknięty na stałe.§Skażenie: w każdym portfelu dla każdej monety rejestrowana jest liczba skażonych jednostek (widoczna w saldach na stronie Portfeli oraz na PLEDGER). Skażone monety pochodzą od: klientów OTC sprzedających ci monety, klientów płacących monetami (zależnie od wskaźnika kradzieży towaru), sprzedaży kradzionych towarów w Szarej sieci, transakcji poufnych i manipulacji rynkowej na rynku predykcyjnym, wypłat z piramidy finansowej, zysków z własnego miksera, CRT ze sprzedaży dysku z kluczem oraz oznaczonych wypłat z miksera. Skażenie istnieje wyłącznie w portfelach Web3: wydawanie, przesyłanie lub opłacanie prowizji pobiera skażone monety proporcjonalnie do ich udziału; wymiana przenosi ten udział na otrzymaną monetę (wymiana CRT skażonego w 60% na PSC daje 60% skażonego PSC); Ponero nie przenosi skażenia. Poinbase przyjmuje wyłącznie czyste monety: w przypadku każdej monety można wpłacić co najwyżej jej czystą kwotę, a skażone pozostają w portfelu. Dzięki temu konto Poinbase i bank zawierają wyłącznie czyste środki, a wypłata do banku nie podlega kontroli – obowiązuje jedynie prowizja {ExchangeFee:%} oraz podatek {TaxRate:%} od zysków powyżej kosztów. Wpłacenie czystych monet do portfela nie oczyszcza monet skażonych. Sposoby na pozbycie się skażonych monet: mikser, wymiana na Ponero, sprzedaż monet kupującym klientom OTC (sprzedawane monety nie są śledzone) oraz płatności w sklepie Web3.¶Przed zniszczeniem portfela przenieś monety samodzielnie oraz najpierw zamknij pozycje i wycofaj depozyty: wszystko, co w nim zostanie, przepadnie wraz z portfelem." courier.odd1,...Paczka dotarła. courier.odd2,(Trzyma rękę w kieszeni.) Podpisz tutaj. courier.sign,Podpisz @@ -362,6 +360,7 @@ hw.wallet.n,Portfel {0} hw.review.own,Własny portfel: {0} hw.review.poinbase,Adres wpłaty Poinbase poin.deposit,Adres wpłaty: {0} +poin.deposit.clean,Czyste monety do wpłaty ({0}): {1} wallets.count,Portfele {0}/{1} wallets.col.name,Nazwa wallets.col.addr,Adres @@ -379,6 +378,7 @@ hw.paste,Wklej hw.copied,Skopiowano adres. hw.copied.addr,Skopiowano {0} hw.balance.frozen," (zamrożone {0})" +hw.balance.dirty," (skażone: {0})" wallets.destroy,Zniszcz wallets.destroy.sure,Potwierdź wallets.destroyed,Zniszczono {0}: {1} @@ -550,7 +550,7 @@ predict.purity.rust,Woda z Górnego poziomu nightlog.predict.win,"Trafna predykcja: „{0}”, wypłacono {1}." nightlog.predict.lose,"Błędna predykcja: „{0}”, utracono stawkę {1}." nightlog.predict.void,"Predykcja unieważniona: „{0}”, zwrócono stawkę {1}." -nightlog.predict.insider,"""{0}"" rozliczono na {1}. Policja podejrzewa transakcje poufne; wypłata została oznaczona, a skażenie portfela wzrasta o {2}." +nightlog.predict.insider,"""{0}"" rozliczono na {1}. Policja podejrzewa transakcje poufne; {2} CRC z tego oznaczono jako skażone." predict.tab.markets,Rynki predict.tab.intel,Informacje predict.acct.crt,{0}: CRT {1} @@ -593,11 +593,10 @@ predict.brief.queued,{0}: operacja zaplanowana predict.brief.none,{0}: brak operacji do rozpoczęcia predict.brief.can,{0}: można rozpocząć {1} predict.clue.push,Przesunięcie ceny o {0}%: wysokie ryzyko -nightlog.predict.manip,"""{0}"" rozliczono na {1}. Regulatorzy podejrzewają manipulację rynkową; wypłata została oznaczona, a skażenie portfela wzrasta o {2}." +nightlog.predict.manip,"""{0}"" rozliczono na {1}. Organy nadzorcze podejrzewają manipulację ceną; {2} CRC z tego oznaczono jako skażone." news.manip.title,Giełda bada nietypowe transakcje news.manip.desc,"Regulatorzy donoszą, że ktoś wpłynął na cenę dużymi zleceniami spot, czerpiąc zyski z instrumentów pochodnych i rynków predykcyjnych; powiązane konta zostały oznaczone." -taint.overflow,Skażenie przekracza obecnie wartość portfela; nadwyżka {0} zostaje odnotowana jako oszustwo. -perp.manip,"Zamknięto z zyskiem: {0}. Regulatorzy podejrzewają manipulację rynkową; zysk został oznaczony, a skażenie konta Poinbase wzrasta o {1}." +perp.manip,Zamknięto z zyskiem {0}. Organy nadzorcze podejrzewają manipulację rynkową; do twojej kartoteki trafia oszustwo: {1}. web3.sub.ponzi,Lokaty ponzi.h,Piramida finansowa ponzi.acct,Portfel emitenta {0}: CRC {1} @@ -688,7 +687,7 @@ scam.support.name,Wsparcie Poinbase scam.support.1,"Dzień dobry, tutaj wsparcie Poinbase. Wykryliśmy nietypowe logowanie na twoim koncie i zostało ono oznaczone." scam.support.2,Prześlij dzisiaj {0} CRC na bezpieczny adres {1} w celu weryfikacji; zostaną zwrócone zaraz potem. scam.support.3,"W przeciwnym razie konto zostanie trwale zamrożone. Muszę lecieć, pamiętaj o przelewie." -predict.sold.caught,"Sprzedano, otrzymano {0}. Policja podejrzewa transakcje poufne; uzyskane środki zostały oznaczone, a skażenie portfela wzrasta o {1}." +predict.sold.caught,"Sprzedano, otrzymano {0}. Policja podejrzewa transakcje poufne; {1} CRC z tego oznaczono jako skażone." predict.row.move," (ubiegłej nocy {0} {1})" predict.stats.h,Historia (śr. cena otwarcia / wskaźnik rzeczywisty) predict.stats.row,"{0}: rynki: {1}, śr. otwarcie {2}, wystąpienie: {3}%" @@ -711,7 +710,7 @@ news.story.serpico_rev.desc,"Rewolucja rzekomo zdobyła dowody korupcji wewnątr news.story.serpico_bm.title,Czarny Rynek zawiera ciche porozumienie news.story.serpico_bm.desc,"Wewnętrzny dokument Ochrony zmienił właściciela na Czarnym Rynku. Od tamtej pory rozliczenia w Darknecie są zauważalnie stabilniejsze, a realizacja CRT ani razu nie zawiodła." news.story.serpico_sec.title,Ochrona rozpoczyna wewnętrzną czystkę -news.story.serpico_sec.desc,"Ochrona zapowiedziała pełne śledztwo w sprawie wewnętrznej korupcji i zaostrzenie monitorowania przepływów finansowych. Poinbase zaostrza kontrolę wypłat, a miksery zostały wymienione z nazwy." +news.story.serpico_sec.desc,Ochrona ogłosiła pełne śledztwo w sprawie wewnętrznej korupcji oraz ściślejsze monitorowanie przepływów finansowych; wymieniono usługi mikserów. news.story.eleanor_leak.title,Wyciek danych o hodowli nutriowoców news.story.eleanor_leak.desc,"Gazeta z Dolnego poziomu opublikowała badania pozwalające nutriowocom na ponowne wytwarzanie nasion; akcje Pastelle runęły. Bank powierniczy przechowujący fundusze Górnego poziomu zgłasza złe długi, a Rewolucja rośnie w siłę." news.story.eleanor_return.title,Pastelle odzyskuje skradzione dane @@ -772,7 +771,7 @@ agent.search.none,...Nic. Przepraszam za kłopot. tumbler.v4.seized.1,"Słyszałem, że Ochrona przeszukała twój sklep." tumbler.v4.seized.2,Mają teraz klucz. Wyciągną rejestry każdego użytkownika. tumbler.v4.seized.3,"Cokolwiek im powiedziałeś, nie chcę już wiedzieć." -nightlog.tumbler.leak,Ochrona użyła klucza podpisu Tumblera do odtworzenia rejestrów miksera: skażenie usunięte z wypłat (liczba: {0}) w kwocie {1} powróciło do portfeli. +nightlog.tumbler.leak,Ochrona użyła klucza podpisu Tumblera do odtworzenia historii miksowania: w ramach wypłat ({0}) usunięto {1} skażenia; do twojej kartoteki trafia oszustwo: {2}. nightlog.tumbler.leak.none,Ochrona użyła klucza podpisu Tumblera do odtworzenia rejestrów miksowania. Ostatnio nie wypłacono niczego z miksera. nightlog.tumbler.note,"Pod drzwi wsunięto liścik: ""Jesteś mi coś winien i odbiorę to. —T""" nightlog.tumbler.tip,Wiadomość od Tumblera: Ochrona może jutro wziąć na cel usługi mikserów. @@ -1038,7 +1037,7 @@ otc.cancel,Pas otc.msg.gone,Klient odszedł. otc.msg.cash,Za mało gotówki. otc.msg.sting,"Klient był tajniakiem: skonfiskowano {0} w gotówce, odnotowano paserstwo." -otc.msg.bought,"Otrzymano {0} {1}, zapłacono {2} w gotówce." +otc.msg.bought,"Otrzymano {0} {1} (w tym skażone: {3}), zapłacono gotówką: {2}." otc.msg.sold,"Wysłano {0} {1}, otrzymano {2} w gotówce." gray.sub.own,Mój mikser ownmix.h,Mój mikser @@ -1088,3 +1087,4 @@ otc.nocash,Nie masz nawet gotówki? Daj spokój. otc.nowallet,"Brak podłączonego portfela, gdzie mam wysłać monety? Daj spokój." otc.sting,"Nie ruszaj się. Ochrona. Skup kradzionych środków: gotówka zostaje skonfiskowana, a to trafi do twoich akt." hw.err.poinbase,Poinbase nie przyjmuje {0}. +hw.err.tainted,W tym portfelu skażone {1}: {0}. Poinbase przyjmuje tylko czyste monety: maksymalnie {2} {1}. diff --git a/src/Decentralized/ModFiles/Localization/ru.csv b/src/Decentralized/ModFiles/Localization/ru.csv index 0dccc9e..3525405 100644 --- a/src/Decentralized/ModFiles/Localization/ru.csv +++ b/src/Decentralized/ModFiles/Localization/ru.csv @@ -22,7 +22,7 @@ tab.report,Отчёт wallet.line,{0}: {1} (около {2} кредитов) wallet.empty,Кошелёк пуст. wallet.total,Общая стоимость: {0} кредитов -wallet.taint,«Грязные» средства: {0} кредитов +wallet.taint,Грязные монеты (кредиты): {0} trade.amount,Сумма trade.deposit,Депозит кредитов в CRC trade.withdraw,Вывод CRC в кредиты @@ -38,8 +38,6 @@ msg.balance,Недостаточно средств. msg.trade,"Оплачено {0} {1}, получено {2} {3}." msg.deposit,Внесено {0} кредитов в CRC. msg.cashout,Получено {0} кредитов. Налог {1} кредитов. -msg.aml_light,Проверка соответствия: удержаны «грязные» средства на сумму {0} кредитов. -msg.aml_heavy,"Проверка соответствия: изъяты «грязные» средства на сумму {0} кредитов, направлен отчёт в Службу безопасности." report.none,Отчётов о майнинге пока нет. report.day,Ночь дня {0} report.rigs,Фермы с питанием: {0} из {1} @@ -141,6 +139,7 @@ col.asset,Актив col.amount,Количество col.value,Оценка col.avg,Ср. покупка +col.dirty,Грязные bank.cash.k,Кредиты bank.rent.k,Аренда bank.rent.v,"{0}, оплата через {1} дн." @@ -152,13 +151,12 @@ stable.ok,Привязан stable.depeg,Отвязан stable.warn,Внимание: покрытие резерва стейкинга на исходе stable.spiral,Крах -aml.taint,Доля загрязнения счёта: {0}% mixer.h,Миксер mixer.ok,Статус: работает нормально -mixer.sanctioned,Статус: под санкциями (дней до снятия: {0}). Выведенные в этот период монеты помечаются. +mixer.sanctioned,"Статус: под санкциями (ещё {0} дн.). Выплаты, приходящиеся на этот период, не очищаются и возвращаются полностью «грязными»." mixer.pending,Депозиты в обработке mixer.none,Нет депозитов в обработке. -mixer.col.taint,Загрязнение +mixer.col.taint,Грязные mixer.col.ready,Готовность mixer.day,День {0} mixer.deposit,Депозит @@ -169,12 +167,12 @@ mixer.go,Депозит в миксер mixer.min,Депозит должен составлять не менее {0} кредитов. mixer.done,Внесено {0} {1}; возврат в день {2}. mixer.upgrade.title,Миксер -mixer.upgrade.desc,"Разблокирует миксер на странице «Серая сеть» в терминале: вносите «грязные» монеты и забирайте их через несколько дней с меньшим загрязнением. Вывод недавно смешанных монет проверяется строже; во время зачисток миксер может попасть под санкции, а выведенные в этот период монеты помечаются." +mixer.upgrade.desc,"Разблокирует миксер на странице терминала «Серая сеть»: внесите «грязные» монеты и заберите их через несколько дней — «грязных» станет меньше. Во время зачисток миксер может попасть под санкции, а выплаты, приходящиеся на этот период, возвращаются полностью «грязными»." news.sanction.title,Миксер внесён в санкционный список -news.sanction.desc,"Служба безопасности ввела санкции против ряда миксер-сервисов. Средства, выведенные из миксеров в ближайшие дни, будут считаться подозрительными." +news.sanction.desc,"Служба безопасности ввела санкции против ряда сервисов микширования. Средства, выведенные из миксеров в ближайшие дни, будут считаться «грязными» средствами." nightlog.mixer,Миксер вернул {0} {1}; загрязнение: {2} -> {3}. -nightlog.mixer_flag," (выведено во время санкций; адрес помечен)" -nightlog.mixer_flag.trap," (адрес вывода помечен)" +nightlog.mixer_flag," (выведено во время санкций; всё помечено как «грязное»)" +nightlog.mixer_flag.trap," (Служба безопасности помечает выведенные монеты как «грязные»)" nightlog.mixer_rug,Оператор миксера сбежал с деньгами: {0} {1} не вернулись. web3.sub.trade,Торговля gray.sub.mixer,Миксер @@ -249,7 +247,7 @@ black.kind.Contraband.3,Контрабанда (высок.) black.kind.Tech,Высокие технологии (наценка) nightlog.bm.ready,Чёрный рынок: доставлен товар «{0}»; курьер заглянет после открытия. guide.web3.title,Руководство по Web3 -guide.web3.text,"Банк и торговля: страница банка только для чтения и показывает наличные, аренду и CRC на счёте Poinbase. Страница «Средства» в Poinbase отвечает за ввод и вывод; сначала выбирается монета: CRC можно вводить и выводить через банковский счёт или кошелёк, остальные монеты только через кошелёк. Депозит из банка конвертирует кредиты в CRC на счёте Poinbase; вывод в банк меняет CRC обратно на кредиты и проходит проверку соответствия, оценивающую загрязнение счёта Poinbase. Вывод на кошелёк требует адрес получателя и нескольких подтверждений до зачисления; комиссия за газ фиксирована на обычном уровне и списывается с отправляемой монеты. Неверный формат адреса или контрольная сумма приводят к отказу; адрес с верным форматом, которым никто не пользуется, означает потерю отправленных монет.¶Торговля: PSC означает Probably Stolen Coin — это монета, которую добывают видеокарты и асик-майнеры. На спотовом рынке Poinbase две пары, PSC/CRC и SPARK/CRC, по монете, выбранной на графике. И покупка, и продажа вводятся как количество торгуемой монеты; в предпросмотре видно, сколько котируемой монеты уйдёт или придёт, средняя цена включает комиссию, проскальзывание — нет.¶На торговой странице Web3 можно обменять любые две монеты, всегда через CRC: если CRC с одной стороны, используется один пул, иначе два пула, две комиссии и суммирующееся проскальзывание; предпросмотр показывает получаемое количество, число пулов и потери. Обмен стейблкоинов (CRT или CRA на CRC) идёт через стабильные пулы: комиссия {StableFee:%} и почти нулевое проскальзывание возле привязки; при отвязке ликвидность редеет, при обвале её выводят, и проскальзывание резко растёт.§Аппаратные кошельки: ончейн-монеты хранятся на аппаратных кошельках PLEDGER, баланс и загрязнение у каждого свои. Кошелёк — это предмет: перетащите его на торговый терминал, чтобы загрузить. Открывайте его на странице «Кошельки» терминала; подключайте и отключайте в правом верхнем углу терминала. Торговля на странице Web3, магазин и миксер на странице «Серая сеть» используют подключённый кошелёк; без кошелька или без подключения они доступны только для просмотра, а все балансы равны 0. Покупатели, платящие монетами, платят на подключённый кошелёк.¶Платежи (магазин, миксер, пункт обмена Ponero, комиссия за размещение) начинаются со счёта на терминале; введите адрес получателя на кошельке и удерживайте ✓, чтобы подписать. Последние два символа адреса — контрольная сумма, поэтому опечатка в один символ обычно отсекается; изредка адрес случайно оказывается валидным, и монеты уходят на адрес, которым никто не пользуется. Для обмена на DEX также требуется подпись на кошельке.¶Poinbase — кастодиальный аккаунт; депозит отправляется с кошелька на адрес депозита Poinbase (только PSC, CRC и SPARK; регулируемая биржа не принимает ни CRT чёрного рынка, ни CRA Революционеров, а кошелёк не даёт отправить их на адрес депозита), вывод запускается на странице «Средства» в Poinbase. «Обозреватель» на странице «Кошельки» позволяет искать переводы по адресу и показывает только реально произошедшие переводы: каждое поступление и списание по вашим кошелькам (переводы, обмены на DEX и другие вызовы контрактов, доход майнеров, выводы, монеты, которые вам присылают другие); Ponero — приватная монета и там не отображается. Дополнительные аппаратные кошельки продаёт Доктор Джексон; перетащите кошелёк на торговый терминал, чтобы добавить его (до {WalletMax}). В магазине есть варианты подешевле. Ненужный кошелёк можно уничтожить на странице «Кошельки»; его монеты пропадают навсегда, как и всё, что позже будет отправлено на его адрес.¶За переводы взимается комиссия за газ: медленная, обычная или быстрая, а цены на газ растут и падают с циклом примерно в неделю; при перегрузке сети комиссии за газ растут, а медленные транзакции могут быть исключены из мемпула. Перед отправкой проверяйте адрес полностью.§Стейкинг: CRA в стейкинге пула Революционеров приносит доход по дневной ставке, который капитализируется в стейк; вывод требует предварительного запроса и четырёх дней ожидания — без начисления процентов во время ожидания и без возможности забрать раньше срока. CRA обеспечен частично: каждый CRA поддерживают резерв CRC, который держат Революционеры, и балансовый токен SPARK; покрытие резерва и ставка обеспечения показаны на странице стейкинга. Проценты выплачиваются новыми необеспеченными CRA, что разбавляет покрытие резерва, и тем быстрее, чем больше в стейкинге; при слишком низком покрытии Революционеры снижают ставку. Революционеры иногда присваивают резерв, сначала идут слухи: это и есть предупреждение. Если после этого покрытие падает ниже {CraCrashRatio:%}, наступает крах: CRA обесценится за три дня, и четырёхдневная разблокировка окажется слишком медленной; выше этого порога будет лишь дисконт, а деньги от ограблений Верхнего уровня постепенно восстанавливают резерв.¶Официальный минт: вносите CRC и SPARK (пропорция по текущей ставке обеспечения, предпросмотр показывает нужные суммы), чтобы создать CRA; очередь {CraMintDaysMin}–{CraMintDaysMax} дней, созданный CRA сразу попадает в стейкинг. Сжигание меняет CRA обратно на CRC и SPARK, ожидание такое же, как у разблокировки; при нехватке резерва доля CRC уменьшается по покрытию. Находящиеся в очереди минт и сжигание Революционеры могут не выполнить целиком: ночная вероятность равна величине, на которую цена CRA ниже 1, умноженной на {CraRugPerDepeg}; если цена не ниже 1, этого не случится.¶В стейкинг можно вносить CRA, CRC, CRT и SPARK: последние три сначала обмениваются на CRA на вторичном рынке по рыночной цене (через CRC, с комиссией и проскальзыванием). Цена SPARK сильно колеблется и рушится при крахе. Стейкинг, минт и сжигание — это вызовы контракта, требующие подписи на кошельке.§Асик-майнеры: асик-майнеры RatDigg (M1 / M2 / M3) — это автономные устройства со значительно более высоким хешрейтом, чем у видеокарт, и меньшим энергопотреблением на единицу хеша; для работы им нужна батарея, они поддерживают модули и не занимают слоты майнинг-фермы. Они продаются только у дилеров асик-майнеров в магазине и требуют определённой репутации на Чёрном рынке (M1 {AsicRepM1}, M2 {AsicRepM2}, M3 {AsicRepM3}); иногда бывают подержанные. Если асик-майнер сгорит, его можно восстановить, перетаскивая на него электронные компоненты по порядку; после ремонта его состояние будет на {AsicRepairHealthCut} ниже. В промежутке между днями {EraMin} и {EraMax} наступает «эра асик-майнеров», о которой за пару дней предупреждает газета: расходы крупных ферм на энергию снижаются вдвое, хешрейт сети растёт, доход от видеокарт размывается, слабые видеокарты почти перестают зарабатывать, тогда как асик-майнеры продолжают эффективно работать.¶Адрес выплат: для каждого устройства (майнинг-ферм и асик-майнеров) адрес выплат настраивается в его собственном окне; добыча отправляется туда каждую ночь пропорционально хешрейту, поэтому две разные машины могут выводить доход на разные адреса. Изначально адрес не задан; если он не указан или привязанный кошелёк уничтожен, эта часть добычи теряется, поэтому обновляйте адрес при смене кошелька.¶Турбоускорители работают с майнинг-фермами и асик-майнерами по тем же правилам, что и с другими машинами: каждое использование запускает один дополнительный цикл, то есть мгновенно отрабатывает целую ночь майнинга. Этот цикл потребляет энергию за одну ночь, доход рассчитывается по текущему хешрейту сети и поступает на адрес выплат этого устройства, а также учитывается один цикл износа и проверка на отказ; при этом ночью устройство продолжает добывать как обычно.§Бессрочные фьючерсы: вкладка «Бессрочные» на Poinbase использует CRC на вашем счёте в качестве маржи, с плечом до {PerpPscLev}× по PSC и {PerpSparkLev}× по SPARK; только изолированная маржа, одна позиция за раз (без одновременного лонга и шорта); увеличить её можно только пополнением маржи. Исполнение хуже котировки (чем крупнее ордер, тем больше разница, как и в спотовом пуле), а открытие и закрытие позиций требуют комиссии. Ликвидация проверяется только ночью по средней цене за день: при снижении средств ниже {PerpMaint:%} от номинального объёма маржа сгорает. Также каждую ночь начисляется ставка финансирования: когда цена выше средней за 7 дней, лонги платят шортам.¶Позиции других трейдеров тоже ликвидируются вместе с рынком: после большинства ликвидаций остаётся маржа, которая уходит в страховой фонд, а чем резче движение, тем больше позиций уходит в банкротство, и разницу покрывает фонд; после сильного движения за день газета сообщает, сколько трейдеров ликвидировано и на какую сумму (с учётом вашей позиции). Если убыток от ликвидации превышает маржу, разницу покрывает страховой фонд; когда он иссякает (к этому приводит только экстремальная волна банкротств по всему рынку), к прибыльным позициям применяется автоделевериджинг с потерей половины прибыли; всё, что сверх этого, превращается в ваш долг. Долг растёт на {PerpDebtInterest:%} в день, каждую ночь гасится в первую очередь из средств CRC на счёте, блокирует новые позиции и вывод средств, а через {PerpDebtDays} дней товары в вашем магазине изымаются в счёт его покрытия; оставшийся дефицит списывается, а счёт бессрочных фьючерсов блокируется на {PerpBanDays} дней.§Магазин: только монеты, без CRC, на {BmPremium:%} дороже обычных каналов, с дополнительной наценкой на высокотехнологичные товары и видеокарты; уплаченные монеты передают продавцу свою долю загрязнения, а на товарах нет метки краденого; видеокарты могут быть поддельными — проверяйте сами.¶Покупки в магазине: выберите продавца слева, полка — справа; после нажатия «Купить» на панели оплаты настраиваются количество, способ оплаты и монета. Каждый тип продавцов принимает свои монеты: оборудование и технологии — PSC и CRT; оружие, медикаменты, химикаты, документы, предметы роскоши и частные продавцы — CRT и приватную монету; сельское хозяйство, животноводство, водоснабжение и пивоварение — PSC и CRA; спот платформы — PSC, CRT и CRA. Если у вас нет нужной монеты, используйте встроенный автообмен: она обменяет другую монету из кошелька с проскальзыванием {BmAutoSwapSlip:%} за одну подпись; либо заранее обменяйте монеты на DEX сами с гораздо меньшим проскальзыванием, но это лишнее действие. Комиссия за размещение тоже оплачивается монетой, которую выбирают при оплате.¶Корзина магазина: нажатие «Купить» на полке добавляет товар в корзину; плавающая корзина в правом нижнем углу показывает количество товаров и открывает оформление заказа. При оформлении заказа слева отображается корзина (товары сгруппированы по продавцам, можно менять количество, удалять позиции; для продавцов, допускающих это, доступен выбор: эскроу или досрочная выплата), а справа — оплата: у каждого продавца свой адрес получателя, поэтому оплата производится отдельно каждому продавцу — выберите принимаемую им монету, создайте счёт и переведите средства из кошелька; либо используйте автообмен из другой монеты в кошельке (с доплатой {BmAutoSwapSlip:%} за проскальзывание) с одной подписью за продавца.§Заказы и продажа: заказы дешевле спота, но доставка занимает несколько дней и посылку могут перехватить. Торговцы продают по категориям со своими ценовыми коэффициентами; заказ от {BmBulk1Count} шт. даёт скидку {BmBulk1Discount:%}, от {BmBulk2Count} шт. — {BmBulk2Discount:%}. Случайно появляется оптовый торговец с минимальными ценами, но время ожидания — {BmBulkDays} дней. Эскроу стоит {BmEscrowFee:%}: средства выплачиваются при получении и возвращаются, если продавец сбежит. Досрочная выплата даёт дополнительную скидку {BmAdvanceDiscount:%}, но мошенник заберёт деньги себе; её принимают только продавцы с опытом от {BmAdvanceMinTrades} сделок. Сама платформа может совершить рагпул, её может захватить Служба безопасности, или продавца могут арестовать — тогда ваши заказы отследят и запишут преступление в досье. Слухи на форуме могут служить предупреждением. Перехваченная посылка иногда оборачивается визитом Службы безопасности: подпись сразу фиксирует преступление и ведёт к конфискации товара; отказ стоит лишь потерянной оплаты.¶Продажа: на вкладке магазина «Продажа» выставляйте контрабанду, высокотехнологичные товары и видеокарты со склада с ценой от {BmSellMin}x до {BmSellMax}x к справочной. Чем выше множитель, тем дольше продажа (срок в днях: ниже {BmSellFastMult}x — около {BmSellDaysFast}, {BmSellDay1Mult}x — около {BmSellDays1}, {BmSellMax}x — около {BmSellDaysMax}), а также выше шанс и доля «грязных» средств в выплате (этот показатель также растёт от объёма продаж за последние 7 дней); у краденых товаров доля «грязных» средств равна их уровню краденого (выплата × уровень %). Вкладка «Продажа» открывается на витрине с выставленными товарами, а «Добавить товары» готовит новые: одинаковые товары объединяются, кнопки − и + задают количество, множитель выбирается слева, и товар выставляется только после оплаты комиссии за размещение кнопкой «Полка»; у всех единиц одного товара один множитель, чтобы изменить его, сначала снимите всё; одновременно не более {BmMaxKinds} видов и {BmMaxStack} единиц каждого, комиссия за размещение: {BmListFee:%} за единицу; с витрины товары можно снять, они вернутся на склад, а комиссия не возвращается; «Принимаемые монеты» на витрине задают, какие монеты вы принимаете: каждая дополнительная монета добавляет каждую ночь ещё один раунд продажи (в случайном порядке, с разным числом покупателей у разных монет), так что чем больше монет, тем быстрее продажа, а выплата приходит в монете выигравшего раунда; комиссия платформы: {BmCommission:%}, перед отправкой в кошелёк выплата удерживается (дней: {BmSaleHold}). Поддельная видеокарта может быть раскрыта покупателем и возвращена, что ударит по рейтингу; если платформа совершит рагпул, выставленный товар и невыплаченные деньги будут потеряны.§Рынки предсказаний (страница Web3 «Прогнозы», день: с {PredictUnlockDay}): каждый рынок — это вопрос «да/нет» о событиях, определяемых случайным выбором или расписанием самой игры: появление новости, начало операции фракции, чистота воды на завтра, цена PSC. Рынок открыт до начала окна и рассчитывается ночью в последний день окна. Покупайте «Да» или «Нет» за CRC со своего ончейн-кошелька (вызов контракта: подписать на кошельке; позиция закрепляется за подписавшим кошельком); цена отражает вероятность по оценке рынка и растёт по мере покупки; каждая победная доля приносит 1 кредит; комиссия {PredictFee:%} за сделку; у каждого рынка есть лимит позиции. Выигрыш наследует долю «грязных» средств от ставки.¶Записки со слухами и перки фракций позволяют заранее узнать о грядущем событии; ставка «Да» на таком рынке считается инсайдерской. Инсайдерские ставки выплачиваются как обычно, но полиция подозревает инсайдерскую сделку: при расчёте или продаже выплата по инсайдерским долям помечается как «грязные» средства на кошельке-получателе. Если за окно отсутствуют игровые данные (например, вы пропустили ночной расчёт), рынок аннулируется, а ставка возвращается.§Реакция цен на новости: каждую ночь все открытые рынки смещаются наполовину к справедливой вероятности на основе публичной информации с небольшой случайной погрешностью. Тот, кто первым прочитает газету, записку со слухом или активирует фракционную привилегию, может купить раньше и продать после скачка, не дожидаясь расчёта. Список подсказок на панели рынка показывает всё, что вам известно: расписание, перезарядки, день халвинга, недавние значения газа, уровень резерва CRA и анонсы эры асик-майнеров.¶Закономерности для расчёта: фракционные операции запускаются при достижении скрытых порогов влияния (например, для зачистки требуется Служба безопасности >= 20 и Чёрный рынок >= 40, при этом показатель Службы безопасности снижается на 20); газ колеблется по 7-дневному циклу; за неделю до халвинга ценовой якорь ежедневно растёт; запланированные зачистки и отключения энергии сдвигают якорь, но цена на рынке не отражает это заранее; чем быстрее истощается резерв (чем больше средств в стейкинге), тем раньше CRA выдаёт предупреждение; рынок цены PSC можно сдвинуть собственными крупными ордерами. Торговец информацией (доступен при достаточной репутации на Чёрном рынке) продаёт сводку обстановки (пять показателей влияния и доступные фракциям действия за CRT) и три уровня инсайдерских сведений (только по уже предрешённым фракционным операциям и эре асик-майнеров; точность растёт с уровнем, цена зависит от размера рынка; некоторые наводки ложные и говорят обратное правде); ставка по наводке считается инсайдерской. Объём рынков растёт со временем, а неверная ставка означает потерю всей суммы — не ставьте всё на один рынок.§Проверка манипуляций: ваши крупные спотовые ордера на Poinbase сдвигают цену относительно естественного уровня (величина сдвига угасает каждую ночь по мере возврата цены; это видно в подсказке рынка). Если сдвиг превышает {ManipFree:%} и вы получаете прибыль от движения цены (победа на рынке цены PSC в направлении сдвига или закрытие бессрочного фьючерса с прибылью в этом направлении), вас могут раскрыть: чем сильнее сдвиг, тем выше шанс (максимум {ManipMax:%}). При раскрытии выплата всё равно начисляется: выплата по предсказанию становится «грязными» средствами на кошельке, а прибыль по фьючерсу — «грязными» средствами на счёте Poinbase, при этом газета сообщает о расследовании.¶«Грязные» средства не могут превышать текущую стоимость кошелька: при добавлении «грязи» излишек заносится в дело как мошенничество с долей {PredictFraudShare:%}, до {PredictFraudCap} за раз. Этому правилу подчиняются как инсайдерские сделки, так и манипуляции. Схема «шорт с последующим сбросом» не гарантирует доход: проскальзывание фьючерса в обе стороны и спотовые сделки в оба конца часто обходятся дороже всей прибыли от шорта.§Схема Понци (вкладка «Доходность» → «Запуск схемы», с игрового дня {PonziMinDay}, раз на одно сохранение): выберите дневную ставку ({PonziRates[0]:%}-{PonziRates[4]:%}) и оплатите расходы на рекламу для запуска (запуск и рагпул — это вызовы контракта, которые нужно подписать на кошельке). Жители Нижнего уровня вносят CRC с учётом ставки и вашей репутации на Нижнем уровне; чем выше процент, тем быстрее приток вкладчиков. Каждую ночь проценты выплачиваются сперва из новых депозитов, а затем из кошелька создателя схемы; если вы не можете покрыть выплаты, начинается массовый вывод вкладов и схема рушится. Каждую ночь из пула выводится {PonziWithdraw:%}; чем больше пул и выше процент, тем вероятнее донос, который также ведёт к краху. При крахе средства пула конфискуются. Вы можете совершить рагпул и забрать пул в любой момент (для подтверждения нажмите дважды): средства переводятся на кошелёк создателя полностью «грязными» (их придётся отмыть перед выводом). И рагпул, и крах схемы фиксируются в досье как мошенничество и обнуляют вашу репутацию на Нижнем уровне. Строка «Риск доноса» показывает уровень этого риска.§Мошенничество: шпильки — иногда при открытии цену резко задирают или сбивают на {WickMin:%}-{WickMax:%}; к ночи большая часть откатывается, но некоторые движения реальны; маркировочная цена бессрочных фьючерсов учитывает лишь половину, так что не паникуйте и не сливайте на шпильке.¶Аирдропы (страница Web3 «Аирдропы») — для каждого аирдропа сначала нужно авторизовать кошелёк (подписать один контракт авторизации), затем подписать получение; перед авторизацией проверьте объём одобрения: настоящие аирдропы не требуют одобрений или просят скромное на пару десятков; безлимитное одобрение или одобрение намного больше награды — это фишинг, часто под похожим именем (0 вместо o, 1 вместо l), и через ночь-другую эти монеты спишут из кошелька. Одобрения перечислены справа на странице аирдропов и могут быть отозваны подписью, после чего украсть ничего нельзя.¶Сторонние пулы доходности (страница «Доходность», вкладка «Доходные пулы») — {YieldRates[0]:%}-{YieldRates[2]:%} в день; видны резерв, наличие таймлока и аудита, но не то, мошенничество ли это: чем выше ставка, тем вероятнее рагпул; таймлок и аудит снижают риск. Честный пул закрывается и возвращает депозит, если резервов не хватает на выплату процентов; мошеннический пул может исчезнуть в любую ночь. Вывод из пулов с таймлоком занимает {YieldLockDays} дней.¶Фальшивая поддержка — человек у стойки представляется поддержкой Poinbase и просит перевести CRC на «безопасный адрес»: сотрудники Poinbase не приходят лично и никогда не требуют переводов. Поддельные переводы — покупатель, который платит монетами и с порога говорит «уже отправил, вот скриншот, отдавай товар», не платит никогда; честные покупатели говорят, что подтверждение в сети занимает время.§Графики: на спотовой странице Poinbase и торговой странице Web3 можно переключаться между дневными свечами каждой монеты (на странице бессрочных фьючерсов показан текущий контракт, на рынке предсказаний — PSC): зелёный — рост, красный — падение; жёлтая линия — 7-дневная скользящая средняя (ставка финансирования бессрочных фьючерсов рассчитывается по ней); столбцы внизу — объём (серый — рынок, бирюзовый — вы: учитываются спот, DEX, минт/сжигание, обмен Ponero и открытие/закрытие бессрочных фьючерсов). Чем сильнее движение, тем активнее торгует рынок; шпильки оставляют длинные тени.§Связь с сюжетом: выбор в сюжетных линиях игры меняет этот рынок; на следующий день об этом пишут в газете, а рынку требуется несколько дней на реакцию. Улики Серпико — Революционерам: резерв CRA пополняется, шанс краха снижается вдвое на {StorySecDays} дн., а SPARK растёт на {StorySerpicoSpark:+%} за {StorySparkNights} ноч.; Чёрному рынку: шанс депега CRT и предательства снижается вдвое; Службе безопасности: в течение {StorySecDays} дн. проверки вывода, санкции против миксеров и контроль манипуляций станут строже. Элеонора сливает накопитель: шанс списания активов кастодианом CRC удваивается, а SPARK растёт на {StoryLeakSpark:+%}; возвращает: шанс депега CRC снижается вдвое. Офицер Лунь арестован: проверки вывода и контроль манипуляций строже в течение {StoryLunDays} дн.¶Оператор миксера Тумблер (после открытия миксера, с дня {TumblerMinDay}): он зайдёт несколько раз и в итоге попросит спрятать накопитель с ключами. Спрятать и вернуть: комиссии миксера снизятся вдвое, пул анонимности вырастет, плюс подарок; но накопитель считается как Контрабанда, и если его найдут при обыске, это пойдёт в ваше досье. Донести на него: награда и Репутация у Службы безопасности, а миксер закроется (монеты внутри вернутся). Продать Чёрному рынку: сумма в CRT (половина — «Грязные» средства) и Репутация у Чёрного рынка, после чего комиссии миксера вырастут, а риск нарваться на Рагпул повысится.¶После Тумблера: между вторым и третьим визитом придёт Агент безопасности и спросит, заходил ли тот к вам. Признаться: Репутация у Службы безопасности +{TumblerAgentSecRep}; но если после этого спрятать накопитель, агент придёт с обыском за день до возвращения Тумблера и, если найдёт его, конфискует и запишет в досье нарушение: Контрабанда. Если ключ окажется у Службы безопасности (донос, накопитель изъят или его нет у вас к его приходу), записи миксера восстанавливаются: весь смытый с выплат миксера след за последние {TumblerLeakDays} дн. возвращается на исходные кошельки, а сумма сверх баланса кошелька пойдёт в досье как Мошенничество. Донос приведёт к суду: на вердикт можно ставить на Рынке предсказаний, а газета ежедневно освещает заседания; если его оправдают, он отомстит. Если продать накопитель Чёрному рынку, через {TumblerBmRugMin}–{TumblerBmRugMax} дн. произойдёт Рагпул, все монеты в обработке миксера пропадут, а Тумблер также отомстит. Спрятать накопитель и вернуть: накануне облавы Службы безопасности он предупредит вас. Через {TumblerRebrandDays} дн. после закрытия миксер перезапустится под новым именем; часть из них — ловушки Службы безопасности, и каждая выведенная монета будет помечена. Остерегайтесь подозрительно низких комиссий.§Миксер и приватная монета: выберите монету, сумму и число раундов; каждый раунд взимает комиссию и снижает загрязнение, число раундов равно дням ожидания, а монеты возвращаются на тот же адрес; чем больше сумма депозита, тем хуже очистка.¶Обмен приватной монеты (страница торговли Web3, требуется репутация на чёрном рынке): Ponero — приватная монета, и обмен на неё снимает загрязнение с этого объёма средств; комиссия {PoneroFee:%} в каждую сторону, действует суточный лимит; монета, полученная при обмене из Ponero, происхождения не имеет, поэтому проверка при выводе строже.§OTC-клиенты (улучшение сети «OTC-стойка»): у Чёрной лампы появляется ещё одна цель — OTC-клиент (двойной клик по лампе для переключения). Она загорается только в витрине и привлекает людей так же, как оригинальная Чёрная лампа — в зависимости от числа ламп и вашей Репутации на Чёрном рынке; в комплект улучшения входит одна лампа. Половина клиентов хочет продать вам монеты, а половина — купить их у вас, всегда за наличные. После того как клиент озвучит предложение, выберите «Обсудить за терминалом»: Торговый терминал откроет страницу торговли за стойкой, пока клиент ждёт у стойки. Сделку можно заключить частично: на 25% / 50% / 75% / 100% или введя сумму вручную, при этом сумма наличных пересчитывается пропорционально; выберите «Пас» или прогоните клиента, чтобы отказаться. Объёмы сделок растут вместе с арендой.¶Клиенты-продавцы: при сделке вы платите наличные, и монеты отправляются прямо в подключённый кошелёк. Если на станции что-то происходит, монеты обычно связаны с событием: CRT во время войны банд или зачистки, PSC во время рейда Революционеров на Верхний уровень или беспорядков на Нижнем уровне; такие монеты полностью «грязные» (на всю рыночную стоимость). В остальное время случайно предлагаются PSC, CRT или CRA, при этом доля «грязи» составляет {OtcTaintMin:%}–{OtcTaintMax:%} от стоимости: чем «грязнее» монеты, тем они дешевле (запрашиваемая цена снижается с {OtcCutClean:%} до {OtcCutDirty:%} стоимости). Клиент не говорит, насколько монеты «грязные»: на странице сделки виден его адрес, а кнопка «Проверить» открывает его историю в Обозревателе — чем больше средств пришло из миксера, платформы Чёрного рынка или мошеннических адресов, тем монеты «грязнее». После открытия стойки Ponero иногда появляются желающие продать Ponero: эти монеты не несут «грязи», но стоят дороже. Добавленная «грязь» не может превышать стоимость кошелька; излишек заносится в протокол как мошенничество. Порой клиент оказывается агентом под прикрытием: согласившись на сделку, вы потеряете наличные, а в протокол запишется сбыт краденого (во время зачисток такое случается чаще).¶Клиенты-покупатели: они могут запросить любую монету и предлагают рыночную цену со случайной наценкой (от {OtcBidMin:+%} до {OtcBidMax:+%} к рыночной цене, так что она может быть и ниже рынка); стоит ли продавать — решать вам. При сделке открывается PLEDGER с уже заполненными адресом и суммой; нажмите «Подписать» и дождитесь подтверждения: как только транзакция пройдёт, клиент отдаст наличные и уйдёт. Если клиент уйдёт до того, как вы подпишете транзакцию, сделка аннулируется. Продаваемые вами монеты не проверяются на «грязь».¶Собственный миксер (страница в Серой сети, открывается вместе с «OTC-стойкой»): внесите средства и запустите работу — клиенты будут вносить «грязные» монеты, а через несколько дней получать выплаты, пока вы удерживаете комиссию. Каждый раунд смывает часть «грязи» в зависимости от набора анонимности, состоящего главным образом из вашего капитала и неснятой прибыли (монеты клиентов в пути учитываются лишь частично), поэтому чем больше внесено средств, тем чище результат. Клиенты сравнивают комиссию плюс оставшуюся на выплатах «грязь» с миксером Тумблера и идут туда, где дешевле; чем выше Репутация на Чёрном рынке, тем больше клиентов приходит (отображаемая репутация — это доля «грязи», оставшаяся в недавних выплатах). Доход от комиссий остаётся в пуле и при выводе считается полностью «грязным»; капитал возвращается с собственной «грязью». Чем больше трафик, тем сильнее подозрения (крупный пул скрывает монеты чуть лучше, но и привлекает больше клиентов, привлекая больше внимания в целом), а с ними растёт и риск рейда Службы безопасности: капитал, прибыль и монеты клиентов конфискуются, в протокол заносится сбыт краденого, а миксер закрывается на {OwnMixSeizeDays} дн. По ночам во время работы миксера депозит может внести офицер под прикрытием, что также заносится в протокол как сбыт краденого. Вы можете устроить рагпул в любой момент: всё содержимое, включая монеты клиентов, достанется вам полностью «грязным», в протокол занесётся мошенничество, Репутация на Чёрном рынке упадёт, а миксер закроется навсегда.§Проверка соответствия при выводе (на экране не отображаются ни лимит, ни шанс проверки; правила таковы): вывод CRC с Poinbase в кредиты оценивается относительно текущей аренды — разовый вывод свыше {AmlBigRents}x аренды или сумма свыше {AmlCumRents}x аренды за {AmlWindowDays} дней повышает шанс проверки пропорционально превышению; если доля «грязи» составляет хотя бы {AmlTaintRatio:%} от суммы, к шансу добавляется «доля × {AmlTaintMult}»; монеты, недавно выведенные из миксера или с помеченного кошелька, добавляют {AmlMixerBonus:%}; максимальный шанс ограничен {AmlMaxChance:%}. При срабатывании: если доля «грязи» ниже {AmlHeavyRatio:%}, это лёгкое нарушение — «грязная» часть конфискуется, преступление не фиксируется; если {AmlHeavyRatio:%} и более, это тяжкое нарушение — «грязная» часть конфискуется, а сумма «грязи» заносится в досье как сбыт краденого. Если проверка не сработала, сумма поступает целиком. Комиссия за вывод составляет {ExchangeFee:%}, а доход сверх себестоимости облагается налогом {TaxRate:%}. Дробление на мелкие суммы, вывод в течение нескольких дней и предварительное отмывание снижают риск, но лимиты и вероятность нигде не указаны — оценивайте их сами.¶Перед уничтожением кошелька переведите монеты сами, а также заранее закройте позиции и заберите депозиты: всё, что останется внутри, пропадёт вместе с кошельком." +guide.web3.text,"Банк и торговля: страница «Банк» доступна только для чтения и отображает наличные, аренду и CRC на счёте Poinbase. Страница Poinbase «Средства» управляет депозитом и выводом; сначала выберите монету: CRC можно переводить через банковский счёт или кошелёк, все остальные монеты — только через кошелёк. Депозит с банковского счёта конвертирует кредиты в CRC на счёте Poinbase; вывод на банковский счёт конвертирует CRC обратно в кредиты без проверки (на счёте Poinbase хранятся исключительно чистые деньги). Для вывода на кошелёк требуется адрес получателя и несколько подтверждений сети; комиссия за газ фиксирована по обычному тарифу и списывается из отправляемой монеты. Неверный формат адреса или контрольная сумма отклоняются; если адрес отформатирован верно, но никем не используется, монеты будут потеряны навсегда.¶Торговля: PSC расшифровывается как Probably Stolen Coin — это монета, добываемая видеокартами и асик-майнерами. На спотовом рынке Poinbase есть две пары: PSC/CRC и SPARK/CRC, переключающиеся вслед за монетой, выбранной на графике. Покупка и продажа задаются как количество торгуемой монеты; в предпросмотре отображается отдаваемая или получаемая котируемая монета, средняя цена включает комиссию, а проскальзывание — нет.¶Страница торговли Web3 позволяет обменивать любые две монеты, всегда через CRC: если CRC находится на одной из сторон, используется один пул, иначе — два пула с двумя комиссиями и суммирующимся проскальзыванием; в предпросмотре отображаются полученная сумма, пройденные пулы и потери. Обмен стейблкоинов (CRT или CRA к CRC) использует стабильные пулы: комиссия {StableFee:%} и почти нулевое проскальзывание вблизи привязки; при потере привязки ликвидность падает, а при крахе она полностью изымается, и проскальзывание резко возрастает.§Аппаратные кошельки: монеты в блокчейне хранятся на аппаратных кошельках PLEDGER, на каждом из которых ведутся свои балансы и учёт «грязных» монет (для каждой монеты отслеживается, сколько из них «грязные»; см. «Загрязнение»). Кошелёк — это предмет: перетащите его на торговый терминал, чтобы загрузить. Открывайте его на странице терминала «Кошельки»; подключение и отключение выполняются в правом верхнем углу терминала. Торговля на странице Web3, а также магазин и миксер на странице «Серая сеть» используют подключённый кошелёк; без кошелька или подключения они доступны только для просмотра, и все балансы показывают 0. Покупатели, расплачивающиеся монетами, переводят оплату на подключённый кошелёк.¶Платежи (магазин, миксер, стойка Ponero, плата за листинг) начинаются со счёта на терминале; введите адрес получателя на кошельке и удерживайте ✓, чтобы подписать. Последние два символа адреса — контрольная сумма, поэтому опечатка в один символ обычно отслеживается; изредка адрес случайно оказывается валидным, и тогда монеты уходят на адрес, которым никто не пользуется. Обмены на DEX также требуют подписи на кошельке.¶Poinbase — это кастодиальный аккаунт; депозиты отправляются с кошелька на депозитный адрес Poinbase (только PSC, CRC и SPARK; комплаентная биржа не принимает ни CRT с Чёрного рынка, ни CRA Революционеров, и кошелёк блокирует их отправку на депозитный адрес; вносить можно только чистые монеты, см. «Загрязнение»), а вывод средств оформляется на странице Poinbase «Средства». «Обозреватель» на странице кошельков позволяет искать переводы по адресу и показывает только фактически совершённые транзакции: любое движение средств на ваших кошельках и с них (переводы, обмены на DEX и другие вызовы контрактов, выплаты асик-майнеров, вывод средств, переводы от других лиц); Ponero — приватная монета и никогда здесь не отображается. Дополнительные аппаратные кошельки продаёт Доктор Джексон; перетащите кошелёк на торговый терминал, чтобы добавить его (не более {WalletMax}). В магазине есть варианты подешевле. Ненужный кошелёк можно уничтожить на странице кошельков; монеты на нём будут потеряны навсегда, как и всё, что будет отправлено на этот адрес позже.¶При переводах взимается комиссия за газ: медленная, обычная или быстрая. Цены на газ поднимаются и падают примерно в течение недели; при перегрузке сети комиссии за газ растут, а медленные транзакции могут быть удалены из мемпула. Проверяйте адрес полностью перед отправкой.§Стейкинг: CRA в стейкинге пула Революционеров приносит доход по дневной ставке, который капитализируется в стейк; вывод требует предварительного запроса и четырёх дней ожидания — без начисления процентов во время ожидания и без возможности забрать раньше срока. CRA обеспечен частично: каждый CRA поддерживают резерв CRC, который держат Революционеры, и балансовый токен SPARK; покрытие резерва и ставка обеспечения показаны на странице стейкинга. Проценты выплачиваются новыми необеспеченными CRA, что разбавляет покрытие резерва, и тем быстрее, чем больше в стейкинге; при слишком низком покрытии Революционеры снижают ставку. Революционеры иногда присваивают резерв, сначала идут слухи: это и есть предупреждение. Если после этого покрытие падает ниже {CraCrashRatio:%}, наступает крах: CRA обесценится за три дня, и четырёхдневная разблокировка окажется слишком медленной; выше этого порога будет лишь дисконт, а деньги от ограблений Верхнего уровня постепенно восстанавливают резерв.¶Официальный минт: вносите CRC и SPARK (пропорция по текущей ставке обеспечения, предпросмотр показывает нужные суммы), чтобы создать CRA; очередь {CraMintDaysMin}–{CraMintDaysMax} дней, созданный CRA сразу попадает в стейкинг. Сжигание меняет CRA обратно на CRC и SPARK, ожидание такое же, как у разблокировки; при нехватке резерва доля CRC уменьшается по покрытию. Находящиеся в очереди минт и сжигание Революционеры могут не выполнить целиком: ночная вероятность равна величине, на которую цена CRA ниже 1, умноженной на {CraRugPerDepeg}; если цена не ниже 1, этого не случится.¶В стейкинг можно вносить CRA, CRC, CRT и SPARK: последние три сначала обмениваются на CRA на вторичном рынке по рыночной цене (через CRC, с комиссией и проскальзыванием). Цена SPARK сильно колеблется и рушится при крахе. Стейкинг, минт и сжигание — это вызовы контракта, требующие подписи на кошельке.§Асик-майнеры: асик-майнеры RatDigg (M1 / M2 / M3) — это автономные устройства со значительно более высоким хешрейтом, чем у видеокарт, и меньшим энергопотреблением на единицу хеша; для работы им нужна батарея, они поддерживают модули и не занимают слоты майнинг-фермы. Они продаются только у дилеров асик-майнеров в магазине и требуют определённой репутации на Чёрном рынке (M1 {AsicRepM1}, M2 {AsicRepM2}, M3 {AsicRepM3}); иногда бывают подержанные. Если асик-майнер сгорит, его можно восстановить, перетаскивая на него электронные компоненты по порядку; после ремонта его состояние будет на {AsicRepairHealthCut} ниже. В промежутке между днями {EraMin} и {EraMax} наступает «эра асик-майнеров», о которой за пару дней предупреждает газета: расходы крупных ферм на энергию снижаются вдвое, хешрейт сети растёт, доход от видеокарт размывается, слабые видеокарты почти перестают зарабатывать, тогда как асик-майнеры продолжают эффективно работать.¶Адрес выплат: для каждого устройства (майнинг-ферм и асик-майнеров) адрес выплат настраивается в его собственном окне; добыча отправляется туда каждую ночь пропорционально хешрейту, поэтому две разные машины могут выводить доход на разные адреса. Изначально адрес не задан; если он не указан или привязанный кошелёк уничтожен, эта часть добычи теряется, поэтому обновляйте адрес при смене кошелька.¶Турбоускорители работают с майнинг-фермами и асик-майнерами по тем же правилам, что и с другими машинами: каждое использование запускает один дополнительный цикл, то есть мгновенно отрабатывает целую ночь майнинга. Этот цикл потребляет энергию за одну ночь, доход рассчитывается по текущему хешрейту сети и поступает на адрес выплат этого устройства, а также учитывается один цикл износа и проверка на отказ; при этом ночью устройство продолжает добывать как обычно.§Бессрочные фьючерсы: вкладка «Бессрочные» на Poinbase использует CRC на вашем счёте в качестве маржи, с плечом до {PerpPscLev}× по PSC и {PerpSparkLev}× по SPARK; только изолированная маржа, одна позиция за раз (без одновременного лонга и шорта); увеличить её можно только пополнением маржи. Исполнение хуже котировки (чем крупнее ордер, тем больше разница, как и в спотовом пуле), а открытие и закрытие позиций требуют комиссии. Ликвидация проверяется только ночью по средней цене за день: при снижении средств ниже {PerpMaint:%} от номинального объёма маржа сгорает. Также каждую ночь начисляется ставка финансирования: когда цена выше средней за 7 дней, лонги платят шортам.¶Позиции других трейдеров тоже ликвидируются вместе с рынком: после большинства ликвидаций остаётся маржа, которая уходит в страховой фонд, а чем резче движение, тем больше позиций уходит в банкротство, и разницу покрывает фонд; после сильного движения за день газета сообщает, сколько трейдеров ликвидировано и на какую сумму (с учётом вашей позиции). Если убыток от ликвидации превышает маржу, разницу покрывает страховой фонд; когда он иссякает (к этому приводит только экстремальная волна банкротств по всему рынку), к прибыльным позициям применяется автоделевериджинг с потерей половины прибыли; всё, что сверх этого, превращается в ваш долг. Долг растёт на {PerpDebtInterest:%} в день, каждую ночь гасится в первую очередь из средств CRC на счёте, блокирует новые позиции и вывод средств, а через {PerpDebtDays} дней товары в вашем магазине изымаются в счёт его покрытия; оставшийся дефицит списывается, а счёт бессрочных фьючерсов блокируется на {PerpBanDays} дней.§Магазин: только криптовалюта, без CRC, на {BmPremium:%} дороже обычных каналов с дополнительной наценкой на высокотехнологичные товары и видеокарты; уплаченные монеты забирают с собой соответствующую долю «грязных» монет, а товары не несут метки краденого; видеокарты могут быть поддельными, проверяйте их сами.¶Покупки в магазине: выберите продавца слева, витрина находится справа; после нажатия «Купить» на панели оплаты задаются количество, способ оплаты и монета. Каждая категория продавцов принимает разные монеты: оборудование и технологии принимают PSC и CRT; продавцы оружия, препаратов, химикатов, документов, предметов роскоши и частные продавцы — CRT и приватную монету; фермерство, животноводство, водоснабжение и пивоварение — PSC и CRA; спот платформы — PSC, CRT и CRA. Если у вас нет нужной продавцу монеты, воспользуйтесь встроенной автоконвертацией: она обменивает другую монету из кошелька с проскальзыванием {BmAutoSwapSlip:%} и подписывается один раз; либо сначала обменяйте монеты на DEX вручную — с гораздо меньшим проскальзыванием, но с дополнительным действием. Плата за листинг также оплачивается выбранной монетой при расчёте.¶Корзина магазина: нажатие «Купить» на витрине добавляет товар в корзину; плавающая корзина в правом нижнем углу показывает количество предметов и открывает оформление заказа. При оформлении заказа корзина отображается слева (сгруппирована по продавцам, количество можно изменять, товары удалять, а для поддерживающих продавцов доступен выбор: эскроу или досрочная выплата), а оплата — справа: у каждого продавца свой адрес получателя, поэтому оплата производится продавцу за продавцом — выберите монету, которую принимает этот продавец, сформируйте счёт и переведите средства с кошелька; либо используйте автоконвертацию другой монеты из кошелька (с дополнительным проскальзыванием {BmAutoSwapSlip:%}) и подпишите транзакцию один раз для этого продавца.§Заказы и продажа: заказы дешевле спота, но доставка занимает несколько дней и посылку могут перехватить; торговцы продают товары по типам со своим коэффициентом цены, от {BmBulk1Count} шт. действует скидка {BmBulk1Discount:%}, а от {BmBulk2Count} шт. — {BmBulk2Discount:%}; случайно появляется оптовый торговец с самыми низкими ценами, но срок ожидания — {BmBulkDays} дн.; эскроу стоит {BmEscrowFee:%}, выплачивается при доставке и возвращается при побеге продавца; досрочная выплата даёт дополнительную скидку {BmAdvanceDiscount:%}, но мошенник присвоит деньги себе, и на неё согласны только продавцы с числом сделок от {BmAdvanceMinTrades}; платформа сама может устроить рагпул или перейти под контроль Службы безопасности, либо продавца могут арестовать, после чего ваши заказы отследят и запишут улику; слухи на форуме могут служить предупреждением. Перехваченная посылка порой оборачивается визитом Службы безопасности: подпись сразу фиксирует улику и ведёт к конфискации товара, отказ стоит лишь уплаченных денег.¶Продажа: на вкладке «Продажа» выставляйте контрабанду, высокотехнологичные товары и видеокарты со склада по цене от {BmSellMin}x до {BmSellMax}x от базовой. Чем выше множитель, тем медленнее продажа (ниже {BmSellFastMult}x — около {BmSellDaysFast} дн., {BmSellDay1Mult}x — около {BmSellDays1} дн., {BmSellMax}x — около {BmSellDaysMax} дн.), и тем выше вероятность и доля «грязных» средств в выплате, которая также растёт от объёма продаж за последние 7 дней; краденые товары загрязняют выплату согласно уровню розыска (% розыска монет выплаты — «грязные»); вкладка «Продажа» открывает витрину выставленных товаров, а кнопка «Выставить ещё» подготавливает партию: одинаковые товары группируются, клавиши «−» и «+» задают количество, множитель выбирается слева, а товары выставляются только после оплаты пошлины кнопкой «На полку»; у всех единиц одного товара общий множитель, поэтому для его изменения сначала снимите их все; одновременно доступно до {BmMaxKinds} видов и до {BmMaxStack} шт. каждого, пошлина — {BmListFee:%} за единицу; товары можно снять с витрины и вернуть на склад, пошлина не возвращается; пункт «Принимаемые монеты» на витрине выбирает валюты к оплате: каждая дополнительная монета добавляет ночную проверку продаж (в случайном порядке, с разным числом покупателей на монету), поэтому приём большего числа монет ускоряет продажу, а выплата поступает в монете выигравшего раунда; комиссия {BmCommission:%}, выплата удерживается {BmSaleHold} дн. до поступления в кошелёк; поддельная карта может быть раскрыта покупателем и возвращена со снижением рейтинга; при рагпуле платформы выставленные товары и невыплаченные средства пропадают.§Рынки предсказаний (страница Web3 «Прогнозы», с игрового дня {PredictUnlockDay}): каждый рынок — это вопрос типа «да/нет» о событиях, которые игра определяет случайно или по расписанию: появление новости, начало операции фракции, чистота воды на завтра, цена PSC. Рынок открыт до начала временного окна, а расчёт происходит в ночь последнего дня окна. Покупайте «Да» или «Нет» за CRC из ончейн-кошелька (вызов контракта: подпишите на кошельке; позиция закрепляется за подписавшим кошельком); цена отражает предполагаемую рынком вероятность и растёт по мере покупки; каждая победная доля приносит 1 кредит; комиссия за сделку — {PredictFee:%}; на каждом рынке действует лимит позиции. Если вложенные CRC были частично «грязными», соответствующая доля выплаты также будет «грязной».¶Записки со слухами и бонусы фракций позволяют заранее узнать о событии; ставка «Да» на таком рынке считается инсайдерской ставкой. Инсайдерские ставки выплачиваются как обычно, но Служба безопасности подозревает инсайдерскую сделку: при расчёте или продаже выплата по инсайдерским долям помечается как «грязные» монеты в кошельке получателя. Если за период окна отсутствуют игровые данные (например, пропущен ночной расчёт), рынок аннулируется, а ставка возвращается.§Реакция цен на новости: каждую ночь все открытые рынки смещаются наполовину к справедливой вероятности на основе публичной информации с небольшой случайной погрешностью. Тот, кто первым прочитает газету, записку со слухом или активирует фракционную привилегию, может купить раньше и продать после скачка, не дожидаясь расчёта. Список подсказок на панели рынка показывает всё, что вам известно: расписание, перезарядки, день халвинга, недавние значения газа, уровень резерва CRA и анонсы эры асик-майнеров.¶Закономерности для расчёта: фракционные операции запускаются при достижении скрытых порогов влияния (например, для зачистки требуется Служба безопасности >= 20 и Чёрный рынок >= 40, при этом показатель Службы безопасности снижается на 20); газ колеблется по 7-дневному циклу; за неделю до халвинга ценовой якорь ежедневно растёт; запланированные зачистки и отключения энергии сдвигают якорь, но цена на рынке не отражает это заранее; чем быстрее истощается резерв (чем больше средств в стейкинге), тем раньше CRA выдаёт предупреждение; рынок цены PSC можно сдвинуть собственными крупными ордерами. Торговец информацией (доступен при достаточной репутации на Чёрном рынке) продаёт сводку обстановки (пять показателей влияния и доступные фракциям действия за CRT) и три уровня инсайдерских сведений (только по уже предрешённым фракционным операциям и эре асик-майнеров; точность растёт с уровнем, цена зависит от размера рынка; некоторые наводки ложные и говорят обратное правде); ставка по наводке считается инсайдерской. Объём рынков растёт со временем, а неверная ставка означает потерю всей суммы — не ставьте всё на один рынок.§Проверка манипуляций: ваши крупные спотовые ордера на Poinbase сдвигают цену от уровня, на котором она была бы без вас (сдвиг угасает каждую ночь по мере возврата цены; это видно в подсказке рынка). Когда сдвиг превышает {ManipFree:%}, если вы получаете прибыль от цены (победа на рынке цены PSC в направлении вашего сдвига или закрытие бессрочного фьючерса с прибылью в том же направлении), вас могут поймать: чем сильнее сдвиг, тем выше вероятность (максимум {ManipMax:%}). При поимке выплата всё равно проходит: выплата по предсказанию целиком помечается как «грязные» монеты; прибыль по бессрочному фьючерсу остаётся на счёте, но {PredictFraudShare:%} от неё записывается как улики мошенничества (не более {PredictFraudCap}); газета сообщает о расследовании.¶Схема «шорт и дамп» не гарантирует прибыль: проскальзывание бессрочного фьючерса в обе стороны и комиссии полного круга на споте часто стоят больше, чем приносит шорт.§Схема Понци (вкладка «Доходность», раздел «Выпуск»; с игрового дня {PonziMinDay}, одна на сохранение): выберите дневную ставку ({PonziRates[0]:%}-{PonziRates[4]:%}), оплатите маркетинг для запуска (запуск и рагпул — это вызовы контракта, подписываемые на кошельке), и жители Нижнего уровня будут вносить CRC в зависимости от ставки и вашей репутации на Нижнем уровне; чем выше ставка, тем быстрее они приходят. Каждую ночь проценты выплачиваются сначала из новых депозитов, затем из кошелька создателя; если вы не можете их покрыть, начинается набег вкладчиков и схема рушится; каждую ночь из пула выводится {PonziWithdraw:%}, и чем больше пул и выше ставка, тем вероятнее донос, который также ведёт к краху. При крахе пул конфискуется. Вы можете устроить рагпул в любой момент (нажмите дважды для подтверждения): пул перейдёт в кошелёк создателя, и все эти CRC будут «грязными» (отмойте их перед внесением на Poinbase). Рагпул и крах фиксируют в деле мошенничество и обнуляют вашу репутацию на Нижнем уровне. Строка «Слухи на улицах» указывает на риск доноса.§Мошенничество: шпильки — иногда при открытии цену резко задирают или сбивают на {WickMin:%}-{WickMax:%}; к ночи большая часть откатывается, но некоторые движения реальны; маркировочная цена бессрочных фьючерсов учитывает лишь половину, так что не паникуйте и не сливайте на шпильке.¶Аирдропы (страница Web3 «Аирдропы») — для каждого аирдропа сначала нужно авторизовать кошелёк (подписать один контракт авторизации), затем подписать получение; перед авторизацией проверьте объём одобрения: настоящие аирдропы не требуют одобрений или просят скромное на пару десятков; безлимитное одобрение или одобрение намного больше награды — это фишинг, часто под похожим именем (0 вместо o, 1 вместо l), и через ночь-другую эти монеты спишут из кошелька. Одобрения перечислены справа на странице аирдропов и могут быть отозваны подписью, после чего украсть ничего нельзя.¶Сторонние пулы доходности (страница «Доходность», вкладка «Доходные пулы») — {YieldRates[0]:%}-{YieldRates[2]:%} в день; видны резерв, наличие таймлока и аудита, но не то, мошенничество ли это: чем выше ставка, тем вероятнее рагпул; таймлок и аудит снижают риск. Честный пул закрывается и возвращает депозит, если резервов не хватает на выплату процентов; мошеннический пул может исчезнуть в любую ночь. Вывод из пулов с таймлоком занимает {YieldLockDays} дней.¶Фальшивая поддержка — человек у стойки представляется поддержкой Poinbase и просит перевести CRC на «безопасный адрес»: сотрудники Poinbase не приходят лично и никогда не требуют переводов. Поддельные переводы — покупатель, который платит монетами и с порога говорит «уже отправил, вот скриншот, отдавай товар», не платит никогда; честные покупатели говорят, что подтверждение в сети занимает время.§Графики: на спотовой странице Poinbase и торговой странице Web3 можно переключаться между дневными свечами каждой монеты (на странице бессрочных фьючерсов показан текущий контракт, на рынке предсказаний — PSC): зелёный — рост, красный — падение; жёлтая линия — 7-дневная скользящая средняя (ставка финансирования бессрочных фьючерсов рассчитывается по ней); столбцы внизу — объём (серый — рынок, бирюзовый — вы: учитываются спот, DEX, минт/сжигание, обмен Ponero и открытие/закрытие бессрочных фьючерсов). Чем сильнее движение, тем активнее торгует рынок; шпильки оставляют длинные тени.§Сюжетные связи: решения в сюжетных линиях игры меняют этот рынок; на следующий день об этом пишет газета, а рынку требуется несколько дней на реакцию. Доказательства Серпико переданы Революционерам: резерв CRA пополняется, шанс краха снижается вдвое на {StorySecDays} дн., а SPARK растёт на {StorySerpicoSpark:+%} за {StorySparkNights} ноч.; Чёрному рынку: шансы депега CRT и предательства при облавах снижаются вдвое; Службе безопасности: в течение {StorySecDays} дн. миксер чистит хуже (каждый раунд ×{StorySecMixClean}), а санкции против миксеров и проверки на манипуляцию ценой становятся строже. Элеонора сливает накопитель: шанс списания кастодианом CRC удваивается, а SPARK растёт на {StoryLeakSpark:+%}; возвращает: шанс депега CRC снижается вдвое. Офицер Лунь арестован: в течение {StoryLunDays} дн. проверки на манипуляцию ценой строже, а среди OTC-клиентов больше агентов под прикрытием.¶Оператор миксера Тумблер (после открытия миксера, начиная со дня {TumblerMinDay}): он приходит несколько раз и в итоге просит спрятать накопитель с ключами. Спрятать и вернуть: комиссии миксера снижаются вдвое, анонимный пул растёт, плюс подарок; но накопитель считается Контрабандой и пойдёт в дело, если его обнаружат при обыске. Донести на него: награда и Репутация у Службы безопасности, а миксер закроется (монеты внутри вернутся). Продать Чёрному рынку: выплата в CRT (половина — «грязные») и Репутация на Чёрном рынке, после чего комиссии миксера вырастут, а шанс рагпула увеличится.¶После Тумблера: между вторым и третьим визитами приходит Агент безопасности и спрашивает, заходил ли он в лавку. Признаться: Репутация у Службы безопасности +{TumblerAgentSecRep}; но если после этого спрятать для него накопитель, агент обыщет лавку за день до возвращения Тумблера, конфискует накопитель и запишет Контрабанду в дело, если найдёт его. Если ключ попадёт к Службе безопасности (вы донесли на него, накопитель изъят или его нет при его возвращении), записи микширования будут восстановлены: {PredictFraudShare:%} грязи, отмытой при выплатах миксера за последние {TumblerLeakDays} дн., пойдёт в дело как Мошенничество (до {PredictFraudCap}). Донос приведёт к суду: на приговор можно ставить на Рынке предсказаний, а газета ежедневно освещает заседания; если его оправдают, он отомстит. Если продать накопитель, Чёрный рынок устроит рагпул через {TumblerBmRugMin}–{TumblerBmRugMax} дн., все монеты в пути внутри миксера пропадут, и он также отомстит. Спрячьте накопитель и верните его, и он предупредит вас ночью накануне облавы Службы безопасности. Через {TumblerRebrandDays} дн. после закрытия миксер возобновит работу под новым именем; часть из них — ловушки Службы безопасности, и любая выведенная оттуда монета вернётся «грязной». Остерегайтесь подозрительно низкой комиссии.§Миксер и Приватная монета: выберите монету, укажите Сумму и число раундов; каждый раунд списывает комиссию и очищает часть «грязных» монет, число раундов равно дням ожидания, а монеты возвращаются на тот же адрес; чем больше Депозит, тем хуже очистка. Во время облав миксер может попасть под санкции; выплаты, приходящиеся на этот период, не очищаются и возвращаются полностью «грязными».¶Обмен приватных монет (страница торговли Web3, требуется Репутация на Чёрном рынке): Ponero — это Приватная монета; отдаваемые при обмене «грязные» монеты просто исчезают, а получаемые Ponero чисты; комиссия {PoneroFee:%} в обе стороны, а ввод и вывод делят общий дневной лимит: {PoneroDailyCap} кред.§OTC-клиенты (улучшение сети «OTC-стойка»): у Чёрной лампы появляется ещё одна цель — OTC-клиент (дважды нажмите на лампу для переключения). Она светится только в витрине и привлекает людей так же, как исходная Чёрная лампа — по числу ламп и вашей Репутации на Чёрном рынке; в улучшение входит одна лампа. Половина клиентов хочет продать вам монеты, половина — купить монеты у вас, всегда за наличные. Когда клиент озвучит предложение, выберите разговор у терминала: Торговый терминал откроет страницу сделки у стойки, пока клиент ждёт у прилавка. Можно закрыть сделку частично (25% / 50% / 75% / 100% или ввести сумму вручную), при этом сумма наличных пересчитывается пропорционально; выберите «Пас» или прогоните клиента, чтобы отказаться. Объём сделок растёт с повышением аренды.¶Клиенты-продавцы: при сделке вы платите наличными, а монеты поступают прямо в подключённый Кошелёк. Когда на станции что-то происходит, монеты обычно связаны с событием: CRT во время бандитских войн или облав, PSC во время рейда Революционеров на Верхний уровень или волнений на Нижнем уровне — все они «грязные». В остальное время это случайные PSC, CRT или CRA, из которых {OtcTaintMin:%}–{OtcTaintMax:%} — «грязные», причём чем «грязнее» монеты, тем они дешевле (запрашиваемая цена снижается с {OtcCutClean:%} до {OtcCutDirty:%} от стоимости). Клиент не говорит, насколько монеты «грязные»: на странице сделки виден его адрес, а кнопка «Проверить» открывает его историю в Обозревателе; чем больше поступлений из миксера, с площадок Чёрного рынка или мошеннических адресов, тем монеты «грязнее». После открытия точки Ponero изредка кто-то продаёт Ponero: они без меток грязи, но стоят дороже. Время от времени клиентом оказывается агент под прикрытием: согласие на сделку приведёт к потере наличных и записи о сбыте краденого в деле; во время облав такое случается чаще.¶Клиенты-покупатели: они могут запрашивать любую монету и предлагают рыночную цену со случайной наценкой (от {OtcBidMin:+%} до {OtcBidMax:+%} к рыночной цене, так что цена может оказаться и ниже рынка); стоит ли продавать — решать вам. При сделке открывается PLEDGER с заполненными адресом и суммой; нажмите «Подписать» и дождитесь подтверждения: как только оно придёт, клиент выплатит наличные и уйдёт. Если клиент уйдёт до подписи, сделка аннулируется. Проданные вами монеты на чистоту не проверяются.¶Собственный миксер (страница «Серая сеть», доступна вместе с «OTC-стойкой»): внесите депозит и запустите работу; клиенты вносят «грязные» средства, а через несколько дней получают выплаты, пока вы удерживаете комиссию. Каждый раунд отмывает часть грязи в зависимости от множества анонимности, которое в основном состоит из вашего капитала и неснятой прибыли (монеты клиентов в пути учитываются лишь частично), поэтому чем больше депозит, тем чище результат. Клиенты сравнивают комиссию плюс оставшуюся в выплатах грязь с миксером Тумблера и идут туда, где дешевле, а высокая Репутация на Чёрном рынке привлекает больше людей; отображаемая репутация — это доля грязи, оставшаяся в недавних выплатах. Доход от комиссий остаётся в пуле и при выводе будет полностью «грязным»; капитал возвращается со своей исходной долей «грязных» монет. Чем выше оборот, тем сильнее внимание властей (хотя большой пул прячет монеты чуть лучше, он привлекает больше трафика, так что в целом к нему больше внимания), а с ним растёт и риск облавы Службы безопасности: капитал, прибыль и монеты клиентов конфискуются, в дело записывается сбыт краденого, а миксер закрывается на {OwnMixSeizeDays} дн. Время от времени во время ночной работы депозит вносит агент под прикрытием, что также приводит к записи о сбыте краденого. Вы можете в любой момент устроить рагпул: все средства, включая монеты клиентов, достанутся вам полностью «грязными», в дело запишут Мошенничество, Репутация на Чёрном рынке упадёт, а миксер закроется навсегда.§Загрязнение: в каждом кошельке для каждой монеты отдельно учитывается количество «грязных» (отображается в балансах на странице «Кошельки» и на PLEDGER). «Грязные» монеты поступают от продающих вам монеты OTC-клиентов, покупателей при оплате монетами (соразмерно уровню розыска краденого), продаж краденого в Серой сети, инсайдерских сделок и манипуляций на рынке предсказаний, вывода из схемы Понци, доходов от собственного миксера, CRT от продажи накопителя с ключом и выплат из помеченных миксеров. Загрязнение действует только в кошельках Web3: при трате, переводе или оплате комиссий «грязные» монеты списываются пропорционально их доле; при обмене эта доля переносится на полученную монету (обмен CRT с 60% загрязнения на PSC даст 60% «грязных» PSC); Ponero не имеет загрязнения. Poinbase принимает только чистые монеты: по каждой монете можно внести на депозит максимум её чистое количество, а «грязные» остаются в кошельке; поэтому на счёте Poinbase и в банке всегда только чистые средства, а вывод в банк не проверяется — удерживается лишь комиссия {ExchangeFee:%} и налог {TaxRate:%} на прибыль сверх себестоимости. Перевод чистых монет в кошелёк не очищает «грязные». Способы избавиться от «грязных» монет: миксер, обмен через Ponero, продажа монет покупающим OTC-клиентам (проданные монеты не отслеживаются) и оплата в магазине Web3.¶Перед уничтожением кошелька обязательно переведите монеты сами, а также закройте позиции и выведите депозиты: всё оставшееся исчезнет вместе с кошельком." courier.odd1,...Посылка пришла. courier.odd2,(Его рука остаётся в кармане.) Подпиши здесь. courier.sign,Подписать @@ -362,6 +360,7 @@ hw.wallet.n,Кошелёк {0} hw.review.own,Свой кошелёк: {0} hw.review.poinbase,Адрес депозита Poinbase poin.deposit,Адрес депозита: {0} +poin.deposit.clean,Чистые монеты {0} для депозита: {1} wallets.count,Кошельки {0}/{1} wallets.col.name,Название wallets.col.addr,Адрес @@ -379,6 +378,7 @@ hw.paste,Вставить hw.copied,Адрес скопирован. hw.copied.addr,Скопировано: {0} hw.balance.frozen," (заморожено {0})" +hw.balance.dirty," (грязных: {0})" wallets.destroy,Уничтожить wallets.destroy.sure,Подтвердить wallets.destroyed,Уничтожен {0}: {1} @@ -550,7 +550,7 @@ predict.purity.rust,Вода верхнего уровня nightlog.predict.win,"Прогноз сбылся: «{0}», выплачено {1}." nightlog.predict.lose,"Прогноз не оправдался: «{0}», ставка {1} потеряна." nightlog.predict.void,"Прогноз аннулирован: «{0}», ставка {1} возвращена." -nightlog.predict.insider,"«{0}»: расчёт на {1}. Полиция подозревает инсайдерскую сделку; выплата помечена, «грязные» средства кошелька выросли на {2}." +nightlog.predict.insider,«{0}»: расчёт {1}. Полиция подозревает инсайдерскую сделку; {2} CRC помечено как «грязные». predict.tab.markets,Рынки predict.tab.intel,Информация predict.acct.crt,{0}: CRT {1} @@ -593,11 +593,10 @@ predict.brief.queued,{0}: операция запланирована predict.brief.none,{0}: нечего запускать predict.brief.can,{0}: можно начать {1} predict.clue.push,Вы сдвинули цену на {0}%: рискованно -nightlog.predict.manip,"«{0}»: расчёт на {1}. Регуляторы подозревают манипуляцию ценой; выплата помечена, «грязные» средства кошелька выросли на {2}." +nightlog.predict.manip,«{0}»: расчёт {1}. Регуляторы подозревают манипуляцию ценой; {2} CRC помечено как «грязные». news.manip.title,Биржа расследует подозрительные сделки news.manip.desc,Регуляторы сообщают: кто-то сдвинул цену крупными спотовыми ордерами и получил прибыль на деривативах и предсказаниях; причастные счета помечены. -taint.overflow,«Грязные» средства превысили стоимость кошелька; излишек {0} занесён в дело как мошенничество. -perp.manip,"Закрыто с прибылью {0}. Регуляторы подозревают манипуляцию ценой; прибыль помечена, «грязные» средства на счёте Poinbase выросли на {1}." +perp.manip,Позиция закрыта с прибылью {0}. Регуляторы подозревают манипуляцию ценой; в досье занесены улики мошенничества: {1}. web3.sub.ponzi,Доходность ponzi.h,Схема Понци ponzi.acct,Кошелёк эмитента {0}: CRC {1} @@ -688,7 +687,7 @@ scam.support.name,Поддержка Poinbase scam.support.1,"Здравствуйте, служба поддержки Poinbase. Мы зафиксировали подозрительный вход в ваш аккаунт, он был помечен." scam.support.2,"Пожалуйста, переведите сегодня {0} CRC на безопасный адрес {1} для проверки; средства вернут сразу после неё." scam.support.3,"Иначе аккаунт будет заморожен навсегда. Мне пора, не забудьте перевести." -predict.sold.caught,"Продано, получено {0}. Полиция подозревает инсайдерскую сделку; выручка помечена, «грязные» средства кошелька выросли на {1}." +predict.sold.caught,"Продано, получено {0}. Полиция подозревает инсайдерскую сделку; {1} CRC помечено как «грязные»." predict.row.move," (прошлой ночью {0} {1})" predict.stats.h,История (ср. цена открытия / факт. частота) predict.stats.row,"{0}: рынков: {1}, ср. открытие {2}, сбылось {3}%" @@ -711,7 +710,7 @@ news.story.serpico_rev.desc,"Сообщается, что Революционе news.story.serpico_bm.title,Чёрный рынок заключил негласную сделку news.story.serpico_bm.desc,"Внутренний документ Службы безопасности перешёл из рук в руки на Чёрном рынке. С тех пор расчёты в Даркнете заметно стабилизировались, а погашение CRT проходит без сбоев." news.story.serpico_sec.title,Служба безопасности начинает внутреннюю чистку -news.story.serpico_sec.desc,"Служба безопасности объявила о масштабном расследовании внутренней коррупции и усилении контроля за денежными потоками. Poinbase ужесточает проверку вывода средств, а миксеры были названы напрямую." +news.story.serpico_sec.desc,Служба безопасности объявила о полном расследовании внутренней коррупции и усилении контроля за денежными потоками; отдельно упомянуты миксеры. news.story.eleanor_leak.title,Утечка данных о селекции нутрифруктов news.story.eleanor_leak.desc,"Газета Нижнего уровня опубликовала данные исследования, позволяющего нутрифруктам снова давать семена; акции Пастель рухнули. Банк, хранящий средства Верхнего уровня, сообщил о безнадёжных долгах, а влияние Революционеров растёт." news.story.eleanor_return.title,Пастель возвращает украденные данные @@ -772,7 +771,7 @@ agent.search.none,...Ничего. Извините за беспокойств tumbler.v4.seized.1,"Слышал, Служба безопасности обыскала твой магазин." tumbler.v4.seized.2,Ключ теперь у них. Они поднимут записи каждого пользователя. tumbler.v4.seized.3,Что ты им сказал — знать больше не хочу. -nightlog.tumbler.leak,"Служба безопасности восстановила записи миксера по ключу подписи Тумблера: смытый след с выплат (кол-во: {0}, {1}) возвращён на кошельки." +nightlog.tumbler.leak,"Служба безопасности использовала ключ подписи Тумблера для восстановления записей миксера: выплат: {0}, отмыто загрязнения: {1}; в досье занесены улики мошенничества: {2}." nightlog.tumbler.leak.none,"Служба безопасности использовала ключ подписи Тумблера, чтобы восстановить записи микширования. В последнее время вы ничего не выводили из миксера." nightlog.tumbler.note,"Под дверь подсунули записку: «Ты мне задолжал, и я своё заберу. — Т»" nightlog.tumbler.tip,Сообщение от Тумблера: завтра Служба безопасности может взяться за миксеры. @@ -1038,7 +1037,7 @@ otc.cancel,Отказ otc.msg.gone,Клиент ушёл. otc.msg.cash,Недостаточно наличных. otc.msg.sting,"Клиент был под прикрытием: конфисковано {0} наличными, зафиксирован сбыт краденого." -otc.msg.bought,"Получено {0} {1}, выплачено {2} наличными." +otc.msg.bought,"Получено {0} {1} (из них грязных: {3}), выплачено наличными: {2}." otc.msg.sold,"Отправлено {0} {1}, получено {2} наличными." gray.sub.own,Мой миксер ownmix.h,Мой миксер @@ -1088,3 +1087,4 @@ otc.nocash,Даже наличных нет? Забудьте. otc.nowallet,"Кошелёк не подключён, куда слать монеты? Забудьте." otc.sting,"Не двигаться. Служба безопасности. Скупка краденых средств: наличные изъяты, это пойдёт в ваше досье." hw.err.poinbase,Poinbase не принимает {0}. +hw.err.tainted,"В этом кошельке грязных {1}: {0}, а Poinbase принимает только чистые монеты: максимум {2} {1}." diff --git a/src/Decentralized/ModFiles/Localization/zh.csv b/src/Decentralized/ModFiles/Localization/zh.csv index 51df5d8..178d5a8 100644 --- a/src/Decentralized/ModFiles/Localization/zh.csv +++ b/src/Decentralized/ModFiles/Localization/zh.csv @@ -21,7 +21,7 @@ tab.report,报告 wallet.line,{0}:{1}(约 {2} 信用点) wallet.empty,钱包为空。 wallet.total,总值:{0} 信用点 -wallet.taint,污点:{0} 信用点 +wallet.taint,脏币:{0} 信用点 trade.amount,数量 trade.deposit,存入信用点 trade.withdraw,提取 CRC @@ -37,8 +37,6 @@ msg.balance,余额不足。 msg.trade,支付 {0} {1},获得 {2} {3}。 msg.deposit,已存入 {0} 信用点,兑换为 CRC。 msg.cashout,到账 {0} 信用点。税 {1} 信用点。 -msg.aml_light,合规审查:{0} 信用点的污点资金被扣留。 -msg.aml_heavy,合规审查:{0} 信用点的污点资金被没收,并已上报治安部。 report.none,暂无挖矿报告。 report.day,第 {0} 天夜间 report.rigs,供电矿架:{0} / {1} @@ -140,6 +138,7 @@ col.asset,"币种" col.amount,"数量" col.value,"估值" col.avg,"买入均价" +col.dirty,其中脏的 bank.cash.k,"信用点" bank.rent.k,"房租" bank.rent.v,"{0},{1} 天后支付" @@ -151,13 +150,12 @@ stable.ok,"锚定正常" stable.depeg,"脱锚" stable.warn,"预兆:储备覆盖率告急" stable.spiral,"崩盘中" -aml.taint,"账户污点比例:{0}%" mixer.h,混币器 mixer.ok,状态:运行正常 -mixer.sanctioned,状态:已被制裁(还有 {0} 天),此期间提出的币视为被标记。 +mixer.sanctioned,状态:已被制裁(还有 {0} 天),此期间到期的出款不洗,整笔记为脏币。 mixer.pending,在途存入 mixer.none,暂无在途存入。 -mixer.col.taint,污点 +mixer.col.taint,其中脏的 mixer.col.ready,到期 mixer.day,第 {0} 天 mixer.deposit,存入 @@ -168,12 +166,12 @@ mixer.go,存入混币器 mixer.min,存入价值不得低于 {0} 信用点。 mixer.done,已存入 {0} {1},第 {2} 天提回。 mixer.upgrade.title,混币器 -mixer.upgrade.desc,"解锁终端灰网页里的混币器:把带污点的币存进去,几天后提回,污点降低。出金审查对刚从混币器出来的币更严格;镇压期间混币器可能被制裁,期间提出的币会被标记。" +mixer.upgrade.desc,解锁终端灰网页里的混币器:把脏币存进去,几天后提回,其中脏的变少。镇压期间混币器可能被制裁,制裁期间到期的出款整笔记为脏币。 news.sanction.title,混币器被列入制裁名单 -news.sanction.desc,"安保部门宣布制裁一批混币服务。此后几天从混币器提出的资金将被视为可疑。" +news.sanction.desc,安保部门宣布制裁一批混币服务。此后几天从混币器提出的资金将被视为赃款。 nightlog.mixer,混币器提回 {0} {1},污点 {2} → {3}。 -nightlog.mixer_flag,(制裁期间提出,地址被标记) -nightlog.mixer_flag.trap,(提出的地址被标记) +nightlog.mixer_flag,(制裁期间提出,整笔记为脏币) +nightlog.mixer_flag.trap,(提出的币被治安部整笔记为脏币) nightlog.mixer_rug,混币器的运营者卷款跑路了:{0} {1} 没有提回。 web3.sub.trade,交易 gray.sub.mixer,混币器 @@ -248,7 +246,7 @@ black.kind.Contraband.3,违禁品(高) black.kind.Tech,高科技物品(加价) nightlog.bm.ready,商店:{0} 到货,开店后会有快递员上门。 guide.web3.title,Web3 手册 -guide.web3.text,"银行与交易:银行页只读,显示现金、房租和 Poinbase 账户里的 CRC。Poinbase 的资金页管入金和出金,先选币种:CRC 可以走银行账户或钱包,其他币只能走钱包。从银行入金把信用点换成 Poinbase 账户里的 CRC;出金到银行把 CRC 换回信用点,要过合规审查,审查看 Poinbase 账户的污点。出金到钱包要填收款地址,等几次确认才到账,Gas 费固定按普通档、从转出的币里扣;地址格式或校验位不对会被拒绝,格式对但没人用的地址,币转过去就没了。¶交易:PSC 全称 Probably Stolen Coin,是显卡和矿机挖出的币。Poinbase 现货有 PSC/CRC 和 SPARK/CRC 两个交易对,跟着行情图选中的币切换。买入和卖出都填所交易币的数量,预览显示要付或能得到的计价币,均价含手续费,滑点不含。¶Web3 交易页可以任选两种币互换,实际都经 CRC 中转:CRC 在一端走一个池,否则走两个池,付两次手续费、滑点叠加,预览里会显示得到的数量、经过的池数和损耗。稳定币之间(CRT、CRA 对 CRC)走稳定币池:手续费 {StableFee:%},挂钩附近几乎没有滑点;脱锚时流动性变差,崩盘时流动性被撤走,滑点急剧变大。§硬件钱包:链上的币放在 PLEDGER 硬件钱包里,每个钱包的余额和污点分别计算。钱包是一件物品,拖到交易终端上加载;在终端的钱包页打开,在终端右上角连接或断开。Web3 页的交易和灰网页的商店、混币器用已连接的钱包,没有钱包或没有连接时只能看,余额都是 0;用币付款的顾客也进已连接的钱包。¶付款(商店、混币器、Ponero 兑换处、上架费)先在终端开账单,再在钱包里手输收款地址、按住 ✓ 签名;地址末尾两位是校验位,输错一位多半会被拦下,偶尔碰巧合法,币就转进了没人用的地址。DEX 兑换也要在钱包上签名。¶Poinbase 是托管账户,入金要从钱包转到它的充值地址(只收 PSC、CRC、SPARK;黑市的 CRT、革命军的 CRA 合规交易所不收,往充值地址转会被钱包拦下),出金在 Poinbase 的资金页发起。钱包页的浏览器可以按地址查转账记录,只显示真实发生的转账:你的钱包的每一笔进出(转账、DEX 兑换和其他合约调用、矿机收益、出金、别人转来的币);Ponero 是隐私币,不显示。更多硬件钱包向杰克逊博士购买,拖到交易终端上添加,最多 {WalletMax} 个;商店里也有更便宜的。不要的钱包可以在钱包页销毁,里面的币永久丢失,之后发到这个地址的币也丢了。¶转账要付 Gas 费,分慢、普通、快三档,Gas 价格大约一周一个起落;网络拥堵时 Gas 费变贵,慢档可能被挤出内存池。转账前核对完整地址。§质押:把 CRA 质押进革命军质押池每天有日息,利息并入本金;取出要先申请,等四天才到账,等待期间没有利息,也不能提前拿。CRA 是部分抵押的:每份 CRA 由革命军持有的 CRC 储备和平衡代币 SPARK 共同支撑,储备覆盖率和抵押率显示在质押页。质押利息以没有抵押的新 CRA 付出,会稀释储备覆盖率,质押的人越多稀释越快;覆盖率太低革命军会降息。革命军有时会挪用储备,先有风声,那是预兆;挪用后覆盖率跌破 {CraCrashRatio:%} 就崩盘:三天内 CRA 归零,四天的解锁期来不及;没跌破只是折价,劫掠上层带来的资金会慢慢把储备补回来。¶官方铸造:存入 CRC 和 SPARK(比例按当前抵押率,界面预览需要多少)铸造 CRA,排 {CraMintDaysMin}~{CraMintDaysMax} 天,铸出的 CRA 直接进质押;销毁把 CRA 换回 CRC 和 SPARK,等待和解锁期一样长,储备不足时 CRC 份额按覆盖率打折。排队的铸造和销毁,官方可能整笔不兑现:每晚的概率是 CRA 价格低于 1 的幅度乘以 {CraRugPerDepeg},价格不低于 1 就不会。¶质押可以存 CRA、CRC、CRT、SPARK:后三种先在二级市场按市价换成 CRA(经 CRC 中转,付手续费和滑点)再质押。SPARK 价格波动很大,崩盘时会跟着暴跌。质押、铸造、销毁都是合约调用,要在钱包上签名。§矿机:RatDigg 矿机(M1 / M2 / M3)是独立的机器,算力比显卡大得多、耗电更省,要放电池才挖,可以放模块,不占矿架槽位;只在商店的矿机商那里有,要黑市声望(M1 {AsicRepM1}、M2 {AsicRepM2}、M3 {AsicRepM3}),偶尔有二手的。烧毁后须按顺序把电子元件拖到它身上修复,修复后健康降低 {AsicRepairHealthCut}。第 {EraMin} 到 {EraMax} 天之间会有一次""矿机时代"",提前几天上报纸预告,之后大矿场的耗电成本砍半,全网算力涨上去,显卡矿工的收益被摊薄,低档显卡几乎不赚钱,矿机受影响较小。¶收款地址:每台矿机(矿架和 ASIC 矿机)在自己的窗口里设置收款地址,挖矿产出每晚按算力占比发到这个地址,两台矿机可以发给两个地址。默认没设置,没设置或地址对应的钱包已销毁,这一份产出就丢了;换了钱包要记得改地址。¶涡轮增压器可以对矿架和矿机用,规则和原版机器一样:用一次就多跑一轮,也就是立刻挖一晚。这一轮扣一晚的电,产出按当前全网算力计算、发到这台机器的收款地址,同样算一次损耗和暴毙判定,不影响当晚照常挖矿。§永续合约:Poinbase 的""永续""页,用账户里的 CRC 当保证金,PSC 最高 {PerpPscLev} 倍、SPARK 最高 {PerpSparkLev} 倍,只支持逐仓,同一时间只有一个仓位,不能同时多空,想加码只能追加保证金。成交价比现价差一截(单越大差得越多,和现货池一样),开平仓还收手续费。强平只在夜里按当天均价检查,权益不到名义价值的 {PerpMaint:%} 就被强平,保证金归零;每晚还有资金费,价格比近 7 天均价高时多头付给空头。¶其他交易者的仓位也随行情爆仓:大部分爆仓剩下的保证金进保险基金,行情越急穿仓越多,缺口由基金垫付;单日大涨大跌时,报纸会报道全网爆仓的人数和金额(含你的仓位)。强平后亏光保证金还不够的缺口,先由保险基金垫,基金见底(全网大面积穿仓的极端行情才会耗尽它)后盈利的仓位会被自动减仓、少拿一半盈利,再不够就记成你的欠款:欠款每天涨 {PerpDebtInterest:%},账户里的 CRC 每晚先用于还款;未还清前不能开仓、不能出金,{PerpDebtDays} 天不还就没收店里的物品抵债,抵不够的核销并拉黑永续账户 {PerpBanDays} 天。§商店:只收币,不收 CRC,价格比正常渠道贵 {BmPremium:%},高科技物品和显卡另有加价;付出去的币带着按比例的污点留在卖家那边,货不带赃物标签;显卡不保证真假,自己鉴定。¶商店购买:左边选卖家,右边是货架,点""购买""后在付款面板里定数量、付款方式和币种。每类卖家收的币不同:硬件、技术类收 PSC 和 CRT,军火、药物、化学品、证件、奢侈品、个人卖家收 CRT 和隐私币,农业、养殖、水务、酿酒收 PSC 和 CRA,平台现货收 PSC、CRT、CRA。手里没有它收的币,可以用 Web3 内置的自动换币:从钱包里别的币换出,多付 {BmAutoSwapSlip:%} 滑点,签名一次完成;也可以自己先去 DEX 换,滑点小得多,但要多一步。上架费同样在付款时选币。¶商店购物车:点货架上的""购买""是加入购物车,右下角的悬浮购物车显示件数,点开进结算页。结算页左边是购物车详情(按商家分组,可增减数量、删除,接受提前放款的商家可选托管或提前放款),右边是付款:每家商家的收款地址不同,所以逐家付款——选这家收的币,生成账单,在钱包里转账;也可以用钱包里别的币自动换币(多付 {BmAutoSwapSlip:%} 滑点)一次签名付清这一家。§订单与出售:订单比现货便宜,要等几天,路上可能被截获;商家按类型卖货,价格系数各不相同,一次订 {BmBulk1Count} 件以上减 {BmBulk1Discount:%}、{BmBulk2Count} 件以上减 {BmBulk2Discount:%},大宗商家随机出现,价格最低但要等 {BmBulkDays} 天;托管多付 {BmEscrowFee:%} 托管费,收货后放款,卖家跑路时退款;提前放款再减 {BmAdvanceDiscount:%},卖家若是骗子,货款不退,只有成交 {BmAdvanceMinTrades} 单以上的卖家接受;平台自己也可能跑路,也可能被执法接管,或者卖家落网,之后你的订单会被追查、记罪证;论坛上的传闻可以当预兆。被截获的包裹有时会变成执法人员上门:签收当场记罪证并查封,拒签只损失货款。¶出售:在商店的卖货页把储藏区里的违禁品、高科技物品和显卡上架,标价是参考价的 {BmSellMin} 到 {BmSellMax} 倍。倍率越高成交越慢({BmSellFastMult} 以下约 {BmSellDaysFast} 天,{BmSellDay1Mult} 约 {BmSellDays1} 天,{BmSellMax} 约 {BmSellDaysMax} 天),货款带污点的可能性和比例也越高,近 7 天出售的量越大,污点越重;赃物的货款按物品的赃物热度带污点(货款 × 热度%);卖货页默认是已上架的橱窗,点“上架更多”备货:同种货聚在一起,用加减键定数量,倍率在左边选,点右下角的货架付上架费后才上架;同一种货倍率必须相同,要改倍率得先全部下架;同时最多上架 {BmMaxKinds} 种、每种最多 {BmMaxStack} 件,每件收 {BmListFee:%} 上架费;橱窗里可以下架,货回储藏区,上架费不退;橱窗页的“收款币种”选愿意接受的币,每多接受一种,每晚就多一轮成交判定(顺序随机,各币的买家多少不同),接受的币越多越容易成交,货款用成交那一轮的币到账;成交扣 {BmCommission:%} 抽成,货款托管 {BmSaleHold} 天后进钱包;卖假卡可能被买家看穿而退货,拉低好评;平台跑路时上架的货和未放款的货款均损失。§预测市场(Web3 预测页,游戏第 {PredictUnlockDay} 天起):每个盘口是一道是非题,只问游戏自己掷骰或排期的事:新闻事件出现、派系行动开始、明天的水纯度、PSC 价格。盘口开放到窗口开始前,窗口最后一天夜里结算;买「是」「否」用链上钱包的 CRC(合约调用,要在钱包上签名,持仓记在签名的钱包名下),价格就是市场认为的概率,买得越多越贵,押中每份兑付 1 信用点,买卖各收 {PredictFee:%}。每个盘口有持仓上限。押中的钱继承押注资金的污点比例。¶传闻纸条、派系特权让你提前知道某件事会发生,在这类盘口押「是」算内幕单;内幕单照常兑付,但警方会怀疑内幕交易:结算或卖出时,内幕份额对应的兑付记为污点(加在收款钱包上)。窗口里缺了游戏数据(例如那几天没睡觉结算),盘口作废退回本金。§消息反应:每晚盘口向当时公开信息下的合理概率靠拢一半,再加一点随机波动;所以先从报纸、传闻纸条、派系特权看到消息的人可以抢在前面买,涨价后卖出,不用等到结算。盘口面板的线索栏列出和这个盘口有关的已知信息:排期、冷却、减半日、gas 近几天的数值、CRA 储备水位、矿机时代预告。¶可以推演的规律:派系行动由隐藏的势力值按阈值触发;gas 七天一个周期;减半前一周价格锚逐日抬高;排期好的镇压和停电会压低或抬高锚,但盘口价格不会预先反映;储备消耗越快(质押越多)CRA 越早预警;PSC 价格盘的价格能被你自己的大单推动。情报贩子(黑市声望够了才有)卖局势简报(五个势力值和各派系现在能发起的行动,CRT)和三档内幕消息(只针对已经定下来的派系行动、矿机时代盘口,三档准确率依次升高,价格按盘口规模;有的是假情报,说的与真相相反);买了内幕消息再押同一边算内幕单。盘口规模随天数增长,押错则本金全部亏损。§操纵检出:你在 Poinbase 现货上的大单会把价格推离没有你时的水平(推价幅度每晚随价格回归衰减,预测盘线索里能看到)。推价幅度超过 {ManipFree:%} 后,如果你从价格里赚到钱——行情盘押中而且方向和你推价的方向一致,或者永续平仓盈利而且方向一致——有概率被查:幅度越大越容易(封顶 {ManipMax:%})。被查后照常兑付:预测盘的这笔兑付记为钱包的污点,永续的这笔盈利记为 Poinbase 账户的污点,报纸报道调查。¶污点不能超过钱包当时的价值:加污点时超出的部分,按 {PredictFraudShare:%} 记诈骗罪证,每次最多 {PredictFraudCap}。内幕单和操纵都按这条规则。先空后砸不是稳赚:永续单边滑点和现货来回的价差往往比空头赚到的还多。§高息理财(理财页""发行"",游戏第 {PonziMinDay} 天起,一个存档只能开一次):定一个日息({PonziRates[0]:%}–{PonziRates[4]:%}),付宣传费开张(开张、卷走都是合约调用,要在钱包上签名),下层的人按日息和下层声望往池子里存 CRC,日息越高存得越快。每晚先用新存入的钱付利息,不够从发行钱包补,补不上就挤兑崩盘;池子每晚被取走 {PonziWithdraw:%},池子越大、日息越高越容易被举报,被举报同样崩盘。崩盘时池子被没收。随时可以卷走池子(点两次确认):池子进发行钱包,污点全额(要洗了才好出金)。卷走和崩盘都记诈骗罪证,下层声望清零。风声一栏提示被举报的风险高低。§骗局:插针——有时开门后价格被瞬间打上去或砸下来 {WickMin:%}–{WickMax:%},多数当晚回去一大半,有的是真的;永续标记价只计一半。¶空投(Web3 空投页)——每个空投要先为钱包授权(签一次授权合约),再签名领取;授权前看清授权范围:正规空投不要授权或只要几十的小额授权;要""无上限授权""或远超奖励的大额授权的,就是钓鱼,名字也常是仿冒(0 和 o、1 和 l),一两晚后会把这个钱包里那种币转走。授权列在空投页右边,可以签名撤销,撤销后就转不走了。¶第三方收益池(理财页""存钱"")——日息 {YieldRates[0]:%}–{YieldRates[2]:%},看得到储备、有没有时间锁、有没有审计,看不到是不是骗局:日息越高越可能跑路,有时间锁、有审计的少一些;正规池储备付不起利息时退本金关闭,骗局池每晚都可能卷款跑路。有时间锁的池子取款要等 {YieldLockDays} 天。¶假客服——自称 Poinbase 客服上门,要你把 CRC 转到""安全地址"":Poinbase 不会上门,也不会要你转账。伪造转账——用币付款的顾客开口说""已经转了,给你看截图,快给货""的,币不会到账;正常顾客会说链上确认要一会儿。§行情图:Poinbase 现货页、Web3 交易页可以切换各个币的日 K(永续页是当前品种,预测页是 PSC),绿涨红跌,黄线是 7 日均线(永续资金费按它算),下方的柱子是成交量(灰色是市场,青色是你自己:现货、DEX、铸销、Ponero 兑换、永续开平仓都算)。价格波动越大市场成交越多;插针会留下长影线。§剧情联动:游戏里几条剧情线的选择会改变这里的市场,第二天报纸会登出来,市场要过几天才反应完。塞尔皮科的证据交给革命军:CRA 储备注资、{StorySecDays} 天内崩盘概率减半、SPARK {StorySparkNights} 晚内涨 {StorySerpicoSpark:+%};交给黑市:CRT 脱锚和镇压时被出卖的概率减半;交给治安部:{StorySecDays} 天内出金审查、混币器制裁、操纵查处更严。埃莉诺泄露数据盘:CRC 托管银行减记的概率翻倍、SPARK 涨 {StoryLeakSpark:+%};交回数据盘:CRC 脱锚概率减半。伦警官被捕:{StoryLunDays} 天内出金审查、操纵查处更严。¶混币器运营者 Tumbler(解锁混币器、第 {TumblerMinDay} 天起):他会上门几次,最后求你帮忙藏密钥盘。藏好、到时还给他:混币器手续费减半、匿名集变大,另有谢礼;但密钥盘是违禁品,期间被搜出来会记罪证。举报他:拿赏金和治安部声望,混币器关停(在途的照常提回)。卖给黑市:拿一笔 CRT(一半带污点)和黑市声望,之后混币器手续费上涨、跑路概率变大。¶Tumbler 之后:第 2、3 次上门之间,治安部探员会来问他有没有来过。承认:治安部声望 +{TumblerAgentSecRep};但如果之后帮他藏了密钥盘,探员会在他来取的前一天上门搜查,搜到就没收、记违禁品罪证。密钥落到治安部手里(举报他、密钥盘被搜走、他来取时盘不在你手上),混币记录就会被还原:最近 {TumblerLeakDays} 天混币器出款洗掉的污点全部加回原钱包,超出钱包价值的部分记诈骗罪证。举报之后有审判,预测盘上可以押判决,报纸每天登庭审进展;他要是无罪获释,会报复你。卖给黑市的,黑市会在 {TumblerBmRugMin}–{TumblerBmRugMax} 天后卷款跑路,混币器里在途的币全部丢失,之后他同样会报复。帮他藏好并还给他,他会在治安部镇压的前一晚给你报信。混币器关停 {TumblerRebrandDays} 天后会换个名字重新上线,其中一部分是治安部的钓鱼混币器,提回的币全部被标记;费率低得反常的要当心。§混币器与隐私币:选币种、填数量和轮数,每轮扣手续费并降低污点,轮数即等待天数,到期提回同一个地址;存入越多,清洗越差。¶隐私币兑换(Web3 交易页,要黑市声望):Ponero 是隐私币,兑入时这部分价值的污点被清除;兑入、兑出各收 {PoneroFee:%} 手续费,每天有额度;从 Ponero 兑出的币来路不明,出金审查会加重。§换币客户(人脉网络“场外换币台”):暗灯多一个目标“换币客户”(双击暗灯切换),放进展示柜才亮,和原版的暗灯一样按灯的数量和黑市声望招人,买下升级时附赠一盏。来的客户有一半想把币卖给你,一半想向你买币,都用现金结算。客户说明来意后,选“到终端上谈”,交易终端打开柜台交易页,客户在柜台前等着:可以按 25% / 50% / 75% / 100% 或手输数量只成交一部分,现金按比例折算;选“放弃”或把客户打发走就不做了。客户要的数量随房租增长。¶卖币的客户:成交后你付现金,币直接进已连接的钱包。游戏里出了事,多半是事件里来的币:帮派火并、镇压期间是 CRT,革命军袭击上层、下层动荡期间是 PSC,这类币按市值全额带污点;平时在 PSC、CRT、CRA 里随机,污点占市值的 {OtcTaintMin:%}–{OtcTaintMax:%},越脏越便宜(要价从市值的 {OtcCutClean:%} 降到 {OtcCutDirty:%})。客户不会说币有多脏:交易页上有他的地址,点“查地址”在浏览器里看它的来历,来自混币器、黑市平台、骗局地址的转入越多越脏。Ponero 兑换处开放后偶尔有人出手 Ponero,不带污点,要价也高。加上的污点不能超过钱包价值,超出的部分同样记诈骗罪证。客户偶尔是便衣:收下就没收现金并记销赃罪证,镇压期间更多。¶买币的客户:什么币都可能要,出价是市价加一个随机的溢价(市价的 {OtcBidMin:+%} 到 {OtcBidMax:+%},可能比市价低),值不值得卖由你决定。成交后 PLEDGER 弹出,收款地址和数量已经填好,签名后等确认,到账时客户付现金离开;客户走了还没签名的就作废。卖出的币不追查污点。¶自营混币器(灰网页,买下场外换币台就有):注资开张,客户把带污点的币存进来,几天后出款,你收手续费。每一轮按匿名集洗掉一部分污点,匿名集主要是你的本金和没取走的收入(客户在途的币只算一部分),所以注资越多洗得越干净。客户拿“费率加上出款剩下的污点”和 Tumbler 的混币器比,哪家便宜去哪家,黑市声望越高客人越多;口碑就是近期出款剩下的污点比例。手续费收入留在池子里,取走时全额带污点;本金取回时带着它自己的污点。客流越大风声越大(池子大能藏得深一点,但客流也大,总体更容易被盯上),按风声有概率被治安部查封:本金、收入和客户的币全部没收,记销赃罪证,停业 {OwnMixSeizeDays} 天;营业的晚上偶尔有便衣存入,同样记销赃罪证。随时可以卷款跑路:连同客户的币全部卷走、全额带污点,记诈骗罪证、黑市声望下降,混币器永久关闭。§出金审查(界面不显示额度和命中概率,规则如下):从 Poinbase 提取 CRC 换回信用点时按当天房租判定——单笔超过 {AmlBigRents} 倍房租、近 {AmlWindowDays} 天累计超过 {AmlCumRents} 倍房租,超出的部分按比例抬高被查概率;污点占这笔金额的比例达到 {AmlTaintRatio:%} 起,概率另加「比例 × {AmlTaintMult}」;资金来自近期混币器提回或被标记的钱包,再加 {AmlMixerBonus:%};概率最高 {AmlMaxChance:%}。命中后:污点占比低于 {AmlHeavyRatio:%} 为轻度,没收污点部分,不记罪证;达到 {AmlHeavyRatio:%} 为重度,没收污点部分,并把污点额记为销赃罪证。没命中则全额到账。出金收 {ExchangeFee:%} 手续费,超出成本的收益另征 {TaxRate:%} 税。拆成小额、分几天提、先洗再提都能压低概率,但额度和概率不会提示,要自己估。¶销毁钱包前必须自己把币转出,持仓和存款也要先取出:留在里面的会随钱包一起没有。" +guide.web3.text,"银行与交易:银行页只读,显示现金、房租和 Poinbase 账户里的 CRC。Poinbase 的资金页管入金和出金,先选币种:CRC 可以走银行账户或钱包,其他币只能走钱包。从银行入金把信用点换成 Poinbase 账户里的 CRC;出金到银行把 CRC 换回信用点,不做审查(Poinbase 账户里只有干净的钱)。出金到钱包要填收款地址,等几次确认才到账,Gas 费固定按普通档、从转出的币里扣;地址格式或校验位不对会被拒绝,格式对但没人用的地址,币转过去就没了。¶交易:PSC 全称 Probably Stolen Coin,是显卡和矿机挖出的币。Poinbase 现货有 PSC/CRC 和 SPARK/CRC 两个交易对,跟着行情图选中的币切换。买入和卖出都填所交易币的数量,预览显示要付或能得到的计价币,均价含手续费,滑点不含。¶Web3 交易页可以任选两种币互换,实际都经 CRC 中转:CRC 在一端走一个池,否则走两个池,付两次手续费、滑点叠加,预览里会显示得到的数量、经过的池数和损耗。稳定币之间(CRT、CRA 对 CRC)走稳定币池:手续费 {StableFee:%},挂钩附近几乎没有滑点;脱锚时流动性变差,崩盘时流动性被撤走,滑点急剧变大。§硬件钱包:链上的币放在 PLEDGER 硬件钱包里,每个钱包的余额和脏币分别计算(每种币记其中几枚是脏的,见“污点”一节)。钱包是一件物品,拖到交易终端上加载;在终端的钱包页打开,在终端右上角连接或断开。Web3 页的交易和灰网页的商店、混币器用已连接的钱包,没有钱包或没有连接时只能看,余额都是 0;用币付款的顾客也进已连接的钱包。¶付款(商店、混币器、Ponero 兑换处、上架费)先在终端开账单,再在钱包里手输收款地址、按住 ✓ 签名;地址末尾两位是校验位,输错一位多半会被拦下,偶尔碰巧合法,币就转进了没人用的地址。DEX 兑换也要在钱包上签名。¶Poinbase 是托管账户,入金要从钱包转到它的充值地址(只收 PSC、CRC、SPARK;黑市的 CRT、革命军的 CRA 合规交易所不收,往充值地址转会被钱包拦下;每种币只收干净的枚数,见“污点”一节),出金在 Poinbase 的资金页发起。钱包页的浏览器可以按地址查转账记录,只显示真实发生的转账:你的钱包的每一笔进出(转账、DEX 兑换和其他合约调用、矿机收益、出金、别人转来的币);Ponero 是隐私币,不显示。更多硬件钱包向杰克逊博士购买,拖到交易终端上添加,最多 {WalletMax} 个;商店里也有更便宜的。不要的钱包可以在钱包页销毁,里面的币永久丢失,之后发到这个地址的币也丢了。¶转账要付 Gas 费,分慢、普通、快三档,Gas 价格大约一周一个起落;网络拥堵时 Gas 费变贵,慢档可能被挤出内存池。转账前核对完整地址。§质押:把 CRA 质押进革命军质押池每天有日息,利息并入本金;取出要先申请,等四天才到账,等待期间没有利息,也不能提前拿。CRA 是部分抵押的:每份 CRA 由革命军持有的 CRC 储备和平衡代币 SPARK 共同支撑,储备覆盖率和抵押率显示在质押页。质押利息以没有抵押的新 CRA 付出,会稀释储备覆盖率,质押的人越多稀释越快;覆盖率太低革命军会降息。革命军有时会挪用储备,先有风声,那是预兆;挪用后覆盖率跌破 {CraCrashRatio:%} 就崩盘:三天内 CRA 归零,四天的解锁期来不及;没跌破只是折价,劫掠上层带来的资金会慢慢把储备补回来。¶官方铸造:存入 CRC 和 SPARK(比例按当前抵押率,界面预览需要多少)铸造 CRA,排 {CraMintDaysMin}~{CraMintDaysMax} 天,铸出的 CRA 直接进质押;销毁把 CRA 换回 CRC 和 SPARK,等待和解锁期一样长,储备不足时 CRC 份额按覆盖率打折。排队的铸造和销毁,官方可能整笔不兑现:每晚的概率是 CRA 价格低于 1 的幅度乘以 {CraRugPerDepeg},价格不低于 1 就不会。¶质押可以存 CRA、CRC、CRT、SPARK:后三种先在二级市场按市价换成 CRA(经 CRC 中转,付手续费和滑点)再质押。SPARK 价格波动很大,崩盘时会跟着暴跌。质押、铸造、销毁都是合约调用,要在钱包上签名。§矿机:RatDigg 矿机(M1 / M2 / M3)是独立的机器,算力比显卡大得多、耗电更省,要放电池才挖,可以放模块,不占矿架槽位;只在商店的矿机商那里有,要黑市声望(M1 {AsicRepM1}、M2 {AsicRepM2}、M3 {AsicRepM3}),偶尔有二手的。烧毁后须按顺序把电子元件拖到它身上修复,修复后健康降低 {AsicRepairHealthCut}。第 {EraMin} 到 {EraMax} 天之间会有一次""矿机时代"",提前几天上报纸预告,之后大矿场的耗电成本砍半,全网算力涨上去,显卡矿工的收益被摊薄,低档显卡几乎不赚钱,矿机受影响较小。¶收款地址:每台矿机(矿架和 ASIC 矿机)在自己的窗口里设置收款地址,挖矿产出每晚按算力占比发到这个地址,两台矿机可以发给两个地址。默认没设置,没设置或地址对应的钱包已销毁,这一份产出就丢了;换了钱包要记得改地址。¶涡轮增压器可以对矿架和矿机用,规则和原版机器一样:用一次就多跑一轮,也就是立刻挖一晚。这一轮扣一晚的电,产出按当前全网算力计算、发到这台机器的收款地址,同样算一次损耗和暴毙判定,不影响当晚照常挖矿。§永续合约:Poinbase 的""永续""页,用账户里的 CRC 当保证金,PSC 最高 {PerpPscLev} 倍、SPARK 最高 {PerpSparkLev} 倍,只支持逐仓,同一时间只有一个仓位,不能同时多空,想加码只能追加保证金。成交价比现价差一截(单越大差得越多,和现货池一样),开平仓还收手续费。强平只在夜里按当天均价检查,权益不到名义价值的 {PerpMaint:%} 就被强平,保证金归零;每晚还有资金费,价格比近 7 天均价高时多头付给空头。¶其他交易者的仓位也随行情爆仓:大部分爆仓剩下的保证金进保险基金,行情越急穿仓越多,缺口由基金垫付;单日大涨大跌时,报纸会报道全网爆仓的人数和金额(含你的仓位)。强平后亏光保证金还不够的缺口,先由保险基金垫,基金见底(全网大面积穿仓的极端行情才会耗尽它)后盈利的仓位会被自动减仓、少拿一半盈利,再不够就记成你的欠款:欠款每天涨 {PerpDebtInterest:%},账户里的 CRC 每晚先用于还款;未还清前不能开仓、不能出金,{PerpDebtDays} 天不还就没收店里的物品抵债,抵不够的核销并拉黑永续账户 {PerpBanDays} 天。§商店:只收币,不收 CRC,价格比正常渠道贵 {BmPremium:%},高科技物品和显卡另有加价;付出去的币按这种币的脏比例带走脏的,货不带赃物标签;显卡不保证真假,自己鉴定。¶商店购买:左边选卖家,右边是货架,点""购买""后在付款面板里定数量、付款方式和币种。每类卖家收的币不同:硬件、技术类收 PSC 和 CRT,军火、药物、化学品、证件、奢侈品、个人卖家收 CRT 和隐私币,农业、养殖、水务、酿酒收 PSC 和 CRA,平台现货收 PSC、CRT、CRA。手里没有它收的币,可以用 Web3 内置的自动换币:从钱包里别的币换出,多付 {BmAutoSwapSlip:%} 滑点,签名一次完成;也可以自己先去 DEX 换,滑点小得多,但要多一步。上架费同样在付款时选币。¶商店购物车:点货架上的""购买""是加入购物车,右下角的悬浮购物车显示件数,点开进结算页。结算页左边是购物车详情(按商家分组,可增减数量、删除,接受提前放款的商家可选托管或提前放款),右边是付款:每家商家的收款地址不同,所以逐家付款——选这家收的币,生成账单,在钱包里转账;也可以用钱包里别的币自动换币(多付 {BmAutoSwapSlip:%} 滑点)一次签名付清这一家。§订单与出售:订单比现货便宜,要等几天,路上可能被截获;商家按类型卖货,价格系数各不相同,一次订 {BmBulk1Count} 件以上减 {BmBulk1Discount:%}、{BmBulk2Count} 件以上减 {BmBulk2Discount:%},大宗商家随机出现,价格最低但要等 {BmBulkDays} 天;托管多付 {BmEscrowFee:%} 托管费,收货后放款,卖家跑路时退款;提前放款再减 {BmAdvanceDiscount:%},卖家若是骗子,货款不退,只有成交 {BmAdvanceMinTrades} 单以上的卖家接受;平台自己也可能跑路,也可能被执法接管,或者卖家落网,之后你的订单会被追查、记罪证;论坛上的传闻可以当预兆。被截获的包裹有时会变成执法人员上门:签收当场记罪证并查封,拒签只损失货款。¶出售:在商店的卖货页把储藏区里的违禁品、高科技物品和显卡上架,标价是参考价的 {BmSellMin} 到 {BmSellMax} 倍。倍率越高成交越慢({BmSellFastMult} 以下约 {BmSellDaysFast} 天,{BmSellDay1Mult} 约 {BmSellDays1} 天,{BmSellMax} 约 {BmSellDaysMax} 天),货款带污点的可能性和比例也越高,近 7 天出售的量越大,污点越重;赃物的货款按物品的赃物热度带污点(货款里热度% 的币是脏的);卖货页默认是已上架的橱窗,点“上架更多”备货:同种货聚在一起,用加减键定数量,倍率在左边选,点右下角的货架付上架费后才上架;同一种货倍率必须相同,要改倍率得先全部下架;同时最多上架 {BmMaxKinds} 种、每种最多 {BmMaxStack} 件,每件收 {BmListFee:%} 上架费;橱窗里可以下架,货回储藏区,上架费不退;橱窗页的“收款币种”选愿意接受的币,每多接受一种,每晚就多一轮成交判定(顺序随机,各币的买家多少不同),接受的币越多越容易成交,货款用成交那一轮的币到账;成交扣 {BmCommission:%} 抽成,货款托管 {BmSaleHold} 天后进钱包;卖假卡可能被买家看穿而退货,拉低好评;平台跑路时上架的货和未放款的货款均损失。§预测市场(Web3 预测页,游戏第 {PredictUnlockDay} 天起):每个盘口是一道是非题,只问游戏自己掷骰或排期的事:新闻事件出现、派系行动开始、明天的水纯度、PSC 价格。盘口开放到窗口开始前,窗口最后一天夜里结算;买「是」「否」用链上钱包的 CRC(合约调用,要在钱包上签名,持仓记在签名的钱包名下),价格就是市场认为的概率,买得越多越贵,押中每份兑付 1 信用点,买卖各收 {PredictFee:%}。每个盘口有持仓上限。押注的 CRC 里有脏的,兑付回来时按比例还是脏的。¶传闻纸条、派系特权让你提前知道某件事会发生,在这类盘口押「是」算内幕单;内幕单照常兑付,但警方会怀疑内幕交易:结算或卖出时,内幕份额对应的兑付记为脏币(收款钱包里的这部分 CRC)。窗口里缺了游戏数据(例如那几天没睡觉结算),盘口作废退回本金。§消息反应:每晚盘口向当时公开信息下的合理概率靠拢一半,再加一点随机波动;所以先从报纸、传闻纸条、派系特权看到消息的人可以抢在前面买,涨价后卖出,不用等到结算。盘口面板的线索栏列出和这个盘口有关的已知信息:排期、冷却、减半日、gas 近几天的数值、CRA 储备水位、矿机时代预告。¶可以推演的规律:派系行动由隐藏的势力值按阈值触发;gas 七天一个周期;减半前一周价格锚逐日抬高;排期好的镇压和停电会压低或抬高锚,但盘口价格不会预先反映;储备消耗越快(质押越多)CRA 越早预警;PSC 价格盘的价格能被你自己的大单推动。情报贩子(黑市声望够了才有)卖局势简报(五个势力值和各派系现在能发起的行动,CRT)和三档内幕消息(只针对已经定下来的派系行动、矿机时代盘口,三档准确率依次升高,价格按盘口规模;有的是假情报,说的与真相相反);买了内幕消息再押同一边算内幕单。盘口规模随天数增长,押错则本金全部亏损。§操纵检出:你在 Poinbase 现货上的大单会把价格推离没有你时的水平(推价幅度每晚随价格回归衰减,预测盘线索里能看到)。推价幅度超过 {ManipFree:%} 后,如果你从价格里赚到钱——行情盘押中而且方向和你推价的方向一致,或者永续平仓盈利而且方向一致——有概率被查:幅度越大越容易(封顶 {ManipMax:%})。被查后照常兑付:预测盘的这笔兑付整笔记为脏币;永续的盈利照常留在账户,按盈利的 {PredictFraudShare:%} 记诈骗罪证(每次最多 {PredictFraudCap});报纸报道调查。¶先空后砸不是稳赚:永续单边滑点和现货来回的价差往往比空头赚到的还多。§高息理财(理财页""发行"",游戏第 {PonziMinDay} 天起,一个存档只能开一次):定一个日息({PonziRates[0]:%}–{PonziRates[4]:%}),付宣传费开张(开张、卷走都是合约调用,要在钱包上签名),下层的人按日息和下层声望往池子里存 CRC,日息越高存得越快。每晚先用新存入的钱付利息,不够从发行钱包补,补不上就挤兑崩盘;池子每晚被取走 {PonziWithdraw:%},池子越大、日息越高越容易被举报,被举报同样崩盘。崩盘时池子被没收。随时可以卷走池子(点两次确认):池子进发行钱包,这些 CRC 整笔是脏的(要洗了才能充进 Poinbase)。卷走和崩盘都记诈骗罪证,下层声望清零。风声一栏提示被举报的风险高低。§骗局:插针——有时开门后价格被瞬间打上去或砸下来 {WickMin:%}–{WickMax:%},多数当晚回去一大半,有的是真的;永续标记价只计一半。¶空投(Web3 空投页)——每个空投要先为钱包授权(签一次授权合约),再签名领取;授权前看清授权范围:正规空投不要授权或只要几十的小额授权;要""无上限授权""或远超奖励的大额授权的,就是钓鱼,名字也常是仿冒(0 和 o、1 和 l),一两晚后会把这个钱包里那种币转走。授权列在空投页右边,可以签名撤销,撤销后就转不走了。¶第三方收益池(理财页""存钱"")——日息 {YieldRates[0]:%}–{YieldRates[2]:%},看得到储备、有没有时间锁、有没有审计,看不到是不是骗局:日息越高越可能跑路,有时间锁、有审计的少一些;正规池储备付不起利息时退本金关闭,骗局池每晚都可能卷款跑路。有时间锁的池子取款要等 {YieldLockDays} 天。¶假客服——自称 Poinbase 客服上门,要你把 CRC 转到""安全地址"":Poinbase 不会上门,也不会要你转账。伪造转账——用币付款的顾客开口说""已经转了,给你看截图,快给货""的,币不会到账;正常顾客会说链上确认要一会儿。§行情图:Poinbase 现货页、Web3 交易页可以切换各个币的日 K(永续页是当前品种,预测页是 PSC),绿涨红跌,黄线是 7 日均线(永续资金费按它算),下方的柱子是成交量(灰色是市场,青色是你自己:现货、DEX、铸销、Ponero 兑换、永续开平仓都算)。价格波动越大市场成交越多;插针会留下长影线。§剧情联动:游戏里几条剧情线的选择会改变这里的市场,第二天报纸会登出来,市场要过几天才反应完。塞尔皮科的证据交给革命军:CRA 储备注资、{StorySecDays} 天内崩盘概率减半、SPARK {StorySparkNights} 晚内涨 {StorySerpicoSpark:+%};交给黑市:CRT 脱锚和镇压时被出卖的概率减半;交给治安部:{StorySecDays} 天内混币器洗得更差(每轮清洗率 ×{StorySecMixClean}),混币器制裁、操纵查处更严。埃莉诺泄露数据盘:CRC 托管银行减记的概率翻倍、SPARK 涨 {StoryLeakSpark:+%};交回数据盘:CRC 脱锚概率减半。伦警官被捕:{StoryLunDays} 天内操纵查处更严,换币客户里的便衣更多。¶混币器运营者 Tumbler(解锁混币器、第 {TumblerMinDay} 天起):他会上门几次,最后求你帮忙藏密钥盘。藏好、到时还给他:混币器手续费减半、匿名集变大,另有谢礼;但密钥盘是违禁品,期间被搜出来会记罪证。举报他:拿赏金和治安部声望,混币器关停(在途的照常提回)。卖给黑市:拿一笔 CRT(一半是脏的)和黑市声望,之后混币器手续费上涨、跑路概率变大。¶Tumbler 之后:第 2、3 次上门之间,治安部探员会来问他有没有来过。承认:治安部声望 +{TumblerAgentSecRep};但如果之后帮他藏了密钥盘,探员会在他来取的前一天上门搜查,搜到就没收、记违禁品罪证。密钥落到治安部手里(举报他、密钥盘被搜走、他来取时盘不在你手上),混币记录就会被还原:按最近 {TumblerLeakDays} 天混币器出款洗掉的污点,以 {PredictFraudShare:%} 记诈骗罪证(每次最多 {PredictFraudCap})。举报之后有审判,预测盘上可以押判决,报纸每天登庭审进展;他要是无罪获释,会报复你。卖给黑市的,黑市会在 {TumblerBmRugMin}–{TumblerBmRugMax} 天后卷款跑路,混币器里在途的币全部丢失,之后他同样会报复。帮他藏好并还给他,他会在治安部镇压的前一晚给你报信。混币器关停 {TumblerRebrandDays} 天后会换个名字重新上线,其中一部分是治安部的钓鱼混币器,提回的币整笔都是脏的;费率低得反常的要当心。§混币器与隐私币:选币种、填数量和轮数,每轮扣手续费并减少其中脏的枚数,轮数即等待天数,到期提回同一个地址;存入越多,清洗越差。镇压期间混币器可能被制裁,制裁期间到期的出款不洗,整笔都是脏的。¶隐私币兑换(Web3 交易页,要黑市声望):Ponero 是隐私币,兑入时兑掉的币连同其中的脏币一起消失,换来的 Ponero 是干净的;兑入、兑出各收 {PoneroFee:%} 手续费,兑入兑出共用每天 {PoneroDailyCap} 信用点的额度。§换币客户(人脉网络“场外换币台”):暗灯多一个目标“换币客户”(双击暗灯切换),放进展示柜才亮,和原版的暗灯一样按灯的数量和黑市声望招人,买下升级时附赠一盏。来的客户有一半想把币卖给你,一半想向你买币,都用现金结算。客户说明来意后,选“到终端上谈”,交易终端打开柜台交易页,客户在柜台前等着:可以按 25% / 50% / 75% / 100% 或手输数量只成交一部分,现金按比例折算;选“放弃”或把客户打发走就不做了。客户要的数量随房租增长。¶卖币的客户:成交后你付现金,币直接进已连接的钱包。游戏里出了事,多半是事件里来的币:帮派火并、镇压期间是 CRT,革命军袭击上层、下层动荡期间是 PSC,这类币全是脏的;平时在 PSC、CRT、CRA 里随机,其中 {OtcTaintMin:%}–{OtcTaintMax:%} 是脏的,越脏越便宜(要价从市值的 {OtcCutClean:%} 降到 {OtcCutDirty:%})。客户不会说币有多脏:交易页上有他的地址,点“查地址”在浏览器里看它的来历,来自混币器、黑市平台、骗局地址的转入越多越脏。Ponero 兑换处开放后偶尔有人出手 Ponero,不带污点,要价也高。客户偶尔是便衣:收下就没收现金并记销赃罪证,镇压期间更多。¶买币的客户:什么币都可能要,出价是市价加一个随机的溢价(市价的 {OtcBidMin:+%} 到 {OtcBidMax:+%},可能比市价低),值不值得卖由你决定。成交后 PLEDGER 弹出,收款地址和数量已经填好,签名后等确认,到账时客户付现金离开;客户走了还没签名的就作废。卖出的币不追查污点。¶自营混币器(灰网页,买下场外换币台就有):注资开张,客户把带污点的币存进来,几天后出款,你收手续费。每一轮按匿名集洗掉一部分污点,匿名集主要是你的本金和没取走的收入(客户在途的币只算一部分),所以注资越多洗得越干净。客户拿“费率加上出款剩下的污点”和 Tumbler 的混币器比,哪家便宜去哪家,黑市声望越高客人越多;口碑就是近期出款剩下的污点比例。手续费收入留在池子里,取走时整笔是脏的;本金取回时按它自己的脏比例。客流越大风声越大(池子大能藏得深一点,但客流也大,总体更容易被盯上),按风声有概率被治安部查封:本金、收入和客户的币全部没收,记销赃罪证,停业 {OwnMixSeizeDays} 天;营业的晚上偶尔有便衣存入,同样记销赃罪证。随时可以卷款跑路:连同客户的币全部卷走、整笔是脏的,记诈骗罪证、黑市声望下降,混币器永久关闭。§污点:每个钱包里,每种币分别记其中有几枚是脏的(钱包页、PLEDGER 的余额里能看到)。脏币从这些地方来:换币客户卖给你的币、用币付款的顾客(按货的赃物热度)、灰网商店卖赃物的货款、预测盘的内幕单和操纵、理财卷款、自营混币器的收入、卖给黑市的密钥盘换来的 CRT、混币器被标记的出款。污点只在 Web3 钱包里:花掉、转出、付手续费时,按这种币的脏比例带走脏的;兑换成别的币时脏比例跟过去(60% 脏的 CRT 换成 PSC,PSC 也是 60% 脏);Ponero 不带污点。Poinbase 只收干净的币:每种币最多只能充干净的枚数,脏的留在钱包里;所以 Poinbase 账户和银行里都是干净钱,出金到银行不做审查,只收 {ExchangeFee:%} 手续费,超出成本的收益征 {TaxRate:%} 税。往钱包里转干净的币不会让脏的变干净。去掉脏币的办法:混币器、Ponero 兑换、把币卖给买币的换币客户(卖出的币不追查污点)、在 Web3 商店付款。¶销毁钱包前必须自己把币转出,持仓和存款也要先取出:留在里面的会随钱包一起没有。" courier.odd1,……东西到了。 courier.odd2,"(他的手一直放在口袋里)在这儿签个字。" courier.sign,签收 @@ -361,10 +359,11 @@ hw.wallet.n,"钱包 {0}" hw.review.own,"自己的钱包:{0}" hw.review.poinbase,Poinbase 充值地址 poin.deposit,"充值地址:{0}" +poin.deposit.clean,{0} 里能充值的干净币:{1} wallets.count,"钱包 {0}/{1}" wallets.col.name,名称 wallets.col.addr,地址 -wallets.col.taint,污点 +wallets.col.taint,脏币 wallets.open,打开 wallets.use,连接 wallets.current,已连接 @@ -378,6 +377,7 @@ hw.paste,粘贴 hw.copied,地址已复制。 hw.copied.addr,"已复制 {0}" hw.balance.frozen,"(冻结 {0})" +hw.balance.dirty,(脏 {0}) wallets.destroy,销毁 wallets.destroy.sure,确认销毁 wallets.destroyed,"已销毁{0}:{1}" @@ -549,7 +549,7 @@ predict.purity.rust,上层水 nightlog.predict.win,预测押中:「{0}」,兑付 {1}。 nightlog.predict.lose,预测押错:「{0}」,本金 {1} 没了。 nightlog.predict.void,预测作废:「{0}」,退回本金 {1}。 -nightlog.predict.insider,「{0}」结算 {1}。警方怀疑这是内幕交易,这笔收益被标记,钱包污点增加 {2}。 +nightlog.predict.insider,「{0}」结算 {1}。警方怀疑这是内幕交易,其中 {2} CRC 记为脏币。 predict.tab.markets,盘口 predict.tab.intel,情报 predict.acct.crt,链上钱包 {0}:CRT {1} @@ -592,11 +592,10 @@ predict.brief.queued,{0}:行动已排期 predict.brief.none,{0}:暂时发起不了 predict.brief.can,{0}:可发起 {1} predict.clue.push,玩家推价 {0}%,操纵风险高 -nightlog.predict.manip,「{0}」结算 {1}。监管部门怀疑你操纵了价格,这笔兑付被标记,钱包污点增加 {2}。 +nightlog.predict.manip,「{0}」结算 {1}。监管部门怀疑你操纵了价格,其中 {2} CRC 记为脏币。 news.manip.title,交易所调查异常交易 news.manip.desc,监管部门通报,有人用大额现货单推动价格,从合约和预测里获利,涉事账户已被标记。 -taint.overflow,污点已超过钱包价值,超出的 {0} 记为诈骗罪证。 -perp.manip,平仓盈利 {0}。监管部门怀疑你操纵了价格,这笔盈利被标记,Poinbase 账户污点增加 {1}。 +perp.manip,平仓盈利 {0}。监管部门怀疑你操纵了价格,记诈骗罪证 {1}。 web3.sub.ponzi,理财 ponzi.h,高息理财 ponzi.acct,发行钱包 {0}:CRC {1} @@ -687,7 +686,7 @@ scam.support.name,Poinbase 客服 scam.support.1,您好,我是 Poinbase 客服。系统检测到您的账户有异常登录,已经被风控了。 scam.support.2,请在今天内把 {0} CRC 转到安全地址 {1} 做验证,验证完马上退回。 scam.support.3,不处理的话账户会被永久冻结。我先走了,记得转。 -predict.sold.caught,卖出,收回 {0}。警方怀疑这是内幕交易,这笔收益被标记,钱包污点增加 {1}。 +predict.sold.caught,卖出,收回 {0}。警方怀疑这是内幕交易,其中 {1} CRC 记为脏币。 predict.row.move,(昨晚 {0} {1}) predict.stats.h,历史(开盘均价 / 实际发生) predict.stats.row,{0}:{1} 个,开盘均价 {2},发生 {3}% @@ -710,7 +709,7 @@ news.story.serpico_rev.desc,据传革命军拿到了治安部内部腐败的证 news.story.serpico_bm.title,黑市与治安部达成默契 news.story.serpico_bm.desc,一份治安部内部文件在黑市易手。此后暗网结算通道明显稳定,CRT 的兑付没再出过岔子。 news.story.serpico_sec.title,治安部启动内部整顿 -news.story.serpico_sec.desc,治安部宣布彻查内部腐败,同时加强对资金流向的监控。Poinbase 收紧出金审查,混币服务被点名。 +news.story.serpico_sec.desc,治安部宣布彻查内部腐败,同时加强对资金流向的监控,混币服务被点名。 news.story.eleanor_leak.title,营养果育种数据曝光 news.story.eleanor_leak.desc,下层报社公开了一份营养果重新结籽的研究数据,帕斯泰尔公司股价重挫。托管上层资金的银行传出坏账,革命军声势上涨。 news.story.eleanor_return.title,帕斯泰尔追回失窃数据 @@ -771,7 +770,7 @@ agent.search.none,……没有。打扰了。 tumbler.v4.seized.1,我听说治安部搜了你的店。 tumbler.v4.seized.2,密钥在他们手里,所有用户的记录都会被翻出来。 tumbler.v4.seized.3,你跟他们说过什么,我不想知道了。 -nightlog.tumbler.leak,治安部用 Tumbler 的签名密钥还原了混币记录:{0} 笔出款洗掉的污点 {1} 加回了钱包。 +nightlog.tumbler.leak,治安部用 Tumbler 的签名密钥还原了混币记录:{0} 笔出款洗掉了 {1} 的污点,记诈骗罪证 {2}。 nightlog.tumbler.leak.none,治安部用 Tumbler 的签名密钥还原了混币记录。你最近没有从混币器提回过币。 nightlog.tumbler.note,门缝里塞进来一张纸条:“欠我的,我会拿回来。——T” nightlog.tumbler.tip,Tumbler 发来消息:明天治安部可能要查混币服务。 @@ -1037,7 +1036,7 @@ otc.cancel,放弃 otc.msg.gone,客户已经走了。 otc.msg.cash,现金不够。 otc.msg.sting,对方是便衣:现金 {0} 被没收,记销赃罪证。 -otc.msg.bought,收到 {0} {1},付现金 {2}。 +otc.msg.bought,收到 {0} {1}(其中脏的 {3}),付现金 {2}。 otc.msg.sold,转出 {0} {1},收现金 {2}。 gray.sub.own,自营混币器 ownmix.h,自营混币器 @@ -1087,3 +1086,4 @@ otc.nocash,现金都拿不出来?那算了。 otc.nowallet,钱包都没连上,币往哪儿转?算了。 otc.sting,别动,治安部。收购赃款,现金没收,这笔会记进你的档案。 hw.err.poinbase,Poinbase 不收 {0}。 +hw.err.tainted,钱包里的 {1} 有 {0} 枚是脏的,Poinbase 只收干净的:最多 {2} {1}。 diff --git a/src/Decentralized/Night.cs b/src/Decentralized/Night.cs index 111cc2b..12ef023 100644 --- a/src/Decentralized/Night.cs +++ b/src/Decentralized/Night.cs @@ -109,7 +109,7 @@ namespace Decentralized { var m = d.OwnMix; bool rivalOpen = !d.Story.MixerClosed && !d.Mixer.Sanctioned(day); - double rivalRemain = Math.Pow(1 - Mixer.RoundRate(Tuning.OwnMixTicket), Tuning.OwnMixAvgRounds); + double rivalRemain = Math.Pow(1 - Mixer.RoundRate(Tuning.OwnMixTicket, day), Tuning.OwnMixAvgRounds); var evs = m.Night(day, Session.Price, StoreReputation.GetBMReputation(), Mixer.Fee, rivalRemain, rivalOpen, StoryMods.Current.Sanction(day), ActiveEvents().Contains(MarketEvent.Crackdown), d.Rng); foreach (var e in evs) { @@ -311,8 +311,8 @@ namespace Decentralized if (m.Rugged) ps.AddNightLog(L.T("nightlog.mixer_rug", Fmt.Num(m.Amount), m.Asset), "cc7755"); else { - // 制裁期间提出的写明制裁;不在制裁期却被标记的是治安部的钓鱼混币器,只说被标记 - string flag = !m.Flagged ? "" : d.Mixer.Sanctioned(day) ? L.T("nightlog.mixer_flag") : L.T("nightlog.mixer_flag.trap"); + // 被标记的不洗、按全额污点带回:制裁期间提出的写明制裁;不在制裁期却被标记的是治安部的钓鱼混币器 + string flag = !m.Flagged ? "" : (d.Mixer.Sanctioned(day) ? L.T("nightlog.mixer_flag") : L.T("nightlog.mixer_flag.trap")); string line = L.T("nightlog.mixer", Fmt.Num(m.Amount), m.Asset, Fmt.Credits(m.TaintBefore), Fmt.Credits(m.TaintAfter)) + flag; if (m.Flagged) ps.AddNightLog(line, "cc7755"); else ps.AddNightLog(line); } @@ -376,11 +376,11 @@ namespace Decentralized else if (e.Kind == "void") ps.AddNightLog(L.T("nightlog.predict.void", PredictGame.Question(e.Market), Fmt.Credits(e.Amount))); else if (e.Kind == "manip") { - ps.AddNightLog(L.T("nightlog.predict.manip", PredictGame.Question(e.Market), Fmt.Credits(e.Amount), Fmt.Credits(e.Taint)) + TaintCrime.Commit(e.Over), "cc7755"); + ps.AddNightLog(L.T("nightlog.predict.manip", PredictGame.Question(e.Market), Fmt.Credits(e.Amount), Fmt.Num(e.Taint)), "cc7755"); News.Show("pd_news_manip_" + day, L.T("news.manip.title"), L.T("news.manip.desc"), 3); } else if (e.Kind == "insider") - ps.AddNightLog(L.T("nightlog.predict.insider", PredictGame.Question(e.Market), Fmt.Credits(e.Amount), Fmt.Credits(e.Taint)) + TaintCrime.Commit(e.Over), "cc7755"); + ps.AddNightLog(L.T("nightlog.predict.insider", PredictGame.Question(e.Market), Fmt.Credits(e.Amount), Fmt.Num(e.Taint)), "cc7755"); } foreach (var e in perpEvents) { diff --git a/src/Decentralized/OtcClient.cs b/src/Decentralized/OtcClient.cs index 8bf9daf..fb63423 100644 --- a/src/Decentralized/OtcClient.cs +++ b/src/Decentralized/OtcClient.cs @@ -92,7 +92,7 @@ namespace Decentralized var d = Session.Data; var side = Otc.PickSide(d.Rng); bool ponero = Unlock.BlackUnlocked && BlackMarket.DeskOpen(StoreReputation.GetBMReputation()); - var o = side == OtcSide.Sell ? Otc.MakeSell(Night.ActiveEvents(), ponero, Session.Price, Session.Rent(), d.Rng) : Otc.MakeBuy(Session.Price, Session.Rent(), d.Rng); + var o = side == OtcSide.Sell ? Otc.MakeSell(Night.ActiveEvents(), ponero, Session.Price, Session.Rent(), d.Rng, StoryMods.Current.OtcSting(StoreStation.GetDayCounter())) : Otc.MakeBuy(Session.Price, Session.Rent(), d.Rng); if (o == null) return null; string addr = d.Address("otc:" + (++d.Otc.Seq)); var c = Base(); @@ -186,12 +186,12 @@ namespace Decentralized } else { - double over = Otc.Receive(d.Hot, o, Session.Price); + Otc.Receive(d.Hot, o); d.Chain(ActiveAddress, d.Hot.Address, o.Asset, o.Qty); d.Otc.Record(o.Cash); - msg = L.T("otc.msg.bought", Fmt.Num(o.Qty), o.Asset, Fmt.Credits(o.Cash)) + TaintCrime.Commit(over); + msg = L.T("otc.msg.bought", Fmt.Num(o.Qty), o.Asset, Fmt.Credits(o.Cash), Fmt.Num(o.Qty * o.TaintRatio)); Say(L.T("otc.done")); - Log.Info($"换币客户:{o.Qty:0.##} {o.Asset} 进 {WalletWindow.NameOf(d.Hot)},付现金 {o.Cash},钱包污点 {d.Hot.Taint:0},超出 {over:0}"); + Log.Info($"换币客户:{o.Qty:0.##} {o.Asset} 进 {WalletWindow.NameOf(d.Hot)},付现金 {o.Cash},其中脏的 {o.Qty * o.TaintRatio:0.##},钱包里 {o.Asset} 脏 {d.Hot.DirtyOf(o.Asset):0.##}"); } Drop(); Session.Save(); diff --git a/src/Decentralized/Session.cs b/src/Decentralized/Session.cs index 821b74f..ec7a8c2 100644 --- a/src/Decentralized/Session.cs +++ b/src/Decentralized/Session.cs @@ -25,8 +25,8 @@ namespace Decentralized /// 一局的 mod 状态。整体序列化成 JSON 存进游戏的 mod 存档数据;显卡的健康度等存在显卡物品的标签上。 public sealed class SaveData { - /// 存档数据的版本:2 起保险基金用新的数值,3 起 Poinbase 主池是订单簿,4 起出块奖励和 NPC 算力 ×10(第十一阶段)。 - public int Version = 4; + /// 存档数据的版本:2 起保险基金用新的数值,3 起 Poinbase 主池是订单簿,4 起出块奖励和 NPC 算力 ×10(第十一阶段),5 起 Poinbase 没有污点。 + public int Version = 5; public int Day; public Rng Rng = new Rng((ulong)DateTime.UtcNow.Ticks); public Market Market; @@ -201,6 +201,13 @@ namespace Decentralized Data.Version = 4; Log.Info($"存档数据升级到版本 4:出块奖励 {Data.Network.Reward:0}、NPC 算力 {Data.Network.NpcHash:0}"); } + // 第十一阶段 stage 5:污点按币种记脏枚数、只在钱包里。旧的污点额按当前价格摊成脏枚数;Poinbase 账户和永续仓位的挪到 1 号钱包 + if (Data.Version < 5) + { + double was = TaintMigration.Run(Data.Wallets, Data.Poinbase, Data.Perps.Positions, Data.Mixer, Data.Black, Data.Staking, Data.Scams, Data.Predict, Data.OwnMix ?? new OwnMixer(), Price); + Data.Version = 5; + Log.Info($"存档数据升级到版本 5:旧污点 {was:0} 摊成各币的脏枚数,现在按现价共 {Data.Wallets.Sum(w => w.Taint(Price)):0}"); + } if (Data.Otc == null) Data.Otc = new OtcDesk(); if (Data.OwnMix == null) Data.OwnMix = new OwnMixer(); if (Data.Story == null) Data.Story = new StoryMods(); diff --git a/src/Decentralized/TerminalWindow.OwnMix.cs b/src/Decentralized/TerminalWindow.OwnMix.cs index 149093f..3ccf0ea 100644 --- a/src/Decentralized/TerminalWindow.OwnMix.cs +++ b/src/Decentralized/TerminalWindow.OwnMix.cs @@ -98,9 +98,9 @@ namespace Decentralized Summary = L.T("ownmix.withdraw.sum", Fmt.Num(v), asset), Execute = pw => { - if (!m.Withdraw(pw, asset, v, Session.Price, out double over)) { _message = L.T("ownmix.err"); Open(); return; } - _message = L.T("ownmix.withdrawn", Fmt.Num(v), asset) + TaintCrime.Commit(over); - Log.Info($"自营混币器取回 {v} {asset},钱包污点 {pw.Taint:0},超出 {over:0}"); + if (!m.Withdraw(pw, asset, v)) { _message = L.T("ownmix.err"); Open(); return; } + _message = L.T("ownmix.withdrawn", Fmt.Num(v), asset); + Log.Info($"自营混币器取回 {v} {asset},钱包里 {asset} 脏 {pw.DirtyOf(asset):0.##}"); Session.Save(); Open(); }, }); @@ -123,11 +123,11 @@ namespace Decentralized { if (m.Closed) return; double value = OwnMixer.AssetsList.Sum(a => m.Total(a) * Session.Price(a)); - m.Rug(pw, Session.Price, out double over); + m.Rug(pw); PlayerStore.Instance.secData.CommitCrime("FRAUD", (int)Tuning.OwnMixRugCrime); StoreReputation.ModReputation(StoreReputation.FACTION_BLACK_MARKET, -Tuning.OwnMixRugRep); News.Show("pd_news_ownmix_rug_" + StoreStation.GetDayCounter(), L.T("news.ownmix.rug.title"), L.T("news.ownmix.rug.desc"), 4); - _message = L.T("ownmix.rugged", Fmt.Credits(value)) + TaintCrime.Commit(over); + _message = L.T("ownmix.rugged", Fmt.Credits(value)); Log.Info($"自营混币器卷款跑路:{value:0},钱包 {pw.Address}"); Session.Save(); Open(); }, diff --git a/src/Decentralized/TerminalWindow.cs b/src/Decentralized/TerminalWindow.cs index d489a68..e460542 100644 --- a/src/Decentralized/TerminalWindow.cs +++ b/src/Decentralized/TerminalWindow.cs @@ -391,16 +391,6 @@ namespace Decentralized TableRow(b, w, L.T("bank.crc.k"), Fmt.Num(Session.Data.Poinbase.Get(Assets.CRC))); } - /// 提取前的合规审查提示:仅保留账户污点比例(额度与命中概率按设计不公开)。 - private static void AmlPreview(CustomUIBuilder b) - { - var pb = Session.Data.Poinbase; - double total = pb.Value(Session.Price); - double taintRatio = total > 0 ? pb.Taint / total : 0; - b.AddSeparator(); - b.AddLabel(L.T("aml.taint", (int)Math.Round(taintRatio * 100)), taintRatio > 0.05 ? "aml_note" : "aml_dim"); - } - private static string StableStatus(Stablecoins st, string asset, int day) { double p = st.Price(asset); @@ -513,18 +503,27 @@ namespace Decentralized private static readonly float[] HoldWBase = new[] { 80f, 100f, 110f, 110f }; private static float[] HoldW => Sc(HoldWBase); private static readonly TextAnchor[] HoldAligns = { TextAnchor.MiddleLeft, TextAnchor.MiddleRight, TextAnchor.MiddleRight, TextAnchor.MiddleRight }; + /// 钱包的持仓表多一列“其中脏的”(Poinbase 没有污点,不显示)。 + private static readonly float[] HoldDWBase = new[] { 70f, 95f, 85f, 95f, 95f }; + private static float[] HoldDW => Sc(HoldDWBase); + private static readonly TextAnchor[] HoldDAligns = { TextAnchor.MiddleLeft, TextAnchor.MiddleRight, TextAnchor.MiddleRight, TextAnchor.MiddleRight, TextAnchor.MiddleRight }; private static void Holdings(CustomUIBuilder b, Wallet w, Func show) { - TableHeader(b, HoldW.Sum() + 8f, HoldW, HoldAligns, L.T("col.asset"), L.T("col.amount"), L.T("col.value"), L.T("col.avg")); + bool dirtyCol = w != Session.Data.Poinbase; + var hw = dirtyCol ? HoldDW : HoldW; var ha = dirtyCol ? HoldDAligns : HoldAligns; + if (dirtyCol) TableHeader(b, hw.Sum() + 8f, hw, ha, L.T("col.asset"), L.T("col.amount"), L.T("col.dirty"), L.T("col.value"), L.T("col.avg")); + else TableHeader(b, hw.Sum() + 8f, hw, ha, L.T("col.asset"), L.T("col.amount"), L.T("col.value"), L.T("col.avg")); bool any = false; foreach (var kv in w.Balances.OrderBy(k => k.Key).Where(k => show(k.Key))) { any = true; string asset = kv.Key; bool selected = (_page == Page.Poinbase && _poinTab == PoinTab.Funds && asset == _fundsAsset); - TableRow(b, HoldW.Sum() + 8f, HoldW, HoldAligns, - new[] { kv.Key, Fmt.Num(kv.Value), Fmt.Credits(kv.Value * Session.Price(kv.Key)), AvgText(w, kv.Key) }, + double dirty = w.DirtyOf(asset); + TableRow(b, hw.Sum() + 8f, hw, ha, + dirtyCol ? new[] { kv.Key, Fmt.Num(kv.Value), dirty > 1e-9 ? Fmt.Num(dirty) : "—", Fmt.Credits(kv.Value * Session.Price(kv.Key)), AvgText(w, kv.Key) } + : new[] { kv.Key, Fmt.Num(kv.Value), Fmt.Credits(kv.Value * Session.Price(kv.Key)), AvgText(w, kv.Key) }, selected, () => { if (_page == Page.Poinbase && _poinTab == PoinTab.Funds) { _fundsAsset = asset; if (asset != Assets.CRC) _fundsBank = false; Open(); } }); } @@ -557,7 +556,6 @@ namespace Decentralized 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) @@ -584,7 +582,6 @@ namespace Decentralized { 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 => { r.BeginRow(4f); @@ -622,6 +619,9 @@ namespace Decentralized else { r.AddLabel(L.T("poin.deposit", d.Address("poinbase")), "deposit_dim"); + // 只收干净的币:连着的钱包里有脏币时,写明每种币能充多少 + if (d.Connected && Exchange.Listed.Any(a => d.Hot.DirtyOf(a) > 1e-9)) + r.AddLabel(L.T("poin.deposit.clean", WalletWindow.NameOf(d.Hot), string.Join(" ", Exchange.Listed.Where(a => d.Hot.Get(a) > 1e-9).Select(a => Fmt.Num(d.Hot.CleanAvail(a)) + " " + a))), "taint_note"); r.AddButton(L.T("hw.copy"), () => { Clipboard.Copy(d.Address("poinbase")); _message = L.T("hw.copied.addr", d.Address("poinbase")); Open(); }); } return; @@ -629,7 +629,6 @@ namespace Decentralized if (_fundsBank) { AmountRow(r); - AmlPreview(r); r.AddButton(L.T("trade.withdraw"), Withdraw); return; } @@ -1309,12 +1308,12 @@ namespace Decentralized Summary = L.T("predict.sum.sell", PredictGame.Question(m)), Execute = pw => { - var res = d.Predict.SellAll(pw, m, StoreStation.GetDayCounter(), Session.Price, out double got, out double taint, out double over); + var res = d.Predict.SellAll(pw, m, StoreStation.GetDayCounter(), Session.Price, out double got, out double taint); _message = res == PredictResult.Ok ? L.T("predict.sold", Fmt.Num(got)) : L.T("predict.err." + res); - if (res == PredictResult.Ok && taint + over > 1e-9) + if (res == PredictResult.Ok && taint > 1e-9) { - _message = L.T("predict.sold.caught", Fmt.Num(got), Fmt.Credits(taint)) + TaintCrime.Commit(over); - Log.Info($"内幕卖出:收回 {got:0},污点 +{taint:0},超出 {over:0}"); + _message = L.T("predict.sold.caught", Fmt.Num(got), Fmt.Num(taint)); + Log.Info($"内幕卖出:收回 {got:0},其中 {taint:0.##} CRC 记为脏的"); } if (res == PredictResult.Ok) Session.Save(); Open(); @@ -1353,16 +1352,17 @@ namespace Decentralized double margin = pos.Margin; CandleChart.Trade(_perpProduct, pos.Notional(PerpSpot(_perpProduct))); double paid = d.Perps.Close(d.Poinbase, _perpProduct, PerpSpot(_perpProduct), StoreStation.GetDayCounter(), out double deficit); - // 操纵:平仓盈利,而且盈利方向和玩家自己推价的方向一致,按推价幅度被查:盈利照常留在 Poinbase 账户,这笔盈利记污点(带上限) + // 操纵:平仓盈利,而且盈利方向和玩家自己推价的方向一致,按推价幅度被查:盈利照常留在 Poinbase 账户,只记诈骗罪证 double push = d.Market.PlayerPush, profit = paid - margin; bool aligned = _perpProduct == "PSC" && profit > 0 && (pos.Long ? push > 0 : push < 0); if (aligned && d.Rng.Chance(Math.Min(1, Market.ManipChance(push) * StoryMods.Current.Enforce(StoreStation.GetDayCounter())))) { int day = StoreStation.GetDayCounter(); - double over = d.Poinbase.AddTaintCapped(profit, Session.Price); + int fraud = (int)Math.Round(Wallet.FraudFor(profit)); + if (fraud > 0) PlayerStore.Instance.secData.CommitCrime("FRAUD", fraud); News.Show("pd_news_manip_" + day, L.T("news.manip.title"), L.T("news.manip.desc"), 3); - _message = L.T("perp.manip", Fmt.Credits(profit), Fmt.Credits(profit - over)) + TaintCrime.Commit(over); - Log.Info($"永续操纵被查:盈利 {profit:0} 记污点 {profit - over:0},超出 {over:0},推价 {push:0.000}"); + _message = L.T("perp.manip", Fmt.Credits(profit), fraud); + Log.Info($"永续操纵被查:盈利 {profit:0},记诈骗罪证 {fraud},推价 {push:0.000}"); Session.Save(); Open(); return; @@ -1410,7 +1410,7 @@ namespace Decentralized Cell(b, cols[0], (isCurrent ? "● " : "") + WalletWindow.NameOf(w), false, TextAnchor.MiddleLeft); Cell(b, cols[1], w.Address, false, TextAnchor.MiddleLeft); Cell(b, cols[2], Fmt.Credits(w.Value(Session.Price)), false, TextAnchor.MiddleRight); - Cell(b, cols[3], Fmt.Credits(w.Taint), false, TextAnchor.MiddleRight); + Cell(b, cols[3], Fmt.Credits(w.Taint(Session.Price)), false, TextAnchor.MiddleRight); b.End(); b.End(); b.BeginPanel(cols[4] - btnCut * k, 32f * F, TextAnchor.MiddleLeft, 0f, 0f); @@ -1573,7 +1573,7 @@ namespace Decentralized Holdings(l, w, a => true); l.AddSeparator(); l.AddLabel(L.T("wallet.total", Fmt.Credits(w.Value(Session.Price)))); - if (w.Taint > 0.5) l.AddLabel(L.T("wallet.taint", Fmt.Credits(w.Taint)), "taint_note"); + if (w.Taint(Session.Price) > 0.5) l.AddLabel(L.T("wallet.taint", Fmt.Credits(w.Taint(Session.Price))), "taint_note"); PriceTable(l); l.AddSeparator(); CandleChart.AddPicker(l, "web3", Assets.PSC, Open, _picked); @@ -1767,7 +1767,7 @@ namespace Decentralized var sellers = d.Black.Sellers; if (_merchant >= sellers.Count) _merchant = -1; bool platform = _merchant < 0; - b.AddLabel(L.T("black.rep", rep, BlackMarket.MaxLevel(rep)) + (w.Taint > 0.5 ? " " + L.T("wallet.taint", Fmt.Credits(w.Taint)) : ""), "black_rep_dim"); + b.AddLabel(L.T("black.rep", rep, BlackMarket.MaxLevel(rep)) + (w.Taint(Session.Price) > 0.5 ? " " + L.T("wallet.taint", Fmt.Credits(w.Taint(Session.Price))) : ""), "black_rep_dim"); b.BeginRow(8f, TextAnchor.UpperLeft); b.BeginPanel(SellerW + 8f, -1f, TextAnchor.UpperLeft, 0f, 2f); _clear.Add(b.Last.image); @@ -2512,8 +2512,6 @@ namespace Decentralized double got = _deskIn ? d.Black.ToPonero(pw, _deskAsset, v, day, Session.Price) : d.Black.FromPonero(pw, _deskAsset, v, day, Session.Price); if (got < 0) { _message = L.T("black.desk.fail"); Open(); return; } { double cr = v * Session.Price(_deskIn ? _deskAsset : Assets.Ponero); CandleChart.Trade(Assets.Ponero, cr); CandleChart.Trade(_deskAsset, cr); } - // 从 Ponero 出来的币来源不明:出金审查按"来自混币器"加重 - if (!_deskIn) d.Mixer.LastReturnDay = day; _message = _deskIn ? L.T("msg.trade", Fmt.Num(v), _deskAsset, Fmt.Num(got), Assets.Ponero) : L.T("msg.trade", Fmt.Num(v), Assets.Ponero, Fmt.Num(got), _deskAsset); Session.Save(); Open(); @@ -2537,7 +2535,7 @@ namespace Decentralized { l.AddHeader(d.Story.MixerRebranded ? L.T("mixer.brand") : L.T("mixer.h")); l.AddLabel(d.Story.MixerClosed ? L.T("mixer.status.closed") : d.Mixer.Sanctioned(day) ? L.T("mixer.sanctioned", d.Mixer.SanctionedUntil - day + 1) : L.T("mixer.ok"), d.Story.MixerClosed || d.Mixer.Sanctioned(day) ? "mixer_status_note" : "mixer_status_dim"); - if (w.Taint > 0.5) l.AddLabel(L.T("wallet.taint", Fmt.Credits(w.Taint)), "taint_note"); + if (w.Taint(Session.Price) > 0.5) l.AddLabel(L.T("wallet.taint", Fmt.Credits(w.Taint(Session.Price))), "taint_note"); l.AddSeparator(); l.AddHeader(L.T("mixer.pending")); if (d.Mixer.Pending.Count == 0) l.AddLabel(L.T("mixer.none"), "mixer_none_dim"); @@ -2545,7 +2543,7 @@ namespace Decentralized { TableHeader(l, MixW.Sum() + 8f, MixW, MixAligns, L.T("col.asset"), L.T("col.amount"), L.T("mixer.col.taint"), L.T("mixer.col.ready")); foreach (var p in d.Mixer.Pending) - TableRow(l, MixW.Sum() + 8f, MixW, MixAligns, new[] { p.Asset, Fmt.Num(p.Amount), Fmt.Credits(p.Taint), L.T("mixer.day", p.ReadyDay) }); + TableRow(l, MixW.Sum() + 8f, MixW, MixAligns, new[] { p.Asset, Fmt.Num(p.Amount), p.Dirty > 1e-9 ? Fmt.Num(p.Dirty) : "—", L.T("mixer.day", p.ReadyDay) }); } }, r => { @@ -2570,7 +2568,7 @@ namespace Decentralized r.End(); if (double.TryParse((_amount ?? "").Trim(), NumberStyles.Float, CultureInfo.InvariantCulture, out double v) && v > 0) { - double rate = Mixer.RoundRate(v * Session.Price(_mixAsset)); + double rate = Mixer.RoundRate(v * Session.Price(_mixAsset), day); r.AddLabel(L.T("mixer.preview", Fmt.Num(v * Math.Pow(1 - Mixer.Fee, _mixRounds)), _mixAsset, (int)Math.Round((1 - Math.Pow(1 - rate, _mixRounds)) * 100), day + _mixRounds), "mixer_preview_dim"); } r.AddButton(L.T("mixer.go"), () => @@ -2784,16 +2782,10 @@ namespace Decentralized var d = Session.Data; if (d.Perps.Debt > 0) { _message = L.T("perp.debt.block"); Open(); return; } if (d.Poinbase.Avail(Assets.CRC) + 1e-9 < v) { _message = L.T("msg.balance"); Open(); return; } - var r = d.Exchange.Cashout(d.Poinbase, v, Session.Price, StoreStation.GetDayCounter(), Session.Rent(), d.Mixer.RecentlyMixed(StoreStation.GetDayCounter()), d.Rng); + var r = d.Exchange.Cashout(d.Poinbase, v, Session.Price); int got = (int)Math.Floor(r.Received - r.Tax); ModHelper.AddCredit(got, true); _message = L.T("msg.cashout", got, Fmt.Credits(r.Tax)); - if (r.Outcome == AmlOutcome.Light) _message += "\n" + L.T("msg.aml_light", Fmt.Credits(r.Confiscated)); - if (r.Outcome == AmlOutcome.Heavy) - { - _message += "\n" + L.T("msg.aml_heavy", Fmt.Credits(r.Confiscated)); - PlayerStore.Instance.secData.CommitCrime("FENCING", (int)Math.Round(r.Crime)); - } Session.Save(); Open(); } diff --git a/src/Decentralized/TumblerStory.cs b/src/Decentralized/TumblerStory.cs index 7ef60cb..6011608 100644 --- a/src/Decentralized/TumblerStory.cs +++ b/src/Decentralized/TumblerStory.cs @@ -1,3 +1,4 @@ +using System; using System.Linq; using Decentralized.Domain; @@ -66,11 +67,13 @@ namespace Decentralized if (a.LeakDay >= 0 && day >= a.LeakDay && !a.Leaked) { a.Leaked = true; - var r = d.Mixer.Leak(day, d.Own, Session.Price); + var r = d.Mixer.Leak(day); + int fraud = (int)Math.Round(r.Fraud); + if (fraud > 0) ps.secData.CommitCrime("FRAUD", fraud); if (r.Count == 0) ps.AddNightLog(L.T("nightlog.tumbler.leak.none")); - else ps.AddNightLog(L.T("nightlog.tumbler.leak", r.Count, Fmt.Credits(r.Taint)) + TaintCrime.Commit(r.Over), "cc7755"); + else ps.AddNightLog(L.T("nightlog.tumbler.leak", r.Count, Fmt.Credits(r.Cleaned), fraud), "cc7755"); News.Show("pd_news_tumbler_leak", L.T("news.tumbler.leak.title"), L.T("news.tumbler.leak.desc"), 3, 8); - Log.Info($"Tumbler 密钥泄露:还原 {r.Count} 笔出款,污点 +{r.Taint:0},超出 {r.Over:0}"); + Log.Info($"Tumbler 密钥泄露:还原 {r.Count} 笔出款,洗掉的污点 {r.Cleaned:0},记诈骗罪证 {fraud}"); } bool? hint = a.Hint(day, d.Rng); if (hint != null) @@ -340,7 +343,7 @@ namespace Decentralized case Tumbler.Sell: d.Story.Apply("tumbler_sold", day); d.Story.After.StartSold(day, d.Rng); - d.Hot.Add(Assets.CRT, Tuning.TumblerSellCrt); d.Hot.Taint += Tuning.TumblerSellCrt * Tuning.TumblerSellTaint; d.Hot.Basis += Tuning.TumblerSellCrt; + d.Hot.AddDirty(Assets.CRT, Tuning.TumblerSellCrt, Tuning.TumblerSellCrt * Tuning.TumblerSellTaint); d.Hot.Basis += Tuning.TumblerSellCrt; d.Chain(d.Address("platform"), d.Hot.Address, Assets.CRT, Tuning.TumblerSellCrt); StoreReputation.ModReputation(StoreReputation.FACTION_BLACK_MARKET, Tuning.TumblerBmRep); News.Show("pd_news_tumbler_sold", L.T("news.tumbler.sold.title"), L.T("news.tumbler.sold.desc"), 4, 8); diff --git a/src/Decentralized/WalletWindow.cs b/src/Decentralized/WalletWindow.cs index e89269f..eb9b277 100644 --- a/src/Decentralized/WalletWindow.cs +++ b/src/Decentralized/WalletWindow.cs @@ -255,7 +255,8 @@ namespace Decentralized b.End(); b.BeginPanel(130f, 26f, TextAnchor.MiddleRight, 0f, 0f); _clear.Add(b.Last.image); - b.AddLabel(Amt(q) + (w.Frozen.TryGetValue(a, out var fz) && fz > 0 ? L.T("hw.balance.frozen", Amt(fz)) : "")); + double dq = w.DirtyOf(a); + b.AddLabel(Amt(q) + (w.Frozen.TryGetValue(a, out var fz) && fz > 0 ? L.T("hw.balance.frozen", Amt(fz)) : "") + (dq > 1e-9 ? L.T("hw.balance.dirty", Amt(dq)) : "")); b.End(); b.BeginPanel(RowW - 12f - 90f - 130f, 26f, TextAnchor.MiddleRight, 0f, 0f); _clear.Add(b.Last.image); @@ -266,7 +267,7 @@ namespace Decentralized } b.AddSeparator(); b.AddLabel(L.T("hw.total", Fmt.Credits(w.Value(Session.Price)))); - if (w.Taint > 0.5) b.AddLabel(L.T("wallet.taint", Fmt.Credits(w.Taint))); + if (w.Taint(Session.Price) > 0.5) b.AddLabel(L.T("wallet.taint", Fmt.Credits(w.Taint(Session.Price)))); if (Pending != null) b.AddLabel(Pending.Contract ? L.T("hw.pending.sign", Pending.Summary) : L.T("hw.pending.bill", Pending.Summary)); if (Congested) b.AddLabel(L.T("hw.congested"), "congest_note"); b.AddSpace(6f); @@ -345,11 +346,24 @@ namespace Decentralized if (bill.Asset != dev.Asset) return L.T("hw.err.asset", bill.Asset); if (v + 1e-9 < bill.Amount) return L.T("hw.err.short", Amt(bill.Amount), bill.Asset); } - else if (IsPoinbase(to)) { if (!Exchange.Listed.Contains(dev.Asset)) return L.T("hw.err.poinbase", dev.Asset); } + else if (IsPoinbase(to)) + { + if (!Exchange.Listed.Contains(dev.Asset)) return L.T("hw.err.poinbase", dev.Asset); + // Poinbase 只收干净的币:这种币最多充干净的枚数(手续费同币种时先扣掉) + double clean = CleanAfterFee(w, dev.Asset, dev.Asset == FeeAssetOf(dev) ? FeeIn(dev.Asset, dev.Tier) : 0); + if (v > clean + 1e-6) return L.T("hw.err.tainted", Amt(w.DirtyOf(dev.Asset)), dev.Asset, Amt(clean)); + } else if (Session.Data.Own(to) == null && Known(to)) return L.T("hw.err.nobill"); return null; } + /// 扣掉同币种的手续费(按脏比例带走一点脏的)之后,这种币干净、能动用的枚数。 + private static double CleanAfterFee(Wallet w, string asset, double fee) + { + double r = w.DirtyRatio(asset); + return Math.Max(0, Math.Min(w.Avail(asset) - fee, (w.Get(asset) - fee) * (1 - r))); + } + private static Bill Match(string to) => Pending != null && !Pending.Contract && ChainAddress.Same(Pending.Address, to) ? Pending : null; /// 有过往来的地址(平台、商家、混币器、兑换处):没有账单时对方不收。 @@ -539,7 +553,7 @@ namespace Decentralized Open(dev); } - /// 动画走完(或点了跳过):交易落地。付账单的执行终端那边的动作;转给自己的钱包或 Poinbase 的按比例带上污点;没人用的地址,币就没了。 + /// 动画走完(或点了跳过):交易落地。付账单的执行终端那边的动作;转给自己的钱包的按比例带上污点,转给 Poinbase 的只转干净的、污点留在钱包;没人用的地址,币就没了。 private static void Finish(Device dev) { var tx = dev.Tx; @@ -562,6 +576,8 @@ namespace Decentralized } int day = StoreStation.GetDayCounter(); double amt = tx.To != null ? Math.Min(tx.Amount, w.Avail(tx.Asset)) : 0; + // Poinbase 只收干净的币:落地时价格可能变了,超出干净部分的不转(留在钱包) + if (tx.To != null && tx.Bill == null && IsPoinbase(tx.To)) amt = Math.Min(amt, w.CleanAvail(tx.Asset)); if (tx.To != null) { d.Chain(w.Address, tx.To, tx.Asset, amt, tx.FeeAsset == tx.Asset ? tx.Fee : 0, tx.Block); @@ -586,7 +602,9 @@ namespace Decentralized if (tx.To == null) return; var own = d.Own(tx.To); Wallet target = own ?? (IsPoinbase(tx.To) ? d.Poinbase : new Wallet()); - Wallet.Transfer(w, target, tx.Asset, amt, Session.Price); + // Poinbase 只收干净的币:污点留在钱包里 + if (target == d.Poinbase) Wallet.TransferClean(w, target, tx.Asset, amt, Session.Price); + else Wallet.Transfer(w, target, tx.Asset, amt, Session.Price); if (own == null && target != d.Poinbase) Log.Info($"转进没人用的地址 {tx.To}:{amt} {tx.Asset}"); if (own == null && d.Scams.ScamAddrs.Any(a => ChainAddress.Same(a, tx.To))) PlayerStore.Instance.AddNightLog(L.T("nightlog.scam.sent", Fmt.Num(amt), tx.Asset), "cc7755"); TerminalWindow.Refresh(null); diff --git a/tests/Decentralized.Domain.Tests/Program.cs b/tests/Decentralized.Domain.Tests/Program.cs index 21d88a6..3200dbb 100644 --- a/tests/Decentralized.Domain.Tests/Program.cs +++ b/tests/Decentralized.Domain.Tests/Program.cs @@ -106,19 +106,29 @@ internal static class Program Check(Near(pool.QuoteReserve, 60000, 1e-9), "深度重设"); }); - Test("地址:污点和成本按价值比例随币走;Ponero 换入时污点停止传播", () => + Test("地址:每种币记脏枚数,转出、花掉、兑换按这种币的脏比例带走;成本按价值比例;Ponero 不带污点", () => { Func px = a => a == Assets.PSC ? 100 : 1; - var a = new Wallet { Address = "A", Taint = 300, Basis = 1000 }; - a.Add(Assets.CRT, 1000); + var a = new Wallet { Address = "A", Basis = 1000 }; + a.AddDirty(Assets.CRT, 1000, 300); var b = new Wallet { Address = "B" }; Wallet.Transfer(a, b, Assets.CRT, 250, px); - Check(Near(b.Taint, 75, 1e-9) && Near(a.Taint, 225, 1e-9), $"转出 1/4,污点带走 1/4:{b.Taint}"); + Check(Near(b.DirtyOf(Assets.CRT), 75, 1e-9) && Near(a.DirtyOf(Assets.CRT), 225, 1e-9), $"转出 1/4,脏枚数带走 1/4:{b.DirtyOf(Assets.CRT)}"); Check(Near(b.Basis, 250, 1e-9), "成本带走 1/4"); + a.Add(Assets.PSC, 5); + a.Add(Assets.CRT, -150); + Check(Near(a.DirtyOf(Assets.CRT), 180, 1e-9) && a.DirtyOf(Assets.PSC) == 0 && Near(a.Taint(px), 180, 1e-9), "花掉 150 CRT:按 30% 带走 45 枚脏的;干净的 PSC 不受影响;按现价的脏币价值 180"); + a.Convert(Assets.CRT, 100, Assets.PSC, 1); + Check(Near(a.DirtyOf(Assets.PSC), 0.3, 1e-9) && Near(a.DirtyOf(Assets.CRT), 150, 1e-9), "兑换:30% 脏的 CRT 换来的 PSC 也是 30% 脏"); + a.Convert(Assets.CRT, 100, Assets.Ponero, 50, clean: true); + Check(a.DirtyOf(Assets.Ponero) == 0 && Near(a.DirtyOf(Assets.CRT), 120, 1e-9), "兑入 Ponero:兑掉的脏币消失,Ponero 是干净的"); + var sc = new Wallet(); sc.AddDirty(Assets.CRC, 1000, 400); sc.Scale(Assets.CRC, 0.5); + Check(Near(sc.Get(Assets.CRC), 500, 1e-9) && Near(sc.DirtyOf(Assets.CRC), 200, 1e-9), "CRC 减记:脏枚数同比例缩水"); + Check(Near(sc.MarkDirty(Assets.CRC, 400), 100, 1e-9) && Near(sc.DirtyOf(Assets.CRC), 500, 1e-9), "补记脏币不超过干净的枚数,返回没记上的"); var c = new Wallet { Address = "C" }; b.Add(Assets.Ponero, 10); Wallet.Transfer(b, c, Assets.Ponero, 10, px); - Check(c.Taint == 0, "Ponero 转入的地址不带污点"); + Check(c.Taint(px) == 0, "Ponero 转入的地址不带污点"); bool threw = false; try { a.Add(Assets.CRT, -10000); } catch (InvalidOperationException) { threw = true; } Check(threw, "余额不足时拒绝"); @@ -499,45 +509,46 @@ internal static class Program Check(Math.Abs(lost / (double)n - 0.1) < 0.03, $"命中率 {lost / (double)n:P1}"); }); - Test("合规出金:干净小额不查;污点高时重度命中记罪证;轻度命中只没收污点部分;只对收益计税", () => + Test("Poinbase 只收干净的币:每种币最多充干净的枚数、脏的留在钱包;出金不审查、只对收益计税", () => { Func px = a => 1; - Check(Exchange.HitChance(500, 0, 0, 200, false) == 0, "干净、低于 5 倍房租:不查"); - Check(Near(Exchange.HitChance(2000, 0, 0, 200, false), 0.2, 1e-9), "单笔为大额阈值 2 倍:20%"); - Check(Near(Exchange.HitChance(1000, 500, 0, 200, false), 0.75, 1e-9), "污点 50%:75%"); - Check(Exchange.HitChance(100000, 100000, 1e6, 200, true) == Tuning.AmlMaxChance, "上限 90%"); - int heavy = 0; - double crime = 0; - for (int i = 0; i < 1000; i++) - { - var w = new Wallet { Taint = 500, Basis = 1000 }; - w.Add(Assets.CRC, 1000); - var r = new Exchange().Cashout(w, 1000, px, 1, 200, false, new Rng((ulong)i)); - if (r.Outcome == AmlOutcome.Heavy) { heavy++; crime = r.Crime; Check(Near(r.Received, 1000 * (1 - Tuning.ExchangeFee) - 500, 1e-6), "重度:没收污点部分"); } - else Check(Near(r.Received, 1000 * (1 - Tuning.ExchangeFee), 1e-6) && r.Tax == 0, "未命中:全额到账;本金不计税"); - } - Check(Near(heavy / 1000.0, 0.75, 0.04) && crime == 500, $"污点 50% 时约 75% 重度命中,罪证 = 污点额:{heavy / 1000.0:P0}"); - var light = new Wallet { Taint = 150 }; - light.Add(Assets.CRC, 1000); - CashoutResult lr = null; - for (ulong i = 0; lr == null || lr.Outcome == AmlOutcome.Clear; i++) - { - var w = new Wallet { Taint = 150 }; - w.Add(Assets.CRC, 1000); - lr = new Exchange().Cashout(w, 1000, px, 1, 200, false, new Rng(i)); - } - Check(lr.Outcome == AmlOutcome.Light && lr.Crime == 0 && Near(lr.Confiscated, 150, 1e-6), "污点 15%:轻度命中,没收 150、不记罪证"); - Check(Near(lr.Tax, (1000 * (1 - Tuning.ExchangeFee) - 150) * Tuning.TaxRate, 1e-6), "成本为 0 时到账部分全额计税"); - var ex = new Exchange(); - var big = new Wallet(); - big.Add(Assets.CRC, 4000); - ex.Cashout(big, 2000, px, 1, 200, false, new Rng(1)); - Check(Near(Exchange.HitChance(2000, 0, ex.History.Sum(h => h.Value), 200, false), 0.2 + 0.2 * 1000 / 3000.0, 1e-9), - "7 天内累计超过 15 倍房租也会提高命中率"); + var w = new Wallet { Address = "w", Basis = 800 }; + w.AddDirty(Assets.CRC, 1000, 500); + Check(Near(w.CleanAvail(Assets.CRC), 500, 1e-9), "1000 CRC、500 枚脏:能充 500"); + var pb = new Wallet { Address = "pb" }; + double moved = Wallet.TransferClean(w, pb, Assets.CRC, 800, px); + Check(Near(moved, 500, 1e-9) && Near(w.DirtyOf(Assets.CRC), 500, 1e-9) && Near(w.Get(Assets.CRC), 500, 1e-9) && pb.Taint(px) == 0 && Near(pb.Basis, 400, 1e-9) && Near(w.Basis, 400, 1e-9), + "要充 800 只转了干净的 500:脏的留在钱包(剩 500 CRC 全脏),成本按价值比例带走"); + Check(w.CleanAvail(Assets.CRC) == 0, "剩下的全是脏的,一枚也充不进去"); + w.Add(Assets.CRC, 300); + Check(Near(w.CleanAvail(Assets.CRC), 300, 1e-9), "转进干净的 300 只能再充 300"); + var two = new Wallet(); two.AddDirty(Assets.CRT, 100, 100); two.Add(Assets.PSC, 2); + Check(Near(two.CleanAvail(Assets.PSC), 2, 1e-9) && two.CleanAvail(Assets.CRT) == 0, "按币种分开:CRT 全脏不影响干净的 PSC"); + var fz = new Wallet(); fz.AddDirty(Assets.CRT, 1000, 600); fz.Freeze(Assets.CRT, 0.5, 9); + Check(Near(fz.CleanAvail(Assets.CRT), 400, 1e-9), "冻结的不能充:取可动用和干净的较小者"); + var acct = new Wallet { Basis = 1000 }; + acct.Add(Assets.CRC, 1000); + var r = new Exchange().Cashout(acct, 1000, px); + Check(Near(r.Received, 1000 * (1 - Tuning.ExchangeFee), 1e-6) && r.Tax == 0, "出金全额到账(扣手续费),本金不计税"); + var gain = new Wallet { Basis = 600 }; gain.Add(Assets.CRC, 1000); + var g = new Exchange().Cashout(gain, 1000, px); + Check(Near(g.Tax, (1000 * (1 - Tuning.ExchangeFee) - 600) * Tuning.TaxRate, 1e-6), "超出成本的部分计税"); var dep = new Wallet { Basis = 1000 }; dep.Add(Assets.CRC, 1000); - var dr = new Exchange().Cashout(dep, 1000, a => 0.9, 1, 200, false, new Rng(1)); - Check(Near(dr.Received, 900 * (1 - Tuning.ExchangeFee), 1e-6), "CRC 脱锚时按市价兑出"); + Check(Near(new Exchange().Cashout(dep, 1000, a => 0.9).Received, 900 * (1 - Tuning.ExchangeFee), 1e-6), "CRC 脱锚时按市价兑出"); + // 存档迁移:旧的整钱包污点额按现价摊成各币脏枚数;Poinbase 和永续仓位的挪到 1 号钱包一起摊,超出的作废 + Func px2 = a => a == Assets.PSC ? 100 : 1; + var old = new Wallet { LegacyTaint = 300 }; old.Add(Assets.CRC, 1000); + var pos = new List { new PerpPosition { Product = "PSC", LegacyTaint = 200 } }; + var w1 = new Wallet { Address = "w1", LegacyTaint = 100 }; w1.Add(Assets.CRC, 400); w1.Add(Assets.PSC, 2); w1.Add(Assets.Ponero, 50); + var w2 = new Wallet { Address = "w2", LegacyTaint = 50 }; w2.Add(Assets.CRT, 100); + var mixer = new Mixer(); mixer.Pending.Add(new MixDeposit { Asset = Assets.PSC, Amount = 3, LegacyTaint = 150 }); + var book = new PredictBook(); book.Positions.Add(new PredictPos { Cost = 100, LegacyTaint = 40 }); + double was = TaintMigration.Run(new List { w1, w2 }, old, pos, mixer, new BlackMarket(), new Staking(), new Scams(), book, new OwnMixer(), px2); + Check(old.LegacyTaint == 0 && pos[0].LegacyTaint == 0 && w1.LegacyTaint == 0 && Near(w1.DirtyOf(Assets.CRC), 400, 1e-9) && Near(w1.DirtyOf(Assets.PSC), 2, 1e-9) && w1.DirtyOf(Assets.Ponero) == 0, + "1 号钱包:自己 100 + Poinbase 300 + 永续 200 = 600,超过可追踪币的价值 600 封顶,全部记脏;Ponero 不摊"); + Check(Near(w2.DirtyOf(Assets.CRT), 50, 1e-9), "2 号钱包:污点 50 / 价值 100 → CRT 一半脏"); + Check(Near(mixer.Pending[0].Dirty, 1.5, 1e-9) && Near(book.Positions[0].Dirty, 40, 1e-9) && Near(was, 840, 1e-9), "托管:混币器在途按价格换成脏枚数,预测持仓同理;日志总额 840"); }); Test("二手贩子:老实人不报价;中间商加价;骗子夹带假卡;指出问题按维度扣价、拆穿假货按真实芯片算", () => @@ -696,18 +707,16 @@ internal static class Program var m = Market.CreateDefault(3); var st = new Stablecoins(); var net = new Network(); - var w = new Wallet { Address = "hot", Taint = 12, Basis = 34 }; - w.Add(Assets.PSC, 5); + var w = new Wallet { Address = "hot", Basis = 34 }; + w.AddDirty(Assets.PSC, 5, 1.5); var ex = new Exchange(); - ex.History.Add(new KeyValuePair(2, 100)); var rng = new Rng(77); for (int d = 1; d <= 5; d++) { m.Night(new MarketEvent[0], rng, d, a => 1); st.Night(d, rng, 0); net.Night(d, m.Price, 10); } var bundle = new SaveBundle { Market = m, Stable = st, Network = net, Hot = w, Exchange = ex, Rng = rng }; string json = Newtonsoft.Json.JsonConvert.SerializeObject(bundle); var back = Newtonsoft.Json.JsonConvert.DeserializeObject(json); Check(Near(back.Market.Price, m.Price, 1e-9) && back.Market.Pools.Count == m.Pools.Count && back.Market.Pools[1].Id == m.Pools[1].Id, "交易对与价格"); - Check(back.Hot.Get(Assets.PSC) == 5 && back.Hot.Taint == 12 && back.Hot.Basis == 34, "钱包余额、污点、成本"); - Check(back.Exchange.History.Count == 1 && back.Exchange.History[0].Value == 100, "出金记录"); + Check(back.Hot.Get(Assets.PSC) == 5 && back.Hot.DirtyOf(Assets.PSC) == 1.5 && back.Hot.Basis == 34, "钱包余额、脏枚数、成本"); Check(Near(back.Network.NpcHash, net.NpcHash, 1e-9) && Near(back.Stable.Reserve, st.Reserve, 1e-9), "全网算力、CRA 储备"); for (int d = 6; d <= 10; d++) { @@ -723,20 +732,20 @@ internal static class Program Check(CoinPayment.AssetFor("FACTION_BLACK_MARKET") == Assets.CRT && CoinPayment.AssetFor("FACTION_SECURITY") == null, "派系对应的币"); double q = CoinPayment.Receive(w, Assets.CRT, 200, 0.5, 40); Check(Near(q, 400 * (1 + Tuning.CoinPayPremium), 1e-9) && Near(w.Get(Assets.CRT), q, 1e-9), "按币价换算数量,含溢价"); - Check(Near(w.Taint, 80, 1e-9) && Near(w.Basis, 200, 1e-9), "污点 = 货值 × 热度%,成本 = 货值(溢价不带污点)"); + Check(Near(w.DirtyOf(Assets.CRT), 80 / 0.5, 1e-9) && Near(w.Basis, 200, 1e-9), "脏的 = 货值 × 热度% 那部分的币(160 枚),成本 = 货值(溢价干净)"); Check(CoinPayment.Receive(w, Assets.CRC, 0, 1, 10) == 0, "零金额不收"); }); - Test("混币器:按价值比例带走污点、轮数即天数、手续费与清洗、匿名集、制裁标记", () => + Test("混币器:按这种币的脏比例带走脏枚数、轮数即天数、手续费与清洗、匿名集、制裁期间整笔脏", () => { Func px = a => a == Assets.PSC ? 10 : 1; var w = new Wallet { Address = "t" }; - w.Add(Assets.CRC, 1000); w.Add(Assets.PSC, 100); // 总价值 2000 - w.Taint = 400; w.Basis = 1000; + w.AddDirty(Assets.CRC, 1000, 200); w.AddDirty(Assets.PSC, 100, 20); // 总价值 2000,各 20% 脏 + w.Basis = 1000; var m = new Mixer(); Check(m.Deposit(w, Assets.CRC, 1000, 9, 1, px) == null && m.Deposit(w, Assets.CRC, 50, 1, 1, px) == null, "轮数超限、低于最小额不收"); var d = m.Deposit(w, Assets.CRC, 1000, 2, 1, px); - Check(d != null && Near(d.Taint, 200, 1e-9) && Near(w.Taint, 200, 1e-9) && Near(w.Get(Assets.CRC), 0, 1e-9), "存入 1000 / 2000:带走一半污点"); + Check(d != null && Near(d.Dirty, 200, 1e-9) && w.DirtyOf(Assets.CRC) == 0 && Near(w.DirtyOf(Assets.PSC), 20, 1e-9) && Near(w.Get(Assets.CRC), 0, 1e-9), "存入 1000 CRC:带走 200 枚脏的,PSC 不受影响"); var rng = new Rng(3); Check(m.Night(w, 2, px, rng).Count == 0, "未到期不提回"); var res = m.Night(w, 3, px, rng); @@ -744,15 +753,14 @@ internal static class Program double rate = Mixer.RoundRate(1000); Check(Near(w.Get(Assets.CRC), 1000 * (1 - Tuning.MixerFee) * (1 - Tuning.MixerFee), 1e-6) && Near(res[0].TaintAfter, 200 * (1 - rate) * (1 - rate), 1e-6), "两轮:手续费与污点按轮数递减"); Check(Mixer.RoundRate(100000) < Mixer.RoundRate(1000) / 3, "存入越大匿名集占比越大,清洗越差"); - Check(m.RecentlyMixed(3) && !m.RecentlyMixed(3 + Tuning.AmlWindowDays + 1), "提回后一段时间内出金按混币来源加重"); m.OnEvent(MarketEvent.Crackdown, 5, new Rng(1)); int hit = 0; for (int i = 0; i < 400; i++) { var t = new Mixer(); t.OnEvent(MarketEvent.Crackdown, 1, new Rng((ulong)i + 1)); if (t.Sanctioned(2)) hit++; } Check(hit > 150 && hit < 250, $"镇压时约一半概率被制裁:{hit}/400"); var w2 = new Wallet { Address = "u" }; w2.Add(Assets.CRC, 500); var m2 = new Mixer { SanctionedUntil = 10 }; m2.Deposit(w2, Assets.CRC, 500, 1, 1, px); - m2.Night(w2, 2, px, new Rng(5)); - Check(w2.Flagged, "制裁期间提出的币被标记"); + var fr = m2.Night(w2, 2, px, new Rng(5)).Single(); + Check(fr.Flagged && Near(w2.DirtyOf(Assets.CRC), w2.Get(Assets.CRC), 1e-6), $"制裁期间提出:不洗,整笔都是脏的({w2.DirtyOf(Assets.CRC):0} / {w2.Get(Assets.CRC):0})"); }); Test("CRT 冻结:冻一半、可动用余额减少、到期解冻;声望越高越不容易被冻", () => @@ -777,15 +785,15 @@ internal static class Program Check(bm.Refresh(10, 45, new Rng(1), id => 100) && bm.Offers.Count > 0 && bm.Offers.Where(o => o.Kind == GoodKind.Contraband).All(o => o.Level <= 2 && o.Price == 130), "声望 45 开放中档,溢价 30%"); Check(!bm.Refresh(12, 45, new Rng(2), id => 100) && bm.Refresh(17, 45, new Rng(2), id => 100), "每周刷新"); var w = new Wallet { Address = "t" }; - w.Add(Assets.PSC, 10); w.Add(Assets.CRT, 1000); w.Taint = 400; w.Basis = 800; // 总价值 2000 + w.Add(Assets.PSC, 10); w.AddDirty(Assets.CRT, 1000, 400); w.Basis = 800; // 总价值 2000 var offer = new BmOffer { Item = "x", Qty = 1, Price = 500, Level = 1 }; bm.Offers.Add(offer); Check(!bm.Buy(offer, w, Assets.CRC, price), "不收 CRC"); - Check(bm.Buy(offer, w, Assets.CRT, price) && Near(w.Get(Assets.CRT), 500, 1e-9) && Near(w.Taint, 300, 1e-6) && Near(w.Basis, 600, 1e-6) && !bm.Offers.Contains(offer), "付币:污点与成本按比例留给卖家,卖完下架"); + Check(bm.Buy(offer, w, Assets.CRT, price) && Near(w.Get(Assets.CRT), 500, 1e-9) && Near(w.DirtyOf(Assets.CRT), 200, 1e-6) && Near(w.Basis, 600, 1e-6) && !bm.Offers.Contains(offer), "付币:付出的 CRT 按 40% 带走脏的,成本按比例留给卖家,卖完下架"); w = new Wallet { Address = "t" }; - w.Add(Assets.PSC, 10); w.Taint = 500; w.Basis = 1000; // 总价值 1000,PSC 价 100 + w.AddDirty(Assets.PSC, 10, 5); w.Basis = 1000; // 总价值 1000,PSC 价 100,一半脏 double got = bm.ToPonero(w, Assets.PSC, 5, 20, price); // 价值 500 - Check(Near(got, 500 * (1 - Tuning.PoneroFee) / 50, 1e-9) && Near(w.Taint, 250, 1e-6) && Near(w.Get(Assets.PSC), 5, 1e-9), "兑入 Ponero:扣手续费,这部分污点留在原地"); + Check(Near(got, 500 * (1 - Tuning.PoneroFee) / 50, 1e-9) && Near(w.DirtyOf(Assets.PSC), 2.5, 1e-6) && w.DirtyOf(Assets.Ponero) == 0 && Near(w.Get(Assets.PSC), 5, 1e-9), "兑入 Ponero:扣手续费,兑掉的脏币消失,Ponero 干净"); Check(bm.ToPonero(w, Assets.PSC, 5.1, 20, price) < 0, "超过每日额度不能兑"); Check(bm.ToPonero(w, Assets.PSC, 5, 21, price) >= 0, "第二天额度恢复"); double back = bm.FromPonero(w, Assets.CRT, 10, 22, price); @@ -806,12 +814,12 @@ internal static class Program var lg = new BmListing { Qty = 99, Seller = 0, Item = "x", Price = 1000 }; var lb = new BmListing { Qty = 99, Seller = 1, Item = "x", Price = 1000 }; var w = new Wallet { Address = "t" }; - w.Add(Assets.CRT, 10000); w.Taint = 4000; w.Basis = 5000; + w.AddDirty(Assets.CRT, 10000, 4000); w.Basis = 5000; var o = bm.Place(lb, 1, PayMode.Escrow, w, Assets.CRT, 10, price); - Check(o != null && Near(w.Get(Assets.CRT), 10000 - 1050, 1e-9) && w.Taint < 4000 && bm.Place(lg, 1, PayMode.Escrow, w, Assets.CRC, 10, price) == null, "托管下单:扣币、污点留在订单上;不收 CRC"); + Check(o != null && Near(w.Get(Assets.CRT), 10000 - 1050, 1e-9) && Near(o.Dirty, 420, 1e-6) && w.DirtyOf(Assets.CRT) < 4000 && bm.Place(lg, 1, PayMode.Escrow, w, Assets.CRC, 10, price) == null, "托管下单:扣币、脏的 420 枚留在订单上;不收 CRC"); double tBefore = 4000; var ev = bm.Night(13, false, w, new Rng(1)); - Check(ev.Any(e => e.Kind == "scam_refund") && Near(w.Get(Assets.CRT), 10000, 1e-6) && Near(w.Taint, tBefore, 1e-6) && Near(w.Basis, 5000, 1e-6), "骗子卖家 + 托管:退款,污点与成本一并还回(不能借退款洗钱)"); + Check(ev.Any(e => e.Kind == "scam_refund") && Near(w.Get(Assets.CRT), 10000, 1e-6) && Near(w.DirtyOf(Assets.CRT), tBefore, 1e-6) && Near(w.Basis, 5000, 1e-6), "骗子卖家 + 托管:退款,脏枚数与成本一并还回(不能借退款洗钱)"); var o2 = bm.Place(lb, 1, PayMode.Advance, w, Assets.CRT, 20, price); var ev2 = bm.Night(23, false, w, new Rng(2)); Check(o2.State == OrderState.Lost && Near(w.Get(Assets.CRT), 10000 - 900, 1e-6), "骗子卖家 + 提前放款:钱没了"); @@ -893,7 +901,7 @@ internal static class Program b2.Night(4, false, w2, new Rng(8), 0, price); Check(s2.State == SaleState.Sold, "没到放款日不动"); b2.Night(5, false, w2, new Rng(9), 0, price); - Check(s2.State == SaleState.Paid && Near(w2.Get(Assets.CRT), crt0 + s2.Proceeds, 1e-9) && Near(w2.Taint, s2.Taint, 1e-9) && (s2.Taint == 0 || Near(s2.Taint, s2.Proceeds * BlackMarket.TaintRatio(0.8), 1e-6)), "放款:货款进钱包,污点按比例"); + Check(s2.State == SaleState.Paid && Near(w2.Get(Assets.CRT), crt0 + s2.Proceeds, 1e-9) && Near(w2.DirtyOf(Assets.CRT), s2.Taint, 1e-9) && (s2.Taint == 0 || Near(s2.Taint, s2.Proceeds * BlackMarket.TaintRatio(0.8), 1e-6)), "放款:货款进钱包,按污点比例记脏的(CRT 价 1)"); // 赃物:货款按热度带污点,不走随机 var bh = new BlackMarket(); var wh = new Wallet(); wh.Add(Assets.CRT, 1000); @@ -1100,7 +1108,7 @@ internal static class Program Test("永续合约:开平仓、强平、基金与欠款、自动减仓、没收", () => { Func pr = a => a == Assets.PSC ? 100 : 1; - Wallet NewAcct(double crc, double taint = 0) { var w = new Wallet { Address = "pb" }; w.Add(Assets.CRC, crc); w.Taint = taint; w.Basis = crc; return w; } + Wallet NewAcct(double crc) { var w = new Wallet { Address = "pb" }; w.Add(Assets.CRC, crc); w.Basis = crc; return w; } // 滑点:名义价值占永续深度的比例,买入往上、卖出往下 var bs = new PerpBook(); double pool = Tuning.PerpDepth(1); @@ -1108,25 +1116,25 @@ internal static class Program // 滑点吃掉了强平线之间的空间:开仓被拒 var bt = new PerpBook { DepthMult = 0.05 }; var at = NewAcct(5000); Check(bt.Open(at, "PSC", true, 1000, 5, 100, 1, pr) == PerpResult.Thin && bt.Positions.Count == 0 && at.Get(Assets.CRC) == 5000, "滑点大到一开就被强平的单子被拒,不扣钱"); - // 开仓与手续费、保证金、污点 - var b = new PerpBook { DepthMult = 1e12 }; var a = NewAcct(2000, 1000); + // 开仓与手续费、保证金(Poinbase 没有污点) + var b = new PerpBook { DepthMult = 1e12 }; var a = NewAcct(2000); Check(b.Open(a, "PSC", true, 1000, 6, 100, 1, pr) == PerpResult.Leverage && b.Open(a, "PSC", true, 3000, 3, 100, 1, pr) == PerpResult.Funds, "杠杆超限、余额不足被拒"); Check(b.Open(a, "PSC", true, 1000, 5, 100, 1, pr) == PerpResult.Ok, "开 5× 多头"); var pos = b.Of("PSC"); double fee = 5000 * Tuning.PerpFee; - Check(Math.Abs(pos.Size - 50) < 1e-9 && Math.Abs(a.Get(Assets.CRC) - (1000 - fee)) < 1e-9 && Math.Abs(pos.Taint - 500) < 1e-9, $"名义 5000,手续费 {fee},污点 500 随保证金进仓位"); + Check(Math.Abs(pos.Size - 50) < 1e-9 && Math.Abs(a.Get(Assets.CRC) - (1000 - fee)) < 1e-9 && Math.Abs(pos.Basis - 1000) < 1e-9, $"名义 5000,手续费 {fee},成本 1000 随保证金进仓位"); Check(b.Open(a, "PSC", false, 100, 2, 100, 1, pr) == PerpResult.Opposite, "不能同时多空"); Check(b.Open(a, "PSC", true, 100, 2, 100, 1, pr) == PerpResult.Single && b.Open(a, "SPARK", true, 100, 1, 10, 1, pr) == PerpResult.Single && b.Positions.Count == 1, "只有一个仓位:加仓、开别的标的都被拒,只能追加保证金"); Check(Math.Abs(pos.LiqPrice - (50 * 100 - 1000) / (50 * (1 - Tuning.PerpMaint))) < 1e-9 && pos.LiqPrice > 85 && pos.LiqPrice < 90, $"强平价 {pos.LiqPrice:0.0}(约 −11%)"); - // 平仓盈利:干净的新币,污点原额退回 + // 平仓盈利:成本原额退回 double paid = b.Close(a, "PSC", 110, 2, out double d0); double expect = 1000 + 50 * 10 - 50 * 110 * Tuning.PerpFee; - Check(Math.Abs(paid - expect) < 1e-6 && d0 == 0 && Math.Abs(a.Taint - 1000) < 1e-6 && b.Positions.Count == 0, $"盈利平仓 {paid:0.00},污点全额退回"); - // 平仓亏损:污点按剩下的比例退回 - var a2 = NewAcct(2000, 1000); var b2 = new PerpBook { DepthMult = 1e12 }; + Check(Math.Abs(paid - expect) < 1e-6 && d0 == 0 && Math.Abs(a.Basis - 2000) < 1e-6 && b.Positions.Count == 0, $"盈利平仓 {paid:0.00},成本全额退回"); + // 平仓亏损:成本按剩下的比例退回 + var a2 = NewAcct(2000); var b2 = new PerpBook { DepthMult = 1e12 }; b2.Open(a2, "PSC", true, 1000, 5, 100, 1, pr); double paid2 = b2.Close(a2, "PSC", 95, 2, out _); - Check(paid2 > 700 && paid2 < 760 && a2.Taint < 1000 - 500 * (1 - paid2 / 1000) + 1, $"亏损平仓 {paid2:0.0},污点按比例少回"); + Check(paid2 > 700 && paid2 < 760 && a2.Basis < 2000 - 1000 * (1 - paid2 / 1000) + 1, $"亏损平仓 {paid2:0.0},成本按比例少回"); // 夜间强平:权益不到 10% 名义价值;剩余进基金 var b3 = new PerpBook { DepthMult = 1e12 }; var a3 = NewAcct(5000); b3.Open(a3, "PSC", true, 1000, 5, 100, 1, pr); @@ -1181,15 +1189,15 @@ internal static class Program Check(!b8.Night(3, new Dictionary { ["PSC"] = 87 }, a8, pr).Any(e => e.Kind == "wipe"), "小行情不上新闻"); }); - Test("CRA 质押池:计息、解锁期、污点随币、螺旋", () => + Test("CRA 质押池:计息、解锁期、脏枚数随币、螺旋", () => { Func price = a => a == Assets.PSC ? 100 : 1; - var w = new Wallet { Address = "0xa" }; w.Add(Assets.CRA, 1000); w.Add(Assets.PSC, 10); w.Taint = 400; w.Basis = 600; + var w = new Wallet { Address = "0xa" }; w.AddDirty(Assets.CRA, 1000, 400); w.Add(Assets.PSC, 10); w.Basis = 600; var st = new Staking(); Check(!st.Stake(w, 2000, price), "余额不足不能质押"); Check(st.Stake(w, 500, price) && Math.Abs(w.Get(Assets.CRA) - 500) < 1e-9, "质押 500,钱包剩 500"); - double lotTaint = st.Of("0xa").Taint; - Check(Math.Abs(lotTaint - 400 * 500.0 / 2000) < 1e-6 && Math.Abs(w.Taint - (400 - lotTaint)) < 1e-6, $"污点按价值比例进仓位:{lotTaint}"); + double lotTaint = st.Of("0xa").Dirty; + Check(Math.Abs(lotTaint - 200) < 1e-6 && Math.Abs(w.DirtyOf(Assets.CRA) - 200) < 1e-6, $"CRA 40% 脏,质押 500 带走 200 枚脏的:{lotTaint}"); var e1 = st.Night(1, Tuning.CraRate, _ => w); Check(Math.Abs(st.Of("0xa").Amount - 500 * (1 + Tuning.CraRate)) < 1e-9 && e1.Count == 1, "每晚计息并入本金"); Check(!st.RequestUnstake("0xa", 9999, 1) && st.RequestUnstake("0xa", 200, 1), "申请取出 200"); @@ -1199,7 +1207,7 @@ internal static class Program Check(w.Get(Assets.CRA) < 501, "解锁期没到不能取"); for (int d = 3; d <= 1 + Tuning.CraUnlockDays; d++) st.Night(d, Tuning.CraRate, _ => w); Check(Math.Abs(w.Get(Assets.CRA) - 700) < 1e-6, $"到期自动回钱包 200:{w.Get(Assets.CRA):0.##}"); - Check(w.Taint > 400 - lotTaint + 1, "污点按比例回来"); + Check(w.DirtyOf(Assets.CRA) > 200 + 1 && w.DirtyOf(Assets.CRA) < 200 + 80 + 1e-6, $"脏枚数按比例回来(利息干净):{w.DirtyOf(Assets.CRA):0.##}"); // 螺旋:质押的 CRA 取回后只值当时的价格 var s = new Stablecoins(); s.CraCrashDay = 5; for (int d = 5; d <= 7; d++) s.Night(d, new Rng(1), 0); @@ -1261,19 +1269,9 @@ internal static class Program for (int i = 0; i < n; i++) { int d = 1; while (!rng.Chance(Wallet.DrainChance(mid))) d++; sum += d; } Check(Math.Abs(sum / n - 4) < 0.25, $"模拟平均 {sum / n:0.00} 天被转走(期望 4)"); var w = new Wallet { Address = "a" }; - w.Add(Assets.PSC, 50); w.Add(Assets.CRT, 1000); w.Taint = 300; w.Basis = 900; w.Freeze(Assets.CRT, 0.5, 9); + w.Add(Assets.PSC, 50); w.AddDirty(Assets.CRT, 1000, 300); w.Basis = 900; w.Freeze(Assets.CRT, 0.5, 9); double v = w.Drain(a => a == Assets.PSC ? 100 : 1); - Check(Math.Abs(v - 6000) < 1e-6 && w.Balances.Count == 0 && w.Frozen.Count == 0 && w.Taint == 0 && w.Basis == 0, $"全部转走(含冻结),污点和成本清零:{v}"); - }); - - Test("被标记的钱包转出可追踪的币,收款方也被标记;Ponero 不会", () => - { - Func price = x => 1; - var f = new Wallet { Address = "f", Flagged = true }; f.Add(Assets.CRC, 100); f.Add(Assets.Ponero, 100); - var p1 = new Wallet { Address = "p1" }; var p2 = new Wallet { Address = "p2" }; - Wallet.Transfer(f, p1, Assets.CRC, 10, price); - Wallet.Transfer(f, p2, Assets.Ponero, 10, price); - Check(p1.Flagged && !p2.Flagged, "CRC 带标记,Ponero 不带"); + Check(Math.Abs(v - 6000) < 1e-6 && w.Balances.Count == 0 && w.Frozen.Count == 0 && w.Dirty.Count == 0 && w.Basis == 0, $"全部转走(含冻结),脏枚数和成本清零:{v}"); }); Test("多钱包:退款、出售回款、混币提回都回到原来的钱包", () => @@ -1380,12 +1378,11 @@ internal static class Program Check(o.Value >= 500 * Tuning.OtcValueMinRents && o.Value <= 500 * Tuning.OtcValueMaxRents && Math.Abs(o.Cash - o.Value * Otc.CutFor(o.TaintRatio)) <= 1, $"市值与现金价:{o.Value:0} / {o.Cash}"); } Check(Otc.CutFor(0) == Tuning.OtcCutClean && Otc.CutFor(1) == Tuning.OtcCutDirty && Otc.CutFor(0.3) > Otc.CutFor(0.7), "折扣按污点比例线性降低"); - // 收下:币进钱包,成本是付的现金,污点 = 市值 × 比例(带上限) + // 收下:币进钱包,其中 数量 × 污点比例 枚是脏的,成本是付的现金 var oc = new OtcOffer { Side = OtcSide.Sell, Asset = Assets.CRT, Qty = 1000, Value = 1000, TaintRatio = 0.4, Cash = 700 }; var w = new Wallet(); - Check(Otc.Receive(w, oc, pr) == 0 && Near(w.Get(Assets.CRT), 1000, 1e-9) && Near(w.Taint, 400, 1e-9) && Near(w.Basis, 700, 1e-9), "污点按比例,成本是付的现金"); - var wf = new Wallet(); wf.Add(Assets.CRC, 100); wf.Taint = 1000; - Check(Near(Otc.Receive(wf, oc, pr), 300, 1e-9) && Near(wf.Taint, 1100, 1e-9), "原有污点多时超出的部分返回"); + Otc.Receive(w, oc); + Check(Near(w.Get(Assets.CRT), 1000, 1e-9) && Near(w.DirtyOf(Assets.CRT), 400, 1e-9) && Near(w.Basis, 700, 1e-9), "1000 CRT 里 400 枚脏,成本是付的现金"); // Ponero:兑换处开放后偶尔有,不带污点 int pon = 0; for (int i = 0; i < 4000; i++) { var o = Otc.MakeSell(none, true, pr, 500, rng); if (o.Asset == Assets.Ponero) { pon++; Check(o.TaintRatio == 0 && o.Cash >= o.Value * Tuning.OtcPoneroCutMin - 1, "Ponero 不带污点"); } } @@ -1424,7 +1421,7 @@ internal static class Program Func pr = a => 1; var w = new Wallet { Address = "w" }; w.Add(Assets.CRT, 30000); var m = new OwnMixer(); - Check(m.Inject(w, Assets.CRT, 20000, pr) && m.Pool(Assets.CRT).Capital == 20000 && m.Pool(Assets.CRT).CapTaint == 0, "干净的币注资,本金不带污点"); + Check(m.Inject(w, Assets.CRT, 20000, pr) && m.Pool(Assets.CRT).Capital == 20000 && m.Pool(Assets.CRT).CapDirty == 0, "干净的币注资,本金不带污点"); Check(!m.Inject(w, Assets.CRT, 1e6, pr) && !m.Inject(w, Assets.SPARK, 1, pr), "余额不够、币种不支持被拒"); Check(OwnMixer.RoundRate(40000) > OwnMixer.RoundRate(10000) && OwnMixer.RoundRate(1e9) <= Tuning.MixerCleanRate + 1e-9 && OwnMixer.RoundRate(0) == 0, "匿名集越大清洗率越高,封顶基准清洗率"); m.Start(pr); @@ -1446,21 +1443,21 @@ internal static class Program } Check(deposits > 0 && payouts > 0 && m.FeesTotal > fees0, $"营业中有存入和出款:{deposits} / {payouts},手续费 {m.FeesTotal - fees0:0}"); Check(m.Pending.All(x => x.ReadyDay >= 50), "到期的都出款了"); - // 取回:收入全额带污点,本金按本金的污点 - var m2 = new OwnMixer(); var w2 = new Wallet { Address = "w2" }; w2.Add(Assets.PSC, 1000); w2.Taint = 500; + // 取回:收入整笔是脏的,本金按本金的脏比例 + var m2 = new OwnMixer(); var w2 = new Wallet { Address = "w2" }; w2.AddDirty(Assets.PSC, 1000, 500); m2.Inject(w2, Assets.PSC, 1000, pr); - Check(Near(m2.Pool(Assets.PSC).CapTaint, 500, 1e-9) && w2.Taint < 1e-9, "脏币注资,污点跟着进本金"); + Check(Near(m2.Pool(Assets.PSC).CapDirty, 500, 1e-9) && w2.DirtyOf(Assets.PSC) < 1e-9, "一半脏的币注资,脏枚数跟着进本金"); m2.Pool(Assets.PSC).Earned = 100; var w3 = new Wallet { Address = "w3" }; w3.Add(Assets.CRC, 10000); - Check(m2.Withdraw(w3, Assets.PSC, 100, pr, out double o1) && Near(w3.Taint, 100, 1e-9) && o1 == 0, "先取收入:全额带污点"); - Check(m2.Withdraw(w3, Assets.PSC, 500, pr, out _) && Near(w3.Taint, 100 + 250, 1e-9), "再取本金:按本金的污点比例"); - Check(!m2.Withdraw(w3, Assets.PSC, 1000, pr, out _), "不能超过可取回的数量"); + Check(m2.Withdraw(w3, Assets.PSC, 100) && Near(w3.DirtyOf(Assets.PSC), 100, 1e-9) && w3.DirtyOf(Assets.CRC) == 0, "先取收入:整笔脏,别的币不受影响"); + Check(m2.Withdraw(w3, Assets.PSC, 500) && Near(w3.DirtyOf(Assets.PSC), 100 + 250, 1e-9), "再取本金:按本金的脏比例"); + Check(!m2.Withdraw(w3, Assets.PSC, 1000), "不能超过可取回的数量"); m2.Pending.Add(new OwnMixDeposit { Asset = Assets.PSC, Amount = 300, Taint = 200, Rounds = 2, ReadyDay = 99 }); Check(Near(m2.Free(Assets.PSC), 500, 1e-9) && Near(m2.Total(Assets.PSC), 800, 1e-9), "客户在途的币不能取"); - // 卷款跑路:连同客户的币全部卷走、全额带污点,永久关闭 + // 卷款跑路:连同客户的币全部卷走、整笔脏,永久关闭 var w4 = new Wallet { Address = "w4" }; - var got = m2.Rug(w4, pr, out double o4); - Check(Near(w4.Get(Assets.PSC), 800, 1e-9) && Near(w4.Taint, 800, 1e-9) && m2.Closed && !m2.Open && got.Count == 1, "卷走全部、全额污点、关闭"); + var got = m2.Rug(w4); + Check(Near(w4.Get(Assets.PSC), 800, 1e-9) && Near(w4.DirtyOf(Assets.PSC), 800, 1e-9) && m2.Closed && !m2.Open && got.Count == 1, "卷走全部、整笔脏、关闭"); Check(m2.Night(100, pr, 60, Tuning.MixerFee, rr, true, 1, false, new Rng(1)).Count == 0, "关闭后不再有夜间事件"); // 查封:风声足够大时被查封,停业若干天 var m3 = new OwnMixer { Heat = 1e6 }; m3.Inject(new Wallet { Address = "x", Balances = { [Assets.CRT] = 5000 } }, Assets.CRT, 5000, pr); m3.Start(pr); @@ -1495,11 +1492,11 @@ internal static class Program } }); - Test("预测市场:买入、卖出、手续费、污点、持仓限制", () => + Test("预测市场:买入、卖出、手续费、脏枚数、持仓限制", () => { Func pr = a => 1; - var acct = new Wallet { Address = "poinbase" }; - acct.Add(Assets.CRC, 1000); acct.Taint = 400; acct.Basis = 1000; + var acct = new Wallet { Address = "w" }; + acct.AddDirty(Assets.CRC, 1000, 400); acct.Basis = 1000; var bk = new PredictBook(); var m = PredictMarket.Create(++bk.Seq, PredictKind.Purity, "gutter", "t", 8500, 5, 6, 6, 0.5); bk.Markets.Add(m); @@ -1511,13 +1508,13 @@ internal static class Program Check(res == PredictResult.Ok && sh > 0, "买入成功"); var pos = bk.PosOf(m.Id, acct.Address); Check(Math.Abs(pos.Cost - 100) < 1e-6 && Math.Abs(acct.Get(Assets.CRC) - (1000 - spend)) < 1e-6, $"成本 100(另付手续费):{pos.Cost:0.00}"); - Check(Math.Abs(pos.Taint - 400 * spend / 1000) < 1e-6 && Math.Abs(acct.Taint - (400 - 400 * spend / 1000)) < 1e-6, $"污点按花掉的价值比例带进持仓:{pos.Taint:0.00}"); + Check(Math.Abs(pos.Dirty - 0.4 * spend) < 1e-6 && Math.Abs(acct.DirtyOf(Assets.CRC) - (400 - 0.4 * spend)) < 1e-6, $"CRC 40% 脏,花掉的按比例带进持仓:{pos.Dirty:0.00}"); Check(bk.Buy(acct, m, false, 10, 5, pr, false, out _) == PredictResult.Opposite, "不能同盘反方向"); // 卖出:价差为 0,只付手续费 double before = acct.Get(Assets.CRC); Check(bk.SellAll(acct, m, 5, pr, out double got) == PredictResult.Ok && Math.Abs(got - 100 * (1 - Tuning.PredictFee)) < 1e-6, $"原价卖回只扣手续费:{got:0.00}"); Check(Math.Abs(acct.Get(Assets.CRC) - before - got) < 1e-6 && bk.PosOf(m.Id, acct.Address) == null, "回到账户"); - Check(acct.Taint < 400 && acct.Taint > 359.2, "卖回时污点按退回的比例回来"); + Check(acct.DirtyOf(Assets.CRC) < 400 && acct.DirtyOf(Assets.CRC) > 359.2, "卖回时脏枚数按退回的比例回来"); // 持仓上限 var big = new Wallet { Address = "x" }; big.Add(Assets.CRC, 1e7); Check(bk.Buy(big, m, true, 1e6, 5, pr, false, out _) == PredictResult.Cap, "超过份额上限被拒"); @@ -1555,29 +1552,28 @@ internal static class Program double c2 = acct.Get(Assets.CRC); var ev2 = bk.Night(9, new string[0], bk.Happened, _ => acct, pr, rng); Check(ev2.Any(e => e.Kind == "void") && Math.Abs(acct.Get(Assets.CRC) - c2 - 50) < 1e-6, $"缺数据作废并退本金:{acct.Get(Assets.CRC) - c2:0.00}"); - // 内幕单:照常兑付全部份数,只有内幕份额对应的兑付记污点 + // 内幕单:照常兑付全部份数,只有内幕份额对应的兑付记成脏的 CRC var b2 = new PredictBook(); var a2 = new Wallet { Address = "p" }; a2.Add(Assets.CRC, 1e6); var mk = PredictMarket.Create(++b2.Seq, PredictKind.Event, "e", "t", 0, 4, 5, 5, 0.1); b2.Markets.Add(mk); b2.Buy(a2, mk, true, mk.BuyCost(true, 0.2 * mk.ShareCap) * 1.02, 4, pr, true, out double si); b2.Buy(a2, mk, true, 50, 4, pr, false, out double sn); - double c2b = a2.Get(Assets.CRC), t2b = a2.Taint; + double c2b = a2.Get(Assets.CRC), t2b = a2.DirtyOf(Assets.CRC); var e2 = b2.Night(5, new string[0], mm => true, _ => a2, pr, new Rng(1)); Check(e2[0].Kind == "insider" && Near(e2[0].Amount, si + sn, 1e-6), $"内幕单照常结算:{e2[0].Kind}"); Check(Near(a2.Get(Assets.CRC) - c2b, si + sn, 1e-6), "全部份数照常兑付"); - Check(Near(a2.Taint - t2b, si, 1e-6) && Near(e2[0].Taint, si, 1e-6) && e2[0].Over == 0 && e2[0].Fraud == 0, $"只有内幕份额的兑付记污点:+{a2.Taint - t2b:0.00} / {si:0.00}"); + Check(Near(a2.DirtyOf(Assets.CRC) - t2b, si, 1e-6) && Near(e2[0].Taint, si, 1e-6), $"只有内幕份额的兑付记成脏的:+{a2.DirtyOf(Assets.CRC) - t2b:0.00} / {si:0.00}"); // 不是内幕单:普通结算,不加污点 var b3 = new PredictBook(); var a3 = new Wallet { Address = "p" }; a3.Add(Assets.CRC, 1e6); var m3 = PredictMarket.Create(++b3.Seq, PredictKind.Event, "e", "t", 0, 4, 5, 5, 0.1); b3.Markets.Add(m3); b3.Buy(a3, m3, true, 200, 4, pr, false, out _); - Check(b3.Night(5, new string[0], mm => true, _ => a3, pr, new Rng(1))[0].Kind == "win" && a3.Taint == 0, "非内幕单不记污点"); - // 污点上限:钱包原有污点已超过价值(币价跌过),新加的全部超出,折成罪证 - var b4 = new PredictBook(); var a4 = new Wallet { Address = "p" }; a4.Add(Assets.CRC, 1e5); + Check(b3.Night(5, new string[0], mm => true, _ => a3, pr, new Rng(1))[0].Kind == "win" && a3.Taint(pr) == 0, "非内幕单不记污点"); + // 拿脏 CRC 下的内幕单:带回的脏枚数加上内幕记的,整笔兑付都是脏的,不会多记到钱包里别的 CRC 上 + var b4 = new PredictBook(); var a4 = new Wallet { Address = "p" }; a4.AddDirty(Assets.CRC, 1e4, 1e4); a4.Add(Assets.CRC, 1e5); var m4 = PredictMarket.Create(++b4.Seq, PredictKind.Event, "e", "t", 0, 4, 5, 5, 0.1); b4.Markets.Add(m4); b4.Buy(a4, m4, true, m4.BuyCost(true, 0.1 * m4.ShareCap) * 1.02, 4, pr, true, out double s4); - a4.Taint = a4.Value(pr) + 1000; + double d4 = a4.DirtyOf(Assets.CRC), pd4 = b4.Positions[0].Dirty; var e4 = b4.Night(5, new string[0], mm => true, _ => a4, pr, new Rng(1)); - Check(e4[0].Kind == "insider" && e4[0].Taint == 0 && Near(e4[0].Over, s4, 1e-6), $"污点已满时全部超出:{e4[0].Over:0.00}"); - Check(Near(e4[0].Fraud, Wallet.OverflowFraud(s4), 1e-9) && e4[0].Fraud <= Tuning.PredictFraudCap, "超出的部分按比例记罪证,有上限"); + Check(e4[0].Kind == "insider" && Near(a4.DirtyOf(Assets.CRC) - d4, s4, 1e-6) && Near(e4[0].Taint + pd4, s4, 1e-6), $"兑付 {s4:0.00} 全部记脏:带回 {pd4:0.00} + 内幕 {e4[0].Taint:0.00}"); }); Test("预测市场:多钱包持仓各回各的钱包,内幕污点各记各的", () => @@ -1596,12 +1592,13 @@ internal static class Program Check(bk.SellAll(w2, m, 4, pr, out double got) == PredictResult.Ok && got > 0 && bk.PosOf(m.Id, "0xb") == null && bk.PosOf(m.Id, "0xa") != null, "卖出只动自己钱包的持仓"); Check(bk.Buy(w2, m, true, m.BuyCost(true, half) * 1.02, 4, pr, true, out _) == PredictResult.Ok, "再买"); // 两个钱包的内幕份额各自记在自己的钱包上 - double a0 = w1.Get(Assets.CRC), b0 = w2.Get(Assets.CRC), ta = w1.Taint, tb = w2.Taint; + double a0 = w1.Get(Assets.CRC), b0 = w2.Get(Assets.CRC), ta = w1.DirtyOf(Assets.CRC), tb = w2.DirtyOf(Assets.CRC); double sa = bk.PosOf(m.Id, "0xa").Shares, sb = bk.PosOf(m.Id, "0xb").Shares; - double ca = bk.PosOf(m.Id, "0xa").Taint, cb = bk.PosOf(m.Id, "0xb").Taint; // 买入时随资金带进持仓的污点,兑付时原样回来 + double ca = bk.PosOf(m.Id, "0xa").Dirty, cb = bk.PosOf(m.Id, "0xb").Dirty; // 买入时随资金带进持仓的脏枚数,兑付时原样回来 var ev = bk.Night(5, new string[0], x => true, pick, pr, new Rng(1)); Check(ev[0].Kind == "insider" && Near(w1.Get(Assets.CRC) - a0, sa, 1e-6) && Near(w2.Get(Assets.CRC) - b0, sb, 1e-6), "各自的钱包收到兑付"); - Check(Near(w1.Taint - ta - ca, sa, 1e-6) && Near(w2.Taint - tb - cb, sb, 1e-6) && Near(ev[0].Taint, sa + sb, 1e-6), "内幕污点各记各的钱包"); + Check(Near(w1.DirtyOf(Assets.CRC) - ta, sa, 1e-6) && Near(w2.DirtyOf(Assets.CRC) - tb, sb, 1e-6) && Near(ev[0].Taint, sa - ca + sb - cb, 1e-6) && cb > 0, + $"各记各的钱包,整笔兑付都是脏的(B 下注的 CRC 里本来有 {cb:0.00} 枚脏的,内幕只补记其余部分)"); }); Test("预测市场:夜间消息反应、情报、新盘口先验", () => @@ -1676,7 +1673,7 @@ internal static class Program var m = PredictMarket.Create(++bk.Seq, PredictKind.Price, "PSC", "PSC", 100, 4, 5, 5, 0.3); bk.Markets.Add(m); bk.Buy(w, m, yes, 510, 4, a => 1, false, out _); var ev = bk.Night(5, new string[0], x => outcome, _ => w, a => 1, new Rng(sd), push); - if (ev[0].Kind == "manip") { if (yes && push > 0) manip++; else Check(false, "不该被判操纵"); Check(ev[0].Fraud == 0 && Near(ev[0].Taint, ev[0].Amount, 1e-6) && Near(w.Taint, ev[0].Amount, 1e-6), "照常兑付,整笔兑付记污点"); Check(w.Get(Assets.CRC) > 1e5 - 510, "本金不没收"); } + if (ev[0].Kind == "manip") { if (yes && push > 0) manip++; else Check(false, "不该被判操纵"); Check(Near(ev[0].Taint, ev[0].Amount, 1e-6) && Near(w.DirtyOf(Assets.CRC), ev[0].Amount, 1e-6), "照常兑付,整笔兑付记成脏的"); Check(w.Get(Assets.CRC) > 1e5 - 510, "本金不没收"); } else if (yes && push > 0) win++; else if (push == 0) noPush++; } } @@ -1708,11 +1705,11 @@ internal static class Program var q = new Ponzi(); q.Start(poor, 0.10, 20); q.Pool = 100000; var ev2 = q.Night(20, 50, poor, new Rng(1)); Check(ev2 != null && ev2.Kind == "collapse", "账户里没钱补利息:崩盘"); - // 卷走:池子进账户、污点全额 + // 卷走:池子进钱包、整笔脏 var w = new Wallet { Address = "y" }; w.Add(Assets.CRC, 2000); var r = new Ponzi(); r.Start(w, 0.04, 20); r.Pool = 5000; double cash = w.Get(Assets.CRC); - Check(Math.Abs(r.Rug(w) - 5000) < 1e-9 && Math.Abs(w.Get(Assets.CRC) - cash - 5000) < 1e-9 && Math.Abs(w.Taint - 5000) < 1e-9 && r.Done, "卷走:池子进账户,污点全额"); + Check(Math.Abs(r.Rug(w) - 5000) < 1e-9 && Math.Abs(w.Get(Assets.CRC) - cash - 5000) < 1e-9 && Math.Abs(w.DirtyOf(Assets.CRC) - 5000) < 1e-9 && r.Done, "卷走:池子进钱包,这 5000 CRC 整笔脏"); // 被举报概率随日息和池子升高 Check(Ponzi.ReportChance(0.10, 5000, 20) > Ponzi.ReportChance(0.02, 5000, 20) && Ponzi.ReportChance(0.04, 9000, 20) > Ponzi.ReportChance(0.04, 100, 20), "日息越高、池子越大越容易被举报"); Check(Ponzi.InflowMean(20, 0.08, 50) > Ponzi.InflowMean(20, 0.04, 50) * 2, "日息高于 4% 时存入按指数放大"); @@ -1798,7 +1795,7 @@ internal static class Program Check(Math.Abs(rugs / 400.0 - Tuning.YieldRugNightly) < 0.05, $"骗局池每晚跑路概率:{rugs / 400.0:0.00}"); }); - Test("预测市场:内幕先买后卖,卖出所得的内幕部分记污点", () => + Test("预测市场:内幕先买后卖,卖出所得的内幕部分记成脏的", () => { var bk = new PredictBook(); var w = new Wallet { Address = "w" }; w.Add(Assets.CRC, 1e6); var m = PredictMarket.Create(++bk.Seq, PredictKind.Event, "e", "t", 0, 4, 7, 7, 0.05); bk.Markets.Add(m); @@ -1807,29 +1804,21 @@ internal static class Program double cost = bk.PosOf(m.Id, "w").Cost; double p1 = m.PYes, p2 = p1 + (1 - p1) / 2; m.QYes = m.QNo + m.B * Math.Log(p2 / (1 - p2)); // 夜里价格又涨了一截 - double t0 = w.Taint; - Check(bk.SellAll(w, m, 5, a => 1, out double got, out double taint, out double over) == PredictResult.Ok && got > cost, "照常卖出,赚到价差"); - Check(Near(taint, got * si / (si + sn), 1e-6) && Near(w.Taint - t0, taint, 1e-9) && over == 0, $"内幕份额对应的卖出所得记污点:{taint:0.00} / {got:0.00}"); + double t0 = w.DirtyOf(Assets.CRC); + Check(bk.SellAll(w, m, 5, a => 1, out double got, out double taint) == PredictResult.Ok && got > cost, "照常卖出,赚到价差"); + Check(Near(taint, got * si / (si + sn), 1e-6) && Near(w.DirtyOf(Assets.CRC) - t0, taint, 1e-9), $"内幕份额对应的卖出所得记成脏的:{taint:0.00} / {got:0.00}"); // 非内幕卖出不加污点 var bk2 = new PredictBook(); var w2 = new Wallet { Address = "w" }; w2.Add(Assets.CRC, 1e6); var m2 = PredictMarket.Create(++bk2.Seq, PredictKind.Event, "e", "t", 0, 4, 7, 7, 0.05); bk2.Markets.Add(m2); bk2.Buy(w2, m2, true, 200, 4, a => 1, false, out _); m2.QYes = m2.QNo + m2.B * Math.Log(0.6 / 0.4); - bk2.SellAll(w2, m2, 5, a => 1, out _, out double t2, out double o2); - Check(t2 == 0 && o2 == 0 && w2.Taint == 0, "非内幕卖出不记污点"); + bk2.SellAll(w2, m2, 5, a => 1, out _, out double t2); + Check(t2 == 0 && w2.Dirty.Count == 0, "非内幕卖出不记污点"); }); - Test("钱包:带上限的加污点", () => + Test("罪证折算:按额 × 比例,单次封顶", () => { - Func pr = a => 1; - var w = new Wallet { Address = "w" }; w.Add(Assets.CRC, 100); - Check(w.AddTaintCapped(60, pr) == 0 && w.Taint == 60, "价值以内全部加上"); - Check(Near(w.AddTaintCapped(60, pr), 20, 1e-9) && w.Taint == 100, "加到价值为止,返回超出的 20"); - Check(Near(w.AddTaintCapped(30, pr), 30, 1e-9) && w.Taint == 100, "已满时全部超出"); - var empty = new Wallet { Address = "e" }; - Check(Near(empty.AddTaintCapped(5, pr), 5, 1e-9) && empty.Taint == 0, "空钱包加不进污点"); - Check(w.AddTaintCapped(0, pr) == 0 && w.AddTaintCapped(-3, pr) == 0, "0 和负数不处理"); - Check(Near(Wallet.OverflowFraud(100), 100 * Tuning.PredictFraudShare, 1e-9) && Wallet.OverflowFraud(1e9) == Tuning.PredictFraudCap && Wallet.OverflowFraud(0) == 0, "超出额按比例折罪证,单次封顶"); + Check(Near(Wallet.FraudFor(100), 100 * Tuning.PredictFraudShare, 1e-9) && Wallet.FraudFor(1e9) == Tuning.PredictFraudCap && Wallet.FraudFor(0) == 0, "按比例折罪证,单次封顶"); }); Test("日 K:开盘、日内高低、成交量、收盘、均线、保留天数", () => @@ -1865,18 +1854,19 @@ internal static class Program { var sm = new StoryMods(); StoryMods.Current = sm; Check(sm.Apply("serpico_sec", 50) && !sm.Apply("serpico_sec", 51), "只生效一次"); - Check(sm.Aml(60) == Tuning.StorySecAmlMult && sm.Aml(50 + Tuning.StorySecDays) == 1, "治安部整顿期内出金审查加重,到期恢复"); + Check(sm.MixClean(60) == Tuning.StorySecMixClean && sm.MixClean(50 + Tuning.StorySecDays) == 1, "治安部整顿期内混币器洗得更差,到期恢复"); + Check(Mixer.RoundRate(1000, 60) < Mixer.RoundRate(1000) * 0.75, "整顿期内每轮清洗率 ×0.7"); Check(sm.Sanction(60) == Tuning.StorySecSanctionMult && sm.Enforce(60) == Tuning.StorySecEnforceMult, "制裁与查处倍率"); sm.Apply("lun_arrested", 55); Check(Math.Abs(sm.Enforce(60) - Tuning.StorySecEnforceMult * Tuning.StoryLunMult) < 1e-12 && sm.Enforce(55 + Tuning.StoryLunDays) == Tuning.StorySecEnforceMult, "伦警官立威期叠加,先到期"); - // 出金审查真的变严 - var ex = new Exchange(); var ex2 = new Exchange(); - var w = new Wallet { Address = "p" }; w.Add(Assets.CRC, 10000); w.Taint = 3000; - var w2 = new Wallet { Address = "p" }; w2.Add(Assets.CRC, 10000); w2.Taint = 3000; - double hit = ex.Cashout(w, 2000, a => 1, 60, 300, false, new Rng(1)).HitChance; - StoryMods.Current = new StoryMods(); - double hit0 = ex2.Cashout(w2, 2000, a => 1, 60, 300, false, new Rng(1)).HitChance; - Check(hit > hit0 && hit <= 1, $"命中率 {hit0:0.000} → {hit:0.000}"); + Check(sm.OtcSting(60) == Tuning.StoryLunMult && sm.OtcSting(55 + Tuning.StoryLunDays) == 1, "伦警官立威期内换币客户便衣更多"); + int st0 = 0, st1 = 0; + for (ulong sd = 1; sd <= 3000; sd++) + { + if (Otc.MakeSell(new List(), false, a => 1, 200, new Rng(sd)).Sting) st0++; + if (Otc.MakeSell(new List(), false, a => 1, 200, new Rng(sd), Tuning.StoryLunMult).Sting) st1++; + } + Check(st1 > st0, $"便衣 {st0} → {st1}(3000 位卖币客户)"); // CRT 脱锚减半:镇压开始时脱锚的频率 int dep0 = 0, dep1 = 0; for (ulong sd = 1; sd <= 2000; sd++) @@ -1954,22 +1944,21 @@ internal static class Program // 出款记录与泄露 Func px = x => 1; - var w = new Wallet { Address = "w" }; w.Add(Assets.CRC, 5000); w.Taint = 4000; + var w = new Wallet { Address = "w" }; w.AddDirty(Assets.CRC, 5000, 4000); var m = new Mixer(); m.Deposit(w, Assets.CRC, 1000, 3, 1, px); m.Night(w, 4, px, new Rng(1)); var r0 = m.Returns.Single(); - Check(r0.Day == 4 && r0.Wallet == "w" && r0.Cleaned > 100 && Near(r0.Cleaned, 800 - (w.Taint - 3200), 1e-6), $"出款记下洗掉的污点:{r0.Cleaned:0}"); - double before = w.Taint; - var lk = m.Leak(4 + Tuning.TumblerLeakDays, x => x == "w" ? w : null, px); - Check(lk.Count == 1 && Near(w.Taint - before, r0.Cleaned, 1e-6) && lk.Over == 0 && m.Returns.Count == 0, "泄露:洗掉的污点全部加回,记录清空"); + Check(r0.Day == 4 && r0.Wallet == "w" && r0.Cleaned > 100 && Near(r0.Cleaned, 800 - (w.DirtyOf(Assets.CRC) - 3200), 1e-6), $"出款记下洗掉的污点:{r0.Cleaned:0}"); + double before = w.DirtyOf(Assets.CRC); + var lk = m.Leak(4 + Tuning.TumblerLeakDays); + Check(lk.Count == 1 && Near(lk.Cleaned, r0.Cleaned, 1e-6) && Near(lk.Fraud, Wallet.FraudFor(r0.Cleaned), 1e-9) && w.DirtyOf(Assets.CRC) == before && m.Returns.Count == 0, "泄露:按洗掉的污点记罪证,不动钱包,记录清空"); var m2 = new Mixer(); m2.Returns.Add(new MixReturn { Day = 1, Wallet = "v", Amount = 10, Cleaned = 500 }); m2.Returns.Add(new MixReturn { Day = 40, Wallet = "v", Amount = 10, Cleaned = 300 }); m2.Returns.Add(new MixReturn { Day = 40, Wallet = "gone", Amount = 10, Cleaned = 300 }); - var v = new Wallet { Address = "v" }; v.Add(Assets.CRC, 100); v.Taint = 0; - var lk2 = m2.Leak(45, x => x == "v" ? v : null, px); - Check(lk2.Count == 1 && Near(v.Taint, 100, 1e-9) && Near(lk2.Over, 200, 1e-9), "只还原 30 天内的;钱包不在的跳过;超出钱包价值的部分返回"); + var lk2 = m2.Leak(45); + Check(lk2.Count == 2 && Near(lk2.Cleaned, 600, 1e-9) && Near(lk2.Fraud, Wallet.FraudFor(600), 1e-9), "只算 30 天内的,罪证 = 洗掉的污点 × 50%"); a.LeakTonight(50); a.LeakTonight(60); Check(a.LeakDay == 50, "泄露只安排一次"); @@ -2009,12 +1998,12 @@ internal static class Program Check(!sm.MixerClosed && sm.MixerRebranded && Near(Mixer.Fee, Tuning.MixerFee, 1e-12) && sm.MixerRug == 1, "换皮重开:重新开放,费率和跑路倍率回到 1"); var w4 = new Wallet { Address = "h" }; w4.Add(Assets.CRC, 500); var mh = new Mixer(); mh.Deposit(w4, Assets.CRC, 500, 1, 1, px); mh.Night(w4, 2, px, new Rng(5)); - Check(!w4.Flagged, "正常的新混币器不标记"); + Check(w4.Dirty.Count == 0, "正常的新混币器:干净的币出来还是干净的"); sm.Rebrand(true); Check(Near(Mixer.Fee, Tuning.MixerFee * Tuning.TumblerHoneypotFee, 1e-12), "钓鱼混币器费率打折"); var w5 = new Wallet { Address = "k" }; w5.Add(Assets.CRC, 500); var mk = new Mixer(); mk.Deposit(w5, Assets.CRC, 500, 1, 1, px); mk.Night(w5, 2, px, new Rng(5)); - Check(w5.Flagged, "从钓鱼混币器提回的币被标记"); + Check(Near(w5.DirtyOf(Assets.CRC), w5.Get(Assets.CRC), 1e-6), "从钓鱼混币器提回的币整笔都是脏的"); } finally { StoryMods.Current = saved; } });