换币客户改在交易终端成交:按比例部分成交、买币随机出价、弹出钱包

- 对话只剩"到终端上谈 / 这单我不做":交易终端打开柜台交易页(标签"柜台",只在有客户时出现),客户在柜台前等着
- 柜台交易页:客户来意、数量、市值、出价/要价、单价、地址(卖币可"查地址"进浏览器),25/50/75/100% 或手输数量部分成交(Otc.Part),成交 / 放弃
- 买币客户随机出价(OtcBidMin −5% … OtcBidMax +30%),去掉三档报价与成交概率(OtcPremium、OtcAccept);成交后弹出 PLEDGER,账单 Prefill 填好客户地址
- 卖币:成交后付现金、币进已连接的钱包;客户说最后一句离开(DialogUIManager.StartDialogue)
- 客户被打发或离开时交易作废;不再有"当晚未付作废"
- 增量翻译:只是和已删旧键同文的新键照常翻译
- 实测:买币客户 25% 部分成交(先在 Web3 换出 CRA),PLEDGER 预填地址签名,到账 +668,客户离开;涡轮增压器作用于矿架立刻挖一轮

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ZHU MINCHAOandClaude Opus 5.5 committed 2026-11-08 15:46:14 +08:00
1 parent 2badc45a5a
commit 9d95e1f760
16 files changed
+455 -223

No files matched your search

