Skip to content

Commit

Permalink
Update cycle and protocol API models
Browse files Browse the repository at this point in the history
  • Loading branch information
Groxan committed Feb 1, 2024
1 parent d1a1407 commit 57a2a7c
Show file tree
Hide file tree
Showing 4 changed files with 191 additions and 67 deletions.
59 changes: 46 additions & 13 deletions Tzkt.Api/Models/Baking/Cycle.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using System;

namespace Tzkt.Api.Models
namespace Tzkt.Api.Models
{
public class Cycle
{
Expand Down Expand Up @@ -50,29 +48,39 @@ public class Cycle
public int TotalBakers { get; set; }

/// <summary>
/// Total staking balance of all active in this cycle bakers
/// Total baking power of all active in this cycle bakers
/// </summary>
public long TotalBakingPower { get; set; }

/// <summary>
/// Fixed reward paid to the block payload proposer in this cycle (micro tez)
/// </summary>
public long BlockReward { get; set; }

/// <summary>
/// Bonus reward paid to the block producer in this cycle (micro tez)
/// </summary>
public long TotalStaking { get; set; }
public long BlockBonusPerSlot { get; set; }

/// <summary>
/// Total number of active bakers' delegators
/// Reward for endorsing in this cycle (micro tez)
/// </summary>
public int TotalDelegators { get; set; }
public long EndorsementRewardPerSlot { get; set; }

/// <summary>
/// Total balance delegated to active bakers
/// Reward for seed nonce revelation in this cycle (micro tez)
/// </summary>
public long TotalDelegated { get; set; }
public long NonceRevelationReward { get; set; }

/// <summary>
/// Total number of bakers in stake distribution for the cycle
/// Reward for vdf revelation in this cycle (micro tez)
/// </summary>
public int SelectedBakers { get; set; }
public long VdfRevelationReward { get; set; }

/// <summary>
/// Total stake of bakers in stake distribution for the cycle
/// Liquidity baking subsidy in this cycle (micro tez)
/// </summary>
public long SelectedStake { get; set; }
public long LBSubsidy { get; set; }

#region injecting
/// <summary>
Expand All @@ -82,6 +90,31 @@ public class Cycle
#endregion

#region deprecated
/// <summary>
/// [DEPRECATED]
/// </summary>
public long TotalStaking => TotalBakingPower;

/// <summary>
/// [DEPRECATED]
/// </summary>
public int TotalDelegators => 0;

/// <summary>
/// [DEPRECATED]
/// </summary>
public long TotalDelegated => 0;

/// <summary>
/// [DEPRECATED]
/// </summary>
public int SelectedBakers => TotalBakers;

/// <summary>
/// [DEPRECATED]
/// </summary>
public long SelectedStake => TotalBakingPower;

/// <summary>
/// [DEPRECATED]
/// </summary>
Expand Down
10 changes: 10 additions & 0 deletions Tzkt.Api/Models/ProtocolConstants.cs
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,11 @@ public class ProtocolConstants
/// </summary>
public long MinimalStake { get; set; }

/// <summary>
/// Required number of tokens to be frozen by bakers (micro tez)
/// </summary>
public long MinimalFrozenStake { get; set; }

/// <summary>
/// Security deposit for baking (producing) a block (micro tez)
/// </summary>
Expand Down Expand Up @@ -145,6 +150,11 @@ public class ProtocolConstants
/// </summary>
public int MaxDelegatedOverFrozenRatio { get; set; }

/// <summary>
/// The ratio of external staked balance over the baker’s own staked balance
/// </summary>
public int MaxExternalOverOwnStakeRatio { get; set; }

/// <summary>
/// Initial storage size of an originated (created) smart rollup (bytes)
/// </summary>
Expand Down
175 changes: 126 additions & 49 deletions Tzkt.Api/Repositories/CyclesRepository.cs
Original file line number Diff line number Diff line change
@@ -1,11 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Extensions.Configuration;
using Dapper;
using Dapper;
using Netezos.Encoding;

using Tzkt.Api.Models;
using Tzkt.Api.Services.Cache;

Expand All @@ -30,11 +24,12 @@ public async Task<int> GetCount()

public async Task<Cycle> Get(int index, Symbols quote)
{
var sql = @"
var sql = """
SELECT *
FROM ""Cycles""
WHERE ""Index"" = @index
LIMIT 1";
FROM "Cycles"
WHERE "Index" = @index
LIMIT 1
""";

using var db = GetConnection();
var row = await db.QueryFirstOrDefaultAsync(sql, new { index });
Expand All @@ -51,11 +46,13 @@ public async Task<Cycle> Get(int index, Symbols quote)
SnapshotIndex = row.SnapshotIndex,
SnapshotLevel = row.SnapshotLevel,
TotalBakers = row.TotalBakers,
TotalDelegated = row.TotalDelegated,
TotalDelegators = row.TotalDelegators,
TotalStaking = row.TotalStaking,
SelectedBakers = row.SelectedBakers,
SelectedStake = row.SelectedStake,
TotalBakingPower = row.TotalBakingPower,
BlockReward = row.BlockReward,
BlockBonusPerSlot = row.BlockBonusPerSlot,
EndorsementRewardPerSlot = row.EndorsementRewardPerSlot,
NonceRevelationReward = row.NonceRevelationReward,
VdfRevelationReward = row.VdfRevelationReward,
LBSubsidy = row.LBSubsidy,
Quote = Quotes.Get(quote, row.LastLevel)
};
}
Expand Down Expand Up @@ -85,11 +82,13 @@ public async Task<IEnumerable<Cycle>> Get(
SnapshotIndex = row.SnapshotIndex,
SnapshotLevel = row.SnapshotLevel,
TotalBakers = row.TotalBakers,
TotalDelegated = row.TotalDelegated,
TotalDelegators = row.TotalDelegators,
TotalStaking = row.TotalStaking,
SelectedBakers = row.SelectedBakers,
SelectedStake = row.SelectedStake,
TotalBakingPower = row.TotalBakingPower,
BlockReward = row.BlockReward,
BlockBonusPerSlot = row.BlockBonusPerSlot,
EndorsementRewardPerSlot = row.EndorsementRewardPerSlot,
NonceRevelationReward = row.NonceRevelationReward,
VdfRevelationReward = row.VdfRevelationReward,
LBSubsidy = row.LBSubsidy,
Quote = Quotes.Get(quote, row.LastLevel)
});
}
Expand All @@ -116,12 +115,21 @@ public async Task<object[][]> Get(
case "snapshotIndex": columns.Add(@"""SnapshotIndex"""); break;
case "snapshotLevel": columns.Add(@"""SnapshotLevel"""); break;
case "totalBakers": columns.Add(@"""TotalBakers"""); break;
case "totalDelegated": columns.Add(@"""TotalDelegated"""); break;
case "totalDelegators": columns.Add(@"""TotalDelegators"""); break;
case "totalStaking": columns.Add(@"""TotalStaking"""); break;
case "selectedBakers": columns.Add(@"""SelectedBakers"""); break;
case "selectedStake": columns.Add(@"""SelectedStake"""); break;
case "totalBakingPower": columns.Add(@"""TotalBakingPower"""); break;
case "blockReward": columns.Add(@"""BlockReward"""); break;
case "blockBonusPerSlot": columns.Add(@"""BlockBonusPerSlot"""); break;
case "endorsementRewardPerSlot": columns.Add(@"""EndorsementRewardPerSlot"""); break;
case "nonceRevelationReward": columns.Add(@"""NonceRevelationReward"""); break;
case "vdfRevelationReward": columns.Add(@"""VdfRevelationReward"""); break;
case "lbSubsidy": columns.Add(@"""LBSubsidy"""); break;
case "quote": columns.Add(@"""LastLevel"""); break;
#region deprecated
case "totalDelegated": columns.Add(@"0"); break;
case "totalDelegators": columns.Add(@"0"); break;
case "totalStaking": columns.Add(@"""TotalBakingPower"""); break;
case "selectedBakers": columns.Add(@"""TotalBakers"""); break;
case "selectedStake": columns.Add(@"""TotalBakingPower"""); break;
#endregion
}
}

