Stage 6.1: CRA staking pool, SPARK balance token with mint/burn
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
58dd93eca6
commit
98e80412e6
12 files changed
+371
-9
No files matched your search
@@ -29,6 +29,9 @@ namespace Decentralized
|
||||
public string Address, Asset, Summary;
|
||||
public double Amount;
|
||||
public bool Contract;
|
||||
/// <summary>合约调用时钱包里实际要花掉的数量(默认等于 Amount;取出质押这类不花币的调用为 0)和付手续费的币(默认用 Asset)。</summary>
|
||||
public double? Spend;
|
||||
public string FeeAsset;
|
||||
public Action<Wallet> Execute;
|
||||
}
|
||||
|
||||
@@ -65,7 +68,7 @@ namespace Decentralized
|
||||
}
|
||||
|
||||
private static readonly Dictionary<string, Device> Devices = new Dictionary<string, Device>();
|
||||
private static readonly string[] SendAssets = { Assets.PSC, Assets.CRC, Assets.CRT, Assets.CRA, Assets.Ponero };
|
||||
private static readonly string[] SendAssets = { Assets.PSC, Assets.CRC, Assets.CRT, Assets.CRA, Assets.SPARK, Assets.Ponero };
|
||||
|
||||
/// <summary>网络拥堵:夜间结算随机开始,持续一两天,期间手续费变贵、慢档和普通档确认变慢。</summary>
|
||||
public static bool Congested
|
||||
@@ -483,7 +486,7 @@ namespace Decentralized
|
||||
private static float Progress(Device dev) => Total(dev) <= 0 ? 0 : Mathf.Clamp01(Elapsed(dev) / Total(dev));
|
||||
|
||||
/// <summary>扣手续费的币:转账用转出的币,合约调用用账单上的币。</summary>
|
||||
private static string FeeAssetOf(Device dev) => Pending != null && Pending.Contract ? (Pending.Asset ?? Assets.PSC) : dev.Asset;
|
||||
private static string FeeAssetOf(Device dev) => Pending != null && Pending.Contract ? (Pending.FeeAsset ?? Pending.Asset ?? Assets.PSC) : dev.Asset;
|
||||
|
||||
/// <summary>这笔交易的价值(信用点),决定确认数。</summary>
|
||||
private static double ValueOf(Device dev)
|
||||
@@ -549,8 +552,9 @@ namespace Decentralized
|
||||
d.Block += 1 + d.Rng.Range(0, 3);
|
||||
if (Pending != null && Pending.Contract)
|
||||
{
|
||||
string a = Pending.Asset ?? Assets.PSC;
|
||||
if (dev.Wallet.Avail(a) + 1e-9 < Pending.Amount + FeeIn(a, dev.Tier)) { dev.Note = L.T("hw.err.fee"); Open(dev); return; }
|
||||
string a = Pending.Asset ?? Assets.PSC, fa = FeeAssetOf(dev);
|
||||
double spend = Pending.Spend ?? Pending.Amount;
|
||||
if (a == fa ? dev.Wallet.Avail(a) + 1e-9 < spend + FeeIn(fa, dev.Tier) : dev.Wallet.Avail(a) + 1e-9 < spend || dev.Wallet.Avail(fa) + 1e-9 < FeeIn(fa, dev.Tier)) { dev.Note = L.T("hw.err.fee"); Open(dev); return; }
|
||||
dev.Tx = new Tx { Bill = Pending, Block = d.Block, Start = Time.unscaledTime };
|
||||
}
|
||||
else
|
||||
|
||||
Reference in new issue
Block a user