+3 -3
View File
@@ -17,9 +17,9 @@
### 第十一阶段 stage 2:场外换币台
- 新人脉升级“场外换币台”(500,前提是 Web3 治理社区),附赠一盏暗灯。原版暗灯双击切换目标时多一个“换币客户”(解锁后才有),放进展示柜亮黄绿色的光;招客概率、顾客面板、灯的提示都沿用原版暗灯(每盏 15% + 黑市声望的一半,封顶 95%)。
- 换币客户一半来卖币、一半来买币,都用现金:
- 卖币(原来的收黑币并进来,不再单独上门):帮派火并、镇压期间多是 CRT,袭击上层、下层动荡期间多是 PSC,这类币全额污点;平时在 PSC、CRT、CRA 里随机,污点占市值 20%–90%,要价从市值的 80% 降到 45%。客户报出转出地址,地址的来历(混币器、黑市平台、骗局地址或 Poinbase、DEX)写进链上账本,浏览器里能查;污点同样不超过钱包价值。Ponero 兑换处开放后偶尔有人出手 Ponero;便衣规则不变。
- 买币:什么币都可能要,数量按房租 2–8 倍;三档报价(市价 +5% / +15% / +30%,客户接受的概率 95% / 65% / 30%),选项上直接显示报价和溢价,不想卖就把客户打发走(原版对话最多三个选项)。谈妥后客户留下地址先走,在 PLEDGER 上把币转过去,确认后现金到账;当天睡觉前没转的账单作废。换币账单不独占终端的 Web3、灰网页,也不会被换币、混币这些终端账单覆盖,可以先在 DEX 换出客户要的币再付。卖出的币不追查污点。
- 换币客户一半来卖币、一半来买币,都用现金。客户说明来意后选“到终端上谈”,交易终端打开柜台交易页(标签“柜台”),客户在柜台前等着;可以按 25% / 50% / 75% / 100% 或手输数量只成交一部分,现金按比例折算,客户要的数量随房租增长。选“放弃”或把客户打发走就作废。
- 卖币(原来的收黑币并进来,不再单独上门):成交后付现金,币直接进已连接的钱包。帮派火并、镇压期间多是 CRT,袭击上层、下层动荡期间多是 PSC,这类币全额污点;平时在 PSC、CRT、CRA 里随机,污点占市值 20%–90%,要价从市值的 80% 降到 45%。交易页上有客户地址,“查地址”打开浏览器看它的来历(混币器、黑市平台、骗局地址或 Poinbase、DEX);污点同样不超过钱包价值。Ponero 兑换处开放后偶尔有人出手 Ponero;便衣规则不变。
- 买币:什么币都可能要,数量按房租 2–8 倍,出价是市价加一个随机溢价(−5% 到 +30%),成不成交由玩家决定。成交后 PLEDGER 弹出,收款地址和数量已填好,签名确认后客户付现金离开。卖出的币不追查污点。换币账单不独占终端的 Web3、灰网页,也不会被换币、混币这些终端账单覆盖,可以先在 DEX 换出客户要的币再成交。
- 浏览器里换币客户的地址显示为“换币客户”。
- 存档数据版本 4:读旧存档时出块奖励和 NPC 算力按 stage 1 的新数值放大 10 倍(保留减半进度)。
- 手册“收黑币”一节改写为“换币客户”,8 种语言。
+12 -9
View File
@@ -8,7 +8,8 @@ namespace Decentralized.Domain
/// <summary>
/// 一位换币客户的报价。Sell:客户手里的币(Qty、按现价的市值 Value、污点比例 TaintRatio)和他要的现金 Cash;Sting 是便衣(收下就记罪证,币不会到)。
/// Buy:客户要买的币和数量,Value 是按现价的市值,成交价按玩家选的报价档加溢价。
/// Buy:客户要买的币和数量,Value 是按现价的市值,Cash 是他出的现金(市价加一个随机的溢价,可能低于市价)。
/// 玩家可以只成交一部分(<see cref="Otc.Part"/>),现金、市值按数量比例折算。
/// </summary>
public sealed class OtcOffer
{
@@ -33,7 +34,7 @@ namespace Decentralized.Domain
/// 换币客户(场外换币台):小偷灯切到"换币客户"后招来,一半来卖币、一半来买币。
/// 卖币沿用原来的收黑币:帮派火并、镇压期间多是 CRT,革命军袭击上层、下层动荡期间多是 PSC,这类币全额带污点;
/// 其他时候在 PSC、CRT、CRA 里随机,污点比例随机,现金价按污点比例打折;Ponero 兑换处开放后偶尔有人出手 Ponero(不带污点)。
/// 买币:什么币都可能要,玩家选报价档,溢价越高越难成交;卖出的币不追查污点。
/// 买币:什么币都可能要,出价是市价加一个随机溢价,玩家自己决定成不成交;卖出的币不追查污点。两边都可以只成交一部分。
/// </summary>
public static class Otc
{
@@ -81,7 +82,7 @@ namespace Decentralized.Domain
/// <summary>现金价占市值的比例:污点比例 0 时 OtcCutClean,1 时 OtcCutDirty,之间线性。</summary>
public static double CutFor(double taintRatio) => Tuning.OtcCutClean + (Tuning.OtcCutDirty - Tuning.OtcCutClean) * Math.Max(0, Math.Min(1, taintRatio));
/// <summary>买币客户的来意:随机一种币,市值 = 房租 × OtcBuyMinRents–OtcBuyMaxRents。</summary>
/// <summary>买币客户的来意:随机一种币,市值 = 房租 × OtcBuyMinRents–OtcBuyMaxRents,出价 = 市值 × (1 + OtcBidMin–OtcBidMax 之间的随机溢价)。</summary>
public static OtcOffer MakeBuy(Func<string, double> price, double rent, Rng rng)
{
if (rent <= 0) return null;
@@ -89,14 +90,16 @@ namespace Decentralized.Domain
double p = price(asset);
if (p <= 0) return null;
double value = rent * rng.Range(Tuning.OtcBuyMinRents, Tuning.OtcBuyMaxRents);
return new OtcOffer { Side = OtcSide.Buy, Asset = asset, Qty = value / p, Value = value };
return new OtcOffer { Side = OtcSide.Buy, Asset = asset, Qty = value / p, Value = value, Cash = (int)Math.Round(value * (1 + rng.Range(Tuning.OtcBidMin, Tuning.OtcBidMax))) };
}
/// <summary>买币客户在第 tier 档(0–2)的成交价(信用点):市值 × (1 + 溢价)。</summary>
public static int Quote(OtcOffer o, int tier) => (int)Math.Round(o.Value * (1 + Tuning.OtcPremium[tier]));
/// <summary>客户接不接受第 tier 档的报价。</summary>
public static bool Accepts(int tier, Rng rng) => rng.Chance(Tuning.OtcAccept[tier]);
/// <summary>只成交 qty(不超过报价的数量):现金、市值按数量比例折算,污点比例和便衣不变。qty 不合法返回 null。</summary>
public static OtcOffer Part(OtcOffer o, double qty)
{
if (o == null || qty <= 0 || o.Qty <= 0) return null;
double f = Math.Min(1, qty / o.Qty);
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 };
}
/// <summary>收下卖币客户的币:币进钱包,成本是付出的现金;污点 = 市值 × 污点比例(带上限)。返回超出钱包价值、没加进去的污点。</summary>
public static double Receive(Wallet w, OtcOffer o, Func<string, double> price)
+2 -2
View File
@@ -300,9 +300,9 @@ namespace Decentralized.Domain
public const double OtcTaintMin = 0.2, OtcTaintMax = 0.9, OtcCutClean = 0.80, OtcCutDirty = 0.45, OtcPoneroCutMin = 0.70, OtcPoneroCutMax = 0.80;
public const double OtcSting = 0.05, OtcStingCrackdown = 0.10;
public const int OtcHistoryMax = 3;
/// <summary>买币客户:要买的币的市值(房租的倍数);三档报价的溢价与客户接受的概率。</summary>
/// <summary>买币客户:要买的币的市值(房租的倍数);出价相对市价的随机溢价范围(可能低于市价,成不成交由玩家决定)。</summary>
public const double OtcBuyMinRents = 2, OtcBuyMaxRents = 8;
public static readonly double[] OtcPremium = { 0.05, 0.15, 0.30 }, OtcAccept = { 0.95, 0.65, 0.30 };
public const double OtcBidMin = -0.05, OtcBidMax = 0.30;
/// <summary>假客服:每天上门的概率;伪造转账:用币付款的顾客里是骗子的比例;两者都从第几天起。</summary>
public const double FakeSupportChance = 0.04, FakeTransferShare = 0.08;
public const int ScamMinDay = 10;
+2 -2
View File
@@ -276,6 +276,8 @@ namespace Decentralized.Domain
["NpcHash0"] = Tuning.NpcHash0,
["NpcKjPerH"] = Tuning.NpcKjPerH,
["NpcTargetRatio"] = Tuning.NpcTargetRatio,
["OtcBidMax"] = Tuning.OtcBidMax,
["OtcBidMin"] = Tuning.OtcBidMin,
["OtcBuyMaxRents"] = Tuning.OtcBuyMaxRents,
["OtcBuyMinRents"] = Tuning.OtcBuyMinRents,
["OtcCutClean"] = Tuning.OtcCutClean,
@@ -488,8 +490,6 @@ namespace Decentralized.Domain
["CraSpiralPath"] = Array.ConvertAll(Tuning.CraSpiralPath, v => (double)v),
["IntelTipAcc"] = Array.ConvertAll(Tuning.IntelTipAcc, v => (double)v),
["IntelTipPrice"] = Array.ConvertAll(Tuning.IntelTipPrice, v => (double)v),
["OtcAccept"] = Array.ConvertAll(Tuning.OtcAccept, v => (double)v),
["OtcPremium"] = Array.ConvertAll(Tuning.OtcPremium, v => (double)v),
["PonziRates"] = Array.ConvertAll(Tuning.PonziRates, v => (double)v),
["SparkSpiralPath"] = Array.ConvertAll(Tuning.SparkSpiralPath, v => (double)v),
["UsedHealthMax"] = Array.ConvertAll(Tuning.UsedHealthMax, v => (double)v),
+30 -13
View File
@@ -248,7 +248,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 langLine truncated
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 langLine truncated
courier.odd1,...Paket ist da.
courier.odd2,(Seine Hand bleibt in der Tasche.) Hier unterschreiben.
courier.sign,Unterschreiben
@@ -969,23 +969,40 @@ otc.name,OTC-Kunde
otc.intro.CRT,"Gerade ist die Lage angespannt, und dieses CRT ist mir zu heiß. Ich brauche schnell Bargeld."
otc.intro.PSC,"Die Wallet einer Mining-Farm hat letzte Nacht den Besitzer gewechselt. Das PSC liegt jetzt bei mir, und ich nehme nur Bargeld."
otc.intro.PONERO,"Lösegeld, in Ponero. Niemand kann es zurückverfolgen. Nur Bargeld."
otc.offer,"{0} {1}, zum heutigen Preis {2} wert, gesendet von {4}. Gib mir {3} in bar und die Coins gehören sofort dir."
otc.offer,"{0} {1}, zum heutigen Kurs {2} wert, gesendet von {4}. {3} in bar für alles, oder nimm nur einen Teil."
otc.intro.sell,"Habe etwas {0}, das ich zu Bargeld machen will. Prüf die Herkunft, wenn du willst."
otc.buy.ask,"Ich will {0} {1}, zum heutigen Preis {2} wert. Bargeld. Nenn deinen Preis."
otc.buy.say,"{0} (Markt +{1}%), keinen Credit weniger."
otc.buy.accept,"In Ordnung, {0}. Sende die Coins an {1}; Bargeld, sobald sie ankommen."
otc.buy.reject,Zu teuer. Vergiss es.
otc.buy.ask,"Ich möchte {0} {1}, zum heutigen Kurs {2} wert. {3} in bar für alles, oder verkauf mir einen Teil."
otc.intro.buy,"Habe gehört, du tauschst hier Coins. Ich kaufe, gegen bar."
otc.say.trade,Lass uns das am Terminal machen.
otc.wait,"Gut, ich warte."
otc.paid,Angekommen. Hier ist dein Bargeld.
tab.otc,Schalter
otc.h,Schalterhandel
otc.k.side,Kunde
otc.side.sell,Verkauft {0}
otc.side.buy,Kauft {0}
otc.k.qty,Betrag
otc.k.value,Marktwert
otc.k.ask,Forderung (gesamt)
otc.k.bid,Gebot (gesamt)
otc.k.unit,Einzelpreis
otc.k.addr,Kundenadresse: {0}
otc.lookup,Prüfen
otc.preview.take,"{0} Bargeld zahlen, {1} {2} erhalten"
otc.preview.give,"{0} {1} senden, {2} Bargeld erhalten"
otc.deal,Abschließen
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.sold,"{0} {1} gesendet, {2} Bargeld erhalten."
pay.otc,OTC-Kunde {0} {1} (Bargeld {2})
nightlog.otc.paid,Der OTC-Kunde hat {0} {1} erhalten und {2} in bar bezahlt.
nightlog.otc.unpaid,Der OTC-Kunde hat {0} {1} nicht erhalten; die Rechnung ist verfallen.
otc.upgrade.title,OTC-Schalter
otc.upgrade.desc,"Fügt der Schwarzen Lampe ein neues Ziel hinzu: OTC-Kunden. Einige verkaufen Coins unbekannter Herkunft, andere kaufen Coins; alle Geschäfte werden in bar abgewickelt. Enthält eine Schwarze Lampe."
otc.choice.yes,Annehmen
otc.choice.no,Ablehnen
otc.say.yes,Abgemacht.
otc.say.no,Davon lasse ich die Finger.
otc.say.no,Diesmal passe ich.
otc.done,Coins sind raus. Wir haben uns nie gesehen.
otc.refused,Andere nehmen es gern.
otc.refused,Dann suche ich mir jemand anderen.
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."
+30 -13
View File
@@ -248,7 +248,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 cLine truncated
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 cLine truncated
courier.odd1,...Package is here.
courier.odd2,(His hand stays in his pocket.) Sign here.
courier.sign,Sign
@@ -969,23 +969,40 @@ otc.name,OTC client
otc.intro.CRT,"Things are tense lately and this CRT is too hot to hold. I need cash, fast."
otc.intro.PSC,"A mining farm's wallet changed hands last night. The PSC is with me now, and I only take cash."
otc.intro.PONERO,"Ransom money, in Ponero. Nobody can trace it. Cash only."
otc.offer,"{0} {1}, worth {2} at today's price, sent from {4}. Give me {3} in cash and the coins are yours right now."
otc.offer,"{0} {1}, worth {2} at today's price, sent from {4}. {3} in cash for all of it, or take part of it."
otc.intro.sell,Got some {0} I want to turn into cash. Check where it came from if you like.
otc.buy.ask,"I want {0} {1}, worth {2} at today's price. Cash. Name your price."
otc.buy.say,"{0} (market +{1}%), not a credit less."
otc.buy.accept,"Fine, {0}. Send the coins to {1}; cash when they land."
otc.buy.reject,Too steep. Forget it.
otc.buy.ask,"I want {0} {1}, worth {2} at today's price. {3} in cash for all of it, or sell me part of it."
otc.intro.buy,"Heard you trade coins here. I'm buying, cash."
otc.say.trade,Let's do it at the terminal.
otc.wait,"Fine, I'll wait."
otc.paid,Got it. Here's your cash.
tab.otc,Counter
otc.h,Counter trade
otc.k.side,Client
otc.side.sell,Selling {0}
otc.side.buy,Buying {0}
otc.k.qty,Amount
otc.k.value,Market value
otc.k.ask,Asking (all)
otc.k.bid,Bid (all)
otc.k.unit,Unit price
otc.k.addr,Client address: {0}
otc.lookup,Look up
otc.preview.take,"Pay {0} cash, receive {1} {2}"
otc.preview.give,"Send {0} {1}, receive {2} cash"
otc.deal,Deal
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.sold,"Sent {0} {1}, received {2} cash."
pay.otc,OTC client {0} {1} (cash {2})
nightlog.otc.paid,The OTC client received {0} {1} and paid {2} in cash.
nightlog.otc.unpaid,The OTC client never got the {0} {1}; the bill is void.
otc.upgrade.title,OTC Desk
otc.upgrade.desc,"Adds a Black Lamp target: OTC clients. Some come to sell coins of unknown origin, some come to buy coins; all deals are settled in cash. Includes one Black Lamp."
otc.choice.yes,Take it
otc.choice.no,Pass
otc.say.yes,Deal.
otc.say.no,I'm not touching that.
otc.say.no,I'll pass on this one.
otc.done,Coins sent. We never met.
otc.refused,Plenty of others will take it.
otc.refused,Then I'll find someone else.
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.
+30 -13
View File
@@ -248,7 +248,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 Line truncated
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 Line truncated
courier.odd1,...Llegó el paquete.
courier.odd2,(Mantiene la mano en el bolsillo). Firma aquí.
courier.sign,Firmar
@@ -969,23 +969,40 @@ otc.name,Cliente OTC
otc.intro.CRT,"Las cosas están tensas y este CRT quema. Necesito efectivo, rápido."
otc.intro.PSC,"La billetera de una granja de minería cambió de dueño anoche. El PSC lo tengo yo, y solo acepto efectivo."
otc.intro.PONERO,"Un rescate, en Ponero. Nadie puede rastrearlo. Solo efectivo."
otc.offer,"{0} {1}, con un valor de {2} al precio de hoy, enviados desde {4}. Dame {3} en efectivo y las monedas son tuyas ahora mismo."
otc.offer,"{0} {1}, con valor de {2} al precio de hoy, enviados desde {4}. {3} en efectivo por todo, o toma una parte."
otc.intro.sell,Tengo algo de {0} que quiero convertir en efectivo. Revisa de dónde viene si quieres.
otc.buy.ask,"Quiero {0} {1}, con un valor de {2} al precio de hoy. En efectivo. Ponle precio."
otc.buy.say,"{0} (mercado +{1}%), ni un crédito menos."
otc.buy.accept,"De acuerdo, {0}. Envía las monedas a {1}; efectivo cuando lleguen."
otc.buy.reject,Demasiado caro. Olvídalo.
otc.buy.ask,"Quiero {0} {1}, con valor de {2} al precio de hoy. {3} en efectivo por todo, o véndeme una parte."
otc.intro.buy,"Escuché que cambias monedas aquí. Quiero comprar, en efectivo."
otc.say.trade,Hablemos en la terminal.
otc.wait,"Está bien, espero."
otc.paid,Recibido. Aquí tienes tu efectivo.
tab.otc,Mostrador
otc.h,Comercio en mostrador
otc.k.side,Cliente
otc.side.sell,Vendiendo {0}
otc.side.buy,Comprando {0}
otc.k.qty,Cantidad
otc.k.value,Valor de mercado
otc.k.ask,Precio pedido (total)
otc.k.bid,Precio ofertado (total)
otc.k.unit,Precio unitario
otc.k.addr,Dirección del cliente: {0}
otc.lookup,Consultar
otc.preview.take,"Paga {0} en efectivo, recibe {1} {2}"
otc.preview.give,"Envía {0} {1}, recibe {2} en efectivo"
otc.deal,Trato
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.sold,"Enviaste {0} {1}, recibiste {2} en efectivo."
pay.otc,Cliente OTC {0} {1} (efectivo {2})
nightlog.otc.paid,El cliente OTC recibió {0} {1} y pagó {2} en efectivo.
nightlog.otc.unpaid,El cliente OTC nunca recibió {0} {1}; la factura queda anulada.
otc.upgrade.title,Mostrador OTC
otc.upgrade.desc,Añade un objetivo a la Lámpara negra: Clientes OTC. Algunos vienen a vender monedas de origen desconocido y otros a comprar; todos los tratos se liquidan en efectivo. Incluye una Lámpara negra.
otc.choice.yes,Aceptar
otc.choice.no,Rechazar
otc.say.yes,Trato hecho.
otc.say.no,No pienso tocar eso.
otc.say.no,Paso esta vez.
otc.done,Monedas enviadas. Nunca nos vimos.
otc.refused,Ya habrá otro que lo quiera.
otc.refused,Entonces buscaré a alguien más.
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.
+30 -13
View File
@@ -248,7 +248,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 laLine truncated
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 laLine truncated
courier.odd1,...Le colis est là.
courier.odd2,(Sa main reste dans sa poche.) Signez ici.
courier.sign,Signer
@@ -969,23 +969,40 @@ otc.name,Client OTC
otc.intro.CRT,"Ça chauffe en ce moment et ce CRT me brûle les doigts. Il me faut du liquide, vite."
otc.intro.PSC,"Le portefeuille d'une ferme de minage a changé de main cette nuit. Le PSC est chez moi, et je ne prends que du liquide."
otc.intro.PONERO,"Une rançon, en Ponero. Personne ne peut la tracer. Liquide uniquement."
otc.offer,"{0} {1}, d'une valeur de {2} au cours du jour, envoyés depuis {4}. Donne-moi {3} en liquide et les jetons sont à toi tout de suite."
otc.offer,"{0} {1}, d'une valeur de {2} au cours du jour, envoyé depuis {4}. {3} en espèces pour la totalité, ou prenez-en une partie."
otc.intro.sell,J'ai du {0} à convertir en liquide. Vérifie la provenance si tu veux.
otc.buy.ask,"Je veux {0} {1}, d'une valeur de {2} au cours du jour. En liquide. Donne ton prix."
otc.buy.say,"{0} (marché +{1}%), pas un crédit de moins."
otc.buy.accept,"D'accord, {0}. Envoie les jetons à {1} ; le liquide dès réception."
otc.buy.reject,Trop cher. Laisse tomber.
otc.buy.ask,"Je cherche {0} {1}, d'une valeur de {2} au cours du jour. {3} en espèces pour la totalité, ou vendez-m'en une partie."
otc.intro.buy,"Paraît qu'on échange des cryptos ici. J'achète, en espèces."
otc.say.trade,Parlons-en au terminal.
otc.wait,"D'accord, j'attends."
otc.paid,Reçu. Voilà vos espèces.
tab.otc,Comptoir
otc.h,Échange au comptoir
otc.k.side,Client
otc.side.sell,Vente de {0}
otc.side.buy,Achat de {0}
otc.k.qty,Montant
otc.k.value,Valeur marchande
otc.k.ask,Prix demandé (total)
otc.k.bid,Prix proposé (total)
otc.k.unit,Prix unitaire
otc.k.addr,Adresse du client : {0}
otc.lookup,Consulter
otc.preview.take,"Payer {0} en espèces, recevoir {1} {2}"
otc.preview.give,"Envoyer {0} {1}, recevoir {2} en espèces"
otc.deal,Conclure
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.sold,"Envoyé {0} {1}, reçu {2} en espèces."
pay.otc,Client OTC {0} {1} (liquide {2})
nightlog.otc.paid,Le client OTC a reçu {0} {1} et a payé {2} en liquide.
nightlog.otc.unpaid,Le client OTC n'a jamais reçu {0} {1} ; la facture est annulée.
otc.upgrade.title,Comptoir OTC
otc.upgrade.desc,"Ajoute une cible à la Lampe noire : Clients OTC. Certains viennent vendre des jetons d'origine inconnue, d'autres viennent en acheter ; toutes les transactions se règlent en liquide. Inclut une Lampe noire."
otc.choice.yes,Accepter
otc.choice.no,Refuser
otc.say.yes,Marché conclu.
otc.say.no,Je n'y touche pas.
otc.say.no,Je passe pour cette fois.
otc.done,Pièces envoyées. On ne s'est jamais vus.
otc.refused,D'autres le prendront.
otc.refused,Alors j'irai voir ailleurs.
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.
+30 -13
View File
@@ -248,7 +248,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をステーキングすると日利が付与され、利息は元本に複利で組み入れられる。出金するにはまず申請しLine truncated
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をステーキングすると日利が付与され、利息は元本に複利で組み入れられる。出金するにはまず申請しLine truncated
courier.odd1,……荷物が届いた。
courier.odd2,(ポケットに手を入れたままだ)ここにサインを。
courier.sign,サイン
@@ -969,23 +969,40 @@ otc.name,OTC客
otc.intro.CRT,最近は物騒で、このCRTを持っているのは危ない。急いで現金にしたい。
otc.intro.PSC,ある採掘場のウォレットが昨夜持ち主を変えた。PSCは今こっちにある。現金しか受け取らない。
otc.intro.PONERO,身代金だ、Poneroで。出所は誰にも追えない。現金のみ。
otc.offer,{0} {1}、今日の相場なら{2}相当、送金元は{4}だ。現金{3}をくれれば、今すぐコインを渡す。
otc.offer,{0} {1}、時価{2}相当、{4}から送金。全額なら現金{3}、一部だけでも構わない。
otc.intro.sell,手持ちの{0}を現金に換えたい。出所は自分で調べてくれ。
otc.buy.ask,{0} {1}を買いたい。今日の相場なら{2}相当だ。現金で払う、価格を提示してくれ。
otc.buy.say,{0}(市価+{1}%)、1クレジットもまからん。
otc.buy.accept,分かった、{0}だ。コインを{1}に送ってくれ。着金したら現金を渡す。
otc.buy.reject,高すぎる。やめておく。
otc.buy.ask,{0} {1}を買いたい、時価{2}相当だ。全額なら現金{3}支払う、一部だけでも構わない。
otc.intro.buy,ここで通貨を取引できると聞いた。現金で買いたい。
otc.say.trade,ターミナルで話そう。
otc.wait,分かった、待ってるよ。
otc.paid,着金した。現金を受け取ってくれ。
tab.otc,カウンター
otc.h,カウンター取引
otc.k.side,顧客
otc.side.sell,{0}売却
otc.side.buy,{0}購入
otc.k.qty,数量
otc.k.value,時価
otc.k.ask,売値(全額)
otc.k.bid,買値(全額)
otc.k.unit,単価
otc.k.addr,顧客アドレス:{0}
otc.lookup,アドレス照会
otc.preview.take,現金{0}を支払い、{1} {2}を受け取る
otc.preview.give,{0} {1}を送金し、現金{2}を受け取る
otc.deal,成約
otc.cancel,見送り
otc.msg.gone,客はすでに立ち去った。
otc.msg.cash,現金が足りない。
otc.msg.sting,相手は潜入捜査官だった:現金{0}が没収され、盗品売買が記録された。
otc.msg.bought,{0} {1}を受け取り、現金{2}を支払った。
otc.msg.sold,{0} {1}を送金し、現金{2}を受け取った。
pay.otc,OTC客 {0} {1}(現金 {2})
nightlog.otc.paid,OTC客が{0} {1}を受け取り、現金{2}を支払った。
nightlog.otc.unpaid,OTC客に{0} {1}が届かず、請求書は無効となった。
otc.upgrade.title,OTCデスク
otc.upgrade.desc,黒いランプの対象に「OTC客」が追加される。出所不明のコインを売りに来る者や、コインを買いに来る者が訪れ、すべての取引は現金で決済される。黒いランプが1個付属。
otc.choice.yes,受け取る
otc.choice.no,断る
otc.say.yes,取引成立だ。
otc.say.no,それには手を出さない。
otc.say.no,今回は見送るよ。
otc.done,送った。俺たちは会っていない。
otc.refused,欲しがる奴はいくらでもいる。
otc.refused,なら他を当たるよ。
otc.nocash,現金も用意できないのか?ならやめだ。
otc.nowallet,ウォレットがつながっていない。コインをどこに送れと?やめだ。
otc.sting,動くな、警察だ。盗まれた資金の買い取りだな。現金は没収、記録にも残る。
+30 -13
View File
@@ -248,7 +248,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ę.Line truncated
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ę.Line truncated
courier.odd1,...Paczka dotarła.
courier.odd2,(Trzyma rękę w kieszeni.) Podpisz tutaj.
courier.sign,Podpisz
@@ -969,23 +969,40 @@ otc.name,Klient OTC
otc.intro.CRT,"Ostatnio jest gorąco, a te CRT parzą w ręce. Potrzebuję gotówki, szybko."
otc.intro.PSC,Portfel pewnej kopalni zmienił wczoraj właściciela. PSC jest teraz u mnie i biorę tylko gotówkę.
otc.intro.PONERO,"Okup, w Ponero. Nikt tego nie wyśledzi. Tylko gotówka."
otc.offer,"{0} {1}, o wartości {2} po dzisiejszej cenie, wysłane z {4}. Daj mi {3} w gotówce, a monety są twoje od ręki."
otc.offer,"{0} {1}, o wartości {2} po dzisiejszym kursie, wysłane z {4}. {3} w gotówce za całość albo weź część."
otc.intro.sell,"Mam trochę {0}, chcę to wymienić na gotówkę. Sprawdź, skąd pochodzą, jeśli chcesz."
otc.buy.ask,"Chcę kupić {0} {1}, o wartości {2} po dzisiejszej cenie. Gotówka. Podaj swoją cenę."
otc.buy.say,"{0} (cena rynkowa +{1}%), ani kredytu mniej."
otc.buy.accept,"W porządku, {0}. Wyślij monety na {1}; gotówka, gdy dotrą."
otc.buy.reject,Za drogo. Zapomnij.
otc.buy.ask,"Chcę kupić {0} {1}, o wartości {2} po dzisiejszym kursie. {3} w gotówce za całość albo sprzedaj mi część."
otc.intro.buy,"Podobno wymieniasz tu monety. Kupuję, za gotówkę."
otc.say.trade,Przejdźmy do terminala.
otc.wait,"W porządku, poczekam."
otc.paid,Dotarło. Oto gotówka.
tab.otc,Lada
otc.h,Handel przy ladzie
otc.k.side,Klient
otc.side.sell,Sprzedaje {0}
otc.side.buy,Kupuje {0}
otc.k.qty,Kwota
otc.k.value,Wartość rynkowa
otc.k.ask,Żądana (całość)
otc.k.bid,Oferowana (całość)
otc.k.unit,Cena jednostkowa
otc.k.addr,Adres klienta: {0}
otc.lookup,Sprawdź
otc.preview.take,"Zapłać {0} w gotówce, otrzymaj {1} {2}"
otc.preview.give,"Wyślij {0} {1}, otrzymaj {2} w gotówce"
otc.deal,Zgoda
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.sold,"Wysłano {0} {1}, otrzymano {2} w gotówce."
pay.otc,Klient OTC {0} {1} (gotówka {2})
nightlog.otc.paid,Klient OTC otrzymał {0} {1} i zapłacił {2} w gotówce.
nightlog.otc.unpaid,Klient OTC nie otrzymał {0} {1}; rachunek został unieważniony.
otc.upgrade.title,Punkt OTC
otc.upgrade.desc,"Dodaje cel Czarnej lampy: Klienci OTC. Jedni przychodzą sprzedać monety nieznanego pochodzenia, inni kupić monety; wszystkie transakcje są rozliczane w gotówce. Zawiera jedną Czarną lampę."
otc.choice.yes,Przyjmij
otc.choice.no,Odmów
otc.say.yes,Umowa stoi.
otc.say.no,Nie tknę tego.
otc.say.no,Tym razem spasuję.
otc.done,Monety wysłane. Nigdy się nie spotkaliśmy.
otc.refused,Inni chętnie wezmą.
otc.refused,To poszukam kogoś innego.
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."
+30 -13
View File
@@ -248,7 +248,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 чёрного рынLine truncated
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 чёрного рынLine truncated
courier.odd1,...Посылка пришла.
courier.odd2,(Его рука остаётся в кармане.) Подпиши здесь.
courier.sign,Подписать
@@ -969,23 +969,40 @@ otc.name,OTC-клиент
otc.intro.CRT,"Сейчас неспокойно, а этот CRT жжёт руки. Мне нужны наличные, быстро."
otc.intro.PSC,"Кошелёк одной майнинг-фермы прошлой ночью сменил владельца. PSC теперь у меня, и я беру только наличные."
otc.intro.PONERO,"Выкуп, в Ponero. Никто не отследит. Только наличные."
otc.offer,"{0} {1} стоимостью {2} по сегодняшнему курсу, отправка с {4}. Дай мне {3} наличными, и монеты твои прямо сейчас."
otc.offer,"{0} {1}, стоимость по текущему курсу: {2}, перевод с {4}. {3} наличными за всё, либо возьмите часть."
otc.intro.sell,"Есть немного {0}, хочу обменять на наличные. Можешь проверить, откуда они, если хочешь."
otc.buy.ask,Хочу купить {0} {1} стоимостью {2} по сегодняшнему курсу. Наличные. Назови свою цену.
otc.buy.say,"{0} (рынок +{1}%), ни кредитом меньше."
otc.buy.accept,"Ладно, {0}. Переводи монеты на {1}; наличные — как дойдут."
otc.buy.reject,Слишком дорого. Забудь.
otc.buy.ask,"Куплю {0} {1}, стоимость по текущему курсу: {2}. За всё дам {3} наличными, либо продайте часть."
otc.intro.buy,"Слышал, здесь меняют монеты. Я покупаю, за наличные."
otc.say.trade,Обсудим у терминала.
otc.wait,"Ладно, я подожду."
otc.paid,Пришло. Вот ваши наличные.
tab.otc,Стойка
otc.h,Торговля у стойки
otc.k.side,Клиент
otc.side.sell,Продажа {0}
otc.side.buy,Покупка {0}
otc.k.qty,Сумма
otc.k.value,Рын. стоимость
otc.k.ask,Запрос (всего)
otc.k.bid,Предл. (всего)
otc.k.unit,Цена за ед.
otc.k.addr,Адрес клиента: {0}
otc.lookup,Проверить
otc.preview.take,"Заплатить {0} наличными, получить {1} {2}"
otc.preview.give,"Отправить {0} {1}, получить {2} наличными"
otc.deal,Сделка
otc.cancel,Отказ
otc.msg.gone,Клиент ушёл.
otc.msg.cash,Недостаточно наличных.
otc.msg.sting,"Клиент был под прикрытием: конфисковано {0} наличными, зафиксирован сбыт краденого."
otc.msg.bought,"Получено {0} {1}, выплачено {2} наличными."
otc.msg.sold,"Отправлено {0} {1}, получено {2} наличными."
pay.otc,OTC-клиент {0} {1} (наличные {2})
nightlog.otc.paid,OTC-клиент получил {0} {1} и выплатил {2} наличными.
nightlog.otc.unpaid,OTC-клиент так и не получил {0} {1}; счёт аннулирован.
otc.upgrade.title,OTC-стойка
otc.upgrade.desc,"Добавляет новую цель для Чёрной лампы: OTC-клиенты. Одни приходят продать монеты неизвестного происхождения, другие — купить монеты; все сделки рассчитываются наличными. Включает одну Чёрную лампу."
otc.choice.yes,Взять
otc.choice.no,Отказаться
otc.say.yes,По рукам.
otc.say.no,Я в это не полезу.
otc.say.no,В этот раз я откажусь.
otc.done,Монеты отправлены. Мы не встречались.
otc.refused,Найдутся другие.
otc.refused,Тогда поищу кого-нибудь ещё.
otc.nocash,Даже наличных нет? Забудьте.
otc.nowallet,"Кошелёк не подключён, куда слать монеты? Забудьте."
otc.sting,"Не двигаться. Служба безопасности. Скупка краденых средств: наличные изъяты, это пойдёт в ваше досье."
+30 -13
View File
@@ -247,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 账户的污点。出金到钱包要填收款地址,等几次确认才到账,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} 天之间会有一次""矿机时代"",提前几天上报纸预告,之后大矿场的耗电成本砍半,全网算力涨上去,显卡矿工的收益被摊薄,低档显卡Line truncated
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} 天之间会有一次""矿机时代"",提前几天上报纸预告,之后大矿场的耗电成本砍半,全网算力涨上去,显卡矿工的收益被摊薄,低档显卡Line truncated
courier.odd1,……东西到了。
courier.odd2,"(他的手一直放在口袋里)在这儿签个字。"
courier.sign,签收
@@ -968,23 +968,40 @@ otc.name,换币客户
otc.intro.CRT,最近风声紧,这批 CRT 留在手里烫手,得尽快换成现金。
otc.intro.PSC,有家矿场的钱包昨晚换了主人。PSC 在我这儿,我只要现金。
otc.intro.PONERO,一笔赎金,Ponero,查不到来路。我只收现金。
otc.offer,{0} {1},按现价值 {2},从 {4} 转出。给我 {3} 现金,币当场转给你。
otc.offer,{0} {1},按现价值 {2},从 {4} 转出。全收给我 {3} 现金,收一部分也行。
otc.intro.sell,手上有点 {0} 想换成现金。来路你自己查。
otc.buy.ask,我想买 {0} {1},按现价值 {2}。付现金,你开个价。
otc.buy.say,{0}(市价 +{1}%),少一分不卖。
otc.buy.accept,行,{0}。币转到 {1},到账我就付现金。
otc.buy.reject,太贵了,算了。
otc.buy.ask,我想买 {0} {1},按现价值 {2}。全给我的话出 {3} 现金,卖一部分也行。
otc.intro.buy,听说你这儿能换币。我拿现金买。
otc.say.trade,到终端上谈。
otc.wait,行,我等着。
otc.paid,到了。现金拿好。
tab.otc,柜台
otc.h,柜台交易
otc.k.side,客户
otc.side.sell,卖 {0}
otc.side.buy,买 {0}
otc.k.qty,数量
otc.k.value,市值
otc.k.ask,要价(全部)
otc.k.bid,出价(全部)
otc.k.unit,单价
otc.k.addr,客户地址:{0}
otc.lookup,查地址
otc.preview.take,付现金 {0},收到 {1} {2}
otc.preview.give,转出 {0} {1},收现金 {2}
otc.deal,成交
otc.cancel,放弃
otc.msg.gone,客户已经走了。
otc.msg.cash,现金不够。
otc.msg.sting,对方是便衣:现金 {0} 被没收,记销赃罪证。
otc.msg.bought,收到 {0} {1},付现金 {2}。
otc.msg.sold,转出 {0} {1},收现金 {2}。
pay.otc,换币客户 {0} {1}(现金 {2})
nightlog.otc.paid,换币客户收到 {0} {1},付了现金 {2}。
nightlog.otc.unpaid,换币客户没等到 {0} {1},账单作废。
otc.upgrade.title,场外换币台
otc.upgrade.desc,暗灯多一个目标:换币客户。有人来卖来路不明的币,有人来买币,都用现金结算。附赠一盏暗灯。
otc.choice.yes,收下
otc.choice.no,不要
otc.say.yes,成交。
otc.say.no,这钱我不碰。
otc.say.no,这单我不做。
otc.done,币转过去了。我们没见过。
otc.refused,有的是人要。
otc.refused,那我找别人。
otc.nocash,现金都拿不出来?那算了。
otc.nowallet,钱包都没连上,币往哪儿转?算了。
otc.sting,别动,治安部。收购赃款,现金没收,这笔会记进你的档案。
+120 -91
View File
@@ -5,16 +5,23 @@ using Decentralized.Domain;
namespace Decentralized
{
/// <summary>
/// 换币客户(游戏的对话顾客),由切到"换币客户"的小偷灯招来,见 <see cref="OtcLamp"/> 与 <see cref="Otc"/>。
/// 卖币:付现金,币进已连接的钱包(污点按比例、带上限),便衣会没收现金并记销赃罪证。
/// 买币:玩家选报价档,客户接受后离开,玩家在 PLEDGER 上把币转到客户地址,确认后现金到账;当晚没付的账单作废。
/// 换币客户(游戏的对话顾客),由切到"换币客户"的暗灯招来,见 <see cref="OtcLamp"/> 与 <see cref="Otc"/>。
/// 客户说明来意后选"去终端交易":打开交易终端的柜台交易页(<see cref="TerminalWindow"/>),客户留在柜台前等着。
/// 在终端里定成交数量(可以只成交一部分):卖币的客户收现金、币直接进已连接的钱包(便衣会没收现金并记销赃罪证);
/// 买币的客户弹出 PLEDGER,收款地址和数量已填好,签名确认后客户付现金。客户走了(被打发、没成交)就作废。
/// 原版取顾客名字时也会调用工厂:只有在生成顾客的那段时间里(普通顾客回调之间,原版在这里按展示柜生成顾客)才生成报价、写链上账本。
/// </summary>
public static class OtcClient
{
public const string Id = OtcLamp.Target;
private static bool spawning;
/// <summary>买币客户开出的账单:付清(确认到账)或作废之前一直记着。</summary>
/// <summary>正在柜台前、已经去终端交易的客户:报价、收款地址和顾客对象(用来判断他还在不在)。</summary>
public static OtcOffer Active;
public static string ActiveAddress;
private static StoreClient activeClient;
/// <summary>买币客户的账单:确认到账或作废之前一直记着。</summary>
private static WalletWindow.Bill pendingBill;
/// <summary>还没签名付款的换币账单:钱包没有终端账单时用它(见 <see cref="WalletWindow.Pending"/>);签名后清掉,没成交(挤出内存池)时放回来。</summary>
public static WalletWindow.Bill Standing;
@@ -24,7 +31,7 @@ namespace Decentralized
StoreClientListDict.storeClientDict[Id] = Create;
ModHook.OnGenerateCustomerNormal += Open;
ModHook.OnGenerateCustomerLate += Close;
ModHook.OnGoingSleepEarly += VoidUnpaid;
ModHook.OnGoingSleepEarly += Drop;
ModHelper.AddDebugFunction(ModInfo.Id, ModInfo.Name, "OTC client (test)", () => Log.Guard("换币客户(测试)", () =>
{
spawning = true;
@@ -41,7 +48,7 @@ namespace Decentralized
StoreClientListDict.storeClientDict.Remove(Id);
ModHook.OnGenerateCustomerNormal -= Open;
ModHook.OnGenerateCustomerLate -= Close;
ModHook.OnGoingSleepEarly -= VoidUnpaid;
ModHook.OnGoingSleepEarly -= Drop;
}
/// <summary>这张账单是不是换币客户开的(终端不让它独占 Web3、灰网页)。</summary>
@@ -89,12 +96,12 @@ namespace Decentralized
if (o == null) return null;
string addr = d.Address("otc:" + (++d.Otc.Seq));
var c = Base();
if (o.Side == OtcSide.Sell) { WriteHistory(d, o, addr); BuildSell(c, o, addr); }
else BuildBuy(c, o, addr);
if (o.Side == OtcSide.Sell) WriteHistory(d, o, addr);
Build(c, o, addr);
Finish(c);
Log.Info(o.Side == OtcSide.Sell
? $"换币客户(卖币):{o.Qty:0.##} {o.Asset},市值 {o.Value:0},污点比例 {o.TaintRatio:0.00},要价 {o.Cash}{(o.Sting ? "(便衣)" : "")}"
: $"换币客户(买币):{o.Qty:0.##} {o.Asset},市值 {o.Value:0}");
: $"换币客户(买币):{o.Qty:0.##} {o.Asset},市值 {o.Value:0},出价 {o.Cash}");
Session.Save();
return c;
}
@@ -109,125 +116,147 @@ namespace Decentralized
foreach (var kv in Otc.History(o, dirty, clean, d.Rng)) d.Chain(kv.Key, addr, o.Asset, o.Qty * kv.Value);
}
// ---------- 卖币给玩家 ----------
private static void BuildSell(StoreClient c, OtcOffer o, string addr)
/// <summary>对话:来意和报价,选"去终端交易"打开柜台交易页、客户留下等着;选"算了"客户走人。</summary>
private static void Build(StoreClient c, OtcOffer o, string addr)
{
// 选项的动作先于下一句执行:在动作里结算,再把客户的回话换成结果
var yes = new Dialogue();
var reply = yes.SetText("PLAYER", L.T("otc.say.yes")).NextDialogue();
reply.SetText(c.displayName, L.T("otc.refused")).SetEndAction(Leave);
var trade = new Dialogue();
trade.SetText("PLAYER", L.T("otc.say.trade")).NextDialogue().SetText(c.displayName, L.T("otc.wait"));
var no = new Dialogue();
no.SetText("PLAYER", L.T("otc.say.no")).NextDialogue().SetText(c.displayName, L.T("otc.refused")).SetEndAction(Leave);
string intro = o.TaintRatio >= 1 || o.Asset == Assets.Ponero ? "otc.intro." + o.Asset : "otc.intro.sell";
string intro = o.Side == OtcSide.Buy ? "otc.intro.buy" : o.TaintRatio >= 1 || o.Asset == Assets.Ponero ? "otc.intro." + o.Asset : "otc.intro.sell";
string offer = o.Side == OtcSide.Buy
? L.T("otc.buy.ask", Fmt.Num(o.Qty), o.Asset, Fmt.Credits(o.Value), Fmt.Credits(o.Cash))
: L.T("otc.offer", Fmt.Num(o.Qty), o.Asset, Fmt.Credits(o.Value), Fmt.Credits(o.Cash), ChainAddress.Short(addr));
c.mainDialogue.SetText(c.displayName, L.T(intro, o.Asset)).NextDialogue()
.SetText(c.displayName, L.T("otc.offer", Fmt.Num(o.Qty), o.Asset, Fmt.Credits(o.Value), Fmt.Credits(o.Cash), ChainAddress.Short(addr)))
.AddChoice(DirectoryMaster.Item("yes"), L.T("otc.choice.yes"), "", yes, () => reply.SetText(c.displayName, L.T(AcceptSell(o, addr))))
.AddChoice(DirectoryMaster.Item("cancel"), L.T("otc.choice.no"), "", no, null);
.SetText(c.displayName, offer)
.AddChoice(DirectoryMaster.Item("yes"), L.T("otc.say.trade"), "", trade, () => Begin(c, o, addr))
.AddChoice(DirectoryMaster.Item("cancel"), L.T("otc.say.no"), "", no, null);
}
/// <summary>收下:现金不够或没连钱包就作罢;便衣没收现金、记销赃罪证;否则付现金、币进钱包。返回客户回话的键。</summary>
private static string AcceptSell(OtcOffer o, string addr)
/// <summary>去终端交易:记下在场的客户,打开交易终端的柜台交易页。</summary>
private static void Begin(StoreClient c, OtcOffer o, string addr)
{
string line = "otc.refused";
Log.Guard("换币客户去终端交易", () =>
{
Active = o; ActiveAddress = addr; activeClient = c;
TerminalWindow.OpenOtc();
});
}
/// <summary>客户还在柜台前吗(没被打发、没走)。不在了就作废这笔交易。</summary>
public static bool Present()
{
if (Active == null) return false;
var cur = PlayerStore.Instance?.currentClientInstance?.GetClientBlueprint();
if (cur != null && cur == activeClient) return true;
Log.Info("换币客户已经离开,交易作废");
Drop();
return false;
}
/// <summary>
/// 终端里点"成交":qty 是成交的数量(不超过报价)。卖币:付现金、币进已连接的钱包;买币:开账单、弹出钱包(地址已填好)。
/// 返回终端显示的消息(null 表示弹出了钱包,等签名)。
/// </summary>
public static string Deal(double qty)
{
if (!Present()) return L.T("otc.msg.gone");
var part = Otc.Part(Active, qty);
if (part == null) return L.T("msg.amount");
return part.Side == OtcSide.Sell ? Take(part) : Give(part);
}
/// <summary>收下客户卖的币:没连钱包、现金不够就作罢;便衣没收现金、记销赃罪证;否则付现金、币进钱包。客户随后离开。</summary>
private static string Take(OtcOffer o)
{
var d = Session.Data;
var ps = PlayerStore.Instance;
if (!d.Connected) return L.T("web3.err.noconn");
if (ps.playerCash < o.Cash) return L.T("otc.msg.cash");
string msg = null;
Log.Guard("换币客户成交(卖币)", () =>
{
var d = Session.Data;
var ps = PlayerStore.Instance;
if (!d.Connected) { line = "otc.nowallet"; return; }
if (ps.playerCash < o.Cash) { line = "otc.nocash"; return; }
ModHelper.AddCredit(-o.Cash, false);
if (o.Sting)
{
ps.secData.CommitCrime("FENCING", (int)Math.Min(Tuning.CrimeEventCap, o.Cash));
line = "otc.sting";
Say(L.T("otc.sting"));
msg = L.T("otc.msg.sting", Fmt.Credits(o.Cash));
Log.Info($"换币客户:便衣,现金 {o.Cash} 没收,记销赃罪证");
}
else
{
double over = Otc.Receive(d.Hot, o, Session.Price);
d.Chain(addr, d.Hot.Address, o.Asset, o.Qty);
d.Chain(ActiveAddress, d.Hot.Address, o.Asset, o.Qty);
d.Otc.Record(o.Cash);
string extra = TaintCrime.Commit(over);
if (extra.Length > 0) ps.AddNightLog(extra.Trim(), "cc7755");
line = "otc.done";
msg = L.T("otc.msg.bought", Fmt.Num(o.Qty), o.Asset, Fmt.Credits(o.Cash)) + TaintCrime.Commit(over);
Say(L.T("otc.done"));
Log.Info($"换币客户:{o.Qty:0.##} {o.Asset} 进 {WalletWindow.NameOf(d.Hot)},付现金 {o.Cash},钱包污点 {d.Hot.Taint:0},超出 {over:0}");
}
Drop();
Session.Save();
});
return line;
return msg;
}
// ---------- 向玩家买币 ----------
private static void BuildBuy(StoreClient c, OtcOffer o, string addr)
/// <summary>卖币给客户:开账单(客户地址已填好),弹出钱包签名;确认后客户付现金、离开。</summary>
private static string Give(OtcOffer o)
{
var ask = c.mainDialogue.SetText(c.displayName, L.T("otc.buy.ask", Fmt.Num(o.Qty), o.Asset, Fmt.Credits(o.Value)));
for (int tier = 0; tier < Tuning.OtcPremium.Length; tier++)
double qty = WalletWindow.RoundUp(o.Qty);
string asset = o.Asset;
int cash = o.Cash;
WalletWindow.Bill bill = null;
bill = new WalletWindow.Bill
{
int t = tier, price = Otc.Quote(o, t);
var say = new Dialogue();
// 选项上显示的是玩家要说的这句话
string line = L.T("otc.buy.say", Fmt.Credits(price), (Tuning.OtcPremium[t] * 100).ToString("0"));
var reply = say.SetText("PLAYER", line).NextDialogue();
reply.SetText(c.displayName, L.T("otc.buy.reject")).SetEndAction(Leave);
ask.AddChoice(DirectoryMaster.Item("$"), line, "", say,
() => reply.SetText(c.displayName, AcceptBuy(o, addr, t, price)));
}
// 原版的对话最多三个选项(选项气泡只有三个),所以没有"不卖":不想卖就把客户打发走
}
/// <summary>报价:客户按这一档的概率接受。接受就开账单(转到客户地址),确认后现金到账。返回客户的回话。</summary>
private static string AcceptBuy(OtcOffer o, string addr, int tier, int price)
{
string line = L.T("otc.buy.reject");
Log.Guard("换币客户报价(买币)", () =>
{
var d = Session.Data;
if (!Otc.Accepts(tier, d.Rng)) { Log.Info($"换币客户:第 {tier + 1} 档 {price} 没接受"); return; }
double qty = WalletWindow.RoundUp(o.Qty);
string asset = o.Asset;
WalletWindow.Bill bill = null;
bill = new WalletWindow.Bill
Address = ActiveAddress, Asset = asset, Amount = qty, Prefill = true, Summary = L.T("pay.otc", WalletWindow.Amt(qty), asset, Fmt.Credits(cash)),
Execute = pw => Log.Guard("换币客户到账", () =>
{
Address = addr, Asset = asset, Amount = qty, Summary = L.T("pay.otc", WalletWindow.Amt(qty), asset, Fmt.Credits(price)),
Execute = pw => Log.Guard("换币客户到账", () =>
{
pw.Spend(asset, qty, Session.Price);
ModHelper.AddCredit(price, true);
Session.Data.Otc.Record(price);
if (pendingBill == bill) pendingBill = null;
PlayerStore.Instance.AddNightLog(L.T("nightlog.otc.paid", WalletWindow.Amt(qty), asset, Fmt.Credits(price)));
TerminalWindow.Refresh(L.T("nightlog.otc.paid", WalletWindow.Amt(qty), asset, Fmt.Credits(price)));
Log.Info($"换币客户:{qty} {asset} 到账,收现金 {price}");
Session.Save();
}),
};
pendingBill = Standing = bill;
line = L.T("otc.buy.accept", Fmt.Credits(price), ChainAddress.Short(addr));
Log.Info($"换币客户:第 {tier + 1} 档 {price} 成交,待转 {qty} {asset} 到 {addr}");
});
return line;
pw.Spend(asset, qty, Session.Price);
ModHelper.AddCredit(cash, true);
Session.Data.Otc.Record(cash);
if (pendingBill == bill) pendingBill = null;
if (Active != null && Present()) { Say(L.T("otc.paid")); Active = null; ActiveAddress = null; activeClient = null; }
TerminalWindow.Refresh(L.T("otc.msg.sold", WalletWindow.Amt(qty), asset, Fmt.Credits(cash)));
Log.Info($"换币客户:{qty} {asset} 到账,收现金 {cash}");
Session.Save();
}),
};
pendingBill = Standing = bill;
WalletWindow.OpenForBill(bill);
Log.Info($"换币客户:卖出 {qty} {asset},现金 {cash},等签名");
return null;
}
/// <summary>睡觉前:买币客户的账单还没签名付款,作废。已经签名、还在确认中的照常到账。</summary>
private static void VoidUnpaid()
/// <summary>客户说最后一句,然后离开。</summary>
private static void Say(string line)
{
if (Standing == null) return;
var bill = Standing;
Log.Guard("换币账单作废", () =>
{
PlayerStore.Instance.AddNightLog(L.T("nightlog.otc.unpaid", WalletWindow.Amt(bill.Amount), bill.Asset), "cc7755");
Log.Info("换币客户的账单当天没付,作废");
});
var c = activeClient;
if (c == null || DialogUIManager.Instance == null) return;
var dl = new Dialogue();
dl.SetText(c.displayName, line).SetEndAction(Leave);
DialogUIManager.Instance.StartDialogue(dl);
}
/// <summary>放弃(终端的"放弃"):客户说一句走人,交易作废。</summary>
public static void Cancel()
{
if (Present()) Say(L.T("otc.refused"));
Drop();
}
/// <summary>这位客户的交易结束(成交、作废、离开,或者睡觉前):还没签名的账单一起作废;已经签名、还在确认中的照常到账。</summary>
private static void Drop()
{
Active = null; ActiveAddress = null; activeClient = null;
Void();
}
/// <summary>作废换币账单(终端的"作废"、夜里没付、读档)。</summary>
/// <summary>作废换币账单(终端的"作废"、客户离开、读档)。</summary>
public static void Void()
{
if (Standing != null && WalletWindow.Pending == Standing) WalletWindow.Pending = null;
Standing = null;
pendingBill = null;
if (pendingBill != null && Standing == null) pendingBill = null;
}
private static void Leave() => DialogUIManager.Instance.CurrentClientLeave();
+61 -2
View File
@@ -29,7 +29,7 @@ namespace Decentralized
private static float F => Mathf.Clamp(1f + Ext * 0.00065f, 1f, 1.3f);
public static float ChartScale => LeftW >= 634f ? 3f : 2f;
private static float[] Sc(float[] b) { float k = LeftW / 420f; return b.Select(x => x * k).ToArray(); }
private enum Page { Home, Bank, Poinbase, Web3, Mining, Gray, Wallets }
private enum Page { Home, Bank, Poinbase, Web3, Mining, Gray, Wallets, Otc }
private static Page _page = Page.Home;
private static string _amount = "";
@@ -76,7 +76,8 @@ namespace Decentralized
private static void BuildTop(CustomUIBuilder b)
{
if (_page == Page.Gray && !GrayAvailable) _page = Page.Web3;
TabRows(b, Enum.GetValues(typeof(Page)).Cast<Page>().Where(p => p != Page.Gray || GrayAvailable).Select(p =>
if (_page == Page.Otc && OtcClient.Active == null) _page = Page.Home;
TabRows(b, Enum.GetValues(typeof(Page)).Cast<Page>().Where(p => (p != Page.Gray || GrayAvailable) && (p != Page.Otc || OtcClient.Active != null)).Select(p =>
{
var page = p;
return new TabDef { Name = L.T("tab." + p.ToString().ToLowerInvariant()), On = page == _page, Click = () => { _page = page; _message = null; Open(); } };
@@ -99,6 +100,7 @@ namespace Decentralized
case Page.Mining: ReportPage(b); break;
case Page.Gray: GrayPage(b); break;
case Page.Wallets: WalletsPage(b); break;
case Page.Otc: OtcPage(b); break;
default: break;
}
}
@@ -171,6 +173,63 @@ namespace Decentralized
private static void Go(Page p) { _page = p; _message = null; Open(); }
/// <summary>换币客户选了"去终端交易":打开终端的柜台交易页,数量默认填客户的全部。</summary>
public static void OpenOtc()
{
var o = OtcClient.Active;
if (o == null) return;
_page = Page.Otc; _message = null;
_amount = WalletWindow.Amt(o.Qty);
Open();
}
private static readonly double[] OtcRatios = { 0.25, 0.5, 0.75, 1 };
/// <summary>柜台交易:客户的来意和报价,按比例或手输定成交数量,预览现金和币,成交或放弃。</summary>
private static void OtcPage(CustomUIBuilder b)
{
var o = OtcClient.Active;
b.AddHeader(L.T("otc.h"));
if (o == null || !OtcClient.Present()) { b.AddLabel(L.T("otc.msg.gone")); return; }
var w = new[] { 200f, 300f };
bool take = o.Side == OtcSide.Sell;
TableRow(b, w, L.T("otc.k.side"), L.T(take ? "otc.side.sell" : "otc.side.buy", o.Asset));
TableRow(b, w, L.T("otc.k.qty"), Fmt.Num(o.Qty) + " " + o.Asset);
TableRow(b, w, L.T("otc.k.value"), Fmt.Credits(o.Value));
TableRow(b, w, L.T(take ? "otc.k.ask" : "otc.k.bid"), Fmt.Credits(o.Cash));
TableRow(b, w, L.T("otc.k.unit"), Fmt.Num(o.Cash / o.Qty) + " / " + o.Asset);
b.BeginRow(6f, TextAnchor.MiddleLeft);
b.AddLabel(L.T("otc.k.addr", ChainAddress.Short(OtcClient.ActiveAddress)));
if (take) b.AddButton(L.T("otc.lookup"), () => { _explorerQuery = OtcClient.ActiveAddress; _page = Page.Wallets; _walletTab = WalletTab.Explorer; _message = null; Open(); });
b.End();
b.AddSeparator();
b.BeginRow(4f);
foreach (var r in OtcRatios)
{
double ratio = r;
string v = WalletWindow.Amt(o.Qty * ratio);
PledgerSkin.Pick(b, (ratio * 100).ToString("0") + "%", (_amount ?? "").Trim() == v, () => { _amount = v; Open(); }, _picked);
}
b.End();
AmountRow(b, true, o.Asset);
if (double.TryParse((_amount ?? "").Trim(), NumberStyles.Float, CultureInfo.InvariantCulture, out double q) && q > 0)
{
var part = Otc.Part(o, q);
b.AddLabel(take ? L.T("otc.preview.take", Fmt.Credits(part.Cash), Fmt.Num(part.Qty), o.Asset) : L.T("otc.preview.give", Fmt.Num(part.Qty), o.Asset, Fmt.Credits(part.Cash)));
if (!take) b.AddLabel(L.T("mixer.balance", o.Asset, Fmt.Num(Session.Data.Hot.Avail(o.Asset))));
}
b.BeginRow(6f);
b.AddButton(L.T("otc.deal"), () =>
{
if (!ReadAmount(out double v)) return;
string msg = OtcClient.Deal(v);
if (msg != null) _message = msg;
Open();
});
b.AddButton(L.T("otc.cancel"), () => { OtcClient.Cancel(); _message = null; _page = Page.Home; Open(); });
b.End();
}
/// <summary>钱包那边交易落地后刷新终端(开着的话),带上结果消息。</summary>
public static void Refresh(string message)
{
+3 -1
View File
@@ -29,6 +29,8 @@ namespace Decentralized
public string Address, Asset, Summary;
public double Amount;
public bool Contract;
/// <summary>收款地址直接填好(换币客户就在柜台前,当面给地址),不用玩家手输。</summary>
public bool Prefill;
/// <summary>合约调用时钱包里实际要花掉的数量(默认等于 Amount;取出质押这类不花币的调用为 0)和付手续费的币(默认用 Asset)。</summary>
public double? Spend;
public string FeeAsset;
@@ -148,7 +150,7 @@ namespace Decentralized
else
{
dev.Screen = Screen.Send;
dev.To = "";
dev.To = bill.Prefill ? bill.Address : "";
dev.Asset = bill.Asset;
dev.Amount = Amt(bill.Amount);
}
+12 -9
View File
@@ -1357,7 +1357,7 @@ internal static class Program
Check(ps > 12 && ps < 20, $"夜里向 SPARK 参考价靠拢:{ps:0.00}");
});
Test("换币客户:卖币的事件币种、污点比例与折扣、收下后的污点;买币的报价档;成交统计", () =>
Test("换币客户:卖币的事件币种、污点比例与折扣、收下后的污点;买币的随机出价;部分成交;成交统计", () =>
{
Func<string, double> pr = a => a == Assets.Ponero ? 50 : 1;
var none = new List<MarketEvent>();
@@ -1397,16 +1397,19 @@ internal static class Program
if (Otc.MakeSell(new List<MarketEvent> { MarketEvent.Crackdown }, false, pr, 500, rng).Sting) stingsCd++;
}
Check(stingsCd > stings * 2, $"镇压期间便衣更多:{stings} → {stingsCd}");
// 买币:市值按房租,三档溢价,越高越难成交
var ob = Otc.MakeBuy(pr, 500, new Rng(7));
Check(Array.IndexOf(Otc.BuyAssets, ob.Asset) >= 0 && ob.Value >= 500 * Tuning.OtcBuyMinRents && ob.Value <= 500 * Tuning.OtcBuyMaxRents && Near(ob.Qty * pr(ob.Asset), ob.Value, 1e-6), "买币的币种与数量");
Check(Otc.Quote(ob, 0) < Otc.Quote(ob, 1) && Otc.Quote(ob, 1) < Otc.Quote(ob, 2) && Otc.Quote(ob, 2) == (int)Math.Round(ob.Value * (1 + Tuning.OtcPremium[2])), "三档报价");
for (int t = 0; t < 3; t++)
// 买币:市值按房租,出价 = 市值 × (1 + 随机溢价),溢价在区间内
for (int i = 0; i < 200; i++)
{
int ok = 0; var r = new Rng((ulong)(t + 11));
for (int i = 0; i < 4000; i++) if (Otc.Accepts(t, r)) ok++;
Check(Math.Abs(ok / 4000.0 - Tuning.OtcAccept[t]) < 0.03, $"第 {t + 1} 档成交概率:{ok}/4000");
var ob = Otc.MakeBuy(pr, 500, rng);
Check(Array.IndexOf(Otc.BuyAssets, ob.Asset) >= 0 && ob.Value >= 500 * Tuning.OtcBuyMinRents && ob.Value <= 500 * Tuning.OtcBuyMaxRents && Near(ob.Qty * pr(ob.Asset), ob.Value, 1e-6), "买币的币种与数量");
Check(ob.Cash >= ob.Value * (1 + Tuning.OtcBidMin) - 1 && ob.Cash <= ob.Value * (1 + Tuning.OtcBidMax) + 1, $"出价在区间内:{ob.Cash} / {ob.Value:0}");
}
// 部分成交:现金、市值按数量比例折算,超过报价按全部算
var whole = new OtcOffer { Side = OtcSide.Sell, Asset = Assets.PSC, Qty = 20, Value = 2000, TaintRatio = 0.5, Cash = 1200, Sting = true };
var half = Otc.Part(whole, 10);
Check(Near(half.Qty, 10, 1e-9) && Near(half.Value, 1000, 1e-9) && half.Cash == 600 && half.TaintRatio == 0.5 && half.Sting, "收一半:现金、市值减半,污点比例和便衣不变");
Check(Near(Otc.Part(whole, 50).Qty, 20, 1e-9) && Otc.Part(whole, 50).Cash == 1200, "超过报价的数量按全部算");
Check(Otc.Part(whole, 0) == null && Otc.Part(whole, -1) == null, "数量不合法");
// 来历:脏的来源按污点比例出现,数量占比合计为 1
var hist = Otc.History(new OtcOffer { TaintRatio = 1 }, new[] { "dirty" }, new[] { "clean" }, new Rng(2));
Check(hist.Count >= 1 && hist.Count <= Tuning.OtcHistoryMax && hist.TrueForAll(kv => kv.Key == "dirty") && Near(hist.Sum(kv => kv.Value), 1, 1e-9), "全脏的币来历都是脏来源");