Expand Down Expand Up @@ -179,30 +187,60 @@ public async Task<object[][]> Get(
foreach (var row in rows)
result[j++][i] = row.TotalBakers;
break;
case "totalBakingPower":
foreach (var row in rows)
result[j++][i] = row.TotalBakingPower;
break;
case "blockReward":
foreach (var row in rows)
result[j++][i] = row.BlockReward;
break;
case "blockBonusPerSlot":
foreach (var row in rows)
result[j++][i] = row.BlockBonusPerSlot;
break;
case "endorsementRewardPerSlot":
foreach (var row in rows)
result[j++][i] = row.EndorsementRewardPerSlot;
break;
case "nonceRevelationReward":
foreach (var row in rows)
result[j++][i] = row.NonceRevelationReward;
break;
case "vdfRevelationReward":
foreach (var row in rows)
result[j++][i] = row.VdfRevelationReward;
break;
case "lbSubsidy":
foreach (var row in rows)
result[j++][i] = row.LBSubsidy;
break;
case "quote":
foreach (var row in rows)
result[j++][i] = Quotes.Get(quote, row.LastLevel);
break;
#region deprecated
case "totalDelegated":
foreach (var row in rows)
result[j++][i] = row.TotalDelegated;
result[j++][i] = 0;
break;
case "totalDelegators":
foreach (var row in rows)
result[j++][i] = row.TotalDelegators;
result[j++][i] = 0;
break;
case "totalStaking":
foreach (var row in rows)
result[j++][i] = row.TotalStaking;
result[j++][i] = row.TotalBakingPower;
break;
case "selectedBakers":
foreach (var row in rows)
result[j++][i] = row.SelectedBakers;
result[j++][i] = row.TotalBakers;
break;
case "selectedStake":
foreach (var row in rows)
result[j++][i] = row.SelectedStake;
break;
case "quote":
foreach (var row in rows)
result[j++][i] = Quotes.Get(quote, row.LastLevel);
result[j++][i] = row.TotalBakingPower;
break;
#endregion
}
}

Expand All @@ -229,12 +267,21 @@ public async Task<object[]> Get(
case "snapshotIndex": columns.Add(@"""SnapshotIndex"""); break;
case "snapshotLevel": columns.Add(@"""SnapshotLevel"""); break;
case "totalBakers": columns.Add(@"""TotalBakers"""); break;
case "totalDelegated": columns.Add(@"""TotalDelegated"""); break;
case "totalDelegators": columns.Add(@"""TotalDelegators"""); break;
case "totalStaking": columns.Add(@"""TotalStaking"""); break;
case "selectedBakers": columns.Add(@"""SelectedBakers"""); break;
case "selectedStake": columns.Add(@"""SelectedStake"""); break;
case "totalBakingPower": columns.Add(@"""TotalBakingPower"""); break;
case "blockReward": columns.Add(@"""BlockReward"""); break;
case "blockBonusPerSlot": columns.Add(@"""BlockBonusPerSlot"""); break;
case "endorsementRewardPerSlot": columns.Add(@"""EndorsementRewardPerSlot"""); break;
case "nonceRevelationReward": columns.Add(@"""NonceRevelationReward"""); break;
case "vdfRevelationReward": columns.Add(@"""VdfRevelationReward"""); break;
case "lbSubsidy": columns.Add(@"""LBSubsidy"""); break;
case "quote": columns.Add(@"""LastLevel"""); break;
#region deprecated
case "totalDelegated": columns.Add(@"0"); break;
case "totalDelegators": columns.Add(@"0"); break;
case "totalStaking": columns.Add(@"""TotalBakingPower"""); break;
case "selectedBakers": columns.Add(@"""TotalBakers"""); break;
case "selectedStake": columns.Add(@"""TotalBakingPower"""); break;
#endregion
}

if (columns.Count == 0)
Expand Down Expand Up @@ -289,30 +336,60 @@ public async Task<object[]> Get(
foreach (var row in rows)
result[j++] = row.TotalBakers;
break;
case "totalBakingPower":
foreach (var row in rows)
result[j++] = row.TotalBakingPower;
break;
case "blockReward":
foreach (var row in rows)
result[j++] = row.BlockReward;
break;
case "blockBonusPerSlot":
foreach (var row in rows)
result[j++] = row.BlockBonusPerSlot;
break;
case "endorsementRewardPerSlot":
foreach (var row in rows)
result[j++] = row.EndorsementRewardPerSlot;
break;
case "nonceRevelationReward":
foreach (var row in rows)
result[j++] = row.NonceRevelationReward;
break;
case "vdfRevelationReward":
foreach (var row in rows)
result[j++] = row.VdfRevelationReward;
break;
case "lbSubsidy":
foreach (var row in rows)
result[j++] = row.LBSubsidy;
break;
case "quote":
foreach (var row in rows)
result[j++] = Quotes.Get(quote, row.LastLevel);
break;
#region deprecated
case "totalDelegated":
foreach (var row in rows)
result[j++] = row.TotalDelegated;
result[j++] = 0;
break;
case "totalDelegators":
foreach (var row in rows)
result[j++] = row.TotalDelegators;
result[j++] = 0;
break;
case "totalStaking":
foreach (var row in rows)
result[j++] = row.TotalStaking;
result[j++] = row.TotalBakingPower;
break;
case "selectedBakers":
foreach (var row in rows)
result[j++] = row.SelectedBakers;
result[j++] = row.TotalBakers;
break;
case "selectedStake":
foreach (var row in rows)
result[j++] = row.SelectedStake;
break;
case "quote":
foreach (var row in rows)
result[j++] = Quotes.Get(quote, row.LastLevel);
result[j++] = row.TotalBakingPower;
break;
#endregion
}

return result;
Expand Down
Loading

0 comments on commit 57a2a7c

Please sign in to comment.