From 94c2a2fb3ea4d0e60cd8b251b18771452309e839 Mon Sep 17 00:00:00 2001
From: Maksim Strebkov <257byte@gmail.com>
Date: Thu, 2 Apr 2026 17:18:28 +0300
Subject: [PATCH 1/6] Allow ghosts in `transaction`, `transfer_ticket` and
`increase_paid_storage`
---
.../IncreasePaidStorageOperation.cs | 2 +-
.../Models/Operations/TransactionOperation.cs | 2 +-
.../Operations/TransferTicketOperation.cs | 4 +-
...OperationRepository.IncreasePaidStorage.cs | 12 +-
.../OperationRepository.Transactions.cs | 14 +-
.../OperationRepository.TransferTicket.cs | 24 +--
.../Processors/OperationsProcessor.cs | 8 +-
....cs => 20260402141327_Initial.Designer.cs} | 10 +-
...4_Initial.cs => 20260402141327_Initial.cs} | 8 +-
...cs => 20260402141343_Triggers.Designer.cs} | 10 +-
...Triggers.cs => 20260402141343_Triggers.cs} | 0
.../Migrations/TzktContextModelSnapshot.cs | 166 +++++++++---------
.../IncreasePaidStorageOperation.cs | 2 +-
.../Models/Operations/TransactionOperation.cs | 2 +-
.../Operations/TransferTicketOperation.cs | 4 +-
.../Commits/Operations/OriginationsCommit.cs | 14 +-
.../Commits/Operations/TransactionsCommit.cs | 56 +++---
.../Operations/TransferTicketCommit.cs | 16 +-
.../Operations/TxRollupOriginationCommit.cs | 7 +-
.../Operations/IncreasePaidStorageCommit.cs | 8 +-
.../Operations/SmartRollupOriginateCommit.cs | 7 +-
.../Commits/Operations/TransactionsCommit.cs | 2 +-
.../Commits/Operations/TransactionsCommit.cs | 2 +-
.../Handlers/Proto5/Commits/TokensCommit.cs | 15 +-
Tzkt.Sync/Protocols/ProtocolHandler.cs | 4 +-
25 files changed, 206 insertions(+), 193 deletions(-)
rename Tzkt.Data/Migrations/{20251216213614_Initial.Designer.cs => 20260402141327_Initial.Designer.cs} (99%)
rename Tzkt.Data/Migrations/{20251216213614_Initial.cs => 20260402141327_Initial.cs} (99%)
rename Tzkt.Data/Migrations/{20251216213633_Triggers.Designer.cs => 20260402141343_Triggers.Designer.cs} (99%)
rename Tzkt.Data/Migrations/{20251216213633_Triggers.cs => 20260402141343_Triggers.cs} (100%)
diff --git a/Tzkt.Api/Models/Operations/IncreasePaidStorageOperation.cs b/Tzkt.Api/Models/Operations/IncreasePaidStorageOperation.cs
index df7fb9cb6..3c0c6afdd 100644
--- a/Tzkt.Api/Models/Operations/IncreasePaidStorageOperation.cs
+++ b/Tzkt.Api/Models/Operations/IncreasePaidStorageOperation.cs
@@ -86,7 +86,7 @@ public class IncreasePaidStorageOperation : Operation
///
/// Information about the contract for which paid storage was increased
///
- public Alias? Contract { get; set; }
+ public required Alias Contract { get; set; }
///
/// Amount of storage in bytes prepaid.
diff --git a/Tzkt.Api/Models/Operations/TransactionOperation.cs b/Tzkt.Api/Models/Operations/TransactionOperation.cs
index 716b9f247..a94b5e81e 100644
--- a/Tzkt.Api/Models/Operations/TransactionOperation.cs
+++ b/Tzkt.Api/Models/Operations/TransactionOperation.cs
@@ -95,7 +95,7 @@ public class TransactionOperation : Operation
///
/// Information about the target of the transaction
///
- public Alias? Target { get; set; }
+ public required Alias Target { get; set; }
///
/// Hash of the target contract code, or `null` is the target is not a contract
diff --git a/Tzkt.Api/Models/Operations/TransferTicketOperation.cs b/Tzkt.Api/Models/Operations/TransferTicketOperation.cs
index 0c76443a9..b9c268a52 100644
--- a/Tzkt.Api/Models/Operations/TransferTicketOperation.cs
+++ b/Tzkt.Api/Models/Operations/TransferTicketOperation.cs
@@ -78,12 +78,12 @@ public class TransferTicketOperation : Operation
///
/// Information about the target to which the operation was sent
///
- public Alias? Target { get; set; }
+ public required Alias Target { get; set; }
///
/// Information about the ticketer
///
- public Alias? Ticketer { get; set; }
+ public required Alias Ticketer { get; set; }
///
/// Amount sent
diff --git a/Tzkt.Api/Repositories/OperationRepository.IncreasePaidStorage.cs b/Tzkt.Api/Repositories/OperationRepository.IncreasePaidStorage.cs
index c1e71697a..f33a75e5a 100644
--- a/Tzkt.Api/Repositories/OperationRepository.IncreasePaidStorage.cs
+++ b/Tzkt.Api/Repositories/OperationRepository.IncreasePaidStorage.cs
@@ -47,7 +47,7 @@ INNER JOIN ""Blocks"" as b
BakerFee = row.BakerFee,
StorageFee = row.StorageFee ?? 0,
Status = OpStatuses.ToString(row.Status),
- Contract = row.ContractId == null ? null : Accounts.GetAlias(row.ContractId),
+ Contract = Accounts.GetAlias(row.ContractId),
Amount = row.Amount,
Errors = row.Errors != null ? OperationErrorSerializer.Deserialize(row.Errors) : null,
Quote = Quotes.Get(quote, row.Level)
@@ -83,7 +83,7 @@ INNER JOIN ""Blocks"" as b
BakerFee = row.BakerFee,
StorageFee = row.StorageFee ?? 0,
Status = OpStatuses.ToString(row.Status),
- Contract = row.ContractId == null ? null : Accounts.GetAlias(row.ContractId),
+ Contract = Accounts.GetAlias(row.ContractId),
Amount = row.Amount,
Errors = row.Errors != null ? OperationErrorSerializer.Deserialize(row.Errors) : null,
Quote = Quotes.Get(quote, row.Level)
@@ -117,7 +117,7 @@ SELECT o.*
BakerFee = row.BakerFee,
StorageFee = row.StorageFee ?? 0,
Status = OpStatuses.ToString(row.Status),
- Contract = row.ContractId == null ? null : Accounts.GetAlias(row.ContractId),
+ Contract = Accounts.GetAlias(row.ContractId),
Amount = row.Amount,
Errors = row.Errors != null ? OperationErrorSerializer.Deserialize(row.Errors) : null,
Quote = Quotes.Get(quote, row.Level)
@@ -221,7 +221,7 @@ INNER JOIN ""Blocks"" as b
BakerFee = row.BakerFee,
StorageFee = row.StorageFee ?? 0,
Status = OpStatuses.ToString(row.Status),
- Contract = row.ContractId == null ? null : Accounts.GetAlias(row.ContractId),
+ Contract = Accounts.GetAlias(row.ContractId),
Amount = row.Amount,
Errors = row.Errors != null ? OperationErrorSerializer.Deserialize(row.Errors) : null,
Quote = Quotes.Get(quote, row.Level)
@@ -359,7 +359,7 @@ INNER JOIN ""Blocks"" as b
break;
case "contract":
foreach (var row in rows)
- result[j++][i] = row.ContractId == null ? null : Accounts.GetAlias(row.ContractId);
+ result[j++][i] = Accounts.GetAlias(row.ContractId);
break;
case "amount":
foreach (var row in rows)
@@ -505,7 +505,7 @@ INNER JOIN ""Blocks"" as b
break;
case "contract":
foreach (var row in rows)
- result[j++] = row.ContractId == null ? null : Accounts.GetAlias(row.ContractId);
+ result[j++] = Accounts.GetAlias(row.ContractId);
break;
case "amount":
foreach (var row in rows)
diff --git a/Tzkt.Api/Repositories/OperationRepository.Transactions.cs b/Tzkt.Api/Repositories/OperationRepository.Transactions.cs
index ea9f4b550..82881e8dd 100644
--- a/Tzkt.Api/Repositories/OperationRepository.Transactions.cs
+++ b/Tzkt.Api/Repositories/OperationRepository.Transactions.cs
@@ -91,7 +91,7 @@ INNER JOIN ""Blocks"" as b
BakerFee = row.BakerFee,
StorageFee = row.StorageFee ?? 0,
AllocationFee = row.AllocationFee ?? 0,
- Target = row.TargetId != null ? Accounts.GetAlias(row.TargetId) : null,
+ Target = Accounts.GetAlias(row.TargetId),
TargetCodeHash = row.TargetCodeHash,
Amount = row.Amount,
Parameter = row.Entrypoint == null ? null : new TxParameter
@@ -167,7 +167,7 @@ INNER JOIN ""Blocks"" as b
BakerFee = row.BakerFee,
StorageFee = row.StorageFee ?? 0,
AllocationFee = row.AllocationFee ?? 0,
- Target = row.TargetId != null ? Accounts.GetAlias(row.TargetId) : null,
+ Target = Accounts.GetAlias(row.TargetId),
TargetCodeHash = row.TargetCodeHash,
Amount = row.Amount,
Parameter = row.Entrypoint == null ? null : new TxParameter
@@ -242,7 +242,7 @@ INNER JOIN ""Blocks"" as b
BakerFee = row.BakerFee,
StorageFee = row.StorageFee ?? 0,
AllocationFee = row.AllocationFee ?? 0,
- Target = row.TargetId != null ? Accounts.GetAlias(row.TargetId) : null,
+ Target = Accounts.GetAlias(row.TargetId),
TargetCodeHash = row.TargetCodeHash,
Amount = row.Amount,
Parameter = row.Entrypoint == null ? null : new TxParameter
@@ -299,7 +299,7 @@ public async Task> GetTransactions(Block block
BakerFee = row.BakerFee,
StorageFee = row.StorageFee ?? 0,
AllocationFee = row.AllocationFee ?? 0,
- Target = row.TargetId != null ? Accounts.GetAlias(row.TargetId) : null,
+ Target = Accounts.GetAlias(row.TargetId),
TargetCodeHash = row.TargetCodeHash,
Amount = row.Amount,
Parameter = row.Entrypoint == null ? null : new TxParameter
@@ -501,7 +501,7 @@ INNER JOIN ""Blocks"" as b
BakerFee = row.BakerFee,
StorageFee = row.StorageFee ?? 0,
AllocationFee = row.AllocationFee ?? 0,
- Target = row.TargetId != null ? Accounts.GetAlias(row.TargetId) : null,
+ Target = Accounts.GetAlias(row.TargetId),
TargetCodeHash = row.TargetCodeHash,
Amount = row.Amount,
Parameter = row.Entrypoint == null ? null : new TxParameter
@@ -743,7 +743,7 @@ INNER JOIN ""Blocks"" as b
break;
case "target":
foreach (var row in rows)
- result[j++][i] = row.TargetId != null ? await Accounts.GetAliasAsync(row.TargetId) : null;
+ result[j++][i] = await Accounts.GetAliasAsync(row.TargetId);
break;
case "targetCodeHash":
foreach (var row in rows)
@@ -1038,7 +1038,7 @@ INNER JOIN ""Blocks"" as b
break;
case "target":
foreach (var row in rows)
- result[j++] = row.TargetId != null ? await Accounts.GetAliasAsync(row.TargetId) : null;
+ result[j++] = await Accounts.GetAliasAsync(row.TargetId);
break;
case "targetCodeHash":
foreach (var row in rows)
diff --git a/Tzkt.Api/Repositories/OperationRepository.TransferTicket.cs b/Tzkt.Api/Repositories/OperationRepository.TransferTicket.cs
index a684cec44..01e616284 100644
--- a/Tzkt.Api/Repositories/OperationRepository.TransferTicket.cs
+++ b/Tzkt.Api/Repositories/OperationRepository.TransferTicket.cs
@@ -54,8 +54,8 @@ INNER JOIN ""Blocks"" as b
StorageUsed = row.StorageUsed,
BakerFee = row.BakerFee,
StorageFee = row.StorageFee ?? 0,
- Target = row.TargetId == null ? null : Accounts.GetAlias(row.TargetId) ,
- Ticketer = row.TicketerId == null ? null : Accounts.GetAlias(row.TicketerId),
+ Target = Accounts.GetAlias(row.TargetId),
+ Ticketer = Accounts.GetAlias(row.TicketerId),
Amount = row.Amount,
Entrypoint = row.Entrypoint,
ContentType = (RawJson)Micheline.ToJson(row.RawType),
@@ -102,8 +102,8 @@ INNER JOIN ""Blocks"" as b
StorageUsed = row.StorageUsed,
BakerFee = row.BakerFee,
StorageFee = row.StorageFee ?? 0,
- Target = row.TargetId == null ? null : Accounts.GetAlias(row.TargetId),
- Ticketer = row.TicketerId == null ? null : Accounts.GetAlias(row.TicketerId),
+ Target = Accounts.GetAlias(row.TargetId),
+ Ticketer = Accounts.GetAlias(row.TicketerId),
Amount = row.Amount,
Entrypoint = row.Entrypoint,
ContentType = (RawJson)Micheline.ToJson(row.RawType),
@@ -148,8 +148,8 @@ SELECT o.*
StorageUsed = row.StorageUsed,
BakerFee = row.BakerFee,
StorageFee = row.StorageFee ?? 0,
- Target = row.TargetId == null ? null : Accounts.GetAlias(row.TargetId),
- Ticketer = row.TicketerId == null ? null : Accounts.GetAlias(row.TicketerId),
+ Target = Accounts.GetAlias(row.TargetId),
+ Ticketer = Accounts.GetAlias(row.TicketerId),
Amount = row.Amount,
Entrypoint = row.Entrypoint,
ContentType = (RawJson)Micheline.ToJson(row.RawType),
@@ -285,8 +285,8 @@ INNER JOIN ""Blocks"" as b
StorageUsed = row.StorageUsed,
BakerFee = row.BakerFee,
StorageFee = row.StorageFee ?? 0,
- Target = row.TargetId == null ? null : Accounts.GetAlias(row.TargetId),
- Ticketer = row.TicketerId == null ? null : Accounts.GetAlias(row.TicketerId),
+ Target = Accounts.GetAlias(row.TargetId),
+ Ticketer = Accounts.GetAlias(row.TicketerId),
Amount = row.Amount,
Entrypoint = row.Entrypoint,
ContentType = (RawJson)Micheline.ToJson(row.RawType),
@@ -456,11 +456,11 @@ INNER JOIN ""Blocks"" as b
break;
case "target":
foreach (var row in rows)
- result[j++][i] = row.TargetId == null ? null : await Accounts.GetAliasAsync(row.TargetId);
+ result[j++][i] = await Accounts.GetAliasAsync(row.TargetId);
break;
case "ticketer":
foreach (var row in rows)
- result[j++][i] = row.TicketerId == null ? null : await Accounts.GetAliasAsync(row.TicketerId);
+ result[j++][i] = await Accounts.GetAliasAsync(row.TicketerId);
break;
case "amount":
foreach (var row in rows)
@@ -657,11 +657,11 @@ INNER JOIN ""Blocks"" as b
break;
case "target":
foreach (var row in rows)
- result[j++] = row.TargetId == null ? null : await Accounts.GetAliasAsync(row.TargetId);
+ result[j++] = await Accounts.GetAliasAsync(row.TargetId);
break;
case "ticketer":
foreach (var row in rows)
- result[j++] = row.TicketerId == null ? null : await Accounts.GetAliasAsync(row.TicketerId);
+ result[j++] = await Accounts.GetAliasAsync(row.TicketerId);
break;
case "amount":
foreach (var row in rows)
diff --git a/Tzkt.Api/Websocket/Processors/OperationsProcessor.cs b/Tzkt.Api/Websocket/Processors/OperationsProcessor.cs
index 09f8c7993..5fdef095d 100644
--- a/Tzkt.Api/Websocket/Processors/OperationsProcessor.cs
+++ b/Tzkt.Api/Websocket/Processors/OperationsProcessor.cs
@@ -615,7 +615,7 @@ void AddByCodeHash(Dictionary> subs, Models.TransactionOper
AddByCodeHash(senderSubs.CodeHashSubs, op);
}
- if (op.Target != null && transactionsSub.AddressSubs.TryGetValue(op.Target.Address, out var targetSubs))
+ if (transactionsSub.AddressSubs.TryGetValue(op.Target.Address, out var targetSubs))
{
if (targetSubs.Subs != null)
Add(targetSubs.Subs, op);
@@ -670,10 +670,10 @@ void AddByCodeHash(Dictionary> subs, Models.TransactionOper
if (transferTicketSub.AddressSubs.TryGetValue(op.Sender.Address, out var senderSubs) && senderSubs.Subs != null)
Add(senderSubs.Subs, op);
- if (op.Target != null && transferTicketSub.AddressSubs.TryGetValue(op.Target.Address, out var targetSubs) && targetSubs.Subs != null)
+ if (transferTicketSub.AddressSubs.TryGetValue(op.Target.Address, out var targetSubs) && targetSubs.Subs != null)
Add(targetSubs.Subs, op);
- if (op.Ticketer != null && transferTicketSub.AddressSubs.TryGetValue(op.Ticketer.Address, out var ticketerSubs) && ticketerSubs.Subs != null)
+ if (transferTicketSub.AddressSubs.TryGetValue(op.Ticketer.Address, out var ticketerSubs) && ticketerSubs.Subs != null)
Add(ticketerSubs.Subs, op);
}
}
@@ -820,7 +820,7 @@ void AddByCodeHash(Dictionary> subs, Models.TransactionOper
if (increasePaidStorageSubs.AddressSubs.TryGetValue(op.Sender.Address, out var senderSubs) && senderSubs.Subs != null)
Add(senderSubs.Subs, op);
- if (op.Contract != null && increasePaidStorageSubs.AddressSubs.TryGetValue(op.Contract.Address, out var contractSubs) && contractSubs.Subs != null)
+ if (increasePaidStorageSubs.AddressSubs.TryGetValue(op.Contract.Address, out var contractSubs) && contractSubs.Subs != null)
Add(contractSubs.Subs, op);
}
}
diff --git a/Tzkt.Data/Migrations/20251216213614_Initial.Designer.cs b/Tzkt.Data/Migrations/20260402141327_Initial.Designer.cs
similarity index 99%
rename from Tzkt.Data/Migrations/20251216213614_Initial.Designer.cs
rename to Tzkt.Data/Migrations/20260402141327_Initial.Designer.cs
index 893380a1a..08745e363 100644
--- a/Tzkt.Data/Migrations/20251216213614_Initial.Designer.cs
+++ b/Tzkt.Data/Migrations/20260402141327_Initial.Designer.cs
@@ -14,7 +14,7 @@
namespace Tzkt.Data.Migrations
{
[DbContext(typeof(TzktContext))]
- [Migration("20251216213614_Initial")]
+ [Migration("20260402141327_Initial")]
partial class Initial
{
///
@@ -2137,7 +2137,7 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder)
b.Property("BakerFee")
.HasColumnType("bigint");
- b.Property("ContractId")
+ b.Property("ContractId")
.HasColumnType("integer");
b.Property("Counter")
@@ -4744,7 +4744,7 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder)
b.Property("TargetCodeHash")
.HasColumnType("integer");
- b.Property("TargetId")
+ b.Property("TargetId")
.HasColumnType("integer");
b.Property("TicketTransfers")
@@ -4854,13 +4854,13 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder)
b.Property("SubIds")
.HasColumnType("integer");
- b.Property("TargetId")
+ b.Property("TargetId")
.HasColumnType("integer");
b.Property("TicketTransfers")
.HasColumnType("integer");
- b.Property("TicketerId")
+ b.Property("TicketerId")
.HasColumnType("integer");
b.Property("Timestamp")
diff --git a/Tzkt.Data/Migrations/20251216213614_Initial.cs b/Tzkt.Data/Migrations/20260402141327_Initial.cs
similarity index 99%
rename from Tzkt.Data/Migrations/20251216213614_Initial.cs
rename to Tzkt.Data/Migrations/20260402141327_Initial.cs
index ba3c6e0a7..4b60324b6 100644
--- a/Tzkt.Data/Migrations/20251216213614_Initial.cs
+++ b/Tzkt.Data/Migrations/20260402141327_Initial.cs
@@ -864,7 +864,7 @@ protected override void Up(MigrationBuilder migrationBuilder)
{
Id = table.Column(type: "bigint", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
- ContractId = table.Column(type: "integer", nullable: true),
+ ContractId = table.Column(type: "integer", nullable: false),
Amount = table.Column(type: "numeric", nullable: false),
Level = table.Column(type: "integer", nullable: false),
Timestamp = table.Column(type: "timestamp with time zone", nullable: false),
@@ -1840,7 +1840,7 @@ protected override void Up(MigrationBuilder migrationBuilder)
Id = table.Column(type: "bigint", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
SenderCodeHash = table.Column(type: "integer", nullable: true),
- TargetId = table.Column(type: "integer", nullable: true),
+ TargetId = table.Column(type: "integer", nullable: false),
TargetCodeHash = table.Column(type: "integer", nullable: true),
ResetDeactivation = table.Column(type: "integer", nullable: true),
Amount = table.Column(type: "bigint", nullable: false),
@@ -1886,8 +1886,8 @@ protected override void Up(MigrationBuilder migrationBuilder)
{
Id = table.Column(type: "bigint", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
- TargetId = table.Column(type: "integer", nullable: true),
- TicketerId = table.Column(type: "integer", nullable: true),
+ TargetId = table.Column(type: "integer", nullable: false),
+ TicketerId = table.Column(type: "integer", nullable: false),
Amount = table.Column(type: "numeric", nullable: false),
RawType = table.Column(type: "bytea", nullable: true),
RawContent = table.Column(type: "bytea", nullable: true),
diff --git a/Tzkt.Data/Migrations/20251216213633_Triggers.Designer.cs b/Tzkt.Data/Migrations/20260402141343_Triggers.Designer.cs
similarity index 99%
rename from Tzkt.Data/Migrations/20251216213633_Triggers.Designer.cs
rename to Tzkt.Data/Migrations/20260402141343_Triggers.Designer.cs
index 247206090..7a732cce0 100644
--- a/Tzkt.Data/Migrations/20251216213633_Triggers.Designer.cs
+++ b/Tzkt.Data/Migrations/20260402141343_Triggers.Designer.cs
@@ -14,7 +14,7 @@
namespace Tzkt.Data.Migrations
{
[DbContext(typeof(TzktContext))]
- [Migration("20251216213633_Triggers")]
+ [Migration("20260402141343_Triggers")]
partial class Triggers
{
///
@@ -2137,7 +2137,7 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder)
b.Property("BakerFee")
.HasColumnType("bigint");
- b.Property("ContractId")
+ b.Property("ContractId")
.HasColumnType("integer");
b.Property("Counter")
@@ -4744,7 +4744,7 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder)
b.Property("TargetCodeHash")
.HasColumnType("integer");
- b.Property("TargetId")
+ b.Property("TargetId")
.HasColumnType("integer");
b.Property("TicketTransfers")
@@ -4854,13 +4854,13 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder)
b.Property("SubIds")
.HasColumnType("integer");
- b.Property("TargetId")
+ b.Property("TargetId")
.HasColumnType("integer");
b.Property("TicketTransfers")
.HasColumnType("integer");
- b.Property("TicketerId")
+ b.Property("TicketerId")
.HasColumnType("integer");
b.Property("Timestamp")
diff --git a/Tzkt.Data/Migrations/20251216213633_Triggers.cs b/Tzkt.Data/Migrations/20260402141343_Triggers.cs
similarity index 100%
rename from Tzkt.Data/Migrations/20251216213633_Triggers.cs
rename to Tzkt.Data/Migrations/20260402141343_Triggers.cs
diff --git a/Tzkt.Data/Migrations/TzktContextModelSnapshot.cs b/Tzkt.Data/Migrations/TzktContextModelSnapshot.cs
index c23bcade9..83a8404b7 100644
--- a/Tzkt.Data/Migrations/TzktContextModelSnapshot.cs
+++ b/Tzkt.Data/Migrations/TzktContextModelSnapshot.cs
@@ -210,7 +210,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("Staked", "Type")
.HasFilter("\"Staked\" = true");
- b.ToTable("Accounts", (string)null);
+ b.ToTable("Accounts");
b.HasDiscriminator("Type").HasValue((byte)3);
@@ -252,7 +252,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("OpHash");
- b.ToTable("ActivationOps", (string)null);
+ b.ToTable("ActivationOps");
});
modelBuilder.Entity("Tzkt.Data.Models.AppState", b =>
@@ -568,7 +568,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasKey("Id");
- b.ToTable("AppState", (string)null);
+ b.ToTable("AppState");
b.HasData(
new
@@ -716,7 +716,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("OpHash");
- b.ToTable("AttestationOps", (string)null);
+ b.ToTable("AttestationOps");
});
modelBuilder.Entity("Tzkt.Data.Models.AttestationRewardOperation", b =>
@@ -757,7 +757,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("Level");
- b.ToTable("AttestationRewardOps", (string)null);
+ b.ToTable("AttestationRewardOps");
});
modelBuilder.Entity("Tzkt.Data.Models.AutostakingOperation", b =>
@@ -792,7 +792,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("Level");
- b.ToTable("AutostakingOps", (string)null);
+ b.ToTable("AutostakingOps");
});
modelBuilder.Entity("Tzkt.Data.Models.BakerCycle", b =>
@@ -986,7 +986,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("Cycle", "BakerId");
- b.ToTable("BakerCycles", (string)null);
+ b.ToTable("BakerCycles");
});
modelBuilder.Entity("Tzkt.Data.Models.BakingRight", b =>
@@ -1024,7 +1024,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("Cycle", "BakerId");
- b.ToTable("BakingRights", (string)null);
+ b.ToTable("BakingRights");
});
modelBuilder.Entity("Tzkt.Data.Models.BallotOperation", b =>
@@ -1079,7 +1079,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("SenderId");
- b.ToTable("BallotOps", (string)null);
+ b.ToTable("BallotOps");
});
modelBuilder.Entity("Tzkt.Data.Models.BigMap", b =>
@@ -1136,7 +1136,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("Ptr")
.IsUnique();
- b.ToTable("BigMaps", (string)null);
+ b.ToTable("BigMaps");
});
modelBuilder.Entity("Tzkt.Data.Models.BigMapKey", b =>
@@ -1203,7 +1203,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex(new[] { "BigMapPtr" }, "IX_BigMapKeys_BigMapPtr_Partial")
.HasFilter("\"Active\" = true");
- b.ToTable("BigMapKeys", (string)null);
+ b.ToTable("BigMapKeys");
});
modelBuilder.Entity("Tzkt.Data.Models.BigMapUpdate", b =>
@@ -1259,7 +1259,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("BigMapPtr", "Id");
- b.ToTable("BigMapUpdates", (string)null);
+ b.ToTable("BigMapUpdates");
});
modelBuilder.Entity("Tzkt.Data.Models.Block", b =>
@@ -1375,7 +1375,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("ProposerId");
- b.ToTable("Blocks", (string)null);
+ b.ToTable("Blocks");
});
modelBuilder.Entity("Tzkt.Data.Models.Commitment", b =>
@@ -1408,7 +1408,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("Address")
.IsUnique();
- b.ToTable("Commitments", (string)null);
+ b.ToTable("Commitments");
});
modelBuilder.Entity("Tzkt.Data.Models.ContractEvent", b =>
@@ -1460,7 +1460,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("ContractId", "Tag");
- b.ToTable("Events", (string)null);
+ b.ToTable("Events");
});
modelBuilder.Entity("Tzkt.Data.Models.Cycle", b =>
@@ -1518,7 +1518,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("Index")
.IsUnique();
- b.ToTable("Cycles", (string)null);
+ b.ToTable("Cycles");
});
modelBuilder.Entity("Tzkt.Data.Models.DalAttestationRewardOperation", b =>
@@ -1559,7 +1559,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("Level");
- b.ToTable("DalAttestationRewardOps", (string)null);
+ b.ToTable("DalAttestationRewardOps");
});
modelBuilder.Entity("Tzkt.Data.Models.DalEntrapmentEvidenceOperation", b =>
@@ -1604,7 +1604,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("OpHash");
- b.ToTable("DalEntrapmentEvidenceOps", (string)null);
+ b.ToTable("DalEntrapmentEvidenceOps");
});
modelBuilder.Entity("Tzkt.Data.Models.DalPublishCommitmentOperation", b =>
@@ -1675,7 +1675,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("SenderId");
- b.ToTable("DalPublishCommitmentOps", (string)null);
+ b.ToTable("DalPublishCommitmentOps");
});
modelBuilder.Entity("Tzkt.Data.Models.DelegationOperation", b =>
@@ -1775,7 +1775,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("SenderId", "Id");
- b.ToTable("DelegationOps", (string)null);
+ b.ToTable("DelegationOps");
});
modelBuilder.Entity("Tzkt.Data.Models.DelegationSnapshot", b =>
@@ -1809,7 +1809,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex(new[] { "Level" }, "IX_DelegationSnapshots_Level_Partial")
.HasFilter("\"BakerId\" = \"AccountId\"");
- b.ToTable("DelegationSnapshots", (string)null);
+ b.ToTable("DelegationSnapshots");
});
modelBuilder.Entity("Tzkt.Data.Models.DelegatorCycle", b =>
@@ -1843,7 +1843,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("Cycle", "DelegatorId");
- b.ToTable("DelegatorCycles", (string)null);
+ b.ToTable("DelegatorCycles");
});
modelBuilder.Entity("Tzkt.Data.Models.Domain", b =>
@@ -1897,7 +1897,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("Owner");
- b.ToTable("Domains", (string)null);
+ b.ToTable("Domains");
});
modelBuilder.Entity("Tzkt.Data.Models.DoubleBakingOperation", b =>
@@ -1960,7 +1960,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("OpHash");
- b.ToTable("DoubleBakingOps", (string)null);
+ b.ToTable("DoubleBakingOps");
});
modelBuilder.Entity("Tzkt.Data.Models.DoubleConsensusOperation", b =>
@@ -2026,7 +2026,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("OpHash");
- b.ToTable("DoubleConsensusOps", (string)null);
+ b.ToTable("DoubleConsensusOps");
});
modelBuilder.Entity("Tzkt.Data.Models.DrainDelegateOperation", b =>
@@ -2074,7 +2074,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("TargetId");
- b.ToTable("DrainDelegateOps", (string)null);
+ b.ToTable("DrainDelegateOps");
});
modelBuilder.Entity("Tzkt.Data.Models.InboxMessage", b =>
@@ -2114,7 +2114,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("Type", "Id");
- b.ToTable("InboxMessages", (string)null);
+ b.ToTable("InboxMessages");
});
modelBuilder.Entity("Tzkt.Data.Models.IncreasePaidStorageOperation", b =>
@@ -2134,7 +2134,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.Property("BakerFee")
.HasColumnType("bigint");
- b.Property("ContractId")
+ b.Property("ContractId")
.HasColumnType("integer");
b.Property("Counter")
@@ -2186,7 +2186,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("SenderId");
- b.ToTable("IncreasePaidStorageOps", (string)null);
+ b.ToTable("IncreasePaidStorageOps");
});
modelBuilder.Entity("Tzkt.Data.Models.MigrationOperation", b =>
@@ -2233,7 +2233,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("Level");
- b.ToTable("MigrationOps", (string)null);
+ b.ToTable("MigrationOps");
});
modelBuilder.Entity("Tzkt.Data.Models.NonceRevelationOperation", b =>
@@ -2298,7 +2298,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("SenderId");
- b.ToTable("NonceRevelationOps", (string)null);
+ b.ToTable("NonceRevelationOps");
});
modelBuilder.Entity("Tzkt.Data.Models.OriginationOperation", b =>
@@ -2410,7 +2410,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("SenderId");
- b.ToTable("OriginationOps", (string)null);
+ b.ToTable("OriginationOps");
});
modelBuilder.Entity("Tzkt.Data.Models.PreattestationOperation", b =>
@@ -2447,7 +2447,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("OpHash");
- b.ToTable("PreattestationOps", (string)null);
+ b.ToTable("PreattestationOps");
});
modelBuilder.Entity("Tzkt.Data.Models.Proposal", b =>
@@ -2501,7 +2501,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex(new[] { "Status" }, "IX_Proposals_Status_Partial")
.HasFilter("\"Status\" = 0");
- b.ToTable("Proposals", (string)null);
+ b.ToTable("Proposals");
});
modelBuilder.Entity("Tzkt.Data.Models.ProposalOperation", b =>
@@ -2556,7 +2556,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("SenderId");
- b.ToTable("ProposalOps", (string)null);
+ b.ToTable("ProposalOps");
});
modelBuilder.Entity("Tzkt.Data.Models.Protocol", b =>
@@ -2743,7 +2743,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("Hash")
.IsUnique();
- b.ToTable("Protocols", (string)null);
+ b.ToTable("Protocols");
});
modelBuilder.Entity("Tzkt.Data.Models.Quote", b =>
@@ -2789,7 +2789,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("Level")
.IsUnique();
- b.ToTable("Quotes", (string)null);
+ b.ToTable("Quotes");
});
modelBuilder.Entity("Tzkt.Data.Models.RefutationGame", b =>
@@ -2852,7 +2852,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("SmartRollupId", "Id");
- b.ToTable("RefutationGames", (string)null);
+ b.ToTable("RefutationGames");
});
modelBuilder.Entity("Tzkt.Data.Models.RegisterConstantOperation", b =>
@@ -2932,7 +2932,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("SenderId");
- b.ToTable("RegisterConstantOps", (string)null);
+ b.ToTable("RegisterConstantOps");
});
modelBuilder.Entity("Tzkt.Data.Models.RevealOperation", b =>
@@ -2996,7 +2996,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("SenderId");
- b.ToTable("RevealOps", (string)null);
+ b.ToTable("RevealOps");
});
modelBuilder.Entity("Tzkt.Data.Models.RevelationPenaltyOperation", b =>
@@ -3028,7 +3028,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("Level");
- b.ToTable("RevelationPenaltyOps", (string)null);
+ b.ToTable("RevelationPenaltyOps");
});
modelBuilder.Entity("Tzkt.Data.Models.Script", b =>
@@ -3080,7 +3080,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex(new[] { "ContractId" }, "IX_Scripts_ContractId_Partial")
.HasFilter("\"Current\" = true");
- b.ToTable("Scripts", (string)null);
+ b.ToTable("Scripts");
});
modelBuilder.Entity("Tzkt.Data.Models.SetDelegateParametersOperation", b =>
@@ -3155,7 +3155,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("SenderId", "Id");
- b.ToTable("SetDelegateParametersOps", (string)null);
+ b.ToTable("SetDelegateParametersOps");
});
modelBuilder.Entity("Tzkt.Data.Models.SetDepositsLimitOperation", b =>
@@ -3222,7 +3222,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("SenderId", "Id");
- b.ToTable("SetDepositsLimitOps", (string)null);
+ b.ToTable("SetDepositsLimitOps");
});
modelBuilder.Entity("Tzkt.Data.Models.SmartRollupAddMessagesOperation", b =>
@@ -3289,7 +3289,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("SenderId");
- b.ToTable("SmartRollupAddMessagesOps", (string)null);
+ b.ToTable("SmartRollupAddMessagesOps");
});
modelBuilder.Entity("Tzkt.Data.Models.SmartRollupCementOperation", b =>
@@ -3363,7 +3363,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("SmartRollupId", "Id");
- b.ToTable("SmartRollupCementOps", (string)null);
+ b.ToTable("SmartRollupCementOps");
});
modelBuilder.Entity("Tzkt.Data.Models.SmartRollupCommitment", b =>
@@ -3427,7 +3427,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("Hash", "SmartRollupId");
- b.ToTable("SmartRollupCommitments", (string)null);
+ b.ToTable("SmartRollupCommitments");
});
modelBuilder.Entity("Tzkt.Data.Models.SmartRollupExecuteOperation", b =>
@@ -3507,7 +3507,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("CommitmentId", "Id");
- b.ToTable("SmartRollupExecuteOps", (string)null);
+ b.ToTable("SmartRollupExecuteOps");
});
modelBuilder.Entity("Tzkt.Data.Models.SmartRollupOriginateOperation", b =>
@@ -3589,7 +3589,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("SmartRollupId");
- b.ToTable("SmartRollupOriginateOps", (string)null);
+ b.ToTable("SmartRollupOriginateOps");
});
modelBuilder.Entity("Tzkt.Data.Models.SmartRollupPublishOperation", b =>
@@ -3675,7 +3675,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("SmartRollupId", "SenderId", "Id");
- b.ToTable("SmartRollupPublishOps", (string)null);
+ b.ToTable("SmartRollupPublishOps");
});
modelBuilder.Entity("Tzkt.Data.Models.SmartRollupRecoverBondOperation", b =>
@@ -3752,7 +3752,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("StakerId");
- b.ToTable("SmartRollupRecoverBondOps", (string)null);
+ b.ToTable("SmartRollupRecoverBondOps");
});
modelBuilder.Entity("Tzkt.Data.Models.SmartRollupRefuteOperation", b =>
@@ -3841,7 +3841,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("GameId", "Id");
- b.ToTable("SmartRollupRefuteOps", (string)null);
+ b.ToTable("SmartRollupRefuteOps");
});
modelBuilder.Entity("Tzkt.Data.Models.SnapshotBalance", b =>
@@ -3881,7 +3881,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex(new[] { "Level" }, "IX_SnapshotBalances_Level_Partial")
.HasFilter("\"BakerId\" = \"AccountId\"");
- b.ToTable("SnapshotBalances", (string)null);
+ b.ToTable("SnapshotBalances");
});
modelBuilder.Entity("Tzkt.Data.Models.Software", b =>
@@ -3912,7 +3912,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasKey("Id");
- b.ToTable("Software", (string)null);
+ b.ToTable("Software");
});
modelBuilder.Entity("Tzkt.Data.Models.StakerCycle", b =>
@@ -3953,7 +3953,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("StakerId", "Cycle");
- b.ToTable("StakerCycles", (string)null);
+ b.ToTable("StakerCycles");
});
modelBuilder.Entity("Tzkt.Data.Models.StakingOperation", b =>
@@ -4039,7 +4039,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("StakerId");
- b.ToTable("StakingOps", (string)null);
+ b.ToTable("StakingOps");
});
modelBuilder.Entity("Tzkt.Data.Models.StakingUpdate", b =>
@@ -4112,7 +4112,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("StakerId", "Cycle", "Id");
- b.ToTable("StakingUpdates", (string)null);
+ b.ToTable("StakingUpdates");
});
modelBuilder.Entity("Tzkt.Data.Models.Statistics", b =>
@@ -4202,7 +4202,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("Level")
.IsUnique();
- b.ToTable("Statistics", (string)null);
+ b.ToTable("Statistics");
});
modelBuilder.Entity("Tzkt.Data.Models.Storage", b =>
@@ -4248,7 +4248,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex(new[] { "ContractId" }, "IX_Storages_ContractId_Partial")
.HasFilter("\"Current\" = true");
- b.ToTable("Storages", (string)null);
+ b.ToTable("Storages");
});
modelBuilder.Entity("Tzkt.Data.Models.Ticket", b =>
@@ -4325,7 +4325,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("TicketerId", "TypeHash", "ContentHash");
- b.ToTable("Tickets", (string)null);
+ b.ToTable("Tickets");
});
modelBuilder.Entity("Tzkt.Data.Models.TicketBalance", b =>
@@ -4372,7 +4372,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("AccountId", "TicketerId");
- b.ToTable("TicketBalances", (string)null);
+ b.ToTable("TicketBalances");
});
modelBuilder.Entity("Tzkt.Data.Models.TicketTransfer", b =>
@@ -4431,7 +4431,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("Level", "Id");
- b.ToTable("TicketTransfers", (string)null);
+ b.ToTable("TicketTransfers");
});
modelBuilder.Entity("Tzkt.Data.Models.Token", b =>
@@ -4507,7 +4507,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("ContractId", "TokenId")
.IsUnique();
- b.ToTable("Tokens", (string)null);
+ b.ToTable("Tokens");
});
modelBuilder.Entity("Tzkt.Data.Models.TokenBalance", b =>
@@ -4567,7 +4567,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex(new[] { "TokenId" }, "IX_TokenBalances_TokenId_Partial")
.HasFilter("\"Balance\" != '0'");
- b.ToTable("TokenBalances", (string)null);
+ b.ToTable("TokenBalances");
});
modelBuilder.Entity("Tzkt.Data.Models.TokenTransfer", b =>
@@ -4634,7 +4634,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("Level", "Id");
- b.ToTable("TokenTransfers", (string)null);
+ b.ToTable("TokenTransfers");
});
modelBuilder.Entity("Tzkt.Data.Models.TransactionOperation", b =>
@@ -4741,7 +4741,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.Property("TargetCodeHash")
.HasColumnType("integer");
- b.Property("TargetId")
+ b.Property("TargetId")
.HasColumnType("integer");
b.Property("TicketTransfers")
@@ -4779,7 +4779,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex(new[] { "TargetId" }, "IX_TransactionOps_TargetId_Partial")
.HasFilter("\"Entrypoint\" = 'transfer' AND \"TokenTransfers\" IS NULL AND \"Status\" = 1");
- b.ToTable("TransactionOps", (string)null);
+ b.ToTable("TransactionOps");
});
modelBuilder.Entity("Tzkt.Data.Models.TransferTicketOperation", b =>
@@ -4851,13 +4851,13 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.Property("SubIds")
.HasColumnType("integer");
- b.Property("TargetId")
+ b.Property("TargetId")
.HasColumnType("integer");
b.Property("TicketTransfers")
.HasColumnType("integer");
- b.Property("TicketerId")
+ b.Property("TicketerId")
.HasColumnType("integer");
b.Property("Timestamp")
@@ -4875,7 +4875,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("TicketerId");
- b.ToTable("TransferTicketOps", (string)null);
+ b.ToTable("TransferTicketOps");
});
modelBuilder.Entity("Tzkt.Data.Models.TxRollupCommitOperation", b =>
@@ -4947,7 +4947,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("SenderId");
- b.ToTable("TxRollupCommitOps", (string)null);
+ b.ToTable("TxRollupCommitOps");
});
modelBuilder.Entity("Tzkt.Data.Models.TxRollupDispatchTicketsOperation", b =>
@@ -5016,7 +5016,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("SenderId");
- b.ToTable("TxRollupDispatchTicketsOps", (string)null);
+ b.ToTable("TxRollupDispatchTicketsOps");
});
modelBuilder.Entity("Tzkt.Data.Models.TxRollupFinalizeCommitmentOperation", b =>
@@ -5085,7 +5085,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("SenderId");
- b.ToTable("TxRollupFinalizeCommitmentOps", (string)null);
+ b.ToTable("TxRollupFinalizeCommitmentOps");
});
modelBuilder.Entity("Tzkt.Data.Models.TxRollupOriginationOperation", b =>
@@ -5154,7 +5154,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("SenderId");
- b.ToTable("TxRollupOriginationOps", (string)null);
+ b.ToTable("TxRollupOriginationOps");
});
modelBuilder.Entity("Tzkt.Data.Models.TxRollupRejectionOperation", b =>
@@ -5234,7 +5234,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("SenderId");
- b.ToTable("TxRollupRejectionOps", (string)null);
+ b.ToTable("TxRollupRejectionOps");
});
modelBuilder.Entity("Tzkt.Data.Models.TxRollupRemoveCommitmentOperation", b =>
@@ -5303,7 +5303,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("SenderId");
- b.ToTable("TxRollupRemoveCommitmentOps", (string)null);
+ b.ToTable("TxRollupRemoveCommitmentOps");
});
modelBuilder.Entity("Tzkt.Data.Models.TxRollupReturnBondOperation", b =>
@@ -5375,7 +5375,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("SenderId");
- b.ToTable("TxRollupReturnBondOps", (string)null);
+ b.ToTable("TxRollupReturnBondOps");
});
modelBuilder.Entity("Tzkt.Data.Models.TxRollupSubmitBatchOperation", b =>
@@ -5444,7 +5444,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("SenderId");
- b.ToTable("TxRollupSubmitBatchOps", (string)null);
+ b.ToTable("TxRollupSubmitBatchOps");
});
modelBuilder.Entity("Tzkt.Data.Models.UnstakeRequest", b =>
@@ -5494,7 +5494,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("StakerId", "Cycle");
- b.ToTable("UnstakeRequests", (string)null);
+ b.ToTable("UnstakeRequests");
});
modelBuilder.Entity("Tzkt.Data.Models.UpdateSecondaryKeyOperation", b =>
@@ -5574,7 +5574,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("SenderId", "Id");
- b.ToTable("UpdateSecondaryKeyOps", (string)null);
+ b.ToTable("UpdateSecondaryKeyOps");
});
modelBuilder.Entity("Tzkt.Data.Models.VdfRevelationOperation", b =>
@@ -5633,7 +5633,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("Cycle", "Id");
- b.ToTable("VdfRevelationOps", (string)null);
+ b.ToTable("VdfRevelationOps");
});
modelBuilder.Entity("Tzkt.Data.Models.VotingPeriod", b =>
@@ -5720,7 +5720,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("Index")
.IsUnique();
- b.ToTable("VotingPeriods", (string)null);
+ b.ToTable("VotingPeriods");
});
modelBuilder.Entity("Tzkt.Data.Models.VotingSnapshot", b =>
@@ -5751,7 +5751,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasIndex("Period", "BakerId")
.IsUnique();
- b.ToTable("VotingSnapshots", (string)null);
+ b.ToTable("VotingSnapshots");
});
modelBuilder.Entity("Tzkt.Data.Models.Contract", b =>
diff --git a/Tzkt.Data/Models/Operations/IncreasePaidStorageOperation.cs b/Tzkt.Data/Models/Operations/IncreasePaidStorageOperation.cs
index aa9ebb9a9..34fcc5f22 100644
--- a/Tzkt.Data/Models/Operations/IncreasePaidStorageOperation.cs
+++ b/Tzkt.Data/Models/Operations/IncreasePaidStorageOperation.cs
@@ -6,7 +6,7 @@ namespace Tzkt.Data.Models
{
public class IncreasePaidStorageOperation : ManagerOperation
{
- public int? ContractId { get; set; }
+ public int ContractId { get; set; }
public BigInteger Amount { get; set; }
}
diff --git a/Tzkt.Data/Models/Operations/TransactionOperation.cs b/Tzkt.Data/Models/Operations/TransactionOperation.cs
index d61ae26e0..02b37cc0b 100644
--- a/Tzkt.Data/Models/Operations/TransactionOperation.cs
+++ b/Tzkt.Data/Models/Operations/TransactionOperation.cs
@@ -8,7 +8,7 @@ namespace Tzkt.Data.Models
public class TransactionOperation : ContractOperation
{
public int? SenderCodeHash { get; set; }
- public int? TargetId { get; set; }
+ public int TargetId { get; set; }
public int? TargetCodeHash { get; set; }
public int? ResetDeactivation { get; set; }
diff --git a/Tzkt.Data/Models/Operations/TransferTicketOperation.cs b/Tzkt.Data/Models/Operations/TransferTicketOperation.cs
index ab0ca37d3..66795cee2 100644
--- a/Tzkt.Data/Models/Operations/TransferTicketOperation.cs
+++ b/Tzkt.Data/Models/Operations/TransferTicketOperation.cs
@@ -6,8 +6,8 @@ namespace Tzkt.Data.Models
{
public class TransferTicketOperation : ManagerOperation
{
- public int? TargetId { get; set; }
- public int? TicketerId { get; set; }
+ public int TargetId { get; set; }
+ public int TicketerId { get; set; }
public BigInteger Amount { get; set; }
public byte[]? RawType { get; set; }
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/OriginationsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/OriginationsCommit.cs
index 51760b1ec..5e1687b45 100644
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/OriginationsCommit.cs
+++ b/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/OriginationsCommit.cs
@@ -326,7 +326,12 @@ public virtual async Task Revert(Block block, OriginationOperation origination)
Undelegate(contract!, _contractDelegate);
contract!.OriginationsCount--;
- if (contract.TokenTransfersCount == 0 && contract.TicketTransfersCount == 0 && contract.Index is null)
+ if (contract.TransactionsCount == 0 &&
+ contract.TransferTicketCount == 0 &&
+ contract.IncreasePaidStorageCount == 0 &&
+ contract.TokenTransfersCount == 0 &&
+ contract.TicketTransfersCount == 0 &&
+ contract.Index is null)
{
Db.Accounts.Remove(contract);
Cache.Accounts.Remove(contract);
@@ -410,7 +415,12 @@ public virtual async Task RevertInternal(Block block, OriginationOperation origi
Undelegate(contract!, _contractDelegate);
contract!.OriginationsCount--;
- if (contract.TokenTransfersCount == 0 && contract.TicketTransfersCount == 0 && contract.Index is null)
+ if (contract.TransactionsCount == 0 &&
+ contract.TransferTicketCount == 0 &&
+ contract.IncreasePaidStorageCount == 0 &&
+ contract.TokenTransfersCount == 0 &&
+ contract.TicketTransfersCount == 0 &&
+ contract.Index is null)
{
Db.Accounts.Remove(contract);
Cache.Accounts.Remove(contract);
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/TransactionsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/TransactionsCommit.cs
index 8cf1d8ac0..275a72511 100644
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/TransactionsCommit.cs
+++ b/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/TransactionsCommit.cs
@@ -19,7 +19,7 @@ public virtual async Task Apply(Block block, JsonElement op, JsonElement content
{
#region init
var sender = await Cache.Accounts.GetExistingAsync(content.RequiredString("source"));
- var target = await Cache.Accounts.GetAsync(content.OptionalString("destination"));
+ var target = await Cache.Accounts.GetOrCreateAsync(content.RequiredString("destination"));
var result = content.Required("metadata").Required("operation_result");
@@ -35,7 +35,7 @@ public virtual async Task Apply(Block block, JsonElement op, JsonElement content
GasLimit = content.RequiredInt32("gas_limit"),
StorageLimit = content.RequiredInt32("storage_limit"),
SenderId = sender.Id,
- TargetId = target?.Id,
+ TargetId = target.Id,
TargetCodeHash = (target as Contract)?.CodeHash,
Status = result.RequiredString("status") switch
{
@@ -69,12 +69,9 @@ public virtual async Task Apply(Block block, JsonElement op, JsonElement content
sender.Counter = transaction.Counter;
sender.TransactionsCount++;
- if (target != null)
- {
- Db.TryAttach(target);
- if (target != sender)
- target.TransactionsCount++;
- }
+ Db.TryAttach(target);
+ if (target != sender)
+ target.TransactionsCount++;
block.Operations |= Operations.Transactions;
@@ -89,14 +86,14 @@ public virtual async Task Apply(Block block, JsonElement op, JsonElement content
Spend(sender, transaction.Amount + burned);
- Receive(target!, transaction.Amount);
+ Receive(target, transaction.Amount);
- await ResetGracePeriod(transaction, target!);
+ await ResetGracePeriod(transaction, target);
if (result.TryGetProperty("storage", out var storage))
{
BigMapDiffs = ParseBigMapDiffs(transaction, result);
- await ProcessStorage(transaction, target!, storage);
+ await ProcessStorage(transaction, target, storage);
}
await ApplyAddressRegistryDiffs(transaction, result);
@@ -107,7 +104,7 @@ public virtual async Task Apply(Block block, JsonElement op, JsonElement content
Proto.Inbox.Push(transaction.Id);
Cache.Statistics.Current.TotalBurned += burned;
- if (target!.Id == NullAddress.Id)
+ if (target.Id == NullAddress.Id)
Cache.Statistics.Current.TotalBanished += transaction.Amount;
}
#endregion
@@ -124,7 +121,7 @@ public virtual async Task ApplyInternal(Block block, ManagerOperation parent, Js
#region init
var parentSender = await Cache.Accounts.GetAsync(parent.SenderId);
var sender = await Cache.Accounts.GetExistingAsync(content.RequiredString("source"));
- var target = await Cache.Accounts.GetAsync(content.OptionalString("destination"));
+ var target = await Cache.Accounts.GetOrCreateAsync(content.RequiredString("destination"));
var result = content.Required("result");
@@ -140,7 +137,7 @@ public virtual async Task ApplyInternal(Block block, ManagerOperation parent, Js
Nonce = content.RequiredInt32("nonce"),
SenderId = sender.Id,
SenderCodeHash = (sender as Contract)?.CodeHash,
- TargetId = target?.Id,
+ TargetId = target.Id,
TargetCodeHash = (target as Contract)?.CodeHash,
Status = result.RequiredString("status") switch
{
@@ -177,12 +174,9 @@ public virtual async Task ApplyInternal(Block block, ManagerOperation parent, Js
Db.TryAttach(sender);
sender.TransactionsCount++;
- if (target != null)
- {
- Db.TryAttach(target);
- if (target != sender)
- target.TransactionsCount++;
- }
+ Db.TryAttach(target);
+ if (target != sender)
+ target.TransactionsCount++;
if (parentSender != sender && parentSender != target)
parentSender.TransactionsCount++;
@@ -202,17 +196,17 @@ public virtual async Task ApplyInternal(Block block, ManagerOperation parent, Js
Spend(sender, transaction.Amount);
- Receive(target!, transaction.Amount);
+ Receive(target, transaction.Amount);
if (target == parentSender)
Proto.Manager.Credit(transaction.Amount);
- await ResetGracePeriod(transaction, target!);
+ await ResetGracePeriod(transaction, target);
if (result.TryGetProperty("storage", out var storage))
{
BigMapDiffs = ParseBigMapDiffs(transaction, result);
- await ProcessStorage(transaction, target!, storage);
+ await ProcessStorage(transaction, target, storage);
}
await ApplyAddressRegistryDiffs(transaction, result);
@@ -223,7 +217,7 @@ public virtual async Task ApplyInternal(Block block, ManagerOperation parent, Js
Proto.Inbox.Push(transaction.Id);
Cache.Statistics.Current.TotalBurned += burned;
- if (target!.Id == NullAddress.Id)
+ if (target.Id == NullAddress.Id)
Cache.Statistics.Current.TotalBanished += transaction.Amount;
}
#endregion
@@ -247,7 +241,7 @@ public virtual async Task Revert(Block block, TransactionOperation transaction)
#region revert result
if (transaction.Status == OperationStatus.Applied)
{
- RevertReceive(target!, transaction.Amount);
+ RevertReceive(target, transaction.Amount);
if (target is Data.Models.Delegate delegat)
{
@@ -273,7 +267,7 @@ public virtual async Task Revert(Block block, TransactionOperation transaction)
RevertPayFee(sender, transaction.BakerFee);
sender.TransactionsCount--;
- if (target != null && target != sender) target.TransactionsCount--;
+ if (target != sender) target.TransactionsCount--;
sender.Counter = transaction.Counter - 1;
if (sender is User user) user.Revealed = true;
@@ -301,7 +295,7 @@ public virtual async Task RevertInternal(Block block, TransactionOperation trans
#region revert result
if (transaction.Status == OperationStatus.Applied)
{
- RevertReceive(target!, transaction.Amount);
+ RevertReceive(target, transaction.Amount);
if (target is Data.Models.Delegate delegat)
{
@@ -327,7 +321,7 @@ public virtual async Task RevertInternal(Block block, TransactionOperation trans
#region revert operation
sender.TransactionsCount--;
- if (target != null && target != sender) target.TransactionsCount--;
+ if (target != sender) target.TransactionsCount--;
if (parentSender != sender && parentSender != target) parentSender.TransactionsCount--;
Cache.AppState.Get().TransactionOpsCount--;
@@ -355,7 +349,7 @@ protected virtual async Task ResetGracePeriod(TransactionOperation transaction,
}
}
- protected virtual async Task ProcessParameters(TransactionOperation transaction, Account? target, JsonElement parameters)
+ protected virtual async Task ProcessParameters(TransactionOperation transaction, Account target, JsonElement parameters)
{
var (rawEp, rawParam) = ("default", Micheline.FromJson(parameters)!);
@@ -458,7 +452,7 @@ protected virtual IMicheline NormalizeStorage(TransactionOperation transaction,
var view = schema.Storage.Schema.ToTreeView(storage);
var bigmap = view.Nodes().FirstOrDefault(x => x.Schema.Prim == PrimType.big_map);
if (bigmap != null)
- storage = storage.Replace(bigmap.Value, new MichelineInt(transaction.TargetId!.Value));
+ storage = storage.Replace(bigmap.Value, new MichelineInt(transaction.TargetId));
return storage;
}
@@ -473,7 +467,7 @@ protected virtual IMicheline NormalizeStorage(TransactionOperation transaction,
[
new UpdateDiff
{
- Ptr = transaction.TargetId!.Value,
+ Ptr = transaction.TargetId,
KeyHash = "exprteAx9hWkXvYSQ4nN9SqjJGVR1sTneHQS1QEcSdzckYdXZVvsqY",
Key = new MichelineString("KT1R3uoZ6W1ZxEwzqtv75Ro7DhVY6UAcxuK2"),
Value = new MichelinePrim
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto13/Commits/Operations/TransferTicketCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto13/Commits/Operations/TransferTicketCommit.cs
index ac9376a5e..4f1c420ae 100644
--- a/Tzkt.Sync/Protocols/Handlers/Proto13/Commits/Operations/TransferTicketCommit.cs
+++ b/Tzkt.Sync/Protocols/Handlers/Proto13/Commits/Operations/TransferTicketCommit.cs
@@ -16,8 +16,8 @@ public virtual async Task Apply(Block block, JsonElement op, JsonElement content
{
#region init
var sender = await Cache.Accounts.GetExistingAsync(content.RequiredString("source"));
- var target = await Cache.Accounts.GetAsync(content.RequiredString("destination"));
- var ticketer = await Cache.Accounts.GetAsync(content.RequiredString("ticket_ticketer"));
+ var target = await Cache.Accounts.GetOrCreateAsync(content.RequiredString("destination"));
+ var ticketer = await Cache.Accounts.GetOrCreateAsync(content.RequiredString("ticket_ticketer"));
var result = content.Required("metadata").Required("operation_result");
@@ -49,9 +49,9 @@ public virtual async Task Apply(Block block, JsonElement op, JsonElement content
? result.OptionalInt32("paid_storage_size_diff") * Context.Protocol.ByteCost
: null,
Amount = BigInteger.Parse(content.RequiredString("ticket_amount")),
- TicketerId = ticketer?.Id,
+ TicketerId = ticketer.Id,
Entrypoint = content.RequiredString("entrypoint"),
- TargetId = target?.Id
+ TargetId = target.Id
};
try
@@ -78,8 +78,8 @@ public virtual async Task Apply(Block block, JsonElement op, JsonElement content
PayFee(sender, operation.BakerFee);
sender.TransferTicketCount++;
- if (target != null && target != sender) target.TransferTicketCount++;
- if (ticketer != null && ticketer != sender && ticketer != target) ticketer.TransferTicketCount++;
+ if (target != sender) target.TransferTicketCount++;
+ if (ticketer != sender && ticketer != target) ticketer.TransferTicketCount++;
block.Operations |= Operations.TransferTicket;
@@ -131,8 +131,8 @@ public virtual async Task Revert(Block block, TransferTicketOperation operation)
RevertPayFee(sender, operation.BakerFee);
sender.TransferTicketCount--;
- if (target != null && target != sender) target.TransferTicketCount--;
- if (ticketer != null && ticketer != sender && ticketer != target) ticketer.TransferTicketCount--;
+ if (target != sender) target.TransferTicketCount--;
+ if (ticketer != sender && ticketer != target) ticketer.TransferTicketCount--;
sender.Counter = operation.Counter - 1;
(sender as User)!.Revealed = true;
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto13/Commits/Operations/TxRollupOriginationCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto13/Commits/Operations/TxRollupOriginationCommit.cs
index 600a95cd5..e088c7fbd 100644
--- a/Tzkt.Sync/Protocols/Handlers/Proto13/Commits/Operations/TxRollupOriginationCommit.cs
+++ b/Tzkt.Sync/Protocols/Handlers/Proto13/Commits/Operations/TxRollupOriginationCommit.cs
@@ -136,7 +136,12 @@ public virtual async Task Revert(Block block, TxRollupOriginationOperation origi
sender.RollupsCount--;
- if (rollup!.TokenTransfersCount == 0 && rollup.TicketTransfersCount == 0 && rollup.Index is null)
+ if (rollup!.TransactionsCount == 0 &&
+ rollup.TransferTicketCount == 0 &&
+ rollup.IncreasePaidStorageCount == 0 &&
+ rollup.TokenTransfersCount == 0 &&
+ rollup.TicketTransfersCount == 0 &&
+ rollup.Index is null)
{
Db.Rollups.Remove(rollup);
Cache.Accounts.Remove(rollup);
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto14/Commits/Operations/IncreasePaidStorageCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto14/Commits/Operations/IncreasePaidStorageCommit.cs
index 648f0a434..0f627dedf 100644
--- a/Tzkt.Sync/Protocols/Handlers/Proto14/Commits/Operations/IncreasePaidStorageCommit.cs
+++ b/Tzkt.Sync/Protocols/Handlers/Proto14/Commits/Operations/IncreasePaidStorageCommit.cs
@@ -11,7 +11,7 @@ public virtual async Task Apply(Block block, JsonElement op, JsonElement content
{
#region init
var sender = await Cache.Accounts.GetExistingAsync(content.RequiredString("source"));
- var contract = await Cache.Accounts.GetAsync(content.RequiredString("destination")) as Contract;
+ var contract = await Cache.Accounts.GetOrCreateAsync(content.RequiredString("destination"));
var result = content.Required("metadata").Required("operation_result");
var balanceUpdate = result.OptionalArray("balance_updates")?.EnumerateArray()
@@ -31,7 +31,7 @@ public virtual async Task Apply(Block block, JsonElement op, JsonElement content
GasLimit = content.RequiredInt32("gas_limit"),
StorageLimit = content.RequiredInt32("storage_limit"),
SenderId = sender.Id,
- ContractId = contract?.Id,
+ ContractId = contract.Id,
Amount = BigInteger.Parse(content.RequiredString("amount")),
Status = result.RequiredString("status") switch
{
@@ -59,7 +59,7 @@ public virtual async Task Apply(Block block, JsonElement op, JsonElement content
PayFee(sender, operation.BakerFee);
sender.IncreasePaidStorageCount++;
- if (contract != null) contract.IncreasePaidStorageCount++;
+ if (contract != sender) contract.IncreasePaidStorageCount++;
block.Operations |= Operations.IncreasePaidStorage;
@@ -106,7 +106,7 @@ public virtual async Task Revert(Block block, IncreasePaidStorageOperation opera
RevertPayFee(sender, operation.BakerFee);
sender.IncreasePaidStorageCount--;
- if (contract != null) contract.IncreasePaidStorageCount--;
+ if (contract != sender) contract.IncreasePaidStorageCount--;
sender.Counter = operation.Counter - 1;
(sender as User)!.Revealed = true;
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/SmartRollupOriginateCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/SmartRollupOriginateCommit.cs
index c5847e592..a509d9941 100644
--- a/Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/SmartRollupOriginateCommit.cs
+++ b/Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/SmartRollupOriginateCommit.cs
@@ -185,7 +185,12 @@ public virtual async Task Revert(Block block, SmartRollupOriginateOperation oper
sender.SmartRollupsCount--;
- if (rollup!.TokenTransfersCount == 0 && rollup.TicketTransfersCount == 0 && rollup.Index is null)
+ if (rollup!.TransactionsCount == 0 &&
+ rollup.TransferTicketCount == 0 &&
+ rollup.IncreasePaidStorageCount == 0 &&
+ rollup.TokenTransfersCount == 0 &&
+ rollup.TicketTransfersCount == 0 &&
+ rollup.Index is null)
{
Db.SmartRollups.Remove(rollup);
Cache.Accounts.Remove(rollup);
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto2/Commits/Operations/TransactionsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto2/Commits/Operations/TransactionsCommit.cs
index 6860e31f1..b348e6e65 100644
--- a/Tzkt.Sync/Protocols/Handlers/Proto2/Commits/Operations/TransactionsCommit.cs
+++ b/Tzkt.Sync/Protocols/Handlers/Proto2/Commits/Operations/TransactionsCommit.cs
@@ -14,7 +14,7 @@ public TransactionsCommit(ProtocolHandler protocol) : base(protocol) { }
return diffs.RequiredArray().EnumerateArray().Select(x => new UpdateDiff
{
- Ptr = transaction.TargetId!.Value,
+ Ptr = transaction.TargetId,
KeyHash = x.RequiredString("key_hash"),
Key = x.RequiredMicheline("key"),
Value = x.OptionalMicheline("value")
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto5/Commits/Operations/TransactionsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto5/Commits/Operations/TransactionsCommit.cs
index 5729120b6..1adfcd387 100644
--- a/Tzkt.Sync/Protocols/Handlers/Proto5/Commits/Operations/TransactionsCommit.cs
+++ b/Tzkt.Sync/Protocols/Handlers/Proto5/Commits/Operations/TransactionsCommit.cs
@@ -10,7 +10,7 @@ class TransactionsCommit : Proto4.TransactionsCommit
{
public TransactionsCommit(ProtocolHandler protocol) : base(protocol) { }
- protected override async Task ProcessParameters(TransactionOperation transaction, Account? target, JsonElement param)
+ protected override async Task ProcessParameters(TransactionOperation transaction, Account target, JsonElement param)
{
string? rawEp = null;
IMicheline? rawParam;
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto5/Commits/TokensCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto5/Commits/TokensCommit.cs
index 84aae89bd..dac14571a 100644
--- a/Tzkt.Sync/Protocols/Handlers/Proto5/Commits/TokensCommit.cs
+++ b/Tzkt.Sync/Protocols/Handlers/Proto5/Commits/TokensCommit.cs
@@ -32,7 +32,7 @@ public virtual async Task Apply(Block block,
{
var contract = (await Cache.Accounts.GetAsync(
op is TransactionOperation tx
- ? tx.TargetId!.Value
+ ? tx.TargetId
: (op as OriginationOperation)!.ContractId!.Value
) as Contract)!;
@@ -57,7 +57,7 @@ op is TransactionOperation tx
{
var contract = (await Cache.Accounts.GetAsync(
op is TransactionOperation tx
- ? tx.TargetId!.Value
+ ? tx.TargetId
: (op as OriginationOperation)!.ContractId!.Value
) as Contract)!;
@@ -134,8 +134,7 @@ op is TransactionOperation tx
// transfers with no balance updates, e.g. to itself or with 0 amount
var pendingTransfers = await Db.TransactionOps
//.AsNoTracking()
- .Where(x => x.TargetId != null &&
- contracts.Contains(x.TargetId.Value) &&
+ .Where(x => contracts.Contains(x.TargetId) &&
x.Status == OperationStatus.Applied &&
x.Entrypoint == "transfer" &&
x.TokenTransfers == null &&
@@ -148,7 +147,7 @@ op is TransactionOperation tx
.Concat(pendingUpdates.Select(x => x.Level))
.ToHashSet();
- var targets = pendingTransfers.Select(x => x.TargetId!.Value)
+ var targets = pendingTransfers.Select(x => x.TargetId)
.Concat(pendingBigMaps.Select(x => x.Value.ContractId))
.ToHashSet();
@@ -181,7 +180,7 @@ op is TransactionOperation tx
ctx.Transfers.Add((from, to, amount));
}
- var contract = (Cache.Accounts.GetCached(tx.TargetId!.Value) as Contract)!;
+ var contract = (Cache.Accounts.GetCached(tx.TargetId) as Contract)!;
ops.Add(tx, (false, contract, tokens));
}
@@ -235,7 +234,7 @@ op is TransactionOperation tx
{
if (tx.Status == OperationStatus.Applied && tx.Entrypoint == "transfer")
{
- var contract = (await Cache.Accounts.GetAsync(tx.TargetId!.Value) as Contract)!;
+ var contract = (await Cache.Accounts.GetAsync(tx.TargetId) as Contract)!;
if (contract.Tags.HasFlag(ContractTags.Ledger))
{
var tokens = new Dictionary
Date: Thu, 2 Apr 2026 17:22:42 +0300
Subject: [PATCH 2/6] Tezos X hacks
---
.../Handlers/Proto1/Activation/ProtoActivator.Accounts.cs | 2 ++
.../Handlers/Proto1/Commits/Operations/TransactionsCommit.cs | 2 +-
Tzkt.Sync/Protocols/Handlers/Proto24/Proto24Handler.cs | 3 ++-
3 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.Accounts.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.Accounts.cs
index e2e2fc9e5..f5b20d4f4 100644
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.Accounts.cs
+++ b/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.Accounts.cs
@@ -11,6 +11,8 @@ partial class ProtoActivator : ProtocolCommit
{
protected virtual async Task> BootstrapAccounts(Protocol protocol, JToken parameters)
{
+ protocol.MaxDelegatedOverFrozenRatio = 0;
+
var bootstrapAccounts = parameters["bootstrap_accounts"]?
.Select(x => (x[0]!.Value()!, x[1]!.Value(), x.Count() > 2 ? x[2]!.Value()! : null))
.ToList() ?? [];
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/TransactionsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/TransactionsCommit.cs
index 275a72511..1b628db66 100644
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/TransactionsCommit.cs
+++ b/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/TransactionsCommit.cs
@@ -120,7 +120,7 @@ public virtual async Task ApplyInternal(Block block, ManagerOperation parent, Js
{
#region init
var parentSender = await Cache.Accounts.GetAsync(parent.SenderId);
- var sender = await Cache.Accounts.GetExistingAsync(content.RequiredString("source"));
+ var sender = await Cache.Accounts.GetOrCreateAsync(content.RequiredString("source"));
var target = await Cache.Accounts.GetOrCreateAsync(content.RequiredString("destination"));
var result = content.Required("result");
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto24/Proto24Handler.cs b/Tzkt.Sync/Protocols/Handlers/Proto24/Proto24Handler.cs
index d07ef536e..995824c37 100644
--- a/Tzkt.Sync/Protocols/Handlers/Proto24/Proto24Handler.cs
+++ b/Tzkt.Sync/Protocols/Handlers/Proto24/Proto24Handler.cs
@@ -230,7 +230,8 @@ public override async Task Commit(JsonElement block)
ticketsCommit.Append(parent.Transaction, internalTx.Transaction, internalTx.TicketUpdates);
break;
case "event":
- await new ContractEventCommit(this).Apply(blockCommit.Block, internalContent);
+ if (internalContent.RequiredString("source") != NullAddress.Address)
+ await new ContractEventCommit(this).Apply(blockCommit.Block, internalContent);
break;
default:
throw new NotImplementedException($"internal '{internalContent.RequiredString("kind")}' is not implemented");
From 17470708ae95ea4d855b5b2ce96da81c8dfad720 Mon Sep 17 00:00:00 2001
From: Konst
Date: Mon, 20 Apr 2026 12:37:26 +0300
Subject: [PATCH 3/6] Trim tzkt for L2
---
Tzkt.Api/Controllers/AccountsController.cs | 2 +-
Tzkt.Api/Models/Accounts/Ghost.cs | 15 +
Tzkt.Api/Program.cs | 2 +-
Tzkt.Api/Repositories/AccountRepository.cs | 31 +
.../Repositories/BalanceHistoryRepository.cs | 52 +-
.../OperationRepository.Baking.cs | 8 +-
Tzkt.Api/Repositories/ReportRepository.cs | 78 +-
Tzkt.Api/Services/Home/HomeService.cs | 179 +-
Tzkt.Sync.Tests/Indexer/Indexer.cs | 2 +-
Tzkt.Sync/Extensions/JsonElementExtension.cs | 9 +
Tzkt.Sync/Program.cs | 32 +
Tzkt.Sync/Protocols/Abstract/IActivator.cs | 12 +
Tzkt.Sync/Protocols/Abstract/IDiagnostics.cs | 11 -
Tzkt.Sync/Protocols/Abstract/IHelpers.cs | 8 -
Tzkt.Sync/Protocols/Abstract/IMigrator.cs | 11 +
Tzkt.Sync/Protocols/Abstract/IRpc.cs | 24 +-
.../Genesis/Diagnostics/Diagnostics.cs | 11 -
.../Handlers/Genesis/GenesisHandler.cs | 120 -
.../Protocols/Handlers/Genesis/Helpers.cs | 11 -
.../Protocols/Handlers/Genesis/Rpc/Rpc.cs | 74 -
.../Handlers/Genesis/Validation/Validator.cs | 21 -
.../Initiator/Diagnostics/Diagnostics.cs | 4 -
.../Protocols/Handlers/Initiator/Helpers.cs | 11 -
.../Handlers/Initiator/InitiatorHandler.cs | 130 -
.../Protocols/Handlers/Initiator/Rpc/Rpc.cs | 11 -
.../Initiator/Validation/Validator.cs | 30 -
.../Activation/ProtoActivator.Accounts.cs | 362 -
.../Activation/ProtoActivator.BakerCycles.cs | 103 -
.../Activation/ProtoActivator.BakingRights.cs | 90 -
.../Activation/ProtoActivator.Commitments.cs | 51 -
.../Activation/ProtoActivator.Cycles.cs | 59 -
.../ProtoActivator.DelegationSnapshots.cs | 34 -
.../ProtoActivator.DelegatorCycles.cs | 33 -
.../Activation/ProtoActivator.Protocol.cs | 166 -
.../ProtoActivator.SnapshotBalances.cs | 37 -
.../Activation/ProtoActivator.StakerCycles.cs | 20 -
.../Activation/ProtoActivator.Voting.cs | 55 -
.../Proto1/Activation/ProtoActivator.cs | 65 -
.../Proto1/Commits/BakerCycleCommit.cs | 592 --
.../Proto1/Commits/BakingRightsCommit.cs | 235 -
.../Handlers/Proto1/Commits/BigMapCommit.cs | 538 --
.../Handlers/Proto1/Commits/BlockCommit.cs | 142 -
.../Handlers/Proto1/Commits/CycleCommit.cs | 83 -
.../Proto1/Commits/DelegatorCycleCommit.cs | 65 -
.../Handlers/Proto1/Commits/FreezerCommit.cs | 77 -
.../Commits/Operations/ActivationsCommit.cs | 75 -
.../Commits/Operations/AttestationsCommit.cs | 94 -
.../Commits/Operations/DelegationsCommit.cs | 441 -
.../Operations/NonceRevelationsCommit.cs | 91 -
.../Commits/Operations/OriginationsCommit.cs | 746 --
.../Commits/Operations/RevealsCommit.cs | 112 -
.../Commits/Operations/TransactionsCommit.cs | 590 --
.../Proto1/Commits/SnapshotBalanceCommit.cs | 187 -
.../Handlers/Proto1/Commits/StateCommit.cs | 54 -
.../Proto1/Commits/StatisticsCommit.cs | 62 -
.../Handlers/Proto1/Commits/VotingCommit.cs | 353 -
.../Proto1/Diagnostics/Diagnostics.cs | 218 -
.../Protocols/Handlers/Proto1/Helpers.cs | 34 -
.../Handlers/Proto1/Proto1Handler.cs | 224 -
.../Protocols/Handlers/Proto1/Rpc/Rpc.cs | 74 -
.../Handlers/Proto1/Validation/Validator.cs | 27 -
.../Proto10/Activation/ProtoActivator.cs | 835 --
.../Proto10/Commits/BakerCycleCommit.cs | 7 -
.../Proto10/Commits/BakingRightsCommit.cs | 64 -
.../Handlers/Proto10/Commits/BigMapCommit.cs | 23 -
.../Handlers/Proto10/Commits/BlockCommit.cs | 15 -
.../Handlers/Proto10/Commits/CycleCommit.cs | 7 -
.../Proto10/Commits/DeactivationCommit.cs | 7 -
.../Proto10/Commits/DelegatorCycleCommit.cs | 7 -
.../Handlers/Proto10/Commits/FreezerCommit.cs | 7 -
.../Commits/Operations/ActivationsCommit.cs | 7 -
.../Commits/Operations/AttestationsCommit.cs | 7 -
.../Commits/Operations/BallotsCommit.cs | 7 -
.../Commits/Operations/DelegationsCommit.cs | 7 -
.../Commits/Operations/DoubleBakingCommit.cs | 7 -
.../Operations/DoubleConsensusCommit.cs | 7 -
.../Operations/NonceRevelationsCommit.cs | 7 -
.../Commits/Operations/OriginationsCommit.cs | 7 -
.../Commits/Operations/ProposalsCommit.cs | 7 -
.../Commits/Operations/RevealsCommit.cs | 7 -
.../Commits/Operations/TransactionsCommit.cs | 7 -
.../Commits/RevelationPenaltyCommit.cs | 7 -
.../Proto10/Commits/SnapshotBalanceCommit.cs | 7 -
.../Proto10/Commits/SoftwareCommit.cs | 7 -
.../Handlers/Proto10/Commits/StateCommit.cs | 7 -
.../Proto10/Commits/StatisticsCommit.cs | 7 -
.../Handlers/Proto10/Commits/SubsidyCommit.cs | 93 -
.../Handlers/Proto10/Commits/TokensCommit.cs | 7 -
.../Handlers/Proto10/Commits/VotingCommit.cs | 7 -
.../Proto10/Diagnostics/Diagnostics.cs | 7 -
.../Protocols/Handlers/Proto10/Helpers.cs | 4 -
.../Handlers/Proto10/Proto10Handler.cs | 292 -
.../Protocols/Handlers/Proto10/Rpc/Rpc.cs | 9 -
.../Handlers/Proto10/Validation/Validator.cs | 7 -
.../Proto11/Activation/ProtoActivator.cs | 13 -
.../Proto11/Commits/BakerCycleCommit.cs | 7 -
.../Proto11/Commits/BakingRightsCommit.cs | 7 -
.../Handlers/Proto11/Commits/BigMapCommit.cs | 7 -
.../Handlers/Proto11/Commits/BlockCommit.cs | 7 -
.../Handlers/Proto11/Commits/CycleCommit.cs | 7 -
.../Proto11/Commits/DeactivationCommit.cs | 7 -
.../Proto11/Commits/DelegatorCycleCommit.cs | 7 -
.../Handlers/Proto11/Commits/FreezerCommit.cs | 7 -
.../Commits/Operations/ActivationsCommit.cs | 7 -
.../Commits/Operations/AttestationsCommit.cs | 7 -
.../Commits/Operations/BallotsCommit.cs | 7 -
.../Commits/Operations/DelegationsCommit.cs | 7 -
.../Commits/Operations/DoubleBakingCommit.cs | 7 -
.../Operations/DoubleConsensusCommit.cs | 7 -
.../Operations/NonceRevelationsCommit.cs | 7 -
.../Commits/Operations/OriginationsCommit.cs | 7 -
.../Commits/Operations/ProposalsCommit.cs | 7 -
.../Operations/RegisterConstantsCommit.cs | 116 -
.../Commits/Operations/RevealsCommit.cs | 7 -
.../Commits/Operations/TransactionsCommit.cs | 7 -
.../Commits/RevelationPenaltyCommit.cs | 7 -
.../Proto11/Commits/SnapshotBalanceCommit.cs | 7 -
.../Proto11/Commits/SoftwareCommit.cs | 7 -
.../Handlers/Proto11/Commits/StateCommit.cs | 7 -
.../Proto11/Commits/StatisticsCommit.cs | 7 -
.../Handlers/Proto11/Commits/SubsidyCommit.cs | 7 -
.../Handlers/Proto11/Commits/TokensCommit.cs | 7 -
.../Handlers/Proto11/Commits/VotingCommit.cs | 7 -
.../Proto11/Diagnostics/Diagnostics.cs | 7 -
.../Protocols/Handlers/Proto11/Helpers.cs | 4 -
.../Handlers/Proto11/Proto11Handler.cs | 298 -
.../Protocols/Handlers/Proto11/Rpc/Rpc.cs | 9 -
.../Handlers/Proto11/Validation/Validator.cs | 7 -
.../Activation/ProtoActivator.Accounts.cs | 19 -
.../Activation/ProtoActivator.BakerCycles.cs | 86 -
.../Activation/ProtoActivator.BakingRights.cs | 27 -
.../Proto12/Activation/ProtoActivator.cs | 505 --
.../Commits/AttestationRewardCommit.cs | 99 -
.../Proto12/Commits/BakerCycleCommit.cs | 366 -
.../Proto12/Commits/BakingRightsCommit.cs | 197 -
.../Handlers/Proto12/Commits/BigMapCommit.cs | 7 -
.../Handlers/Proto12/Commits/BlockCommit.cs | 165 -
.../Handlers/Proto12/Commits/CycleCommit.cs | 115 -
.../Proto12/Commits/DeactivationCommit.cs | 7 -
.../Proto12/Commits/DelegatorCycleCommit.cs | 7 -
.../Handlers/Proto12/Commits/FreezerCommit.cs | 29 -
.../Commits/Operations/ActivationsCommit.cs | 7 -
.../Commits/Operations/AttestationsCommit.cs | 76 -
.../Commits/Operations/BallotsCommit.cs | 7 -
.../Commits/Operations/DelegationsCommit.cs | 7 -
.../Commits/Operations/DoubleBakingCommit.cs | 98 -
.../Operations/DoubleConsensusCommit.cs | 106 -
.../Operations/NonceRevelationsCommit.cs | 90 -
.../Commits/Operations/OriginationsCommit.cs | 7 -
.../Operations/PreattestationsCommit.cs | 55 -
.../Commits/Operations/ProposalsCommit.cs | 7 -
.../Operations/RegisterConstantsCommit.cs | 7 -
.../Commits/Operations/RevealsCommit.cs | 7 -
.../Operations/SetDepositsLimitCommit.cs | 123 -
.../Commits/Operations/TransactionsCommit.cs | 7 -
.../Proto12/Commits/SnapshotBalanceCommit.cs | 31 -
.../Proto12/Commits/SoftwareCommit.cs | 7 -
.../Handlers/Proto12/Commits/StateCommit.cs | 7 -
.../Proto12/Commits/StatisticsCommit.cs | 7 -
.../Handlers/Proto12/Commits/SubsidyCommit.cs | 7 -
.../Handlers/Proto12/Commits/TokensCommit.cs | 7 -
.../Handlers/Proto12/Commits/VotingCommit.cs | 7 -
.../Proto12/Diagnostics/Diagnostics.cs | 127 -
.../Protocols/Handlers/Proto12/Helpers.cs | 21 -
.../Handlers/Proto12/Proto12Handler.cs | 313 -
.../Protocols/Handlers/Proto12/Rpc/Rpc.cs | 16 -
.../Handlers/Proto12/Validation/Validator.cs | 7 -
.../Proto13/Activation/ProtoActivator.cs | 193 -
.../Proto13/Activation/emptied.contracts | 46 -
.../Proto13/Activation/patched.contracts | 43 -
.../Commits/AttestationRewardCommit.cs | 7 -
.../Proto13/Commits/BakerCycleCommit.cs | 7 -
.../Proto13/Commits/BakingRightsCommit.cs | 21 -
.../Handlers/Proto13/Commits/BigMapCommit.cs | 7 -
.../Handlers/Proto13/Commits/BlockCommit.cs | 18 -
.../Handlers/Proto13/Commits/CycleCommit.cs | 108 -
.../Proto13/Commits/DeactivationCommit.cs | 7 -
.../Proto13/Commits/DelegatorCycleCommit.cs | 7 -
.../Handlers/Proto13/Commits/FreezerCommit.cs | 7 -
.../Commits/Operations/ActivationsCommit.cs | 7 -
.../Commits/Operations/AttestationsCommit.cs | 7 -
.../Commits/Operations/BallotsCommit.cs | 7 -
.../Commits/Operations/DelegationsCommit.cs | 7 -
.../Commits/Operations/DoubleBakingCommit.cs | 7 -
.../Operations/DoubleConsensusCommit.cs | 7 -
.../Operations/NonceRevelationsCommit.cs | 7 -
.../Commits/Operations/OriginationsCommit.cs | 16 -
.../Operations/PreattestationsCommit.cs | 7 -
.../Commits/Operations/ProposalsCommit.cs | 7 -
.../Operations/RegisterConstantsCommit.cs | 7 -
.../Commits/Operations/RevealsCommit.cs | 7 -
.../Operations/SetDepositsLimitCommit.cs | 7 -
.../Commits/Operations/TransactionsCommit.cs | 15 -
.../Operations/TransferTicketCommit.cs | 212 -
.../Operations/TxRollupCommitCommit.cs | 115 -
.../TxRollupDispatchTicketsCommit.cs | 117 -
.../TxRollupFinalizeCommitmentCommit.cs | 106 -
.../Operations/TxRollupOriginationCommit.cs | 190 -
.../Operations/TxRollupRejectionCommit.cs | 330 -
.../TxRollupRemoveCommitmentCommit.cs | 106 -
.../Operations/TxRollupReturnBondCommit.cs | 115 -
.../Operations/TxRollupSubmitBatchCommit.cs | 117 -
.../Proto13/Commits/SnapshotBalanceCommit.cs | 7 -
.../Proto13/Commits/SoftwareCommit.cs | 7 -
.../Handlers/Proto13/Commits/StateCommit.cs | 7 -
.../Proto13/Commits/StatisticsCommit.cs | 7 -
.../Handlers/Proto13/Commits/SubsidyCommit.cs | 7 -
.../Handlers/Proto13/Commits/TokensCommit.cs | 7 -
.../Handlers/Proto13/Commits/VotingCommit.cs | 4 -
.../Proto13/Diagnostics/Diagnostics.cs | 7 -
.../Protocols/Handlers/Proto13/Helpers.cs | 18 -
.../Handlers/Proto13/Proto13Handler.cs | 385 -
.../Protocols/Handlers/Proto13/Rpc/Rpc.cs | 9 -
.../Handlers/Proto13/Validation/Validator.cs | 7 -
.../Proto14/Activation/ProtoActivator.cs | 88 -
.../Commits/AttestationRewardCommit.cs | 7 -
.../Proto14/Commits/BakerCycleCommit.cs | 7 -
.../Proto14/Commits/BakingRightsCommit.cs | 18 -
.../Handlers/Proto14/Commits/BigMapCommit.cs | 7 -
.../Handlers/Proto14/Commits/BlockCommit.cs | 7 -
.../Proto14/Commits/ContractEventCommit.cs | 91 -
.../Handlers/Proto14/Commits/CycleCommit.cs | 17 -
.../Proto14/Commits/DeactivationCommit.cs | 7 -
.../Proto14/Commits/DelegatorCycleCommit.cs | 7 -
.../Handlers/Proto14/Commits/FreezerCommit.cs | 7 -
.../Commits/Operations/ActivationsCommit.cs | 7 -
.../Commits/Operations/AttestationsCommit.cs | 7 -
.../Commits/Operations/BallotsCommit.cs | 7 -
.../Commits/Operations/DelegationsCommit.cs | 14 -
.../Commits/Operations/DoubleBakingCommit.cs | 7 -
.../Operations/DoubleConsensusCommit.cs | 7 -
.../Operations/IncreasePaidStorageCommit.cs | 122 -
.../Operations/NonceRevelationsCommit.cs | 7 -
.../Commits/Operations/OriginationsCommit.cs | 14 -
.../Operations/PreattestationsCommit.cs | 7 -
.../Commits/Operations/ProposalsCommit.cs | 176 -
.../Operations/RegisterConstantsCommit.cs | 14 -
.../Commits/Operations/RevealsCommit.cs | 28 -
.../Operations/SetDepositsLimitCommit.cs | 7 -
.../Commits/Operations/TransactionsCommit.cs | 14 -
.../Operations/TransferTicketCommit.cs | 7 -
.../Operations/TxRollupCommitCommit.cs | 7 -
.../TxRollupDispatchTicketsCommit.cs | 7 -
.../TxRollupFinalizeCommitmentCommit.cs | 7 -
.../Operations/TxRollupOriginationCommit.cs | 7 -
.../Operations/TxRollupRejectionCommit.cs | 7 -
.../TxRollupRemoveCommitmentCommit.cs | 7 -
.../Operations/TxRollupReturnBondCommit.cs | 7 -
.../Operations/TxRollupSubmitBatchCommit.cs | 7 -
.../Commits/Operations/VdfRevelationCommit.cs | 74 -
.../Proto14/Commits/SnapshotBalanceCommit.cs | 7 -
.../Proto14/Commits/SoftwareCommit.cs | 7 -
.../Handlers/Proto14/Commits/StateCommit.cs | 7 -
.../Proto14/Commits/StatisticsCommit.cs | 7 -
.../Handlers/Proto14/Commits/SubsidyCommit.cs | 7 -
.../Handlers/Proto14/Commits/TokensCommit.cs | 7 -
.../Handlers/Proto14/Commits/VotingCommit.cs | 4 -
.../Proto14/Diagnostics/Diagnostics.cs | 13 -
.../Protocols/Handlers/Proto14/Helpers.cs | 4 -
.../Handlers/Proto14/Proto14Handler.cs | 404 -
.../Protocols/Handlers/Proto14/Rpc/Rpc.cs | 9 -
.../Handlers/Proto14/Validation/Validator.cs | 7 -
.../Proto15/Activation/ProtoActivator.cs | 512 --
.../Proto15/Activation/patched.contracts | 1 -
.../Commits/AttestationRewardCommit.cs | 7 -
.../Proto15/Commits/BakerCycleCommit.cs | 7 -
.../Proto15/Commits/BakingRightsCommit.cs | 25 -
.../Handlers/Proto15/Commits/BigMapCommit.cs | 7 -
.../Handlers/Proto15/Commits/BlockCommit.cs | 7 -
.../Proto15/Commits/ContractEventCommit.cs | 7 -
.../Handlers/Proto15/Commits/CycleCommit.cs | 7 -
.../Proto15/Commits/DeactivationCommit.cs | 7 -
.../Proto15/Commits/DelegatorCycleCommit.cs | 7 -
.../Handlers/Proto15/Commits/FreezerCommit.cs | 7 -
.../Commits/Operations/ActivationsCommit.cs | 7 -
.../Commits/Operations/AttestationsCommit.cs | 7 -
.../Commits/Operations/BallotsCommit.cs | 7 -
.../Commits/Operations/DelegationsCommit.cs | 7 -
.../Commits/Operations/DoubleBakingCommit.cs | 7 -
.../Operations/DoubleConsensusCommit.cs | 7 -
.../Commits/Operations/DrainDelegateCommit.cs | 115 -
.../Operations/IncreasePaidStorageCommit.cs | 7 -
.../Operations/NonceRevelationsCommit.cs | 7 -
.../Commits/Operations/OriginationsCommit.cs | 7 -
.../Operations/PreattestationsCommit.cs | 7 -
.../Commits/Operations/ProposalsCommit.cs | 7 -
.../Operations/RegisterConstantsCommit.cs | 7 -
.../Commits/Operations/RevealsCommit.cs | 7 -
.../Operations/SetDepositsLimitCommit.cs | 7 -
.../Commits/Operations/TransactionsCommit.cs | 7 -
.../Operations/TransferTicketCommit.cs | 7 -
.../Operations/TxRollupCommitCommit.cs | 7 -
.../TxRollupDispatchTicketsCommit.cs | 7 -
.../TxRollupFinalizeCommitmentCommit.cs | 7 -
.../Operations/TxRollupOriginationCommit.cs | 7 -
.../Operations/TxRollupRejectionCommit.cs | 7 -
.../TxRollupRemoveCommitmentCommit.cs | 7 -
.../Operations/TxRollupReturnBondCommit.cs | 7 -
.../Operations/TxRollupSubmitBatchCommit.cs | 7 -
.../Operations/UpdateSecondaryKeyCommit.cs | 158 -
.../Commits/Operations/VdfRevelationCommit.cs | 7 -
.../Proto15/Commits/SnapshotBalanceCommit.cs | 7 -
.../Proto15/Commits/SoftwareCommit.cs | 7 -
.../Handlers/Proto15/Commits/StateCommit.cs | 7 -
.../Proto15/Commits/StatisticsCommit.cs | 7 -
.../Handlers/Proto15/Commits/SubsidyCommit.cs | 7 -
.../Handlers/Proto15/Commits/TokensCommit.cs | 7 -
.../Handlers/Proto15/Commits/VotingCommit.cs | 4 -
.../Proto15/Diagnostics/Diagnostics.cs | 7 -
.../Protocols/Handlers/Proto15/Helpers.cs | 4 -
.../Handlers/Proto15/Proto15Handler.cs | 420 -
.../Protocols/Handlers/Proto15/Rpc/Rpc.cs | 9 -
.../Handlers/Proto15/Validation/Validator.cs | 7 -
.../Proto16/Activation/ProtoActivator.cs | 259 -
.../Commits/AttestationRewardCommit.cs | 7 -
.../Proto16/Commits/BakerCycleCommit.cs | 7 -
.../Proto16/Commits/BakingRightsCommit.cs | 20 -
.../Handlers/Proto16/Commits/BigMapCommit.cs | 7 -
.../Handlers/Proto16/Commits/BlockCommit.cs | 7 -
.../Proto16/Commits/ContractEventCommit.cs | 7 -
.../Handlers/Proto16/Commits/CycleCommit.cs | 7 -
.../Proto16/Commits/DeactivationCommit.cs | 7 -
.../Proto16/Commits/DelegatorCycleCommit.cs | 7 -
.../Handlers/Proto16/Commits/FreezerCommit.cs | 7 -
.../Handlers/Proto16/Commits/InboxCommit.cs | 138 -
.../Commits/Operations/ActivationsCommit.cs | 7 -
.../Commits/Operations/AttestationsCommit.cs | 7 -
.../Commits/Operations/BallotsCommit.cs | 7 -
.../Commits/Operations/DelegationsCommit.cs | 7 -
.../Commits/Operations/DoubleBakingCommit.cs | 7 -
.../Operations/DoubleConsensusCommit.cs | 7 -
.../Commits/Operations/DrainDelegateCommit.cs | 7 -
.../Operations/IncreasePaidStorageCommit.cs | 7 -
.../Operations/NonceRevelationsCommit.cs | 7 -
.../Commits/Operations/OriginationsCommit.cs | 7 -
.../Operations/PreattestationsCommit.cs | 7 -
.../Commits/Operations/ProposalsCommit.cs | 7 -
.../Operations/RegisterConstantsCommit.cs | 7 -
.../Commits/Operations/RevealsCommit.cs | 7 -
.../Operations/SetDepositsLimitCommit.cs | 7 -
.../SmartRollupAddMessagesCommit.cs | 109 -
.../Operations/SmartRollupCementCommit.cs | 140 -
.../Operations/SmartRollupExecuteCommit.cs | 217 -
.../Operations/SmartRollupOriginateCommit.cs | 241 -
.../Operations/SmartRollupPublishCommit.cs | 315 -
.../SmartRollupRecoverBondCommit.cs | 138 -
.../Operations/SmartRollupRefuteCommit.cs | 563 --
.../Operations/SmartRollupTimeoutCommit.cs | 289 -
.../Commits/Operations/TransactionsCommit.cs | 7 -
.../Operations/TransferTicketCommit.cs | 7 -
.../Operations/TxRollupCommitCommit.cs | 7 -
.../TxRollupDispatchTicketsCommit.cs | 7 -
.../TxRollupFinalizeCommitmentCommit.cs | 7 -
.../Operations/TxRollupOriginationCommit.cs | 7 -
.../Operations/TxRollupRejectionCommit.cs | 7 -
.../TxRollupRemoveCommitmentCommit.cs | 7 -
.../Operations/TxRollupReturnBondCommit.cs | 7 -
.../Operations/TxRollupSubmitBatchCommit.cs | 7 -
.../Operations/UpdateSecondaryKeyCommit.cs | 7 -
.../Commits/Operations/VdfRevelationCommit.cs | 7 -
.../Proto16/Commits/SnapshotBalanceCommit.cs | 7 -
.../Proto16/Commits/SoftwareCommit.cs | 7 -
.../Handlers/Proto16/Commits/StateCommit.cs | 7 -
.../Proto16/Commits/StatisticsCommit.cs | 7 -
.../Handlers/Proto16/Commits/SubsidyCommit.cs | 7 -
.../Handlers/Proto16/Commits/TicketsCommit.cs | 599 --
.../Handlers/Proto16/Commits/TokensCommit.cs | 7 -
.../Handlers/Proto16/Commits/VotingCommit.cs | 4 -
.../Proto16/Diagnostics/Diagnostics.cs | 36 -
.../Protocols/Handlers/Proto16/Helpers.cs | 4 -
.../Handlers/Proto16/Proto16Handler.cs | 513 --
.../Protocols/Handlers/Proto16/Rpc/Rpc.cs | 17 -
.../Handlers/Proto16/Validation/Validator.cs | 7 -
.../Proto17/Activation/ProtoActivator.cs | 53 -
.../Commits/AttestationRewardCommit.cs | 7 -
.../Proto17/Commits/BakerCycleCommit.cs | 7 -
.../Proto17/Commits/BakingRightsCommit.cs | 7 -
.../Handlers/Proto17/Commits/BigMapCommit.cs | 7 -
.../Handlers/Proto17/Commits/BlockCommit.cs | 7 -
.../Proto17/Commits/ContractEventCommit.cs | 7 -
.../Handlers/Proto17/Commits/CycleCommit.cs | 7 -
.../Proto17/Commits/DeactivationCommit.cs | 7 -
.../Proto17/Commits/DelegatorCycleCommit.cs | 7 -
.../Handlers/Proto17/Commits/FreezerCommit.cs | 7 -
.../Handlers/Proto17/Commits/InboxCommit.cs | 23 -
.../Commits/Operations/ActivationsCommit.cs | 7 -
.../Commits/Operations/AttestationsCommit.cs | 7 -
.../Commits/Operations/BallotsCommit.cs | 7 -
.../Commits/Operations/DelegationsCommit.cs | 7 -
.../Commits/Operations/DoubleBakingCommit.cs | 7 -
.../Operations/DoubleConsensusCommit.cs | 7 -
.../Commits/Operations/DrainDelegateCommit.cs | 7 -
.../Operations/IncreasePaidStorageCommit.cs | 7 -
.../Operations/NonceRevelationsCommit.cs | 7 -
.../Commits/Operations/OriginationsCommit.cs | 7 -
.../Operations/PreattestationsCommit.cs | 7 -
.../Commits/Operations/ProposalsCommit.cs | 7 -
.../Operations/RegisterConstantsCommit.cs | 7 -
.../Commits/Operations/RevealsCommit.cs | 7 -
.../Operations/SetDepositsLimitCommit.cs | 7 -
.../SmartRollupAddMessagesCommit.cs | 7 -
.../Operations/SmartRollupCementCommit.cs | 12 -
.../Operations/SmartRollupExecuteCommit.cs | 7 -
.../Operations/SmartRollupOriginateCommit.cs | 7 -
.../Operations/SmartRollupPublishCommit.cs | 7 -
.../SmartRollupRecoverBondCommit.cs | 7 -
.../Operations/SmartRollupRefuteCommit.cs | 7 -
.../Operations/SmartRollupTimeoutCommit.cs | 7 -
.../Commits/Operations/TransactionsCommit.cs | 7 -
.../Operations/TransferTicketCommit.cs | 7 -
.../Operations/TxRollupCommitCommit.cs | 7 -
.../TxRollupDispatchTicketsCommit.cs | 7 -
.../TxRollupFinalizeCommitmentCommit.cs | 7 -
.../Operations/TxRollupOriginationCommit.cs | 7 -
.../Operations/TxRollupRejectionCommit.cs | 7 -
.../TxRollupRemoveCommitmentCommit.cs | 7 -
.../Operations/TxRollupReturnBondCommit.cs | 7 -
.../Operations/TxRollupSubmitBatchCommit.cs | 7 -
.../Operations/UpdateSecondaryKeyCommit.cs | 7 -
.../Commits/Operations/VdfRevelationCommit.cs | 7 -
.../Proto17/Commits/SnapshotBalanceCommit.cs | 7 -
.../Proto17/Commits/SoftwareCommit.cs | 7 -
.../Handlers/Proto17/Commits/StateCommit.cs | 7 -
.../Proto17/Commits/StatisticsCommit.cs | 7 -
.../Handlers/Proto17/Commits/SubsidyCommit.cs | 7 -
.../Handlers/Proto17/Commits/TicketsCommit.cs | 7 -
.../Handlers/Proto17/Commits/TokensCommit.cs | 7 -
.../Handlers/Proto17/Commits/VotingCommit.cs | 4 -
.../Proto17/Diagnostics/Diagnostics.cs | 8 -
.../Protocols/Handlers/Proto17/Helpers.cs | 4 -
.../Handlers/Proto17/Proto17Handler.cs | 513 --
.../Protocols/Handlers/Proto17/Rpc/Rpc.cs | 9 -
.../Handlers/Proto17/Validation/Validator.cs | 7 -
.../Proto18/Activation/ProtoActivator.cs | 433 -
.../Commits/AttestationRewardCommit.cs | 158 -
.../Proto18/Commits/AutostakingCommit.cs | 239 -
.../Proto18/Commits/BakerCycleCommit.cs | 358 -
.../Proto18/Commits/BakingRightsCommit.cs | 7 -
.../Handlers/Proto18/Commits/BigMapCommit.cs | 7 -
.../Handlers/Proto18/Commits/BlockCommit.cs | 272 -
.../Proto18/Commits/ContractEventCommit.cs | 7 -
.../Handlers/Proto18/Commits/CycleCommit.cs | 72 -
.../Proto18/Commits/DeactivationCommit.cs | 7 -
.../Proto18/Commits/DelegatorCycleCommit.cs | 32 -
.../Handlers/Proto18/Commits/InboxCommit.cs | 7 -
.../Commits/Operations/ActivationsCommit.cs | 7 -
.../Commits/Operations/AttestationsCommit.cs | 7 -
.../Commits/Operations/BallotsCommit.cs | 7 -
.../Commits/Operations/DelegationsCommit.cs | 139 -
.../Commits/Operations/DoubleBakingCommit.cs | 98 -
.../Operations/DoubleConsensusCommit.cs | 109 -
.../Commits/Operations/DrainDelegateCommit.cs | 7 -
.../Operations/IncreasePaidStorageCommit.cs | 7 -
.../Operations/NonceRevelationsCommit.cs | 114 -
.../Commits/Operations/OriginationsCommit.cs | 7 -
.../Operations/PreattestationsCommit.cs | 7 -
.../Commits/Operations/ProposalsCommit.cs | 7 -
.../Operations/RegisterConstantsCommit.cs | 7 -
.../Commits/Operations/RevealsCommit.cs | 7 -
.../Operations/SetDelegateParametersCommit.cs | 177 -
.../Operations/SetDepositsLimitCommit.cs | 7 -
.../SmartRollupAddMessagesCommit.cs | 7 -
.../Operations/SmartRollupCementCommit.cs | 7 -
.../Operations/SmartRollupExecuteCommit.cs | 7 -
.../Operations/SmartRollupOriginateCommit.cs | 7 -
.../Operations/SmartRollupPublishCommit.cs | 7 -
.../SmartRollupRecoverBondCommit.cs | 7 -
.../Operations/SmartRollupRefuteCommit.cs | 7 -
.../Operations/SmartRollupTimeoutCommit.cs | 7 -
.../Commits/Operations/StakingCommit.cs | 360 -
.../Commits/Operations/TransactionsCommit.cs | 7 -
.../Operations/TransferTicketCommit.cs | 7 -
.../Operations/UpdateSecondaryKeyCommit.cs | 7 -
.../Commits/Operations/VdfRevelationCommit.cs | 90 -
.../Proto18/Commits/SlashingCommit.cs | 509 --
.../Proto18/Commits/SnapshotBalanceCommit.cs | 196 -
.../Proto18/Commits/SoftwareCommit.cs | 7 -
.../Proto18/Commits/StakingUpdateCommit.cs | 637 --
.../Handlers/Proto18/Commits/StateCommit.cs | 7 -
.../Proto18/Commits/StatisticsCommit.cs | 7 -
.../Handlers/Proto18/Commits/SubsidyCommit.cs | 7 -
.../Handlers/Proto18/Commits/TicketsCommit.cs | 7 -
.../Handlers/Proto18/Commits/TokensCommit.cs | 7 -
.../Handlers/Proto18/Commits/VotingCommit.cs | 4 -
.../Proto18/Diagnostics/Diagnostics.cs | 113 -
.../Protocols/Handlers/Proto18/Helpers.cs | 56 -
.../Handlers/Proto18/Proto18Handler.cs | 498 --
.../Protocols/Handlers/Proto18/Rpc/Rpc.cs | 28 -
.../Handlers/Proto18/Validation/Validator.cs | 7 -
.../Proto19/Activation/ProtoActivator.cs | 320 -
.../Commits/AttestationRewardCommit.cs | 144 -
.../Proto19/Commits/AutostakingCommit.cs | 14 -
.../Proto19/Commits/BakerCycleCommit.cs | 39 -
.../Proto19/Commits/BakingRightsCommit.cs | 33 -
.../Handlers/Proto19/Commits/BigMapCommit.cs | 7 -
.../Handlers/Proto19/Commits/BlockCommit.cs | 134 -
.../Proto19/Commits/ContractEventCommit.cs | 7 -
.../Handlers/Proto19/Commits/CycleCommit.cs | 90 -
.../Proto19/Commits/DeactivationCommit.cs | 7 -
.../Commits/DelegationSnapshotCommit.cs | 225 -
.../Proto19/Commits/DelegatorCycleCommit.cs | 34 -
.../Handlers/Proto19/Commits/InboxCommit.cs | 7 -
.../Commits/Operations/ActivationsCommit.cs | 7 -
.../Commits/Operations/AttestationsCommit.cs | 12 -
.../Commits/Operations/BallotsCommit.cs | 7 -
.../Operations/DalPublishCommitmentCommit.cs | 94 -
.../Commits/Operations/DelegationsCommit.cs | 7 -
.../Commits/Operations/DoubleBakingCommit.cs | 14 -
.../Operations/DoubleConsensusCommit.cs | 20 -
.../Commits/Operations/DrainDelegateCommit.cs | 7 -
.../Operations/IncreasePaidStorageCommit.cs | 7 -
.../Operations/NonceRevelationsCommit.cs | 64 -
.../Commits/Operations/OriginationsCommit.cs | 7 -
.../Operations/PreattestationsCommit.cs | 12 -
.../Commits/Operations/ProposalsCommit.cs | 7 -
.../Operations/RegisterConstantsCommit.cs | 7 -
.../Commits/Operations/RevealsCommit.cs | 7 -
.../Operations/SetDelegateParametersCommit.cs | 7 -
.../Operations/SetDepositsLimitCommit.cs | 7 -
.../SmartRollupAddMessagesCommit.cs | 7 -
.../Operations/SmartRollupCementCommit.cs | 7 -
.../Operations/SmartRollupExecuteCommit.cs | 7 -
.../Operations/SmartRollupOriginateCommit.cs | 7 -
.../Operations/SmartRollupPublishCommit.cs | 7 -
.../SmartRollupRecoverBondCommit.cs | 7 -
.../Operations/SmartRollupRefuteCommit.cs | 7 -
.../Operations/SmartRollupTimeoutCommit.cs | 7 -
.../Commits/Operations/StakingCommit.cs | 14 -
.../Commits/Operations/TransactionsCommit.cs | 7 -
.../Operations/TransferTicketCommit.cs | 7 -
.../Operations/UpdateSecondaryKeyCommit.cs | 7 -
.../Commits/Operations/VdfRevelationCommit.cs | 64 -
.../Proto19/Commits/SlashingCommit.cs | 20 -
.../Proto19/Commits/SnapshotBalanceCommit.cs | 109 -
.../Proto19/Commits/SoftwareCommit.cs | 7 -
.../Proto19/Commits/StakerCycleCommit.cs | 81 -
.../Proto19/Commits/StakingUpdateCommit.cs | 7 -
.../Handlers/Proto19/Commits/StateCommit.cs | 7 -
.../Proto19/Commits/StatisticsCommit.cs | 7 -
.../Handlers/Proto19/Commits/SubsidyCommit.cs | 7 -
.../Handlers/Proto19/Commits/TicketsCommit.cs | 7 -
.../Handlers/Proto19/Commits/TokensCommit.cs | 7 -
.../Handlers/Proto19/Commits/VotingCommit.cs | 4 -
.../Proto19/Diagnostics/Diagnostics.cs | 7 -
.../Protocols/Handlers/Proto19/Helpers.cs | 4 -
.../Handlers/Proto19/Proto19Handler.cs | 512 --
.../Protocols/Handlers/Proto19/Rpc/Rpc.cs | 13 -
.../Handlers/Proto19/Validation/Validator.cs | 7 -
.../Proto2/Activation/ProtoActivator.cs | 112 -
.../Proto2/Commits/BakerCycleCommit.cs | 7 -
.../Proto2/Commits/BakingRightsCommit.cs | 7 -
.../Handlers/Proto2/Commits/BigMapCommit.cs | 7 -
.../Handlers/Proto2/Commits/BlockCommit.cs | 7 -
.../Handlers/Proto2/Commits/CycleCommit.cs | 7 -
.../Proto2/Commits/DeactivationCommit.cs | 62 -
.../Proto2/Commits/DelegatorCycleCommit.cs | 7 -
.../Handlers/Proto2/Commits/FreezerCommit.cs | 7 -
.../Commits/Operations/ActivationsCommit.cs | 7 -
.../Commits/Operations/AttestationsCommit.cs | 7 -
.../Commits/Operations/DelegationsCommit.cs | 7 -
.../Commits/Operations/DoubleBakingCommit.cs | 111 -
.../Operations/NonceRevelationsCommit.cs | 7 -
.../Commits/Operations/OriginationsCommit.cs | 7 -
.../Commits/Operations/RevealsCommit.cs | 7 -
.../Commits/Operations/TransactionsCommit.cs | 24 -
.../Proto2/Commits/RevelationPenaltyCommit.cs | 127 -
.../Proto2/Commits/SnapshotBalanceCommit.cs | 21 -
.../Handlers/Proto2/Commits/StateCommit.cs | 7 -
.../Proto2/Commits/StatisticsCommit.cs | 7 -
.../Handlers/Proto2/Commits/VotingCommit.cs | 7 -
.../Proto2/Diagnostics/Diagnostics.cs | 7 -
.../Protocols/Handlers/Proto2/Helpers.cs | 4 -
.../Handlers/Proto2/Proto2Handler.cs | 234 -
.../Protocols/Handlers/Proto2/Rpc/Rpc.cs | 9 -
.../Handlers/Proto2/Validation/Validator.cs | 7 -
.../Proto20/Activation/ProtoActivator.cs | 26 -
.../Commits/AttestationRewardCommit.cs | 7 -
.../Proto20/Commits/AutostakingCommit.cs | 7 -
.../Proto20/Commits/BakerCycleCommit.cs | 7 -
.../Proto20/Commits/BakingRightsCommit.cs | 7 -
.../Handlers/Proto20/Commits/BigMapCommit.cs | 7 -
.../Handlers/Proto20/Commits/BlockCommit.cs | 7 -
.../Proto20/Commits/ContractEventCommit.cs | 7 -
.../Handlers/Proto20/Commits/CycleCommit.cs | 80 -
.../Proto20/Commits/DeactivationCommit.cs | 7 -
.../Commits/DelegationSnapshotCommit.cs | 4 -
.../Proto20/Commits/DelegatorCycleCommit.cs | 7 -
.../Handlers/Proto20/Commits/InboxCommit.cs | 7 -
.../Commits/Operations/ActivationsCommit.cs | 7 -
.../Commits/Operations/AttestationsCommit.cs | 7 -
.../Commits/Operations/BallotsCommit.cs | 7 -
.../Operations/DalPublishCommitmentCommit.cs | 7 -
.../Commits/Operations/DelegationsCommit.cs | 7 -
.../Commits/Operations/DoubleBakingCommit.cs | 7 -
.../Operations/DoubleConsensusCommit.cs | 7 -
.../Commits/Operations/DrainDelegateCommit.cs | 7 -
.../Operations/IncreasePaidStorageCommit.cs | 7 -
.../Operations/NonceRevelationsCommit.cs | 7 -
.../Commits/Operations/OriginationsCommit.cs | 7 -
.../Operations/PreattestationsCommit.cs | 7 -
.../Commits/Operations/ProposalsCommit.cs | 7 -
.../Operations/RegisterConstantsCommit.cs | 7 -
.../Commits/Operations/RevealsCommit.cs | 7 -
.../Operations/SetDelegateParametersCommit.cs | 7 -
.../Operations/SetDepositsLimitCommit.cs | 7 -
.../SmartRollupAddMessagesCommit.cs | 7 -
.../Operations/SmartRollupCementCommit.cs | 7 -
.../Operations/SmartRollupExecuteCommit.cs | 7 -
.../Operations/SmartRollupOriginateCommit.cs | 7 -
.../Operations/SmartRollupPublishCommit.cs | 7 -
.../SmartRollupRecoverBondCommit.cs | 7 -
.../Operations/SmartRollupRefuteCommit.cs | 7 -
.../Operations/SmartRollupTimeoutCommit.cs | 7 -
.../Commits/Operations/StakingCommit.cs | 7 -
.../Commits/Operations/TransactionsCommit.cs | 7 -
.../Operations/TransferTicketCommit.cs | 7 -
.../Operations/UpdateSecondaryKeyCommit.cs | 7 -
.../Commits/Operations/VdfRevelationCommit.cs | 7 -
.../Proto20/Commits/SlashingCommit.cs | 7 -
.../Proto20/Commits/SnapshotBalanceCommit.cs | 7 -
.../Proto20/Commits/SoftwareCommit.cs | 7 -
.../Proto20/Commits/StakerCycleCommit.cs | 4 -
.../Proto20/Commits/StakingUpdateCommit.cs | 7 -
.../Handlers/Proto20/Commits/StateCommit.cs | 7 -
.../Proto20/Commits/StatisticsCommit.cs | 7 -
.../Handlers/Proto20/Commits/SubsidyCommit.cs | 7 -
.../Handlers/Proto20/Commits/TicketsCommit.cs | 7 -
.../Handlers/Proto20/Commits/TokensCommit.cs | 7 -
.../Handlers/Proto20/Commits/VotingCommit.cs | 4 -
.../Proto20/Diagnostics/Diagnostics.cs | 7 -
.../Protocols/Handlers/Proto20/Helpers.cs | 4 -
.../Handlers/Proto20/Proto20Handler.cs | 512 --
.../Protocols/Handlers/Proto20/Rpc/Rpc.cs | 9 -
.../Handlers/Proto20/Validation/Validator.cs | 7 -
.../Proto21/Activation/ProtoActivator.cs | 288 -
.../Commits/AttestationRewardCommit.cs | 7 -
.../Proto21/Commits/AutostakingCommit.cs | 7 -
.../Proto21/Commits/BakerCycleCommit.cs | 7 -
.../Proto21/Commits/BakingRightsCommit.cs | 7 -
.../Handlers/Proto21/Commits/BigMapCommit.cs | 7 -
.../Handlers/Proto21/Commits/BlockCommit.cs | 7 -
.../Proto21/Commits/ContractEventCommit.cs | 7 -
.../Handlers/Proto21/Commits/CycleCommit.cs | 45 -
.../Proto21/Commits/DeactivationCommit.cs | 7 -
.../Commits/DelegationSnapshotCommit.cs | 4 -
.../Proto21/Commits/DelegatorCycleCommit.cs | 7 -
.../Handlers/Proto21/Commits/InboxCommit.cs | 7 -
.../Commits/Operations/ActivationsCommit.cs | 7 -
.../Commits/Operations/AttestationsCommit.cs | 7 -
.../Commits/Operations/BallotsCommit.cs | 7 -
.../Operations/DalPublishCommitmentCommit.cs | 7 -
.../Commits/Operations/DelegationsCommit.cs | 7 -
.../Commits/Operations/DoubleBakingCommit.cs | 7 -
.../Operations/DoubleConsensusCommit.cs | 7 -
.../Commits/Operations/DrainDelegateCommit.cs | 7 -
.../Operations/IncreasePaidStorageCommit.cs | 7 -
.../Operations/NonceRevelationsCommit.cs | 7 -
.../Commits/Operations/OriginationsCommit.cs | 7 -
.../Operations/PreattestationsCommit.cs | 7 -
.../Commits/Operations/ProposalsCommit.cs | 7 -
.../Operations/RegisterConstantsCommit.cs | 7 -
.../Commits/Operations/RevealsCommit.cs | 7 -
.../Operations/SetDelegateParametersCommit.cs | 7 -
.../Operations/SetDepositsLimitCommit.cs | 7 -
.../SmartRollupAddMessagesCommit.cs | 7 -
.../Operations/SmartRollupCementCommit.cs | 7 -
.../Operations/SmartRollupExecuteCommit.cs | 7 -
.../Operations/SmartRollupOriginateCommit.cs | 7 -
.../Operations/SmartRollupPublishCommit.cs | 7 -
.../SmartRollupRecoverBondCommit.cs | 7 -
.../Operations/SmartRollupRefuteCommit.cs | 7 -
.../Operations/SmartRollupTimeoutCommit.cs | 7 -
.../Commits/Operations/StakingCommit.cs | 7 -
.../Commits/Operations/TransactionsCommit.cs | 7 -
.../Operations/TransferTicketCommit.cs | 7 -
.../Operations/UpdateSecondaryKeyCommit.cs | 7 -
.../Commits/Operations/VdfRevelationCommit.cs | 7 -
.../Proto21/Commits/SlashingCommit.cs | 7 -
.../Proto21/Commits/SnapshotBalanceCommit.cs | 7 -
.../Proto21/Commits/SoftwareCommit.cs | 7 -
.../Proto21/Commits/StakerCycleCommit.cs | 4 -
.../Proto21/Commits/StakingUpdateCommit.cs | 7 -
.../Handlers/Proto21/Commits/StateCommit.cs | 7 -
.../Proto21/Commits/StatisticsCommit.cs | 7 -
.../Handlers/Proto21/Commits/SubsidyCommit.cs | 7 -
.../Handlers/Proto21/Commits/TicketsCommit.cs | 7 -
.../Handlers/Proto21/Commits/TokensCommit.cs | 7 -
.../Handlers/Proto21/Commits/VotingCommit.cs | 4 -
.../Proto21/Diagnostics/Diagnostics.cs | 78 -
.../Protocols/Handlers/Proto21/Helpers.cs | 4 -
.../Handlers/Proto21/Proto21Handler.cs | 512 --
.../Protocols/Handlers/Proto21/Rpc/Rpc.cs | 9 -
.../Handlers/Proto21/Validation/Validator.cs | 7 -
.../Proto22/Activation/ProtoActivator.cs | 280 -
.../Commits/AttestationRewardCommit.cs | 7 -
.../Proto22/Commits/AutostakingCommit.cs | 7 -
.../Proto22/Commits/BakerCycleCommit.cs | 7 -
.../Proto22/Commits/BakingRightsCommit.cs | 7 -
.../Handlers/Proto22/Commits/BigMapCommit.cs | 7 -
.../Handlers/Proto22/Commits/BlockCommit.cs | 7 -
.../Proto22/Commits/ContractEventCommit.cs | 7 -
.../Handlers/Proto22/Commits/CycleCommit.cs | 14 -
.../Commits/DalAttestationRewardCommit.cs | 177 -
.../Proto22/Commits/DeactivationCommit.cs | 7 -
.../Commits/DelegationSnapshotCommit.cs | 4 -
.../Proto22/Commits/DelegatorCycleCommit.cs | 7 -
.../Handlers/Proto22/Commits/InboxCommit.cs | 7 -
.../Commits/Operations/ActivationsCommit.cs | 7 -
.../Commits/Operations/AttestationsCommit.cs | 7 -
.../Commits/Operations/BallotsCommit.cs | 7 -
.../Operations/DalEntrapmentEvidenceCommit.cs | 112 -
.../Operations/DalPublishCommitmentCommit.cs | 7 -
.../Commits/Operations/DelegationsCommit.cs | 7 -
.../Commits/Operations/DoubleBakingCommit.cs | 7 -
.../Operations/DoubleConsensusCommit.cs | 7 -
.../Commits/Operations/DrainDelegateCommit.cs | 7 -
.../Operations/IncreasePaidStorageCommit.cs | 7 -
.../Operations/NonceRevelationsCommit.cs | 7 -
.../Commits/Operations/OriginationsCommit.cs | 7 -
.../Operations/PreattestationsCommit.cs | 7 -
.../Commits/Operations/ProposalsCommit.cs | 7 -
.../Operations/RegisterConstantsCommit.cs | 7 -
.../Commits/Operations/RevealsCommit.cs | 7 -
.../Operations/SetDelegateParametersCommit.cs | 7 -
.../Operations/SetDepositsLimitCommit.cs | 7 -
.../SmartRollupAddMessagesCommit.cs | 7 -
.../Operations/SmartRollupCementCommit.cs | 7 -
.../Operations/SmartRollupExecuteCommit.cs | 7 -
.../Operations/SmartRollupOriginateCommit.cs | 7 -
.../Operations/SmartRollupPublishCommit.cs | 7 -
.../SmartRollupRecoverBondCommit.cs | 7 -
.../Operations/SmartRollupRefuteCommit.cs | 7 -
.../Operations/SmartRollupTimeoutCommit.cs | 7 -
.../Commits/Operations/StakingCommit.cs | 7 -
.../Commits/Operations/TransactionsCommit.cs | 7 -
.../Operations/TransferTicketCommit.cs | 7 -
.../Operations/UpdateSecondaryKeyCommit.cs | 7 -
.../Commits/Operations/VdfRevelationCommit.cs | 7 -
.../Proto22/Commits/SlashingCommit.cs | 7 -
.../Proto22/Commits/SnapshotBalanceCommit.cs | 7 -
.../Proto22/Commits/SoftwareCommit.cs | 7 -
.../Proto22/Commits/StakerCycleCommit.cs | 4 -
.../Proto22/Commits/StakingUpdateCommit.cs | 7 -
.../Handlers/Proto22/Commits/StateCommit.cs | 7 -
.../Proto22/Commits/StatisticsCommit.cs | 7 -
.../Handlers/Proto22/Commits/SubsidyCommit.cs | 7 -
.../Handlers/Proto22/Commits/TicketsCommit.cs | 7 -
.../Handlers/Proto22/Commits/TokensCommit.cs | 7 -
.../Handlers/Proto22/Commits/VotingCommit.cs | 4 -
.../Proto22/Diagnostics/Diagnostics.cs | 45 -
.../Protocols/Handlers/Proto22/Helpers.cs | 4 -
.../Handlers/Proto22/Proto22Handler.cs | 520 --
.../Protocols/Handlers/Proto22/Rpc/Rpc.cs | 13 -
.../Handlers/Proto22/Validation/Validator.cs | 7 -
.../Proto23/Activation/ProtoActivator.cs | 55 -
.../Commits/AttestationRewardCommit.cs | 4 -
.../Proto23/Commits/AutostakingCommit.cs | 4 -
.../Proto23/Commits/BakerCycleCommit.cs | 4 -
.../Proto23/Commits/BakingRightsCommit.cs | 4 -
.../Handlers/Proto23/Commits/BigMapCommit.cs | 4 -
.../Handlers/Proto23/Commits/BlockCommit.cs | 4 -
.../Proto23/Commits/ContractEventCommit.cs | 4 -
.../Handlers/Proto23/Commits/CycleCommit.cs | 4 -
.../Commits/DalAttestationRewardCommit.cs | 4 -
.../Proto23/Commits/DeactivationCommit.cs | 4 -
.../Commits/DelegationSnapshotCommit.cs | 4 -
.../Proto23/Commits/DelegatorCycleCommit.cs | 4 -
.../Handlers/Proto23/Commits/InboxCommit.cs | 4 -
.../Commits/Operations/ActivationsCommit.cs | 4 -
.../Operations/AttestationAggregateCommit.cs | 27 -
.../Commits/Operations/AttestationsCommit.cs | 4 -
.../Commits/Operations/BallotsCommit.cs | 4 -
.../Operations/DalEntrapmentEvidenceCommit.cs | 21 -
.../Operations/DalPublishCommitmentCommit.cs | 4 -
.../Commits/Operations/DelegationsCommit.cs | 4 -
.../Commits/Operations/DoubleBakingCommit.cs | 4 -
.../Operations/DoubleConsensusCommit.cs | 25 -
.../Commits/Operations/DrainDelegateCommit.cs | 4 -
.../Operations/IncreasePaidStorageCommit.cs | 4 -
.../Operations/NonceRevelationsCommit.cs | 4 -
.../Commits/Operations/OriginationsCommit.cs | 4 -
.../PreattestationAggregateCommit.cs | 27 -
.../Operations/PreattestationsCommit.cs | 4 -
.../Commits/Operations/ProposalsCommit.cs | 4 -
.../Operations/RegisterConstantsCommit.cs | 4 -
.../Commits/Operations/RevealsCommit.cs | 4 -
.../Operations/SetDelegateParametersCommit.cs | 4 -
.../Operations/SetDepositsLimitCommit.cs | 4 -
.../SmartRollupAddMessagesCommit.cs | 4 -
.../Operations/SmartRollupCementCommit.cs | 4 -
.../Operations/SmartRollupExecuteCommit.cs | 4 -
.../Operations/SmartRollupOriginateCommit.cs | 4 -
.../Operations/SmartRollupPublishCommit.cs | 4 -
.../SmartRollupRecoverBondCommit.cs | 4 -
.../Operations/SmartRollupRefuteCommit.cs | 4 -
.../Operations/SmartRollupTimeoutCommit.cs | 4 -
.../Commits/Operations/StakingCommit.cs | 4 -
.../Commits/Operations/TransactionsCommit.cs | 4 -
.../Operations/TransferTicketCommit.cs | 4 -
.../Operations/UpdateSecondaryKeyCommit.cs | 4 -
.../Commits/Operations/VdfRevelationCommit.cs | 4 -
.../Proto23/Commits/SlashingCommit.cs | 4 -
.../Proto23/Commits/SnapshotBalanceCommit.cs | 4 -
.../Proto23/Commits/SoftwareCommit.cs | 4 -
.../Proto23/Commits/StakerCycleCommit.cs | 4 -
.../Proto23/Commits/StakingUpdateCommit.cs | 4 -
.../Handlers/Proto23/Commits/StateCommit.cs | 4 -
.../Proto23/Commits/StatisticsCommit.cs | 4 -
.../Handlers/Proto23/Commits/SubsidyCommit.cs | 4 -
.../Handlers/Proto23/Commits/TicketsCommit.cs | 4 -
.../Handlers/Proto23/Commits/TokensCommit.cs | 4 -
.../Handlers/Proto23/Commits/VotingCommit.cs | 4 -
.../Proto23/Diagnostics/Diagnostics.cs | 4 -
.../Protocols/Handlers/Proto23/Helpers.cs | 4 -
.../Handlers/Proto23/Proto23Handler.cs | 530 --
.../Protocols/Handlers/Proto23/Rpc/Rpc.cs | 6 -
.../Handlers/Proto23/Validation/Validator.cs | 1073 ---
.../Proto24/Activation/ProtoActivator.cs | 271 -
.../Commits/AttestationRewardCommit.cs | 4 -
.../Proto24/Commits/AutostakingCommit.cs | 4 -
.../Proto24/Commits/BakerCycleCommit.cs | 56 -
.../Proto24/Commits/BakingRightsCommit.cs | 4 -
.../Handlers/Proto24/Commits/BigMapCommit.cs | 538 +-
.../Handlers/Proto24/Commits/BlockCommit.cs | 117 +-
.../Proto24/Commits/ContractEventCommit.cs | 91 +-
.../Handlers/Proto24/Commits/CycleCommit.cs | 14 -
.../Commits/DalAttestationRewardCommit.cs | 4 -
.../Proto24/Commits/DeactivationCommit.cs | 4 -
.../Commits/DelegationSnapshotCommit.cs | 4 -
.../Proto24/Commits/DelegatorCycleCommit.cs | 4 -
.../Handlers/Proto24/Commits/InboxCommit.cs | 4 -
.../Commits/Operations/ActivationsCommit.cs | 4 -
.../Operations/AttestationAggregateCommit.cs | 13 -
.../Commits/Operations/AttestationsCommit.cs | 13 -
.../Commits/Operations/BallotsCommit.cs | 4 -
.../Operations/DalEntrapmentEvidenceCommit.cs | 4 -
.../Operations/DalPublishCommitmentCommit.cs | 4 -
.../Commits/Operations/DelegationsCommit.cs | 4 -
.../Commits/Operations/DoubleBakingCommit.cs | 4 -
.../Operations/DoubleConsensusCommit.cs | 4 -
.../Commits/Operations/DrainDelegateCommit.cs | 4 -
.../Operations/IncreasePaidStorageCommit.cs | 122 +-
.../Operations/NonceRevelationsCommit.cs | 4 -
.../Commits/Operations/OriginationsCommit.cs | 691 +-
.../PreattestationAggregateCommit.cs | 13 -
.../Operations/PreattestationsCommit.cs | 13 -
.../Commits/Operations/ProposalsCommit.cs | 4 -
.../Operations/RegisterConstantsCommit.cs | 111 +-
.../Commits/Operations/RevealsCommit.cs | 103 +-
.../Operations/SetDelegateParametersCommit.cs | 4 -
.../Operations/SetDepositsLimitCommit.cs | 4 -
.../SmartRollupAddMessagesCommit.cs | 4 -
.../Operations/SmartRollupCementCommit.cs | 4 -
.../Operations/SmartRollupExecuteCommit.cs | 4 -
.../Operations/SmartRollupOriginateCommit.cs | 4 -
.../Operations/SmartRollupPublishCommit.cs | 4 -
.../SmartRollupRecoverBondCommit.cs | 4 -
.../Operations/SmartRollupRefuteCommit.cs | 4 -
.../Operations/SmartRollupTimeoutCommit.cs | 4 -
.../Commits/Operations/StakingCommit.cs | 4 -
.../Commits/Operations/TransactionsCommit.cs | 490 +-
.../Operations/TransferTicketCommit.cs | 212 +-
.../Operations/UpdateSecondaryKeyCommit.cs | 4 -
.../Commits/Operations/VdfRevelationCommit.cs | 4 -
.../Proto24/Commits/SlashingCommit.cs | 4 -
.../Proto24/Commits/SnapshotBalanceCommit.cs | 4 -
.../Proto24/Commits/SoftwareCommit.cs | 4 -
.../Proto24/Commits/StakerCycleCommit.cs | 4 -
.../Proto24/Commits/StakingUpdateCommit.cs | 4 -
.../Handlers/Proto24/Commits/StateCommit.cs | 49 +-
.../Proto24/Commits/StatisticsCommit.cs | 61 +-
.../Handlers/Proto24/Commits/SubsidyCommit.cs | 4 -
.../Handlers/Proto24/Commits/TicketsCommit.cs | 599 +-
.../Handlers/Proto24/Commits/TokensCommit.cs | 1060 ++-
.../Handlers/Proto24/Commits/VotingCommit.cs | 4 -
.../Proto24/Diagnostics/Diagnostics.cs | 4 -
.../Protocols/Handlers/Proto24/Helpers.cs | 4 -
.../Handlers/Proto24/Proto24Handler.cs | 366 +-
.../Handlers/Proto24/ProtoActivator.cs | 325 +
.../Handlers/Proto24/ProtoMigrator.cs | 110 +
Tzkt.Sync/Protocols/Handlers/Proto24/Rpc.cs | 27 +
.../Protocols/Handlers/Proto24/Rpc/Rpc.cs | 6 -
.../Handlers/Proto24/Validation/Validator.cs | 1080 ---
.../Protocols/Handlers/Proto24/Validator.cs | 27 +
.../Proto3/Activation/ProtoActivator.cs | 16 -
.../Proto3/Commits/BakerCycleCommit.cs | 338 -
.../Proto3/Commits/BakingRightsCommit.cs | 146 -
.../Handlers/Proto3/Commits/BigMapCommit.cs | 7 -
.../Handlers/Proto3/Commits/BlockCommit.cs | 7 -
.../Handlers/Proto3/Commits/CycleCommit.cs | 7 -
.../Proto3/Commits/DeactivationCommit.cs | 7 -
.../Proto3/Commits/DelegatorCycleCommit.cs | 15 -
.../Handlers/Proto3/Commits/FreezerCommit.cs | 7 -
.../Commits/Operations/ActivationsCommit.cs | 7 -
.../Commits/Operations/AttestationsCommit.cs | 7 -
.../Commits/Operations/BallotsCommit.cs | 125 -
.../Commits/Operations/DelegationsCommit.cs | 7 -
.../Commits/Operations/DoubleBakingCommit.cs | 7 -
.../Operations/NonceRevelationsCommit.cs | 7 -
.../Commits/Operations/OriginationsCommit.cs | 7 -
.../Commits/Operations/ProposalsCommit.cs | 162 -
.../Commits/Operations/RevealsCommit.cs | 7 -
.../Commits/Operations/TransactionsCommit.cs | 11 -
.../Proto3/Commits/RevelationPenaltyCommit.cs | 7 -
.../Proto3/Commits/SnapshotBalanceCommit.cs | 7 -
.../Handlers/Proto3/Commits/StateCommit.cs | 7 -
.../Proto3/Commits/StatisticsCommit.cs | 7 -
.../Handlers/Proto3/Commits/VotingCommit.cs | 7 -
.../Proto3/Diagnostics/Diagnostics.cs | 7 -
.../Protocols/Handlers/Proto3/Helpers.cs | 4 -
.../Handlers/Proto3/Proto3Handler.cs | 256 -
.../Protocols/Handlers/Proto3/Rpc/Rpc.cs | 9 -
.../Handlers/Proto3/Validation/Validator.cs | 7 -
.../Proto4/Activation/ProtoActivator.cs | 81 -
.../Proto4/Commits/BakerCycleCommit.cs | 343 -
.../Proto4/Commits/BakingRightsCommit.cs | 7 -
.../Handlers/Proto4/Commits/BigMapCommit.cs | 7 -
.../Handlers/Proto4/Commits/BlockCommit.cs | 7 -
.../Handlers/Proto4/Commits/CycleCommit.cs | 7 -
.../Proto4/Commits/DeactivationCommit.cs | 7 -
.../Proto4/Commits/DelegatorCycleCommit.cs | 7 -
.../Handlers/Proto4/Commits/FreezerCommit.cs | 11 -
.../Commits/Operations/ActivationsCommit.cs | 7 -
.../Commits/Operations/AttestationsCommit.cs | 7 -
.../Commits/Operations/BallotsCommit.cs | 7 -
.../Commits/Operations/DelegationsCommit.cs | 7 -
.../Commits/Operations/DoubleBakingCommit.cs | 7 -
.../Operations/DoubleConsensusCommit.cs | 112 -
.../Operations/NonceRevelationsCommit.cs | 7 -
.../Commits/Operations/OriginationsCommit.cs | 7 -
.../Commits/Operations/ProposalsCommit.cs | 7 -
.../Commits/Operations/RevealsCommit.cs | 7 -
.../Commits/Operations/TransactionsCommit.cs | 11 -
.../Proto4/Commits/RevelationPenaltyCommit.cs | 11 -
.../Proto4/Commits/SnapshotBalanceCommit.cs | 11 -
.../Handlers/Proto4/Commits/StateCommit.cs | 7 -
.../Proto4/Commits/StatisticsCommit.cs | 7 -
.../Handlers/Proto4/Commits/VotingCommit.cs | 7 -
.../Proto4/Diagnostics/Diagnostics.cs | 7 -
.../Protocols/Handlers/Proto4/Helpers.cs | 4 -
.../Handlers/Proto4/Proto4Handler.cs | 262 -
.../Protocols/Handlers/Proto4/Rpc/Rpc.cs | 9 -
.../Handlers/Proto4/Validation/Validator.cs | 7 -
.../Proto5/Activation/ProtoActivator.cs | 428 -
.../Proto5/Activation/airdropped.contracts | 7321 -----------------
.../Proto5/Commits/BakerCycleCommit.cs | 541 --
.../Proto5/Commits/BakingRightsCommit.cs | 7 -
.../Handlers/Proto5/Commits/BigMapCommit.cs | 7 -
.../Handlers/Proto5/Commits/BlockCommit.cs | 7 -
.../Handlers/Proto5/Commits/CycleCommit.cs | 7 -
.../Proto5/Commits/DeactivationCommit.cs | 7 -
.../Proto5/Commits/DelegatorCycleCommit.cs | 7 -
.../Handlers/Proto5/Commits/FreezerCommit.cs | 7 -
.../Commits/Operations/ActivationsCommit.cs | 7 -
.../Commits/Operations/AttestationsCommit.cs | 7 -
.../Commits/Operations/BallotsCommit.cs | 7 -
.../Commits/Operations/DelegationsCommit.cs | 7 -
.../Commits/Operations/DoubleBakingCommit.cs | 7 -
.../Operations/DoubleConsensusCommit.cs | 7 -
.../Operations/NonceRevelationsCommit.cs | 7 -
.../Commits/Operations/OriginationsCommit.cs | 26 -
.../Commits/Operations/ProposalsCommit.cs | 7 -
.../Commits/Operations/RevealsCommit.cs | 7 -
.../Commits/Operations/TransactionsCommit.cs | 153 -
.../Proto5/Commits/RevelationPenaltyCommit.cs | 7 -
.../Proto5/Commits/SnapshotBalanceCommit.cs | 7 -
.../Handlers/Proto5/Commits/SoftwareCommit.cs | 49 -
.../Handlers/Proto5/Commits/StateCommit.cs | 7 -
.../Proto5/Commits/StatisticsCommit.cs | 7 -
.../Handlers/Proto5/Commits/TokensCommit.cs | 1060 ---
.../Handlers/Proto5/Commits/VotingCommit.cs | 29 -
.../Proto5/Diagnostics/Diagnostics.cs | 34 -
.../Protocols/Handlers/Proto5/Helpers.cs | 4 -
.../Handlers/Proto5/Proto5Handler.cs | 281 -
.../Protocols/Handlers/Proto5/Rpc/Rpc.cs | 9 -
.../Handlers/Proto5/Validation/Validator.cs | 7 -
.../Proto6/Activation/ProtoActivator.cs | 85 -
.../Proto6/Commits/BakerCycleCommit.cs | 19 -
.../Proto6/Commits/BakingRightsCommit.cs | 7 -
.../Handlers/Proto6/Commits/BigMapCommit.cs | 21 -
.../Handlers/Proto6/Commits/BlockCommit.cs | 7 -
.../Handlers/Proto6/Commits/CycleCommit.cs | 7 -
.../Proto6/Commits/DeactivationCommit.cs | 7 -
.../Proto6/Commits/DelegatorCycleCommit.cs | 7 -
.../Handlers/Proto6/Commits/FreezerCommit.cs | 21 -
.../Commits/Operations/ActivationsCommit.cs | 7 -
.../Commits/Operations/AttestationsCommit.cs | 7 -
.../Commits/Operations/BallotsCommit.cs | 7 -
.../Commits/Operations/DelegationsCommit.cs | 7 -
.../Commits/Operations/DoubleBakingCommit.cs | 7 -
.../Operations/DoubleConsensusCommit.cs | 7 -
.../Operations/NonceRevelationsCommit.cs | 7 -
.../Commits/Operations/OriginationsCommit.cs | 7 -
.../Commits/Operations/ProposalsCommit.cs | 7 -
.../Commits/Operations/RevealsCommit.cs | 7 -
.../Commits/Operations/TransactionsCommit.cs | 7 -
.../Proto6/Commits/RevelationPenaltyCommit.cs | 22 -
.../Proto6/Commits/SnapshotBalanceCommit.cs | 7 -
.../Handlers/Proto6/Commits/SoftwareCommit.cs | 7 -
.../Handlers/Proto6/Commits/StateCommit.cs | 7 -
.../Proto6/Commits/StatisticsCommit.cs | 7 -
.../Handlers/Proto6/Commits/TokensCommit.cs | 7 -
.../Handlers/Proto6/Commits/VotingCommit.cs | 7 -
.../Proto6/Diagnostics/Diagnostics.cs | 7 -
.../Protocols/Handlers/Proto6/Helpers.cs | 4 -
.../Handlers/Proto6/Proto6Handler.cs | 281 -
.../Protocols/Handlers/Proto6/Rpc/Rpc.cs | 16 -
.../Handlers/Proto6/Validation/Validator.cs | 7 -
.../Proto7/Activation/ProtoActivator.cs | 24 -
.../Proto7/Commits/BakerCycleCommit.cs | 7 -
.../Proto7/Commits/BakingRightsCommit.cs | 7 -
.../Handlers/Proto7/Commits/BigMapCommit.cs | 7 -
.../Handlers/Proto7/Commits/BlockCommit.cs | 7 -
.../Handlers/Proto7/Commits/CycleCommit.cs | 7 -
.../Proto7/Commits/DeactivationCommit.cs | 7 -
.../Proto7/Commits/DelegatorCycleCommit.cs | 7 -
.../Handlers/Proto7/Commits/FreezerCommit.cs | 7 -
.../Commits/Operations/ActivationsCommit.cs | 7 -
.../Commits/Operations/AttestationsCommit.cs | 7 -
.../Commits/Operations/BallotsCommit.cs | 7 -
.../Commits/Operations/DelegationsCommit.cs | 7 -
.../Commits/Operations/DoubleBakingCommit.cs | 7 -
.../Operations/DoubleConsensusCommit.cs | 7 -
.../Operations/NonceRevelationsCommit.cs | 7 -
.../Commits/Operations/OriginationsCommit.cs | 7 -
.../Commits/Operations/ProposalsCommit.cs | 7 -
.../Commits/Operations/RevealsCommit.cs | 7 -
.../Commits/Operations/TransactionsCommit.cs | 7 -
.../Proto7/Commits/RevelationPenaltyCommit.cs | 7 -
.../Proto7/Commits/SnapshotBalanceCommit.cs | 7 -
.../Handlers/Proto7/Commits/SoftwareCommit.cs | 7 -
.../Handlers/Proto7/Commits/StateCommit.cs | 7 -
.../Proto7/Commits/StatisticsCommit.cs | 7 -
.../Handlers/Proto7/Commits/TokensCommit.cs | 7 -
.../Handlers/Proto7/Commits/VotingCommit.cs | 7 -
.../Proto7/Diagnostics/Diagnostics.cs | 7 -
.../Protocols/Handlers/Proto7/Helpers.cs | 4 -
.../Handlers/Proto7/Proto7Handler.cs | 281 -
.../Protocols/Handlers/Proto7/Rpc/Rpc.cs | 9 -
.../Handlers/Proto7/Validation/Validator.cs | 7 -
.../Proto8/Activation/ProtoActivator.cs | 34 -
.../Proto8/Commits/BakerCycleCommit.cs | 7 -
.../Proto8/Commits/BakingRightsCommit.cs | 7 -
.../Handlers/Proto8/Commits/BigMapCommit.cs | 23 -
.../Handlers/Proto8/Commits/BlockCommit.cs | 7 -
.../Handlers/Proto8/Commits/CycleCommit.cs | 7 -
.../Proto8/Commits/DeactivationCommit.cs | 7 -
.../Proto8/Commits/DelegatorCycleCommit.cs | 7 -
.../Handlers/Proto8/Commits/FreezerCommit.cs | 7 -
.../Commits/Operations/ActivationsCommit.cs | 7 -
.../Commits/Operations/AttestationsCommit.cs | 7 -
.../Commits/Operations/BallotsCommit.cs | 7 -
.../Commits/Operations/DelegationsCommit.cs | 7 -
.../Commits/Operations/DoubleBakingCommit.cs | 7 -
.../Operations/DoubleConsensusCommit.cs | 7 -
.../Operations/NonceRevelationsCommit.cs | 7 -
.../Commits/Operations/OriginationsCommit.cs | 7 -
.../Commits/Operations/ProposalsCommit.cs | 7 -
.../Commits/Operations/RevealsCommit.cs | 7 -
.../Commits/Operations/TransactionsCommit.cs | 7 -
.../Proto8/Commits/RevelationPenaltyCommit.cs | 7 -
.../Proto8/Commits/SnapshotBalanceCommit.cs | 7 -
.../Handlers/Proto8/Commits/SoftwareCommit.cs | 7 -
.../Handlers/Proto8/Commits/StateCommit.cs | 7 -
.../Proto8/Commits/StatisticsCommit.cs | 7 -
.../Handlers/Proto8/Commits/TokensCommit.cs | 7 -
.../Handlers/Proto8/Commits/VotingCommit.cs | 35 -
.../Proto8/Diagnostics/Diagnostics.cs | 7 -
.../Protocols/Handlers/Proto8/Helpers.cs | 4 -
.../Handlers/Proto8/Proto8Handler.cs | 281 -
.../Protocols/Handlers/Proto8/Rpc/Rpc.cs | 9 -
.../Handlers/Proto8/Validation/Validator.cs | 7 -
.../Proto9/Activation/ProtoActivator.cs | 62 -
.../Proto9/Commits/BakerCycleCommit.cs | 7 -
.../Proto9/Commits/BakingRightsCommit.cs | 7 -
.../Handlers/Proto9/Commits/BigMapCommit.cs | 7 -
.../Handlers/Proto9/Commits/BlockCommit.cs | 32 -
.../Handlers/Proto9/Commits/CycleCommit.cs | 7 -
.../Proto9/Commits/DeactivationCommit.cs | 7 -
.../Proto9/Commits/DelegatorCycleCommit.cs | 7 -
.../Handlers/Proto9/Commits/FreezerCommit.cs | 22 -
.../Commits/Operations/ActivationsCommit.cs | 7 -
.../Commits/Operations/AttestationsCommit.cs | 7 -
.../Commits/Operations/BallotsCommit.cs | 7 -
.../Commits/Operations/DelegationsCommit.cs | 7 -
.../Commits/Operations/DoubleBakingCommit.cs | 7 -
.../Operations/DoubleConsensusCommit.cs | 7 -
.../Operations/NonceRevelationsCommit.cs | 7 -
.../Commits/Operations/OriginationsCommit.cs | 7 -
.../Commits/Operations/ProposalsCommit.cs | 7 -
.../Commits/Operations/RevealsCommit.cs | 7 -
.../Commits/Operations/TransactionsCommit.cs | 7 -
.../Proto9/Commits/RevelationPenaltyCommit.cs | 23 -
.../Proto9/Commits/SnapshotBalanceCommit.cs | 18 -
.../Handlers/Proto9/Commits/SoftwareCommit.cs | 7 -
.../Handlers/Proto9/Commits/StateCommit.cs | 7 -
.../Proto9/Commits/StatisticsCommit.cs | 7 -
.../Handlers/Proto9/Commits/TokensCommit.cs | 7 -
.../Handlers/Proto9/Commits/VotingCommit.cs | 7 -
.../Proto9/Diagnostics/Diagnostics.cs | 7 -
.../Protocols/Handlers/Proto9/Helpers.cs | 4 -
.../Handlers/Proto9/Proto9Handler.cs | 281 -
.../Protocols/Handlers/Proto9/Rpc/Rpc.cs | 9 -
.../Handlers/Proto9/Validation/Validator.cs | 7 -
Tzkt.Sync/Protocols/Helpers/Blind.cs | 19 -
Tzkt.Sync/Protocols/Helpers/BlockContext.cs | 88 -
Tzkt.Sync/Protocols/Helpers/Chains.cs | 30 -
Tzkt.Sync/Protocols/Helpers/GracePeriod.cs | 13 -
Tzkt.Sync/Protocols/Helpers/InboxContext.cs | 12 -
.../Protocols/Helpers/OriginationNonce.cs | 27 -
.../Protocols/Helpers/RightsGenerator.cs | 185 -
Tzkt.Sync/Protocols/Helpers/Sampler.cs | 159 -
Tzkt.Sync/Protocols/Helpers/Seed.cs | 55 -
Tzkt.Sync/Protocols/ProtocolCommit.cs | 449 +-
Tzkt.Sync/Protocols/ProtocolHandler.cs | 274 +-
Tzkt.Sync/Protocols/TezosProtocols.cs | 98 +-
Tzkt.Sync/Protocols/TezosProtocolsConfig.cs | 1 -
Tzkt.Sync/Services/Cache/AppStateCache.cs | 4 +-
Tzkt.Sync/Services/EvmNode/EvmNode.cs | 89 +
Tzkt.Sync/Services/EvmNode/EvmNodeConfig.cs | 17 +
.../Services/Observer/ObserverService.cs | 8 +-
Tzkt.Sync/Tzkt.Sync.csproj | 15 -
Tzkt.Sync/appsettings.json | 11 +-
1123 files changed, 5107 insertions(+), 53952 deletions(-)
create mode 100644 Tzkt.Sync/Protocols/Abstract/IActivator.cs
delete mode 100644 Tzkt.Sync/Protocols/Abstract/IDiagnostics.cs
delete mode 100644 Tzkt.Sync/Protocols/Abstract/IHelpers.cs
create mode 100644 Tzkt.Sync/Protocols/Abstract/IMigrator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Genesis/Diagnostics/Diagnostics.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Genesis/GenesisHandler.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Genesis/Helpers.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Genesis/Rpc/Rpc.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Genesis/Validation/Validator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Initiator/Diagnostics/Diagnostics.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Initiator/Helpers.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Initiator/InitiatorHandler.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Initiator/Rpc/Rpc.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Initiator/Validation/Validator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.Accounts.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.BakerCycles.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.BakingRights.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.Commitments.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.Cycles.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.DelegationSnapshots.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.DelegatorCycles.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.Protocol.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.SnapshotBalances.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.StakerCycles.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.Voting.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Commits/BakerCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Commits/BakingRightsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Commits/BigMapCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Commits/BlockCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Commits/CycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Commits/DelegatorCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Commits/FreezerCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/ActivationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/AttestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/DelegationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/NonceRevelationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/OriginationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/RevealsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/TransactionsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Commits/SnapshotBalanceCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Commits/StateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Commits/StatisticsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Commits/VotingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Diagnostics/Diagnostics.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Helpers.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Proto1Handler.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Rpc/Rpc.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto1/Validation/Validator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Activation/ProtoActivator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Commits/BakerCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Commits/BakingRightsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Commits/BigMapCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Commits/BlockCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Commits/CycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Commits/DeactivationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Commits/DelegatorCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Commits/FreezerCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/ActivationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/AttestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/BallotsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/DelegationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/DoubleBakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/DoubleConsensusCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/NonceRevelationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/OriginationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/ProposalsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/RevealsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/TransactionsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Commits/RevelationPenaltyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Commits/SnapshotBalanceCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Commits/SoftwareCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Commits/StateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Commits/StatisticsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Commits/SubsidyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Commits/TokensCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Commits/VotingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Diagnostics/Diagnostics.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Helpers.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Proto10Handler.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Rpc/Rpc.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto10/Validation/Validator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Activation/ProtoActivator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Commits/BakerCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Commits/BakingRightsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Commits/BigMapCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Commits/BlockCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Commits/CycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Commits/DeactivationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Commits/DelegatorCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Commits/FreezerCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/ActivationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/AttestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/BallotsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/DelegationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/DoubleBakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/DoubleConsensusCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/NonceRevelationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/OriginationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/ProposalsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/RegisterConstantsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/RevealsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/TransactionsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Commits/RevelationPenaltyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Commits/SnapshotBalanceCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Commits/SoftwareCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Commits/StateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Commits/StatisticsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Commits/SubsidyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Commits/TokensCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Commits/VotingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Diagnostics/Diagnostics.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Helpers.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Proto11Handler.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Rpc/Rpc.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto11/Validation/Validator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Activation/ProtoActivator.Accounts.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Activation/ProtoActivator.BakerCycles.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Activation/ProtoActivator.BakingRights.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Activation/ProtoActivator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Commits/AttestationRewardCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Commits/BakerCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Commits/BakingRightsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Commits/BigMapCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Commits/BlockCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Commits/CycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Commits/DeactivationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Commits/DelegatorCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Commits/FreezerCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/ActivationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/AttestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/BallotsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/DelegationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/DoubleBakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/DoubleConsensusCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/NonceRevelationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/OriginationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/PreattestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/ProposalsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/RegisterConstantsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/RevealsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/SetDepositsLimitCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/TransactionsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Commits/SnapshotBalanceCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Commits/SoftwareCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Commits/StateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Commits/StatisticsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Commits/SubsidyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Commits/TokensCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Commits/VotingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Diagnostics/Diagnostics.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Helpers.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Proto12Handler.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Rpc/Rpc.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto12/Validation/Validator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Activation/ProtoActivator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Activation/emptied.contracts
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Activation/patched.contracts
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/AttestationRewardCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/BakerCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/BakingRightsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/BigMapCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/BlockCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/CycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/DeactivationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/DelegatorCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/FreezerCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/Operations/ActivationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/Operations/AttestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/Operations/BallotsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/Operations/DelegationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/Operations/DoubleBakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/Operations/DoubleConsensusCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/Operations/NonceRevelationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/Operations/OriginationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/Operations/PreattestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/Operations/ProposalsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/Operations/RegisterConstantsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/Operations/RevealsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/Operations/SetDepositsLimitCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/Operations/TransactionsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/Operations/TransferTicketCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/Operations/TxRollupCommitCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/Operations/TxRollupDispatchTicketsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/Operations/TxRollupFinalizeCommitmentCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/Operations/TxRollupOriginationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/Operations/TxRollupRejectionCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/Operations/TxRollupRemoveCommitmentCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/Operations/TxRollupReturnBondCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/Operations/TxRollupSubmitBatchCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/SnapshotBalanceCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/SoftwareCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/StateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/StatisticsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/SubsidyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/TokensCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Commits/VotingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Diagnostics/Diagnostics.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Helpers.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Proto13Handler.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Rpc/Rpc.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto13/Validation/Validator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Activation/ProtoActivator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/AttestationRewardCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/BakerCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/BakingRightsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/BigMapCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/BlockCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/ContractEventCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/CycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/DeactivationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/DelegatorCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/FreezerCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/Operations/ActivationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/Operations/AttestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/Operations/BallotsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/Operations/DelegationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/Operations/DoubleBakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/Operations/DoubleConsensusCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/Operations/IncreasePaidStorageCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/Operations/NonceRevelationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/Operations/OriginationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/Operations/PreattestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/Operations/ProposalsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/Operations/RegisterConstantsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/Operations/RevealsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/Operations/SetDepositsLimitCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/Operations/TransactionsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/Operations/TransferTicketCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/Operations/TxRollupCommitCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/Operations/TxRollupDispatchTicketsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/Operations/TxRollupFinalizeCommitmentCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/Operations/TxRollupOriginationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/Operations/TxRollupRejectionCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/Operations/TxRollupRemoveCommitmentCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/Operations/TxRollupReturnBondCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/Operations/TxRollupSubmitBatchCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/Operations/VdfRevelationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/SnapshotBalanceCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/SoftwareCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/StateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/StatisticsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/SubsidyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/TokensCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Commits/VotingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Diagnostics/Diagnostics.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Helpers.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Proto14Handler.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Rpc/Rpc.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto14/Validation/Validator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Activation/ProtoActivator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Activation/patched.contracts
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/AttestationRewardCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/BakerCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/BakingRightsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/BigMapCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/BlockCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/ContractEventCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/CycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/DeactivationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/DelegatorCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/FreezerCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/Operations/ActivationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/Operations/AttestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/Operations/BallotsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/Operations/DelegationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/Operations/DoubleBakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/Operations/DoubleConsensusCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/Operations/DrainDelegateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/Operations/IncreasePaidStorageCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/Operations/NonceRevelationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/Operations/OriginationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/Operations/PreattestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/Operations/ProposalsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/Operations/RegisterConstantsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/Operations/RevealsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/Operations/SetDepositsLimitCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/Operations/TransactionsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/Operations/TransferTicketCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/Operations/TxRollupCommitCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/Operations/TxRollupDispatchTicketsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/Operations/TxRollupFinalizeCommitmentCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/Operations/TxRollupOriginationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/Operations/TxRollupRejectionCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/Operations/TxRollupRemoveCommitmentCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/Operations/TxRollupReturnBondCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/Operations/TxRollupSubmitBatchCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/Operations/UpdateSecondaryKeyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/Operations/VdfRevelationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/SnapshotBalanceCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/SoftwareCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/StateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/StatisticsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/SubsidyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/TokensCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Commits/VotingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Diagnostics/Diagnostics.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Helpers.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Proto15Handler.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Rpc/Rpc.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto15/Validation/Validator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Activation/ProtoActivator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/AttestationRewardCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/BakerCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/BakingRightsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/BigMapCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/BlockCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/ContractEventCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/CycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/DeactivationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/DelegatorCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/FreezerCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/InboxCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/ActivationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/AttestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/BallotsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/DelegationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/DoubleBakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/DoubleConsensusCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/DrainDelegateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/IncreasePaidStorageCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/NonceRevelationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/OriginationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/PreattestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/ProposalsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/RegisterConstantsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/RevealsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/SetDepositsLimitCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/SmartRollupAddMessagesCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/SmartRollupCementCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/SmartRollupExecuteCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/SmartRollupOriginateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/SmartRollupPublishCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/SmartRollupRecoverBondCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/SmartRollupRefuteCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/SmartRollupTimeoutCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/TransactionsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/TransferTicketCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/TxRollupCommitCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/TxRollupDispatchTicketsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/TxRollupFinalizeCommitmentCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/TxRollupOriginationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/TxRollupRejectionCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/TxRollupRemoveCommitmentCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/TxRollupReturnBondCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/TxRollupSubmitBatchCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/UpdateSecondaryKeyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/Operations/VdfRevelationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/SnapshotBalanceCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/SoftwareCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/StateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/StatisticsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/SubsidyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/TicketsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/TokensCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Commits/VotingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Diagnostics/Diagnostics.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Helpers.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Proto16Handler.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Rpc/Rpc.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto16/Validation/Validator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Activation/ProtoActivator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/AttestationRewardCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/BakerCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/BakingRightsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/BigMapCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/BlockCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/ContractEventCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/CycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/DeactivationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/DelegatorCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/FreezerCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/InboxCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/ActivationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/AttestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/BallotsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/DelegationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/DoubleBakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/DoubleConsensusCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/DrainDelegateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/IncreasePaidStorageCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/NonceRevelationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/OriginationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/PreattestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/ProposalsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/RegisterConstantsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/RevealsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/SetDepositsLimitCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/SmartRollupAddMessagesCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/SmartRollupCementCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/SmartRollupExecuteCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/SmartRollupOriginateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/SmartRollupPublishCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/SmartRollupRecoverBondCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/SmartRollupRefuteCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/SmartRollupTimeoutCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/TransactionsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/TransferTicketCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/TxRollupCommitCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/TxRollupDispatchTicketsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/TxRollupFinalizeCommitmentCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/TxRollupOriginationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/TxRollupRejectionCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/TxRollupRemoveCommitmentCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/TxRollupReturnBondCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/TxRollupSubmitBatchCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/UpdateSecondaryKeyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/Operations/VdfRevelationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/SnapshotBalanceCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/SoftwareCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/StateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/StatisticsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/SubsidyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/TicketsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/TokensCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Commits/VotingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Diagnostics/Diagnostics.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Helpers.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Proto17Handler.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Rpc/Rpc.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto17/Validation/Validator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Activation/ProtoActivator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/AttestationRewardCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/AutostakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/BakerCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/BakingRightsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/BigMapCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/BlockCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/ContractEventCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/CycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/DeactivationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/DelegatorCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/InboxCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/Operations/ActivationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/Operations/AttestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/Operations/BallotsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/Operations/DelegationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/Operations/DoubleBakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/Operations/DoubleConsensusCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/Operations/DrainDelegateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/Operations/IncreasePaidStorageCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/Operations/NonceRevelationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/Operations/OriginationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/Operations/PreattestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/Operations/ProposalsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/Operations/RegisterConstantsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/Operations/RevealsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/Operations/SetDelegateParametersCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/Operations/SetDepositsLimitCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/Operations/SmartRollupAddMessagesCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/Operations/SmartRollupCementCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/Operations/SmartRollupExecuteCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/Operations/SmartRollupOriginateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/Operations/SmartRollupPublishCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/Operations/SmartRollupRecoverBondCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/Operations/SmartRollupRefuteCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/Operations/SmartRollupTimeoutCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/Operations/StakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/Operations/TransactionsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/Operations/TransferTicketCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/Operations/UpdateSecondaryKeyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/Operations/VdfRevelationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/SlashingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/SnapshotBalanceCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/SoftwareCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/StakingUpdateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/StateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/StatisticsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/SubsidyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/TicketsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/TokensCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Commits/VotingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Diagnostics/Diagnostics.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Helpers.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Proto18Handler.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Rpc/Rpc.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto18/Validation/Validator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Activation/ProtoActivator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/AttestationRewardCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/AutostakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/BakerCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/BakingRightsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/BigMapCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/BlockCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/ContractEventCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/CycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/DeactivationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/DelegationSnapshotCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/DelegatorCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/InboxCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/Operations/ActivationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/Operations/AttestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/Operations/BallotsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/Operations/DalPublishCommitmentCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/Operations/DelegationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/Operations/DoubleBakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/Operations/DoubleConsensusCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/Operations/DrainDelegateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/Operations/IncreasePaidStorageCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/Operations/NonceRevelationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/Operations/OriginationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/Operations/PreattestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/Operations/ProposalsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/Operations/RegisterConstantsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/Operations/RevealsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/Operations/SetDelegateParametersCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/Operations/SetDepositsLimitCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/Operations/SmartRollupAddMessagesCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/Operations/SmartRollupCementCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/Operations/SmartRollupExecuteCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/Operations/SmartRollupOriginateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/Operations/SmartRollupPublishCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/Operations/SmartRollupRecoverBondCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/Operations/SmartRollupRefuteCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/Operations/SmartRollupTimeoutCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/Operations/StakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/Operations/TransactionsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/Operations/TransferTicketCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/Operations/UpdateSecondaryKeyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/Operations/VdfRevelationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/SlashingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/SnapshotBalanceCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/SoftwareCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/StakerCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/StakingUpdateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/StateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/StatisticsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/SubsidyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/TicketsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/TokensCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Commits/VotingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Diagnostics/Diagnostics.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Helpers.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Proto19Handler.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Rpc/Rpc.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto19/Validation/Validator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto2/Activation/ProtoActivator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto2/Commits/BakerCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto2/Commits/BakingRightsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto2/Commits/BigMapCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto2/Commits/BlockCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto2/Commits/CycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto2/Commits/DeactivationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto2/Commits/DelegatorCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto2/Commits/FreezerCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto2/Commits/Operations/ActivationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto2/Commits/Operations/AttestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto2/Commits/Operations/DelegationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto2/Commits/Operations/DoubleBakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto2/Commits/Operations/NonceRevelationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto2/Commits/Operations/OriginationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto2/Commits/Operations/RevealsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto2/Commits/Operations/TransactionsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto2/Commits/RevelationPenaltyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto2/Commits/SnapshotBalanceCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto2/Commits/StateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto2/Commits/StatisticsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto2/Commits/VotingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto2/Diagnostics/Diagnostics.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto2/Helpers.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto2/Proto2Handler.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto2/Rpc/Rpc.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto2/Validation/Validator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Activation/ProtoActivator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/AttestationRewardCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/AutostakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/BakerCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/BakingRightsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/BigMapCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/BlockCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/ContractEventCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/CycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/DeactivationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/DelegationSnapshotCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/DelegatorCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/InboxCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/Operations/ActivationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/Operations/AttestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/Operations/BallotsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/Operations/DalPublishCommitmentCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/Operations/DelegationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/Operations/DoubleBakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/Operations/DoubleConsensusCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/Operations/DrainDelegateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/Operations/IncreasePaidStorageCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/Operations/NonceRevelationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/Operations/OriginationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/Operations/PreattestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/Operations/ProposalsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/Operations/RegisterConstantsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/Operations/RevealsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/Operations/SetDelegateParametersCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/Operations/SetDepositsLimitCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/Operations/SmartRollupAddMessagesCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/Operations/SmartRollupCementCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/Operations/SmartRollupExecuteCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/Operations/SmartRollupOriginateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/Operations/SmartRollupPublishCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/Operations/SmartRollupRecoverBondCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/Operations/SmartRollupRefuteCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/Operations/SmartRollupTimeoutCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/Operations/StakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/Operations/TransactionsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/Operations/TransferTicketCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/Operations/UpdateSecondaryKeyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/Operations/VdfRevelationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/SlashingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/SnapshotBalanceCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/SoftwareCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/StakerCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/StakingUpdateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/StateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/StatisticsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/SubsidyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/TicketsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/TokensCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Commits/VotingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Diagnostics/Diagnostics.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Helpers.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Proto20Handler.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Rpc/Rpc.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto20/Validation/Validator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Activation/ProtoActivator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/AttestationRewardCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/AutostakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/BakerCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/BakingRightsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/BigMapCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/BlockCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/ContractEventCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/CycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/DeactivationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/DelegationSnapshotCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/DelegatorCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/InboxCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/Operations/ActivationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/Operations/AttestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/Operations/BallotsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/Operations/DalPublishCommitmentCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/Operations/DelegationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/Operations/DoubleBakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/Operations/DoubleConsensusCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/Operations/DrainDelegateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/Operations/IncreasePaidStorageCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/Operations/NonceRevelationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/Operations/OriginationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/Operations/PreattestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/Operations/ProposalsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/Operations/RegisterConstantsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/Operations/RevealsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/Operations/SetDelegateParametersCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/Operations/SetDepositsLimitCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/Operations/SmartRollupAddMessagesCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/Operations/SmartRollupCementCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/Operations/SmartRollupExecuteCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/Operations/SmartRollupOriginateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/Operations/SmartRollupPublishCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/Operations/SmartRollupRecoverBondCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/Operations/SmartRollupRefuteCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/Operations/SmartRollupTimeoutCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/Operations/StakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/Operations/TransactionsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/Operations/TransferTicketCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/Operations/UpdateSecondaryKeyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/Operations/VdfRevelationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/SlashingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/SnapshotBalanceCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/SoftwareCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/StakerCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/StakingUpdateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/StateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/StatisticsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/SubsidyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/TicketsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/TokensCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Commits/VotingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Diagnostics/Diagnostics.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Helpers.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Proto21Handler.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Rpc/Rpc.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto21/Validation/Validator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Activation/ProtoActivator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/AttestationRewardCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/AutostakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/BakerCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/BakingRightsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/BigMapCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/BlockCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/ContractEventCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/CycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/DalAttestationRewardCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/DeactivationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/DelegationSnapshotCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/DelegatorCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/InboxCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/Operations/ActivationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/Operations/AttestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/Operations/BallotsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/Operations/DalEntrapmentEvidenceCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/Operations/DalPublishCommitmentCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/Operations/DelegationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/Operations/DoubleBakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/Operations/DoubleConsensusCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/Operations/DrainDelegateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/Operations/IncreasePaidStorageCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/Operations/NonceRevelationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/Operations/OriginationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/Operations/PreattestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/Operations/ProposalsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/Operations/RegisterConstantsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/Operations/RevealsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/Operations/SetDelegateParametersCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/Operations/SetDepositsLimitCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/Operations/SmartRollupAddMessagesCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/Operations/SmartRollupCementCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/Operations/SmartRollupExecuteCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/Operations/SmartRollupOriginateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/Operations/SmartRollupPublishCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/Operations/SmartRollupRecoverBondCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/Operations/SmartRollupRefuteCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/Operations/SmartRollupTimeoutCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/Operations/StakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/Operations/TransactionsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/Operations/TransferTicketCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/Operations/UpdateSecondaryKeyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/Operations/VdfRevelationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/SlashingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/SnapshotBalanceCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/SoftwareCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/StakerCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/StakingUpdateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/StateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/StatisticsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/SubsidyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/TicketsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/TokensCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Commits/VotingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Diagnostics/Diagnostics.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Helpers.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Proto22Handler.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Rpc/Rpc.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto22/Validation/Validator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Activation/ProtoActivator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/AttestationRewardCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/AutostakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/BakerCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/BakingRightsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/BigMapCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/BlockCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/ContractEventCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/CycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/DalAttestationRewardCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/DeactivationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/DelegationSnapshotCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/DelegatorCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/InboxCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/ActivationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/AttestationAggregateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/AttestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/BallotsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/DalEntrapmentEvidenceCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/DalPublishCommitmentCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/DelegationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/DoubleBakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/DoubleConsensusCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/DrainDelegateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/IncreasePaidStorageCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/NonceRevelationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/OriginationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/PreattestationAggregateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/PreattestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/ProposalsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/RegisterConstantsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/RevealsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/SetDelegateParametersCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/SetDepositsLimitCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/SmartRollupAddMessagesCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/SmartRollupCementCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/SmartRollupExecuteCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/SmartRollupOriginateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/SmartRollupPublishCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/SmartRollupRecoverBondCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/SmartRollupRefuteCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/SmartRollupTimeoutCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/StakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/TransactionsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/TransferTicketCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/UpdateSecondaryKeyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/Operations/VdfRevelationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/SlashingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/SnapshotBalanceCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/SoftwareCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/StakerCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/StakingUpdateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/StateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/StatisticsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/SubsidyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/TicketsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/TokensCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Commits/VotingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Diagnostics/Diagnostics.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Helpers.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Proto23Handler.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Rpc/Rpc.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto23/Validation/Validator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Activation/ProtoActivator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/AttestationRewardCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/AutostakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/BakerCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/BakingRightsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/CycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/DalAttestationRewardCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/DeactivationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/DelegationSnapshotCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/DelegatorCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/InboxCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/Operations/ActivationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/Operations/AttestationAggregateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/Operations/AttestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/Operations/BallotsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/Operations/DalEntrapmentEvidenceCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/Operations/DalPublishCommitmentCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/Operations/DelegationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/Operations/DoubleBakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/Operations/DoubleConsensusCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/Operations/DrainDelegateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/Operations/NonceRevelationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/Operations/PreattestationAggregateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/Operations/PreattestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/Operations/ProposalsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/Operations/SetDelegateParametersCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/Operations/SetDepositsLimitCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/Operations/SmartRollupAddMessagesCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/Operations/SmartRollupCementCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/Operations/SmartRollupExecuteCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/Operations/SmartRollupOriginateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/Operations/SmartRollupPublishCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/Operations/SmartRollupRecoverBondCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/Operations/SmartRollupRefuteCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/Operations/SmartRollupTimeoutCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/Operations/StakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/Operations/UpdateSecondaryKeyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/Operations/VdfRevelationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/SlashingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/SnapshotBalanceCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/SoftwareCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/StakerCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/StakingUpdateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/SubsidyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Commits/VotingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Diagnostics/Diagnostics.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Helpers.cs
create mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/ProtoActivator.cs
create mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/ProtoMigrator.cs
create mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Rpc.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Rpc/Rpc.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Validation/Validator.cs
create mode 100644 Tzkt.Sync/Protocols/Handlers/Proto24/Validator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto3/Activation/ProtoActivator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto3/Commits/BakerCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto3/Commits/BakingRightsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto3/Commits/BigMapCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto3/Commits/BlockCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto3/Commits/CycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto3/Commits/DeactivationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto3/Commits/DelegatorCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto3/Commits/FreezerCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto3/Commits/Operations/ActivationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto3/Commits/Operations/AttestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto3/Commits/Operations/BallotsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto3/Commits/Operations/DelegationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto3/Commits/Operations/DoubleBakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto3/Commits/Operations/NonceRevelationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto3/Commits/Operations/OriginationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto3/Commits/Operations/ProposalsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto3/Commits/Operations/RevealsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto3/Commits/Operations/TransactionsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto3/Commits/RevelationPenaltyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto3/Commits/SnapshotBalanceCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto3/Commits/StateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto3/Commits/StatisticsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto3/Commits/VotingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto3/Diagnostics/Diagnostics.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto3/Helpers.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto3/Proto3Handler.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto3/Rpc/Rpc.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto3/Validation/Validator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto4/Activation/ProtoActivator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto4/Commits/BakerCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto4/Commits/BakingRightsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto4/Commits/BigMapCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto4/Commits/BlockCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto4/Commits/CycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto4/Commits/DeactivationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto4/Commits/DelegatorCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto4/Commits/FreezerCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto4/Commits/Operations/ActivationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto4/Commits/Operations/AttestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto4/Commits/Operations/BallotsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto4/Commits/Operations/DelegationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto4/Commits/Operations/DoubleBakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto4/Commits/Operations/DoubleConsensusCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto4/Commits/Operations/NonceRevelationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto4/Commits/Operations/OriginationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto4/Commits/Operations/ProposalsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto4/Commits/Operations/RevealsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto4/Commits/Operations/TransactionsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto4/Commits/RevelationPenaltyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto4/Commits/SnapshotBalanceCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto4/Commits/StateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto4/Commits/StatisticsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto4/Commits/VotingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto4/Diagnostics/Diagnostics.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto4/Helpers.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto4/Proto4Handler.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto4/Rpc/Rpc.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto4/Validation/Validator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Activation/ProtoActivator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Activation/airdropped.contracts
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Commits/BakerCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Commits/BakingRightsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Commits/BigMapCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Commits/BlockCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Commits/CycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Commits/DeactivationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Commits/DelegatorCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Commits/FreezerCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Commits/Operations/ActivationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Commits/Operations/AttestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Commits/Operations/BallotsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Commits/Operations/DelegationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Commits/Operations/DoubleBakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Commits/Operations/DoubleConsensusCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Commits/Operations/NonceRevelationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Commits/Operations/OriginationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Commits/Operations/ProposalsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Commits/Operations/RevealsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Commits/Operations/TransactionsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Commits/RevelationPenaltyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Commits/SnapshotBalanceCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Commits/SoftwareCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Commits/StateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Commits/StatisticsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Commits/TokensCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Commits/VotingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Diagnostics/Diagnostics.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Helpers.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Proto5Handler.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Rpc/Rpc.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto5/Validation/Validator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Activation/ProtoActivator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Commits/BakerCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Commits/BakingRightsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Commits/BigMapCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Commits/BlockCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Commits/CycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Commits/DeactivationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Commits/DelegatorCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Commits/FreezerCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Commits/Operations/ActivationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Commits/Operations/AttestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Commits/Operations/BallotsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Commits/Operations/DelegationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Commits/Operations/DoubleBakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Commits/Operations/DoubleConsensusCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Commits/Operations/NonceRevelationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Commits/Operations/OriginationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Commits/Operations/ProposalsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Commits/Operations/RevealsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Commits/Operations/TransactionsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Commits/RevelationPenaltyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Commits/SnapshotBalanceCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Commits/SoftwareCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Commits/StateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Commits/StatisticsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Commits/TokensCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Commits/VotingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Diagnostics/Diagnostics.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Helpers.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Proto6Handler.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Rpc/Rpc.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto6/Validation/Validator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Activation/ProtoActivator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Commits/BakerCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Commits/BakingRightsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Commits/BigMapCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Commits/BlockCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Commits/CycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Commits/DeactivationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Commits/DelegatorCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Commits/FreezerCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Commits/Operations/ActivationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Commits/Operations/AttestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Commits/Operations/BallotsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Commits/Operations/DelegationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Commits/Operations/DoubleBakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Commits/Operations/DoubleConsensusCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Commits/Operations/NonceRevelationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Commits/Operations/OriginationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Commits/Operations/ProposalsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Commits/Operations/RevealsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Commits/Operations/TransactionsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Commits/RevelationPenaltyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Commits/SnapshotBalanceCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Commits/SoftwareCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Commits/StateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Commits/StatisticsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Commits/TokensCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Commits/VotingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Diagnostics/Diagnostics.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Helpers.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Proto7Handler.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Rpc/Rpc.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto7/Validation/Validator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Activation/ProtoActivator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Commits/BakerCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Commits/BakingRightsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Commits/BigMapCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Commits/BlockCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Commits/CycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Commits/DeactivationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Commits/DelegatorCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Commits/FreezerCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Commits/Operations/ActivationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Commits/Operations/AttestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Commits/Operations/BallotsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Commits/Operations/DelegationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Commits/Operations/DoubleBakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Commits/Operations/DoubleConsensusCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Commits/Operations/NonceRevelationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Commits/Operations/OriginationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Commits/Operations/ProposalsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Commits/Operations/RevealsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Commits/Operations/TransactionsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Commits/RevelationPenaltyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Commits/SnapshotBalanceCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Commits/SoftwareCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Commits/StateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Commits/StatisticsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Commits/TokensCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Commits/VotingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Diagnostics/Diagnostics.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Helpers.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Proto8Handler.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Rpc/Rpc.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto8/Validation/Validator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Activation/ProtoActivator.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Commits/BakerCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Commits/BakingRightsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Commits/BigMapCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Commits/BlockCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Commits/CycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Commits/DeactivationCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Commits/DelegatorCycleCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Commits/FreezerCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Commits/Operations/ActivationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Commits/Operations/AttestationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Commits/Operations/BallotsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Commits/Operations/DelegationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Commits/Operations/DoubleBakingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Commits/Operations/DoubleConsensusCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Commits/Operations/NonceRevelationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Commits/Operations/OriginationsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Commits/Operations/ProposalsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Commits/Operations/RevealsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Commits/Operations/TransactionsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Commits/RevelationPenaltyCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Commits/SnapshotBalanceCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Commits/SoftwareCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Commits/StateCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Commits/StatisticsCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Commits/TokensCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Commits/VotingCommit.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Diagnostics/Diagnostics.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Helpers.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Proto9Handler.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Rpc/Rpc.cs
delete mode 100644 Tzkt.Sync/Protocols/Handlers/Proto9/Validation/Validator.cs
delete mode 100644 Tzkt.Sync/Protocols/Helpers/Blind.cs
delete mode 100644 Tzkt.Sync/Protocols/Helpers/Chains.cs
delete mode 100644 Tzkt.Sync/Protocols/Helpers/GracePeriod.cs
delete mode 100644 Tzkt.Sync/Protocols/Helpers/InboxContext.cs
delete mode 100644 Tzkt.Sync/Protocols/Helpers/OriginationNonce.cs
delete mode 100644 Tzkt.Sync/Protocols/Helpers/RightsGenerator.cs
delete mode 100644 Tzkt.Sync/Protocols/Helpers/Sampler.cs
delete mode 100644 Tzkt.Sync/Protocols/Helpers/Seed.cs
create mode 100644 Tzkt.Sync/Services/EvmNode/EvmNode.cs
create mode 100644 Tzkt.Sync/Services/EvmNode/EvmNodeConfig.cs
diff --git a/Tzkt.Api/Controllers/AccountsController.cs b/Tzkt.Api/Controllers/AccountsController.cs
index 3aef0af33..9656dcebb 100644
--- a/Tzkt.Api/Controllers/AccountsController.cs
+++ b/Tzkt.Api/Controllers/AccountsController.cs
@@ -541,7 +541,7 @@ public async Task GetBalanceReport(
[Required][Address] string address,
DateTimeOffset? from,
DateTimeOffset? to,
- string currency,
+ string? currency,
bool historical = false,
string delimiter = "comma",
string separator = "point")
diff --git a/Tzkt.Api/Models/Accounts/Ghost.cs b/Tzkt.Api/Models/Accounts/Ghost.cs
index ad811fa98..7b5b7daea 100644
--- a/Tzkt.Api/Models/Accounts/Ghost.cs
+++ b/Tzkt.Api/Models/Accounts/Ghost.cs
@@ -24,6 +24,21 @@ public class Ghost : Account
///
public string? Alias { get; set; }
+ ///
+ /// Number of all transaction (tez transfer) operations, related to the account
+ ///
+ public int NumTransactions { get; set; }
+
+ ///
+ /// Number of transfer ticket operations sent by the account
+ ///
+ public int TransferTicketCount { get; set; }
+
+ ///
+ /// Number of `increase_paid_storage` operations sent by the account
+ ///
+ public int IncreasePaidStorageCount { get; set; }
+
///
/// Number of account tokens with non-zero balances
///
diff --git a/Tzkt.Api/Program.cs b/Tzkt.Api/Program.cs
index b67088631..9fe24ecab 100644
--- a/Tzkt.Api/Program.cs
+++ b/Tzkt.Api/Program.cs
@@ -230,7 +230,7 @@
}
var state = db.AppState.Single();
- if (state.Level < 1)
+ if (state.BlocksCount < 2)
{
logger.LogWarning("No data in the database. Let's wait for the indexer to index at least two blocks, and try again.");
Thread.Sleep(3000);
diff --git a/Tzkt.Api/Repositories/AccountRepository.cs b/Tzkt.Api/Repositories/AccountRepository.cs
index 8a7c2d8db..13ce3f4db 100644
--- a/Tzkt.Api/Repositories/AccountRepository.cs
+++ b/Tzkt.Api/Repositories/AccountRepository.cs
@@ -386,6 +386,9 @@ public async Task GetCounterAsync(string address)
Id = rawAccount.Id,
Alias = rawAccount.Alias,
Address = rawAccount.Address,
+ NumTransactions = rawAccount.TransactionsCount,
+ TransferTicketCount = rawAccount.TransferTicketCount,
+ IncreasePaidStorageCount = rawAccount.IncreasePaidStorageCount,
ActiveTokensCount = rawAccount.ActiveTokensCount,
TokenBalancesCount = rawAccount.TokenBalancesCount,
TokenTransfersCount = rawAccount.TokenTransfersCount,
@@ -712,6 +715,9 @@ public async Task> Get(
Id = row.Id,
Alias = row.Alias,
Address = row.Address,
+ NumTransactions = row.TransactionsCount,
+ TransferTicketCount = row.TransferTicketCount,
+ IncreasePaidStorageCount = row.IncreasePaidStorageCount,
ActiveTokensCount = row.ActiveTokensCount,
TokenBalancesCount = row.TokenBalancesCount,
TokenTransfersCount = row.TokenTransfersCount,
@@ -2965,6 +2971,31 @@ await Task.WhenAll(
result.AddRange(smartRollupSrRecoverBondOps.Result);
result.AddRange(smartRollupSrRefuteOps.Result);
+ break;
+ case RawAccount ghost:
+ var _ghost = new AccountParameter { Eq = ghost.Id };
+
+ var ghostTransactions = ghost.TransactionsCount > 0 && types.Contains(ActivityTypes.Transaction)
+ ? Operations.GetTransactions(null, new AnyOfParameter { Fields = ["initiator", "sender", "target"], Eq = ghost.Id }, initiator, sender, target, null, null, level, timestamp, null, null, null, entrypoint, parameter, hasInternals, status, sort, offset, limit, format, quote)
+ : Task.FromResult(Enumerable.Empty());
+
+ var ghostTransferTicketOps = ghost.TransferTicketCount > 0 && types.Contains(ActivityTypes.TransferTicket)
+ ? Operations.GetTransferTicketOps(null, null, _ghost, null, null, null, level, timestamp, status, sort, offset, limit, format, quote)
+ : Task.FromResult(Enumerable.Empty());
+
+ var ghostIncreasePaidStorageOps = ghost.IncreasePaidStorageCount > 0 && types.Contains(ActivityTypes.IncreasePaidStorage)
+ ? Operations.GetIncreasePaidStorageOps(null, _ghost, null, level, timestamp, status, sort, offset, limit, quote)
+ : Task.FromResult(Enumerable.Empty());
+
+ await Task.WhenAll(
+ ghostTransactions,
+ ghostTransferTicketOps,
+ ghostIncreasePaidStorageOps);
+
+ result.AddRange(ghostTransactions.Result);
+ result.AddRange(ghostTransferTicketOps.Result);
+ result.AddRange(ghostIncreasePaidStorageOps.Result);
+
break;
default:
break;
diff --git a/Tzkt.Api/Repositories/BalanceHistoryRepository.cs b/Tzkt.Api/Repositories/BalanceHistoryRepository.cs
index 3daea5eeb..d2647df9b 100644
--- a/Tzkt.Api/Repositories/BalanceHistoryRepository.cs
+++ b/Tzkt.Api/Repositories/BalanceHistoryRepository.cs
@@ -289,19 +289,19 @@ string SumUnion(RawAccount account, int from, int to)
if (user.StakingUpdatesCount > 0) SumStakingUpdates(union, from, to);
}
- if (account is RawDelegate delegat)
- {
- if (delegat.AttestationRewardsCount > 0) SumAttestationRewards(union, from, to);
- if (delegat.DalAttestationRewardsCount > 0) SumDalAttestationRewards(union, from, to);
- if (delegat.BlocksCount > 0) SumBaking(union, from, to);
- if (delegat.AttestationsCount > 0) SumAttestations(union, from, to);
- if (delegat.DoubleBakingCount > 0) SumDoubleBaking(union, from, to);
- if (delegat.DoubleConsensusCount > 0) SumDoubleConsensus(union, from, to);
- if (delegat.NonceRevelationsCount > 0) SumNonceRevelations(union, from, to);
- if (delegat.VdfRevelationsCount > 0) SumVdfRevelations(union, from, to);
- if (delegat.RevelationPenaltiesCount > 0) SumRevelationPenalties(union, from, to);
- if (delegat.UpdateSecondaryKeyCount > 0) SumUpdateSecondaryKeyOps(union, from, to);
- }
+ //if (account is RawDelegate delegat)
+ //{
+ // if (delegat.AttestationRewardsCount > 0) SumAttestationRewards(union, from, to);
+ // if (delegat.DalAttestationRewardsCount > 0) SumDalAttestationRewards(union, from, to);
+ // if (delegat.BlocksCount > 0) SumBaking(union, from, to);
+ // if (delegat.AttestationsCount > 0) SumAttestations(union, from, to);
+ // if (delegat.DoubleBakingCount > 0) SumDoubleBaking(union, from, to);
+ // if (delegat.DoubleConsensusCount > 0) SumDoubleConsensus(union, from, to);
+ // if (delegat.NonceRevelationsCount > 0) SumNonceRevelations(union, from, to);
+ // if (delegat.VdfRevelationsCount > 0) SumVdfRevelations(union, from, to);
+ // if (delegat.RevelationPenaltiesCount > 0) SumRevelationPenalties(union, from, to);
+ // if (delegat.UpdateSecondaryKeyCount > 0) SumUpdateSecondaryKeyOps(union, from, to);
+ //}
return union.ToString();
}
@@ -1250,19 +1250,19 @@ string SelectUnion(RawAccount account)
if (user.StakingUpdatesCount > 0) UnionStakingUpdates(union);
}
- if (account is RawDelegate delegat)
- {
- if (delegat.AttestationRewardsCount > 0) UnionAttestationRewards(union);
- if (delegat.DalAttestationRewardsCount > 0) UnionDalAttestationRewards(union);
- if (delegat.BlocksCount > 0) UnionBaking(union);
- if (delegat.AttestationsCount > 0) UnionAttestations(union);
- if (delegat.DoubleBakingCount > 0) UnionDoubleBaking(union);
- if (delegat.DoubleConsensusCount > 0) UnionDoubleConsensus(union);
- if (delegat.NonceRevelationsCount > 0) UnionNonceRevelations(union);
- if (delegat.VdfRevelationsCount > 0) UnionVdfRevelations(union);
- if (delegat.RevelationPenaltiesCount > 0) UnionRevelationPenalties(union);
- if (delegat.UpdateSecondaryKeyCount > 0) UnionUpdateSecondaryKeyOps(union);
- }
+ //if (account is RawDelegate delegat)
+ //{
+ // if (delegat.AttestationRewardsCount > 0) UnionAttestationRewards(union);
+ // if (delegat.DalAttestationRewardsCount > 0) UnionDalAttestationRewards(union);
+ // if (delegat.BlocksCount > 0) UnionBaking(union);
+ // if (delegat.AttestationsCount > 0) UnionAttestations(union);
+ // if (delegat.DoubleBakingCount > 0) UnionDoubleBaking(union);
+ // if (delegat.DoubleConsensusCount > 0) UnionDoubleConsensus(union);
+ // if (delegat.NonceRevelationsCount > 0) UnionNonceRevelations(union);
+ // if (delegat.VdfRevelationsCount > 0) UnionVdfRevelations(union);
+ // if (delegat.RevelationPenaltiesCount > 0) UnionRevelationPenalties(union);
+ // if (delegat.UpdateSecondaryKeyCount > 0) UnionUpdateSecondaryKeyOps(union);
+ //}
return union.ToString();
}
diff --git a/Tzkt.Api/Repositories/OperationRepository.Baking.cs b/Tzkt.Api/Repositories/OperationRepository.Baking.cs
index 5fb5bd22a..4cf13f5ca 100644
--- a/Tzkt.Api/Repositories/OperationRepository.Baking.cs
+++ b/Tzkt.Api/Repositories/OperationRepository.Baking.cs
@@ -50,7 +50,7 @@ public async Task GetBakingsCount(
BonusStakedOwn = row.BonusStakedOwn,
BonusStakedEdge = row.BonusStakedEdge,
BonusStakedShared = row.BonusStakedShared,
- Fees = row.Fees,
+ Fees = 0,//row.Fees,
Quote = Quotes.Get(quote, row.Level)
};
}
@@ -139,7 +139,7 @@ public async Task> GetBakings(
BonusStakedOwn = row.BonusStakedOwn,
BonusStakedEdge = row.BonusStakedEdge,
BonusStakedShared = row.BonusStakedShared,
- Fees = row.Fees,
+ Fees = 0,//row.Fees,
Quote = Quotes.Get(quote, row.Level)
});
}
@@ -278,7 +278,7 @@ public async Task> GetBakings(
break;
case "fees":
foreach (var row in rows)
- result[j++][i] = row.Fees;
+ result[j++][i] = 0;// row.Fees;
break;
case "quote":
foreach (var row in rows)
@@ -419,7 +419,7 @@ public async Task> GetBakings(
break;
case "fees":
foreach (var row in rows)
- result[j++] = row.Fees;
+ result[j++] = 0;// row.Fees;
break;
case "quote":
foreach (var row in rows)
diff --git a/Tzkt.Api/Repositories/ReportRepository.cs b/Tzkt.Api/Repositories/ReportRepository.cs
index 4d51c4305..0141ed5af 100644
--- a/Tzkt.Api/Repositories/ReportRepository.cs
+++ b/Tzkt.Api/Repositories/ReportRepository.cs
@@ -70,19 +70,19 @@ public async Task Write(StreamWriter csv, string address, DateTime from, DateTim
if (user.StakingUpdatesCount > 0) UnionStakingUpdates(sql);
}
- if (account is RawDelegate delegat)
- {
- if (delegat.AttestationRewardsCount > 0) UnionAttestationRewards(sql);
- if (delegat.DalAttestationRewardsCount > 0) UnionDalAttestationRewards(sql);
- if (delegat.BlocksCount > 0) UnionBaking(sql);
- if (delegat.AttestationsCount > 0) UnionAttestations(sql);
- if (delegat.DoubleBakingCount > 0) UnionDoubleBaking(sql);
- if (delegat.DoubleConsensusCount > 0) UnionDoubleConsensus(sql);
- if (delegat.NonceRevelationsCount > 0) UnionNonceRevelations(sql);
- if (delegat.VdfRevelationsCount > 0) UnionVdfRevelations(sql);
- if (delegat.RevelationPenaltiesCount > 0) UnionRevelationPenalties(sql);
- if (delegat.UpdateSecondaryKeyCount > 0) UnionUpdateSecondaryKeyOps(sql);
- }
+ //if (account is RawDelegate delegat)
+ //{
+ // if (delegat.AttestationRewardsCount > 0) UnionAttestationRewards(sql);
+ // if (delegat.DalAttestationRewardsCount > 0) UnionDalAttestationRewards(sql);
+ // if (delegat.BlocksCount > 0) UnionBaking(sql);
+ // if (delegat.AttestationsCount > 0) UnionAttestations(sql);
+ // if (delegat.DoubleBakingCount > 0) UnionDoubleBaking(sql);
+ // if (delegat.DoubleConsensusCount > 0) UnionDoubleConsensus(sql);
+ // if (delegat.NonceRevelationsCount > 0) UnionNonceRevelations(sql);
+ // if (delegat.VdfRevelationsCount > 0) UnionVdfRevelations(sql);
+ // if (delegat.RevelationPenaltiesCount > 0) UnionRevelationPenalties(sql);
+ // if (delegat.UpdateSecondaryKeyCount > 0) UnionUpdateSecondaryKeyOps(sql);
+ //}
if (sql.Length == 0) return;
@@ -206,19 +206,19 @@ public async Task Write(StreamWriter csv, string address, DateTime from, DateTim
if (user.StakingUpdatesCount > 0) UnionStakingUpdates(sql);
}
- if (account is RawDelegate delegat)
- {
- if (delegat.AttestationRewardsCount > 0) UnionAttestationRewards(sql);
- if (delegat.DalAttestationRewardsCount > 0) UnionDalAttestationRewards(sql);
- if (delegat.BlocksCount > 0) UnionBaking(sql);
- if (delegat.AttestationsCount > 0) UnionAttestations(sql);
- if (delegat.DoubleBakingCount > 0) UnionDoubleBaking(sql);
- if (delegat.DoubleConsensusCount > 0) UnionDoubleConsensus(sql);
- if (delegat.NonceRevelationsCount > 0) UnionNonceRevelations(sql);
- if (delegat.VdfRevelationsCount > 0) UnionVdfRevelations(sql);
- if (delegat.RevelationPenaltiesCount > 0) UnionRevelationPenalties(sql);
- if (delegat.UpdateSecondaryKeyCount > 0) UnionUpdateSecondaryKeyOps(sql);
- }
+ //if (account is RawDelegate delegat)
+ //{
+ // if (delegat.AttestationRewardsCount > 0) UnionAttestationRewards(sql);
+ // if (delegat.DalAttestationRewardsCount > 0) UnionDalAttestationRewards(sql);
+ // if (delegat.BlocksCount > 0) UnionBaking(sql);
+ // if (delegat.AttestationsCount > 0) UnionAttestations(sql);
+ // if (delegat.DoubleBakingCount > 0) UnionDoubleBaking(sql);
+ // if (delegat.DoubleConsensusCount > 0) UnionDoubleConsensus(sql);
+ // if (delegat.NonceRevelationsCount > 0) UnionNonceRevelations(sql);
+ // if (delegat.VdfRevelationsCount > 0) UnionVdfRevelations(sql);
+ // if (delegat.RevelationPenaltiesCount > 0) UnionRevelationPenalties(sql);
+ // if (delegat.UpdateSecondaryKeyCount > 0) UnionUpdateSecondaryKeyOps(sql);
+ //}
if (sql.Length == 0) return;
@@ -376,19 +376,19 @@ public async Task WriteHistorical(StreamWriter csv, string address, DateTime fro
if (user.StakingUpdatesCount > 0) UnionStakingUpdates(sql);
}
- if (account is RawDelegate delegat)
- {
- if (delegat.AttestationRewardsCount > 0) UnionAttestationRewards(sql);
- if (delegat.DalAttestationRewardsCount > 0) UnionDalAttestationRewards(sql);
- if (delegat.BlocksCount > 0) UnionBaking(sql);
- if (delegat.AttestationsCount > 0) UnionAttestations(sql);
- if (delegat.DoubleBakingCount > 0) UnionDoubleBaking(sql);
- if (delegat.DoubleConsensusCount > 0) UnionDoubleConsensus(sql);
- if (delegat.NonceRevelationsCount > 0) UnionNonceRevelations(sql);
- if (delegat.VdfRevelationsCount > 0) UnionVdfRevelations(sql);
- if (delegat.RevelationPenaltiesCount > 0) UnionRevelationPenalties(sql);
- if (delegat.UpdateSecondaryKeyCount > 0) UnionUpdateSecondaryKeyOps(sql);
- }
+ //if (account is RawDelegate delegat)
+ //{
+ // if (delegat.AttestationRewardsCount > 0) UnionAttestationRewards(sql);
+ // if (delegat.DalAttestationRewardsCount > 0) UnionDalAttestationRewards(sql);
+ // if (delegat.BlocksCount > 0) UnionBaking(sql);
+ // if (delegat.AttestationsCount > 0) UnionAttestations(sql);
+ // if (delegat.DoubleBakingCount > 0) UnionDoubleBaking(sql);
+ // if (delegat.DoubleConsensusCount > 0) UnionDoubleConsensus(sql);
+ // if (delegat.NonceRevelationsCount > 0) UnionNonceRevelations(sql);
+ // if (delegat.VdfRevelationsCount > 0) UnionVdfRevelations(sql);
+ // if (delegat.RevelationPenaltiesCount > 0) UnionRevelationPenalties(sql);
+ // if (delegat.UpdateSecondaryKeyCount > 0) UnionUpdateSecondaryKeyOps(sql);
+ //}
if (sql.Length == 0) return;
diff --git a/Tzkt.Api/Services/Home/HomeService.cs b/Tzkt.Api/Services/Home/HomeService.cs
index 49064e321..058f94dae 100644
--- a/Tzkt.Api/Services/Home/HomeService.cs
+++ b/Tzkt.Api/Services/Home/HomeService.cs
@@ -1,6 +1,5 @@
using System.Data;
using Dapper;
-using Dynamic.Json;
using Npgsql;
using Tzkt.Api.Models;
using Tzkt.Api.Repositories;
@@ -330,23 +329,16 @@ async Task GetDailyData(IDbConnection db)
CycleData GetCycleData()
{
- var state = State.Current;
- var cycle = state.Cycle;
- var level = state.Level;
- var cycleSize = Protocols.FindByCycle(cycle).BlocksPerCycle;
- var firstLevel = Protocols.FindByCycle(cycle).GetCycleStart(cycle);
- var lastLevel = Protocols.FindByCycle(cycle).GetCycleEnd(cycle);
-
return new CycleData
{
- Cycle = cycle,
- Level = level,
- Timestamp = state.Timestamp,
- FirstLevel = firstLevel,
- StartTime = Times[firstLevel],
- LastLevel = lastLevel,
- EndTime = Times[lastLevel],
- Progress = Math.Round(100.0 * (level - firstLevel + 1) / cycleSize, 2)
+ Cycle = State.Current.Cycle,
+ Level = State.Current.Level,
+ Timestamp = State.Current.Timestamp,
+ FirstLevel = 0,
+ StartTime = DateTimeOffset.MinValue.UtcDateTime,
+ LastLevel = 0,
+ EndTime = DateTimeOffset.MinValue.UtcDateTime,
+ Progress = 0
};
}
@@ -516,78 +508,30 @@ SELECT SUM(""BakerFee"")::bigint AS fee, 0::bigint AS burn FROM ""UpdateSecondar
async Task GetStakingData(IDbConnection db, long totalSupply)
{
- var protocol = Protocols.Current;
-
- var total = await db.QueryFirstAsync($"""
- SELECT COUNT(*)::integer as "ActiveBakers",
- COALESCE(SUM("OwnStakedBalance"), 0)::bigint AS "OwnStaked",
- COALESCE(SUM("ExternalStakedBalance"), 0)::bigint AS "ExternalStaked",
- COALESCE(SUM("OwnDelegatedBalance"), 0)::bigint AS "OwnDelegated",
- COALESCE(SUM("ExternalDelegatedBalance"), 0)::bigint AS "ExternalDelegated",
- COALESCE(SUM("BakingPower"), 0)::bigint AS "BakingPower",
- COALESCE(SUM("VotingPower"), 0)::bigint AS "VotingPower"
- FROM "Accounts"
- WHERE "Type" = 1
- AND "Staked" = true
- """);
-
- var funded = await db.ExecuteScalarAsync("""
- SELECT COUNT(*)
- FROM "Accounts"
- WHERE "Type" = 1
- AND "Staked" = true
- AND "BakingPower" != 0
- """);
-
- var futureCycle = await db.QueryFirstAsync("""
- SELECT *
- FROM "Cycles"
- ORDER BY "Index" DESC
- LIMIT 1
- """);
-
- var lbSubsidyPerBlock = 5_000_000 * protocol.TimeBetweenBlocks / 60;
-
- var maxRewardsPerBlock = futureCycle.BlockReward
- + futureCycle.BlockBonusPerBlock
- + futureCycle.AttestationRewardPerBlock
- + futureCycle.DalAttestationRewardPerShard * protocol.NumberOfShards
- + futureCycle.NonceRevelationReward / protocol.BlocksPerCommitment
- + futureCycle.VdfRevelationReward / protocol.BlocksPerCycle;
-
- var blocksPerYear = 365 * 24 * 60 * 60 / protocol.TimeBetweenBlocks;
- var totalRewardsPerYear = maxRewardsPerBlock * blocksPerYear;
- var totalCreatedPerYear = (maxRewardsPerBlock + lbSubsidyPerBlock) * blocksPerYear;
-
- var totalStaked = (long)total.OwnStaked + (long)total.ExternalStaked;
- var totalDelegated = (long)total.OwnDelegated + (long)total.ExternalDelegated;
- var totalBakingPower = totalStaked + totalDelegated / protocol.StakePowerMultiplier;
- var totalStaking = totalStaked + totalDelegated;
-
return new StakingData
{
- TotalStaking = totalStaking,
- StakingPercentage = Math.Round(100.0 * totalStaking / totalSupply, 2),
- AvgRoi = Math.Round(100.0 * totalRewardsPerYear / totalStaking, 2),
- Inflation = Math.Round(100.0 * totalCreatedPerYear / totalSupply, 2),
- Bakers = total.ActiveBakers,
- FundedBakers = funded,
- OwnStaked = total.OwnStaked,
- OwnStakedPercentage = Math.Round(100.0 * total.OwnStaked / totalSupply, 2),
- ExternalStaked = total.ExternalStaked,
- ExternalStakedPercentage = Math.Round(100.0 * total.ExternalStaked / totalSupply, 2),
- TotalStaked = totalStaked,
- TotalStakedPercentage = Math.Round(100.0 * totalStaked / totalSupply, 2),
- OwnDelegated = total.OwnDelegated,
- OwnDelegatedPercentage = Math.Round(100.0 * total.OwnDelegated / totalSupply, 2),
- ExternalDelegated = total.ExternalDelegated,
- ExternalDelegatedPercentage = Math.Round(100.0 * total.ExternalDelegated / totalSupply, 2),
- TotalDelegated = totalDelegated,
- TotalDelegatedPercentage = Math.Round(100.0 * totalDelegated / totalSupply, 2),
- StakingApy = Math.Round(100.0 * totalRewardsPerYear / totalBakingPower, 2),
- DelegationApy = Math.Round(100.0 * totalRewardsPerYear / totalBakingPower, 2) / protocol.StakePowerMultiplier,
- TotalBakingPower = total.BakingPower,
- TotalVotingPower = total.VotingPower
+ TotalStaking = 0,
+ StakingPercentage = 0,
+ AvgRoi = 0,
+ Inflation = 0,
+ Bakers = 0,
+ FundedBakers = 0,
+ OwnStaked = 0,
+ OwnStakedPercentage = 0,
+ ExternalStaked = 0,
+ ExternalStakedPercentage = 0,
+ TotalStaked = 0,
+ TotalStakedPercentage = 0,
+ OwnDelegated = 0,
+ OwnDelegatedPercentage = 0,
+ ExternalDelegated = 0,
+ ExternalDelegatedPercentage = 0,
+ TotalDelegated = 0,
+ TotalDelegatedPercentage = 0,
+ StakingApy = 0,
+ DelegationApy = 0,
+ TotalBakingPower = 0,
+ TotalVotingPower = 0
};
}
@@ -629,62 +573,17 @@ SELECT COUNT(*)::integer
async Task GetGovernanceData()
{
- var epoch = (await VotingRepo.GetEpoch(State.Current.VotingEpoch))!;
- var period = epoch.Periods.Last();
- var proposals = epoch.Proposals.OrderByDescending(x => x.VotingPower).ToList();
- var proposal = proposals.FirstOrDefault();
- var proposalExtras = proposal?.Extras == null ? null : DJson.Parse(proposal.Extras);
-
- if (period.Kind == PeriodKinds.Proposal)
+ return new GovernanceData
{
- return new GovernanceData
- {
- Epoch = period.Epoch,
- Period = period.Kind,
- Protocol = proposals.Any() ? null : State.Current.Protocol,
- Proposals = proposals.Select(x => new ProposalData
- {
- Hash = x.Hash,
- Extras = x.Extras,
- VotingPower = x.VotingPower,
- VotingPowerPercentage = Math.Round(100.0 * x.VotingPower / period.TotalVotingPower, 2)
- }).ToList(),
- UpvotesQuorum = period.UpvotesQuorum,
- PeriodEndTime = period.EndTime,
- EpochStartTime = Times[epoch.FirstLevel],
- EpochEndTime = Times[epoch.FirstLevel + (Protocols.Current.BlocksPerVoting * 5)],
- };
- }
-
- var result = new GovernanceData
- {
- Epoch = period.Epoch,
- Proposal = proposal!.Hash,
- Protocol = proposalExtras?.alias,
- Period = period.Kind,
- PeriodEndTime = period.EndTime,
- EpochStartTime = Times[epoch.FirstLevel],
- EpochEndTime = Times[epoch.FirstLevel + (Protocols.Current.BlocksPerVoting * 5)],
+ Epoch = 0,
+ Period = "proposal",
+ Protocol = State.Current.Protocol,
+ Proposals = [],
+ UpvotesQuorum = 0,
+ PeriodEndTime = DateTimeOffset.MaxValue.UtcDateTime,
+ EpochStartTime = DateTimeOffset.MinValue.UtcDateTime,
+ EpochEndTime = DateTimeOffset.MaxValue.UtcDateTime,
};
-
- if (period.Kind is PeriodKinds.Exploration or PeriodKinds.Promotion)
- {
- var yayNaySum = (long)period.YayVotingPower! + (long)period.NayVotingPower!;
- var totalVoted = yayNaySum + (long)period.PassVotingPower!;
-
- result.YayVotes = yayNaySum > 0
- ? Math.Round(100.0 * (long)period.YayVotingPower / yayNaySum, 2)
- : 0;
-
- result.Participation = period.TotalVotingPower > 0
- ? Math.Round(100.0 * totalVoted / period.TotalVotingPower, 2)
- : 0;
-
- result.BallotsQuorum = Math.Round((double)period.BallotsQuorum!, 2);
- result.Supermajority = Math.Round((double)period.Supermajority!, 2);
- }
-
- return result;
}
#endregion
diff --git a/Tzkt.Sync.Tests/Indexer/Indexer.cs b/Tzkt.Sync.Tests/Indexer/Indexer.cs
index f93c02a02..7514bead8 100644
--- a/Tzkt.Sync.Tests/Indexer/Indexer.cs
+++ b/Tzkt.Sync.Tests/Indexer/Indexer.cs
@@ -23,7 +23,7 @@ public static async Task RunAsync(IHost app, CancellationToken ct)
logger.LogInformation("Applying {level} of {total}", state.Level + 1, head);
using var scope = app.Services.CreateScope();
- var protocol = scope.ServiceProvider.GetProtocolHandler(state.Level + 1, state.NextProtocol);
+ var protocol = scope.ServiceProvider.GetNextBlockHandler(state);
state = await protocol.CommitNextBlock();
}
diff --git a/Tzkt.Sync/Extensions/JsonElementExtension.cs b/Tzkt.Sync/Extensions/JsonElementExtension.cs
index 56ff722bd..ed98e83b8 100644
--- a/Tzkt.Sync/Extensions/JsonElementExtension.cs
+++ b/Tzkt.Sync/Extensions/JsonElementExtension.cs
@@ -63,6 +63,15 @@ public static string RequiredString(this JsonElement el, string name)
: throw new SerializationException($"Missed required string {name}");
}
+ public static string? OptionalString(this JsonElement el)
+ {
+ if (el.ValueKind == JsonValueKind.Null)
+ return null;
+
+ return el.ValueKind == JsonValueKind.String ? el.GetString()
+ : throw new SerializationException($"Expected string but got {el.ValueKind}");
+ }
+
public static string? OptionalString(this JsonElement el, string name)
{
if (!el.TryGetProperty(name, out var res) || res.ValueKind == JsonValueKind.Null)
diff --git a/Tzkt.Sync/Program.cs b/Tzkt.Sync/Program.cs
index acd28f359..11a81bf17 100644
--- a/Tzkt.Sync/Program.cs
+++ b/Tzkt.Sync/Program.cs
@@ -29,6 +29,7 @@
options.UseNpgsql(builder.Configuration.GetConnectionString("DefaultConnection")));
builder.Services.AddCache(builder.Configuration);
+builder.Services.AddEvmNode();
builder.Services.AddTezosNode();
builder.Services.AddTezosProtocols();
builder.Services.AddQuotes(builder.Configuration);
@@ -111,6 +112,37 @@
}
logger.LogInformation("Database initialized");
+
+ logger.LogInformation("Initialize state...");
+
+ var state = await db.AppState.AsNoTracking().SingleAsync();
+ if (state.ChainId == string.Empty)
+ {
+ var evmNode = scope.ServiceProvider.GetRequiredService();
+ var tezNode = scope.ServiceProvider.GetRequiredService();
+
+ var tezActivationLevel = 0;
+ try { tezActivationLevel = await evmNode.PostAsync("tez_getMichelsonActivationLevel"); }
+ catch { }
+
+ try
+ {
+ var genesis = await tezNode.GetAsync($"chains/main/blocks/{tezActivationLevel}");
+
+ db.TryAttach(state);
+ state.ChainId = genesis.RequiredString("chain_id");
+ state.NextProtocol = genesis.RequiredString("protocol");
+ state.Level = genesis.Required("header").RequiredInt32("level") - 1;
+ state.QuoteLevel = genesis.Required("header").RequiredInt32("level") - 1;
+ await db.SaveChangesAsync();
+ }
+ catch (Exception ex)
+ {
+ throw new Exception("Failed to init genesis", ex);
+ }
+ }
+
+ logger.LogInformation("State initialized");
break;
}
catch (Exception ex)
diff --git a/Tzkt.Sync/Protocols/Abstract/IActivator.cs b/Tzkt.Sync/Protocols/Abstract/IActivator.cs
new file mode 100644
index 000000000..6856d46ac
--- /dev/null
+++ b/Tzkt.Sync/Protocols/Abstract/IActivator.cs
@@ -0,0 +1,12 @@
+using System.Text.Json;
+using Tzkt.Data.Models;
+
+namespace Tzkt.Sync.Protocols
+{
+ public interface IActivator
+ {
+ Task ActivateContext(AppState state, JsonElement block);
+
+ Task DeactivateContext(AppState state);
+ }
+}
diff --git a/Tzkt.Sync/Protocols/Abstract/IDiagnostics.cs b/Tzkt.Sync/Protocols/Abstract/IDiagnostics.cs
deleted file mode 100644
index 2d6c2bfd4..000000000
--- a/Tzkt.Sync/Protocols/Abstract/IDiagnostics.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using System.Text.Json;
-
-namespace Tzkt.Sync.Protocols
-{
- public interface IDiagnostics
- {
- void TrackChanges();
- Task Run(JsonElement block);
- Task Run(int level);
- }
-}
diff --git a/Tzkt.Sync/Protocols/Abstract/IHelpers.cs b/Tzkt.Sync/Protocols/Abstract/IHelpers.cs
deleted file mode 100644
index 35f89de10..000000000
--- a/Tzkt.Sync/Protocols/Abstract/IHelpers.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-namespace Tzkt.Sync.Protocols
-{
- public interface IHelpers
- {
- long BakingPower(Data.Models.Delegate baker);
- long VotingPower(Data.Models.Delegate baker);
- }
-}
diff --git a/Tzkt.Sync/Protocols/Abstract/IMigrator.cs b/Tzkt.Sync/Protocols/Abstract/IMigrator.cs
new file mode 100644
index 000000000..7311576bb
--- /dev/null
+++ b/Tzkt.Sync/Protocols/Abstract/IMigrator.cs
@@ -0,0 +1,11 @@
+using Tzkt.Data.Models;
+
+namespace Tzkt.Sync.Protocols
+{
+ public interface IMigrator
+ {
+ Task MigrateContext(AppState state);
+
+ Task RevertContext(AppState state);
+ }
+}
diff --git a/Tzkt.Sync/Protocols/Abstract/IRpc.cs b/Tzkt.Sync/Protocols/Abstract/IRpc.cs
index a284ef9aa..b51861e9d 100644
--- a/Tzkt.Sync/Protocols/Abstract/IRpc.cs
+++ b/Tzkt.Sync/Protocols/Abstract/IRpc.cs
@@ -6,28 +6,10 @@ public interface IRpc
{
#region indexer
Task GetBlockAsync(int level);
- Task GetBakingRightsAsync(int block, int cycle);
- Task GetAttestationRightsAsync(int block, int cycle);
- Task GetLevelBakingRightsAsync(int block, int level, int maxRound);
- Task GetLevelAttestationRightsAsync(int block, int level);
Task GetContractAsync(int level, string address);
- Task GetDelegateAsync(int level, string address);
- Task GetExpectedIssuance(int level);
- Task GetSmartRollupGenesisInfo(int level, string address);
- Task GetUnstakeRequests(int level, string address);
- Task GetContractRawAsync(int level, string address);
- #endregion
-
- #region diagnostics
- Task GetGlobalCounterAsync(int level);
- Task GetDelegatesAsync(int level);
- Task GetActiveDelegatesAsync(int level);
- Task GetDelegateParticipationAsync(int level, string address);
- Task GetDelegateDalParticipationAsync(int level, string address);
- Task GetCycleAsync(int level, int cycle);
- Task GetTicketBalance(int level, string address, string ticket);
- Task GetCurrentStakingBalance(int level, string address);
- Task GetStakingParameters(int level, string address);
+ Task GetContractManagerKeyAsync(int level, string address);
+ Task GetConstantsAsync(int level);
+ Task GetContractsAsync(int level);
#endregion
}
}
diff --git a/Tzkt.Sync/Protocols/Handlers/Genesis/Diagnostics/Diagnostics.cs b/Tzkt.Sync/Protocols/Handlers/Genesis/Diagnostics/Diagnostics.cs
deleted file mode 100644
index 0c968e368..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Genesis/Diagnostics/Diagnostics.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using System.Text.Json;
-
-namespace Tzkt.Sync.Protocols.Genesis
-{
- class Diagnostics : IDiagnostics
- {
- public void TrackChanges() { }
- public Task Run(JsonElement block) => Task.CompletedTask;
- public Task Run(int level) => Task.CompletedTask;
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Genesis/GenesisHandler.cs b/Tzkt.Sync/Protocols/Handlers/Genesis/GenesisHandler.cs
deleted file mode 100644
index dc6fb9f00..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Genesis/GenesisHandler.cs
+++ /dev/null
@@ -1,120 +0,0 @@
-using System.Text.Json;
-using Microsoft.EntityFrameworkCore;
-using App.Metrics;
-using Tzkt.Data;
-using Tzkt.Data.Models;
-using Tzkt.Sync.Services;
-using Tzkt.Sync.Protocols.Genesis;
-
-namespace Tzkt.Sync.Protocols
-{
- class GenesisHandler : ProtocolHandler
- {
- public override IDiagnostics Diagnostics { get; }
- public override IHelpers Helpers { get; }
- public override IValidator Validator { get; }
- public override IRpc Rpc { get; }
- public override string VersionName => "genesis";
- public override int VersionNumber => -1;
-
- public GenesisHandler(TezosNode node, TzktContext db, CacheService cache, QuotesService quotes, IServiceProvider services, IConfiguration config, ILogger logger, IMetrics metrics)
- : base(node, db, cache, quotes, services, config, logger, metrics)
- {
- Diagnostics = new Diagnostics();
- Validator = new Validator(this);
- Helpers = new Helpers();
- Rpc = new Rpc(node);
- }
-
- public override Task WarmUpCache(JsonElement block) => Task.CompletedTask;
-
- public override Task Commit(JsonElement rawBlock)
- {
- #region add protocol
- var protocol = new Protocol
- {
- Id = 0,
- Hash = rawBlock.RequiredString("protocol"),
- Code = -1,
- Version = VersionNumber,
- FirstLevel = 0,
- LastLevel = 0,
- FirstCycle = 0,
- FirstCycleLevel = 1
- };
- Db.Protocols.Add(protocol);
- Cache.Protocols.Add(protocol);
- #endregion
-
- #region add block
- var block = new Block
- {
- Id = Cache.AppState.NextOperationId(),
- Hash = rawBlock.RequiredString("hash"),
- Cycle = -1,
- Level = rawBlock.Required("header").RequiredInt32("level"),
- ProtoCode = protocol.Code,
- Timestamp = rawBlock.Required("header").RequiredDateTime("timestamp"),
- Events = BlockEvents.ProtocolBegin | BlockEvents.ProtocolEnd
- };
- Db.Blocks.Add(block);
- Cache.Blocks.Add(block);
- #endregion
-
- #region add empty stats
- var stats = new Statistics
- {
- Id = 0,
- Level = block.Level
- };
- Db.Statistics.Add(stats);
- Cache.Statistics.SetCurrent(stats);
- #endregion
-
- #region update state
- var state = Cache.AppState.Get();
- state.ChainId = rawBlock.RequiredString("chain_id");
- state.Chain = Chains.GetName(state.ChainId);
- state.Cycle = -1;
- state.Level = block.Level;
- state.Timestamp = block.Timestamp;
- state.Protocol = protocol.Hash;
- state.NextProtocol = rawBlock.Required("metadata").RequiredString("next_protocol");
- state.Hash = block.Hash;
- state.BlocksCount++;
- state.ProtocolsCount++;
- #endregion
-
- return Task.CompletedTask;
- }
-
- public override async Task Revert()
- {
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "Statistics";
- DELETE FROM "Protocols";
- DELETE FROM "Blocks";
- """);
-
- await Cache.Statistics.ResetAsync();
- await Cache.Protocols.ResetAsync();
- Cache.Blocks.Reset();
-
- #region update state
- var state = Cache.AppState.Get();
- state.ChainId = string.Empty;
- state.Chain = string.Empty;
- state.Cycle = -1;
- state.Level = -1;
- state.Timestamp = DateTimeOffset.MinValue.UtcDateTime;
- state.Protocol = string.Empty;
- state.NextProtocol = string.Empty;
- state.Hash = string.Empty;
- state.BlocksCount--;
- state.ProtocolsCount--;
-
- Cache.AppState.ReleaseOperationId();
- #endregion
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Genesis/Helpers.cs b/Tzkt.Sync/Protocols/Handlers/Genesis/Helpers.cs
deleted file mode 100644
index f9f47aeff..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Genesis/Helpers.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-namespace Tzkt.Sync.Protocols.Genesis
-{
- public class Helpers() : IHelpers
- {
- public virtual long BakingPower(Data.Models.Delegate baker)
- => throw new NotImplementedException();
-
- public virtual long VotingPower(Data.Models.Delegate baker)
- => throw new NotImplementedException();
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Genesis/Rpc/Rpc.cs b/Tzkt.Sync/Protocols/Handlers/Genesis/Rpc/Rpc.cs
deleted file mode 100644
index 1421f5630..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Genesis/Rpc/Rpc.cs
+++ /dev/null
@@ -1,74 +0,0 @@
-using System.Text.Json;
-using Tzkt.Sync.Services;
-
-namespace Tzkt.Sync.Protocols.Genesis
-{
- class Rpc(TezosNode node) : IRpc
- {
- readonly TezosNode Node = node;
-
- #region indexer
- public Task GetBlockAsync(int level)
- => Node.GetAsync($"chains/main/blocks/{level}");
-
- public Task GetBakingRightsAsync(int block, int cycle)
- => throw new InvalidOperationException();
-
- public Task GetAttestationRightsAsync(int block, int cycle)
- => throw new InvalidOperationException();
-
- public Task GetLevelBakingRightsAsync(int block, int level, int maxRound)
- => throw new InvalidOperationException();
-
- public Task GetLevelAttestationRightsAsync(int block, int level)
- => throw new InvalidOperationException();
-
- public Task GetContractAsync(int level, string address)
- => throw new InvalidOperationException();
-
- public Task GetDelegateAsync(int level, string address)
- => throw new InvalidOperationException();
-
- public Task GetExpectedIssuance(int level)
- => throw new InvalidOperationException();
-
- public Task GetSmartRollupGenesisInfo(int level, string address)
- => throw new InvalidOperationException();
-
- public Task GetUnstakeRequests(int level, string address)
- => throw new InvalidOperationException();
-
- public Task GetContractRawAsync(int level, string address)
- => throw new InvalidOperationException();
- #endregion
-
- #region diagnostics
- public Task GetGlobalCounterAsync(int level)
- => throw new InvalidOperationException();
-
- public Task GetDelegatesAsync(int level)
- => throw new InvalidOperationException();
-
- public Task GetActiveDelegatesAsync(int level)
- => throw new InvalidOperationException();
-
- public Task GetCycleAsync(int level, int cycle)
- => throw new InvalidOperationException();
-
- public Task GetDelegateParticipationAsync(int level, string address)
- => throw new InvalidOperationException();
-
- public Task GetDelegateDalParticipationAsync(int level, string address)
- => throw new InvalidOperationException();
-
- public Task GetTicketBalance(int level, string address, string ticket)
- => throw new InvalidOperationException();
-
- public Task GetCurrentStakingBalance(int level, string address)
- => throw new InvalidOperationException();
-
- public Task GetStakingParameters(int level, string address)
- => throw new InvalidOperationException();
- #endregion
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Genesis/Validation/Validator.cs b/Tzkt.Sync/Protocols/Handlers/Genesis/Validation/Validator.cs
deleted file mode 100644
index 2582b7195..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Genesis/Validation/Validator.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using System.Text.Json;
-using Tzkt.Sync.Services;
-
-namespace Tzkt.Sync.Protocols.Genesis
-{
- class Validator(ProtocolHandler protocol) : IValidator
- {
- readonly CacheService Cache = protocol.Cache;
-
- public Task ValidateBlock(JsonElement block)
- {
- if (block.Required("header").RequiredInt32("level") != Cache.AppState.GetNextLevel())
- throw new ValidationException("invalid block level", true);
-
- if (block.Required("header").RequiredInt32("level") != 0)
- throw new ValidationException("genesis block is allowed only at level 0", true);
-
- return Task.CompletedTask;
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Initiator/Diagnostics/Diagnostics.cs b/Tzkt.Sync/Protocols/Handlers/Initiator/Diagnostics/Diagnostics.cs
deleted file mode 100644
index 3f507ed07..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Initiator/Diagnostics/Diagnostics.cs
+++ /dev/null
@@ -1,4 +0,0 @@
-namespace Tzkt.Sync.Protocols.Initiator
-{
- class Diagnostics : Genesis.Diagnostics { }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Initiator/Helpers.cs b/Tzkt.Sync/Protocols/Handlers/Initiator/Helpers.cs
deleted file mode 100644
index bcb9318f5..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Initiator/Helpers.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-namespace Tzkt.Sync.Protocols.Initiator
-{
- public class Helpers() : IHelpers
- {
- public virtual long BakingPower(Data.Models.Delegate baker)
- => throw new NotImplementedException();
-
- public virtual long VotingPower(Data.Models.Delegate baker)
- => throw new NotImplementedException();
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Initiator/InitiatorHandler.cs b/Tzkt.Sync/Protocols/Handlers/Initiator/InitiatorHandler.cs
deleted file mode 100644
index 22defee15..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Initiator/InitiatorHandler.cs
+++ /dev/null
@@ -1,130 +0,0 @@
-using System.Text.Json;
-using Microsoft.EntityFrameworkCore;
-using App.Metrics;
-using Tzkt.Data;
-using Tzkt.Data.Models;
-using Tzkt.Sync.Services;
-using Tzkt.Sync.Protocols.Initiator;
-
-namespace Tzkt.Sync.Protocols
-{
- class InitiatorHandler : ProtocolHandler
- {
- public override IDiagnostics Diagnostics { get; }
- public override IHelpers Helpers { get; }
- public override IValidator Validator { get; }
- public override IRpc Rpc { get; }
- public override string VersionName => "genesis";
- public override int VersionNumber => 0;
-
- public InitiatorHandler(TezosNode node, TzktContext db, CacheService cache, QuotesService quotes, IServiceProvider services, IConfiguration config, ILogger logger, IMetrics metrics)
- : base(node, db, cache, quotes, services, config, logger, metrics)
- {
- Diagnostics = new Diagnostics();
- Helpers = new Helpers();
- Validator = new Validator(this);
- Rpc = new Rpc(node);
- }
-
- public override Task Activate(AppState state, JsonElement block) => Task.CompletedTask;
- public override Task Deactivate(AppState state) => Task.CompletedTask;
-
- public override Task WarmUpCache(JsonElement block) => Task.CompletedTask;
-
- public override Task Commit(JsonElement rawBlock)
- {
- #region add protocol
- var protocol = new Protocol
- {
- Id = 0,
- Hash = rawBlock.RequiredString("protocol"),
- Code = 0,
- Version = VersionNumber,
- FirstLevel = 1,
- LastLevel = 1,
- FirstCycle = 0,
- FirstCycleLevel = 1
- };
- Db.Protocols.Add(protocol);
- Cache.Protocols.Add(protocol);
- #endregion
-
- #region add block
- var block = new Block
- {
- Id = Cache.AppState.NextOperationId(),
- Hash = rawBlock.RequiredString("hash"),
- Cycle = 0,
- Level = rawBlock.Required("header").RequiredInt32("level"),
- ProtoCode = protocol.Code,
- Timestamp = rawBlock.Required("header").RequiredDateTime("timestamp"),
- Events = BlockEvents.CycleBegin
- | BlockEvents.ProtocolBegin
- | BlockEvents.ProtocolEnd
- | BlockEvents.BalanceSnapshot
- };
- Db.Blocks.Add(block);
- Cache.Blocks.Add(block);
- #endregion
-
- #region add empty stats
- var stats = new Statistics
- {
- Id = 0,
- Level = block.Level
- };
- Db.Statistics.Add(stats);
- Cache.Statistics.SetCurrent(stats);
- #endregion
-
- #region update state
- var state = Cache.AppState.Get();
- state.Cycle = 0;
- state.Level = block.Level;
- state.Timestamp = block.Timestamp;
- state.Protocol = protocol.Hash;
- state.NextProtocol = rawBlock.Required("metadata").RequiredString("next_protocol");
- state.Hash = block.Hash;
- state.BlocksCount++;
- state.ProtocolsCount++;
- state.VotingEpoch = 0;
- state.VotingPeriod = 0;
- #endregion
-
- return Task.CompletedTask;
- }
-
- public override async Task Revert()
- {
- var curr = Cache.Blocks.Current();
- var currProtocol = await Cache.Protocols.GetAsync(curr.ProtoCode);
-
- var prev = await Cache.Blocks.PreviousAsync();
- var prevProtocol = await Cache.Protocols.GetAsync(prev.ProtoCode);
-
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "Statistics" WHERE "Level" = {0};
- DELETE FROM "Protocols" WHERE "FirstLevel" = {0};
- DELETE FROM "Blocks" WHERE "Level" = {0};
- """, curr.Level);
-
- await Cache.Statistics.ResetAsync();
- await Cache.Protocols.ResetAsync();
- Cache.Blocks.Reset();
-
- #region update state
- var state = Cache.AppState.Get();
- state.Cycle = -1;
- state.Level = prev.Level;
- state.Timestamp = prev.Timestamp;
- state.Protocol = prevProtocol.Hash;
- state.NextProtocol = currProtocol.Hash;
- state.Hash = prev.Hash;
- state.BlocksCount--;
- state.ProtocolsCount--;
-
- Cache.AppState.ReleaseOperationId();
- #endregion
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Initiator/Rpc/Rpc.cs b/Tzkt.Sync/Protocols/Handlers/Initiator/Rpc/Rpc.cs
deleted file mode 100644
index 64ab2b9c6..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Initiator/Rpc/Rpc.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using System.Text.Json;
-using Tzkt.Sync.Services;
-
-namespace Tzkt.Sync.Protocols.Initiator
-{
- sealed class Rpc(TezosNode node) : Proto1.Rpc(node)
- {
- public override Task GetBlockAsync(int level)
- => Node.GetAsync($"chains/main/blocks/{level}");
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Initiator/Validation/Validator.cs b/Tzkt.Sync/Protocols/Handlers/Initiator/Validation/Validator.cs
deleted file mode 100644
index 3a8d71e1a..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Initiator/Validation/Validator.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-using System.Text.Json;
-using Tzkt.Sync.Services;
-
-namespace Tzkt.Sync.Protocols.Initiator
-{
- class Validator(ProtocolHandler protocol) : IValidator
- {
- readonly CacheService Cache = protocol.Cache;
-
- public Task ValidateBlock(JsonElement block)
- {
- if (block.RequiredString("chain_id") != Cache.AppState.GetChainId())
- throw new ValidationException("invalid chain");
-
- if (block.Required("header").RequiredInt32("level") != Cache.AppState.GetNextLevel())
- throw new ValidationException("invalid block level", true);
-
- if (block.Required("header").RequiredString("predecessor") != Cache.AppState.GetHead())
- throw new ValidationException("invalid block predecessor", true);
-
- if (block.RequiredString("protocol") != Cache.AppState.GetNextProtocol())
- throw new ValidationException("invalid block protocol", true);
-
- if (block.Required("header").RequiredInt32("level") != 1)
- throw new ValidationException("initiator block is allowed only at level 1", true);
-
- return Task.CompletedTask;
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.Accounts.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.Accounts.cs
deleted file mode 100644
index f5b20d4f4..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.Accounts.cs
+++ /dev/null
@@ -1,362 +0,0 @@
-using Microsoft.EntityFrameworkCore;
-using Netezos.Contracts;
-using Netezos.Encoding;
-using Netezos.Keys;
-using Newtonsoft.Json.Linq;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- partial class ProtoActivator : ProtocolCommit
- {
- protected virtual async Task> BootstrapAccounts(Protocol protocol, JToken parameters)
- {
- protocol.MaxDelegatedOverFrozenRatio = 0;
-
- var bootstrapAccounts = parameters["bootstrap_accounts"]?
- .Select(x => (x[0]!.Value()!, x[1]!.Value(), x.Count() > 2 ? x[2]!.Value()! : null))
- .ToList() ?? [];
-
- var bootstrapContracts = parameters["bootstrap_contracts"]?
- .Select(x =>
- (
- x["amount"]!.Value(),
- x["delegate"]?.Value(),
- x["script"]!["code"]!.ToString(),
- x["script"]!["storage"]!.ToString(),
- x["hash"]?.Value()
- ))
- .ToList() ?? [];
-
- var bootstrapSmartRollups = parameters["bootstrap_smart_rollups"]?
- .Select(x =>
- (
- x["address"]!.Value()!,
- x["pvm_kind"]!.Value()!,
- x["parameters_ty"]!.ToString()
- ))
- .ToList() ?? [];
-
- var accounts = new List(bootstrapAccounts.Count + bootstrapContracts.Count + bootstrapSmartRollups.Count);
-
- #region allocate null-address
- var nullAddress = new User
- {
- Id = Cache.AppState.NextAccountId(),
- Address = NullAddress.Address,
- Type = AccountType.User,
- FirstLevel = 1,
- LastLevel = 1,
- Index = 0
- };
- if (nullAddress.Id != NullAddress.Id)
- throw new Exception("Failed to allocate null-address");
- Cache.Accounts.Add(nullAddress);
- Db.Accounts.Add(nullAddress);
- #endregion
-
- #region bootstrap bakers
- foreach (var (pubKey, balance, _) in bootstrapAccounts.Where(x => x.Item1[0] != 't' && (x.Item3 == null || x.Item3[0] != 't')))
- {
- var address = PubKey.FromBase58(pubKey).Address;
- if (Cache.Accounts.TryGetCached(address, out var acc))
- {
- Receive(acc, acc as Data.Models.Delegate, balance);
- continue;
- }
- var baker = new Data.Models.Delegate
- {
- Id = Cache.AppState.NextAccountId(),
- Address = address,
- PublicKey = pubKey,
- FirstLevel = 1,
- LastLevel = 1,
- ActivationLevel = 1,
- DeactivationLevel = GracePeriod.Init(2, protocol),
- Staked = true,
- Revealed = true,
- Type = AccountType.Delegate
- };
- Receive(baker, baker, balance);
- Cache.Accounts.Add(baker);
- accounts.Add(baker);
-
- Cache.Statistics.Current.TotalBakers++;
- }
- #endregion
-
- #region bootstrap delegated users
- foreach (var (pubKey, balance, delegateTo) in bootstrapAccounts.Where(x => x.Item1[0] != 't' && x.Item3 != null && x.Item3[0] == 't'))
- {
- var delegat = Cache.Accounts.GetExistingDelegate(delegateTo!);
-
- var address = PubKey.FromBase58(pubKey).Address;
- if (Cache.Accounts.TryGetCached(address, out var acc))
- {
- Receive(acc, delegat, balance);
- continue;
- }
-
- var user = new User
- {
- Id = Cache.AppState.NextAccountId(),
- Address = address,
- FirstLevel = 1,
- LastLevel = 1,
- Type = AccountType.User,
- PublicKey = pubKey,
- Revealed = true,
- };
- Receive(user, null, balance);
-
- Delegate(user, delegat, 1);
-
- Cache.Accounts.Add(user);
- accounts.Add(user);
- }
- #endregion
-
- #region bootstrap users
- foreach (var (pkh, balance, _) in bootstrapAccounts.Where(x => x.Item1[0] == 't'))
- {
- if (Cache.Accounts.TryGetCached(pkh, out var acc))
- {
- Receive(acc, null, balance);
- continue;
- }
- var user = new User
- {
- Id = Cache.AppState.NextAccountId(),
- Address = pkh,
- FirstLevel = 1,
- LastLevel = 1,
- Type = AccountType.User
- };
- Receive(user, null, balance);
-
- Cache.Accounts.Add(user);
- accounts.Add(user);
- }
- #endregion
-
- #region bootstrap contracts
- if (Proto.Config.Precompiles?.Count > 0)
- {
- foreach (var hash in Proto.Config.Precompiles)
- {
- var contract = await Proto.Rpc.GetContractAsync(1, hash);
- var balance = contract.RequiredInt64("balance");
- var delegatePkh = contract.OptionalString("delegate");
- var script = contract.Required("script");
- var codeStr = script.Required("code").GetRawText();
- var storageStr = script.Required("storage").GetRawText();
-
- bootstrapContracts.Add((balance, delegatePkh, codeStr, storageStr, hash));
- }
- }
-
- var index = 0;
- foreach (var (balance, delegatePkh, codeStr, storageStr, hash) in bootstrapContracts)
- {
- #region contract
- var delegat = Cache.Accounts.GetDelegate(delegatePkh);
- var creator = nullAddress;
-
- var contract = new Contract
- {
- Id = Cache.AppState.NextAccountId(),
- Address = hash ?? OriginationNonce.GetContractAddress(index++),
- FirstLevel = 1,
- LastLevel = 1,
- CreatorId = creator.Id,
- Type = AccountType.Contract,
- Kind = ContractKind.SmartContract,
- };
- Receive(contract, null, balance);
-
- creator.ContractsCount++;
-
- if (delegat != null)
- Delegate(contract, delegat, 1);
-
- Cache.Accounts.Add(contract);
- accounts.Add(contract);
- #endregion
-
- #region script
- var code = (Micheline.FromJson(codeStr) as MichelineArray)!;
- var micheParameter = code.First(x => x is MichelinePrim p && p.Prim == PrimType.parameter);
- var micheStorage = code.First(x => x is MichelinePrim p && p.Prim == PrimType.storage);
- var micheCode = code.First(x => x is MichelinePrim p && p.Prim == PrimType.code);
- var micheViews = code.Where(x => x is MichelinePrim p && p.Prim == PrimType.view);
- var script = new Script
- {
- Id = Cache.AppState.NextScriptId(),
- Level = 1,
- ContractId = contract.Id,
- ParameterSchema = micheParameter.ToBytes(),
- StorageSchema = micheStorage.ToBytes(),
- CodeSchema = micheCode.ToBytes(),
- Views = micheViews.Any()
- ? [..micheViews.Select(x => x.ToBytes())]
- : null,
- Current = true
- };
-
- var viewsBytes = script.Views?
- .OrderBy(x => x, new BytesComparer())
- .SelectMany(x => x)
- .ToArray()
- ?? [];
- var typeSchema = script.ParameterSchema.Concat(script.StorageSchema).Concat(viewsBytes);
- var fullSchema = typeSchema.Concat(script.CodeSchema);
- contract.TypeHash = script.TypeHash = Script.GetHash(typeSchema);
- contract.CodeHash = script.CodeHash = Script.GetHash(fullSchema);
-
- if (script.Schema.IsFA1())
- {
- if (script.Schema.IsFA12())
- contract.Tags |= ContractTags.FA12;
-
- contract.Tags |= ContractTags.FA1;
- contract.Kind = ContractKind.Asset;
- }
- if (script.Schema.IsFA2())
- {
- contract.Tags |= ContractTags.FA2;
- contract.Kind = ContractKind.Asset;
- }
-
- Db.Scripts.Add(script);
- Cache.Schemas.Add(contract, script.Schema);
- #endregion
-
- #region storage
- var storageValue = Micheline.FromJson(storageStr)!;
- var storage = new Storage
- {
- Id = Cache.AppState.NextStorageId(),
- Level = 1,
- ContractId = contract.Id,
- RawValue = script.Schema.OptimizeStorage(storageValue, false).ToBytes(),
- JsonValue = script.Schema.HumanizeStorage(storageValue),
- Current = true
- };
-
- Db.Storages.Add(storage);
- Cache.Storages.Add(contract, storage);
- #endregion
-
- }
- #endregion
-
- #region bootstrap smart rollups
- foreach (var (address, pvmKind, parameterType) in bootstrapSmartRollups)
- {
- var genesisInfo = await Proto.Rpc.GetSmartRollupGenesisInfo(1, address);
-
- var creator = nullAddress;
- var rollup = new SmartRollup()
- {
- Id = Cache.AppState.NextAccountId(),
- FirstLevel = 1,
- LastLevel = 1,
- Address = address,
- CreatorId = creator.Id,
- Type = AccountType.SmartRollup,
- PvmKind = pvmKind switch
- {
- "arith" => PvmKind.Arith,
- "wasm_2_0_0" => PvmKind.Wasm,
- _ => throw new NotImplementedException()
- },
- ParameterSchema = Micheline.FromJson(parameterType)!.ToBytes(),
- GenesisCommitment = genesisInfo.RequiredString("commitment_hash"),
- LastCommitment = genesisInfo.RequiredString("commitment_hash"),
- InboxLevel = genesisInfo.RequiredInt32("level"),
- TotalStakers = 0,
- ActiveStakers = 0,
- ExecutedCommitments = 0,
- CementedCommitments = 0,
- PendingCommitments = 0,
- RefutedCommitments = 0,
- OrphanCommitments = 0,
- SmartRollupBonds = 0
- };
- Cache.Accounts.Add(rollup);
- accounts.Add(rollup);
-
- creator.SmartRollupsCount++;
- }
- #endregion
-
- Db.Accounts.AddRange(accounts);
-
- #region migration ops
- var block = Cache.Blocks.Current();
-
- block.Operations |= Operations.Migrations;
-
- foreach (var account in accounts)
- {
- var migration = new MigrationOperation
- {
- Id = Cache.AppState.NextOperationId(),
- Level = block.Level,
- Timestamp = block.Timestamp,
- AccountId = account.Id,
- Kind = MigrationKind.Bootstrap,
- BalanceChange = account.Balance,
- };
-
- if (account is Contract contract)
- {
- var script = (Db.ChangeTracker.Entries()
- .First(x => x.Entity is Script s && s.ContractId == contract.Id).Entity as Script)!;
- var storage = await Cache.Storages.GetAsync(contract);
-
- script.MigrationId = migration.Id;
- storage.MigrationId = migration.Id;
-
- migration.ScriptId = script.Id;
- migration.StorageId = storage.Id;
- }
-
- Db.MigrationOps.Add(migration);
- Context.MigrationOps.Add(migration);
- account.MigrationsCount++;
- }
-
- var state = Cache.AppState.Get();
- state.MigrationOpsCount += accounts.Count;
- #endregion
-
- #region statistics
- Cache.Statistics.Current.TotalBootstrapped = accounts.Sum(x => x.Balance);
- #endregion
-
- return accounts;
- }
-
- async Task ClearAccounts()
- {
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "Accounts";
- DELETE FROM "MigrationOps";
- DELETE FROM "Scripts";
- DELETE FROM "Storages";
- """);
-
- await Cache.Accounts.ResetAsync();
- Cache.Schemas.Reset();
- Cache.Storages.Reset();
-
- var state = Cache.AppState.Get();
- Cache.AppState.ReleaseOperationId(state.MigrationOpsCount);
- state.AccountCounter = 0;
- state.MigrationOpsCount = 0;
- state.ScriptCounter = 0;
- state.StorageCounter = 0;
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.BakerCycles.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.BakerCycles.cs
deleted file mode 100644
index 7b50f0b0d..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.BakerCycles.cs
+++ /dev/null
@@ -1,103 +0,0 @@
-using Microsoft.EntityFrameworkCore;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- partial class ProtoActivator : ProtocolCommit
- {
- public virtual void BootstrapBakerCycles(
- Protocol protocol,
- List accounts,
- List cycles,
- List> bakingRights,
- List> attestationRights)
- {
- var bakers = accounts
- .Where(x => x.Type == AccountType.Delegate)
- .Select(x => (x as Data.Models.Delegate)!);
-
- foreach (var cycle in cycles)
- {
- var bakerCycles = bakers.ToDictionary(x => x.Id, x =>
- {
- var share = (double)x.BakingPower / cycle.TotalBakingPower;
- return new BakerCycle
- {
- Id = 0,
- Cycle = cycle.Index,
- BakerId = x.Id,
- OwnDelegatedBalance = x.Balance,
- ExternalDelegatedBalance = x.ExternalDelegatedBalance,
- DelegatorsCount = x.DelegatorsCount,
- OwnStakedBalance = x.OwnStakedBalance,
- ExternalStakedBalance = x.ExternalStakedBalance,
- StakersCount = x.StakersCount,
- IssuedPseudotokens = x.IssuedPseudotokens,
- BakingPower = x.BakingPower,
- TotalBakingPower = cycle.TotalBakingPower,
- ExpectedBlocks = protocol.BlocksPerCycle * share,
- ExpectedAttestations = protocol.AttestersPerBlock * protocol.BlocksPerCycle * share
- };
- });
-
- #region future baking rights
- foreach (var br in bakingRights[cycle.Index].SkipWhile(x => x.Level == 1)) // skip bootstrap block rights
- {
- if (br.Round > 0)
- continue;
-
- if (!bakerCycles.TryGetValue(br.Baker, out var bakerCycle))
- throw new Exception("Unknown baking right recipient");
-
- bakerCycle.FutureBlocks++;
- bakerCycle.FutureBlockRewards += GetFutureBlockReward(protocol, cycle.Index);
- }
- #endregion
-
- #region future attestation rights
- var skipLevel = attestationRights[cycle.Index].Last().Level; // skip shifted rights
- foreach (var ar in attestationRights[cycle.Index].TakeWhile(x => x.Level < skipLevel))
- {
- if (!bakerCycles.TryGetValue(ar.Baker, out var bakerCycle))
- throw new Exception("Unknown attestation right recipient");
-
- bakerCycle.FutureAttestations += ar.Slots;
- bakerCycle.FutureAttestationRewards += GetFutureAttestationReward(protocol, cycle.Index, ar.Slots);
- }
- #endregion
-
- #region shifted future endirsing rights
- if (cycle.Index > 0)
- {
- foreach (var ar in attestationRights[cycle.Index - 1].Reverse().TakeWhile(x => x.Level == cycle.FirstLevel - 1))
- {
- if (!bakerCycles.TryGetValue(ar.Baker, out var bakerCycle))
- throw new Exception("Unknown attestation right recipient");
-
- bakerCycle.FutureAttestations += ar.Slots;
- bakerCycle.FutureAttestationRewards += GetFutureAttestationReward(protocol, cycle.Index, ar.Slots);
- }
- }
- #endregion
-
- Db.BakerCycles.AddRange(bakerCycles.Values);
- }
- }
-
- public async Task ClearBakerCycles()
- {
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "BakerCycles"
- """);
- Cache.BakerCycles.Reset();
- }
-
- #region helpers
- protected virtual long GetFutureBlockReward(Protocol protocol, int cycle)
- => cycle < protocol.NoRewardCycles ? 0 : protocol.BlockReward0;
-
- protected virtual long GetFutureAttestationReward(Protocol protocol, int cycle, int slots)
- => cycle < protocol.NoRewardCycles ? 0 : (slots * protocol.AttestationReward0);
- #endregion
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.BakingRights.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.BakingRights.cs
deleted file mode 100644
index 5418d7da4..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.BakingRights.cs
+++ /dev/null
@@ -1,90 +0,0 @@
-using Microsoft.EntityFrameworkCore;
-using Npgsql;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- partial class ProtoActivator : ProtocolCommit
- {
- public async Task<(List>, List>)> BootstrapBakingRights(
- Protocol protocol,
- List accounts,
- List cycles)
- {
- var bakingRights = new List>(protocol.ConsensusRightsDelay + 1);
- var attestationRights = new List>(protocol.ConsensusRightsDelay + 1);
-
- foreach (var cycle in cycles)
- {
- var (futureBakingRights, futureAttestationRights) = await GetRights(protocol, accounts, cycle);
-
- bakingRights.Add(futureBakingRights);
- attestationRights.Add(futureAttestationRights);
-
- var conn = (Db.Database.GetDbConnection() as NpgsqlConnection)!;
- using var writer = conn.BeginBinaryImport(@"
- COPY ""BakingRights"" (""Cycle"", ""Level"", ""BakerId"", ""Type"", ""Status"", ""Round"", ""Slots"")
- FROM STDIN (FORMAT BINARY)");
-
- foreach (var ar in futureAttestationRights)
- {
- writer.StartRow();
- writer.Write(protocol.GetCycle(ar.Level + 1), NpgsqlTypes.NpgsqlDbType.Integer); // level + 1 (shifted)
- writer.Write(ar.Level + 1, NpgsqlTypes.NpgsqlDbType.Integer); // level + 1 (shifted)
- writer.Write(ar.Baker, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write((int)BakingRightType.Attestation, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write((int)BakingRightStatus.Future, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.WriteNull();
- writer.Write(ar.Slots, NpgsqlTypes.NpgsqlDbType.Integer);
- }
-
- foreach (var br in futureBakingRights.SkipWhile(x => x.Level == 1)) // skip bootstrap block rights
- {
- writer.StartRow();
- writer.Write(cycle.Index, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write(br.Level, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write(br.Baker, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write((int)BakingRightType.Baking, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write((int)BakingRightStatus.Future, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write(br.Round, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.WriteNull();
- }
-
- writer.Complete();
- }
-
- return (bakingRights, attestationRights);
- }
-
- public async Task ClearBakingRights()
- {
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "BakingRights"
- """);
- Cache.BakingRights.Reset();
- }
-
- protected virtual async Task<(IEnumerable, IEnumerable)> GetRights(Protocol protocol, List accounts, Cycle cycle)
- {
- var bakingRights = (await Proto.Rpc.GetBakingRightsAsync(1, cycle.Index))
- .EnumerateArray()
- .Select(x => new RightsGenerator.BR
- {
- Baker = Cache.Accounts.GetExistingDelegate(x.RequiredString("delegate")).Id,
- Level = x.RequiredInt32("level"),
- Round = x.RequiredInt32("priority")
- });
-
- var attestationRights = (await Proto.Rpc.GetAttestationRightsAsync(1, cycle.Index))
- .EnumerateArray()
- .Select(x => new RightsGenerator.AR
- {
- Baker = Cache.Accounts.GetExistingDelegate(x.RequiredString("delegate")).Id,
- Level = x.RequiredInt32("level"),
- Slots = x.RequiredArray("slots").Count()
- });
-
- return (bakingRights, attestationRights);
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.Commitments.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.Commitments.cs
deleted file mode 100644
index 774c16b4b..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.Commitments.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-using Microsoft.EntityFrameworkCore;
-using Newtonsoft.Json.Linq;
-using Npgsql;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- partial class ProtoActivator : ProtocolCommit
- {
- void BootstrapCommitments(JToken parameters)
- {
- var commitments = parameters["commitments"]?.Select(x => new Commitment
- {
- Id = 0,
- Address = x[0]!.Value()!,
- Balance = x[1]!.Value()
- });
-
- if (commitments != null)
- {
- var state = Cache.AppState.Get();
- var statistics = Cache.Statistics.Current;
-
- var conn = (Db.Database.GetDbConnection() as NpgsqlConnection)!;
- using var writer = conn.BeginBinaryImport(@"COPY ""Commitments"" (""Balance"", ""Address"") FROM STDIN (FORMAT BINARY)");
-
- foreach (var commitment in commitments)
- {
- writer.StartRow();
- writer.Write(commitment.Balance);
- writer.Write(commitment.Address);
-
- state.CommitmentsCount++;
- statistics.TotalCommitments += commitment.Balance;
- }
-
- writer.Complete();
- }
- }
-
- async Task ClearCommitments()
- {
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "Commitments"
- """);
-
- var state = Cache.AppState.Get();
- state.CommitmentsCount = 0;
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.Cycles.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.Cycles.cs
deleted file mode 100644
index a5718fd67..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.Cycles.cs
+++ /dev/null
@@ -1,59 +0,0 @@
-using Microsoft.EntityFrameworkCore;
-using Netezos.Encoding;
-using Newtonsoft.Json.Linq;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- partial class ProtoActivator : ProtocolCommit
- {
- public virtual List BootstrapCycles(Protocol protocol, List accounts, JToken parameters)
- {
- var cycles = new List(protocol.ConsensusRightsDelay + 1);
- var delegates = accounts
- .Where(x => x.Type == AccountType.Delegate)
- .Select(x => (x as Data.Models.Delegate)!);
- var selected = delegates.Where(x => x.BakingPower != 0);
- var selectedBakers = selected.Count();
- var selectedPower = selected.Sum(x => x.BakingPower);
-
- var initialSeed = parameters["initial_seed"]?.Value() is string base58Seed &&
- Base58.TryParse(base58Seed, new byte[3], out var _initialSeed) &&
- _initialSeed.Length == 32
- ? _initialSeed
- : [];
-
- var seeds = Seed.GetInitialSeeds(protocol.ConsensusRightsDelay + 1, initialSeed);
- for (int index = 0; index <= protocol.ConsensusRightsDelay; index++)
- {
- var cycle = new Cycle
- {
- Id = 0,
- Index = index,
- FirstLevel = protocol.GetCycleStart(index),
- LastLevel = protocol.GetCycleEnd(index),
- SnapshotLevel = 1,
- TotalBakers = selectedBakers,
- TotalBakingPower = selectedPower,
- Seed = seeds[index]
- };
- Db.Cycles.Add(cycle);
- cycles.Add(cycle);
- }
-
- var state = Cache.AppState.Get();
- state.CyclesCount += protocol.ConsensusRightsDelay + 1;
-
- return cycles;
- }
-
- public async Task ClearCycles()
- {
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "Cycles"
- """);
- var state = Cache.AppState.Get();
- state.CyclesCount = 0;
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.DelegationSnapshots.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.DelegationSnapshots.cs
deleted file mode 100644
index b67599a69..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.DelegationSnapshots.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-using Microsoft.EntityFrameworkCore;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- partial class ProtoActivator : ProtocolCommit
- {
- public void BootstrapDelegationSnapshots(List accounts)
- {
- Db.DelegationSnapshots.AddRange(accounts
- .Where(x => x.Staked)
- .Select(x => new DelegationSnapshot
- {
- Level = 1,
- BakerId = x.DelegateId ?? x.Id,
- AccountId = x.Id,
-
- OwnDelegatedBalance = x.Balance - ((x as Data.Models.Delegate)?.OwnStakedBalance ?? 0),
- ExternalDelegatedBalance = (x as Data.Models.Delegate)?.ExternalDelegatedBalance,
- DelegatorsCount = (x as Data.Models.Delegate)?.DelegatorsCount,
-
- PrevMinTotalDelegatedLevel = (x as Data.Models.Delegate)?.MinTotalDelegatedLevel,
- PrevMinTotalDelegated = (x as Data.Models.Delegate)?.MinTotalDelegated
- }));
- }
-
- public async Task ClearDelegationSnapshots()
- {
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "DelegationSnapshots"
- """);
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.DelegatorCycles.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.DelegatorCycles.cs
deleted file mode 100644
index b66970d6c..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.DelegatorCycles.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-using Microsoft.EntityFrameworkCore;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- partial class ProtoActivator : ProtocolCommit
- {
- public void BootstrapDelegatorCycles(Protocol protocol, List accounts)
- {
- for (int cycle = 0; cycle <= protocol.ConsensusRightsDelay; cycle++)
- {
- Db.DelegatorCycles.AddRange(accounts
- .Where(x => x.DelegateId != null)
- .Select(x => new DelegatorCycle
- {
- Id = 0,
- Cycle = cycle,
- DelegatorId = x.Id,
- BakerId = x.DelegateId!.Value,
- DelegatedBalance = x.Balance,
- StakedPseudotokens = (x as User)?.StakedPseudotokens
- }));
- }
- }
-
- public async Task ClearDelegatorCycles()
- {
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "DelegatorCycles"
- """);
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.Protocol.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.Protocol.cs
deleted file mode 100644
index 9be03fc38..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.Protocol.cs
+++ /dev/null
@@ -1,166 +0,0 @@
-using System.Text.Json;
-using Microsoft.EntityFrameworkCore;
-using Newtonsoft.Json.Linq;
-using Tzkt.Data.Models;
-using Tzkt.Sync.Utils;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- partial class ProtoActivator : ProtocolCommit
- {
- public (Protocol, JToken) BootstrapProtocol(JsonElement rawBlock)
- {
- var protocol = new Protocol
- {
- Id = 0,
- Code = 1,
- Version = Proto.VersionNumber,
- Hash = rawBlock.Required("metadata").RequiredString("next_protocol"),
- FirstLevel = 2,
- LastLevel = -1,
- FirstCycle = 0,
- FirstCycleLevel = 1
- };
- Db.Protocols.Add(protocol);
- Cache.Protocols.Add(protocol);
- Context.Protocol = protocol;
-
- var parameters = Bson.Parse(rawBlock
- .Required("header")
- .Required("content")
- .RequiredString("protocol_parameters")
- [8..]);
-
- SetParameters(protocol, parameters);
- return (protocol, parameters);
- }
-
- public async Task ClearProtocol()
- {
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "Protocols"
- WHERE "Code" = 1
- """);
-
- await Cache.Protocols.ResetAsync();
- }
-
- protected virtual void SetParameters(Protocol protocol, JToken parameters)
- {
- protocol.RampUpCycles = parameters["security_deposit_ramp_up_cycles"]?.Value() ?? 0;
- protocol.NoRewardCycles = parameters["no_reward_cycles"]?.Value() ?? 0;
- protocol.BlockDeposit = parameters["block_security_deposit"]?.Value() ?? 512_000_000;
- protocol.BlockReward0 = parameters["block_reward"]?.Value() ?? 16_000_000;
- protocol.BlockReward1 = 0;
- protocol.BlocksPerCommitment = parameters["blocks_per_commitment"]?.Value() ?? 32;
- protocol.BlocksPerCycle = parameters["blocks_per_cycle"]?.Value() ?? 4096;
- protocol.BlocksPerSnapshot = parameters["blocks_per_roll_snapshot"]?.Value() ?? 256;
- protocol.BlocksPerVoting = parameters["blocks_per_voting_period"]?.Value() ?? 32_768;
- protocol.ByteCost = parameters["cost_per_byte"]?.Value() ?? 1000;
- protocol.AttestationDeposit = parameters["endorsement_security_deposit"]?.Value() ?? 64_000_000;
- protocol.AttestationReward0 = parameters["endorsement_reward"]?.Value() ?? 2_000_000;
- protocol.AttestationReward1 = 0;
- protocol.AttestersPerBlock = parameters["endorsers_per_block"]?.Value() ?? 32;
- protocol.HardBlockGasLimit = parameters["hard_gas_limit_per_block"]?.Value() ?? 4_000_000;
- protocol.HardOperationGasLimit = parameters["hard_gas_limit_per_operation"]?.Value() ?? 400_000;
- protocol.HardOperationStorageLimit = parameters["hard_storage_limit_per_operation"]?.Value() ?? 60_000;
- protocol.OriginationSize = (parameters["origination_burn"]?.Value() ?? 257_000) / protocol.ByteCost;
- protocol.ConsensusRightsDelay = parameters["preserved_cycles"]?.Value() ?? 5;
- protocol.ToleratedInactivityPeriod = protocol.ConsensusRightsDelay + 1;
- protocol.TimeBetweenBlocks = parameters["time_between_blocks"]?[0]!.Value() ?? 60;
- protocol.MinimalStake = parameters["tokens_per_roll"]?.Value() ?? 10_000_000_000;
- protocol.BallotQuorumMin = 0;
- protocol.BallotQuorumMax = 10000;
- protocol.ProposalQuorum = 0;
- }
-
- public async Task UpgradeProtocol(AppState state)
- {
- var prev = await Cache.Protocols.GetAsync(state.Protocol);
- Db.TryAttach(prev);
- prev.LastLevel = state.Level;
-
- var protocol = new Protocol
- {
- Id = 0,
- Code = prev.Code + 1,
- Version = Proto.VersionNumber,
- Hash = state.NextProtocol,
- FirstLevel = state.Level + 1,
- LastLevel = -1,
- FirstCycle = state.Cycle + 1,
- FirstCycleLevel = prev.GetCycleStart(state.Cycle + 1),
- RampUpCycles = prev.RampUpCycles,
- NoRewardCycles = prev.NoRewardCycles,
- BlockDeposit = prev.BlockDeposit,
- BlockReward0 = prev.BlockReward0,
- BlockReward1 = prev.BlockReward1,
- BlocksPerCommitment = prev.BlocksPerCommitment,
- BlocksPerCycle = prev.BlocksPerCycle,
- BlocksPerSnapshot = prev.BlocksPerSnapshot,
- BlocksPerVoting = prev.BlocksPerVoting,
- ByteCost = prev.ByteCost,
- AttestationDeposit = prev.AttestationDeposit,
- AttestationReward0 = prev.AttestationReward0,
- AttestationReward1 = prev.AttestationReward1,
- AttestersPerBlock = prev.AttestersPerBlock,
- HardBlockGasLimit = prev.HardBlockGasLimit,
- HardOperationGasLimit = prev.HardOperationGasLimit,
- HardOperationStorageLimit = prev.HardOperationStorageLimit,
- OriginationSize = prev.OriginationSize,
- ConsensusRightsDelay = prev.ConsensusRightsDelay,
- ToleratedInactivityPeriod = prev.ToleratedInactivityPeriod,
- TimeBetweenBlocks = prev.TimeBetweenBlocks,
- MinimalStake = prev.MinimalStake,
- BallotQuorumMin = prev.BallotQuorumMin,
- BallotQuorumMax = prev.BallotQuorumMax,
- ProposalQuorum = prev.ProposalQuorum,
- LBToggleThreshold = prev.LBToggleThreshold,
- ConsensusThreshold = prev.ConsensusThreshold,
- MaxDelegatedOverFrozenRatio = prev.MaxDelegatedOverFrozenRatio,
- MaxExternalOverOwnStakeRatio = prev.MaxExternalOverOwnStakeRatio,
- DoubleBakingSlashedPercentage = prev.DoubleBakingSlashedPercentage,
- DoubleConsensusSlashedPercentage = prev.DoubleConsensusSlashedPercentage,
- MinimalFrozenStake = prev.MinimalFrozenStake,
- StakePowerMultiplier = prev.StakePowerMultiplier,
- MaxBakingReward = prev.MaxBakingReward,
- MaxAttestationReward = prev.MaxAttestationReward,
- DenunciationPeriod = prev.DenunciationPeriod,
- SlashingDelay = prev.SlashingDelay,
- MinParticipationDenominator = prev.MinParticipationDenominator,
- MinParticipationNumerator = prev.MinParticipationNumerator,
- Dictator = prev.Dictator,
- SmartRollupChallengeWindow = prev.SmartRollupChallengeWindow,
- SmartRollupCommitmentPeriod = prev.SmartRollupCommitmentPeriod,
- SmartRollupOriginationSize = prev.SmartRollupOriginationSize,
- SmartRollupStakeAmount = prev.SmartRollupStakeAmount,
- SmartRollupTimeoutPeriod = prev.SmartRollupTimeoutPeriod,
- DelegateParametersActivationDelay = prev.DelegateParametersActivationDelay,
- NumberOfShards = prev.NumberOfShards
- };
- Db.Protocols.Add(protocol);
- Cache.Protocols.Add(protocol);
- Context.Protocol = protocol;
-
- UpgradeParameters(protocol, prev);
- }
-
- public async Task DowngradeProtocol(AppState state)
- {
- var current = await Cache.Protocols.GetAsync(state.NextProtocol);
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "Protocols"
- WHERE "Code" = {0}
- """, current.Code);
-
-
- var prev = await Cache.Protocols.GetAsync(state.Protocol);
- Db.TryAttach(prev);
- prev.LastLevel = -1;
-
- await Cache.Protocols.ResetAsync();
- }
-
- protected virtual void UpgradeParameters(Protocol protocol, Protocol prev) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.SnapshotBalances.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.SnapshotBalances.cs
deleted file mode 100644
index 21df4917a..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.SnapshotBalances.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-using Microsoft.EntityFrameworkCore;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- partial class ProtoActivator : ProtocolCommit
- {
- public void BootstrapSnapshotBalances(List accounts)
- {
- Db.SnapshotBalances.AddRange(accounts
- .Where(x => x.Staked)
- .Select(x => new SnapshotBalance
- {
- Level = 1,
- BakerId = x.DelegateId ?? x.Id,
- AccountId = x.Id,
-
- OwnDelegatedBalance = x.Balance - ((x as Data.Models.Delegate)?.OwnStakedBalance ?? 0),
- ExternalDelegatedBalance = (x as Data.Models.Delegate)?.ExternalDelegatedBalance,
- DelegatorsCount = (x as Data.Models.Delegate)?.DelegatorsCount,
-
- OwnStakedBalance = (x as Data.Models.Delegate)?.OwnStakedBalance,
- ExternalStakedBalance = (x as Data.Models.Delegate)?.ExternalStakedBalance,
- StakersCount = (x as Data.Models.Delegate)?.StakersCount,
-
- Pseudotokens = (x as Data.Models.Delegate)?.IssuedPseudotokens ?? (x as User)?.StakedPseudotokens
- }));
- }
-
- public async Task ClearSnapshotBalances()
- {
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "SnapshotBalances"
- """);
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.StakerCycles.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.StakerCycles.cs
deleted file mode 100644
index 22ae36964..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.StakerCycles.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using Microsoft.EntityFrameworkCore;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- partial class ProtoActivator : ProtocolCommit
- {
- protected virtual void BootstrapStakerCycles(Protocol protocol, List accounts)
- {
- // staker cycles start from proto19
- }
-
- protected async Task ClearStakerCycles()
- {
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "StakerCycles"
- """);
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.Voting.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.Voting.cs
deleted file mode 100644
index 909aa6545..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.Voting.cs
+++ /dev/null
@@ -1,55 +0,0 @@
-using Microsoft.EntityFrameworkCore;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- partial class ProtoActivator : ProtocolCommit
- {
- public void BootstrapVoting(Protocol protocol, List accounts)
- {
- var snapshots = accounts
- .Where(x => x.Type == AccountType.Delegate)
- .Select(x => (x as Data.Models.Delegate)!)
- .Select(x => new VotingSnapshot
- {
- Id = 0,
- Level = 1,
- Period = 0,
- BakerId = x.Id,
- VotingPower = x.VotingPower,
- Status = VoterStatus.None
- });
-
- var period = new VotingPeriod
- {
- Id = 0,
- Index = 0,
- Epoch = 0,
- FirstLevel = 1,
- LastLevel = protocol.BlocksPerVoting,
- Kind = PeriodKind.Proposal,
- Status = PeriodStatus.Active,
- TotalBakers = snapshots.Count(),
- TotalVotingPower = snapshots.Sum(x => x.VotingPower),
- UpvotesQuorum = protocol.ProposalQuorum,
- ProposalsCount = 0,
- TopUpvotes = 0,
- TopVotingPower = 0,
- SingleWinner = false
- };
-
- Db.VotingSnapshots.AddRange(snapshots);
- Db.VotingPeriods.Add(period);
- Cache.Periods.Add(period);
- }
-
- public async Task ClearVoting()
- {
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "VotingPeriods";
- DELETE FROM "VotingSnapshots";
- """);
- Cache.Periods.Reset();
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.cs
deleted file mode 100644
index 3137f2684..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Activation/ProtoActivator.cs
+++ /dev/null
@@ -1,65 +0,0 @@
-using System.Text.Json;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- partial class ProtoActivator(ProtocolHandler protocol) : ProtocolCommit(protocol)
- {
- public async Task Activate(AppState state, JsonElement rawBlock)
- {
- if (state.Level == 1) // bootstrap
- {
- ActivateFeatures();
- var (protocol, parameters) = BootstrapProtocol(rawBlock);
- var accounts = await BootstrapAccounts(protocol, parameters);
- var cycles = BootstrapCycles(protocol, accounts, parameters);
- var (bakingRights, attestationRights) = await BootstrapBakingRights(protocol, accounts, cycles);
- BootstrapDelegationSnapshots(accounts);
- BootstrapSnapshotBalances(accounts);
- BootstrapBakerCycles(protocol, accounts, cycles, bakingRights, attestationRights);
- BootstrapStakerCycles(protocol, accounts);
- BootstrapDelegatorCycles(protocol, accounts);
- BootstrapVoting(protocol, accounts);
- BootstrapCommitments(parameters);
- await ActivateContext(state);
- }
- else // upgrade
- {
- await UpgradeProtocol(state);
- await MigrateContext(state);
- }
- }
-
- public async Task Deactivate(AppState state)
- {
- if (state.Level == 1) // clear
- {
- await DeactivateContext(state);
- await ClearCommitments();
- await ClearVoting();
- await ClearSnapshotBalances();
- await ClearDelegationSnapshots();
- await ClearBakerCycles();
- await ClearStakerCycles();
- await ClearDelegatorCycles();
- await ClearCycles();
- await ClearBakingRights();
- await ClearAccounts();
- await ClearProtocol();
- DeactivateFeatures();
- }
- else // downgrade
- {
- await RevertContext(state);
- await DowngradeProtocol(state);
- }
- }
-
- protected virtual void ActivateFeatures() { }
- protected virtual void DeactivateFeatures() { }
- protected virtual Task ActivateContext(AppState state) => Task.CompletedTask;
- protected virtual Task DeactivateContext(AppState state) => Task.CompletedTask;
- protected virtual Task MigrateContext(AppState state) => Task.CompletedTask;
- protected virtual Task RevertContext(AppState state) => Task.CompletedTask;
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/BakerCycleCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/BakerCycleCommit.cs
deleted file mode 100644
index 738e63dfb..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/BakerCycleCommit.cs
+++ /dev/null
@@ -1,592 +0,0 @@
-using System.Text.Json;
-using Microsoft.EntityFrameworkCore;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- class BakerCycleCommit(ProtocolHandler protocol) : ProtocolCommit(protocol)
- {
- public virtual async Task Apply(
- Block block,
- Cycle? futureCycle,
- IEnumerable? futureBakingRights,
- IEnumerable? futureAttestationRights,
- List? snapshots,
- List currentRights)
- {
- #region current rights
- var prevBlock = await Cache.Blocks.CurrentAsync();
- var prevBakingRights = prevBlock.Level == 1 ? []
- : await Cache.BakingRights.GetAsync(prevBlock.Level);
-
- foreach (var rights in currentRights.GroupBy(x => x.BakerId))
- {
- var bakerCycle = await Cache.BakerCycles.GetAsync(block.Cycle, rights.Key);
- Db.TryAttach(bakerCycle);
-
- var bakingRights = rights
- .Where(x => x.Type == BakingRightType.Baking)
- .OrderBy(x => x.Round)
- .ToList();
-
- var attestationRight = rights
- .FirstOrDefault(x => x.Type == BakingRightType.Attestation);
-
- #region rights and deposits
- foreach (var br in bakingRights)
- {
- if (br.Round == 0 && bakerCycle.FutureBlocks != 0) // FutureBlocks is always 0 for weirds
- {
- bakerCycle.FutureBlocks--;
- }
-
- if (br.Status == BakingRightStatus.Realized)
- {
- bakerCycle.Blocks++;
- }
- else if (br.Status == BakingRightStatus.Missed)
- {
- bakerCycle.MissedBlocks++;
- }
- else
- {
- throw new Exception("Unexpected future rights");
- }
- }
-
- if (attestationRight != null)
- {
- if (bakerCycle.FutureAttestations != 0) // FutureAttestations is always 0 for weirds
- {
- bakerCycle.FutureAttestations -= attestationRight.Slots!.Value;
- }
-
- if (attestationRight.Status == BakingRightStatus.Realized)
- {
- bakerCycle.Attestations += attestationRight.Slots!.Value;
- }
- else if (attestationRight.Status == BakingRightStatus.Missed)
- {
- bakerCycle.MissedAttestations += attestationRight.Slots!.Value;
- }
- else
- {
- throw new Exception("Unexpected future rights");
- }
- }
- #endregion
-
- #region attestation rewards
- if (attestationRight != null)
- {
- if (bakerCycle.FutureAttestationRewards != 0) // FutureAttestationRewards is always 0 for weirds
- bakerCycle.FutureAttestationRewards -= GetFutureAttestationReward(Context.Protocol, block.Cycle, attestationRight.Slots!.Value);
-
- var successReward = GetAttestationReward(Context.Protocol, block.Cycle, attestationRight.Slots!.Value, prevBlock.BlockRound);
-
- var prevRights = prevBakingRights
- .Where(x => x.Type == BakingRightType.Baking && x.BakerId == rights.Key)
- .OrderBy(x => x.Round)
- .ToList();
-
- var maxReward = prevRights.FirstOrDefault()?.Status > BakingRightStatus.Realized
- ? GetAttestationReward(Context.Protocol, block.Cycle, attestationRight.Slots.Value, prevRights[0].Round!.Value)
- : successReward;
-
- if (attestationRight.Status == BakingRightStatus.Realized)
- bakerCycle.AttestationRewardsDelegated += successReward;
- else if (attestationRight.Status == BakingRightStatus.Missed)
- bakerCycle.MissedAttestationRewards += successReward;
- else
- throw new Exception("Unexpected future rights");
-
- if (maxReward != successReward)
- {
- var prevBakerCycle = await Cache.BakerCycles.GetAsync(prevBlock.Cycle, rights.Key);
- Db.TryAttach(prevBakerCycle);
-
- prevBakerCycle.MissedBlockRewards += maxReward - successReward;
- }
- }
- #endregion
-
- #region baking rewards
- if (bakingRights.Count > 0)
- {
- if (bakingRights[0].Round == 0 && bakerCycle.FutureBlockRewards != 0) // FutureBlockRewards is always 0 for weirds
- bakerCycle.FutureBlockRewards -= GetFutureBlockReward(Context.Protocol, block.Cycle);
-
- var successReward = GetBlockReward(Context.Protocol, block.Cycle);
-
- var actualReward = bakingRights[^1].Status == BakingRightStatus.Realized
- ? GetBlockReward(Context.Protocol, block.Cycle)
- : 0;
-
- //var maxReward = attestationRight?.Status > BakingRightStatus.Realized
- // ? GetBlockReward(Context.Protocol, (int)bakingRights[0].Round, block.AttestationPower + attestationRight.Slots.Value)
- // : successReward;
-
- if (actualReward > 0)
- {
- bakerCycle.BlockRewardsDelegated += actualReward;
- }
-
- if (successReward != actualReward)
- {
- bakerCycle.MissedBlockRewards += successReward - actualReward;
- }
-
- //if (maxReward != successReward)
- //{
- // bakerCycle.MissedAttestationRewards += maxReward - successReward;
- //}
- }
- #endregion
-
- #region fees
- if (bakingRights.Count > 0)
- {
- if (bakingRights[^1].Status == BakingRightStatus.Realized)
- {
- bakerCycle.BlockFees += block.Fees;
- }
- else if (bakingRights[0].Status == BakingRightStatus.Missed)
- {
- bakerCycle.MissedBlockFees += block.Fees;
- }
- else
- {
- throw new Exception("Unexpected future rights");
- }
- }
- #endregion
- }
-
- foreach (var op in Context.DoubleBakingOps)
- {
- var accusedBlock = await Cache.Blocks.GetAsync(op.AccusedLevel);
- var offenderCycle = await Cache.BakerCycles.GetAsync(accusedBlock.Cycle, op.OffenderId);
- Db.TryAttach(offenderCycle);
-
- offenderCycle.DoubleBakingLostStaked += op.LostStaked;
-
- var accuserCycle = await Cache.BakerCycles.GetAsync(block.Cycle, op.AccuserId);
- Db.TryAttach(accuserCycle);
-
- accuserCycle.DoubleBakingRewards += op.Reward;
- }
-
- foreach (var op in Context.DoubleConsensusOps)
- {
- var accusedBlock = await Cache.Blocks.GetAsync(op.AccusedLevel);
- var offenderCycle = await Cache.BakerCycles.GetAsync(accusedBlock.Cycle, op.OffenderId);
- Db.TryAttach(offenderCycle);
-
- offenderCycle.DoubleConsensusLostStaked += op.LostStaked;
-
- var accuserCycle = await Cache.BakerCycles.GetAsync(block.Cycle, op.AccuserId);
- Db.TryAttach(accuserCycle);
-
- accuserCycle.DoubleConsensusRewards += op.Reward;
- }
-
- foreach (var op in Context.NonceRevelationOps)
- {
- var bakerCycle = await Cache.BakerCycles.GetAsync(block.Cycle, op.BakerId);
- Db.TryAttach(bakerCycle);
-
- bakerCycle.NonceRevelationRewardsDelegated += op.RewardDelegated;
- }
-
- foreach (var op in Context.RevelationPenaltyOps)
- {
- var penaltyBlock = await Cache.Blocks.GetAsync(op.MissedLevel);
- var penaltyCycle = await Cache.BakerCycles.GetAsync(penaltyBlock.Cycle, op.BakerId);
- Db.TryAttach(penaltyCycle);
-
- penaltyCycle.NonceRevelationLosses += op.Loss;
- }
- #endregion
-
- #region new cycle
- if (block.Events.HasFlag(BlockEvents.CycleBegin))
- {
- var bakerCycles = new Dictionary(snapshots!.Count);
- foreach (var snapshot in snapshots)
- {
- var baker = await Cache.Accounts.GetAsync(snapshot.AccountId); // WTF: rights were given to non-baker accounts
-
- var bakingPower = snapshot.StakingBalance - snapshot.StakingBalance % Context.Protocol.MinimalStake;
- var share = (double)bakingPower / futureCycle!.TotalBakingPower;
-
- var bakerCycle = new BakerCycle
- {
- Id = 0,
- Cycle = futureCycle.Index,
- BakerId = snapshot.AccountId,
- OwnDelegatedBalance = snapshot.OwnDelegatedBalance,
- ExternalDelegatedBalance = snapshot.ExternalDelegatedBalance!.Value,
- DelegatorsCount = snapshot.DelegatorsCount!.Value,
- OwnStakedBalance = snapshot.OwnStakedBalance ?? 0,
- ExternalStakedBalance = snapshot.ExternalStakedBalance ?? 0,
- StakersCount = snapshot.StakersCount ?? 0,
- IssuedPseudotokens = snapshot.Pseudotokens,
- BakingPower = bakingPower,
- TotalBakingPower = futureCycle.TotalBakingPower,
- ExpectedBlocks = Context.Protocol.BlocksPerCycle * share,
- ExpectedAttestations = Context.Protocol.AttestersPerBlock * Context.Protocol.BlocksPerCycle * share
- };
-
- bakerCycles.Add(baker.Address, bakerCycle);
- }
-
- #region future baking rights
- foreach (var br in futureBakingRights!)
- {
- if (br.RequiredInt32("priority") > 0)
- continue;
-
- if (!bakerCycles.TryGetValue(br.RequiredString("delegate"), out var bakerCycle))
- throw new Exception("Nonexistent baker cycle");
-
- if (!Cache.Accounts.DelegateExists(br.RequiredString("delegate")))
- continue;
-
- bakerCycle.FutureBlocks++;
- bakerCycle.FutureBlockRewards += GetFutureBlockReward(Context.Protocol, futureCycle!.Index);
- }
- #endregion
-
- #region future attestation rights
- var skipLevel = futureAttestationRights!.Last().RequiredInt32("level");
-
- foreach (var ar in futureAttestationRights!.TakeWhile(x => x.RequiredInt32("level") < skipLevel))
- {
- if (!bakerCycles.TryGetValue(ar.RequiredString("delegate"), out var bakerCycle))
- throw new Exception("Nonexistent baker cycle");
-
- if (!Cache.Accounts.DelegateExists(ar.RequiredString("delegate")))
- continue;
-
- var slots = ar.RequiredArray("slots").Count();
-
- bakerCycle.FutureAttestations += slots;
- bakerCycle.FutureAttestationRewards += GetFutureAttestationReward(Context.Protocol, futureCycle!.Index, slots);
- }
- #endregion
-
- #region shifted future attestation rights
- // TODO: cache shifted rights
- var shiftedRights = await Db.BakingRights.AsNoTracking()
- .Where(x => x.Level == futureCycle!.FirstLevel && x.Type == BakingRightType.Attestation)
- .ToListAsync();
-
- foreach (var ar in shiftedRights)
- {
- if (!Cache.Accounts.DelegateExists(ar.BakerId))
- continue;
-
- var baker = Cache.Accounts.GetDelegate(ar.BakerId);
- if (!bakerCycles.TryGetValue(baker.Address, out var bakerCycle))
- {
- #region shifting hack
- //shifting is actually a bad idea, but this is the lesser of two evils while Tezos protocol has bugs in the freezer.
- var snapshottedBaker = await Proto.Rpc.GetDelegateAsync(futureCycle!.SnapshotLevel, baker.Address);
- var delegators = snapshottedBaker
- .RequiredArray("delegated_contracts")
- .EnumerateArray()
- .Select(x => x.RequiredString())
- .Where(x => x != baker.Address);
-
- if (snapshottedBaker.RequiredInt32("grace_period") != block.Cycle - 3)
- throw new Exception("Deactivated baker got baking rights");
-
- var stakingBalance = snapshottedBaker.RequiredInt64("staking_balance");
- var delegatedBalance = snapshottedBaker.RequiredInt64("delegated_balance");
-
- bakerCycle = new BakerCycle
- {
- Id = 0,
- Cycle = futureCycle.Index,
- BakerId = baker.Id,
- OwnDelegatedBalance = stakingBalance - delegatedBalance,
- ExternalDelegatedBalance = delegatedBalance,
- DelegatorsCount = delegators.Count(),
- OwnStakedBalance = 0,
- ExternalStakedBalance = 0,
- StakersCount = 0,
- IssuedPseudotokens = null,
- BakingPower = 0,
- TotalBakingPower = futureCycle.TotalBakingPower,
- ExpectedBlocks = 0,
- ExpectedAttestations = 0
- };
- bakerCycles.Add(baker.Address, bakerCycle);
-
- foreach (var delegatorAddress in delegators)
- {
- var snapshottedDelegator = await Proto.Rpc.GetContractAsync(futureCycle.SnapshotLevel, delegatorAddress);
- Db.DelegatorCycles.Add(new DelegatorCycle
- {
- Id = 0,
- Cycle = futureCycle.Index,
- DelegatorId = (await Cache.Accounts.GetExistingAsync(delegatorAddress)).Id,
- BakerId = baker.Id,
- DelegatedBalance = snapshottedDelegator.RequiredInt64("balance"),
- StakedPseudotokens = null
- });
- }
- #endregion
- }
-
- bakerCycle.FutureAttestations += ar.Slots!.Value;
- bakerCycle.FutureAttestationRewards += GetFutureAttestationReward(Context.Protocol, futureCycle!.Index, (int)ar.Slots);
- }
- #endregion
-
- Db.BakerCycles.AddRange(bakerCycles.Values);
-
- #region weird bakers
- if (block.Cycle > 0)
- {
- //one-way change...
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "BakerCycles" as bc
- USING "Accounts" as acc
- WHERE acc."Id" = bc."BakerId"
- AND bc."Cycle" = {0}
- AND acc."Type" != {1}
- """, block.Cycle - 1, (int)AccountType.Delegate);
- }
- #endregion
- }
- #endregion
- }
-
- public virtual async Task Revert(Block block)
- {
- #region current rights
- var prevBlock = await Cache.Blocks.PreviousAsync();
- var prevBakingRights = prevBlock.Level == 1 ? []
- : await Cache.BakingRights.GetAsync(prevBlock.Level);
-
- var currentRights = await Cache.BakingRights.GetAsync(block.Level);
-
- foreach (var rights in currentRights.GroupBy(x => x.BakerId))
- {
- var bakerCycle = await Cache.BakerCycles.GetOrDefaultAsync(block.Cycle, rights.Key);
- if (bakerCycle == null)
- {
- if (!block.Events.HasFlag(BlockEvents.CycleBegin) || rights.Any(x => x.Status == BakingRightStatus.Realized))
- throw new Exception("Shifted rights hack doesn't work :(");
- continue;
- }
-
- Db.TryAttach(bakerCycle);
-
- var bakingRights = rights
- .Where(x => x.Type == BakingRightType.Baking)
- .OrderBy(x => x.Round)
- .ToList();
-
- var attestationRight = rights
- .FirstOrDefault(x => x.Type == BakingRightType.Attestation);
-
- #region rights and deposits
- foreach (var br in bakingRights)
- {
- if (br.Round == 0)
- {
- bakerCycle.FutureBlocks++;
- }
-
- if (br.Status == BakingRightStatus.Realized)
- {
- bakerCycle.Blocks--;
- }
- else if (br.Status == BakingRightStatus.Missed)
- {
- bakerCycle.MissedBlocks--;
- }
- else
- {
- throw new Exception("Unexpected future rights");
- }
- }
-
- if (attestationRight != null)
- {
- bakerCycle.FutureAttestations += attestationRight.Slots!.Value;
-
- if (attestationRight.Status == BakingRightStatus.Realized)
- {
- bakerCycle.Attestations -= attestationRight.Slots.Value;
- }
- else if (attestationRight.Status == BakingRightStatus.Missed)
- {
- bakerCycle.MissedAttestations -= attestationRight.Slots.Value;
- }
- else
- {
- throw new Exception("Unexpected future rights");
- }
- }
- #endregion
-
- #region attestation rewards
- if (attestationRight != null)
- {
- bakerCycle.FutureAttestationRewards += GetFutureAttestationReward(Context.Protocol, block.Cycle, attestationRight.Slots!.Value);
-
- var successReward = GetAttestationReward(Context.Protocol, block.Cycle, attestationRight.Slots.Value, prevBlock.BlockRound);
-
- var prevRights = prevBakingRights
- .Where(x => x.Type == BakingRightType.Baking && x.BakerId == rights.Key)
- .OrderBy(x => x.Round)
- .ToList();
-
- var maxReward = prevRights.FirstOrDefault()?.Status > BakingRightStatus.Realized
- ? GetAttestationReward(Context.Protocol, block.Cycle, attestationRight.Slots.Value, prevRights[0].Round!.Value)
- : successReward;
-
- if (attestationRight.Status == BakingRightStatus.Realized)
- bakerCycle.AttestationRewardsDelegated -= successReward;
- else if (attestationRight.Status == BakingRightStatus.Missed)
- bakerCycle.MissedAttestationRewards -= successReward;
- else
- throw new Exception("Unexpected future rights");
-
- if (maxReward != successReward)
- {
- var prevBakerCycle = await Cache.BakerCycles.GetAsync(prevBlock.Cycle, rights.Key);
- Db.TryAttach(prevBakerCycle);
-
- prevBakerCycle.MissedBlockRewards -= maxReward - successReward;
- }
- }
- #endregion
-
- #region baking rewards
- if (bakingRights.Count > 0)
- {
- if (bakingRights[0].Round == 0)
- bakerCycle.FutureBlockRewards += GetFutureBlockReward(Context.Protocol, block.Cycle);
-
- var successReward = GetBlockReward(Context.Protocol, block.Cycle);
-
- var actualReward = bakingRights[^1].Status == BakingRightStatus.Realized
- ? GetBlockReward(Context.Protocol, block.Cycle)
- : 0;
-
- //var maxReward = attestationRight?.Status > BakingRightStatus.Realized
- // ? GetBlockReward(Context.Protocol, bakingRights[0].Round!.Value, block.AttestationPower + attestationRight.Slots.Value)
- // : successReward;
-
- if (actualReward > 0)
- {
- bakerCycle.BlockRewardsDelegated -= actualReward;
- }
-
- if (successReward != actualReward)
- {
- bakerCycle.MissedBlockRewards -= successReward - actualReward;
- }
-
- //if (maxReward != successReward)
- //{
- // bakerCycle.MissedAttestationRewards -= maxReward - successReward;
- //}
- }
- #endregion
-
- #region fees
- if (bakingRights.Count > 0)
- {
- if (bakingRights[^1].Status == BakingRightStatus.Realized)
- {
- bakerCycle.BlockFees -= block.Fees;
- }
- else if (bakingRights[0].Status == BakingRightStatus.Missed)
- {
- bakerCycle.MissedBlockFees -= block.Fees;
- }
- else
- {
- throw new Exception("Unexpected future rights");
- }
- }
- #endregion
- }
-
- foreach (var op in Context.DoubleBakingOps)
- {
- var accusedBlock = await Cache.Blocks.GetAsync(op.AccusedLevel);
- var offenderCycle = await Cache.BakerCycles.GetAsync(accusedBlock.Cycle, op.OffenderId);
- Db.TryAttach(offenderCycle);
-
- offenderCycle.DoubleBakingLostStaked -= op.LostStaked;
-
- var accuserCycle = await Cache.BakerCycles.GetAsync(block.Cycle, op.AccuserId);
- Db.TryAttach(accuserCycle);
-
- accuserCycle.DoubleBakingRewards -= op.Reward;
- }
-
- foreach (var op in Context.DoubleConsensusOps)
- {
- var accusedBlock = await Cache.Blocks.GetAsync(op.AccusedLevel);
- var offenderCycle = await Cache.BakerCycles.GetAsync(accusedBlock.Cycle, op.OffenderId);
- Db.TryAttach(offenderCycle);
-
- offenderCycle.DoubleConsensusLostStaked -= op.LostStaked;
-
- var accuserCycle = await Cache.BakerCycles.GetAsync(block.Cycle, op.AccuserId);
- Db.TryAttach(accuserCycle);
-
- accuserCycle.DoubleConsensusRewards -= op.Reward;
- }
-
- foreach (var op in Context.NonceRevelationOps)
- {
- var bakerCycle = await Cache.BakerCycles.GetAsync(block.Cycle, op.BakerId);
- Db.TryAttach(bakerCycle);
-
- bakerCycle.NonceRevelationRewardsDelegated -= op.RewardDelegated;
- }
-
- foreach (var op in Context.RevelationPenaltyOps)
- {
- var penaltyBlock = await Cache.Blocks.GetAsync(op.MissedLevel);
- var penaltyCycle = await Cache.BakerCycles.GetAsync(penaltyBlock.Cycle, op.BakerId);
- Db.TryAttach(penaltyCycle);
-
- penaltyCycle.NonceRevelationLosses -= op.Loss;
- }
- #endregion
-
- #region new cycle
- if (block.Events.HasFlag(BlockEvents.CycleBegin))
- {
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "BakerCycles"
- WHERE "Cycle" = {0}
- """, block.Cycle + Context.Protocol.ConsensusRightsDelay);
- }
- #endregion
- }
-
- #region helpers
- protected long GetFutureBlockReward(Protocol protocol, int cycle)
- => cycle < protocol.NoRewardCycles ? 0 : protocol.BlockReward0;
-
- protected long GetFutureAttestationReward(Protocol protocol, int cycle, int slots)
- => cycle < protocol.NoRewardCycles ? 0 : (slots * protocol.AttestationReward0);
-
- protected long GetBlockReward(Protocol protocol, int cycle)
- => cycle < protocol.NoRewardCycles ? 0 : protocol.BlockReward0;
-
- protected long GetAttestationReward(Protocol protocol, int cycle, int slots, int prevPriority)
- => cycle < protocol.NoRewardCycles ? 0 : (slots * (long)(protocol.AttestationReward0 / (prevPriority + 1.0)));
- #endregion
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/BakingRightsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/BakingRightsCommit.cs
deleted file mode 100644
index 080262e42..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/BakingRightsCommit.cs
+++ /dev/null
@@ -1,235 +0,0 @@
-using System.Text.Json;
-using Microsoft.EntityFrameworkCore;
-using Npgsql;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- class BakingRightsCommit(ProtocolHandler protocol) : ProtocolCommit(protocol)
- {
- public List CurrentRights { get; protected set; } = null!;
- public IEnumerable? FutureBakingRights { get; protected set; }
- public IEnumerable? FutureAttestationRights { get; protected set; }
-
- public virtual async Task Apply(Block block)
- {
- #region current rights
- CurrentRights = await Cache.BakingRights.GetAsync(block.Level);
- var sql = string.Empty;
-
- if (block.BlockRound == 0 && block.AttestationPower == block.AttestationCommittee)
- {
- CurrentRights.RemoveAll(x => x.Type == BakingRightType.Baking && x.Round > 0);
- CurrentRights.ForEach(x => x.Status = BakingRightStatus.Realized);
-
- sql = $@"
- DELETE FROM ""BakingRights""
- WHERE ""Level"" = {block.Level}
- AND ""Type"" = {(int)BakingRightType.Baking}
- AND ""Round"" > 0;
-
- UPDATE ""BakingRights""
- SET ""Status"" = {(int)BakingRightStatus.Realized}
- WHERE ""Level"" = {block.Level};";
- }
- else
- {
- #region load missed rounds
- var maxExistedRound = CurrentRights
- .Where(x => x.Type == BakingRightType.Baking)
- .Select(x => x.Round)
- .Max();
-
- if (maxExistedRound < block.BlockRound)
- {
- var bakingRights = await Proto.Rpc.GetLevelBakingRightsAsync(block.Level, block.Level, block.BlockRound);
- //bakingRights = bakingRights.OrderBy(x => x.Round);
-
- var sqlInsert = @"
- INSERT INTO ""BakingRights"" (""Cycle"", ""Level"", ""BakerId"", ""Type"", ""Status"", ""Round"", ""Slots"") VALUES ";
-
- foreach (var bakingRight in bakingRights.EnumerateArray().SkipWhile(x => x.RequiredInt32("priority") <= maxExistedRound))
- {
- var delegat = Cache.Accounts.GetDelegateOrDefault(bakingRight.RequiredString("delegate"));
- if (delegat == null) continue; // WTF: [level:28680] - Baking rights were given to non-baker account
-
- sqlInsert += $@"
- ({block.Cycle}, {block.Level}, {delegat.Id}, {(int)BakingRightType.Baking}, {(int)BakingRightStatus.Future}, {bakingRight.RequiredInt32("priority")}, null),";
- }
-
- await Db.Database.ExecuteSqlRawAsync(sqlInsert[..^1]);
-
- //TODO: execute sql with RETURNS to get identity
- var addedRights = await Db.BakingRights
- .Where(x => x.Level == block.Level && x.Type == BakingRightType.Baking && x.Round > maxExistedRound)
- .ToListAsync();
-
- CurrentRights.AddRange(addedRights);
- }
- #endregion
-
- #region remove excess
- if (CurrentRights.RemoveAll(x => x.Type == BakingRightType.Baking && x.Round > block.BlockRound) > 0)
- {
- sql += $@"
- DELETE FROM ""BakingRights""
- WHERE ""Level"" = {block.Level}
- AND ""Type"" = {(int)BakingRightType.Baking}
- AND ""Round"" > {block.BlockRound};";
- }
- #endregion
-
- #region remove weird
- var weirdRights = CurrentRights
- .Where(x => !Cache.Accounts.DelegateExists(x.BakerId))
- .ToList();
-
- if (weirdRights.Count > 0)
- {
- foreach (var wr in weirdRights)
- CurrentRights.Remove(wr);
-
- sql += $@"
- DELETE FROM ""BakingRights""
- WHERE ""Level"" = {block.Level}
- AND ""Id"" = ANY(ARRAY[{string.Join(',', weirdRights.Select(x => x.Id))}]);";
- }
- #endregion
-
- foreach (var cr in CurrentRights)
- cr.Status = BakingRightStatus.Missed;
-
- CurrentRights.First(x => x.Round == block.BlockRound).Status = BakingRightStatus.Realized;
-
- if (Context.AttestationOps.Count != 0)
- {
- var attesters = new HashSet(Context.AttestationOps.Select(x => x.DelegateId));
- foreach (var ar in CurrentRights.Where(x => x.Type == BakingRightType.Attestation && attesters.Contains(x.BakerId)))
- ar.Status = BakingRightStatus.Realized;
- }
-
- var realized = CurrentRights.Where(x => x.Status == BakingRightStatus.Realized);
- var missed = CurrentRights.Where(x => x.Status == BakingRightStatus.Missed);
-
- sql += $@"
- UPDATE ""BakingRights""
- SET ""Status"" = {(int)BakingRightStatus.Realized}
- WHERE ""Level"" = {block.Level}
- AND ""Id"" = ANY(ARRAY[{string.Join(',', realized.Select(x => x.Id))}]);";
-
- if (missed.Any())
- {
- sql += $@"
- UPDATE ""BakingRights""
- SET ""Status"" = {(int)BakingRightStatus.Missed}
- WHERE ""Level"" = {block.Level}
- AND ""Id"" = ANY(ARRAY[{string.Join(',', missed.Select(x => x.Id))}]);";
- }
- }
-
- await Db.Database.ExecuteSqlRawAsync(sql);
- #endregion
-
- #region new cycle
- if (block.Events.HasFlag(BlockEvents.CycleBegin))
- {
- var futureCycle = block.Cycle + Context.Protocol.ConsensusRightsDelay;
-
- FutureBakingRights = await GetBakingRights(block, Context.Protocol, futureCycle);
- FutureAttestationRights = await GetAttestationRights(block, Context.Protocol, futureCycle);
-
- foreach (var ar in FutureAttestationRights)
- if (!await Cache.Accounts.ExistsAsync(ar.RequiredString("delegate")))
- throw new Exception($"Account {ar.RequiredString("delegate")} doesn't exist");
-
- foreach (var br in FutureBakingRights)
- if (!await Cache.Accounts.ExistsAsync(br.RequiredString("delegate")))
- throw new Exception($"Account {br.RequiredString("delegate")} doesn't exist");
-
- var conn = (Db.Database.GetDbConnection() as NpgsqlConnection)!;
- using var writer = conn.BeginBinaryImport(@"COPY ""BakingRights"" (""Cycle"", ""Level"", ""BakerId"", ""Type"", ""Status"", ""Round"", ""Slots"") FROM STDIN (FORMAT BINARY)");
-
- foreach (var ar in FutureAttestationRights)
- {
- // WTF: [level:28680] - Baking rights were given to non-baker account
- var acc = await Cache.Accounts.GetExistingAsync(ar.RequiredString("delegate"));
-
- writer.StartRow();
- writer.Write(Context.Protocol.GetCycle(ar.RequiredInt32("level") + 1), NpgsqlTypes.NpgsqlDbType.Integer); // level + 1 (shifted)
- writer.Write(ar.RequiredInt32("level") + 1, NpgsqlTypes.NpgsqlDbType.Integer); // level + 1 (shifted)
- writer.Write(acc.Id, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write((int)BakingRightType.Attestation, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write((int)BakingRightStatus.Future, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.WriteNull();
- writer.Write(ar.RequiredArray("slots").Count(), NpgsqlTypes.NpgsqlDbType.Integer);
- }
-
- foreach (var br in FutureBakingRights)
- {
- // WTF: [level:28680] - Baking rights were given to non-baker account
- var acc = await Cache.Accounts.GetExistingAsync(br.RequiredString("delegate"));
-
- writer.StartRow();
- writer.Write(futureCycle, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write(br.RequiredInt32("level"), NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write(acc.Id, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write((int)BakingRightType.Baking, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write((int)BakingRightStatus.Future, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write(br.RequiredInt32("priority"), NpgsqlTypes.NpgsqlDbType.Integer);
- writer.WriteNull();
- }
-
- writer.Complete();
- }
- #endregion
- }
-
- public virtual async Task Revert(Block block)
- {
- #region current rights
- CurrentRights = await Cache.BakingRights.GetAsync(block.Level);
-
- foreach (var cr in CurrentRights)
- cr.Status = BakingRightStatus.Future;
-
- await Db.Database.ExecuteSqlRawAsync("""
- UPDATE "BakingRights"
- SET "Status" = {0}
- WHERE "Level" = {1}
- """, (int)BakingRightStatus.Future, block.Level);
- #endregion
-
- #region new cycle
- if (block.Events.HasFlag(BlockEvents.CycleBegin))
- {
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "BakingRights"
- WHERE "Cycle" = {0} AND "Type" = {1}
- OR "Level" > {2}
- """,
- block.Cycle + Context.Protocol.ConsensusRightsDelay,
- (int)BakingRightType.Baking,
- Context.Protocol.GetCycleStart(block.Cycle + Context.Protocol.ConsensusRightsDelay));
- }
- #endregion
- }
-
- protected virtual async Task> GetBakingRights(Block block, Protocol protocol, int cycle)
- {
- var rights = (await Proto.Rpc.GetBakingRightsAsync(block.Level, cycle)).RequiredArray().EnumerateArray();
- if (!rights.Any() || rights.Count(x => x.RequiredInt32("priority") == 0) != protocol.BlocksPerCycle)
- throw new ValidationException("Rpc returned less baking rights (with priority 0) than it should be");
-
- return rights;
- }
-
- protected virtual async Task> GetAttestationRights(Block block, Protocol protocol, int cycle)
- {
- var rights = (await Proto.Rpc.GetAttestationRightsAsync(block.Level, cycle)).RequiredArray().EnumerateArray();
- if (!rights.Any() || rights.Sum(x => x.RequiredArray("slots").Count()) != protocol.BlocksPerCycle * protocol.AttestersPerBlock)
- throw new ValidationException("Rpc returned less attestation rights (slots) than it should be");
-
- return rights;
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/BigMapCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/BigMapCommit.cs
deleted file mode 100644
index 5b537a5a1..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/BigMapCommit.cs
+++ /dev/null
@@ -1,538 +0,0 @@
-using Microsoft.EntityFrameworkCore;
-using Netezos.Contracts;
-using Netezos.Encoding;
-using Npgsql;
-using Tzkt.Data.Models;
-using Tzkt.Data.Models.Base;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- class BigMapCommit(ProtocolHandler protocol) : ProtocolCommit(protocol)
- {
- public List<(BigMap, BigMapKey?, BigMapUpdate, ContractOperation)> Updates = [];
-
- readonly List<(ContractOperation op, Contract contract, BigMapDiff diff)> Diffs = [];
- readonly Dictionary TempPtrs = new(7);
- int TempPtr = 0;
-
- public virtual void Append(ContractOperation op, Contract contract, IEnumerable diffs)
- {
- foreach (var diff in diffs)
- {
- #region transform temp ptrs
- if (diff.Ptr < 0)
- {
- if (diff.Action <= BigMapDiffAction.Copy)
- {
- TempPtrs[diff.Ptr] = --TempPtr;
- diff.Ptr = TempPtr;
- }
- else
- {
- diff.Ptr = TempPtrs[diff.Ptr];
- }
- }
- if (diff is CopyDiff copy && copy.SourcePtr < 0)
- {
- copy.SourcePtr = TempPtrs[copy.SourcePtr];
- }
- #endregion
- Diffs.Add((op, contract, diff));
- }
- }
-
- public virtual async Task Apply()
- {
- if (Diffs.Count == 0) return;
- Context.Block.Events |= BlockEvents.Bigmaps;
-
- #region prefetch
- var allocated = new HashSet(7);
- var copiedFrom = new HashSet(7);
-
- foreach (var diff in Diffs.Where(x => x.diff.Ptr >= 0))
- {
- if (diff.diff.Action == BigMapDiffAction.Alloc)
- {
- allocated.Add(diff.diff.Ptr);
- }
- else if (diff.diff is CopyDiff copy)
- {
- var origin = GetOrigin(copy);
- if (origin < 0)
- allocated.Add(diff.diff.Ptr);
- else
- copiedFrom.Add(origin);
- }
- }
-
- await Cache.BigMaps.Prefetch(Diffs
- .Where(x => x.diff.Ptr >= 0 && !allocated.Contains(x.diff.Ptr))
- .Select(x => x.diff.Ptr));
-
- await Cache.BigMapKeys.Prefetch(Diffs
- .Where(x => x.diff.Ptr >= 0 && !allocated.Contains(x.diff.Ptr) && x.diff.Action == BigMapDiffAction.Update)
- .Select(x => (x.diff.Ptr, (x.diff as UpdateDiff)!.KeyHash)));
-
- var copiedKeys = copiedFrom.Count == 0 ? [] :
- await Db.BigMapKeys
- .AsNoTracking()
- .Where(x => copiedFrom.Contains(x.BigMapPtr))
- .ToListAsync();
- #endregion
-
- BigMapUpdate bigMapUpdate;
- var bigMapUpdates = new List(Updates.Count);
- var images = new Dictionary>();
- foreach (var diff in Diffs)
- {
- switch (diff.diff)
- {
- case AllocDiff alloc:
- if (alloc.Ptr >= 0)
- {
- #region allocate new
- var script = await Cache.Schemas.GetAsync(diff.contract);
- var storage = await Cache.Storages.GetAsync(diff.contract);
- var storageView = script.Storage.Schema.ToTreeView(Micheline.FromBytes(storage.RawValue));
- var bigMapNode = storageView.Nodes()
- .FirstOrDefault(x => x.Schema.Prim == PrimType.big_map && x.Value is MichelineInt v && v.Value == alloc.Ptr);
-
- if (bigMapNode == null)
- {
- storage = (Db.ChangeTracker.Entries()
- .First(x => x.Entity is Storage s && (s.OriginationId == diff.op.Id || s.TransactionId == diff.op.Id))
- .Entity as Storage)!;
- storageView = script.Storage.Schema.ToTreeView(Micheline.FromBytes(storage.RawValue));
- bigMapNode = storageView.Nodes()
- .FirstOrDefault(x => x.Schema.Prim == PrimType.big_map && x.Value is MichelineInt v && v.Value == alloc.Ptr)
- ?? throw new Exception($"Allocated big_map {alloc.Ptr} missed in the storage");
- }
- var bigMapSchema = (bigMapNode.Schema as BigMapSchema)!;
- var allocatedBigMap = new BigMap
- {
- Id = Cache.AppState.NextBigMapId(),
- Ptr = alloc.Ptr,
- ContractId = diff.contract.Id,
- StoragePath = bigMapNode.Path,
- KeyType = bigMapSchema.Key.ToMicheline().ToBytes(),
- ValueType = bigMapSchema.Value.ToMicheline().ToBytes(),
- Active = true,
- FirstLevel = diff.op.Level,
- LastLevel = diff.op.Level,
- ActiveKeys = 0,
- TotalKeys = 0,
- Updates = 1,
- Tags = GetTags(diff.contract, bigMapNode)
- };
- Db.BigMaps.Add(allocatedBigMap);
- Cache.BigMaps.Add(allocatedBigMap);
-
- bigMapUpdate = new BigMapUpdate
- {
- Id = Cache.AppState.NextBigMapUpdateId(),
- Action = BigMapAction.Allocate,
- BigMapPtr = alloc.Ptr,
- Level = diff.op.Level,
- TransactionId = (diff.op as TransactionOperation)?.Id,
- OriginationId = (diff.op as OriginationOperation)?.Id
- };
- //Db.BigMapUpdates.Add(bigMapUpdate);
- bigMapUpdates.Add(bigMapUpdate);
- Updates.Add((allocatedBigMap, null, bigMapUpdate, diff.op));
- diff.op.BigMapUpdates = (diff.op.BigMapUpdates ?? 0) + 1;
-
- images.Add(alloc.Ptr, []);
- #endregion
- }
- else
- {
- #region alloc temp
- images.Add(alloc.Ptr, []);
- #endregion
- }
- break;
- case CopyDiff copy:
- if (copy.SourcePtr >= 0 && !copiedFrom.Contains(copy.SourcePtr))
- break;
- if (!images.TryGetValue(copy.SourcePtr, out var src))
- {
- src = copiedKeys
- .Where(x => x.BigMapPtr == copy.SourcePtr)
- .ToDictionary(x => x.KeyHash, x => (x.RawKey, x.RawValue));
- }
- if (copy.Ptr >= 0)
- {
- #region copy to new
- var script = await Cache.Schemas.GetAsync(diff.contract);
- var storage = await Cache.Storages.GetAsync(diff.contract);
- var storageView = script.Storage.Schema.ToTreeView(Micheline.FromBytes(storage.RawValue));
- var bigMapNode = storageView.Nodes()
- .FirstOrDefault(x => x.Schema.Prim == PrimType.big_map && x.Value is MichelineInt v && v.Value == copy.Ptr);
-
- if (bigMapNode == null)
- {
- storage = (Db.ChangeTracker.Entries()
- .First(x => x.Entity is Storage s && (s.OriginationId == diff.op.Id || s.TransactionId == diff.op.Id))
- .Entity as Storage)!;
- storageView = script.Storage.Schema.ToTreeView(Micheline.FromBytes(storage.RawValue));
- bigMapNode = storageView.Nodes()
- .FirstOrDefault(x => x.Schema.Prim == PrimType.big_map && x.Value is MichelineInt v && v.Value == copy.Ptr)
- ?? throw new Exception($"Copied big_map {copy.Ptr} missed in the storage");
- }
-
- var bigMapSchema = (bigMapNode.Schema as BigMapSchema)!;
-
- var keys = src.Select(kv =>
- {
- var rawKey = Micheline.FromBytes(kv.Value.RawKey);
- var rawValue = Micheline.FromBytes(kv.Value.RawValue);
- return new BigMapKey
- {
- Id = Cache.AppState.NextBigMapKeyId(),
- BigMapPtr = copy.Ptr,
- Active = true,
- KeyHash = kv.Key,
- JsonKey = bigMapSchema.Key.Humanize(rawKey),
- JsonValue = bigMapSchema.Value.Humanize(rawValue),
- RawKey = bigMapSchema.Key.Optimize(rawKey).ToBytes(),
- RawValue = bigMapSchema.Value.Optimize(rawValue).ToBytes(),
- FirstLevel = diff.op.Level,
- LastLevel = diff.op.Level,
- Updates = 1
- };
- }).ToList();
-
- Db.BigMapKeys.AddRange(keys);
- Cache.BigMapKeys.Add(keys);
-
- var copiedBigMap = new BigMap
- {
- Id = Cache.AppState.NextBigMapId(),
- Ptr = copy.Ptr,
- ContractId = diff.contract.Id,
- StoragePath = bigMapNode.Path,
- KeyType = bigMapSchema.Key.ToMicheline().ToBytes(),
- ValueType = bigMapSchema.Value.ToMicheline().ToBytes(),
- Active = true,
- FirstLevel = diff.op.Level,
- LastLevel = diff.op.Level,
- ActiveKeys = keys.Count,
- TotalKeys = keys.Count,
- Updates = keys.Count + 1,
- Tags = GetTags(diff.contract, bigMapNode)
- };
- Db.BigMaps.Add(copiedBigMap);
- Cache.BigMaps.Add(copiedBigMap);
-
- bigMapUpdate = new BigMapUpdate
- {
- Id = Cache.AppState.NextBigMapUpdateId(),
- Action = BigMapAction.Allocate,
- BigMapPtr = copy.Ptr,
- Level = diff.op.Level,
- TransactionId = (diff.op as TransactionOperation)?.Id,
- OriginationId = (diff.op as OriginationOperation)?.Id
- };
- //Db.BigMapUpdates.Add(bigMapUpdate);
- bigMapUpdates.Add(bigMapUpdate);
- Updates.Add((copiedBigMap, null, bigMapUpdate, diff.op));
-
- foreach (var key in keys)
- {
- bigMapUpdate = new BigMapUpdate
- {
- Id = Cache.AppState.NextBigMapUpdateId(),
- Action = BigMapAction.AddKey,
- BigMapKeyId = key.Id,
- BigMapPtr = key.BigMapPtr,
- JsonValue = key.JsonValue,
- RawValue = key.RawValue,
- Level = key.FirstLevel,
- TransactionId = (diff.op as TransactionOperation)?.Id,
- OriginationId = (diff.op as OriginationOperation)?.Id
- };
- //Db.BigMapUpdates.Add(bigMapUpdate);
- bigMapUpdates.Add(bigMapUpdate);
- Updates.Add((copiedBigMap, key, bigMapUpdate, diff.op));
- }
- diff.op.BigMapUpdates = (diff.op.BigMapUpdates ?? 0) + keys.Count + 1;
-
- images.Add(copy.Ptr, keys.ToDictionary(x => x.KeyHash, x => (x.RawKey, x.RawValue)));
- #endregion
- }
- else
- {
- #region copy to temp
- images.Add(copy.Ptr, src.ToDictionary(x => x.Key, x => x.Value));
- #endregion
- }
- break;
- case UpdateDiff update:
- if (update.Ptr >= 0)
- {
- var bigMap = Cache.BigMaps.Get(update.Ptr);
-
- if (Cache.BigMapKeys.TryGet(update.Ptr, update.KeyHash, out var key))
- {
- if (update.Value != null)
- {
- #region update key
- Db.TryAttach(bigMap);
- bigMap.LastLevel = diff.op.Level;
- if (!key.Active) bigMap.ActiveKeys++;
- bigMap.Updates++;
-
- Db.TryAttach(key);
- key.Active = true;
- key.JsonValue = bigMap.Schema.Value.Humanize(update.Value);
- key.RawValue = bigMap.Schema.Value.Optimize(update.Value).ToBytes();
- key.LastLevel = diff.op.Level;
- key.Updates++;
-
- bigMapUpdate = new BigMapUpdate
- {
- Id = Cache.AppState.NextBigMapUpdateId(),
- Action = BigMapAction.UpdateKey,
- BigMapKeyId = key.Id,
- BigMapPtr = key.BigMapPtr,
- JsonValue = key.JsonValue,
- RawValue = key.RawValue,
- Level = key.LastLevel,
- TransactionId = (diff.op as TransactionOperation)?.Id,
- OriginationId = (diff.op as OriginationOperation)?.Id
- };
- //Db.BigMapUpdates.Add(bigMapUpdate);
- bigMapUpdates.Add(bigMapUpdate);
- Updates.Add((bigMap, key, bigMapUpdate, diff.op));
- diff.op.BigMapUpdates = (diff.op.BigMapUpdates ?? 0) + 1;
- #endregion
- }
- else if (key.Active) // WTF: edo2net:76611 - key was removed twice
- {
- #region remove key
- Db.TryAttach(bigMap);
- bigMap.LastLevel = diff.op.Level;
- bigMap.ActiveKeys--;
- bigMap.Updates++;
-
- Db.TryAttach(key);
- key.Active = false;
- key.LastLevel = diff.op.Level;
- key.Updates++;
-
- bigMapUpdate = new BigMapUpdate
- {
- Id = Cache.AppState.NextBigMapUpdateId(),
- Action = BigMapAction.RemoveKey,
- BigMapKeyId = key.Id,
- BigMapPtr = key.BigMapPtr,
- JsonValue = key.JsonValue,
- RawValue = key.RawValue,
- Level = key.LastLevel,
- TransactionId = (diff.op as TransactionOperation)?.Id,
- OriginationId = (diff.op as OriginationOperation)?.Id
- };
- //Db.BigMapUpdates.Add(bigMapUpdate);
- bigMapUpdates.Add(bigMapUpdate);
- Updates.Add((bigMap, key, bigMapUpdate, diff.op));
- diff.op.BigMapUpdates = (diff.op.BigMapUpdates ?? 0) + 1;
- #endregion
- }
- }
- else if (update.Value != null) // WTF: edo2net:34839 - non-existent key was removed
- {
- #region add key
- Db.TryAttach(bigMap);
- bigMap.LastLevel = diff.op.Level;
- bigMap.ActiveKeys++;
- bigMap.TotalKeys++;
- bigMap.Updates++;
-
- key = new BigMapKey
- {
- Id = Cache.AppState.NextBigMapKeyId(),
- Active = true,
- BigMapPtr = update.Ptr,
- FirstLevel = diff.op.Level,
- LastLevel = diff.op.Level,
- JsonKey = bigMap.Schema.Key.Humanize(update.Key),
- JsonValue = bigMap.Schema.Value.Humanize(update.Value),
- RawKey = bigMap.Schema.Key.Optimize(update.Key).ToBytes(),
- RawValue = bigMap.Schema.Value.Optimize(update.Value).ToBytes(),
- KeyHash = update.KeyHash,
- Updates = 1
- };
-
- Db.BigMapKeys.Add(key);
- Cache.BigMapKeys.Add(key);
-
- bigMapUpdate = new BigMapUpdate
- {
- Id = Cache.AppState.NextBigMapUpdateId(),
- Action = BigMapAction.AddKey,
- BigMapKeyId = key.Id,
- BigMapPtr = key.BigMapPtr,
- JsonValue = key.JsonValue,
- RawValue = key.RawValue,
- Level = key.LastLevel,
- TransactionId = (diff.op as TransactionOperation)?.Id,
- OriginationId = (diff.op as OriginationOperation)?.Id
- };
- //Db.BigMapUpdates.Add(bigMapUpdate);
- bigMapUpdates.Add(bigMapUpdate);
- Updates.Add((bigMap, key, bigMapUpdate, diff.op));
- diff.op.BigMapUpdates = (diff.op.BigMapUpdates ?? 0) + 1;
- #endregion
- }
- }
- else
- {
- #region update temp
- if (!images.TryGetValue(update.Ptr, out var image))
- throw new Exception("Can't update non-existent temporary big_map");
-
- if (image.TryGetValue(update.KeyHash, out var key))
- {
- if (update.Value != null)
- {
- image[update.KeyHash] = (key.RawKey, update.Value.ToBytes());
- }
- else
- {
- image.Remove(update.KeyHash);
- }
- }
- else if (update.Value != null) // WTF: edo2net:34839 - non-existent key was removed
- {
- image.Add(update.KeyHash, (update.Key.ToBytes(), update.Value.ToBytes()));
- }
- #endregion
- }
- break;
- case RemoveDiff remove:
- if (remove.Ptr >= 0)
- {
- var removedBigMap = Cache.BigMaps.Get(remove.Ptr);
-
- Db.TryAttach(removedBigMap);
- removedBigMap.Active = false;
- removedBigMap.LastLevel = diff.op.Level;
- removedBigMap.Updates++;
-
- bigMapUpdate = new BigMapUpdate
- {
- Id = Cache.AppState.NextBigMapUpdateId(),
- Action = BigMapAction.Remove,
- BigMapPtr = remove.Ptr,
- Level = diff.op.Level,
- TransactionId = (diff.op as TransactionOperation)?.Id,
- OriginationId = (diff.op as OriginationOperation)?.Id
- };
- //Db.BigMapUpdates.Add(bigMapUpdate);
- bigMapUpdates.Add(bigMapUpdate);
- Updates.Add((removedBigMap, null, bigMapUpdate, diff.op));
- diff.op.BigMapUpdates = (diff.op.BigMapUpdates ?? 0) + 1;
- }
- break;
- default:
- break;
- }
- }
- if (bigMapUpdates.Count != 0)
- BigMapUpdate.Write((Db.Database.GetDbConnection() as NpgsqlConnection)!, bigMapUpdates);
- }
-
- int GetOrigin(CopyDiff copy)
- {
- return Diffs
- .FirstOrDefault(x => x.diff.Action == BigMapDiffAction.Copy && x.diff.Ptr == copy.SourcePtr).diff is CopyDiff prevCopy
- ? GetOrigin(prevCopy)
- : copy.SourcePtr;
- }
-
- protected virtual BigMapTag GetTags(Contract contract, TreeView node) => BigMaps.GetTags(contract, node);
-
- public virtual async Task Revert(Block block)
- {
- if (block.Events.HasFlag(BlockEvents.Bigmaps))
- {
- var bigmaps = await Db.BigMaps.Where(x => x.LastLevel == block.Level).ToListAsync();
- var keys = await Db.BigMapKeys.Where(x => x.LastLevel == block.Level).ToListAsync();
- var updates = await Db.BigMapUpdates
- .AsNoTracking()
- .Where(x => x.Level == block.Level)
- .Select(x => new
- {
- Ptr = x.BigMapPtr,
- KeyId = x.BigMapKeyId
- })
- .ToListAsync();
-
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "BigMapUpdates"
- WHERE "Level" = {0}
- """, block.Level);
- Cache.AppState.ReleaseBigMapUpdateId(updates.Count);
-
- foreach (var key in keys)
- {
- var bigmap = bigmaps.First(x => x.Ptr == key.BigMapPtr);
- Cache.BigMaps.Add(bigmap);
- Cache.BigMapKeys.Add(key);
-
- if (key.FirstLevel == block.Level)
- {
- if (key.Active) bigmap.ActiveKeys--;
- bigmap.TotalKeys--;
- Db.BigMapKeys.Remove(key);
- Cache.BigMapKeys.Remove(key);
- Cache.AppState.ReleaseBigMapKeyId();
- }
- else
- {
- var prevUpdate = await Db.BigMapUpdates
- .Where(x => x.BigMapKeyId == key.Id)
- .OrderByDescending(x => x.Id)
- .FirstAsync();
-
- var prevActive = prevUpdate.Action != BigMapAction.RemoveKey;
- if (key.Active && !prevActive)
- bigmap.ActiveKeys--;
- else if (!key.Active && prevActive)
- bigmap.ActiveKeys++;
-
- key.Active = prevActive;
- key.JsonValue = prevUpdate.JsonValue!;
- key.RawValue = prevUpdate.RawValue!;
- key.LastLevel = prevUpdate.Level;
- key.Updates -= updates.Count(x => x.KeyId == key.Id);
- }
- }
-
- foreach (var bigmap in bigmaps)
- {
- Cache.BigMaps.Add(bigmap);
- if (bigmap.FirstLevel == block.Level)
- {
- Db.BigMaps.Remove(bigmap);
- Cache.BigMaps.Remove(bigmap);
- Cache.AppState.ReleaseBigMapId();
- }
- else
- {
- bigmap.Active = true;
- bigmap.Updates -= updates.Count(x => x.Ptr == bigmap.Ptr);
- bigmap.LastLevel = bigmap.Updates > 1
- ? (await Db.BigMapUpdates
- .Where(x => x.BigMapPtr == bigmap.Ptr)
- .OrderByDescending(x => x.Id)
- .FirstAsync())
- .Level
- : bigmap.FirstLevel;
- }
- }
- }
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/BlockCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/BlockCommit.cs
deleted file mode 100644
index 2be46cf7a..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/BlockCommit.cs
+++ /dev/null
@@ -1,142 +0,0 @@
-using System.Text.Json;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- class BlockCommit(ProtocolHandler protocol) : ProtocolCommit(protocol)
- {
- public Block Block { get; private set; } = null!;
-
- public virtual async Task Apply(JsonElement rawBlock)
- {
- var level = rawBlock.Required("header").RequiredInt32("level");
- var protocol = await Cache.Protocols.GetAsync(rawBlock.RequiredString("protocol"));
- var events = BlockEvents.None;
-
- var metadata = rawBlock.Required("metadata");
- var (deposit, reward) = ParseBalanceUpdates(metadata.RequiredArray("balance_updates"));
-
- if (protocol.IsCycleStart(level))
- events |= BlockEvents.CycleBegin;
- else if (protocol.IsCycleEnd(level))
- events |= BlockEvents.CycleEnd;
-
- if (protocol.FirstLevel == level)
- events |= BlockEvents.ProtocolBegin;
- else if (metadata.RequiredString("protocol") != metadata.RequiredString("next_protocol"))
- events |= BlockEvents.ProtocolEnd;
-
- if (metadata.RequiredArray("deactivated").Count() > 0)
- events |= BlockEvents.Deactivations;
-
- if (level % protocol.BlocksPerSnapshot == 0)
- events |= BlockEvents.BalanceSnapshot;
-
- var round = rawBlock.Required("header").RequiredInt32("priority");
- var baker = Cache.Accounts.GetExistingDelegate(rawBlock.Required("metadata").RequiredString("baker"));
- Block = new Block
- {
- Id = Cache.AppState.NextOperationId(),
- Hash = rawBlock.RequiredString("hash"),
- Cycle = protocol.GetCycle(level),
- Level = level,
- ProtoCode = protocol.Code,
- Timestamp = rawBlock.Required("header").RequiredDateTime("timestamp"),
- AttestationCommittee = protocol.AttestersPerBlock,
- PayloadRound = round,
- BlockRound = round,
- ProposerId = baker.Id,
- ProducerId = baker.Id,
- Events = events,
- RewardDelegated = reward,
- Deposit = deposit,
- LBToggle = GetLBToggleVote(rawBlock),
- LBToggleEma = GetLBToggleEma(rawBlock)
- };
-
- Context.Block = Block;
- Context.Proposer = baker;
- Context.Protocol = protocol;
-
- #region entities
- Db.TryAttach(protocol);
- Db.TryAttach(baker);
- #endregion
-
- ReceiveLockedRewards(baker, Block.RewardDelegated);
- baker.BlocksCount++;
-
- var newDeactivationLevel = baker.Staked ? GracePeriod.Reset(Block.Level, protocol) : GracePeriod.Init(Block.Level, protocol);
- if (baker.DeactivationLevel < newDeactivationLevel)
- {
- if (baker.DeactivationLevel <= Block.Level)
- await ActivateBaker(baker);
-
- Block.ResetBakerDeactivation = baker.DeactivationLevel;
- baker.DeactivationLevel = newDeactivationLevel;
- }
-
- if (Block.Events.HasFlag(BlockEvents.ProtocolEnd))
- protocol.LastLevel = Block.Level;
-
- Cache.AppState.Get().BlocksCount++;
- Cache.Statistics.Current.TotalCreated += Block.RewardDelegated;
- Cache.Statistics.Current.TotalFrozen += Block.RewardDelegated + Block.Deposit + Block.Fees;
-
- Db.Blocks.Add(Block);
- Cache.Blocks.Add(Block);
- }
-
- public virtual async Task Revert(Block block)
- {
- Block = block;
-
- #region entities
- var baker = Context.Proposer;
- Db.TryAttach(baker);
- #endregion
-
- RevertReceiveLockedRewards(baker, Block.RewardDelegated);
- baker.BlocksCount--;
-
- if (Block.ResetBakerDeactivation != null)
- {
- if (Block.ResetBakerDeactivation <= Block.Level)
- await DeactivateBaker(baker);
-
- baker.DeactivationLevel = (int)Block.ResetBakerDeactivation;
- }
-
- Cache.AppState.Get().BlocksCount--;
-
- Db.Blocks.Remove(Block);
- Cache.AppState.ReleaseOperationId();
- }
-
- protected virtual (long, long) ParseBalanceUpdates(JsonElement balanceUpdates)
- {
- var deposit = 0L;
- var reward = 0L;
- foreach (var bu in balanceUpdates.EnumerateArray().Take(3))
- {
- if (bu.RequiredString("kind")[0] == 'f')
- {
- var change = bu.RequiredInt64("change");
- if (change > 0)
- {
- if (bu.RequiredString("category")[0] == 'd')
- deposit = change;
- else
- reward = change;
- }
-
- }
- }
- return (deposit, reward);
- }
-
- protected virtual bool? GetLBToggleVote(JsonElement block) => null;
-
- protected virtual int GetLBToggleEma(JsonElement block) => 0;
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/CycleCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/CycleCommit.cs
deleted file mode 100644
index 8b4348657..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/CycleCommit.cs
+++ /dev/null
@@ -1,83 +0,0 @@
-using Microsoft.EntityFrameworkCore;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- class CycleCommit(ProtocolHandler protocol) : ProtocolCommit(protocol)
- {
- public Cycle? FutureCycle { get; protected set; }
- public List? BakerSnapshots { get; protected set; }
-
- public virtual async Task Apply(Block block)
- {
- if (block.Events.HasFlag(BlockEvents.CycleBegin))
- {
- var futureCycle = block.Cycle + Context.Protocol.ConsensusRightsDelay;
-
- var lastSeed = await Db.Cycles
- .AsNoTracking()
- .Where(x => x.Index == futureCycle - 1)
- .Select(x => x.Seed)
- .FirstOrDefaultAsync()
- ?? throw new Exception($"Seed for cycle {futureCycle - 1} is missed");
-
- var nonces = block.Cycle < 2 ? [] : await Db.NonceRevelationOps
- .AsNoTracking()
- .Where(x => x.RevealedCycle == block.Cycle - 2)
- .OrderByDescending(x => x.RevealedLevel)
- .Select(x => x.Nonce)
- .ToListAsync();
-
- var futureSeed = Seed.GetNextSeed(lastSeed, nonces, null);
- var snapshotIndex = 0;
- var snapshotLevel = 1;
- var snapshotProto = await Cache.Protocols.FindByCycleAsync(Math.Max(block.Cycle - 2, 0));
-
- if (block.Cycle >= 2)
- {
- snapshotIndex = Seed.GetSnapshotIndex(futureSeed, snapshotProto.SnapshotsPerCycle);
- snapshotLevel = snapshotProto.GetCycleStart(block.Cycle - 2) - 1 + (snapshotIndex + 1) * snapshotProto.BlocksPerSnapshot;
- }
-
- BakerSnapshots = await Db.SnapshotBalances
- .AsNoTracking()
- .Where(x => x.Level == snapshotLevel && x.BakerId == x.AccountId)
- .ToListAsync();
-
- FutureCycle = new Cycle
- {
- Id = 0,
- Index = futureCycle,
- FirstLevel = Context.Protocol.GetCycleStart(futureCycle),
- LastLevel = Context.Protocol.GetCycleEnd(futureCycle),
- SnapshotLevel = snapshotLevel,
- TotalBakers = BakerSnapshots.Count(x => x.StakingBalance >= snapshotProto.MinimalStake),
- TotalBakingPower = BakerSnapshots.Sum(x => x.StakingBalance - x.StakingBalance % snapshotProto.MinimalStake),
- Seed = futureSeed
- };
-
- Db.Cycles.Add(FutureCycle);
- }
- }
-
- public virtual async Task Revert(Block block)
- {
- if (block.Events.HasFlag(BlockEvents.CycleBegin))
- {
- var futureCycle = block.Cycle + Context.Protocol.ConsensusRightsDelay;
-
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "Cycles"
- WHERE "Index" = {0}
- """, futureCycle);
- }
- }
-
- public class DelegateSnapshot
- {
- public long StakingBalance { get; set; }
- public long DelegatedBalance { get; set; }
- public int DelegatorsCount { get; set; }
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/DelegatorCycleCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/DelegatorCycleCommit.cs
deleted file mode 100644
index 423eab9aa..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/DelegatorCycleCommit.cs
+++ /dev/null
@@ -1,65 +0,0 @@
-using Microsoft.EntityFrameworkCore;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- class DelegatorCycleCommit(ProtocolHandler protocol) : ProtocolCommit(protocol)
- {
- public virtual async Task Apply(Block block, Cycle? futureCycle)
- {
- if (!block.Events.HasFlag(BlockEvents.CycleBegin))
- return;
-
- await CreateFromSnapshots(futureCycle!);
-
- #region weird delegators
- if (block.Cycle > 0)
- {
- //one-way change...
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "DelegatorCycles" as dc
- USING "Accounts" as acc
- WHERE acc."Id" = dc."BakerId"
- AND dc."Cycle" = {0}
- AND acc."Type" != {1}
- """, block.Cycle - 1, (int)AccountType.Delegate);
- }
- #endregion
- }
-
- public virtual async Task Revert(Block block)
- {
- if (block.Events.HasFlag(BlockEvents.CycleBegin))
- {
- var futureCycle = block.Cycle + Context.Protocol.ConsensusRightsDelay;
-
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "DelegatorCycles"
- WHERE "Cycle" = {0}
- """, futureCycle);
- }
- }
-
- protected virtual Task CreateFromSnapshots(Cycle futureCycle)
- {
- return Db.Database.ExecuteSqlRawAsync("""
- INSERT INTO "DelegatorCycles" (
- "Cycle",
- "DelegatorId",
- "BakerId",
- "DelegatedBalance",
- "StakedPseudotokens"
- )
- SELECT
- {0},
- "AccountId",
- "BakerId",
- "OwnDelegatedBalance",
- "Pseudotokens"
- FROM "SnapshotBalances"
- WHERE "Level" = {1}
- AND "BakerId" != "AccountId"
- """, futureCycle.Index, futureCycle.SnapshotLevel);
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/FreezerCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/FreezerCommit.cs
deleted file mode 100644
index 2357fa16c..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/FreezerCommit.cs
+++ /dev/null
@@ -1,77 +0,0 @@
-using System.Text.Json;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- class FreezerCommit(ProtocolHandler protocol) : ProtocolCommit(protocol)
- {
- public void Apply(Block block, JsonElement rawBlock)
- {
- if (!block.Events.HasFlag(BlockEvents.CycleEnd))
- return;
-
- foreach (var update in GetFreezerUpdates(block, Context.Protocol, rawBlock))
- {
- var change = update.RequiredInt64("change");
- switch (update.RequiredString("category")[0])
- {
- case 'd':
- break;
- case 'r':
- var delegat = Cache.Accounts.GetExistingDelegate(update.RequiredString("delegate"));
- Db.TryAttach(delegat);
- UnlockRewards(delegat, -change);
- break;
- case 'f':
- break;
- default:
- throw new Exception("unexpected freezer balance update type");
- }
-
- Cache.Statistics.Current.TotalFrozen += change;
- }
-
- return;
- }
-
- public async Task Revert(Block block)
- {
- if (!block.Events.HasFlag(BlockEvents.CycleEnd))
- return;
-
- var rawBlock = await Proto.Rpc.GetBlockAsync(block.Level);
-
- foreach (var update in GetFreezerUpdates(block, Context.Protocol, rawBlock))
- {
- var change = update.RequiredInt64("change");
- switch (update.RequiredString("category")[0])
- {
- case 'd':
- break;
- case 'r':
- var delegat = Cache.Accounts.GetExistingDelegate(update.RequiredString("delegate"));
- Db.TryAttach(delegat);
- RevertUnlockRewards(delegat, -change);
- break;
- case 'f':
- break;
- default:
- throw new Exception("unexpected freezer balance update type");
- }
- }
- }
-
- protected virtual int GetFreezerCycle(JsonElement el) => el.RequiredInt32("level");
-
- protected virtual IEnumerable GetFreezerUpdates(Block block, Protocol protocol, JsonElement rawBlock)
- {
- return rawBlock
- .Required("metadata")
- .Required("balance_updates")
- .EnumerateArray()
- .Where(x => x.RequiredString("kind")[0] == 'f' &&
- x.RequiredInt64("change") < 0 &&
- GetFreezerCycle(x) == block.Cycle - protocol.ConsensusRightsDelay);
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/ActivationsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/ActivationsCommit.cs
deleted file mode 100644
index 5aabaf3ef..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/ActivationsCommit.cs
+++ /dev/null
@@ -1,75 +0,0 @@
-using System.Text.Json;
-using Microsoft.EntityFrameworkCore;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- class ActivationsCommit(ProtocolHandler protocol) : ProtocolCommit(protocol)
- {
- public virtual async Task Apply(Block block, JsonElement op, JsonElement content)
- {
- #region init
- var sender = (User)await Cache.Accounts.GetOrCreateAsync(content.RequiredString("pkh"));
-
- var activatedBalance = content
- .Required("metadata")
- .RequiredArray("balance_updates")
- .EnumerateArray()
- .Single(x => x.RequiredString("kind") == "contract" && x.RequiredString("contract") == sender.Address)
- .RequiredInt64("change");
-
- var activation = new ActivationOperation
- {
- Id = Cache.AppState.NextOperationId(),
- Level = block.Level,
- Timestamp = block.Timestamp,
- OpHash = op.RequiredString("hash"),
- AccountId = sender.Id,
- Balance = activatedBalance
- };
-
- var btz = Blind.GetBlindedAddress(content.RequiredString("pkh"), content.RequiredString("secret"));
- var commitment = await Db.Commitments.FirstAsync(x => x.Address == btz);
- #endregion
-
- #region apply operation
- Db.TryAttach(sender);
- Receive(sender, activation.Balance);
- sender.ActivationsCount++;
-
- block.Operations |= Operations.Activations;
-
- commitment.AccountId = sender.Id;
- commitment.Level = block.Level;
-
- Cache.AppState.Get().ActivationOpsCount++;
- Cache.Statistics.Current.TotalActivated += activation.Balance;
- #endregion
-
- Db.ActivationOps.Add(activation);
- Context.ActivationOps.Add(activation);
- }
-
- public virtual async Task Revert(Block block, ActivationOperation activation)
- {
- #region entities
- var sender = (User)await Cache.Accounts.GetAsync(activation.AccountId);
- var commitment = await Db.Commitments.FirstAsync(x => x.AccountId == activation.AccountId);
- #endregion
-
- #region revert operation
- Db.TryAttach(sender);
- RevertReceive(sender, activation.Balance);
- sender.ActivationsCount--;
-
- commitment.AccountId = null;
- commitment.Level = null;
-
- Cache.AppState.Get().ActivationOpsCount--;
- #endregion
-
- Db.ActivationOps.Remove(activation);
- Cache.AppState.ReleaseOperationId();
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/AttestationsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/AttestationsCommit.cs
deleted file mode 100644
index a97599753..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/AttestationsCommit.cs
+++ /dev/null
@@ -1,94 +0,0 @@
-using System.Text.Json;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- class AttestationsCommit(ProtocolHandler protocol) : ProtocolCommit(protocol)
- {
- public virtual async Task Apply(Block block, JsonElement op, JsonElement content)
- {
- #region init
- var metadata = content.Required("metadata");
- var reward = metadata
- .RequiredArray("balance_updates")
- .EnumerateArray()
- .FirstOrDefault(x => x.RequiredString("kind")[0] == 'f' && x.RequiredString("category")[0] == 'r');
- var deposit = metadata
- .RequiredArray("balance_updates")
- .EnumerateArray()
- .FirstOrDefault(x => x.RequiredString("kind")[0] == 'f' && x.RequiredString("category")[0] == 'd');
-
- var sender = Cache.Accounts.GetExistingDelegate(metadata.RequiredString("delegate"));
-
- var attestation = new AttestationOperation
- {
- Id = Cache.AppState.NextOperationId(),
- Level = block.Level,
- Timestamp = block.Timestamp,
- OpHash = op.RequiredString("hash"),
- Power = metadata.RequiredArray("slots").Count(),
- DelegateId = sender.Id,
- Reward = reward.ValueKind != JsonValueKind.Undefined ? reward.RequiredInt64("change") : 0,
- Deposit = deposit.ValueKind != JsonValueKind.Undefined ? deposit.RequiredInt64("change") : 0
- };
- #endregion
-
- #region entities
- Db.TryAttach(sender);
- #endregion
-
- #region apply operation
- ReceiveLockedRewards(sender, attestation.Reward);
-
- sender.AttestationsCount++;
-
- block.Operations |= Operations.Attestations;
- block.AttestationPower += attestation.Power;
-
- var newDeactivationLevel = sender.Staked ? GracePeriod.Reset(attestation.Level, Context.Protocol) : GracePeriod.Init(attestation.Level, Context.Protocol);
- if (sender.DeactivationLevel < newDeactivationLevel)
- {
- if (sender.DeactivationLevel <= attestation.Level)
- await ActivateBaker(sender);
-
- attestation.ResetDeactivation = sender.DeactivationLevel;
- sender.DeactivationLevel = newDeactivationLevel;
- }
-
- Cache.AppState.Get().AttestationOpsCount++;
- Cache.Statistics.Current.TotalCreated += attestation.Reward;
- Cache.Statistics.Current.TotalFrozen += attestation.Reward + attestation.Deposit;
- #endregion
-
- //Db.AttestationOps.Add(attestation);
- Context.AttestationOps.Add(attestation);
- }
-
- public virtual async Task Revert(Block block, AttestationOperation attestation)
- {
- #region entities
- var sender = Cache.Accounts.GetDelegate(attestation.DelegateId);
- Db.TryAttach(sender);
- #endregion
-
- #region revert operation
- RevertReceiveLockedRewards(sender, attestation.Reward);
-
- sender.AttestationsCount--;
-
- if (attestation.ResetDeactivation != null)
- {
- if (attestation.ResetDeactivation <= attestation.Level)
- await DeactivateBaker(sender);
-
- sender.DeactivationLevel = (int)attestation.ResetDeactivation;
- }
-
- Cache.AppState.Get().AttestationOpsCount--;
- #endregion
-
- //Db.AttestationOps.Remove(attestation);
- Cache.AppState.ReleaseOperationId();
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/DelegationsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/DelegationsCommit.cs
deleted file mode 100644
index 1c2e1e1d9..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/DelegationsCommit.cs
+++ /dev/null
@@ -1,441 +0,0 @@
-using System.Text.Json;
-using Microsoft.EntityFrameworkCore;
-using Tzkt.Data.Models;
-using Tzkt.Data.Models.Base;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- class DelegationsCommit(ProtocolHandler protocol) : ProtocolCommit(protocol)
- {
- public virtual async Task Apply(Block block, JsonElement op, JsonElement content)
- {
- #region init
- var sender = await Cache.Accounts.GetExistingAsync(content.RequiredString("source"));
- var prevDelegate = sender.DelegateId is int senderDelegateId
- ? await Cache.Accounts.GetAsync(senderDelegateId) as Data.Models.Delegate
- : sender as Data.Models.Delegate;
- var newDelegate = content.OptionalString("delegate") is string _delegateAddress
- ? await Cache.Accounts.GetOrCreateAsync(_delegateAddress)
- : null;
-
- var result = content.Required("metadata").Required("operation_result");
-
- var delegation = new DelegationOperation
- {
- Id = Cache.AppState.NextOperationId(),
- Level = Context.Block.Level,
- Timestamp = Context.Block.Timestamp,
- OpHash = op.RequiredString("hash"),
- BakerFee = content.RequiredInt64("fee"),
- Counter = content.RequiredInt32("counter"),
- GasLimit = content.RequiredInt32("gas_limit"),
- StorageLimit = content.RequiredInt32("storage_limit"),
- SenderId = sender.Id,
- DelegateId = newDelegate?.Id,
- PrevDelegateId = prevDelegate?.Id,
- Amount = sender.Balance - content.RequiredInt64("fee"),
- Status = result.RequiredString("status") switch
- {
- "applied" => OperationStatus.Applied,
- "backtracked" => OperationStatus.Backtracked,
- "failed" => OperationStatus.Failed,
- "skipped" => OperationStatus.Skipped,
- _ => throw new NotImplementedException()
- },
- Errors = result.TryGetProperty("errors", out var errors)
- ? OperationErrors.Parse(content, errors)
- : null,
- GasUsed = GetConsumedGas(result)
- };
- #endregion
-
- #region apply operation
- Db.TryAttach(sender);
- PayFee(sender, delegation.BakerFee);
- sender.LastLevel = delegation.Level;
- sender.Counter = delegation.Counter;
- sender.DelegationsCount++;
-
- if (prevDelegate != null)
- {
- Db.TryAttach(prevDelegate);
- prevDelegate.LastLevel = delegation.Level;
- if (prevDelegate != sender)
- prevDelegate.DelegationsCount++;
- }
-
- if (newDelegate != null)
- {
- Db.TryAttach(newDelegate);
- newDelegate.LastLevel = delegation.Level;
- if (newDelegate != sender && newDelegate != prevDelegate)
- newDelegate.DelegationsCount++;
- }
-
- Context.Block.Operations |= Operations.Delegations;
-
- Cache.AppState.Get().DelegationOpsCount++;
- #endregion
-
- #region apply result
- if (delegation.Status == OperationStatus.Applied)
- {
- if (sender is Data.Models.Delegate baker)
- {
- #region reactivate baker
- if (baker.DeactivationLevel <= delegation.Level)
- await ActivateBaker(baker);
-
- delegation.PrevDeactivationLevel = baker.DeactivationLevel;
- baker.DeactivationLevel = GracePeriod.Init(Context.Block.Level, Context.Protocol);
- #endregion
- }
- else
- {
- if (prevDelegate != null)
- {
- #region reset current delegation
- if (result.TryGetProperty("balance_updates", out var updates))
- await Unstake(delegation, [.. updates.EnumerateArray()]);
-
- delegation.PrevDelegationLevel = sender.DelegationLevel;
-
- Undelegate(sender, prevDelegate);
- #endregion
- }
-
- if (sender == newDelegate)
- {
- #region register baker
- sender = newDelegate = RegisterBaker((sender as User)!);
-
- if (sender.OriginationsCount != 0)
- {
- var weirdOriginations = await Db.OriginationOps
- .AsNoTracking()
- .Where(x => x.DelegateId == sender.Id && x.Status == OperationStatus.Applied)
- .ToListAsync();
-
- foreach (var origination in weirdOriginations)
- {
- var weirdDelegator = await Cache.Accounts.GetAsync(origination.ContractId!.Value);
- var hasDelegated = await Db.DelegationOps
- .AsNoTracking()
- .Where(x => x.SenderId == weirdDelegator.Id && x.Status == OperationStatus.Applied)
- .AnyAsync();
-
- if (!hasDelegated)
- {
- Db.TryAttach(weirdDelegator);
- weirdDelegator.LastLevel = delegation.Level;
- Delegate(weirdDelegator, (sender as Data.Models.Delegate)!, origination.Level);
- }
- }
- }
- #endregion
- }
- else if (newDelegate is Data.Models.Delegate _newDelegate)
- {
- Delegate(sender, _newDelegate, delegation.Level);
- }
- }
- }
- #endregion
-
- Proto.Manager.Set(sender);
- Db.DelegationOps.Add(delegation);
- Context.DelegationOps.Add(delegation);
- }
-
- public virtual async Task ApplyInternal(Block block, ManagerOperation parent, JsonElement content)
- {
- #region init
- var initiator = await Cache.Accounts.GetAsync(parent.SenderId);
- var sender = await Cache.Accounts.GetExistingAsync(content.RequiredString("source"));
- var prevDelegate = sender.DelegateId is int senderDelegateId
- ? await Cache.Accounts.GetAsync(senderDelegateId) as Data.Models.Delegate
- : null;
- var newDelegate = content.OptionalString("delegate") is string _delegateAddress
- ? await Cache.Accounts.GetOrCreateAsync(_delegateAddress)
- : null;
-
- var result = content.Required("result");
-
- var delegation = new DelegationOperation
- {
- Id = Cache.AppState.NextOperationId(),
- Level = parent.Level,
- Timestamp = parent.Timestamp,
- OpHash = parent.OpHash,
- Counter = parent.Counter,
- Nonce = content.RequiredInt32("nonce"),
- InitiatorId = initiator.Id,
- SenderId = sender.Id,
- SenderCodeHash = (sender as Contract)?.CodeHash,
- DelegateId = newDelegate?.Id,
- PrevDelegateId = prevDelegate?.Id,
- Amount = sender.Balance,
- Status = result.RequiredString("status") switch
- {
- "applied" => OperationStatus.Applied,
- "backtracked" => OperationStatus.Backtracked,
- "failed" => OperationStatus.Failed,
- "skipped" => OperationStatus.Skipped,
- _ => throw new NotImplementedException()
- },
- Errors = result.TryGetProperty("errors", out var errors)
- ? OperationErrors.Parse(content, errors)
- : null,
- GasUsed = GetConsumedGas(result)
- };
- #endregion
-
- #region apply operation
- if (parent is TransactionOperation parentTx)
- {
- parentTx.InternalOperations = (short?)((parentTx.InternalOperations ?? 0) + 1);
- parentTx.InternalDelegations = (short?)((parentTx.InternalDelegations ?? 0) + 1);
- }
-
- Db.TryAttach(sender);
- sender.LastLevel = delegation.Level;
- sender.DelegationsCount++;
-
- if (prevDelegate != null)
- {
- Db.TryAttach(prevDelegate);
- prevDelegate.LastLevel = delegation.Level;
- if (prevDelegate != sender)
- prevDelegate.DelegationsCount++;
- }
-
- if (newDelegate != null)
- {
- Db.TryAttach(newDelegate);
- newDelegate.LastLevel = delegation.Level;
- if (newDelegate != sender && newDelegate != prevDelegate)
- newDelegate.DelegationsCount++;
- }
-
- if (initiator != sender && initiator != prevDelegate && initiator != newDelegate)
- {
- initiator.DelegationsCount++;
- }
-
- Context.Block.Operations |= Operations.Delegations;
-
- Cache.AppState.Get().DelegationOpsCount++;
- #endregion
-
- #region apply result
- if (delegation.Status == OperationStatus.Applied)
- {
- if (prevDelegate != null)
- {
- #region reset current delegation
- //if (result.TryGetProperty("balance_updates", out var updates))
- // await Unstake(delegation, [.. updates.EnumerateArray()]);
-
- delegation.PrevDelegationLevel = sender.DelegationLevel;
-
- Undelegate(sender, prevDelegate);
- #endregion
- }
-
- if (newDelegate is Data.Models.Delegate _newDelegate)
- {
- Delegate(sender, _newDelegate, delegation.Level);
- }
- }
- #endregion
-
- Db.DelegationOps.Add(delegation);
- Context.DelegationOps.Add(delegation);
- }
-
- public virtual async Task Revert(Block block, DelegationOperation delegation)
- {
- #region init
- var sender = await Cache.Accounts.GetAsync(delegation.SenderId);
- var prevDelegate = delegation.PrevDelegateId is int prevDelegateId
- ? await Cache.Accounts.GetAsync(prevDelegateId) as Data.Models.Delegate
- : null;
- var newDelegate = delegation.DelegateId is int delegateId
- ? await Cache.Accounts.GetAsync(delegateId)
- : null;
-
- Db.TryAttach(sender);
- Db.TryAttach(prevDelegate);
- Db.TryAttach(newDelegate);
- #endregion
-
- #region revert result
- if (delegation.Status == OperationStatus.Applied)
- {
- if (sender is Data.Models.Delegate baker)
- {
- if (delegation.PrevDeactivationLevel is int prevDeactivationLevel)
- {
- #region deactivate baker
- if (delegation.PrevDeactivationLevel <= delegation.Level)
- await DeactivateBaker(baker);
-
- baker.DeactivationLevel = prevDeactivationLevel;
- #endregion
- }
- else
- {
- #region unregister baker
- if (baker.DelegatorsCount != 0)
- {
- var weirdOriginations = await Db.OriginationOps
- .AsNoTracking()
- .Where(x => x.DelegateId == baker.Id && x.Status == OperationStatus.Applied)
- .ToListAsync();
-
- foreach (var origination in weirdOriginations)
- {
- var weirdDelegator = await Cache.Accounts.GetAsync(origination.ContractId!.Value);
- var delegated = await Db.DelegationOps
- .AsNoTracking()
- .Where(x => x.SenderId == weirdDelegator.Id && x.Status == OperationStatus.Applied)
- .AnyAsync();
-
- if (!delegated)
- {
- Db.TryAttach(weirdDelegator);
- weirdDelegator.LastLevel = delegation.Level;
- Undelegate(weirdDelegator, baker);
- }
- }
- }
-
- sender = newDelegate = UnregisterBaker(baker);
-
- if (prevDelegate != null)
- {
- Delegate(sender, prevDelegate, delegation.PrevDelegationLevel!.Value);
- await RevertUnstake(delegation);
- }
- #endregion
- }
- }
- else
- {
- if (newDelegate is Data.Models.Delegate _newDelegate)
- {
- Undelegate(sender, _newDelegate);
- }
-
- if (prevDelegate != null)
- {
- Delegate(sender, prevDelegate, delegation.PrevDelegationLevel!.Value);
- await RevertUnstake(delegation);
- }
- }
- }
- #endregion
-
- #region revert operation
- RevertPayFee(sender, delegation.BakerFee);
- sender.LastLevel = delegation.Level;
- sender.Counter = delegation.Counter - 1;
- if (sender is User user) user.Revealed = true;
- sender.DelegationsCount--;
-
- if (prevDelegate != null)
- {
- prevDelegate.LastLevel = delegation.Level;
- if (prevDelegate != sender)
- prevDelegate.DelegationsCount--;
- }
-
- if (newDelegate != null)
- {
- newDelegate.LastLevel = delegation.Level;
- if (newDelegate != sender && newDelegate != prevDelegate)
- newDelegate.DelegationsCount--;
- }
-
- Cache.AppState.Get().DelegationOpsCount--;
- #endregion
-
- Db.DelegationOps.Remove(delegation);
- Cache.AppState.ReleaseManagerCounter();
- Cache.AppState.ReleaseOperationId();
- }
-
- public virtual async Task RevertInternal(Block block, DelegationOperation delegation)
- {
- #region init
- var initiator = await Cache.Accounts.GetAsync(delegation.InitiatorId!.Value);
- var sender = await Cache.Accounts.GetAsync(delegation.SenderId);
- var prevDelegate = delegation.PrevDelegateId is int prevDelegateId
- ? await Cache.Accounts.GetAsync(prevDelegateId) as Data.Models.Delegate
- : null;
- var newDelegate = delegation.DelegateId is int delegateId
- ? await Cache.Accounts.GetAsync(delegateId)
- : null;
-
- Db.TryAttach(initiator);
- Db.TryAttach(sender);
- Db.TryAttach(prevDelegate);
- Db.TryAttach(newDelegate);
- #endregion
-
- #region revert result
- if (delegation.Status == OperationStatus.Applied)
- {
- if (newDelegate is Data.Models.Delegate _newDelegate)
- {
- Undelegate(sender, _newDelegate);
- }
-
- if (prevDelegate != null)
- {
- Delegate(sender, prevDelegate, delegation.PrevDelegationLevel!.Value);
- //await RevertUnstake(delegation);
- }
- }
- #endregion
-
- #region revert operation
- sender.LastLevel = delegation.Level;
- sender.DelegationsCount--;
-
- if (prevDelegate != null)
- {
- prevDelegate.LastLevel = delegation.Level;
- if (prevDelegate != sender)
- prevDelegate.DelegationsCount--;
- }
-
- if (newDelegate != null)
- {
- newDelegate.LastLevel = delegation.Level;
- if (newDelegate != sender && newDelegate != prevDelegate)
- newDelegate.DelegationsCount--;
- }
-
- if (initiator != sender && initiator != prevDelegate && initiator != newDelegate)
- {
- initiator.DelegationsCount--;
- }
-
- Cache.AppState.Get().DelegationOpsCount--;
- #endregion
-
- Db.DelegationOps.Remove(delegation);
- Cache.AppState.ReleaseOperationId();
- }
-
- protected virtual int GetConsumedGas(JsonElement result)
- {
- return result.OptionalInt32("consumed_gas") ?? 0;
- }
-
- protected virtual Task Unstake(DelegationOperation op, List balanceUpdates) => Task.CompletedTask;
-
- protected virtual Task RevertUnstake(DelegationOperation op) => Task.CompletedTask;
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/NonceRevelationsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/NonceRevelationsCommit.cs
deleted file mode 100644
index 3fffca4d6..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/NonceRevelationsCommit.cs
+++ /dev/null
@@ -1,91 +0,0 @@
-using System.Text.Json;
-using Netezos.Encoding;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- class NonceRevelationsCommit(ProtocolHandler protocol) : ProtocolCommit(protocol)
- {
- public virtual async Task Apply(Block block, JsonElement op, JsonElement content)
- {
- #region init
- var balanceUpdate = content.Required("metadata").RequiredArray("balance_updates").EnumerateArray()
- .FirstOrDefault(x => x.RequiredString("kind") == "freezer" && x.RequiredString("category") == "rewards");
-
- var reward = balanceUpdate.ValueKind != JsonValueKind.Undefined
- ? balanceUpdate.RequiredInt64("change")
- : 0;
-
- var revealedBlock = await Cache.Blocks.GetAsync(content.RequiredInt32("level"));
- var sender = Cache.Accounts.GetDelegate(revealedBlock.ProposerId!.Value);
-
- var revelation = new NonceRevelationOperation
- {
- Id = Cache.AppState.NextOperationId(),
- Level = block.Level,
- Timestamp = block.Timestamp,
- OpHash = op.RequiredString("hash"),
- BakerId = Context.Proposer.Id,
- SenderId = sender.Id,
- RevealedLevel = revealedBlock.Level,
- RevealedCycle = revealedBlock.Cycle,
- Nonce = Hex.Parse(content.RequiredString("nonce")),
- RewardDelegated = reward
- };
- #endregion
-
- #region entities
- var blockBaker = Context.Proposer;
-
- //Db.TryAttach(blockBaker);
- Db.TryAttach(sender);
- Db.TryAttach(revealedBlock);
- #endregion
-
- #region apply operation
- ReceiveLockedRewards(blockBaker, revelation.RewardDelegated);
-
- sender.NonceRevelationsCount++;
- if (blockBaker != sender) blockBaker.NonceRevelationsCount++;
-
- block.Operations |= Operations.Revelations;
-
- revealedBlock.RevelationId = revelation.Id;
-
- Cache.AppState.Get().NonceRevelationOpsCount++;
- Cache.Statistics.Current.TotalCreated += revelation.RewardDelegated;
- Cache.Statistics.Current.TotalFrozen += revelation.RewardDelegated;
- #endregion
-
- Db.NonceRevelationOps.Add(revelation);
- Context.NonceRevelationOps.Add(revelation);
- }
-
- public virtual async Task Revert(Block block, NonceRevelationOperation revelation)
- {
- #region entities
- var blockBaker = Context.Proposer;
- var sender = Cache.Accounts.GetDelegate(revelation.SenderId);
- var revealedBlock = await Cache.Blocks.GetAsync(revelation.RevealedLevel);
-
- //Db.TryAttach(blockBaker);
- Db.TryAttach(sender);
- Db.TryAttach(revealedBlock);
- #endregion
-
- #region apply operation
- RevertReceiveLockedRewards(blockBaker, revelation.RewardDelegated);
-
- sender.NonceRevelationsCount--;
- if (blockBaker != sender) blockBaker.NonceRevelationsCount--;
-
- revealedBlock.RevelationId = null;
-
- Cache.AppState.Get().NonceRevelationOpsCount--;
- #endregion
-
- Db.NonceRevelationOps.Remove(revelation);
- Cache.AppState.ReleaseOperationId();
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/OriginationsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/OriginationsCommit.cs
deleted file mode 100644
index 5e1687b45..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/OriginationsCommit.cs
+++ /dev/null
@@ -1,746 +0,0 @@
-using System.Text.Json;
-using Microsoft.EntityFrameworkCore;
-using Netezos.Contracts;
-using Netezos.Encoding;
-
-using Tzkt.Data.Models;
-using Tzkt.Data.Models.Base;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- class OriginationsCommit(ProtocolHandler protocol) : ProtocolCommit(protocol)
- {
- public OriginationOperation Origination { get; private set; } = null!;
- public IEnumerable? BigMapDiffs { get; private set; }
- public Contract? Contract { get; private set; }
-
- public virtual async Task Apply(Block block, JsonElement op, JsonElement content)
- {
- #region init
- var sender = await Cache.Accounts.GetExistingAsync(content.RequiredString("source"));
- var contractDelegate = content.OptionalString("delegate") is string _delegateAddress
- ? await Cache.Accounts.GetOrCreateAsync(_delegateAddress)
- : null;
-
- var result = content.Required("metadata").Required("operation_result");
-
- var origination = new OriginationOperation
- {
- Id = Cache.AppState.NextOperationId(),
- Level = block.Level,
- Timestamp = block.Timestamp,
- OpHash = op.RequiredString("hash"),
- Balance = content.RequiredInt64("balance"),
- BakerFee = content.RequiredInt64("fee"),
- Counter = content.RequiredInt32("counter"),
- GasLimit = content.RequiredInt32("gas_limit"),
- StorageLimit = content.RequiredInt32("storage_limit"),
- SenderId = sender.Id,
- DelegateId = contractDelegate?.Id,
- Status = result.RequiredString("status") switch
- {
- "applied" => OperationStatus.Applied,
- "backtracked" => OperationStatus.Backtracked,
- "failed" => OperationStatus.Failed,
- "skipped" => OperationStatus.Skipped,
- _ => throw new NotImplementedException()
- },
- Errors = result.TryGetProperty("errors", out var errors)
- ? OperationErrors.Parse(content, errors)
- : null,
- GasUsed = GetConsumedGas(result),
- StorageUsed = result.OptionalInt32("paid_storage_size_diff") ?? 0,
- StorageFee = result.OptionalInt32("paid_storage_size_diff") > 0
- ? result.OptionalInt32("paid_storage_size_diff") * Context.Protocol.ByteCost
- : null,
- AllocationFee = Context.Protocol.OriginationSize * Context.Protocol.ByteCost
- };
- #endregion
-
- #region apply operation
- Db.TryAttach(sender);
- PayFee(sender, origination.BakerFee);
- sender.LastLevel = origination.Level;
- sender.Counter = origination.Counter;
- sender.OriginationsCount++;
-
- if (contractDelegate != null)
- {
- Db.TryAttach(contractDelegate);
- contractDelegate.LastLevel = block.Level;
- if (contractDelegate != sender)
- contractDelegate.OriginationsCount++;
- }
-
- Context.Block.Operations |= Operations.Originations;
-
- Cache.AppState.Get().OriginationOpsCount++;
- #endregion
-
- #region apply result
- if (origination.Status == OperationStatus.Applied)
- {
- var burned = (origination.StorageFee ?? 0) + (origination.AllocationFee ?? 0);
- Proto.Manager.Burn(burned);
-
- Spend(sender, origination.Balance + burned);
- sender.ContractsCount++;
-
- Contract? contract;
- var contractAddress = result.RequiredArray("originated_contracts", 1)[0].RequiredString();
- var ghost = await Cache.Accounts.GetAsync(contractAddress);
- if (ghost != null)
- {
- contract = new Contract
- {
- Id = ghost.Id,
- Index = ghost.Index,
- FirstLevel = ghost.FirstLevel,
- LastLevel = origination.Level,
- Address = contractAddress,
- CreatorId = sender.Id,
- Type = AccountType.Contract,
- Kind = ContractKind.SmartContract,
- OriginationsCount = 1,
- ActiveTokensCount = ghost.ActiveTokensCount,
- TokenBalancesCount = ghost.TokenBalancesCount,
- TokenTransfersCount = ghost.TokenTransfersCount,
- ActiveTicketsCount = ghost.ActiveTicketsCount,
- TicketBalancesCount = ghost.TicketBalancesCount,
- TicketTransfersCount = ghost.TicketTransfersCount
- };
- Db.Entry(ghost).State = EntityState.Detached;
- Db.Entry(contract).State = EntityState.Modified;
- }
- else
- {
- contract = new Contract
- {
- Id = Cache.AppState.NextAccountId(),
- FirstLevel = origination.Level,
- LastLevel = origination.Level,
- Address = contractAddress,
- CreatorId = sender.Id,
- Type = AccountType.Contract,
- Kind = ContractKind.SmartContract,
- OriginationsCount = 1
- };
- Db.Contracts.Add(contract);
- }
- Receive(contract, origination.Balance);
- Cache.Accounts.Add(contract);
- origination.ContractId = contract.Id;
- Contract = contract;
-
- if (contractDelegate is Data.Models.Delegate _contractDelegate)
- Delegate(contract, _contractDelegate, origination.Level);
-
- var code = await ExpandCode(contract, GetCode(content));
- var storage = GetStorage(content);
-
- BigMapDiffs = ParseBigMapDiffs(origination, result, code, storage);
- await ProcessScript(origination, contract, code, storage);
-
- Cache.Statistics.Current.TotalBurned += burned;
- }
- #endregion
-
- Proto.Manager.Set(sender);
- Db.OriginationOps.Add(origination);
- Context.OriginationOps.Add(origination);
- Origination = origination;
- }
-
- public virtual async Task ApplyInternal(Block block, ManagerOperation parent, JsonElement content)
- {
- #region init
- var initiator = await Cache.Accounts.GetAsync(parent.SenderId);
- var sender = await Cache.Accounts.GetExistingAsync(content.RequiredString("source"));
- var contractDelegate = content.OptionalString("delegate") is string _delegateAddress
- ? await Cache.Accounts.GetOrCreateAsync(_delegateAddress)
- : null;
-
- var result = content.Required("result");
-
- var origination = new OriginationOperation
- {
- Id = Cache.AppState.NextOperationId(),
- InitiatorId = parent.SenderId,
- Level = parent.Level,
- Timestamp = parent.Timestamp,
- OpHash = parent.OpHash,
- Counter = parent.Counter,
- Nonce = content.RequiredInt32("nonce"),
- Balance = content.RequiredInt64("balance"),
- SenderId = sender.Id,
- SenderCodeHash = (sender as Contract)?.CodeHash,
- DelegateId = contractDelegate?.Id,
- Status = result.RequiredString("status") switch
- {
- "applied" => OperationStatus.Applied,
- "backtracked" => OperationStatus.Backtracked,
- "failed" => OperationStatus.Failed,
- "skipped" => OperationStatus.Skipped,
- _ => throw new NotImplementedException()
- },
- Errors = result.TryGetProperty("errors", out var errors)
- ? OperationErrors.Parse(content, errors)
- : null,
- GasUsed = GetConsumedGas(result),
- StorageUsed = result.OptionalInt32("paid_storage_size_diff") ?? 0,
- StorageFee = result.OptionalInt32("paid_storage_size_diff") > 0
- ? result.OptionalInt32("paid_storage_size_diff") * Context.Protocol.ByteCost
- : null,
- AllocationFee = Context.Protocol.OriginationSize * Context.Protocol.ByteCost
- };
- #endregion
-
- #region apply operation
- if (parent is TransactionOperation parentTx)
- {
- parentTx.InternalOperations = (short?)((parentTx.InternalOperations ?? 0) + 1);
- parentTx.InternalOriginations = (short?)((parentTx.InternalOriginations ?? 0) + 1);
- }
-
- Db.TryAttach(sender);
- sender.LastLevel = block.Level;
- sender.OriginationsCount++;
-
- if (contractDelegate != null)
- {
- Db.TryAttach(contractDelegate);
- contractDelegate.LastLevel = block.Level;
- if (contractDelegate != sender)
- contractDelegate.OriginationsCount++;
- }
-
- if (initiator != sender && initiator != contractDelegate)
- {
- initiator.OriginationsCount++;
- }
-
- block.Operations |= Operations.Originations;
-
- Cache.AppState.Get().OriginationOpsCount++;
- #endregion
-
- #region apply result
- if (origination.Status == OperationStatus.Applied)
- {
- var burned = (origination.StorageFee ?? 0) + (origination.AllocationFee ?? 0);
- Proto.Manager.Burn(burned);
-
- Spend(initiator, burned);
-
- Spend(sender, origination.Balance);
- sender.ContractsCount++;
-
- Contract? contract;
- var contractAddress = result.RequiredArray("originated_contracts", 1)[0].RequiredString();
- var ghost = await Cache.Accounts.GetAsync(contractAddress);
- if (ghost != null)
- {
- contract = new Contract
- {
- Id = ghost.Id,
- Index = ghost.Index,
- FirstLevel = ghost.FirstLevel,
- LastLevel = origination.Level,
- Address = contractAddress,
- Counter = 0,
- CreatorId = sender.Id,
- Type = AccountType.Contract,
- Kind = ContractKind.SmartContract,
- OriginationsCount = 1,
- ActiveTokensCount = ghost.ActiveTokensCount,
- TokenBalancesCount = ghost.TokenBalancesCount,
- TokenTransfersCount = ghost.TokenTransfersCount,
- ActiveTicketsCount = ghost.ActiveTicketsCount,
- TicketBalancesCount = ghost.TicketBalancesCount,
- TicketTransfersCount = ghost.TicketTransfersCount
- };
- Db.Entry(ghost).State = EntityState.Detached;
- Db.Entry(contract).State = EntityState.Modified;
- }
- else
- {
- contract = new Contract
- {
- Id = Cache.AppState.NextAccountId(),
- FirstLevel = origination.Level,
- LastLevel = origination.Level,
- Address = contractAddress,
- Counter = 0,
- CreatorId = sender.Id,
- Type = AccountType.Contract,
- Kind = ContractKind.SmartContract,
- OriginationsCount = 1
- };
- Db.Contracts.Add(contract);
- }
- Receive(contract, origination.Balance);
- Cache.Accounts.Add(contract);
- origination.ContractId = contract.Id;
- Contract = contract;
-
- if (contractDelegate is Data.Models.Delegate _contractDelegate)
- Delegate(contract, _contractDelegate, origination.Level);
-
- var code = await ExpandCode(contract, GetCode(content));
- var storage = GetStorage(content);
-
- BigMapDiffs = ParseBigMapDiffs(origination, result, code, storage);
- await ProcessScript(origination, contract, code, storage);
-
- Cache.Statistics.Current.TotalBurned += burned;
- }
- #endregion
-
- Db.OriginationOps.Add(origination);
- Context.OriginationOps.Add(origination);
- Origination = origination;
- }
-
- public virtual async Task Revert(Block block, OriginationOperation origination)
- {
- #region init
- var sender = await Cache.Accounts.GetAsync(origination.SenderId);
- var contractDelegate = origination.DelegateId is int delegateId
- ? await Cache.Accounts.GetAsync(delegateId)
- : null;
- var contract = origination.ContractId is int contractId
- ? await Cache.Accounts.GetAsync(contractId) as Contract
- : null;
-
- Db.TryAttach(sender);
- Db.TryAttach(contractDelegate);
- Db.TryAttach(contract);
- #endregion
-
- #region revert result
- if (origination.Status == OperationStatus.Applied)
- {
- await RevertScript(origination, contract!);
-
- if (contractDelegate is Data.Models.Delegate _contractDelegate)
- Undelegate(contract!, _contractDelegate);
-
- contract!.OriginationsCount--;
- if (contract.TransactionsCount == 0 &&
- contract.TransferTicketCount == 0 &&
- contract.IncreasePaidStorageCount == 0 &&
- contract.TokenTransfersCount == 0 &&
- contract.TicketTransfersCount == 0 &&
- contract.Index is null)
- {
- Db.Accounts.Remove(contract);
- Cache.Accounts.Remove(contract);
- }
- else
- {
- var ghost = new Account
- {
- Id = contract.Id,
- Index = contract.Index,
- Address = contract.Address,
- FirstLevel = contract.FirstLevel,
- LastLevel = origination.Level,
- Type = AccountType.Ghost,
- ActiveTokensCount = contract.ActiveTokensCount,
- TokenBalancesCount = contract.TokenBalancesCount,
- TokenTransfersCount = contract.TokenTransfersCount,
- ActiveTicketsCount = contract.ActiveTicketsCount,
- TicketBalancesCount = contract.TicketBalancesCount,
- TicketTransfersCount = contract.TicketTransfersCount,
- };
-
- Db.Entry(contract).State = EntityState.Detached;
- Db.Entry(ghost).State = EntityState.Modified;
- Cache.Accounts.Add(ghost);
- }
-
- var spent = origination.Balance + (origination.StorageFee ?? 0) + (origination.AllocationFee ?? 0);
-
- RevertSpend(sender, spent);
- sender.ContractsCount--;
- }
- #endregion
-
- #region revert operation
- RevertPayFee(sender, origination.BakerFee);
- sender.LastLevel = block.Level;
- sender.Counter = origination.Counter - 1;
- if (sender is User user) user.Revealed = true;
- sender.OriginationsCount--;
-
- if (contractDelegate != null)
- {
- contractDelegate.LastLevel = block.Level;
- if (contractDelegate != sender)
- contractDelegate.OriginationsCount--;
- }
-
- Cache.AppState.Get().OriginationOpsCount--;
- #endregion
-
- Db.OriginationOps.Remove(origination);
- Cache.AppState.ReleaseManagerCounter();
- Cache.AppState.ReleaseOperationId();
- }
-
- public virtual async Task RevertInternal(Block block, OriginationOperation origination)
- {
- #region init
- var initiator = await Cache.Accounts.GetAsync(origination.InitiatorId!.Value);
- var sender = await Cache.Accounts.GetAsync(origination.SenderId);
- var contractDelegate = origination.DelegateId is int delegateId
- ? await Cache.Accounts.GetAsync(delegateId)
- : null;
- var contract = origination.ContractId is int contractId
- ? await Cache.Accounts.GetAsync(contractId) as Contract
- : null;
-
- Db.TryAttach(initiator);
- Db.TryAttach(sender);
- Db.TryAttach(contractDelegate);
- Db.TryAttach(contract);
- #endregion
-
- #region revert result
- if (origination.Status == OperationStatus.Applied)
- {
- await RevertScript(origination, contract!);
-
- if (contractDelegate is Data.Models.Delegate _contractDelegate)
- Undelegate(contract!, _contractDelegate);
-
- contract!.OriginationsCount--;
- if (contract.TransactionsCount == 0 &&
- contract.TransferTicketCount == 0 &&
- contract.IncreasePaidStorageCount == 0 &&
- contract.TokenTransfersCount == 0 &&
- contract.TicketTransfersCount == 0 &&
- contract.Index is null)
- {
- Db.Accounts.Remove(contract);
- Cache.Accounts.Remove(contract);
- }
- else
- {
- var ghost = new Account
- {
- Id = contract.Id,
- Index = contract.Index,
- Address = contract.Address,
- FirstLevel = contract.FirstLevel,
- LastLevel = origination.Level,
- Type = AccountType.Ghost,
- ActiveTokensCount = contract.ActiveTokensCount,
- TokenBalancesCount = contract.TokenBalancesCount,
- TokenTransfersCount = contract.TokenTransfersCount,
- ActiveTicketsCount = contract.ActiveTicketsCount,
- TicketBalancesCount = contract.TicketBalancesCount,
- TicketTransfersCount = contract.TicketTransfersCount,
- };
-
- Db.Entry(contract).State = EntityState.Detached;
- Db.Entry(ghost).State = EntityState.Modified;
- Cache.Accounts.Add(ghost);
- }
-
- var spent = (origination.StorageFee ?? 0) + (origination.AllocationFee ?? 0);
- RevertSpend(initiator, spent);
-
- RevertSpend(sender, origination.Balance);
- sender.ContractsCount--;
- }
- #endregion
-
- #region revert operation
- sender.LastLevel = block.Level;
- sender.OriginationsCount--;
-
- if (contractDelegate != null)
- {
- contractDelegate.LastLevel = block.Level;
- if (contractDelegate != sender)
- contractDelegate.OriginationsCount--;
- }
-
- if (initiator != sender && initiator != contractDelegate)
- {
- initiator.OriginationsCount--;
- }
-
- Cache.AppState.Get().OriginationOpsCount--;
- #endregion
-
- Db.OriginationOps.Remove(origination);
- Cache.AppState.ReleaseOperationId();
- }
-
- protected virtual int GetConsumedGas(JsonElement result)
- {
- return result.OptionalInt32("consumed_gas") ?? 0;
- }
-
- protected virtual IMicheline GetCode(JsonElement content)
- {
- return content.TryGetProperty("script", out var script)
- ? Micheline.FromJson(script.Required("code"))!
- // WTF: Before Proto5 some contracts had no code nor storage
- : Micheline.FromBytes(Script.ManagerTzBytes);
- }
-
- protected virtual IMicheline GetStorage(JsonElement content)
- {
- return content.TryGetProperty("script", out var script)
- ? Micheline.FromJson(script.Required("storage"))!
- // WTF: Different nodes return different manager prop name.
- : new MichelineString(content.OptionalString("managerPubkey") ?? content.RequiredString("manager_pubkey"));
- }
-
- protected async Task ExpandCode(Contract contract, IMicheline code)
- {
- if (code is not MichelineArray array)
- {
- var constants = await Constants.Find(Db, [code]);
- if (constants.Count > 0)
- {
- contract.Tags |= ContractTags.Constants;
- foreach (var constant in constants)
- {
- Db.TryAttach(constant);
- constant.Refs++;
- }
- var dict = constants.ToDictionary(x => x.Address!, x => Micheline.FromBytes(x.Value!));
- array = Constants.Expand(code, dict) as MichelineArray
- ?? throw new Exception("Contract code should be an array or constant");
- }
- else
- {
- throw new Exception("Contract code should be an array or constant");
- }
- }
- return array;
- }
-
- protected async Task ProcessScript(OriginationOperation origination, Contract contract, MichelineArray code, IMicheline storageValue)
- {
- #region expand top-level constants
- var constants = await Constants.Find(Db, code);
- if (constants.Count > 0)
- {
- var depth = 0;
- while (code.Any(x => x is MichelinePrim prim && prim.Prim == PrimType.constant) && depth++ <= 10_000)
- {
- for (int i = 0; i < code.Count; i++)
- {
- if (code[i] is MichelinePrim prim && prim.Prim == PrimType.constant)
- {
- code[i] = Micheline.FromBytes(constants.First(x => x.Address == (prim.Args![0] as MichelineString)!.Value).Value!);
- }
- }
- }
- }
- #endregion
-
- var micheParameter = code.First(x => x is MichelinePrim p && p.Prim == PrimType.parameter);
- var micheStorage = code.First(x => x is MichelinePrim p && p.Prim == PrimType.storage);
- var micheCode = code.First(x => x is MichelinePrim p && p.Prim == PrimType.code);
- var micheViews = code.Where(x => x is MichelinePrim p && p.Prim == PrimType.view);
-
- #region process constants
- if (constants.Count > 0)
- {
- contract.Tags |= ContractTags.Constants;
- foreach (var constant in constants)
- {
- Db.TryAttach(constant);
- constant.Refs++;
- }
- var dict = constants.ToDictionary(x => x.Address!, x => Micheline.FromBytes(x.Value!));
- micheParameter = Constants.Expand(micheParameter, dict);
- micheStorage = Constants.Expand(micheStorage, dict);
- foreach (var view in micheViews.Select(x => (x as MichelinePrim)!))
- {
- view.Args![1] = Constants.Expand(view.Args[1], dict);
- view.Args[2] = Constants.Expand(view.Args[2], dict);
- }
- }
- #endregion
-
- var script = new Script
- {
- Id = Cache.AppState.NextScriptId(),
- Level = origination.Level,
- ContractId = contract.Id,
- OriginationId = origination.Id,
- ParameterSchema = micheParameter.ToBytes(),
- StorageSchema = micheStorage.ToBytes(),
- CodeSchema = micheCode.ToBytes(),
- Views = micheViews.Any()
- ? [..micheViews.Select(x => x.ToBytes())]
- : null,
- Current = true
- };
-
- var viewsBytes = script.Views?
- .OrderBy(x => x, new BytesComparer())
- .SelectMany(x => x)
- .ToArray()
- ?? [];
- var typeSchema = script.ParameterSchema.Concat(script.StorageSchema).Concat(viewsBytes);
- var fullSchema = typeSchema.Concat(script.CodeSchema);
- contract.TypeHash = script.TypeHash = Script.GetHash(typeSchema);
- origination.ContractCodeHash = contract.CodeHash = script.CodeHash = Script.GetHash(fullSchema);
-
- if ((storageValue.Type == MichelineType.String || storageValue.Type == MichelineType.Bytes) &&
- code.ToBytes().IsEqual(Script.ManagerTzBytes))
- {
- contract.Kind = ContractKind.DelegatorContract;
- }
- else
- {
- if (script.Schema.IsFA1())
- {
- if (script.Schema.IsFA12())
- contract.Tags |= ContractTags.FA12;
-
- contract.Tags |= ContractTags.FA1;
- contract.Kind = ContractKind.Asset;
- }
- if (script.Schema.IsFA2())
- {
- contract.Tags |= ContractTags.FA2;
- contract.Kind = ContractKind.Asset;
- }
- }
-
- if (BigMapDiffs != null)
- {
- var ind = 0;
- var ptrs = BigMapDiffs.Where(x => x.Action <= BigMapDiffAction.Copy && x.Ptr >= 0).Select(x => x.Ptr).ToList();
- var view = script.Schema.Storage.Schema.ToTreeView(storageValue);
-
- foreach (var bigmap in view.Nodes().Where(x => x.Schema.Prim == PrimType.big_map))
- storageValue = storageValue.Replace(bigmap.Value, new MichelineInt(ptrs[^++ind]));
- }
-
- var storage = new Storage
- {
- Id = Cache.AppState.NextStorageId(),
- Level = origination.Level,
- ContractId = contract.Id,
- OriginationId = origination.Id,
- RawValue = script.Schema.OptimizeStorage(storageValue, false).ToBytes(),
- JsonValue = script.Schema.HumanizeStorage(storageValue),
- Current = true
- };
-
- Db.Scripts.Add(script);
- Cache.Schemas.Add(contract, script.Schema);
-
- Db.Storages.Add(storage);
- Cache.Storages.Add(contract, storage);
-
- origination.ScriptId = script.Id;
- origination.StorageId = storage.Id;
- }
-
- protected async Task RevertScript(OriginationOperation origination, Contract contract)
- {
- #region process constants
- if (contract.Tags.HasFlag(ContractTags.Constants))
- {
- var script = await Db.Scripts
- .AsNoTracking()
- .Where(x => x.ContractId == contract.Id && x.Current)
- .Select(x => new { x.ParameterSchema, x.StorageSchema, x.CodeSchema, x.Views })
- .FirstAsync();
-
- var code = new MichelineArray
- {
- Micheline.FromBytes(script.ParameterSchema),
- Micheline.FromBytes(script.StorageSchema),
- Micheline.FromBytes(script.CodeSchema)
- };
- if (script.Views != null)
- foreach (var bytes in script.Views)
- code.Add(Micheline.FromBytes(bytes));
-
- // TODO: we're actually missing constants in parameter and storage,
- // as they were expanded, so refs may be reverted inaccurately.
- var constants = await Constants.Find(Db, code);
- foreach (var constant in constants)
- {
- Db.TryAttach(constant);
- constant.Refs--;
- }
- }
- #endregion
-
- Db.Scripts.Remove(new Script
- {
- Id = origination.ScriptId!.Value,
- ParameterSchema = [],
- StorageSchema = [],
- CodeSchema = [],
- Level = 0,
- ContractId = 0,
- });
- Cache.Schemas.Remove(contract);
- Cache.AppState.ReleaseScriptId();
-
- if (!Cache.Storages.TryGetCached(contract, out var storage))
- {
- storage = new Storage
- {
- Id = origination.StorageId!.Value,
- RawValue = [],
- JsonValue = string.Empty,
- Level = 0,
- ContractId = 0,
- };
- }
- Db.Storages.Remove(storage);
- Cache.Storages.Remove(contract);
- Cache.AppState.ReleaseStorageId();
- }
-
- protected virtual IEnumerable? ParseBigMapDiffs(OriginationOperation origination, JsonElement result, MichelineArray code, IMicheline storage)
- {
- List? res = null;
-
- var micheStorage = (code.First(x => x is MichelinePrim p && p.Prim == PrimType.storage) as MichelinePrim)!;
- var schema = new StorageSchema(micheStorage);
- var tree = schema.Schema.ToTreeView(storage);
- var bigmap = tree.Nodes().FirstOrDefault(x => x.Schema.Prim == PrimType.big_map);
-
- if (bigmap != null)
- {
- res =
- [
- new AllocDiff { Ptr = origination.ContractId!.Value }
- ];
- if (bigmap.Value is MichelineArray items && items.Count > 0)
- {
- foreach (var item in items)
- {
- var key = (item as MichelinePrim)!.Args![0];
- var value = (item as MichelinePrim)!.Args![1];
- res.Add(new UpdateDiff
- {
- Ptr = res[0].Ptr,
- Key = key,
- Value = value,
- KeyHash = (bigmap.Schema as BigMapSchema)!.GetKeyHash(key)
- });
- }
- }
- }
-
- return res;
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/RevealsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/RevealsCommit.cs
deleted file mode 100644
index 70a8b15b2..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/RevealsCommit.cs
+++ /dev/null
@@ -1,112 +0,0 @@
-using System.Text.Json;
-using Tzkt.Data.Models;
-using Tzkt.Data.Models.Base;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- class RevealsCommit(ProtocolHandler protocol) : ProtocolCommit(protocol)
- {
- public virtual async Task Apply(Block block, JsonElement op, JsonElement content)
- {
- #region init
- var sender = await Cache.Accounts.GetExistingAsync(content.RequiredString("source"));
-
- var pubKey = content.RequiredString("public_key");
- var result = content.Required("metadata").Required("operation_result");
- var reveal = new RevealOperation
- {
- Id = Cache.AppState.NextOperationId(),
- OpHash = op.RequiredString("hash"),
- Level = block.Level,
- Timestamp = block.Timestamp,
- BakerFee = content.RequiredInt64("fee"),
- Counter = content.RequiredInt32("counter"),
- GasLimit = content.RequiredInt32("gas_limit"),
- StorageLimit = content.RequiredInt32("storage_limit"),
- SenderId = sender.Id,
- Status = result.RequiredString("status") switch
- {
- "applied" => OperationStatus.Applied,
- "backtracked" => OperationStatus.Backtracked,
- "failed" => OperationStatus.Failed,
- "skipped" => OperationStatus.Skipped,
- _ => throw new NotImplementedException()
- },
- Errors = result.TryGetProperty("errors", out var errors)
- ? OperationErrors.Parse(content, errors)
- : null,
- GasUsed = GetConsumedGas(result)
- };
- #endregion
-
- #region apply operation
- Db.TryAttach(sender);
- PayFee(sender, reveal.BakerFee);
- sender.Counter = reveal.Counter;
- sender.RevealsCount++;
-
- block.Operations |= Operations.Reveals;
-
- Cache.AppState.Get().RevealOpsCount++;
- #endregion
-
- #region apply result
- ApplyResult(reveal, sender, pubKey);
- #endregion
-
- Proto.Manager.Set(sender);
- Db.RevealOps.Add(reveal);
- Context.RevealOps.Add(reveal);
- }
-
- public virtual async Task Revert(Block block, RevealOperation reveal)
- {
- #region entities
- var sender = await Cache.Accounts.GetAsync(reveal.SenderId);
-
- Db.TryAttach(sender);
- #endregion
-
- #region revert result
- RevertResult(reveal, sender);
- #endregion
-
- #region revert operation
- RevertPayFee(sender, reveal.BakerFee);
- sender.Counter = reveal.Counter - 1;
- sender.RevealsCount--;
-
- Cache.AppState.Get().RevealOpsCount--;
- #endregion
-
- Db.RevealOps.Remove(reveal);
- Cache.AppState.ReleaseManagerCounter();
- Cache.AppState.ReleaseOperationId();
- }
-
- protected virtual int GetConsumedGas(JsonElement result)
- {
- return result.OptionalInt32("consumed_gas") ?? 0;
- }
-
- protected virtual void ApplyResult(RevealOperation op, Account sender, string pubKey)
- {
- if (sender is User user)
- {
- user.PublicKey = pubKey;
- if (user.Balance > 0) user.Revealed = true;
- }
- }
-
- protected virtual void RevertResult(RevealOperation op, Account sender)
- {
- if (sender is User user)
- {
- if (user.RevealsCount == 1)
- user.PublicKey = null;
-
- user.Revealed = false;
- }
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/TransactionsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/TransactionsCommit.cs
deleted file mode 100644
index 1b628db66..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/Operations/TransactionsCommit.cs
+++ /dev/null
@@ -1,590 +0,0 @@
-using System.Numerics;
-using System.Text.Json;
-using Microsoft.EntityFrameworkCore;
-using Netezos.Contracts;
-using Netezos.Encoding;
-using Tzkt.Data.Models;
-using Tzkt.Data.Models.Base;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- class TransactionsCommit(ProtocolHandler protocol) : ProtocolCommit(protocol)
- {
- public TransactionOperation Transaction { get; private set; } = null!;
- public IEnumerable? BigMapDiffs { get; private set; }
- public IEnumerable? TicketUpdates { get; private set; }
- public Account? Target { get; private set; }
-
- public virtual async Task Apply(Block block, JsonElement op, JsonElement content)
- {
- #region init
- var sender = await Cache.Accounts.GetExistingAsync(content.RequiredString("source"));
- var target = await Cache.Accounts.GetOrCreateAsync(content.RequiredString("destination"));
-
- var result = content.Required("metadata").Required("operation_result");
-
- var transaction = new TransactionOperation
- {
- Id = Cache.AppState.NextOperationId(),
- Level = block.Level,
- Timestamp = block.Timestamp,
- OpHash = op.RequiredString("hash"),
- Amount = content.RequiredInt64("amount"),
- BakerFee = content.RequiredInt64("fee"),
- Counter = content.RequiredInt32("counter"),
- GasLimit = content.RequiredInt32("gas_limit"),
- StorageLimit = content.RequiredInt32("storage_limit"),
- SenderId = sender.Id,
- TargetId = target.Id,
- TargetCodeHash = (target as Contract)?.CodeHash,
- Status = result.RequiredString("status") switch
- {
- "applied" => OperationStatus.Applied,
- "backtracked" => OperationStatus.Backtracked,
- "failed" => OperationStatus.Failed,
- "skipped" => OperationStatus.Skipped,
- _ => throw new NotImplementedException()
- },
- Errors = result.TryGetProperty("errors", out var errors)
- ? OperationErrors.Parse(content, errors)
- : null,
- GasUsed = GetConsumedGas(result),
- StorageUsed = result.OptionalInt32("paid_storage_size_diff") ?? 0,
- StorageFee = result.OptionalInt32("paid_storage_size_diff") > 0
- ? result.OptionalInt32("paid_storage_size_diff") * Context.Protocol.ByteCost
- : null,
- AllocationFee = HasAllocated(result)
- ? (long?)Context.Protocol.OriginationSize * Context.Protocol.ByteCost
- : null
- };
-
-
- if (target is not User && content.TryGetProperty("parameters", out var parameters))
- await ProcessParameters(transaction, target, parameters);
- #endregion
-
- #region apply operation
- Db.TryAttach(sender);
- PayFee(sender, transaction.BakerFee);
- sender.Counter = transaction.Counter;
- sender.TransactionsCount++;
-
- Db.TryAttach(target);
- if (target != sender)
- target.TransactionsCount++;
-
- block.Operations |= Operations.Transactions;
-
- Cache.AppState.Get().TransactionOpsCount++;
- #endregion
-
- #region apply result
- if (transaction.Status == OperationStatus.Applied)
- {
- var burned = (transaction.StorageFee ?? 0) + (transaction.AllocationFee ?? 0);
- Proto.Manager.Burn(burned);
-
- Spend(sender, transaction.Amount + burned);
-
- Receive(target, transaction.Amount);
-
- await ResetGracePeriod(transaction, target);
-
- if (result.TryGetProperty("storage", out var storage))
- {
- BigMapDiffs = ParseBigMapDiffs(transaction, result);
- await ProcessStorage(transaction, target, storage);
- }
-
- await ApplyAddressRegistryDiffs(transaction, result);
-
- TicketUpdates = ParseTicketUpdates("ticket_updates", result);
-
- if (target is SmartRollup)
- Proto.Inbox.Push(transaction.Id);
-
- Cache.Statistics.Current.TotalBurned += burned;
- if (target.Id == NullAddress.Id)
- Cache.Statistics.Current.TotalBanished += transaction.Amount;
- }
- #endregion
-
- Proto.Manager.Set(sender);
- //Db.TransactionOps.Add(transaction);
- Context.TransactionOps.Add(transaction);
- Transaction = transaction;
- Target = target;
- }
-
- public virtual async Task ApplyInternal(Block block, ManagerOperation parent, JsonElement content)
- {
- #region init
- var parentSender = await Cache.Accounts.GetAsync(parent.SenderId);
- var sender = await Cache.Accounts.GetOrCreateAsync(content.RequiredString("source"));
- var target = await Cache.Accounts.GetOrCreateAsync(content.RequiredString("destination"));
-
- var result = content.Required("result");
-
- var transaction = new TransactionOperation
- {
- Id = Cache.AppState.NextOperationId(),
- InitiatorId = parent.SenderId,
- Level = parent.Level,
- Timestamp = parent.Timestamp,
- OpHash = parent.OpHash,
- Counter = parent.Counter,
- Amount = content.RequiredInt64("amount"),
- Nonce = content.RequiredInt32("nonce"),
- SenderId = sender.Id,
- SenderCodeHash = (sender as Contract)?.CodeHash,
- TargetId = target.Id,
- TargetCodeHash = (target as Contract)?.CodeHash,
- Status = result.RequiredString("status") switch
- {
- "applied" => OperationStatus.Applied,
- "backtracked" => OperationStatus.Backtracked,
- "failed" => OperationStatus.Failed,
- "skipped" => OperationStatus.Skipped,
- _ => throw new NotImplementedException()
- },
- Errors = result.TryGetProperty("errors", out var errors)
- ? OperationErrors.Parse(content, errors)
- : null,
- GasUsed = GetConsumedGas(result),
- StorageUsed = result.OptionalInt32("paid_storage_size_diff") ?? 0,
- StorageFee = result.OptionalInt32("paid_storage_size_diff") > 0
- ? result.OptionalInt32("paid_storage_size_diff") * Context.Protocol.ByteCost
- : null,
- AllocationFee = HasAllocated(result)
- ? (long?)Context.Protocol.OriginationSize * Context.Protocol.ByteCost
- : null
- };
-
- if (target is not User && content.TryGetProperty("parameters", out var parameters))
- await ProcessParameters(transaction, target, parameters);
- #endregion
-
- #region apply operation
- if (parent is TransactionOperation parentTx)
- {
- parentTx.InternalOperations = (short?)((parentTx.InternalOperations ?? 0) + 1);
- parentTx.InternalTransactions = (short?)((parentTx.InternalTransactions ?? 0) + 1);
- }
-
- Db.TryAttach(sender);
- sender.TransactionsCount++;
-
- Db.TryAttach(target);
- if (target != sender)
- target.TransactionsCount++;
-
- if (parentSender != sender && parentSender != target)
- parentSender.TransactionsCount++;
-
- block.Operations |= Operations.Transactions;
-
- Cache.AppState.Get().TransactionOpsCount++;
- #endregion
-
- #region apply result
- if (transaction.Status == OperationStatus.Applied)
- {
- var burned = (transaction.StorageFee ?? 0) + (transaction.AllocationFee ?? 0);
- Proto.Manager.Burn(burned);
-
- Spend(parentSender, burned);
-
- Spend(sender, transaction.Amount);
-
- Receive(target, transaction.Amount);
-
- if (target == parentSender)
- Proto.Manager.Credit(transaction.Amount);
-
- await ResetGracePeriod(transaction, target);
-
- if (result.TryGetProperty("storage", out var storage))
- {
- BigMapDiffs = ParseBigMapDiffs(transaction, result);
- await ProcessStorage(transaction, target, storage);
- }
-
- await ApplyAddressRegistryDiffs(transaction, result);
-
- TicketUpdates = ParseTicketUpdates("ticket_receipt", result);
-
- if (target is SmartRollup)
- Proto.Inbox.Push(transaction.Id);
-
- Cache.Statistics.Current.TotalBurned += burned;
- if (target.Id == NullAddress.Id)
- Cache.Statistics.Current.TotalBanished += transaction.Amount;
- }
- #endregion
-
- //Db.TransactionOps.Add(transaction);
- Context.TransactionOps.Add(transaction);
- Transaction = transaction;
- Target = target;
- }
-
- public virtual async Task Revert(Block block, TransactionOperation transaction)
- {
- #region entities
- var sender = await Cache.Accounts.GetAsync(transaction.SenderId);
- var target = await Cache.Accounts.GetAsync(transaction.TargetId);
-
- Db.TryAttach(sender);
- Db.TryAttach(target);
- #endregion
-
- #region revert result
- if (transaction.Status == OperationStatus.Applied)
- {
- RevertReceive(target, transaction.Amount);
-
- if (target is Data.Models.Delegate delegat)
- {
- if (transaction.ResetDeactivation != null)
- {
- if (transaction.ResetDeactivation <= transaction.Level)
- await DeactivateBaker(delegat);
-
- delegat.DeactivationLevel = (int)transaction.ResetDeactivation;
- }
- }
-
- RevertSpend(sender, transaction.Amount + (transaction.StorageFee ?? 0) + (transaction.AllocationFee ?? 0));
-
- if (transaction.StorageId != null)
- await RevertStorage(transaction, (target as Contract)!);
-
- await RevertAddressRegistryDiffs(transaction);
- }
- #endregion
-
- #region revert operation
- RevertPayFee(sender, transaction.BakerFee);
-
- sender.TransactionsCount--;
- if (target != sender) target.TransactionsCount--;
-
- sender.Counter = transaction.Counter - 1;
- if (sender is User user) user.Revealed = true;
-
- Cache.AppState.Get().TransactionOpsCount--;
- #endregion
-
- //Db.TransactionOps.Remove(transaction);
- Cache.AppState.ReleaseManagerCounter();
- Cache.AppState.ReleaseOperationId();
- }
-
- public virtual async Task RevertInternal(Block block, TransactionOperation transaction)
- {
- #region entities
- var parentSender = await Cache.Accounts.GetAsync(transaction.InitiatorId!.Value);
- var sender = await Cache.Accounts.GetAsync(transaction.SenderId);
- var target = await Cache.Accounts.GetAsync(transaction.TargetId);
-
- Db.TryAttach(parentSender);
- Db.TryAttach(sender);
- Db.TryAttach(target);
- #endregion
-
- #region revert result
- if (transaction.Status == OperationStatus.Applied)
- {
- RevertReceive(target, transaction.Amount);
-
- if (target is Data.Models.Delegate delegat)
- {
- if (transaction.ResetDeactivation != null)
- {
- if (transaction.ResetDeactivation <= transaction.Level)
- await DeactivateBaker(delegat);
-
- delegat.DeactivationLevel = (int)transaction.ResetDeactivation;
- }
- }
-
- RevertSpend(sender, transaction.Amount);
-
- RevertSpend(parentSender, (transaction.StorageFee ?? 0) + (transaction.AllocationFee ?? 0));
-
- if (transaction.StorageId != null)
- await RevertStorage(transaction, (target as Contract)!);
-
- await RevertAddressRegistryDiffs(transaction);
- }
- #endregion
-
- #region revert operation
- sender.TransactionsCount--;
- if (target != sender) target.TransactionsCount--;
- if (parentSender != sender && parentSender != target) parentSender.TransactionsCount--;
-
- Cache.AppState.Get().TransactionOpsCount--;
- #endregion
-
- //Db.TransactionOps.Remove(transaction);
- Cache.AppState.ReleaseOperationId();
- }
-
- protected virtual bool HasAllocated(JsonElement result) => false;
-
- protected virtual async Task ResetGracePeriod(TransactionOperation transaction, Account target)
- {
- if (target is Data.Models.Delegate delegat)
- {
- var newDeactivationLevel = delegat.Staked ? GracePeriod.Reset(transaction.Level, Context.Protocol) : GracePeriod.Init(transaction.Level, Context.Protocol);
- if (delegat.DeactivationLevel < newDeactivationLevel)
- {
- if (delegat.DeactivationLevel <= transaction.Level)
- await ActivateBaker(delegat);
-
- transaction.ResetDeactivation = delegat.DeactivationLevel;
- delegat.DeactivationLevel = newDeactivationLevel;
- }
- }
- }
-
- protected virtual async Task ProcessParameters(TransactionOperation transaction, Account target, JsonElement parameters)
- {
- var (rawEp, rawParam) = ("default", Micheline.FromJson(parameters)!);
-
- if (target is Contract contract)
- {
- if (contract.Kind == ContractKind.DelegatorContract)
- {
- if (rawParam is MichelinePrim p && p.Prim == PrimType.Unit)
- return;
-
- transaction.Entrypoint = rawEp;
- transaction.RawParameters = rawParam.ToBytes();
- }
- else
- {
- try
- {
- var schema = await Cache.Schemas.GetAsync(contract);
- var (normEp, normParam) = schema.NormalizeParameter(rawEp, rawParam);
-
- transaction.Entrypoint = normEp;
- transaction.RawParameters = schema.OptimizeParameter(normEp, normParam).ToBytes();
- transaction.JsonParameters = schema.HumanizeParameter(normEp, normParam);
- }
- catch (Exception ex)
- {
- transaction.Entrypoint ??= rawEp;
- transaction.RawParameters ??= rawParam.ToBytes();
-
- if (transaction.Status == OperationStatus.Applied)
- Logger.LogError(ex, "Failed to humanize tx {hash} parameters", transaction.OpHash);
- }
- }
- }
- else
- {
- transaction.Entrypoint = rawEp;
- transaction.RawParameters = rawParam.ToBytes();
- }
- }
-
- protected virtual async Task ProcessStorage(TransactionOperation transaction, Account target, JsonElement storage)
- {
- if (target is not Contract contract || contract.Kind == ContractKind.DelegatorContract)
- return;
-
- var schema = await Cache.Schemas.GetAsync(contract);
- var currentStorage = await Cache.Storages.GetAsync(contract);
-
- var newStorageMicheline = schema.OptimizeStorage(Micheline.FromJson(storage)!, false);
- newStorageMicheline = NormalizeStorage(transaction, newStorageMicheline, schema);
- var newStorageBytes = newStorageMicheline.ToBytes();
-
- if (newStorageBytes.IsEqual(currentStorage.RawValue))
- {
- transaction.StorageId = currentStorage.Id;
- return;
- }
-
- Db.TryAttach(currentStorage);
- currentStorage.Current = false;
-
- var newStorage = new Storage
- {
- Id = Cache.AppState.NextStorageId(),
- Level = transaction.Level,
- ContractId = contract.Id,
- TransactionId = transaction.Id,
- RawValue = newStorageBytes,
- JsonValue = schema.HumanizeStorage(newStorageMicheline),
- Current = true,
- };
-
- Db.Storages.Add(newStorage);
- Cache.Storages.Add(contract, newStorage);
-
- transaction.StorageId = newStorage.Id;
- }
-
- public async Task RevertStorage(TransactionOperation transaction, Contract contract)
- {
- var storage = await Cache.Storages.GetAsync(contract);
- if (storage.TransactionId == transaction.Id)
- {
- var prevStorage = await Db.Storages
- .Where(x => x.ContractId == contract.Id && x.Id < storage.Id)
- .OrderByDescending(x => x.Id)
- .FirstAsync();
-
- prevStorage.Current = true;
- Cache.Storages.Add(contract, prevStorage);
-
- Db.Storages.Remove(storage);
- Cache.AppState.ReleaseStorageId();
- }
- }
-
- protected virtual IMicheline NormalizeStorage(TransactionOperation transaction, IMicheline storage, ContractScript schema)
- {
- var view = schema.Storage.Schema.ToTreeView(storage);
- var bigmap = view.Nodes().FirstOrDefault(x => x.Schema.Prim == PrimType.big_map);
- if (bigmap != null)
- storage = storage.Replace(bigmap.Value, new MichelineInt(transaction.TargetId));
- return storage;
- }
-
- protected virtual IEnumerable? ParseBigMapDiffs(TransactionOperation transaction, JsonElement result)
- {
- if (transaction.Level != 5993)
- return null;
- // It seems there were no big_map diffs at all in proto 1
- // thus there was no an adequate way to track big_map updates,
- // so the only way to handle this single big_map update is hardcoding
- return
- [
- new UpdateDiff
- {
- Ptr = transaction.TargetId,
- KeyHash = "exprteAx9hWkXvYSQ4nN9SqjJGVR1sTneHQS1QEcSdzckYdXZVvsqY",
- Key = new MichelineString("KT1R3uoZ6W1ZxEwzqtv75Ro7DhVY6UAcxuK2"),
- Value = new MichelinePrim
- {
- Prim = PrimType.Pair,
- Args =
- [
- new MichelineString("Aliases Contract"),
- new MichelinePrim
- {
- Prim = PrimType.Pair,
- Args =
- [
- new MichelinePrim { Prim = PrimType.None },
- new MichelinePrim
- {
- Prim = PrimType.Pair,
- Args =
- [
- new MichelineInt(0),
- new MichelinePrim
- {
- Prim = PrimType.Pair,
- Args =
- [
- new MichelinePrim
- {
- Prim = PrimType.Left,
- Args =
- [
- new MichelinePrim { Prim = PrimType.Unit }
- ]
- },
- new MichelineInt(1530741267)
- ]
- }
- ]
- }
- ]
- }
- ]
- },
- }
- ];
- }
-
- protected virtual int GetConsumedGas(JsonElement result)
- {
- return result.OptionalInt32("consumed_gas") ?? 0;
- }
-
- protected virtual IEnumerable? ParseTicketUpdates(string property, JsonElement result)
- {
- if (!result.TryGetProperty(property, out var ticketUpdates))
- return null;
-
- var res = new List();
- foreach (var updates in ticketUpdates.RequiredArray().EnumerateArray())
- {
- var list = new List();
- foreach (var update in updates.RequiredArray("updates").EnumerateArray())
- {
- var amount = update.RequiredBigInteger("amount");
- if (amount != BigInteger.Zero)
- {
- list.Add(new TicketUpdate
- {
- Account = update.RequiredString("account"),
- Amount = amount
- });
- }
- }
-
- if (list.Count > 0)
- {
- var ticketToken = updates.Required("ticket_token");
- var type = Micheline.FromJson(ticketToken.Required("content_type"))!;
- var value = Micheline.FromJson(ticketToken.Required("content"))!;
- var rawType = type.ToBytes();
-
- byte[] rawContent;
- string? jsonContent;
-
- try
- {
- var schema = Schema.Create((type as MichelinePrim)!);
- rawContent = schema.Optimize(value).ToBytes();
- jsonContent = schema.Humanize(value);
- }
- catch (Exception ex)
- {
- Logger.LogError(ex, "Failed to parse ticket content");
- rawContent = value.ToBytes();
- jsonContent = null;
- }
-
- res.Add(new TicketUpdates
- {
- Ticket = new TicketIdentity
- {
- Ticketer = ticketToken.RequiredString("ticketer"),
- RawType = rawType,
- RawContent = rawContent,
- JsonContent = jsonContent,
- TypeHash = Script.GetHash(rawType),
- ContentHash = Script.GetHash(rawContent)
- },
- Updates = list
- });
- }
- }
-
- return res.Count > 0 ? res : null;
- }
-
- protected virtual Task ApplyAddressRegistryDiffs(TransactionOperation transaction, JsonElement result) => Task.CompletedTask;
-
- protected virtual Task RevertAddressRegistryDiffs(TransactionOperation transaction) => Task.CompletedTask;
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/SnapshotBalanceCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/SnapshotBalanceCommit.cs
deleted file mode 100644
index d1f77584c..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/SnapshotBalanceCommit.cs
+++ /dev/null
@@ -1,187 +0,0 @@
-using System.Text.Json;
-using Microsoft.EntityFrameworkCore;
-using Tzkt.Data.Models;
-using Tzkt.Data.Models.Base;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- class SnapshotBalanceCommit(ProtocolHandler protocol) : ProtocolCommit(protocol)
- {
- public virtual async Task Apply(JsonElement rawBlock, Block block)
- {
- if (!block.Events.HasFlag(BlockEvents.BalanceSnapshot))
- return;
-
- await TakeSnapshot(block);
- await TakeWeirdsSnapshot(block, Context.Protocol);
- }
-
- public virtual async Task Revert(Block block)
- {
- if (!block.Events.HasFlag(BlockEvents.BalanceSnapshot))
- return;
-
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "SnapshotBalances"
- WHERE "Level" = {0}
- """, block.Level);
- }
-
- protected virtual Task TakeSnapshot(Block block)
- {
- return Db.Database.ExecuteSqlRawAsync("""
- INSERT INTO "SnapshotBalances" (
- "Level",
- "BakerId",
- "AccountId",
- "OwnDelegatedBalance",
- "ExternalDelegatedBalance",
- "DelegatorsCount"
- )
- SELECT
- {0},
- COALESCE("DelegateId", "Id"),
- "Id",
- COALESCE("OwnDelegatedBalance", "Balance"),
- "ExternalDelegatedBalance",
- "DelegatorsCount"
- FROM "Accounts"
- WHERE "Staked" = true
- """, block.Level);
- }
-
- protected Task RemoveOutdated(Block block, Protocol protocol)
- {
- if (!block.Events.HasFlag(BlockEvents.CycleEnd))
- return Task.CompletedTask;
-
- var level = block.Level - (protocol.ConsensusRightsDelay + 3) * protocol.BlocksPerCycle;
- return Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "SnapshotBalances"
- WHERE "Level" <= {0}
- """, level);
- }
-
- protected virtual async Task TakeDeactivatedSnapshot(Block block)
- {
- var deactivated = await Db.Delegates
- .AsNoTracking()
- .GroupJoin(Db.Accounts, x => x.Id, x => x.DelegateId, (baker, delegators) => new { baker, delegators })
- .Where(x => x.baker.DeactivationLevel == block.Level)
- .ToListAsync();
-
- if (deactivated.Count != 0)
- {
- var values = string.Join(",\n", deactivated
- .SelectMany(row =>
- new[] { $"({block.Level}, {row.baker.Id}, {row.baker.Id}, {row.baker.OwnDelegatedBalance}, {row.baker.ExternalDelegatedBalance}, {row.baker.DelegatorsCount})" }
- .Concat(row.delegators.Select(delegator => $"({block.Level}, {delegator.DelegateId}, {delegator.Id}, {delegator.Balance}, NULL::bigint, NULL::integer)"))));
-
- if (values.Length > 0)
- {
-#pragma warning disable EF1002 // Risk of vulnerability to SQL injection.
- await Db.Database.ExecuteSqlRawAsync($"""
- INSERT INTO "SnapshotBalances" (
- "Level",
- "BakerId",
- "AccountId",
- "OwnDelegatedBalance",
- "ExternalDelegatedBalance",
- "DelegatorsCount"
- )
- VALUES
- {values}
- """);
-#pragma warning restore EF1002 // Risk of vulnerability to SQL injection.
- }
- }
- }
-
- protected virtual async Task SubtractCycleRewards(JsonElement rawBlock, Block block)
- {
- if (!block.Events.HasFlag(BlockEvents.CycleEnd))
- return;
-
- var rewards = string.Join(",\n", GetBalanceUpdates(rawBlock)
- .Where(x => x.RequiredString("kind")[0] == 'f' &&
- x.RequiredString("category")[0] == 'r' &&
- x.RequiredInt64("change") < 0 &&
- GetFreezerCycle(x) != block.Cycle)
- .Select(x => (x.RequiredString("delegate"), x.RequiredInt64("change")))
- .GroupBy(x => x.Item1)
- .Select(updates => $"({Cache.Accounts.GetExistingDelegate(updates.Key).Id}, {updates.Sum(x => -x.Item2)}::bigint)"));
-
- if (rewards.Length > 0)
- {
-#pragma warning disable EF1002 // Risk of vulnerability to SQL injection.
- await Db.Database.ExecuteSqlRawAsync($"""
- UPDATE "SnapshotBalances" as sb
- SET "OwnDelegatedBalance" = "OwnDelegatedBalance" - reward.value
- FROM (
- VALUES
- {rewards}
- ) as reward(baker, value)
- WHERE sb."Level" = {block.Level}
- AND sb."BakerId" = reward.baker
- AND sb."AccountId" = reward.baker
- """);
-#pragma warning restore EF1002 // Risk of vulnerability to SQL injection.
- }
- }
-
- protected virtual int GetFreezerCycle(JsonElement el)
- {
- return el.RequiredInt32("level");
- }
-
- protected virtual IEnumerable GetBalanceUpdates(JsonElement rawBlock)
- {
- return rawBlock
- .GetProperty("metadata")
- .GetProperty("balance_updates")
- .EnumerateArray();
- }
-
- async Task TakeWeirdsSnapshot(Block block, Protocol protocol)
- {
- var weirdOriginations = (await Db.OriginationOps
- .AsNoTracking()
- .Join(Db.Accounts, x => x.DelegateId, x => x.Id, (op, delegat) => new { op, delegat })
- .Join(Db.Accounts, x => x.op.ContractId, x => x.Id, (opDelegat, contract) => new { opDelegat.op, opDelegat.delegat, contract })
- .Where(x =>
- x.op.Status == OperationStatus.Applied &&
- x.op.DelegateId != null &&
- x.delegat.Type != AccountType.Delegate &&
- x.contract.DelegateId == null)
- .ToListAsync())
- .GroupBy(x => x.delegat.Id);
-
- if (weirdOriginations.Any())
- {
- var values = string.Join(",\n", weirdOriginations
- .Where(weirds => weirds.Sum(x => x.contract.Balance) >= protocol.MinimalStake)
- .SelectMany(weirds =>
- new[] { $"({block.Level}, {weirds.Key}, {weirds.Key}, 0, {weirds.Sum(x => x.contract.Balance)}, {weirds.Count()})" }
- .Concat(weirds.Select(x => $"({block.Level}, {weirds.Key}, {x.contract.Id}, {x.contract.Balance}, NULL::bigint, NULL::integer)"))));
-
- if (values.Length > 0)
- {
-#pragma warning disable EF1002 // Risk of vulnerability to SQL injection.
- await Db.Database.ExecuteSqlRawAsync($"""
- INSERT INTO "SnapshotBalances" (
- "Level",
- "BakerId",
- "AccountId",
- "OwnDelegatedBalance",
- "ExternalDelegatedBalance",
- "DelegatorsCount"
- )
- VALUES
- {values}
- """);
-#pragma warning restore EF1002 // Risk of vulnerability to SQL injection.
- }
- }
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/StateCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/StateCommit.cs
deleted file mode 100644
index 2319f09b1..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/StateCommit.cs
+++ /dev/null
@@ -1,54 +0,0 @@
-using System.Text.Json;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- class StateCommit(ProtocolHandler protocol) : ProtocolCommit(protocol)
- {
- public virtual Task Apply(Block block, JsonElement rawBlock)
- {
- var nextProtocol = rawBlock.Required("metadata").RequiredString("next_protocol");
- var appState = Cache.AppState.Get();
-
- #region entities
- var state = appState;
- #endregion
-
- state.Cycle = block.Cycle;
- state.Level = block.Level;
- state.Timestamp = block.Timestamp;
- state.Protocol = Context.Protocol.Hash;
- state.NextProtocol = nextProtocol;
- state.Hash = block.Hash;
-
- if (block.Events.HasFlag(BlockEvents.ProtocolBegin)) state.ProtocolsCount++;
- if (block.Events.HasFlag(BlockEvents.CycleBegin)) state.CyclesCount++;
-
- return Task.CompletedTask;
- }
-
- public virtual async Task Revert(Block block)
- {
- var nextProtocol = Context.Protocol.Hash;
- var appState = Cache.AppState.Get();
-
- #region entities
- var state = appState;
- var prevBlock = await Cache.Blocks.PreviousAsync();
- var prevProtocol = await Cache.Protocols.GetAsync(prevBlock.ProtoCode);
- #endregion
-
- state.Cycle = prevBlock.Cycle;
- state.Level = prevBlock.Level;
- state.Timestamp = prevBlock.Timestamp;
- state.Protocol = prevProtocol.Hash;
- state.NextProtocol = nextProtocol;
- state.Hash = prevBlock.Hash;
-
- if (block.Events.HasFlag(BlockEvents.ProtocolBegin)) state.ProtocolsCount--;
- if (block.Events.HasFlag(BlockEvents.CycleBegin)) state.CyclesCount--;
-
- Cache.Blocks.Remove(block);
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/StatisticsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/StatisticsCommit.cs
deleted file mode 100644
index 7e0ba18e9..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/StatisticsCommit.cs
+++ /dev/null
@@ -1,62 +0,0 @@
-using System.Text.Json;
-using Microsoft.EntityFrameworkCore;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- class StatisticsCommit(ProtocolHandler protocol) : ProtocolCommit(protocol)
- {
- public virtual async Task Apply(JsonElement rawBlock)
- {
- var prev = Cache.Statistics.Current;
- var statistics = new Statistics
- {
- Id = 0,
- Level = prev.Level + 1,
- TotalActivated = prev.TotalActivated,
- TotalBootstrapped = prev.TotalBootstrapped,
- TotalBurned = prev.TotalBurned,
- TotalBanished = prev.TotalBanished,
- TotalLost = prev.TotalLost,
- TotalCommitments = prev.TotalCommitments,
- TotalCreated = prev.TotalCreated,
- TotalFrozen = prev.TotalFrozen,
- TotalRollupBonds = prev.TotalRollupBonds,
- TotalSmartRollupBonds = prev.TotalSmartRollupBonds,
- TotalOwnStaked = prev.TotalOwnStaked,
- TotalExternalStaked = prev.TotalExternalStaked,
- TotalOwnDelegated = prev.TotalOwnDelegated,
- TotalExternalDelegated = prev.TotalExternalDelegated,
- TotalBakingPower = prev.TotalBakingPower,
- TotalVotingPower = prev.TotalVotingPower,
- TotalBakers = prev.TotalBakers,
- TotalStakers = prev.TotalStakers,
- TotalDelegators = prev.TotalDelegators
- };
-
- var protocol = await Cache.Protocols.GetAsync(rawBlock.RequiredString("protocol"));
- if (protocol.IsCycleEnd(statistics.Level))
- statistics.Cycle = protocol.GetCycle(statistics.Level);
-
- var timestamp = rawBlock.Required("header").RequiredDateTime("timestamp");
- var prevTimestamp = (await Cache.Blocks.GetAsync(prev.Level)).Timestamp;
- if (timestamp.Ticks / (10_000_000L * 3600 * 24) != prevTimestamp.Ticks / (10_000_000L * 3600 * 24))
- {
- Db.TryAttach(prev);
- prev.Date = prevTimestamp.Date;
- }
-
- Db.Statistics.Add(statistics);
- Cache.Statistics.SetCurrent(statistics);
- }
-
- public virtual async Task Revert(Block block)
- {
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "Statistics"
- WHERE "Level" = {0}
- """, block.Level);
- await Cache.Statistics.ResetAsync();
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/VotingCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/VotingCommit.cs
deleted file mode 100644
index 9b3d83a5d..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Commits/VotingCommit.cs
+++ /dev/null
@@ -1,353 +0,0 @@
-using System.Text.Json;
-using Microsoft.EntityFrameworkCore;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- class VotingCommit(ProtocolHandler protocol) : ProtocolCommit(protocol)
- {
- public virtual async Task Apply(Block block, JsonElement rawBlock)
- {
- var state = Cache.AppState.Get();
- var current = await Cache.Periods.GetAsync(state.VotingPeriod);
-
- if (block.Level != current.LastLevel) return;
-
- Db.TryAttach(current);
- current.Status = GetPeriodStatus(current);
-
- await UpdateProposalsStatus(current);
-
- var nextPeriod = current.Status == PeriodStatus.Success
- ? StartNextPeriod(block, Context.Protocol, current)
- : StartProposalPeriod(block, Context.Protocol, current);
-
- state.VotingPeriod = nextPeriod.Index;
- state.VotingEpoch = nextPeriod.Epoch;
- }
-
- public virtual async Task Revert(Block block)
- {
- var state = Cache.AppState.Get();
- var current = await Cache.Periods.GetAsync(state.VotingPeriod);
-
- if (block.Level != current.FirstLevel - 1) return;
-
- var prev = await Cache.Periods.GetAsync(state.VotingPeriod - 1);
-
- Db.TryAttach(prev);
- prev.Status = PeriodStatus.Active;
-
- if (prev.Kind != PeriodKind.Proposal || prev.ProposalsCount > 0)
- {
- var proposals = await Db.Proposals
- .Where(x => x.LastPeriod >= prev.Index)
- .ToListAsync();
-
- foreach (var proposal in proposals)
- {
- proposal.Status = ProposalStatus.Active;
- proposal.LastPeriod = prev.Index;
- }
- }
-
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "VotingPeriods" WHERE "Index" = {0};
- DELETE FROM "VotingSnapshots" WHERE "Period" = {0};
- """, current.Index);
- Cache.Periods.Remove(current);
-
- state.VotingPeriod = prev.Index;
- state.VotingEpoch = prev.Epoch;
- }
-
- protected PeriodStatus GetPeriodStatus(VotingPeriod p)
- {
- if (p.Kind == PeriodKind.Proposal)
- {
- if (p.ProposalsCount == 0)
- return PeriodStatus.NoProposals;
-
- if (p.TopVotingPower < p.TotalVotingPower.MulRatio(p.UpvotesQuorum!.Value, 10000))
- return PeriodStatus.NoQuorum;
-
- if (p.SingleWinner == false)
- return PeriodStatus.NoSingleWinner;
- }
- else if (p.Kind == PeriodKind.Exploration || p.Kind == PeriodKind.Promotion)
- {
- if (p.YayVotingPower + p.NayVotingPower + p.PassVotingPower < p.TotalVotingPower.MulRatio(p.BallotsQuorum!.Value, 10000))
- return PeriodStatus.NoQuorum;
-
- if (p.YayVotingPower < (p.YayVotingPower!.Value + p.NayVotingPower!.Value).MulRatio(p.Supermajority!.Value, 10000))
- return PeriodStatus.NoSupermajority;
- }
-
- return PeriodStatus.Success;
- }
-
- protected async Task UpdateProposalsStatus(VotingPeriod p)
- {
- if (p.Kind == PeriodKind.Proposal)
- {
- if (p.Status == PeriodStatus.NoProposals) return;
-
- var proposals = await Db.Proposals
- .Where(x => x.Status == ProposalStatus.Active)
- .ToListAsync();
-
- var pendings = Db.ChangeTracker.Entries()
- .Where(x => x.Entity is Proposal p && p.Status == ProposalStatus.Active)
- .Select(x => (x.Entity as Proposal)!)
- .ToList();
-
- foreach (var pending in pendings)
- if (!proposals.Any(x => x.Id == pending.Id))
- proposals.Add(pending);
-
- foreach (var proposal in proposals)
- proposal.Status = ProposalStatus.Skipped;
-
- if (p.Status == PeriodStatus.Success)
- {
- var winner = proposals.First(x => x.VotingPower == p.TopVotingPower);
- winner.Status = GetProposalStatus(winner, p);
- if (winner.Status == ProposalStatus.Active)
- winner.LastPeriod = p.Index + 1;
- }
- }
- else
- {
- var proposal = await Db.Proposals.FirstAsync(x => x.Status == ProposalStatus.Active);
- proposal.Status = GetProposalStatus(proposal, p);
- if (proposal.Status == ProposalStatus.Active)
- proposal.LastPeriod = p.Index + 1;
- }
- }
-
- protected virtual ProposalStatus GetProposalStatus(Proposal proposal, VotingPeriod period)
- {
- if (period.Status == PeriodStatus.Success)
- return period.Kind == PeriodKind.Promotion
- ? ProposalStatus.Accepted
- : ProposalStatus.Active;
-
- if (period.Status == PeriodStatus.NoSupermajority)
- return ProposalStatus.Rejected;
-
- return ProposalStatus.Skipped;
- }
-
- protected virtual VotingPeriod StartNextPeriod(Block block, Protocol protocol, VotingPeriod current)
- {
- return current.Kind switch
- {
- PeriodKind.Proposal => StartBallotPeriod(block, protocol, current, PeriodKind.Exploration),
- PeriodKind.Exploration => StartWaitingPeriod(block, protocol, current, PeriodKind.Testing),
- PeriodKind.Testing => StartBallotPeriod(block, protocol, current, PeriodKind.Promotion),
- PeriodKind.Promotion => StartProposalPeriod(block, protocol, current),
- _ => throw new Exception("Invalid voting period kind")
- };
- }
-
- protected VotingPeriod StartProposalPeriod(Block block, Protocol protocol, VotingPeriod current)
- {
- var period = new VotingPeriod
- {
- Id = 0,
- Index = current.Index + 1,
- Epoch = current.Epoch + 1,
- FirstLevel = block.Level + 1,
- LastLevel = block.Level + protocol.BlocksPerVoting,
- Kind = PeriodKind.Proposal,
- Status = PeriodStatus.Active
- };
-
- #region snapshot
- var snapshots = Cache.Accounts.GetDelegates()
- .Where(x => x.VotingPower != 0)
- .Select(x => new VotingSnapshot
- {
- Id = 0,
- Level = block.Level,
- Period = period.Index,
- BakerId = x.Id,
- VotingPower = x.VotingPower,
- Status = VoterStatus.None
- });
-
- period.TotalBakers = snapshots.Count();
- period.TotalVotingPower = snapshots.Sum(x => x.VotingPower);
- #endregion
-
- //#region temporary diagnostics
- //var listing = Proto.Node.GetAsync($"chains/main/blocks/{block.Level}/context/raw/json/votes/listings?depth=1").Result
- // .EnumerateArray()
- // .ToDictionary(x => x[0].RequiredString(), x => x[1].RequiredInt64());
-
- //if (snapshots.Count() != listing.Count)
- // throw new Exception("Wrong voting snapshots");
-
- //foreach (var snapshot in snapshots)
- // if (!listing.TryGetValue(Cache.Accounts.GetDelegate(snapshot.BakerId).Address, out var votingPower) || snapshot.VotingPower != votingPower)
- // throw new Exception("Wrong voting snapshot");
- //#endregion
-
- #region quorum
- period.UpvotesQuorum = protocol.ProposalQuorum;
- period.ProposalsCount = 0;
- period.TopUpvotes = 0;
- period.TopVotingPower = 0;
- period.SingleWinner = false;
- #endregion
-
- Db.VotingSnapshots.AddRange(snapshots);
- Db.VotingPeriods.Add(period);
- Cache.Periods.Add(period);
- return period;
- }
-
- protected VotingPeriod StartBallotPeriod(Block block, Protocol protocol, VotingPeriod current, PeriodKind kind)
- {
- var period = new VotingPeriod
- {
- Id = 0,
- Index = current.Index + 1,
- Epoch = current.Epoch,
- FirstLevel = block.Level + 1,
- LastLevel = block.Level + protocol.BlocksPerVoting,
- Kind = kind,
- Status = PeriodStatus.Active
- };
-
- #region snapshot
- var snapshots = Cache.Accounts.GetDelegates()
- .Where(x => x.VotingPower != 0)
- .Select(x => new VotingSnapshot
- {
- Id = 0,
- Level = block.Level,
- Period = period.Index,
- BakerId = x.Id,
- VotingPower = x.VotingPower,
- Status = VoterStatus.None
- });
-
- period.TotalBakers = snapshots.Count();
- period.TotalVotingPower = snapshots.Sum(x => x.VotingPower);
- #endregion
-
- //#region temporary diagnostics
- //var listing = Proto.Node.GetAsync($"chains/main/blocks/{block.Level}/context/raw/json/votes/listings?depth=1").Result
- // .EnumerateArray()
- // .ToDictionary(x => x[0].RequiredString(), x => x[1].RequiredInt64());
-
- //if (snapshots.Count() != listing.Count)
- // throw new Exception("Wrong voting snapshots");
-
- //foreach (var snapshot in snapshots)
- // if (!listing.TryGetValue(Cache.Accounts.GetDelegate(snapshot.BakerId).Address, out var votingPower) || snapshot.VotingPower != votingPower)
- // throw new Exception("Wrong voting snapshot");
- //#endregion
-
- #region quorum
- period.ParticipationEma = GetParticipationEma(period, protocol);
- period.BallotsQuorum = GetBallotQuorum(period, protocol);
- period.Supermajority = 8000;
-
- period.YayBallots = 0;
- period.YayVotingPower = 0;
- period.NayBallots = 0;
- period.NayVotingPower = 0;
- period.PassBallots = 0;
- period.PassVotingPower = 0;
- #endregion
-
- Db.VotingSnapshots.AddRange(snapshots);
- Db.VotingPeriods.Add(period);
- Cache.Periods.Add(period);
- return period;
- }
-
- protected VotingPeriod StartWaitingPeriod(Block block, Protocol protocol, VotingPeriod current, PeriodKind kind)
- {
- var period = new VotingPeriod
- {
- Id = 0,
- Index = current.Index + 1,
- Epoch = current.Epoch,
- FirstLevel = block.Level + 1,
- LastLevel = block.Level + protocol.BlocksPerVoting,
- Kind = kind,
- Status = PeriodStatus.Active
- };
-
- #region snapshot
- var snapshots = Cache.Accounts.GetDelegates()
- .Where(x => x.VotingPower != 0)
- .Select(x => new VotingSnapshot
- {
- Id = 0,
- Level = block.Level,
- Period = period.Index,
- BakerId = x.Id,
- VotingPower = x.VotingPower,
- Status = VoterStatus.None
- });
-
- period.TotalBakers = snapshots.Count();
- period.TotalVotingPower = snapshots.Sum(x => x.VotingPower);
- #endregion
-
- //#region temporary diagnostics
- //var listing = Proto.Node.GetAsync($"chains/main/blocks/{block.Level}/context/raw/json/votes/listings?depth=1").Result
- // .EnumerateArray()
- // .ToDictionary(x => x[0].RequiredString(), x => x[1].RequiredInt64());
-
- //if (snapshots.Count() != listing.Count)
- // throw new Exception("Wrong voting snapshots");
-
- //foreach (var snapshot in snapshots)
- // if (!listing.TryGetValue(Cache.Accounts.GetDelegate(snapshot.BakerId).Address, out var votingPower) || snapshot.VotingPower != votingPower)
- // throw new Exception("Wrong voting snapshot");
- //#endregion
-
- Db.VotingSnapshots.AddRange(snapshots);
- Db.VotingPeriods.Add(period);
- Cache.Periods.Add(period);
- return period;
- }
-
- protected virtual int GetParticipationEma(VotingPeriod period, Protocol proto)
- {
- var prev = Db.VotingPeriods
- .AsNoTracking()
- .OrderByDescending(x => x.Index)
- .FirstOrDefault(x => x.Kind == PeriodKind.Exploration || x.Kind == PeriodKind.Promotion);
-
- if (prev != null)
- {
- var participation = 10000.MulRatio(prev.YayVotingPower!.Value + prev.NayVotingPower!.Value + prev.PassVotingPower!.Value, prev.TotalVotingPower);
- return (int)((prev.ParticipationEma!.Value * 8000 + participation * 2000) / 10000);
- }
-
- return 8000;
- }
-
- protected virtual int GetBallotQuorum(VotingPeriod period, Protocol proto)
- {
- var prev = Db.VotingPeriods
- .AsNoTracking()
- .OrderByDescending(x => x.Index)
- .FirstOrDefault(x => x.Kind == PeriodKind.Exploration || x.Kind == PeriodKind.Promotion);
-
- if (prev != null)
- {
- var participation = 10000.MulRatio(prev.YayVotingPower!.Value + prev.NayVotingPower!.Value + prev.PassVotingPower!.Value, prev.TotalVotingPower);
- return (int)((prev.BallotsQuorum!.Value * 8000 + participation * 2000) / 10000);
- }
-
- return 8000;
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Diagnostics/Diagnostics.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Diagnostics/Diagnostics.cs
deleted file mode 100644
index 283165e07..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Diagnostics/Diagnostics.cs
+++ /dev/null
@@ -1,218 +0,0 @@
-using System.Text.Json;
-using Microsoft.EntityFrameworkCore;
-using Tzkt.Data;
-using Tzkt.Data.Models;
-using Tzkt.Data.Models.Base;
-using Tzkt.Sync.Services;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- class Diagnostics(ProtocolHandler handler) : IDiagnostics
- {
- protected readonly TzktContext Db = handler.Db;
- protected readonly CacheService Cache = handler.Cache;
- protected readonly IRpc Rpc = handler.Rpc;
- protected BlockContext Context => handler.Context;
-
- int AddedOperations = 0;
- readonly Dictionary ChangedAccounts = [];
- readonly Dictionary ChangedTicketBalances = [];
-
- public void TrackChanges()
- {
- var entries = Db.ChangeTracker.Entries();
- AddedOperations += entries.Count(x => x.Entity is BaseOperation or ContractEvent && x.State == EntityState.Added);
-
- foreach (var account in entries.Where(x =>
- x.Entity is Account && (x.State == EntityState.Modified || x.State == EntityState.Added))
- .Select(x => (x.Entity as Account)!))
- ChangedAccounts[account.Id] = account;
-
- foreach (var ticket in entries.Where(x =>
- x.Entity is TicketBalance && (x.State == EntityState.Modified || x.State == EntityState.Added))
- .Select(x => (x.Entity as TicketBalance)!))
- ChangedTicketBalances[ticket.Id] = ticket;
- }
-
- public virtual Task Run(JsonElement block)
- {
- var ops = block.GetProperty("operations");
- var opsCount = 0;
-
- if (ops.EnumerateArray().Any())
- {
- foreach (var op in ops[0].EnumerateArray())
- {
- var content = op.RequiredArray("contents")[0];
- if (content.RequiredString("kind")[^1] == 'e') // .._aggregate
- opsCount += content.RequiredArray("committee").Count();
- else
- opsCount++;
- }
- foreach (var op in ops[1].EnumerateArray())
- {
- var content = op.RequiredArray("contents")[0];
- if (content.RequiredString("kind")[0] == 'p')
- opsCount += content.RequiredArray("proposals").Count();
- else
- opsCount++;
- }
- opsCount += ops[2].Count();
- foreach (var op in ops[3].EnumerateArray())
- {
- foreach (var content in op.Required("contents").EnumerateArray())
- {
- opsCount++;
- if (content.Required("metadata").TryGetProperty("internal_operation_results", out var internalContents))
- opsCount += internalContents.EnumerateArray().Count(x => x.RequiredString("kind") != "event" || x.Required("result").RequiredString("status") == "applied");
- }
- }
- }
-
- return RunDiagnostics(block.Required("header").RequiredInt32("level"), opsCount);
- }
-
- public virtual Task Run(int level)
- {
- return RunDiagnostics(level);
- }
-
- protected virtual async Task RunDiagnostics(int level, int ops = -1)
- {
- if (ops != -1 && ops != AddedOperations + Context.TransactionOps.Count + Context.AttestationOps.Count)
- throw new Exception($"Diagnostics failed: wrong operations count");
-
- var state = Cache.AppState.Get();
- var proto = await Cache.Protocols.GetAsync(state.NextProtocol);
-
- foreach (var ticketBalance in ChangedTicketBalances.Values)
- {
- await TestTicketBalance(level, ticketBalance);
- }
-
- await TestGlobalCounter(level, state);
-
- foreach (var account in ChangedAccounts.Values)
- {
- if (account is Data.Models.Delegate delegat)
- await TestDelegate(level, delegat, proto);
-
- if (account.Type <= AccountType.Contract)
- await TestAccount(level, account);
- }
-
- if (Cache.Blocks.Current().Events.HasFlag(BlockEvents.CycleBegin))
- {
- foreach (var cycle in Db.ChangeTracker.Entries().Where(x => x.Entity is Cycle).Select(x => (x.Entity as Cycle)!))
- await TestCycle(state, cycle);
-
- await TestParticipation(state);
- await TestDalParticipation(state);
- await TestBakersList(state);
- await TestActiveBakersList(state);
- }
- }
-
- protected virtual Task TestParticipation(AppState state) => Task.CompletedTask;
-
- protected virtual Task TestDalParticipation(AppState state) => Task.CompletedTask;
-
- protected virtual Task TestCycle(AppState state, Cycle cycle) => Task.CompletedTask;
-
- protected virtual async Task TestBakersList(AppState state)
- {
- var local = Cache.Accounts.GetDelegates().ToList();
- var remote = (await Rpc.GetDelegatesAsync(state.Level)).EnumerateArray()
- .Select(x => x.GetString())
- .ToHashSet();
-
- if (local.Count != remote.Count)
- throw new Exception("Invalid bakers count");
-
- foreach (var baker in local)
- if (!remote.Contains(baker.Address))
- throw new Exception($"Invalid baker {baker.Address}");
- }
-
- protected virtual async Task TestActiveBakersList(AppState state)
- {
- var local = Cache.Accounts.GetDelegates().Where(x => x.Staked).ToList();
- var remote = (await Rpc.GetActiveDelegatesAsync(state.Level)).EnumerateArray()
- .Select(x => x.GetString())
- .ToHashSet();
-
- if (local.Count != remote.Count)
- throw new Exception("Invalid active bakers count");
-
- foreach (var baker in local)
- if (!remote.Contains(baker.Address))
- throw new Exception($"Invalid active baker {baker.Address}");
- }
-
- protected virtual async Task TestGlobalCounter(int level, AppState state)
- {
- if ((await Rpc.GetGlobalCounterAsync(level)).RequiredInt32() != state.ManagerCounter)
- throw new Exception("Diagnostics failed: wrong global counter");
- }
-
- protected virtual async Task TestDelegate(int level, Data.Models.Delegate delegat, Protocol proto)
- {
- var remote = await Rpc.GetDelegateAsync(level, delegat.Address);
-
- if (remote.RequiredInt64("balance") != delegat.Balance)
- throw new Exception($"Diagnostics failed: wrong balance {delegat.Address}");
-
- if (remote.RequiredBool("deactivated") != !delegat.Staked)
- throw new Exception($"Diagnostics failed: wrong delegate state {delegat.Address}");
-
- var deactivationCycle = (delegat.DeactivationLevel - 1) >= proto.FirstLevel
- ? proto.GetCycle(delegat.DeactivationLevel - 1)
- : (await Cache.Blocks.GetAsync(delegat.DeactivationLevel - 1)).Cycle;
- if (remote.RequiredInt32("grace_period") != deactivationCycle)
- throw new Exception($"Diagnostics failed: wrong delegate grace period {delegat.Address}");
-
- if (remote.RequiredInt64("staking_balance") != delegat.OwnDelegatedBalance + delegat.ExternalDelegatedBalance)
- throw new Exception($"Diagnostics failed: wrong staking balance {delegat.Address}");
-
- TestDelegatorsCount(remote, delegat);
- }
-
- protected virtual void TestDelegatorsCount(JsonElement remote, Data.Models.Delegate local)
- {
- if (remote.RequiredArray("delegated_contracts").Count() != local.DelegatorsCount)
- throw new Exception($"Diagnostics failed: wrong delegators count {local.Address}");
- }
-
- protected virtual async Task TestAccount(int level, Account account)
- {
- var remote = await Rpc.GetContractAsync(level, account.Address);
-
- if (account is not Data.Models.Delegate && remote.RequiredInt64("balance") != account.Balance - account.RollupBonds
- - account.SmartRollupBonds - ((account as User)?.UnstakedBalance ?? 0))
- throw new Exception($"Diagnostics failed: wrong balance {account.Address}");
-
- TestAccountDelegate(remote, account);
- TestAccountCounter(remote, account);
- }
-
- protected virtual Task TestTicketBalance(int level, TicketBalance ticketBalance) => Task.CompletedTask;
-
- protected virtual void TestAccountDelegate(JsonElement remote, Account local)
- {
- if (local.Type != AccountType.User)
- return;
-
- var remoteDelegate = remote.Required("delegate").OptionalString("value");
- var localDelegate = Cache.Accounts.GetDelegate(local.DelegateId);
-
- if (remoteDelegate != localDelegate?.Address)
- throw new Exception($"Diagnostics failed: wrong delegate {local.Address}");
- }
-
- protected virtual void TestAccountCounter(JsonElement remote, Account local)
- {
- if (remote.RequiredInt64("balance") > 0 && remote.RequiredInt32("counter") != local.Counter)
- throw new Exception($"Diagnostics failed: wrong counter {local.Address}");
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Helpers.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Helpers.cs
deleted file mode 100644
index 8c3e61236..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Helpers.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-using Tzkt.Sync.Services;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- public class Helpers(ProtocolHandler proto) : IHelpers
- {
- protected CacheService Cache { get; } = proto.Cache;
- protected BlockContext Context => proto.Context;
-
- public virtual long BakingPower(Data.Models.Delegate baker)
- {
- if (!baker.Staked)
- return 0;
-
- var stake = baker.OwnDelegatedBalance + baker.ExternalDelegatedBalance;
- if (stake < Context.Protocol.MinimalStake)
- return 0;
-
- return stake - stake % Context.Protocol.MinimalStake;
- }
-
- public virtual long VotingPower(Data.Models.Delegate baker)
- {
- if (!baker.Staked)
- return 0;
-
- var stake = baker.OwnDelegatedBalance + baker.ExternalDelegatedBalance;
- if (stake < Context.Protocol.MinimalStake)
- return 0;
-
- return stake - stake % Context.Protocol.MinimalStake;
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Proto1Handler.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Proto1Handler.cs
deleted file mode 100644
index c018ec2a9..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Proto1Handler.cs
+++ /dev/null
@@ -1,224 +0,0 @@
-using System.Text.Json;
-using App.Metrics;
-using Tzkt.Data;
-using Tzkt.Data.Models;
-using Tzkt.Sync.Services;
-using Tzkt.Sync.Protocols.Proto1;
-
-namespace Tzkt.Sync.Protocols
-{
- class Proto1Handler : ProtocolHandler
- {
- public override IDiagnostics Diagnostics { get; }
- public override IHelpers Helpers { get; }
- public override IValidator Validator { get; }
- public override IRpc Rpc { get; }
- public override string VersionName => "alpha";
- public override int VersionNumber => 1;
-
- public Proto1Handler(TezosNode node, TzktContext db, CacheService cache, QuotesService quotes, IServiceProvider services, IConfiguration config, ILogger logger, IMetrics metrics)
- : base(node, db, cache, quotes, services, config, logger, metrics)
- {
- Rpc = new Rpc(node);
- Diagnostics = new Diagnostics(this);
- Helpers = new Helpers(this);
- Validator = new Validator(this);
- }
-
- public override Task Activate(AppState state, JsonElement block) => new ProtoActivator(this).Activate(state, block);
- public override Task Deactivate(AppState state) => new ProtoActivator(this).Deactivate(state);
-
- public override async Task Commit(JsonElement block)
- {
- await new StatisticsCommit(this).Apply(block);
-
- var blockCommit = new BlockCommit(this);
- await blockCommit.Apply(block);
-
- new FreezerCommit(this).Apply(blockCommit.Block, block);
-
- var operations = block.RequiredArray("operations", 4);
-
- #region operations 0
- foreach (var operation in operations[0].EnumerateArray())
- {
- foreach (var content in operation.RequiredArray("contents", 1).EnumerateArray())
- {
- switch (content.RequiredString("kind"))
- {
- case "endorsement":
- await new AttestationsCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- default:
- throw new NotImplementedException($"'{content.RequiredString("kind")}' is not allowed in operations[0]");
- }
- }
- }
- #endregion
-
- #region operations 1
- // there were no voting operations
- #endregion
-
- #region operations 2
- foreach (var operation in operations[2].EnumerateArray())
- {
- foreach (var content in operation.RequiredArray("contents", 1).EnumerateArray())
- {
- switch (content.RequiredString("kind"))
- {
- case "activate_account":
- await new ActivationsCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- case "seed_nonce_revelation":
- await new NonceRevelationsCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- default:
- throw new NotImplementedException($"'{content.RequiredString("kind")}' is not allowed in operations[2]");
- }
- }
- }
- #endregion
-
- var bigMapCommit = new BigMapCommit(this);
-
- #region operations 3
- foreach (var operation in operations[3].EnumerateArray())
- {
- Manager.Init(operation);
- foreach (var content in operation.RequiredArray("contents").EnumerateArray())
- {
- switch (content.RequiredString("kind"))
- {
- case "reveal":
- await new RevealsCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- case "delegation":
- await new DelegationsCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- case "origination":
- var orig = new OriginationsCommit(this);
- await orig.Apply(blockCommit.Block, operation, content);
- if (orig.BigMapDiffs != null)
- bigMapCommit.Append(orig.Origination, orig.Contract!, orig.BigMapDiffs);
- break;
- case "transaction":
- var parent = new TransactionsCommit(this);
- await parent.Apply(blockCommit.Block, operation, content);
- if (parent.BigMapDiffs != null)
- bigMapCommit.Append(parent.Transaction, (parent.Target as Contract)!, parent.BigMapDiffs);
-
- if (content.Required("metadata").TryGetProperty("internal_operation_results", out var internalResult))
- {
- foreach (var internalContent in internalResult.EnumerateArray())
- {
- switch (internalContent.RequiredString("kind"))
- {
- case "transaction":
- var internalTx = new TransactionsCommit(this);
- await internalTx.ApplyInternal(blockCommit.Block, parent.Transaction, internalContent);
- if (internalTx.BigMapDiffs != null)
- bigMapCommit.Append(internalTx.Transaction, (internalTx.Target as Contract)!, internalTx.BigMapDiffs);
- break;
- default:
- throw new NotImplementedException($"internal '{internalContent.RequiredString("kind")}' is not implemented");
- }
- }
- }
- break;
- default:
- throw new NotImplementedException($"'{content.RequiredString("kind")}' is not expected in operations[3]");
- }
- }
- Manager.Reset();
- }
- #endregion
-
- await bigMapCommit.Apply();
-
- var brCommit = new BakingRightsCommit(this);
- await brCommit.Apply(blockCommit.Block);
-
- var cycleCommit = new CycleCommit(this);
- await cycleCommit.Apply(blockCommit.Block);
-
- await new DelegatorCycleCommit(this).Apply(blockCommit.Block, cycleCommit.FutureCycle);
-
- await new BakerCycleCommit(this).Apply(
- blockCommit.Block,
- cycleCommit.FutureCycle,
- brCommit.FutureBakingRights,
- brCommit.FutureAttestationRights,
- cycleCommit.BakerSnapshots,
- brCommit.CurrentRights);
-
- await new VotingCommit(this).Apply(blockCommit.Block, block);
- await new StateCommit(this).Apply(blockCommit.Block, block);
- }
-
- public override async Task AfterCommit(JsonElement rawBlock)
- {
- var block = await Cache.Blocks.CurrentAsync();
- await new SnapshotBalanceCommit(this).Apply(rawBlock, block);
- }
-
- public override async Task BeforeRevert()
- {
- var block = await Cache.Blocks.CurrentAsync();
- await new SnapshotBalanceCommit(this).Revert(block);
- }
-
- public override async Task Revert()
- {
- var currBlock = await Cache.Blocks.CurrentAsync();
- Db.TryAttach(currBlock);
-
- await new VotingCommit(this).Revert(currBlock);
- await new StatisticsCommit(this).Revert(currBlock);
-
- await new BakerCycleCommit(this).Revert(currBlock);
- await new DelegatorCycleCommit(this).Revert(currBlock);
- await new CycleCommit(this).Revert(currBlock);
- await new BakingRightsCommit(this).Revert(currBlock);
- await new BigMapCommit(this).Revert(currBlock);
-
- foreach (var operation in Context.EnumerateOps().OrderByDescending(x => x.Id).ToList())
- {
- switch (operation)
- {
- case AttestationOperation op:
- await new AttestationsCommit(this).Revert(currBlock, op);
- break;
- case ActivationOperation op:
- await new ActivationsCommit(this).Revert(currBlock, op);
- break;
- case NonceRevelationOperation op:
- await new NonceRevelationsCommit(this).Revert(currBlock, op);
- break;
- case RevealOperation op:
- await new RevealsCommit(this).Revert(currBlock, op);
- break;
- case DelegationOperation op:
- await new DelegationsCommit(this).Revert(currBlock, op);
- break;
- case OriginationOperation op:
- await new OriginationsCommit(this).Revert(currBlock, op);
- break;
- case TransactionOperation op:
- if (op.InitiatorId == null)
- await new TransactionsCommit(this).Revert(currBlock, op);
- else
- await new TransactionsCommit(this).RevertInternal(currBlock, op);
- break;
- default:
- throw new NotImplementedException($"'{operation.GetType()}' is not implemented");
- }
- }
-
- await new FreezerCommit(this).Revert(currBlock);
- await new BlockCommit(this).Revert(currBlock);
-
- await new StateCommit(this).Revert(currBlock);
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Rpc/Rpc.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Rpc/Rpc.cs
deleted file mode 100644
index 39713baf6..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Rpc/Rpc.cs
+++ /dev/null
@@ -1,74 +0,0 @@
-using System.Text.Json;
-using Tzkt.Sync.Services;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- class Rpc(TezosNode node) : IRpc
- {
- protected readonly TezosNode Node = node;
-
- #region indexer
- public virtual Task GetBlockAsync(int level)
- => Node.GetAsync($"chains/main/blocks/{level}");
-
- public virtual Task GetBakingRightsAsync(int block, int cycle)
- => Node.GetAsync($"chains/main/blocks/{block}/helpers/baking_rights?cycle={cycle}&max_priority=8&all=true");
-
- public virtual Task GetAttestationRightsAsync(int block, int cycle)
- => Node.GetAsync($"chains/main/blocks/{block}/helpers/endorsing_rights?cycle={cycle}");
-
- public virtual Task GetLevelBakingRightsAsync(int block, int level, int maxRound)
- => Node.GetAsync($"chains/main/blocks/{block}/helpers/baking_rights?level={level}&max_priority={maxRound + 1}&all=true");
-
- public virtual Task GetLevelAttestationRightsAsync(int block, int level)
- => Node.GetAsync($"chains/main/blocks/{block}/helpers/endorsing_rights?level={level}");
-
- public virtual Task GetContractAsync(int level, string address)
- => Node.GetAsync($"chains/main/blocks/{level}/context/contracts/{address}");
-
- public virtual Task GetDelegateAsync(int level, string address)
- => Node.GetAsync($"chains/main/blocks/{level}/context/delegates/{address}");
-
- public virtual Task GetExpectedIssuance(int block)
- => throw new InvalidOperationException();
-
- public virtual Task GetSmartRollupGenesisInfo(int level, string address)
- => throw new InvalidOperationException();
-
- public virtual Task GetUnstakeRequests(int level, string address)
- => throw new InvalidOperationException();
-
- public virtual Task GetContractRawAsync(int level, string address)
- => throw new InvalidOperationException();
- #endregion
-
- #region diagnostics
- public virtual Task GetGlobalCounterAsync(int level)
- => Node.GetAsync($"chains/main/blocks/{level}/context/raw/json/contracts/global_counter");
-
- public virtual Task GetDelegatesAsync(int level)
- => Node.GetAsync($"chains/main/blocks/{level}/context/delegates?active=true&inactive=true");
-
- public virtual Task GetActiveDelegatesAsync(int level)
- => Node.GetAsync($"chains/main/blocks/{level}/context/delegates?active=true");
-
- public virtual Task GetCycleAsync(int level, int cycle)
- => Node.GetAsync($"chains/main/blocks/{level}/context/raw/json/cycle/{cycle}");
-
- public virtual Task GetDelegateParticipationAsync(int level, string address)
- => throw new InvalidOperationException();
-
- public virtual Task GetDelegateDalParticipationAsync(int level, string address)
- => throw new InvalidOperationException();
-
- public virtual Task GetTicketBalance(int level, string address, string ticket)
- => throw new InvalidOperationException();
-
- public virtual Task GetCurrentStakingBalance(int level, string address)
- => throw new InvalidOperationException();
-
- public virtual Task GetStakingParameters(int level, string address)
- => throw new InvalidOperationException();
- #endregion
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto1/Validation/Validator.cs b/Tzkt.Sync/Protocols/Handlers/Proto1/Validation/Validator.cs
deleted file mode 100644
index 8c7f5a059..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto1/Validation/Validator.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-using System.Text.Json;
-using Tzkt.Sync.Services;
-
-namespace Tzkt.Sync.Protocols.Proto1
-{
- class Validator(ProtocolHandler protocol) : IValidator
- {
- protected readonly CacheService Cache = protocol.Cache;
-
- public Task ValidateBlock(JsonElement block)
- {
- if (block.RequiredString("chain_id") != Cache.AppState.GetChainId())
- throw new ValidationException("invalid chain");
-
- if (block.Required("header").RequiredInt32("level") != Cache.AppState.GetNextLevel())
- throw new ValidationException("invalid block level", true);
-
- if (block.Required("header").RequiredString("predecessor") != Cache.AppState.GetHead())
- throw new ValidationException("invalid block predecessor", true);
-
- if (block.RequiredString("protocol") != Cache.AppState.GetNextProtocol())
- throw new ValidationException("invalid block protocol", true);
-
- return Task.CompletedTask;
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Activation/ProtoActivator.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Activation/ProtoActivator.cs
deleted file mode 100644
index fa4d22de4..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Activation/ProtoActivator.cs
+++ /dev/null
@@ -1,835 +0,0 @@
-using System.Text.Json;
-using Microsoft.EntityFrameworkCore;
-using Netezos.Contracts;
-using Netezos.Encoding;
-using Newtonsoft.Json.Linq;
-using Npgsql;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto10
-{
- class ProtoActivator(ProtocolHandler proto) : Proto9.ProtoActivator(proto)
- {
- public const string CpmmContract = "KT1TxqZ8QtKvLu3V3JH7Gx58n7Co8pgtpQU5";
- public const string LiquidityToken = "KT1AafHA1C1vk959wvHWBispY9Y2f3fxBUUo";
- public const string FallbackToken = "KT1VqarPDicMFn1ejmQqqshUkUXTCTXwmkCN";
- public const string Tzbtc = "KT1PWx2mnDueood7fEmfbBDKx1D9BAnnXitn";
-
- protected override void SetParameters(Protocol protocol, JToken parameters)
- {
- #region unchanged
- protocol.RampUpCycles = parameters["security_deposit_ramp_up_cycles"]?.Value() ?? 0;
- protocol.NoRewardCycles = parameters["no_reward_cycles"]?.Value() ?? 0;
- protocol.ByteCost = parameters["cost_per_byte"]?.Value() ?? 250;
- protocol.HardOperationGasLimit = parameters["hard_gas_limit_per_operation"]?.Value() ?? 1_040_000;
- protocol.HardOperationStorageLimit = parameters["hard_storage_limit_per_operation"]?.Value() ?? 60_000;
- protocol.OriginationSize = parameters["origination_size"]?.Value() ?? 257;
- protocol.ConsensusRightsDelay = parameters["preserved_cycles"]?.Value() ?? 5;
- protocol.ToleratedInactivityPeriod = protocol.ConsensusRightsDelay + 1;
- protocol.MinimalStake = parameters["tokens_per_roll"]?.Value() ?? 8_000_000_000;
- protocol.BallotQuorumMin = parameters["quorum_min"]?.Value() ?? 2000;
- protocol.BallotQuorumMax = parameters["quorum_max"]?.Value() ?? 7000;
- protocol.ProposalQuorum = parameters["min_proposal_quorum"]?.Value() ?? 500;
- #endregion
-
- var br = parameters["baking_reward_per_endorsement"] as JArray;
- var ar = parameters["endorsement_reward"] as JArray;
-
- protocol.BlockDeposit = parameters["block_security_deposit"]?.Value() ?? 640_000_000;
- protocol.AttestationDeposit = parameters["endorsement_security_deposit"]?.Value() ?? 2_500_000;
- protocol.BlockReward0 = br == null ? 78_125 : br.Count > 0 ? br[0].Value() : 0;
- protocol.BlockReward1 = br == null ? 11_719 : br.Count > 1 ? br[1].Value() : protocol.BlockReward0;
- protocol.AttestationReward0 = ar == null ? 78_125 : ar.Count > 0 ? ar[0].Value() : 0;
- protocol.AttestationReward1 = ar == null ? 52_083 : ar.Count > 1 ? ar[1].Value() : protocol.AttestationReward0;
-
- protocol.BlocksPerCycle = parameters["blocks_per_cycle"]?.Value() ?? 8192;
- protocol.BlocksPerCommitment = parameters["blocks_per_commitment"]?.Value() ?? 64;
- protocol.BlocksPerSnapshot = parameters["blocks_per_roll_snapshot"]?.Value() ?? 512;
- protocol.BlocksPerVoting = parameters["blocks_per_voting_period"]?.Value() ?? 40960;
-
- protocol.AttestersPerBlock = parameters["endorsers_per_block"]?.Value() ?? 256;
- protocol.HardBlockGasLimit = parameters["hard_gas_limit_per_block"]?.Value() ?? 5_200_000;
- protocol.TimeBetweenBlocks = parameters["minimal_block_delay"]?.Value() ?? 30;
-
- protocol.LBToggleThreshold = (parameters["liquidity_baking_escape_ema_threshold"]?.Value() ?? 1_000_000) * 1000;
- }
-
- protected override void UpgradeParameters(Protocol protocol, Protocol prev)
- {
- protocol.BlockDeposit = 640_000_000;
- protocol.AttestationDeposit = 2_500_000;
- protocol.BlockReward0 = 78_125;
- protocol.BlockReward1 = 11_719;
- protocol.AttestationReward0 = 78_125;
- protocol.AttestationReward1 = 52_083;
-
- protocol.BlocksPerCycle *= 2;
- protocol.BlocksPerCommitment *= 2;
- protocol.BlocksPerSnapshot *= 2;
- protocol.BlocksPerVoting *= 2;
-
- protocol.AttestersPerBlock = 256;
- protocol.HardBlockGasLimit = 5_200_000;
- protocol.TimeBetweenBlocks /= 2;
-
- protocol.LBToggleThreshold = 1_000_000_000;
- }
-
- protected override async Task ActivateContext(AppState state)
- {
- var block = await Cache.Blocks.CurrentAsync();
- await OriginateContract(block, CpmmContract);
- await OriginateContract(block, LiquidityToken);
- if (!await Cache.Accounts.ExistsAsync(Tzbtc))
- await OriginateContract(block, FallbackToken);
- }
-
- protected override async Task DeactivateContext(AppState state)
- {
- state.TokensCount--;
- state.TokenBalancesCount--;
- state.TokenTransfersCount--;
-
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "BigMapUpdates";
- DELETE FROM "BigMapKeys";
- DELETE FROM "BigMaps";
- DELETE FROM "Tokens";
- DELETE FROM "TokenBalances";
- DELETE FROM "TokenTransfers";
- """);
- Cache.BigMapKeys.Reset();
- Cache.BigMaps.Reset();
- Cache.Tokens.Reset();
- Cache.TokenBalances.Reset();
-
- Cache.AppState.Get().BigMapCounter = 0;
- Cache.AppState.Get().BigMapKeyCounter = 0;
- Cache.AppState.Get().BigMapUpdateCounter = 0;
- }
-
- protected override async Task MigrateContext(AppState state)
- {
- var prevProto = await Cache.Protocols.GetAsync(state.Protocol);
- var nextProto = await Cache.Protocols.GetAsync(state.NextProtocol);
-
- #region update voting period
- var newPeriod = await Cache.Periods.GetAsync(state.VotingPeriod);
- Db.TryAttach(newPeriod);
- newPeriod.LastLevel = newPeriod.FirstLevel + nextProto.BlocksPerVoting; // - 1 + 1
- #endregion
-
- var cycles = await MigrateCycles(state, nextProto);
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "BakingRights"
- WHERE "Cycle" > {0}
- """, state.Cycle);
- await MigrateCurrentRights(state, prevProto, nextProto, state.Level);
- await MigrateFutureRights(cycles, state, nextProto, state.Level);
- MigrateDelegates(state, prevProto, nextProto);
-
- Cache.BakingRights.Reset();
- Cache.BakerCycles.Reset();
- Cache.Periods.Reset();
-
- var block = await Cache.Blocks.CurrentAsync();
- await OriginateContract(block, CpmmContract);
- await OriginateContract(block, LiquidityToken);
- if (!await Cache.Accounts.ExistsAsync(Tzbtc))
- await OriginateContract(block, FallbackToken);
- }
-
- protected override async Task RevertContext(AppState state)
- {
- var prevProto = await Cache.Protocols.GetAsync(state.Protocol);
- var nextProto = await Cache.Protocols.GetAsync(state.NextProtocol);
-
- #region update voting periods
- var newPeriod = await Cache.Periods.GetAsync(state.VotingPeriod);
- Db.TryAttach(newPeriod);
- newPeriod.LastLevel = newPeriod.FirstLevel + prevProto.BlocksPerVoting - 1;
- #endregion
-
- var cycles = await MigrateCycles(state, prevProto);
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "BakingRights"
- WHERE "Cycle" > {0}
- """, state.Cycle);
- await MigrateCurrentRights(state, nextProto, prevProto, state.Level - 1);
- await MigrateFutureRights(cycles, state, prevProto, state.Level - 1);
- MigrateDelegates(state, nextProto, prevProto);
-
- Cache.BakingRights.Reset();
- Cache.BakerCycles.Reset();
- Cache.Periods.Reset();
-
- await RemoveContract(CpmmContract);
- await RemoveContract(LiquidityToken);
- if (await Cache.Accounts.ExistsAsync(FallbackToken))
- await RemoveContract(FallbackToken);
- }
-
- async Task> MigrateCycles(AppState state, Protocol nextProto)
- {
- var cycles = await Db.Cycles
- .Where(x => x.Index > state.Cycle)
- .OrderBy(x => x.Index)
- .ToListAsync();
-
- foreach (var cycle in cycles)
- {
- cycle.FirstLevel = nextProto.GetCycleStart(cycle.Index);
- cycle.LastLevel = nextProto.GetCycleEnd(cycle.Index);
- }
-
- return cycles;
- }
-
- async Task MigrateCurrentRights(AppState state, Protocol prevProto, Protocol nextProto, int block)
- {
- var rights = await Db.BakingRights
- .AsNoTracking()
- .Where(x => x.Level > state.Level && x.Cycle == state.Cycle)
- .ToListAsync();
-
- foreach (var br in rights.Where(x => x.Type == BakingRightType.Baking && x.Round == 0))
- {
- var bakerCycle = await Cache.BakerCycles.GetAsync(state.Cycle, br.BakerId);
- Db.TryAttach(bakerCycle);
-
- bakerCycle.FutureBlockRewards -= GetFutureBlockReward(prevProto, state.Cycle);
- bakerCycle.FutureBlockRewards += GetFutureBlockReward(nextProto, state.Cycle);
- }
-
- foreach (var ar in rights.Where(x => x.Type == BakingRightType.Attestation))
- {
- var bakerCycle = await Cache.BakerCycles.GetAsync(state.Cycle, ar.BakerId);
- Db.TryAttach(bakerCycle);
-
- bakerCycle.FutureAttestationRewards -= GetFutureAttestationReward(prevProto, state.Cycle, ar.Slots!.Value);
- bakerCycle.FutureAttestations -= ar.Slots.Value;
- }
-
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "BakingRights"
- WHERE "Level" > {0}
- AND "Type" = {1}
- """, state.Level, (int)BakingRightType.Attestation);
-
- var newArs = new List();
- for (int level = state.Level + 1; level < nextProto.GetCycleStart(state.Cycle + 1); level++)
- {
- foreach (var ar in (await Proto.Rpc.GetLevelAttestationRightsAsync(block, level - 1)).EnumerateArray())
- {
- newArs.Add(new BakingRight
- {
- Id = 0,
- Type = BakingRightType.Attestation,
- Status = BakingRightStatus.Future,
- BakerId = Cache.Accounts.GetExistingDelegate(ar.RequiredString("delegate")).Id,
- Cycle = state.Cycle,
- Level = level,
- Slots = ar.RequiredArray("slots").Count()
- });
- }
- }
-
-#pragma warning disable EF1002 // Risk of vulnerability to SQL injection.
- await Db.Database.ExecuteSqlRawAsync($"""
- INSERT INTO "BakingRights" ("Cycle", "Level", "BakerId", "Type", "Status", "Slots") VALUES
- {string.Join(',', newArs.Select(ar => $"({ar.Cycle},{ar.Level},{ar.BakerId},{(int)ar.Type},{(int)ar.Status},{ar.Slots})"))}
- """);
-#pragma warning restore EF1002 // Risk of vulnerability to SQL injection.
-
- foreach (var ar in newArs)
- {
- var bakerCycle = await Cache.BakerCycles.GetAsync(state.Cycle, ar.BakerId);
- Db.TryAttach(bakerCycle);
-
- bakerCycle.FutureAttestationRewards += GetFutureAttestationReward(nextProto, state.Cycle, ar.Slots!.Value);
- bakerCycle.FutureAttestations += ar.Slots.Value;
- }
- }
-
- async Task MigrateFutureRights(List cycles, AppState state, Protocol nextProto, int block)
- {
- var nextCycle = state.Cycle + 1;
- var nextCycleStart = nextProto.GetCycleStart(nextCycle);
- var shiftedRights = (await Proto.Rpc.GetLevelAttestationRightsAsync(block, nextCycleStart - 1))
- .EnumerateArray()
- .ToList();
-
-#pragma warning disable EF1002 // Risk of vulnerability to SQL injection.
- await Db.Database.ExecuteSqlRawAsync($"""
- INSERT INTO "BakingRights" ("Cycle", "Level", "BakerId", "Type", "Status", "Slots") VALUES
- {string.Join(',', shiftedRights.Select(ar => $@"(
- {nextCycle},
- {nextCycleStart},
- {Cache.Accounts.GetExistingDelegate(ar.RequiredString("delegate")).Id},
- {(int)BakingRightType.Attestation},
- {(int)BakingRightStatus.Future},
- {ar.RequiredArray("slots").Count()}
- )"))}
- """);
-#pragma warning restore EF1002 // Risk of vulnerability to SQL injection.
-
- foreach (var cycle in cycles)
- {
- var bakerCycles = (await Db.BakerCycles.Where(x => x.Cycle == cycle.Index).ToListAsync())
- .ToDictionary(x => x.BakerId);
-
- foreach (var bc in bakerCycles.Values)
- {
- var share = (double)bc.BakingPower / cycle.TotalBakingPower;
- bc.ExpectedBlocks = nextProto.BlocksPerCycle * share;
- bc.ExpectedAttestations = nextProto.AttestersPerBlock * nextProto.BlocksPerCycle * share;
- bc.FutureBlockRewards = 0;
- bc.FutureBlocks = 0;
- bc.FutureAttestationRewards = 0;
- bc.FutureAttestations = 0;
- }
-
- await FetchBakingRights(nextProto, block, cycle, bakerCycles);
- shiftedRights = await FetchAttestationRights(nextProto, block, cycle, bakerCycles, shiftedRights);
- }
- }
-
- async Task FetchBakingRights(Protocol protocol, int block, Cycle cycle, Dictionary bakerCycles)
- {
- GC.Collect();
- var rights = (await Proto.Rpc.GetBakingRightsAsync(block, cycle.Index)).RequiredArray().EnumerateArray();
- if (!rights.Any() || rights.Count(x => x.RequiredInt32("priority") == 0) != protocol.BlocksPerCycle)
- throw new ValidationException("Rpc returned less baking rights (with priority 0) than it should be");
-
- var conn = (Db.Database.GetDbConnection() as NpgsqlConnection)!;
- using var writer = conn.BeginBinaryImport(@"COPY ""BakingRights"" (""Cycle"", ""Level"", ""BakerId"", ""Type"", ""Status"", ""Round"", ""Slots"") FROM STDIN (FORMAT BINARY)");
-
- foreach (var br in rights)
- {
- var bakerId = Cache.Accounts.GetExistingDelegate(br.RequiredString("delegate")).Id;
- var round = br.RequiredInt32("priority");
- if (round == 0)
- {
- var bakerCycle = bakerCycles[bakerId];
- bakerCycle.FutureBlockRewards += GetFutureBlockReward(protocol, cycle.Index);
- bakerCycle.FutureBlocks++;
- }
-
- writer.StartRow();
- writer.Write(cycle.Index, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write(br.RequiredInt32("level"), NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write(bakerId, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write((int)BakingRightType.Baking, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write((int)BakingRightStatus.Future, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write(round, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.WriteNull();
- }
-
- writer.Complete();
- }
-
- async Task> FetchAttestationRights(Protocol protocol, int block, Cycle cycle, Dictionary bakerCycles, List shiftedRights)
- {
- GC.Collect();
- var rights = (await Proto.Rpc.GetAttestationRightsAsync(block, cycle.Index)).RequiredArray().EnumerateArray();
- //var rights = new List(protocol.BlocksPerCycle * protocol.AttestersPerBlock / 2);
- //var attempts = 0;
-
- //for (int level = cycle.FirstLevel; level <= cycle.LastLevel; level++)
- //{
- // try
- // {
- // rights.AddRange((await Proto.Rpc.GetLevelAttestationRightsAsync(block, level)).RequiredArray().EnumerateArray());
- // attempts = 0;
- // }
- // catch (Exception ex)
- // {
- // Logger.LogError(ex, "Failed to fetch attestation rights for level {level}", level);
- // if (++attempts >= 10) throw new Exception("Too many RPC errors when fetching attestation rights");
- // await Task.Delay(3000);
- // level--;
- // }
- //}
-
- if (!rights.Any() || rights.Sum(x => x.RequiredArray("slots").Count()) != protocol.BlocksPerCycle * protocol.AttestersPerBlock)
- throw new ValidationException("Rpc returned less attestation rights (slots) than it should be");
-
- #region save rights
- var conn = (Db.Database.GetDbConnection() as NpgsqlConnection)!;
- using var writer = conn.BeginBinaryImport(@"COPY ""BakingRights"" (""Cycle"", ""Level"", ""BakerId"", ""Type"", ""Status"", ""Round"", ""Slots"") FROM STDIN (FORMAT BINARY)");
-
- foreach (var ar in rights)
- {
- writer.StartRow();
- writer.Write(protocol.GetCycle(ar.RequiredInt32("level") + 1), NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write(ar.RequiredInt32("level") + 1, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write(Cache.Accounts.GetExistingDelegate(ar.RequiredString("delegate")).Id, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write((int)BakingRightType.Attestation, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write((int)BakingRightStatus.Future, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.WriteNull();
- writer.Write(ar.RequiredArray("slots").Count(), NpgsqlTypes.NpgsqlDbType.Integer);
- }
-
- writer.Complete();
- #endregion
-
- foreach (var ar in rights.Where(x => x.RequiredInt32("level") != cycle.LastLevel))
- {
- var baker = Cache.Accounts.GetExistingDelegate(ar.RequiredString("delegate"));
- var slots = ar.RequiredArray("slots").Count();
-
- if (!bakerCycles.TryGetValue(baker.Id, out var bakerCycle))
- throw new Exception("Nonexistent baker cycle");
-
- bakerCycle.FutureAttestationRewards += GetFutureAttestationReward(protocol, cycle.Index, slots);
- bakerCycle.FutureAttestations += slots;
- }
-
- foreach (var ar in shiftedRights)
- {
- var baker = Cache.Accounts.GetExistingDelegate(ar.RequiredString("delegate"));
- var slots = ar.RequiredArray("slots").Count();
-
- if (!bakerCycles.TryGetValue(baker.Id, out var bakerCycle))
- {
- #region shifting hack
- var snapshottedBaker = await Proto.Rpc.GetDelegateAsync(cycle.SnapshotLevel, baker.Address);
- var delegators = snapshottedBaker
- .RequiredArray("delegated_contracts")
- .EnumerateArray()
- .Select(x => x.RequiredString())
- .Where(x => x != baker.Address);
-
- var stakingBalance = snapshottedBaker.RequiredInt64("staking_balance");
- var delegatedBalance = snapshottedBaker.RequiredInt64("delegated_balance");
-
- bakerCycle = new BakerCycle
- {
- Id = 0,
- Cycle = cycle.Index,
- BakerId = baker.Id,
- OwnDelegatedBalance = stakingBalance - delegatedBalance,
- ExternalDelegatedBalance = delegatedBalance,
- DelegatorsCount = delegators.Count(),
- OwnStakedBalance = 0,
- ExternalStakedBalance = 0,
- StakersCount = 0,
- IssuedPseudotokens = null,
- BakingPower = 0,
- TotalBakingPower = cycle.TotalBakingPower,
- ExpectedBlocks = 0,
- ExpectedAttestations = 0
- };
- bakerCycles.Add(baker.Id, bakerCycle);
- Db.BakerCycles.Add(bakerCycle);
-
- foreach (var delegatorAddress in delegators)
- {
- var snapshottedDelegator = await Proto.Rpc.GetContractAsync(cycle.SnapshotLevel, delegatorAddress);
- Db.DelegatorCycles.Add(new DelegatorCycle
- {
- Id = 0,
- Cycle = cycle.Index,
- DelegatorId = (await Cache.Accounts.GetExistingAsync(delegatorAddress)).Id,
- BakerId = baker.Id,
- DelegatedBalance = snapshottedDelegator.RequiredInt64("balance"),
- StakedPseudotokens = null
- });
- }
- #endregion
- }
-
- bakerCycle.FutureAttestationRewards += GetFutureAttestationReward(protocol, cycle.Index, slots);
- bakerCycle.FutureAttestations += slots;
- }
-
- return rights.Where(x => x.RequiredInt32("level") == cycle.LastLevel).ToList();
- }
-
- void MigrateDelegates(AppState state, Protocol prevProto, Protocol nextProto)
- {
- foreach (var delegat in Cache.Accounts.GetDelegates().Where(x => x.DeactivationLevel > state.Level))
- {
- Db.TryAttach(delegat);
- delegat.DeactivationLevel = nextProto.GetCycleStart(prevProto.GetCycle(delegat.DeactivationLevel));
- }
- }
-
- async Task OriginateContract(Block block, string address)
- {
- var rawContract = await Proto.Rpc.GetContractAsync(block.Level, address);
-
- #region contract
- Contract contract;
- var creator = await Cache.Accounts.GetExistingAsync(NullAddress.Address);
- var ghost = await Cache.Accounts.GetAsync(address);
- if (ghost != null)
- {
- contract = new Contract
- {
- Id = ghost.Id,
- Index = ghost.Index,
- FirstLevel = ghost.FirstLevel,
- LastLevel = block.Level,
- Address = address,
- CreatorId = creator.Id,
- Type = AccountType.Contract,
- Kind = ContractKind.SmartContract,
- MigrationsCount = 1,
- ActiveTokensCount = ghost.ActiveTokensCount,
- TokenBalancesCount = ghost.TokenBalancesCount,
- TokenTransfersCount = ghost.TokenTransfersCount
- };
- Db.Entry(ghost).State = EntityState.Detached;
- Db.Entry(contract).State = EntityState.Modified;
- }
- else
- {
- contract = new Contract
- {
- Id = Cache.AppState.NextAccountId(),
- FirstLevel = block.Level,
- LastLevel = block.Level,
- Address = address,
- CreatorId = creator.Id,
- Type = AccountType.Contract,
- Kind = ContractKind.SmartContract,
- MigrationsCount = 1,
- };
- Db.Accounts.Add(contract);
- }
- Receive(contract, rawContract.RequiredInt64("balance"));
- Cache.Accounts.Add(contract);
-
- Db.TryAttach(creator);
- creator.ContractsCount++;
- #endregion
-
- #region script
- var code = (rawContract.Required("script").RequiredMicheline("code") as MichelineArray)!;
- var micheParameter = code.First(x => x is MichelinePrim p && p.Prim == PrimType.parameter);
- var micheStorage = code.First(x => x is MichelinePrim p && p.Prim == PrimType.storage);
- var micheCode = code.First(x => x is MichelinePrim p && p.Prim == PrimType.code);
- var micheViews = code.Where(x => x is MichelinePrim p && p.Prim == PrimType.view);
- var script = new Script
- {
- Id = Cache.AppState.NextScriptId(),
- Level = block.Level,
- ContractId = contract.Id,
- ParameterSchema = micheParameter.ToBytes(),
- StorageSchema = micheStorage.ToBytes(),
- CodeSchema = micheCode.ToBytes(),
- Views = micheViews.Any()
- ? micheViews.Select(x => x.ToBytes()).ToArray()
- : null,
- Current = true
- };
-
- var viewsBytes = script.Views?
- .OrderBy(x => x, new BytesComparer())
- .SelectMany(x => x)
- .ToArray()
- ?? [];
- var typeSchema = script.ParameterSchema.Concat(script.StorageSchema).Concat(viewsBytes);
- var fullSchema = typeSchema.Concat(script.CodeSchema);
- contract.TypeHash = script.TypeHash = Script.GetHash(typeSchema);
- contract.CodeHash = script.CodeHash = Script.GetHash(fullSchema);
-
- if (script.Schema.IsFA1())
- {
- if (script.Schema.IsFA12())
- contract.Tags |= ContractTags.FA12;
-
- contract.Tags |= ContractTags.FA1;
- contract.Kind = ContractKind.Asset;
- }
- if (script.Schema.IsFA2())
- {
- contract.Tags |= ContractTags.FA2;
- contract.Kind = ContractKind.Asset;
- }
-
- Db.Scripts.Add(script);
- #endregion
-
- #region storage
- var storageValue = rawContract.Required("script").RequiredMicheline("storage");
- var storage = new Storage
- {
- Id = Cache.AppState.NextStorageId(),
- Level = block.Level,
- ContractId = contract.Id,
- RawValue = script.Schema.OptimizeStorage(storageValue, false).ToBytes(),
- JsonValue = script.Schema.HumanizeStorage(storageValue),
- Current = true
- };
-
- Db.Storages.Add(storage);
- #endregion
-
- #region migration
- var migration = new MigrationOperation
- {
- Id = Cache.AppState.NextOperationId(),
- Level = block.Level,
- Timestamp = block.Timestamp,
- Kind = MigrationKind.Origination,
- AccountId = contract.Id,
- BalanceChange = contract.Balance,
- ScriptId = script.Id,
- StorageId = storage.Id,
- };
-
- script.MigrationId = migration.Id;
- storage.MigrationId = migration.Id;
-
- Db.TryAttach(block);
- block.Operations |= Operations.Migrations;
-
- var state = Cache.AppState.Get();
- Db.TryAttach(state);
- state.MigrationOpsCount++;
-
- var stats = Cache.Statistics.Current;
- Db.TryAttach(stats);
- stats.TotalCreated += contract.Balance;
-
- Db.MigrationOps.Add(migration);
- Context.MigrationOps.Add(migration);
- #endregion
-
- #region bigmaps
- var storageScript = new ContractStorage(micheStorage);
- var storageTree = storageScript.Schema.ToTreeView(storageValue);
- var bigmaps = storageTree.Nodes()
- .Where(x => x.Schema is BigMapSchema)
- .Select(x => (x, (x.Schema as BigMapSchema)!, (int)(x.Value as MichelineInt)!.Value));
-
- foreach (var (bigmap, schema, ptr) in bigmaps)
- {
- block.Events |= BlockEvents.Bigmaps;
-
- migration.BigMapUpdates = (migration.BigMapUpdates ?? 0) + 1;
- Db.BigMapUpdates.Add(new BigMapUpdate
- {
- Id = Cache.AppState.NextBigMapUpdateId(),
- Action = BigMapAction.Allocate,
- BigMapPtr = ptr,
- Level = block.Level,
- MigrationId = migration.Id
- });
-
- var allocated = new BigMap
- {
- Id = Cache.AppState.NextBigMapId(),
- Ptr = ptr,
- ContractId = contract.Id,
- StoragePath = bigmap.Path,
- KeyType = schema.Key.ToMicheline().ToBytes(),
- ValueType = schema.Value.ToMicheline().ToBytes(),
- Active = true,
- FirstLevel = block.Level,
- LastLevel = block.Level,
- ActiveKeys = 0,
- TotalKeys = 0,
- Updates = 1,
- Tags = BigMaps.GetTags(contract, bigmap)
- };
- Db.BigMaps.Add(allocated);
-
- if (address == LiquidityToken && allocated.StoragePath == "tokens")
- {
- var rawKey = new MichelineString(NullAddress.Address);
- var rawValue = new MichelineInt(100);
-
- allocated.Tags |= BigMapTag.Ledger1;
- allocated.ActiveKeys++;
- allocated.TotalKeys++;
- allocated.Updates++;
- var key = new BigMapKey
- {
- Id = Cache.AppState.NextBigMapKeyId(),
- Active = true,
- BigMapPtr = ptr,
- FirstLevel = block.Level,
- LastLevel = block.Level,
- JsonKey = schema.Key.Humanize(rawKey),
- JsonValue = schema.Value.Humanize(rawValue),
- RawKey = schema.Key.Optimize(rawKey).ToBytes(),
- RawValue = schema.Value.Optimize(rawValue).ToBytes(),
- KeyHash = schema.GetKeyHash(rawKey),
- Updates = 1
- };
- Db.BigMapKeys.Add(key);
-
- migration.BigMapUpdates++;
- Db.BigMapUpdates.Add(new BigMapUpdate
- {
- Id = Cache.AppState.NextBigMapUpdateId(),
- Action = BigMapAction.AddKey,
- BigMapKeyId = key.Id,
- BigMapPtr = key.BigMapPtr,
- JsonValue = key.JsonValue,
- RawValue = key.RawValue,
- Level = key.LastLevel,
- MigrationId = migration.Id
- });
-
- #region tokens
- var token = new Token
- {
- Id = Cache.AppState.NextSubId(migration),
- Tags = TokenTags.Fa12,
- BalancesCount = 1,
- ContractId = contract.Id,
- FirstMinterId = contract.Id,
- FirstLevel = migration.Level,
- HoldersCount = 1,
- LastLevel = migration.Level,
- TokenId = 0,
- TotalBurned = 0,
- TotalMinted = 100,
- TotalSupply = 100,
- TransfersCount = 1
- };
- var tokenBalance = new TokenBalance
- {
- Id = Cache.AppState.NextSubId(migration),
- AccountId = NullAddress.Id,
- Balance = 100,
- FirstLevel = migration.Level,
- LastLevel = migration.Level,
- TokenId = token.Id,
- ContractId = token.ContractId,
- TransfersCount = 1
- };
- var tokenTransfer = new TokenTransfer
- {
- Id = Cache.AppState.NextSubId(migration),
- Amount = 100,
- Level = migration.Level,
- MigrationId = migration.Id,
- ToId = NullAddress.Id,
- TokenId = token.Id,
- ContractId = token.ContractId
- };
-
- Db.Tokens.Add(token);
- Db.TokenBalances.Add(tokenBalance);
- Db.TokenTransfers.Add(tokenTransfer);
-
- migration.TokenTransfers = 1;
-
- state.TokensCount++;
- state.TokenBalancesCount++;
- state.TokenTransfersCount++;
-
- contract.TokensCount++;
- creator.ActiveTokensCount++;
- creator.TokenBalancesCount++;
- creator.TokenTransfersCount++;
- creator.LastLevel = tokenTransfer.Level;
-
- block.Events |= BlockEvents.Tokens;
- #endregion
- }
- else if (address == FallbackToken && allocated.StoragePath == "tokens")
- {
- allocated.Tags |= BigMapTag.Ledger1;
- }
- }
- #endregion
- }
-
- async Task RemoveContract(string address)
- {
- var contract = (await Cache.Accounts.GetExistingAsync(address) as Contract)!;
- Db.TryAttach(contract);
-
- var bigmaps = await Db.BigMaps.AsNoTracking()
- .Where(x => x.ContractId == contract.Id)
- .ToListAsync();
-
- var state = Cache.AppState.Get();
- Db.TryAttach(state);
- state.MigrationOpsCount--;
-
- var creator = await Cache.Accounts.GetAsync(contract.CreatorId);
- Db.TryAttach(creator);
- creator.ContractsCount--;
-
- if (address == LiquidityToken)
- {
- var token = await Db.Tokens
- .AsNoTracking()
- .Where(x => x.ContractId == contract.Id)
- .SingleAsync();
-
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "TokenTransfers" WHERE "TokenId" = {0};
- DELETE FROM "TokenBalances" WHERE "TokenId" = {0};
- DELETE FROM "Tokens" WHERE "Id" = {0};
- """, token.Id);
-
- state.TokenTransfersCount--;
- state.TokenBalancesCount--;
- state.TokensCount--;
-
- contract.TokensCount--;
-
- creator.ActiveTokensCount--;
- creator.TokenBalancesCount--;
- creator.TokenTransfersCount--;
- }
-
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "MigrationOps" WHERE "AccountId" = {0};
- DELETE FROM "Storages" WHERE "ContractId" = {0};
- DELETE FROM "Scripts" WHERE "ContractId" = {0};
- DELETE FROM "BigMapUpdates" WHERE "BigMapPtr" = ANY({1});
- DELETE FROM "BigMapKeys" WHERE "BigMapPtr" = ANY({1});
- DELETE FROM "BigMaps" WHERE "Ptr" = ANY({1});
- """, contract.Id, bigmaps.Select(x => x.Ptr).ToList());
-
- Cache.AppState.ReleaseOperationId();
- Cache.AppState.ReleaseScriptId();
- Cache.AppState.ReleaseStorageId();
- Cache.Storages.Remove(contract);
- Cache.Schemas.Remove(contract);
- Cache.BigMapKeys.Reset();
- foreach (var bigmap in bigmaps)
- {
- Cache.BigMaps.Remove(bigmap);
- Cache.AppState.ReleaseBigMapId();
- Cache.AppState.ReleaseBigMapKeyId(bigmap.TotalKeys);
- Cache.AppState.ReleaseBigMapUpdateId(bigmap.Updates);
- }
-
- if (contract.TokenTransfersCount != 0)
- {
- var ghost = new Account
- {
- Id = contract.Id,
- Index = contract.Index,
- Address = contract.Address,
- FirstLevel = contract.FirstLevel,
- LastLevel = contract.LastLevel,
- ActiveTokensCount = contract.ActiveTokensCount,
- TokenBalancesCount = contract.TokenBalancesCount,
- TokenTransfersCount = contract.TokenTransfersCount,
- Type = AccountType.Ghost,
- };
-
- Db.Entry(contract).State = EntityState.Detached;
- Db.Entry(ghost).State = EntityState.Modified;
- Cache.Accounts.Add(ghost);
- }
- }
-
- protected override long GetFutureBlockReward(Protocol protocol, int cycle)
- => cycle < protocol.NoRewardCycles ? 0 : (protocol.BlockReward0 * protocol.AttestersPerBlock);
-
- protected override long GetFutureAttestationReward(Protocol protocol, int cycle, int slots)
- => cycle < protocol.NoRewardCycles ? 0 : (slots * protocol.AttestationReward0);
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/BakerCycleCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/BakerCycleCommit.cs
deleted file mode 100644
index 7c9211168..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/BakerCycleCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto10
-{
- class BakerCycleCommit : Proto6.BakerCycleCommit
- {
- public BakerCycleCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/BakingRightsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/BakingRightsCommit.cs
deleted file mode 100644
index 0d7a1ea7e..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/BakingRightsCommit.cs
+++ /dev/null
@@ -1,64 +0,0 @@
-using System.Text.Json;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto10
-{
- class BakingRightsCommit(ProtocolHandler protocol) : Proto3.BakingRightsCommit(protocol)
- {
- // Tezos node is no longer able to normally return attestation rights for a cycle,
- // so we have to temporarily add some crutches, until we implement rights calculation
- protected override async Task> GetAttestationRights(Block block, Protocol protocol, int cycle)
- {
- Logger.LogInformation("Load attestation rights");
- try
- {
- Logger.LogInformation("Trying to load by cycle with 30 minutes timeout...");
- #region try aggressive
- var res = await Proto.Node.GetAsync($"chains/main/blocks/{block.Level}/helpers/endorsing_rights?cycle={cycle}", TimeSpan.FromMinutes(30));
-
- var rights = res.RequiredArray().EnumerateArray();
- if (!rights.Any() || rights.Sum(x => x.RequiredArray("slots").Count()) != protocol.BlocksPerCycle * protocol.AttestersPerBlock)
- throw new ValidationException("Rpc returned less attestation rights (slots) than expected");
-
- return rights;
- #endregion
- }
- catch
- {
- Logger.LogInformation("Failed to load by cycle. Loading by level for {cnt} blocks with 10 seconds timeout...", protocol.BlocksPerCycle);
- #region throttle
- var rights = new List(protocol.BlocksPerCycle * protocol.AttestersPerBlock / 2);
- var firstLevel = protocol.GetCycleStart(cycle);
- var lastLevel = protocol.GetCycleEnd(cycle);
- var attempts = 0;
-
- for (int level = firstLevel; level <= lastLevel; level++)
- {
- try
- {
- var res = await Proto.Node.GetAsync($"chains/main/blocks/{block.Level}/helpers/endorsing_rights?level={level}", TimeSpan.FromSeconds(10));
-
- rights.AddRange(res.RequiredArray().EnumerateArray());
- attempts = 0;
-
- if (level % 128 == 0)
- Logger.LogInformation("Loaded {cnt} of {total} blocks", level - firstLevel + 1, lastLevel - firstLevel + 1);
- }
- catch (Exception ex)
- {
- Logger.LogError(ex, "Failed to fetch attestation rights for level {level}. Retrying...", level);
- if (++attempts >= 30) throw new Exception("Too many RPC errors when fetching attestation rights");
- await Task.Delay(1000);
- level--;
- }
- }
-
- if (rights.Count == 0 || rights.Sum(x => x.RequiredArray("slots").Count()) != protocol.BlocksPerCycle * protocol.AttestersPerBlock)
- throw new ValidationException("Rpc returned less attestation rights (slots) than expected");
-
- return rights;
- #endregion
- }
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/BigMapCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/BigMapCommit.cs
deleted file mode 100644
index 321c55354..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/BigMapCommit.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using Netezos.Contracts;
-using Netezos.Encoding;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto10
-{
- class BigMapCommit : Proto1.BigMapCommit
- {
- public BigMapCommit(ProtocolHandler protocol) : base(protocol) { }
-
- protected override BigMapTag GetTags(Contract contract, TreeView node)
- {
- var tags = base.GetTags(contract, node);
-
- // custom handler for QUIPU
- if (contract.Address == "KT193D4vozYnhGJQVtw7CoxxqphqUEEwK6Vb" &&
- (node.Value as MichelineInt)!.Value == 12043) // %account_info
- tags |= BigMapTag.Ledger11;
-
- return tags;
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/BlockCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/BlockCommit.cs
deleted file mode 100644
index 292e88448..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/BlockCommit.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-using System.Text.Json;
-
-namespace Tzkt.Sync.Protocols.Proto10
-{
- class BlockCommit : Proto9.BlockCommit
- {
- public BlockCommit(ProtocolHandler protocol) : base(protocol) { }
-
- protected override bool? GetLBToggleVote(JsonElement block)
- => !block.Required("header").RequiredBool("liquidity_baking_escape_vote");
-
- protected override int GetLBToggleEma(JsonElement block)
- => block.Required("metadata").RequiredInt32("liquidity_baking_escape_ema") * 1000;
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/CycleCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/CycleCommit.cs
deleted file mode 100644
index 1ac514850..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/CycleCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto10
-{
- class CycleCommit : Proto1.CycleCommit
- {
- public CycleCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/DeactivationCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/DeactivationCommit.cs
deleted file mode 100644
index f1c6b1732..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/DeactivationCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto10
-{
- class DeactivationCommit : Proto2.DeactivationCommit
- {
- public DeactivationCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/DelegatorCycleCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/DelegatorCycleCommit.cs
deleted file mode 100644
index 737b173ef..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/DelegatorCycleCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto10
-{
- class DelegatorCycleCommit : Proto3.DelegatorCycleCommit
- {
- public DelegatorCycleCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/FreezerCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/FreezerCommit.cs
deleted file mode 100644
index 55b440804..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/FreezerCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto10
-{
- class FreezerCommit : Proto9.FreezerCommit
- {
- public FreezerCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/ActivationsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/ActivationsCommit.cs
deleted file mode 100644
index 0a83f36c9..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/ActivationsCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto10
-{
- class ActivationsCommit : Proto1.ActivationsCommit
- {
- public ActivationsCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/AttestationsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/AttestationsCommit.cs
deleted file mode 100644
index c3986217b..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/AttestationsCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto10
-{
- class AttestationsCommit : Proto1.AttestationsCommit
- {
- public AttestationsCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/BallotsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/BallotsCommit.cs
deleted file mode 100644
index 060200878..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/BallotsCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto10
-{
- class BallotsCommit : Proto3.BallotsCommit
- {
- public BallotsCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/DelegationsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/DelegationsCommit.cs
deleted file mode 100644
index c06fbeb55..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/DelegationsCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto10
-{
- class DelegationsCommit : Proto1.DelegationsCommit
- {
- public DelegationsCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/DoubleBakingCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/DoubleBakingCommit.cs
deleted file mode 100644
index f5f249012..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/DoubleBakingCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto10
-{
- class DoubleBakingCommit : Proto2.DoubleBakingCommit
- {
- public DoubleBakingCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/DoubleConsensusCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/DoubleConsensusCommit.cs
deleted file mode 100644
index 11e5e96cd..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/DoubleConsensusCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto10
-{
- class DoubleConsensusCommit : Proto4.DoubleConsensusCommit
- {
- public DoubleConsensusCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/NonceRevelationsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/NonceRevelationsCommit.cs
deleted file mode 100644
index fd6a69403..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/NonceRevelationsCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto10
-{
- class NonceRevelationsCommit : Proto1.NonceRevelationsCommit
- {
- public NonceRevelationsCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/OriginationsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/OriginationsCommit.cs
deleted file mode 100644
index 9b9e19d0e..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/OriginationsCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto10
-{
- class OriginationsCommit : Proto5.OriginationsCommit
- {
- public OriginationsCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/ProposalsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/ProposalsCommit.cs
deleted file mode 100644
index 3de3ef9d1..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/ProposalsCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto10
-{
- class ProposalsCommit : Proto3.ProposalsCommit
- {
- public ProposalsCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/RevealsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/RevealsCommit.cs
deleted file mode 100644
index 4de9be436..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/RevealsCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto10
-{
- class RevealsCommit : Proto1.RevealsCommit
- {
- public RevealsCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/TransactionsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/TransactionsCommit.cs
deleted file mode 100644
index d2f61d126..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/Operations/TransactionsCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto10
-{
- class TransactionsCommit : Proto5.TransactionsCommit
- {
- public TransactionsCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/RevelationPenaltyCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/RevelationPenaltyCommit.cs
deleted file mode 100644
index 0666ae67c..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/RevelationPenaltyCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto10
-{
- class RevelationPenaltyCommit : Proto9.RevelationPenaltyCommit
- {
- public RevelationPenaltyCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/SnapshotBalanceCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/SnapshotBalanceCommit.cs
deleted file mode 100644
index 9bb6caa3e..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/SnapshotBalanceCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto10
-{
- class SnapshotBalanceCommit : Proto9.SnapshotBalanceCommit
- {
- public SnapshotBalanceCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/SoftwareCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/SoftwareCommit.cs
deleted file mode 100644
index 06d074a8c..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/SoftwareCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto10
-{
- class SoftwareCommit : Proto5.SoftwareCommit
- {
- public SoftwareCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/StateCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/StateCommit.cs
deleted file mode 100644
index 4a88c1e52..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/StateCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto10
-{
- class StateCommit : Proto1.StateCommit
- {
- public StateCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/StatisticsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/StatisticsCommit.cs
deleted file mode 100644
index 29f62c63f..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/StatisticsCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto10
-{
- class StatisticsCommit : Proto1.StatisticsCommit
- {
- public StatisticsCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/SubsidyCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/SubsidyCommit.cs
deleted file mode 100644
index 3f2414b7c..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/SubsidyCommit.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-using System.Text.Json;
-using Microsoft.EntityFrameworkCore;
-using Netezos.Encoding;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto10
-{
- class SubsidyCommit : ProtocolCommit
- {
- public SubsidyCommit(ProtocolHandler protocol) : base(protocol) { }
-
- public virtual async Task Apply(Block block, JsonElement content)
- {
- var balanceUpdate = content.RequiredArray("balance_updates").EnumerateArray()
- .First(x => x.RequiredString("kind") == "contract");
- var contract = (await Cache.Accounts.GetExistingAsync(balanceUpdate.RequiredString("contract")) as Contract)!;
- Db.TryAttach(contract);
- var op = new MigrationOperation
- {
- Id = Cache.AppState.NextOperationId(),
- AccountId = contract.Id,
- BalanceChange = balanceUpdate.RequiredInt64("change"),
- Level = block.Level,
- Timestamp = block.Timestamp,
- Kind = MigrationKind.Subsidy,
- };
- Db.MigrationOps.Add(op);
- Context.MigrationOps.Add(op);
- Cache.AppState.Get().MigrationOpsCount++;
-
- Cache.Statistics.Current.TotalCreated += op.BalanceChange;
-
- contract.MigrationsCount++;
- Receive(contract, null, op.BalanceChange);
-
- block.Operations |= Operations.Migrations;
-
- var schema = await Cache.Schemas.GetAsync(contract);
- var currStorage = await Cache.Storages.GetAsync(contract);
-
- Db.TryAttach(currStorage);
- currStorage.Current = false;
-
- var newStorageMicheline = schema.OptimizeStorage(content.RequiredMicheline("storage"), false);
- var newStorageBytes = newStorageMicheline.ToBytes();
- var newStorage = new Storage
- {
- Id = Cache.AppState.NextStorageId(),
- Level = op.Level,
- ContractId = contract.Id,
- MigrationId = op.Id,
- RawValue = newStorageBytes,
- JsonValue = schema.HumanizeStorage(newStorageMicheline),
- Current = true,
- };
-
- Db.Storages.Add(newStorage);
- Cache.Storages.Add(contract, newStorage);
-
- op.StorageId = newStorage.Id;
- }
-
- public virtual async Task Revert(Block block)
- {
- foreach (var op in Context.MigrationOps.Where(x => x.Kind == MigrationKind.Subsidy))
- {
- var contract = (await Cache.Accounts.GetAsync(op.AccountId) as Contract)!;
- Db.TryAttach(contract);
- contract.MigrationsCount--;
- RevertReceive(contract, null, op.BalanceChange);
-
- Cache.AppState.Get().MigrationOpsCount--;
- Cache.AppState.ReleaseOperationId();
- Db.MigrationOps.Remove(op);
-
- var storage = await Cache.Storages.GetAsync(contract);
- if (storage.MigrationId == op.Id)
- {
- var prevStorage = await Db.Storages
- .Where(x => x.ContractId == contract.Id && x.Id < storage.Id)
- .OrderByDescending(x => x.Id)
- .FirstAsync();
-
- prevStorage.Current = true;
- Cache.Storages.Add(contract, prevStorage);
-
- Db.Storages.Remove(storage);
- Cache.AppState.ReleaseStorageId();
- }
- }
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/TokensCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/TokensCommit.cs
deleted file mode 100644
index 908144f71..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/TokensCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto10
-{
- class TokensCommit : Proto5.TokensCommit
- {
- public TokensCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/VotingCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/VotingCommit.cs
deleted file mode 100644
index d4a2d5cbf..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Commits/VotingCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto10
-{
- class VotingCommit : Proto8.VotingCommit
- {
- public VotingCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Diagnostics/Diagnostics.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Diagnostics/Diagnostics.cs
deleted file mode 100644
index d44966493..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Diagnostics/Diagnostics.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto10
-{
- class Diagnostics : Proto5.Diagnostics
- {
- public Diagnostics(ProtocolHandler handler) : base(handler) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Helpers.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Helpers.cs
deleted file mode 100644
index ee439ccce..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Helpers.cs
+++ /dev/null
@@ -1,4 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto10
-{
- public class Helpers(ProtocolHandler proto) : Proto1.Helpers(proto) { }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Proto10Handler.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Proto10Handler.cs
deleted file mode 100644
index 1f2473f11..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Proto10Handler.cs
+++ /dev/null
@@ -1,292 +0,0 @@
-using System.Text.Json;
-using App.Metrics;
-using Tzkt.Data;
-using Tzkt.Data.Models;
-using Tzkt.Sync.Services;
-using Tzkt.Sync.Protocols.Proto10;
-
-namespace Tzkt.Sync.Protocols
-{
- class Proto10Handler : ProtocolHandler
- {
- public override IDiagnostics Diagnostics { get; }
- public override IHelpers Helpers { get; }
- public override IValidator Validator { get; }
- public override IRpc Rpc { get; }
- public override string VersionName => "granada_010";
- public override int VersionNumber => 10;
-
- public Proto10Handler(TezosNode node, TzktContext db, CacheService cache, QuotesService quotes, IServiceProvider services, IConfiguration config, ILogger logger, IMetrics metrics)
- : base(node, db, cache, quotes, services, config, logger, metrics)
- {
- Rpc = new Rpc(node);
- Diagnostics = new Diagnostics(this);
- Helpers = new Helpers(this);
- Validator = new Validator(this);
- }
-
- public override Task Activate(AppState state, JsonElement block) => new ProtoActivator(this).Activate(state, block);
- public override Task Deactivate(AppState state) => new ProtoActivator(this).Deactivate(state);
-
- public override async Task Commit(JsonElement block)
- {
- await new StatisticsCommit(this).Apply(block);
-
- var blockCommit = new BlockCommit(this);
- await blockCommit.Apply(block);
-
- await new SoftwareCommit(this).Apply(blockCommit.Block, block);
- new FreezerCommit(this).Apply(blockCommit.Block, block);
- await new RevelationPenaltyCommit(this).Apply(blockCommit.Block, block);
- await new DeactivationCommit(this).Apply(blockCommit.Block, block);
-
- #region implicit operations
- foreach (var op in block
- .Required("metadata")
- .RequiredArray("implicit_operations_results")
- .EnumerateArray()
- .Where(x => x.RequiredString("kind") == "transaction"))
- await new SubsidyCommit(this).Apply(blockCommit.Block, op);
- #endregion
-
- var operations = block.RequiredArray("operations", 4);
-
- #region operations 0
- foreach (var operation in operations[0].EnumerateArray())
- {
- foreach (var content in operation.RequiredArray("contents", 1).EnumerateArray())
- {
- switch (content.RequiredString("kind"))
- {
- case "endorsement_with_slot":
- await new AttestationsCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- default:
- throw new NotImplementedException($"'{content.RequiredString("kind")}' is not allowed in operations[0]");
- }
- }
- }
- #endregion
-
- #region operations 1
- foreach (var operation in operations[1].EnumerateArray())
- {
- foreach (var content in operation.RequiredArray("contents", 1).EnumerateArray())
- {
- switch (content.RequiredString("kind"))
- {
- case "proposals":
- await new ProposalsCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- case "ballot":
- await new BallotsCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- default:
- throw new NotImplementedException($"'{content.RequiredString("kind")}' is not allowed in operations[1]");
- }
- }
- }
- #endregion
-
- #region operations 2
- foreach (var operation in operations[2].EnumerateArray())
- {
- foreach (var content in operation.RequiredArray("contents", 1).EnumerateArray())
- {
- switch (content.RequiredString("kind"))
- {
- case "activate_account":
- await new ActivationsCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- case "double_baking_evidence":
- await new DoubleBakingCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- case "double_endorsement_evidence":
- await new DoubleConsensusCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- case "seed_nonce_revelation":
- await new NonceRevelationsCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- default:
- throw new NotImplementedException($"'{content.RequiredString("kind")}' is not allowed in operations[2]");
- }
- }
- }
- #endregion
-
- var bigMapCommit = new BigMapCommit(this);
-
- #region operations 3
- foreach (var operation in operations[3].EnumerateArray())
- {
- Manager.Init(operation);
- foreach (var content in operation.RequiredArray("contents").EnumerateArray())
- {
- switch (content.RequiredString("kind"))
- {
- case "reveal":
- await new RevealsCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- case "delegation":
- await new DelegationsCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- case "origination":
- var orig = new OriginationsCommit(this);
- await orig.Apply(blockCommit.Block, operation, content);
- if (orig.BigMapDiffs != null)
- bigMapCommit.Append(orig.Origination, orig.Contract!, orig.BigMapDiffs);
- break;
- case "transaction":
- var parent = new TransactionsCommit(this);
- await parent.Apply(blockCommit.Block, operation, content);
- if (parent.BigMapDiffs != null)
- bigMapCommit.Append(parent.Transaction, (parent.Target as Contract)!, parent.BigMapDiffs);
-
- if (content.Required("metadata").TryGetProperty("internal_operation_results", out var internalResult))
- {
- foreach (var internalContent in internalResult.EnumerateArray())
- {
- switch (internalContent.RequiredString("kind"))
- {
- case "delegation":
- await new DelegationsCommit(this).ApplyInternal(blockCommit.Block, parent.Transaction, internalContent);
- break;
- case "origination":
- var internalOrig = new OriginationsCommit(this);
- await internalOrig.ApplyInternal(blockCommit.Block, parent.Transaction, internalContent);
- if (internalOrig.BigMapDiffs != null)
- bigMapCommit.Append(internalOrig.Origination, internalOrig.Contract!, internalOrig.BigMapDiffs);
- break;
- case "transaction":
- var internalTx = new TransactionsCommit(this);
- await internalTx.ApplyInternal(blockCommit.Block, parent.Transaction, internalContent);
- if (internalTx.BigMapDiffs != null)
- bigMapCommit.Append(internalTx.Transaction, (internalTx.Target as Contract)!, internalTx.BigMapDiffs);
- break;
- default:
- throw new NotImplementedException($"internal '{internalContent.RequiredString("kind")}' is not implemented");
- }
- }
- }
- break;
- default:
- throw new NotImplementedException($"'{content.RequiredString("kind")}' is not expected in operations[3]");
- }
- }
- Manager.Reset();
- }
- #endregion
-
- await bigMapCommit.Apply();
- await new TokensCommit(this).Apply(blockCommit.Block, bigMapCommit.Updates);
-
- var brCommit = new BakingRightsCommit(this);
- await brCommit.Apply(blockCommit.Block);
-
- var cycleCommit = new CycleCommit(this);
- await cycleCommit.Apply(blockCommit.Block);
-
- await new DelegatorCycleCommit(this).Apply(blockCommit.Block, cycleCommit.FutureCycle);
-
- await new BakerCycleCommit(this).Apply(
- blockCommit.Block,
- cycleCommit.FutureCycle,
- brCommit.FutureBakingRights,
- brCommit.FutureAttestationRights,
- cycleCommit.BakerSnapshots,
- brCommit.CurrentRights);
-
- await new VotingCommit(this).Apply(blockCommit.Block, block);
- await new StateCommit(this).Apply(blockCommit.Block, block);
- }
-
- public override async Task AfterCommit(JsonElement rawBlock)
- {
- var block = await Cache.Blocks.CurrentAsync();
- await new SnapshotBalanceCommit(this).Apply(rawBlock, block);
- }
-
- public override async Task BeforeRevert()
- {
- var block = await Cache.Blocks.CurrentAsync();
- await new SnapshotBalanceCommit(this).Revert(block);
- }
-
- public override async Task Revert()
- {
- var currBlock = await Cache.Blocks.CurrentAsync();
- Db.TryAttach(currBlock);
-
- await new VotingCommit(this).Revert(currBlock);
- await new StatisticsCommit(this).Revert(currBlock);
-
- await new BakerCycleCommit(this).Revert(currBlock);
- await new DelegatorCycleCommit(this).Revert(currBlock);
- await new CycleCommit(this).Revert(currBlock);
- await new BakingRightsCommit(this).Revert(currBlock);
- await new TokensCommit(this).Revert(currBlock);
- await new BigMapCommit(this).Revert(currBlock);
-
- foreach (var operation in Context.EnumerateOps().OrderByDescending(x => x.Id).ToList())
- {
- switch (operation)
- {
- case AttestationOperation op:
- await new AttestationsCommit(this).Revert(currBlock, op);
- break;
- case ProposalOperation op:
- await new ProposalsCommit(this).Revert(currBlock, op);
- break;
- case BallotOperation op:
- await new BallotsCommit(this).Revert(currBlock, op);
- break;
- case ActivationOperation op:
- await new ActivationsCommit(this).Revert(currBlock, op);
- break;
- case DoubleBakingOperation op:
- await new DoubleBakingCommit(this).Revert(currBlock, op);
- break;
- case DoubleConsensusOperation op:
- await new DoubleConsensusCommit(this).Revert(currBlock, op);
- break;
- case NonceRevelationOperation op:
- await new NonceRevelationsCommit(this).Revert(currBlock, op);
- break;
- case RevealOperation op:
- await new RevealsCommit(this).Revert(currBlock, op);
- break;
- case DelegationOperation op:
- if (op.InitiatorId == null)
- await new DelegationsCommit(this).Revert(currBlock, op);
- else
- await new DelegationsCommit(this).RevertInternal(currBlock, op);
- break;
- case OriginationOperation op:
- if (op.InitiatorId == null)
- await new OriginationsCommit(this).Revert(currBlock, op);
- else
- await new OriginationsCommit(this).RevertInternal(currBlock, op);
- break;
- case TransactionOperation op:
- if (op.InitiatorId == null)
- await new TransactionsCommit(this).Revert(currBlock, op);
- else
- await new TransactionsCommit(this).RevertInternal(currBlock, op);
- break;
- default:
- throw new NotImplementedException($"'{operation.GetType()}' is not implemented");
- }
- }
-
- await new SubsidyCommit(this).Revert(currBlock);
-
- await new DeactivationCommit(this).Revert(currBlock);
- await new RevelationPenaltyCommit(this).Revert(currBlock);
- await new FreezerCommit(this).Revert(currBlock);
- await new SoftwareCommit(this).Revert(currBlock);
- await new BlockCommit(this).Revert(currBlock);
-
- await new StateCommit(this).Revert(currBlock);
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Rpc/Rpc.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Rpc/Rpc.cs
deleted file mode 100644
index 4fe06c26b..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Rpc/Rpc.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-using Tzkt.Sync.Services;
-
-namespace Tzkt.Sync.Protocols.Proto10
-{
- class Rpc : Proto6.Rpc
- {
- public Rpc(TezosNode node) : base(node) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto10/Validation/Validator.cs b/Tzkt.Sync/Protocols/Handlers/Proto10/Validation/Validator.cs
deleted file mode 100644
index b3a89bf07..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto10/Validation/Validator.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto10
-{
- class Validator : Proto1.Validator
- {
- public Validator(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Activation/ProtoActivator.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Activation/ProtoActivator.cs
deleted file mode 100644
index ae12ad987..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Activation/ProtoActivator.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class ProtoActivator : Proto10.ProtoActivator
- {
- public ProtoActivator(ProtocolHandler proto) : base(proto) { }
-
- protected override void UpgradeParameters(Protocol protocol, Protocol prev) { }
- protected override Task MigrateContext(AppState state) => Task.CompletedTask;
- protected override Task RevertContext(AppState state) => Task.CompletedTask;
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/BakerCycleCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/BakerCycleCommit.cs
deleted file mode 100644
index 2cd03882e..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/BakerCycleCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class BakerCycleCommit : Proto6.BakerCycleCommit
- {
- public BakerCycleCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/BakingRightsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/BakingRightsCommit.cs
deleted file mode 100644
index 73971fab0..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/BakingRightsCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class BakingRightsCommit : Proto10.BakingRightsCommit
- {
- public BakingRightsCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/BigMapCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/BigMapCommit.cs
deleted file mode 100644
index 63feda26e..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/BigMapCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class BigMapCommit : Proto1.BigMapCommit
- {
- public BigMapCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/BlockCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/BlockCommit.cs
deleted file mode 100644
index 2e11ab657..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/BlockCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class BlockCommit : Proto10.BlockCommit
- {
- public BlockCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/CycleCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/CycleCommit.cs
deleted file mode 100644
index 505e22983..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/CycleCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class CycleCommit : Proto1.CycleCommit
- {
- public CycleCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/DeactivationCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/DeactivationCommit.cs
deleted file mode 100644
index 5b957eed9..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/DeactivationCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class DeactivationCommit : Proto2.DeactivationCommit
- {
- public DeactivationCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/DelegatorCycleCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/DelegatorCycleCommit.cs
deleted file mode 100644
index 7c50482f6..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/DelegatorCycleCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class DelegatorCycleCommit : Proto3.DelegatorCycleCommit
- {
- public DelegatorCycleCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/FreezerCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/FreezerCommit.cs
deleted file mode 100644
index 0015f29dd..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/FreezerCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class FreezerCommit : Proto9.FreezerCommit
- {
- public FreezerCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/ActivationsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/ActivationsCommit.cs
deleted file mode 100644
index c12f8ff00..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/ActivationsCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class ActivationsCommit : Proto1.ActivationsCommit
- {
- public ActivationsCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/AttestationsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/AttestationsCommit.cs
deleted file mode 100644
index 82bf0480e..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/AttestationsCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class AttestationsCommit : Proto1.AttestationsCommit
- {
- public AttestationsCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/BallotsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/BallotsCommit.cs
deleted file mode 100644
index f4ed0f6ee..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/BallotsCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class BallotsCommit : Proto3.BallotsCommit
- {
- public BallotsCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/DelegationsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/DelegationsCommit.cs
deleted file mode 100644
index df7a97efb..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/DelegationsCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class DelegationsCommit : Proto1.DelegationsCommit
- {
- public DelegationsCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/DoubleBakingCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/DoubleBakingCommit.cs
deleted file mode 100644
index 868df019c..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/DoubleBakingCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class DoubleBakingCommit : Proto2.DoubleBakingCommit
- {
- public DoubleBakingCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/DoubleConsensusCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/DoubleConsensusCommit.cs
deleted file mode 100644
index a4d8aa293..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/DoubleConsensusCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class DoubleConsensusCommit : Proto4.DoubleConsensusCommit
- {
- public DoubleConsensusCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/NonceRevelationsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/NonceRevelationsCommit.cs
deleted file mode 100644
index 12382334b..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/NonceRevelationsCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class NonceRevelationsCommit : Proto1.NonceRevelationsCommit
- {
- public NonceRevelationsCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/OriginationsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/OriginationsCommit.cs
deleted file mode 100644
index 3ef244d07..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/OriginationsCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class OriginationsCommit : Proto5.OriginationsCommit
- {
- public OriginationsCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/ProposalsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/ProposalsCommit.cs
deleted file mode 100644
index ca4acab51..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/ProposalsCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class ProposalsCommit : Proto3.ProposalsCommit
- {
- public ProposalsCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/RegisterConstantsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/RegisterConstantsCommit.cs
deleted file mode 100644
index a0d1a0c1d..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/RegisterConstantsCommit.cs
+++ /dev/null
@@ -1,116 +0,0 @@
-using System.Text.Json;
-using Netezos.Encoding;
-using Tzkt.Data.Models;
-using Tzkt.Data.Models.Base;
-
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class RegisterConstantsCommit(ProtocolHandler protocol) : ProtocolCommit(protocol)
- {
- public virtual async Task Apply(Block block, JsonElement op, JsonElement content)
- {
- #region init
- var sender = (User)await Cache.Accounts.GetExistingAsync(content.RequiredString("source"));
-
- var result = content.Required("metadata").Required("operation_result");
- var registerConstant = new RegisterConstantOperation
- {
- Id = Cache.AppState.NextOperationId(),
- OpHash = op.RequiredString("hash"),
- Level = block.Level,
- Timestamp = block.Timestamp,
- BakerFee = content.RequiredInt64("fee"),
- Counter = content.RequiredInt32("counter"),
- GasLimit = content.RequiredInt32("gas_limit"),
- StorageLimit = content.RequiredInt32("storage_limit"),
- SenderId = sender.Id,
- Status = result.RequiredString("status") switch
- {
- "applied" => OperationStatus.Applied,
- "backtracked" => OperationStatus.Backtracked,
- "failed" => OperationStatus.Failed,
- "skipped" => OperationStatus.Skipped,
- _ => throw new NotImplementedException()
- },
- Errors = result.TryGetProperty("errors", out var errors)
- ? OperationErrors.Parse(content, errors)
- : null,
- GasUsed = GetConsumedGas(result),
- StorageUsed = result.OptionalInt32("storage_size") ?? 0,
- StorageFee = result.OptionalInt32("storage_size") > 0
- ? result.OptionalInt32("storage_size") * Context.Protocol.ByteCost
- : null,
- };
- #endregion
-
- #region apply operation
- Db.TryAttach(sender);
- PayFee(sender, registerConstant.BakerFee);
- sender.Counter = registerConstant.Counter;
- sender.RegisterConstantsCount++;
-
- block.Operations |= Operations.RegisterConstant;
-
- Cache.AppState.Get().RegisterConstantOpsCount++;
- #endregion
-
- #region apply result
- if (registerConstant.Status == OperationStatus.Applied)
- {
- var burned = registerConstant.StorageFee ?? 0;
- Proto.Manager.Burn(burned);
-
- Spend(sender, burned);
-
- registerConstant.Address = result.RequiredString("global_address");
- registerConstant.Value = content.RequiredMicheline("value").ToBytes();
- registerConstant.Refs = 0;
-
- Cache.AppState.Get().ConstantsCount++;
-
- Cache.Statistics.Current.TotalBurned += burned;
- }
- #endregion
-
- Proto.Manager.Set(sender);
- Db.RegisterConstantOps.Add(registerConstant);
- Context.RegisterConstantOps.Add(registerConstant);
- }
-
- public virtual async Task Revert(Block block, RegisterConstantOperation registerConstant)
- {
- #region entities
- var sender = (User)await Cache.Accounts.GetAsync(registerConstant.SenderId);
-
- Db.TryAttach(sender);
- #endregion
-
- #region revert result
- if (registerConstant.Status == OperationStatus.Applied)
- {
- RevertSpend(sender, registerConstant.StorageFee ?? 0);
-
- Cache.AppState.Get().ConstantsCount--;
- }
- #endregion
-
- #region revert operation
- RevertPayFee(sender, registerConstant.BakerFee);
- sender.Counter = registerConstant.Counter - 1;
- sender.RegisterConstantsCount--;
- sender.Revealed = true;
-
- Cache.AppState.Get().RegisterConstantOpsCount--;
- #endregion
-
- Db.RegisterConstantOps.Remove(registerConstant);
- Cache.AppState.ReleaseManagerCounter();
- Cache.AppState.ReleaseOperationId();
- }
-
- protected virtual int GetConsumedGas(JsonElement result)
- {
- return result.OptionalInt32("consumed_gas") ?? 0;
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/RevealsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/RevealsCommit.cs
deleted file mode 100644
index ce6f50736..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/RevealsCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class RevealsCommit : Proto1.RevealsCommit
- {
- public RevealsCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/TransactionsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/TransactionsCommit.cs
deleted file mode 100644
index 361a5e90d..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/Operations/TransactionsCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class TransactionsCommit : Proto5.TransactionsCommit
- {
- public TransactionsCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/RevelationPenaltyCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/RevelationPenaltyCommit.cs
deleted file mode 100644
index 7e9a86fd0..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/RevelationPenaltyCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class RevelationPenaltyCommit : Proto9.RevelationPenaltyCommit
- {
- public RevelationPenaltyCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/SnapshotBalanceCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/SnapshotBalanceCommit.cs
deleted file mode 100644
index 94c3e98d4..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/SnapshotBalanceCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class SnapshotBalanceCommit : Proto9.SnapshotBalanceCommit
- {
- public SnapshotBalanceCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/SoftwareCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/SoftwareCommit.cs
deleted file mode 100644
index c0f2a4b2c..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/SoftwareCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class SoftwareCommit : Proto5.SoftwareCommit
- {
- public SoftwareCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/StateCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/StateCommit.cs
deleted file mode 100644
index fbd09b634..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/StateCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class StateCommit : Proto1.StateCommit
- {
- public StateCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/StatisticsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/StatisticsCommit.cs
deleted file mode 100644
index 114c62d02..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/StatisticsCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class StatisticsCommit : Proto1.StatisticsCommit
- {
- public StatisticsCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/SubsidyCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/SubsidyCommit.cs
deleted file mode 100644
index ce3abbf6a..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/SubsidyCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class SubsidyCommit : Proto10.SubsidyCommit
- {
- public SubsidyCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/TokensCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/TokensCommit.cs
deleted file mode 100644
index a36020b40..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/TokensCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class TokensCommit : Proto5.TokensCommit
- {
- public TokensCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/VotingCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/VotingCommit.cs
deleted file mode 100644
index 0fc0a0aa1..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Commits/VotingCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class VotingCommit : Proto8.VotingCommit
- {
- public VotingCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Diagnostics/Diagnostics.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Diagnostics/Diagnostics.cs
deleted file mode 100644
index 1c41abc7a..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Diagnostics/Diagnostics.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class Diagnostics : Proto10.Diagnostics
- {
- public Diagnostics(ProtocolHandler handler) : base(handler) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Helpers.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Helpers.cs
deleted file mode 100644
index d8a193d60..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Helpers.cs
+++ /dev/null
@@ -1,4 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto11
-{
- public class Helpers(ProtocolHandler proto) : Proto1.Helpers(proto) { }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Proto11Handler.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Proto11Handler.cs
deleted file mode 100644
index c810547b6..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Proto11Handler.cs
+++ /dev/null
@@ -1,298 +0,0 @@
-using System.Text.Json;
-using App.Metrics;
-using Tzkt.Data;
-using Tzkt.Data.Models;
-using Tzkt.Sync.Services;
-using Tzkt.Sync.Protocols.Proto11;
-
-namespace Tzkt.Sync.Protocols
-{
- class Proto11Handler : ProtocolHandler
- {
- public override IDiagnostics Diagnostics { get; }
- public override IHelpers Helpers { get; }
- public override IValidator Validator { get; }
- public override IRpc Rpc { get; }
- public override string VersionName => "hangzhou_011";
- public override int VersionNumber => 11;
-
- public Proto11Handler(TezosNode node, TzktContext db, CacheService cache, QuotesService quotes, IServiceProvider services, IConfiguration config, ILogger logger, IMetrics metrics)
- : base(node, db, cache, quotes, services, config, logger, metrics)
- {
- Rpc = new Rpc(node);
- Diagnostics = new Diagnostics(this);
- Helpers = new Helpers(this);
- Validator = new Validator(this);
- }
-
- public override Task Activate(AppState state, JsonElement block) => new ProtoActivator(this).Activate(state, block);
- public override Task Deactivate(AppState state) => new ProtoActivator(this).Deactivate(state);
-
- public override async Task Commit(JsonElement block)
- {
- await new StatisticsCommit(this).Apply(block);
-
- var blockCommit = new BlockCommit(this);
- await blockCommit.Apply(block);
-
- await new SoftwareCommit(this).Apply(blockCommit.Block, block);
- new FreezerCommit(this).Apply(blockCommit.Block, block);
- await new RevelationPenaltyCommit(this).Apply(blockCommit.Block, block);
- await new DeactivationCommit(this).Apply(blockCommit.Block, block);
-
- #region implicit operations
- foreach (var op in block
- .Required("metadata")
- .RequiredArray("implicit_operations_results")
- .EnumerateArray()
- .Where(x => x.RequiredString("kind") == "transaction"))
- await new SubsidyCommit(this).Apply(blockCommit.Block, op);
- #endregion
-
- var operations = block.RequiredArray("operations", 4);
-
- #region operations 0
- foreach (var operation in operations[0].EnumerateArray())
- {
- foreach (var content in operation.RequiredArray("contents", 1).EnumerateArray())
- {
- switch (content.RequiredString("kind"))
- {
- case "endorsement_with_slot":
- await new AttestationsCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- default:
- throw new NotImplementedException($"'{content.RequiredString("kind")}' is not allowed in operations[0]");
- }
- }
- }
- #endregion
-
- #region operations 1
- foreach (var operation in operations[1].EnumerateArray())
- {
- foreach (var content in operation.RequiredArray("contents", 1).EnumerateArray())
- {
- switch (content.RequiredString("kind"))
- {
- case "proposals":
- await new ProposalsCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- case "ballot":
- await new BallotsCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- default:
- throw new NotImplementedException($"'{content.RequiredString("kind")}' is not allowed in operations[1]");
- }
- }
- }
- #endregion
-
- #region operations 2
- foreach (var operation in operations[2].EnumerateArray())
- {
- foreach (var content in operation.RequiredArray("contents", 1).EnumerateArray())
- {
- switch (content.RequiredString("kind"))
- {
- case "activate_account":
- await new ActivationsCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- case "double_baking_evidence":
- await new DoubleBakingCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- case "double_endorsement_evidence":
- await new DoubleConsensusCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- case "seed_nonce_revelation":
- await new NonceRevelationsCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- default:
- throw new NotImplementedException($"'{content.RequiredString("kind")}' is not allowed in operations[2]");
- }
- }
- }
- #endregion
-
- var bigMapCommit = new BigMapCommit(this);
-
- #region operations 3
- foreach (var operation in operations[3].EnumerateArray())
- {
- Manager.Init(operation);
- foreach (var content in operation.RequiredArray("contents").EnumerateArray())
- {
- switch (content.RequiredString("kind"))
- {
- case "reveal":
- await new RevealsCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- case "register_global_constant":
- await new RegisterConstantsCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- case "delegation":
- await new DelegationsCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- case "origination":
- var orig = new OriginationsCommit(this);
- await orig.Apply(blockCommit.Block, operation, content);
- if (orig.BigMapDiffs != null)
- bigMapCommit.Append(orig.Origination, orig.Contract!, orig.BigMapDiffs);
- break;
- case "transaction":
- var parent = new TransactionsCommit(this);
- await parent.Apply(blockCommit.Block, operation, content);
- if (parent.BigMapDiffs != null)
- bigMapCommit.Append(parent.Transaction, (parent.Target as Contract)!, parent.BigMapDiffs);
-
- if (content.Required("metadata").TryGetProperty("internal_operation_results", out var internalResult))
- {
- foreach (var internalContent in internalResult.EnumerateArray())
- {
- switch (internalContent.RequiredString("kind"))
- {
- case "delegation":
- await new DelegationsCommit(this).ApplyInternal(blockCommit.Block, parent.Transaction, internalContent);
- break;
- case "origination":
- var internalOrig = new OriginationsCommit(this);
- await internalOrig.ApplyInternal(blockCommit.Block, parent.Transaction, internalContent);
- if (internalOrig.BigMapDiffs != null)
- bigMapCommit.Append(internalOrig.Origination, internalOrig.Contract!, internalOrig.BigMapDiffs);
- break;
- case "transaction":
- var internalTx = new TransactionsCommit(this);
- await internalTx.ApplyInternal(blockCommit.Block, parent.Transaction, internalContent);
- if (internalTx.BigMapDiffs != null)
- bigMapCommit.Append(internalTx.Transaction, (internalTx.Target as Contract)!, internalTx.BigMapDiffs);
- break;
- default:
- throw new NotImplementedException($"internal '{internalContent.RequiredString("kind")}' is not implemented");
- }
- }
- }
- break;
- default:
- throw new NotImplementedException($"'{content.RequiredString("kind")}' is not expected in operations[3]");
- }
- }
- Manager.Reset();
- }
- #endregion
-
- await bigMapCommit.Apply();
- await new TokensCommit(this).Apply(blockCommit.Block, bigMapCommit.Updates);
-
- var brCommit = new BakingRightsCommit(this);
- await brCommit.Apply(blockCommit.Block);
-
- var cycleCommit = new CycleCommit(this);
- await cycleCommit.Apply(blockCommit.Block);
-
- await new DelegatorCycleCommit(this).Apply(blockCommit.Block, cycleCommit.FutureCycle);
-
- await new BakerCycleCommit(this).Apply(
- blockCommit.Block,
- cycleCommit.FutureCycle,
- brCommit.FutureBakingRights,
- brCommit.FutureAttestationRights,
- cycleCommit.BakerSnapshots,
- brCommit.CurrentRights);
-
- await new VotingCommit(this).Apply(blockCommit.Block, block);
- await new StateCommit(this).Apply(blockCommit.Block, block);
- }
-
- public override async Task AfterCommit(JsonElement rawBlock)
- {
- var block = await Cache.Blocks.CurrentAsync();
- await new SnapshotBalanceCommit(this).Apply(rawBlock, block);
- }
-
- public override async Task BeforeRevert()
- {
- var block = await Cache.Blocks.CurrentAsync();
- await new SnapshotBalanceCommit(this).Revert(block);
- }
-
- public override async Task Revert()
- {
- var currBlock = await Cache.Blocks.CurrentAsync();
- Db.TryAttach(currBlock);
-
- await new VotingCommit(this).Revert(currBlock);
- await new StatisticsCommit(this).Revert(currBlock);
-
- await new BakerCycleCommit(this).Revert(currBlock);
- await new DelegatorCycleCommit(this).Revert(currBlock);
- await new CycleCommit(this).Revert(currBlock);
- await new BakingRightsCommit(this).Revert(currBlock);
- await new TokensCommit(this).Revert(currBlock);
- await new BigMapCommit(this).Revert(currBlock);
-
- foreach (var operation in Context.EnumerateOps().OrderByDescending(x => x.Id).ToList())
- {
- switch (operation)
- {
- case AttestationOperation op:
- await new AttestationsCommit(this).Revert(currBlock, op);
- break;
- case ProposalOperation op:
- await new ProposalsCommit(this).Revert(currBlock, op);
- break;
- case BallotOperation op:
- await new BallotsCommit(this).Revert(currBlock, op);
- break;
- case ActivationOperation op:
- await new ActivationsCommit(this).Revert(currBlock, op);
- break;
- case DoubleBakingOperation op:
- await new DoubleBakingCommit(this).Revert(currBlock, op);
- break;
- case DoubleConsensusOperation op:
- await new DoubleConsensusCommit(this).Revert(currBlock, op);
- break;
- case NonceRevelationOperation op:
- await new NonceRevelationsCommit(this).Revert(currBlock, op);
- break;
- case RevealOperation op:
- await new RevealsCommit(this).Revert(currBlock, op);
- break;
- case RegisterConstantOperation op:
- await new RegisterConstantsCommit(this).Revert(currBlock, op);
- break;
- case DelegationOperation op:
- if (op.InitiatorId == null)
- await new DelegationsCommit(this).Revert(currBlock, op);
- else
- await new DelegationsCommit(this).RevertInternal(currBlock, op);
- break;
- case OriginationOperation op:
- if (op.InitiatorId == null)
- await new OriginationsCommit(this).Revert(currBlock, op);
- else
- await new OriginationsCommit(this).RevertInternal(currBlock, op);
- break;
- case TransactionOperation op:
- if (op.InitiatorId == null)
- await new TransactionsCommit(this).Revert(currBlock, op);
- else
- await new TransactionsCommit(this).RevertInternal(currBlock, op);
- break;
- default:
- throw new NotImplementedException($"'{operation.GetType()}' is not implemented");
- }
- }
-
- await new SubsidyCommit(this).Revert(currBlock);
-
- await new DeactivationCommit(this).Revert(currBlock);
- await new RevelationPenaltyCommit(this).Revert(currBlock);
- await new FreezerCommit(this).Revert(currBlock);
- await new SoftwareCommit(this).Revert(currBlock);
- await new BlockCommit(this).Revert(currBlock);
-
- await new StateCommit(this).Revert(currBlock);
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Rpc/Rpc.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Rpc/Rpc.cs
deleted file mode 100644
index 2da0b0fe9..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Rpc/Rpc.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-using Tzkt.Sync.Services;
-
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class Rpc : Proto6.Rpc
- {
- public Rpc(TezosNode node) : base(node) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto11/Validation/Validator.cs b/Tzkt.Sync/Protocols/Handlers/Proto11/Validation/Validator.cs
deleted file mode 100644
index bc928ad26..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto11/Validation/Validator.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto11
-{
- class Validator : Proto1.Validator
- {
- public Validator(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Activation/ProtoActivator.Accounts.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Activation/ProtoActivator.Accounts.cs
deleted file mode 100644
index 540f3558b..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Activation/ProtoActivator.Accounts.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using Newtonsoft.Json.Linq;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto12
-{
- partial class ProtoActivator : Proto11.ProtoActivator
- {
- protected override async Task> BootstrapAccounts(Protocol protocol, JToken parameters)
- {
- var accounts = await base.BootstrapAccounts(protocol, parameters);
-
- Cache.Statistics.Current.TotalFrozen = accounts
- .Where(x => x is Data.Models.Delegate baker && baker.BakingPower != 0)
- .Sum(x => (x as Data.Models.Delegate)!.BakingPower / (protocol.MaxDelegatedOverFrozenRatio + 1));
-
- return accounts;
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Activation/ProtoActivator.BakerCycles.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Activation/ProtoActivator.BakerCycles.cs
deleted file mode 100644
index 60fcacefe..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Activation/ProtoActivator.BakerCycles.cs
+++ /dev/null
@@ -1,86 +0,0 @@
-using Microsoft.EntityFrameworkCore;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto12
-{
- partial class ProtoActivator : Proto11.ProtoActivator
- {
- public override void BootstrapBakerCycles(
- Protocol protocol,
- List accounts,
- List cycles,
- List> bakingRights,
- List> attestationRights)
- {
- var bakers = accounts
- .Where(x => x.Type == AccountType.Delegate)
- .Select(x => (x as Data.Models.Delegate)!);
-
- foreach (var cycle in cycles)
- {
- var bakerCycles = bakers.ToDictionary(x => x.Id, x =>
- {
- var bakerCycle = new BakerCycle
- {
- Id = 0,
- Cycle = cycle.Index,
- BakerId = x.Id,
- OwnDelegatedBalance = x.Balance,
- ExternalDelegatedBalance = x.ExternalDelegatedBalance,
- DelegatorsCount = x.DelegatorsCount,
- OwnStakedBalance = x.OwnStakedBalance,
- ExternalStakedBalance = x.ExternalStakedBalance,
- StakersCount = x.StakersCount,
- IssuedPseudotokens = x.IssuedPseudotokens,
- BakingPower = x.BakingPower,
- TotalBakingPower = cycle.TotalBakingPower
- };
- if (x.BakingPower != 0)
- {
- var expectedAttestations = (protocol.BlocksPerCycle * protocol.AttestersPerBlock).MulRatio(x.BakingPower, cycle.TotalBakingPower);
- bakerCycle.ExpectedBlocks = protocol.BlocksPerCycle.MulRatio(x.BakingPower, cycle.TotalBakingPower);
- bakerCycle.ExpectedAttestations = expectedAttestations;
- bakerCycle.FutureAttestationRewards = expectedAttestations * protocol.AttestationReward0;
- }
- return bakerCycle;
- });
-
- #region future baking rights
- foreach (var br in bakingRights[cycle.Index].SkipWhile(x => x.Level == 1).Where(x => x.Round == 0))
- {
- if (!bakerCycles.TryGetValue(br.Baker, out var bakerCycle))
- throw new Exception("Unknown baking right recipient");
-
- bakerCycle.FutureBlocks++;
- bakerCycle.FutureBlockRewards += protocol.MaxBakingReward;
- }
- #endregion
-
- #region future attestation rights
- foreach (var ar in attestationRights[cycle.Index].TakeWhile(x => x.Level < cycle.LastLevel))
- {
- if (!bakerCycles.TryGetValue(ar.Baker, out var bakerCycle))
- throw new Exception("Unknown attestation right recipient");
-
- bakerCycle.FutureAttestations += ar.Slots;
- }
- #endregion
-
- #region shifted future endirsing rights
- if (cycle.Index > 0)
- {
- foreach (var ar in attestationRights[cycle.Index - 1].Reverse().TakeWhile(x => x.Level == cycle.FirstLevel - 1))
- {
- if (!bakerCycles.TryGetValue(ar.Baker, out var bakerCycle))
- throw new Exception("Unknown attestation right recipient");
-
- bakerCycle.FutureAttestations += ar.Slots;
- }
- }
- #endregion
-
- Db.BakerCycles.AddRange(bakerCycles.Values);
- }
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Activation/ProtoActivator.BakingRights.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Activation/ProtoActivator.BakingRights.cs
deleted file mode 100644
index 0d6ec9390..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Activation/ProtoActivator.BakingRights.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto12
-{
- partial class ProtoActivator : Proto11.ProtoActivator
- {
- protected override async Task<(IEnumerable, IEnumerable)> GetRights(
- Protocol protocol,
- List accounts,
- Cycle cycle)
- {
- var bakers = accounts
- .Where(x => x is Data.Models.Delegate d && d.BakingPower != 0)
- .Select(x => (x as Data.Models.Delegate)!);
-
- var sampler = GetSampler(bakers.Select(x => (x.Id, x.BakingPower)));
-
- #region temporary diagnostics
- await sampler.Validate(Proto, 1, cycle.Index);
- #endregion
-
- var bakingRights = await RightsGenerator.GetBakingRightsAsync(sampler, protocol, cycle);
- var attestationRights = await RightsGenerator.GetAttestationRightsAsync(sampler, protocol, cycle);
- return (bakingRights, attestationRights);
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Activation/ProtoActivator.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Activation/ProtoActivator.cs
deleted file mode 100644
index fa9ea1929..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Activation/ProtoActivator.cs
+++ /dev/null
@@ -1,505 +0,0 @@
-using Microsoft.EntityFrameworkCore;
-using System.Numerics;
-using Netezos.Encoding;
-using Newtonsoft.Json.Linq;
-using Npgsql;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto12
-{
- partial class ProtoActivator(ProtocolHandler proto) : Proto11.ProtoActivator(proto)
- {
- protected override void SetParameters(Protocol protocol, JToken parameters)
- {
- base.SetParameters(protocol, parameters);
- protocol.BlocksPerSnapshot = parameters["blocks_per_stake_snapshot"]?.Value() ?? 512;
- protocol.AttestersPerBlock = parameters["consensus_committee_size"]?.Value() ?? 7000;
- protocol.MinimalStake = parameters["tokens_per_roll"]?.Value() ?? 6_000_000_000;
- protocol.BlockDeposit = 0;
- protocol.AttestationDeposit = 0;
-
- var totalReward = 80_000_000 / (60 / protocol.TimeBetweenBlocks);
- protocol.BlockReward0 = parameters["baking_reward_fixed_portion"]?.Value() ?? (totalReward / 4);
- protocol.BlockReward1 = parameters["baking_reward_bonus_per_slot"]?.Value() ?? (totalReward / 4 / (protocol.AttestersPerBlock / 3));
- protocol.AttestationReward0 = parameters["endorsing_reward_per_slot"]?.Value() ?? (totalReward / 2 / protocol.AttestersPerBlock);
- protocol.AttestationReward1 = 0;
-
- protocol.LBToggleThreshold = (parameters["liquidity_baking_escape_ema_threshold"]?.Value() ?? 666_667) * 1000;
-
- protocol.ConsensusThreshold = parameters["consensus_threshold"]?.Value() ?? 4667;
- protocol.MinParticipationNumerator = parameters["minimal_participation_ratio"]?["numerator"]?.Value() ?? 2;
- protocol.MinParticipationDenominator = parameters["minimal_participation_ratio"]?["denominator"]?.Value() ?? 3;
- protocol.DenunciationPeriod = 1;
- protocol.SlashingDelay = 1;
- protocol.MaxDelegatedOverFrozenRatio = 100 / (parameters["frozen_deposits_percentage"]?.Value() ?? 10) - 1;
-
- protocol.MaxBakingReward = protocol.BlockReward0 + protocol.AttestersPerBlock / 3 * protocol.BlockReward1;
- protocol.MaxAttestationReward = protocol.AttestersPerBlock * protocol.AttestationReward0;
- }
-
- protected override void UpgradeParameters(Protocol protocol, Protocol prev)
- {
- protocol.AttestersPerBlock = 7000;
- protocol.MinimalStake = 6_000_000_000;
- protocol.BlockDeposit = 0;
- protocol.AttestationDeposit = 0;
-
- var totalReward = 80_000_000 / (60 / protocol.TimeBetweenBlocks);
- protocol.BlockReward0 = totalReward / 4;
- protocol.BlockReward1 = totalReward / 4 / (protocol.AttestersPerBlock / 3);
- protocol.AttestationReward0 = totalReward / 2 / protocol.AttestersPerBlock;
- protocol.AttestationReward1 = 0;
-
- protocol.LBToggleThreshold = 666_667_000;
-
- protocol.ConsensusThreshold = 4667;
- protocol.MinParticipationNumerator = 2;
- protocol.MinParticipationDenominator = 3;
- protocol.DenunciationPeriod = 1;
- protocol.SlashingDelay = 1;
- protocol.MaxDelegatedOverFrozenRatio = 9;
-
- protocol.MaxBakingReward = protocol.BlockReward0 + protocol.AttestersPerBlock / 3 * protocol.BlockReward1;
- protocol.MaxAttestationReward = protocol.AttestersPerBlock * protocol.AttestationReward0;
- }
-
- protected override async Task MigrateContext(AppState state)
- {
- var prevProto = await Cache.Protocols.GetAsync(state.Protocol);
- var nextProto = await Cache.Protocols.GetAsync(state.NextProtocol);
-
- var bakers = MigrateBakers();
- await MigrateCycles(state, bakers, nextProto);
- MigrateStatistics(bakers, nextProto);
-
- if (state.Level == 1) return;
-
- Proto.Diagnostics.TrackChanges();
- await Db.SaveChangesAsync();
-
- await MigrateSnapshots(state);
- await MigrateCurrentRights(state, bakers, prevProto, nextProto);
- await MigrateFutureRights(state, bakers, nextProto);
-
- Cache.BakingRights.Reset();
- Cache.BakerCycles.Reset();
- }
-
- protected override Task RevertContext(AppState state)
- {
- throw new NotImplementedException("Reverting Ithaca migration block is technically impossible");
- }
-
- List MigrateBakers()
- {
- var bakers = Cache.Accounts.GetDelegates().ToList();
- foreach (var baker in bakers)
- {
- Db.TryAttach(baker);
-
- if (baker.Staked)
- Cache.Statistics.Current.TotalOwnDelegated -= baker.OwnDelegatedBalance;
-
- baker.OwnDelegatedBalance = baker.Balance;
-
- if (baker.Staked)
- Cache.Statistics.Current.TotalOwnDelegated += baker.OwnDelegatedBalance;
-
- UpdateBakerPower(baker);
- }
- return bakers;
- }
-
- async Task MigrateCycles(AppState state, List bakers, Protocol nextProto)
- {
- var selectedStakes = bakers
- .Where(x => x.BakingPower != 0)
- .Select(x => x.BakingPower);
-
- var selectedBakers = selectedStakes.Count();
- var selectedStake = selectedStakes.Sum();
-
- foreach (var cycle in await Db.Cycles.Where(x => x.LastLevel > state.Level).ToListAsync())
- {
- cycle.SnapshotLevel = state.Level;
- cycle.TotalBakers = selectedBakers;
- cycle.TotalBakingPower = selectedStake;
- }
- }
-
- void MigrateStatistics(List bakers, Protocol nextProto)
- {
- var stats = Cache.Statistics.Current;
- Db.TryAttach(stats);
- stats.TotalFrozen = bakers
- .Where(x => x.BakingPower != 0)
- .Sum(x => x.BakingPower / (nextProto.MaxDelegatedOverFrozenRatio + 1));
- }
-
- Task MigrateSnapshots(AppState state)
- {
- return Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "SnapshotBalances"
- WHERE "Level" = {0};
-
- INSERT INTO "SnapshotBalances" (
- "Level",
- "BakerId",
- "AccountId",
- "OwnDelegatedBalance",
- "ExternalDelegatedBalance",
- "DelegatorsCount"
- )
- SELECT
- {0},
- COALESCE("DelegateId", "Id"),
- "Id",
- COALESCE("OwnDelegatedBalance", "Balance"),
- "ExternalDelegatedBalance",
- "DelegatorsCount"
- FROM "Accounts"
- WHERE "Staked" = true;
- """, state.Level);
- }
-
- async Task MigrateCurrentRights(AppState state, List bakers, Protocol prevProto, Protocol nextProto)
- {
- var cycle = await Db.Cycles.AsNoTracking().FirstAsync(x => x.Index == state.Cycle);
- if (state.Level == cycle.LastLevel) return;
-
- var bakerCycles = await Cache.BakerCycles.GetAsync(state.Cycle);
- var selectedBakers = bakers.Where(x => x.BakingPower != 0);
-
- #region revert current rights
- var rights = await Db.BakingRights
- .AsNoTracking()
- .Where(x => x.Level > state.Level && x.Cycle == state.Cycle)
- .ToListAsync();
-
- foreach (var br in rights.Where(x => x.Type == BakingRightType.Baking && x.Round == 0))
- {
- var bakerCycle = bakerCycles[br.BakerId];
- Db.TryAttach(bakerCycle);
-
- bakerCycle.FutureBlocks--;
- bakerCycle.FutureBlockRewards -= GetFutureBlockReward(prevProto, state.Cycle);
- }
-
- foreach (var ar in rights.Where(x => x.Type == BakingRightType.Attestation))
- {
- var bakerCycle = bakerCycles[ar.BakerId];
- Db.TryAttach(bakerCycle);
-
- bakerCycle.FutureAttestations -= ar.Slots!.Value;
- bakerCycle.FutureAttestationRewards -= GetFutureAttestationReward(prevProto, state.Cycle, ar.Slots.Value);
- }
-
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "BakingRights"
- WHERE "Level" > {0} AND "Cycle" = {1}
- """, state.Level, state.Cycle);
-
- #endregion
-
- #region add missed baker cycles
- foreach (var baker in selectedBakers)
- {
- if (!bakerCycles.TryGetValue(baker.Id, out var bc))
- {
- bc = new BakerCycle
- {
- Id = 0,
- Cycle = state.Cycle,
- BakerId = baker.Id
- };
- Db.BakerCycles.Add(bc);
- Cache.BakerCycles.Add(bc);
-
- if (baker.DelegatorsCount > 0)
- {
- await Db.Database.ExecuteSqlRawAsync("""
- INSERT INTO "DelegatorCycles" (
- "Cycle",
- "DelegatorId",
- "BakerId",
- "DelegatedBalance",
- "StakedPseudotokens"
- )
- SELECT
- {0},
- "AccountId",
- "BakerId",
- "OwnDelegatedBalance",
- "Pseudotokens"
- FROM "SnapshotBalances"
- WHERE "Level" = {1}
- AND "BakerId" = {2}
- AND "BakerId" != "AccountId"
- """, state.Cycle, state.Level, baker.Id);
- }
- }
- }
- #endregion
-
- #region update baker cycles
- foreach (var (bakerId, bc) in bakerCycles)
- {
- var baker = Cache.Accounts.GetDelegate(bakerId);
-
- Db.TryAttach(bc);
- bc.OwnDelegatedBalance = baker.OwnDelegatedBalance;
- bc.ExternalDelegatedBalance = baker.ExternalDelegatedBalance;
- bc.DelegatorsCount = baker.DelegatorsCount;
- bc.OwnStakedBalance = baker.OwnStakedBalance;
- bc.ExternalStakedBalance = baker.ExternalStakedBalance;
- bc.IssuedPseudotokens = baker.IssuedPseudotokens;
- bc.StakersCount = baker.StakersCount;
- bc.BakingPower = baker.BakingPower;
- bc.TotalBakingPower = cycle.TotalBakingPower;
-
- if (baker.BakingPower != 0)
- {
- var expectedAttestations = (nextProto.BlocksPerCycle * nextProto.AttestersPerBlock).MulRatio(baker.BakingPower, cycle.TotalBakingPower);
- bc.FutureAttestationRewards += expectedAttestations * nextProto.AttestationReward0;
- }
- }
- #endregion
-
- #region apply new rights
- var sampler = GetSampler(selectedBakers.Select(x => (x.Id, x.BakingPower)));
-
- #region temporary diagnostics
- await sampler.Validate(Proto, state.Level, cycle.Index);
- #endregion
-
- var brs = new List();
- var ars = new List();
- for (int level = state.Level + 1; level <= cycle.LastLevel; level++)
- {
- foreach (var br in RightsGenerator.GetBakingRights(sampler, cycle, level))
- {
- brs.Add(br);
- if (br.Round == 0)
- {
- var bakerCycle = bakerCycles[br.Baker];
- Db.TryAttach(bakerCycle);
- bakerCycle.FutureBlocks++;
- bakerCycle.FutureBlockRewards += nextProto.MaxBakingReward;
- }
- }
- foreach (var ar in RightsGenerator.GetAttestationRights(sampler, nextProto, cycle, level - 1))
- {
- ars.Add(ar);
- var bakerCycle = bakerCycles[ar.Baker];
- Db.TryAttach(bakerCycle);
- bakerCycle.FutureAttestations += ar.Slots;
- }
- }
-
- var conn = (Db.Database.GetDbConnection() as NpgsqlConnection)!;
- using var writer = conn.BeginBinaryImport(@"
- COPY ""BakingRights"" (""Cycle"", ""Level"", ""BakerId"", ""Type"", ""Status"", ""Round"", ""Slots"")
- FROM STDIN (FORMAT BINARY)");
-
- foreach (var ar in ars)
- {
- writer.StartRow();
- writer.Write(cycle.Index, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write(ar.Level + 1, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write(ar.Baker, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write((int)BakingRightType.Attestation, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write((int)BakingRightStatus.Future, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.WriteNull();
- writer.Write(ar.Slots, NpgsqlTypes.NpgsqlDbType.Integer);
- }
-
- foreach (var br in brs)
- {
- writer.StartRow();
- writer.Write(cycle.Index, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write(br.Level, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write(br.Baker, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write((int)BakingRightType.Baking, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write((int)BakingRightStatus.Future, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write(br.Round, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.WriteNull();
- }
-
- writer.Complete();
- #endregion
- }
-
- async Task MigrateFutureRights(AppState state, List bakers, Protocol nextProto)
- {
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "BakingRights" WHERE "Cycle" > {0};
- DELETE FROM "BakerCycles" WHERE "Cycle" > {0};
- DELETE FROM "DelegatorCycles" WHERE "Cycle" > {0};
- """, state.Cycle);
-
- var seelctedBakers = bakers.Where(x => x.BakingPower != 0);
- var sampler = GetSampler(seelctedBakers.Select(x => (x.Id, x.BakingPower)));
-
- #region temporary diagnostics
- await sampler.Validate(Proto, state.Level, state.Cycle);
- #endregion
-
- var cycles = await Db.Cycles.AsNoTracking().Where(x => x.Index >= state.Cycle).OrderBy(x => x.Index).ToListAsync();
- var conn = (Db.Database.GetDbConnection() as NpgsqlConnection)!;
-
- #region save shifted
- var currentCycle = cycles.First();
- var shifted = RightsGenerator.GetAttestationRights(sampler, nextProto, currentCycle, currentCycle.LastLevel);
-
- using (var writer = conn.BeginBinaryImport(@"
- COPY ""BakingRights"" (""Cycle"", ""Level"", ""BakerId"", ""Type"", ""Status"", ""Round"", ""Slots"")
- FROM STDIN (FORMAT BINARY)"))
- {
- foreach (var ar in shifted)
- {
- writer.StartRow();
- writer.Write(currentCycle.Index + 1, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write(ar.Level + 1, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write(ar.Baker, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write((int)BakingRightType.Attestation, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write((int)BakingRightStatus.Future, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.WriteNull();
- writer.Write(ar.Slots, NpgsqlTypes.NpgsqlDbType.Integer);
- }
-
- writer.Complete();
- }
- #endregion
-
- foreach (var cycle in cycles.Skip(1))
- {
- GC.Collect();
- var brs = await RightsGenerator.GetBakingRightsAsync(sampler, nextProto, cycle);
- var ars = await RightsGenerator.GetAttestationRightsAsync(sampler, nextProto, cycle);
-
- #region save rights
- using (var writer = conn.BeginBinaryImport(@"
- COPY ""BakingRights"" (""Cycle"", ""Level"", ""BakerId"", ""Type"", ""Status"", ""Round"", ""Slots"")
- FROM STDIN (FORMAT BINARY)"))
- {
- foreach (var ar in ars)
- {
- writer.StartRow();
- writer.Write(nextProto.GetCycle(ar.Level + 1), NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write(ar.Level + 1, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write(ar.Baker, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write((int)BakingRightType.Attestation, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write((int)BakingRightStatus.Future, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.WriteNull();
- writer.Write(ar.Slots, NpgsqlTypes.NpgsqlDbType.Integer);
- }
-
- foreach (var br in brs)
- {
- writer.StartRow();
- writer.Write(cycle.Index, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write(br.Level, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write(br.Baker, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write((int)BakingRightType.Baking, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write((int)BakingRightStatus.Future, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write(br.Round, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.WriteNull();
- }
-
- writer.Complete();
- }
- #endregion
-
- #region save delegator cycles
- await Db.Database.ExecuteSqlRawAsync("""
- INSERT INTO "DelegatorCycles" (
- "Cycle",
- "DelegatorId",
- "BakerId",
- "DelegatedBalance",
- "StakedPseudotokens"
- )
- SELECT
- {0},
- "AccountId",
- "BakerId",
- "OwnDelegatedBalance",
- "Pseudotokens"
- FROM "SnapshotBalances"
- WHERE "Level" = {1}
- AND "BakerId" != "AccountId"
- """, cycle.Index, cycle.SnapshotLevel);
- #endregion
-
- #region save baker cycles
- var bakerCycles = bakers.Where(x => x.Staked).ToDictionary(x => x.Id, x =>
- {
- var bc = new BakerCycle
- {
- Id = 0,
- BakerId = x.Id,
- Cycle = cycle.Index,
- OwnDelegatedBalance = x.OwnDelegatedBalance,
- ExternalDelegatedBalance = x.ExternalDelegatedBalance,
- DelegatorsCount = x.DelegatorsCount,
- OwnStakedBalance = x.OwnStakedBalance,
- ExternalStakedBalance = x.ExternalStakedBalance,
- StakersCount = x.StakersCount,
- IssuedPseudotokens = x.IssuedPseudotokens,
- BakingPower = x.BakingPower,
- TotalBakingPower = cycle.TotalBakingPower
- };
- if (x.BakingPower != 0)
- {
- var expectedAttestations = (nextProto.BlocksPerCycle * nextProto.AttestersPerBlock).MulRatio(x.BakingPower, cycle.TotalBakingPower);
- bc.ExpectedBlocks = nextProto.BlocksPerCycle.MulRatio(x.BakingPower, cycle.TotalBakingPower);
- bc.ExpectedAttestations = expectedAttestations;
- bc.FutureAttestationRewards = expectedAttestations * nextProto.AttestationReward0;
- }
- return bc;
- });
- Db.BakerCycles.AddRange(bakerCycles.Values);
- #endregion
-
- #region apply future baking rights
- foreach (var br in brs.Where(x => x.Round == 0))
- {
- if (!bakerCycles.TryGetValue(br.Baker, out var bakerCycle))
- throw new Exception("Nonexistent baker cycle");
-
- bakerCycle.FutureBlocks++;
- bakerCycle.FutureBlockRewards += nextProto.MaxBakingReward;
- }
- #endregion
-
- #region apply future attestation rights
- foreach (var ar in shifted)
- {
- if (bakerCycles.TryGetValue(ar.Baker, out var bakerCycle))
- {
- bakerCycle.FutureAttestations += ar.Slots;
- }
- }
- foreach (var ar in ars.TakeWhile(x => x.Level < cycle.LastLevel))
- {
- if (!bakerCycles.TryGetValue(ar.Baker, out var bakerCycle))
- throw new Exception("Nonexistent baker cycle");
-
- bakerCycle.FutureAttestations += ar.Slots;
- }
- #endregion
-
- shifted = ars.Where(x => x.Level == cycle.LastLevel).ToList();
- }
- }
-
- protected virtual Sampler GetSampler(IEnumerable<(int id, long stake)> selection)
- {
- var sorted = selection
- .OrderByDescending(x => x.stake)
- .ThenByDescending(x => Base58.Parse(Cache.Accounts.GetDelegate(x.id).Address), new BytesComparer());
-
- return new Sampler([..sorted.Select(x => x.id)], [..sorted.Select(x => x.stake)]);
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/AttestationRewardCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/AttestationRewardCommit.cs
deleted file mode 100644
index 615a58993..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/AttestationRewardCommit.cs
+++ /dev/null
@@ -1,99 +0,0 @@
-using System.Text.Json;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class AttestationRewardCommit(ProtocolHandler protocol) : ProtocolCommit(protocol)
- {
- public virtual async Task Apply(Block block, JsonElement rawBlock)
- {
- if (!block.Events.HasFlag(BlockEvents.CycleEnd))
- return;
-
- var losses = rawBlock.Required("metadata").RequiredArray("balance_updates").EnumerateArray()
- .Where(x => x.RequiredString("origin") == "block" &&
- x.RequiredString("kind") == "burned" &&
- x.RequiredString("category") == "lost endorsing rewards")
- .ToDictionary(x => Cache.Accounts.GetExistingDelegate(x.RequiredString("delegate")).Id, x => x.RequiredInt64("change"));
-
- var bakerCycles = await Cache.BakerCycles.GetAsync(block.Cycle);
- var ops = new List(bakerCycles.Count);
-
- foreach (var (bakerId, bakerCycle) in bakerCycles.Where(x => x.Value.FutureAttestationRewards > 0))
- {
- ops.Add(new()
- {
- Id = Cache.AppState.NextOperationId(),
- BakerId = bakerId,
- Level = block.Level,
- Timestamp = block.Timestamp,
- Expected = bakerCycle.FutureAttestationRewards,
- RewardDelegated = bakerCycle.FutureAttestationRewards
- });
-
- Db.TryAttach(bakerCycle);
- if (losses.TryGetValue(bakerId, out var loss))
- {
- if (bakerCycle.FutureAttestationRewards != loss)
- throw new Exception("FutureAttestationRewards != loss");
-
- ops[^1].RewardDelegated = 0;
- bakerCycle.MissedAttestationRewards += bakerCycle.FutureAttestationRewards;
- bakerCycle.FutureAttestationRewards = 0;
- }
- else
- {
- bakerCycle.AttestationRewardsDelegated += bakerCycle.FutureAttestationRewards;
- bakerCycle.FutureAttestationRewards = 0;
- }
- }
-
- foreach (var op in ops)
- {
- var baker = Cache.Accounts.GetDelegate(op.BakerId);
- Db.TryAttach(baker);
-
- Receive(baker, baker, op.RewardDelegated);
- baker.AttestationRewardsCount++;
-
- block.Operations |= Operations.AttestationRewards;
-
- Cache.Statistics.Current.TotalCreated += op.RewardDelegated;
- }
-
- Cache.AppState.Get().AttestationRewardOpsCount += ops.Count;
-
- Db.AttestationRewardOps.AddRange(ops);
- Context.AttestationRewardOps.AddRange(ops);
- }
-
- public virtual async Task Revert(Block block)
- {
- if (Context.AttestationRewardOps.Count == 0)
- return;
-
- foreach (var op in Context.AttestationRewardOps)
- {
- var baker = Cache.Accounts.GetDelegate(op.BakerId);
- Db.TryAttach(baker);
-
- RevertReceive(baker, baker, op.RewardDelegated);
- baker.AttestationRewardsCount--;
-
- var bakerCycle = await Cache.BakerCycles.GetAsync(block.Cycle, baker.Id);
- Db.TryAttach(bakerCycle);
-
- bakerCycle.FutureAttestationRewards = op.Expected;
- if (op.Expected == op.RewardDelegated)
- bakerCycle.AttestationRewardsDelegated -= op.Expected;
- else
- bakerCycle.MissedAttestationRewards -= op.Expected;
- }
-
- Cache.AppState.Get().AttestationRewardOpsCount -= Context.AttestationRewardOps.Count;
-
- Db.AttestationRewardOps.RemoveRange(Context.AttestationRewardOps);
- Cache.AppState.ReleaseOperationId(Context.AttestationRewardOps.Count);
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/BakerCycleCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/BakerCycleCommit.cs
deleted file mode 100644
index 905c40f8c..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/BakerCycleCommit.cs
+++ /dev/null
@@ -1,366 +0,0 @@
-using Microsoft.EntityFrameworkCore;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class BakerCycleCommit(ProtocolHandler protocol) : ProtocolCommit(protocol)
- {
- public virtual async Task Apply(
- Block block,
- Cycle? futureCycle,
- IEnumerable? futureBakingRights,
- IEnumerable? futureAttestationRights,
- List? snapshots,
- Dictionary? selectedStakes,
- List currentRights)
- {
- #region current rights
- if (block.BlockRound == 0)
- {
- var bakerCycle = await Cache.BakerCycles.GetAsync(block.Cycle, block.ProposerId!.Value);
- Db.TryAttach(bakerCycle);
-
- bakerCycle.FutureBlocks--;
- bakerCycle.FutureBlockRewards -= Context.Protocol.MaxBakingReward;
- bakerCycle.Blocks++;
- bakerCycle.BlockRewardsDelegated += block.RewardDelegated + block.BonusDelegated;
- bakerCycle.BlockFees += block.Fees;
- }
- else
- {
- var set = new HashSet();
- foreach (var br in currentRights.Where(x => x.Type == BakingRightType.Baking).OrderBy(x => x.Round))
- {
- if (set.Add(br.BakerId))
- {
- var bakerCycle = await Cache.BakerCycles.GetAsync(block.Cycle, br.BakerId);
- Db.TryAttach(bakerCycle);
-
- if (br.Round == 0)
- {
- bakerCycle.FutureBlocks--;
- bakerCycle.FutureBlockRewards -= Context.Protocol.MaxBakingReward;
- }
-
- if (br.BakerId == block.ProposerId || br.BakerId == block.ProducerId)
- {
- bakerCycle.Blocks++;
- }
- else
- {
- bakerCycle.MissedBlocks++;
- }
-
- if (br.BakerId == block.ProposerId)
- {
- bakerCycle.BlockRewardsDelegated += block.RewardDelegated;
- bakerCycle.BlockFees += block.Fees;
- }
- else if (br.Round < block.PayloadRound)
- {
- bakerCycle.MissedBlockRewards += block.RewardDelegated;
- bakerCycle.MissedBlockFees += block.Fees;
- }
-
- if (br.BakerId == block.ProducerId)
- {
- bakerCycle.BlockRewardsDelegated += block.BonusDelegated;
- }
- else
- {
- bakerCycle.MissedBlockRewards += block.BonusDelegated;
- }
- }
- }
- }
-
- foreach (var ar in currentRights.Where(x => x.Type == BakingRightType.Attestation))
- {
- var bakerCycle = await Cache.BakerCycles.GetOrDefaultAsync(block.Cycle, ar.BakerId);
- if (bakerCycle == null) continue;
-
- Db.TryAttach(bakerCycle);
- bakerCycle.FutureAttestations -= ar.Slots!.Value;
- if (ar.Status == BakingRightStatus.Realized)
- bakerCycle.Attestations += ar.Slots.Value;
- else if (ar.Status == BakingRightStatus.Missed)
- bakerCycle.MissedAttestations += ar.Slots.Value;
- else
- throw new Exception("Unexpected future rights");
- }
-
- foreach (var op in Context.DoubleBakingOps)
- {
- var offenderCycle = await Cache.BakerCycles.GetOrDefaultAsync(block.Cycle, op.OffenderId);
- if (offenderCycle != null)
- {
- Db.TryAttach(offenderCycle);
- offenderCycle.DoubleBakingLostStaked += op.LostStaked;
- }
-
- var accuserCycle = await Cache.BakerCycles.GetOrDefaultAsync(block.Cycle, op.AccuserId);
- if (accuserCycle != null)
- {
- Db.TryAttach(accuserCycle);
- accuserCycle.DoubleBakingRewards += op.Reward;
- }
- }
-
- foreach (var op in Context.DoubleConsensusOps)
- {
- var offenderCycle = await Cache.BakerCycles.GetOrDefaultAsync(block.Cycle, op.OffenderId);
- if (offenderCycle != null)
- {
- Db.TryAttach(offenderCycle);
- offenderCycle.DoubleConsensusLostStaked += op.LostStaked;
- }
-
- var accuserCycle = await Cache.BakerCycles.GetOrDefaultAsync(block.Cycle, op.AccuserId);
- if (accuserCycle != null)
- {
- Db.TryAttach(accuserCycle);
- accuserCycle.DoubleConsensusRewards += op.Reward;
- }
- }
-
- foreach (var op in Context.NonceRevelationOps)
- {
- var bakerCycle = await Cache.BakerCycles.GetOrDefaultAsync(block.Cycle, op.BakerId);
- if (bakerCycle != null)
- {
- Db.TryAttach(bakerCycle);
- bakerCycle.NonceRevelationRewardsDelegated += op.RewardDelegated;
- }
- }
-
- foreach (var op in Context.VdfRevelationOps)
- {
- var bakerCycle = await Cache.BakerCycles.GetAsync(block.Cycle, op.BakerId);
- Db.TryAttach(bakerCycle);
-
- bakerCycle.VdfRevelationRewardsDelegated += op.RewardDelegated;
- }
- #endregion
-
- #region new cycle
- if (block.Events.HasFlag(BlockEvents.CycleBegin))
- {
- var bakerCycles = snapshots!.ToDictionary(x => x.AccountId, snapshot =>
- {
- var bakerCycle = new BakerCycle
- {
- Id = 0,
- BakerId = snapshot.AccountId,
- Cycle = futureCycle!.Index,
- OwnDelegatedBalance = snapshot.OwnDelegatedBalance,
- ExternalDelegatedBalance = snapshot.ExternalDelegatedBalance!.Value,
- DelegatorsCount = snapshot.DelegatorsCount!.Value,
- OwnStakedBalance = snapshot.OwnStakedBalance ?? 0,
- ExternalStakedBalance = snapshot.ExternalStakedBalance ?? 0,
- StakersCount = snapshot.StakersCount ?? 0,
- IssuedPseudotokens = snapshot.Pseudotokens,
- BakingPower = 0,
- TotalBakingPower = futureCycle.TotalBakingPower
- };
- if (selectedStakes!.TryGetValue(bakerCycle.BakerId, out var bakingPower))
- {
- var expectedAttestations = (Context.Protocol.BlocksPerCycle * Context.Protocol.AttestersPerBlock).MulRatio(bakingPower, futureCycle.TotalBakingPower);
- bakerCycle.BakingPower = bakingPower;
- bakerCycle.ExpectedBlocks = Context.Protocol.BlocksPerCycle.MulRatio(bakingPower, futureCycle.TotalBakingPower);
- bakerCycle.ExpectedAttestations = expectedAttestations;
- bakerCycle.FutureAttestationRewards = expectedAttestations * Context.Protocol.AttestationReward0;
- }
- return bakerCycle;
- });
-
- #region future baking rights
- foreach (var br in futureBakingRights!.Where(x => x.Round == 0))
- {
- if (!bakerCycles.TryGetValue(br.Baker, out var bakerCycle))
- throw new Exception("Nonexistent baker cycle");
-
- bakerCycle.FutureBlocks++;
- bakerCycle.FutureBlockRewards += Context.Protocol.MaxBakingReward;
- }
- #endregion
-
- #region future attestation rights
- var skipLevel = futureAttestationRights!.Last().Level;
- foreach (var ar in futureAttestationRights!.TakeWhile(x => x.Level < skipLevel))
- {
- if (!bakerCycles.TryGetValue(ar.Baker, out var bakerCycle))
- throw new Exception("Nonexistent baker cycle");
-
- bakerCycle.FutureAttestations += ar.Slots;
- }
- #endregion
-
- #region shifted future attestation rights
- var shifted = await Db.BakingRights.AsNoTracking()
- .Where(x => x.Level == futureCycle!.FirstLevel && x.Type == BakingRightType.Attestation)
- .ToListAsync();
-
- foreach (var ar in shifted)
- {
- if (bakerCycles.TryGetValue(ar.BakerId, out var bakerCycle))
- {
- bakerCycle.FutureAttestations += ar.Slots!.Value;
- }
- }
- #endregion
-
- Db.BakerCycles.AddRange(bakerCycles.Values);
- }
- #endregion
- }
-
- public virtual async Task Revert(Block block)
- {
- #region current rights
- var currentRights = await Cache.BakingRights.GetAsync(block.Level);
-
- if (block.BlockRound == 0)
- {
- var bakerCycle = await Cache.BakerCycles.GetAsync(block.Cycle, block.ProposerId!.Value);
- Db.TryAttach(bakerCycle);
-
- bakerCycle.FutureBlocks++;
- bakerCycle.FutureBlockRewards += Context.Protocol.MaxBakingReward;
- bakerCycle.Blocks--;
- bakerCycle.BlockRewardsDelegated -= block.RewardDelegated + block.BonusDelegated;
- bakerCycle.BlockFees -= block.Fees;
- }
- else
- {
- var set = new HashSet();
- var bakerRound = currentRights
- .Where(x => x.Type == BakingRightType.Baking)
- .OrderBy(x => x.Round)
- .First(x => x.Status == BakingRightStatus.Realized)
- .Round;
-
- foreach (var br in currentRights.Where(x => x.Type == BakingRightType.Baking).OrderBy(x => x.Round))
- {
- if (set.Add(br.BakerId))
- {
- var bakerCycle = await Cache.BakerCycles.GetAsync(block.Cycle, br.BakerId);
- Db.TryAttach(bakerCycle);
-
- if (br.Round == 0)
- {
- bakerCycle.FutureBlocks++;
- bakerCycle.FutureBlockRewards += Context.Protocol.MaxBakingReward;
- }
-
- if (br.BakerId == block.ProposerId || br.BakerId == block.ProducerId)
- {
- bakerCycle.Blocks--;
- }
- else
- {
- bakerCycle.MissedBlocks--;
- }
-
- if (br.BakerId == block.ProposerId)
- {
- bakerCycle.BlockRewardsDelegated -= block.RewardDelegated;
- bakerCycle.BlockFees -= block.Fees;
- }
- else if (br.Round < bakerRound)
- {
- bakerCycle.MissedBlockRewards -= block.RewardDelegated;
- bakerCycle.MissedBlockFees -= block.Fees;
- }
-
- if (br.BakerId == block.ProducerId)
- {
- bakerCycle.BlockRewardsDelegated -= block.BonusDelegated;
- }
- else
- {
- bakerCycle.MissedBlockRewards -= block.BonusDelegated;
- }
- }
- }
- }
-
- foreach (var ar in currentRights.Where(x => x.Type == BakingRightType.Attestation))
- {
- var bakerCycle = await Cache.BakerCycles.GetOrDefaultAsync(block.Cycle, ar.BakerId);
- if (bakerCycle == null) continue;
-
- Db.TryAttach(bakerCycle);
- bakerCycle.FutureAttestations += ar.Slots!.Value;
- if (ar.Status == BakingRightStatus.Realized)
- bakerCycle.Attestations -= ar.Slots.Value;
- else if (ar.Status == BakingRightStatus.Missed)
- bakerCycle.MissedAttestations -= ar.Slots.Value;
- else
- throw new Exception("Unexpected future rights");
- }
-
- foreach (var op in Context.DoubleBakingOps)
- {
- var offenderCycle = await Cache.BakerCycles.GetOrDefaultAsync(block.Cycle, op.OffenderId);
- if (offenderCycle != null)
- {
- Db.TryAttach(offenderCycle);
- offenderCycle.DoubleBakingLostStaked -= op.LostStaked;
- }
-
- var accuserCycle = await Cache.BakerCycles.GetOrDefaultAsync(block.Cycle, op.AccuserId);
- if (accuserCycle != null)
- {
- Db.TryAttach(accuserCycle);
- accuserCycle.DoubleBakingRewards -= op.Reward;
- }
- }
-
- foreach (var op in Context.DoubleConsensusOps)
- {
- var offenderCycle = await Cache.BakerCycles.GetOrDefaultAsync(block.Cycle, op.OffenderId);
- if (offenderCycle != null)
- {
- Db.TryAttach(offenderCycle);
- offenderCycle.DoubleConsensusLostStaked -= op.LostStaked;
- }
-
- var accuserCycle = await Cache.BakerCycles.GetOrDefaultAsync(block.Cycle, op.AccuserId);
- if (accuserCycle != null)
- {
- Db.TryAttach(accuserCycle);
- accuserCycle.DoubleConsensusRewards -= op.Reward;
- }
- }
-
- foreach (var op in Context.NonceRevelationOps)
- {
- var bakerCycle = await Cache.BakerCycles.GetOrDefaultAsync(block.Cycle, op.BakerId);
- if (bakerCycle != null)
- {
- Db.TryAttach(bakerCycle);
- bakerCycle.NonceRevelationRewardsDelegated -= op.RewardDelegated;
- }
- }
-
- foreach (var op in Context.VdfRevelationOps)
- {
- var bakerCycle = await Cache.BakerCycles.GetAsync(block.Cycle, op.BakerId);
- Db.TryAttach(bakerCycle);
-
- bakerCycle.VdfRevelationRewardsDelegated -= op.RewardDelegated;
- }
- #endregion
-
- #region new cycle
- if (block.Events.HasFlag(BlockEvents.CycleBegin))
- {
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "BakerCycles"
- WHERE "Cycle" = {0}
- """, block.Cycle + Context.Protocol.ConsensusRightsDelay);
- }
- #endregion
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/BakingRightsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/BakingRightsCommit.cs
deleted file mode 100644
index c0b7d14d3..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/BakingRightsCommit.cs
+++ /dev/null
@@ -1,197 +0,0 @@
-using Microsoft.EntityFrameworkCore;
-using Netezos.Encoding;
-using Npgsql;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class BakingRightsCommit(ProtocolHandler protocol) : ProtocolCommit(protocol)
- {
- public List CurrentRights { get; protected set; } = null!;
- public IEnumerable? FutureBakingRights { get; protected set; }
- public IEnumerable? FutureAttestationRights { get; protected set; }
-
- public virtual async Task Apply(Block block, Cycle? futureCycle, Dictionary? selectedStakes)
- {
- await ApplyCurrentRights(block);
-
- if (futureCycle != null)
- await ApplyNewCycle(block, futureCycle, selectedStakes!);
- }
-
- protected virtual async Task ApplyCurrentRights(Block block)
- {
- CurrentRights = await Cache.BakingRights.GetAsync(block.Level);
- var sql = string.Empty;
-
- #region load missed rounds
- var maxExistedRound = CurrentRights
- .Where(x => x.Type == BakingRightType.Baking)
- .Select(x => x.Round)
- .Max();
-
- if (maxExistedRound < block.BlockRound)
- {
- var cycle = await Db.Cycles.FirstAsync(x => x.Index == block.Cycle);
- var bakerCycles = await Cache.BakerCycles.GetAsync(block.Cycle);
- var sampler = GetSampler(
- bakerCycles.Values.Where(x => x.BakingPower > 0).Select(x => (x.BakerId, x.BakingPower)),
- block.ProtoCode > 1 && block.Cycle <= Context.Protocol.FirstCycle + Context.Protocol.ConsensusRightsDelay); //TODO: remove this crutch after ithaca is gone
- #region temporary diagnostics
- await sampler.Validate(Proto, block.Level, block.Cycle);
- #endregion
- var bakingRights = RightsGenerator.GetBakingRights(sampler, cycle, block.Level, block.BlockRound + 1);
-
- var sqlInsert = @"
- INSERT INTO ""BakingRights"" (""Cycle"", ""Level"", ""BakerId"", ""Type"", ""Status"", ""Round"", ""Slots"") VALUES ";
-
- foreach (var br in bakingRights.SkipWhile(x => x.Round <= maxExistedRound))
- sqlInsert += $@"
- ({block.Cycle}, {block.Level}, {br.Baker}, {(int)BakingRightType.Baking}, {(int)BakingRightStatus.Future}, {br.Round}, null),";
-
- await Db.Database.ExecuteSqlRawAsync(sqlInsert[..^1]);
-
- //TODO: execute sql with RETURNS to get identity
- var addedRights = await Db.BakingRights
- .Where(x => x.Level == block.Level && x.Type == BakingRightType.Baking && x.Round > maxExistedRound)
- .ToListAsync();
-
- CurrentRights.AddRange(addedRights);
- }
- #endregion
-
- #region remove excess
- if (CurrentRights.RemoveAll(x => x.Type == BakingRightType.Baking && x.Round > block.BlockRound) > 0)
- {
- sql += $@"
- DELETE FROM ""BakingRights""
- WHERE ""Level"" = {block.Level}
- AND ""Type"" = {(int)BakingRightType.Baking}
- AND ""Round"" > {block.BlockRound};";
- }
- #endregion
-
- foreach (var cr in CurrentRights)
- cr.Status = BakingRightStatus.Missed;
-
- CurrentRights.First(x => x.Round == block.PayloadRound).Status = BakingRightStatus.Realized;
- if (block.PayloadRound != block.BlockRound)
- CurrentRights.First(x => x.Round == block.BlockRound).Status = BakingRightStatus.Realized;
-
- if (Context.AttestationOps.Count != 0)
- {
- var attesters = new HashSet(Context.AttestationOps.Select(x => x.DelegateId));
- foreach (var ar in CurrentRights.Where(x => x.Type == BakingRightType.Attestation && attesters.Contains(x.BakerId)))
- ar.Status = BakingRightStatus.Realized;
- }
-
- var realized = CurrentRights.Where(x => x.Status == BakingRightStatus.Realized);
- var missed = CurrentRights.Where(x => x.Status == BakingRightStatus.Missed);
-
- sql += $@"
- UPDATE ""BakingRights""
- SET ""Status"" = {(int)BakingRightStatus.Realized}
- WHERE ""Level"" = {block.Level}
- AND ""Id"" = ANY(ARRAY[{string.Join(',', realized.Select(x => x.Id))}]);";
-
- if (missed.Any())
- {
- sql += $@"
- UPDATE ""BakingRights""
- SET ""Status"" = {(int)BakingRightStatus.Missed}
- WHERE ""Level"" = {block.Level}
- AND ""Id"" = ANY(ARRAY[{string.Join(',', missed.Select(x => x.Id))}]);";
- }
-
- await Db.Database.ExecuteSqlRawAsync(sql);
- }
-
- protected virtual async Task ApplyNewCycle(Block block, Cycle futureCycle, Dictionary selectedStakes)
- {
- var sampler = GetSampler(
- selectedStakes.Where(x => x.Value > 0).Select(x => (x.Key, x.Value)),
- block.Level == Context.Protocol.FirstCycleLevel);
-
- #region temporary diagnostics
- await sampler.Validate(Proto, block.Level, futureCycle.Index);
- #endregion
-
- FutureBakingRights = await RightsGenerator.GetBakingRightsAsync(sampler, Context.Protocol, futureCycle);
- FutureAttestationRights = await RightsGenerator.GetAttestationRightsAsync(sampler, Context.Protocol, futureCycle);
-
- var conn = (Db.Database.GetDbConnection() as NpgsqlConnection)!;
- using var writer = conn.BeginBinaryImport(@"
- COPY ""BakingRights"" (""Cycle"", ""Level"", ""BakerId"", ""Type"", ""Status"", ""Round"", ""Slots"")
- FROM STDIN (FORMAT BINARY)");
-
- foreach (var ar in FutureAttestationRights)
- {
- writer.StartRow();
- writer.Write(Context.Protocol.GetCycle(ar.Level + 1), NpgsqlTypes.NpgsqlDbType.Integer); // level + 1 (shifted)
- writer.Write(ar.Level + 1, NpgsqlTypes.NpgsqlDbType.Integer); // level + 1 (shifted)
- writer.Write(ar.Baker, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write((int)BakingRightType.Attestation, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write((int)BakingRightStatus.Future, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.WriteNull();
- writer.Write(ar.Slots, NpgsqlTypes.NpgsqlDbType.Integer);
- }
-
- foreach (var br in FutureBakingRights)
- {
- writer.StartRow();
- writer.Write(futureCycle.Index, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write(br.Level, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write(br.Baker, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write((int)BakingRightType.Baking, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write((int)BakingRightStatus.Future, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.Write(br.Round, NpgsqlTypes.NpgsqlDbType.Integer);
- writer.WriteNull();
- }
-
- writer.Complete();
- }
-
- public virtual async Task Revert(Block block)
- {
- await RevertCurrentRights(block);
-
- if (block.Events.HasFlag(BlockEvents.CycleBegin))
- await RevertNewCycle(block);
- }
-
- public virtual async Task RevertCurrentRights(Block block)
- {
- CurrentRights = await Cache.BakingRights.GetAsync(block.Level);
-
- foreach (var cr in CurrentRights)
- cr.Status = BakingRightStatus.Future;
-
- await Db.Database.ExecuteSqlRawAsync("""
- UPDATE "BakingRights"
- SET "Status" = {0}
- WHERE "Level" = {1}
- """, (int)BakingRightStatus.Future, block.Level);
- }
-
- public virtual async Task RevertNewCycle(Block block)
- {
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "BakingRights"
- WHERE "Cycle" = {0} AND "Type" = {1}
- OR "Level" > {2}
- """,
- block.Cycle + Context.Protocol.ConsensusRightsDelay,
- (int)BakingRightType.Baking,
- Context.Protocol.GetCycleStart(block.Cycle + Context.Protocol.ConsensusRightsDelay));
- }
-
- protected virtual Sampler GetSampler(IEnumerable<(int id, long stake)> selection, bool forceBase)
- {
- var sorted = selection
- .OrderByDescending(x => x.stake)
- .ThenByDescending(x => Base58.Parse(Cache.Accounts.GetDelegate(x.id).Address), new BytesComparer());
-
- return new Sampler([..sorted.Select(x => x.id)], [..sorted.Select(x => x.stake)]);
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/BigMapCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/BigMapCommit.cs
deleted file mode 100644
index d2f4699d4..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/BigMapCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class BigMapCommit : Proto1.BigMapCommit
- {
- public BigMapCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/BlockCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/BlockCommit.cs
deleted file mode 100644
index bde321fce..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/BlockCommit.cs
+++ /dev/null
@@ -1,165 +0,0 @@
-using Netezos.Encoding;
-using System;
-using System.Text.Json;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class BlockCommit(ProtocolHandler protocol) : ProtocolCommit(protocol)
- {
- public Block Block { get; private set; } = null!;
-
- public virtual async Task Apply(JsonElement rawBlock)
- {
- var header = rawBlock.Required("header");
- var metadata = rawBlock.Required("metadata");
-
- var level = header.RequiredInt32("level");
- var proposer = Cache.Accounts.GetExistingDelegate(metadata.RequiredString("proposer"));
- var producer = Cache.Accounts.GetExistingDelegate(metadata.RequiredString("baker"));
- var protocol = await Cache.Protocols.GetAsync(rawBlock.RequiredString("protocol"));
- var events = BlockEvents.None;
-
- if (protocol.IsCycleStart(level))
- events |= BlockEvents.CycleBegin;
- else if (protocol.IsCycleEnd(level))
- events |= BlockEvents.CycleEnd;
-
- if (protocol.FirstLevel == level)
- events |= BlockEvents.ProtocolBegin;
- else if (protocol.Hash != metadata.RequiredString("next_protocol"))
- events |= BlockEvents.ProtocolEnd;
-
- if (metadata.RequiredArray("deactivated").Count() > 0)
- events |= BlockEvents.Deactivations;
-
- if (level % protocol.BlocksPerSnapshot == 0)
- events |= BlockEvents.BalanceSnapshot;
-
- var payloadRound = header.RequiredInt32("payload_round");
- var blockRound = Hex.Parse(header.RequiredArray("fitness", 5)[4].RequiredString()).ToInt32();
- var balanceUpdates = metadata.RequiredArray("balance_updates").EnumerateArray();
- var rewardUpdate = balanceUpdates.FirstOrDefault(x => x.RequiredString("kind") == "minted" && x.RequiredString("category") == "baking rewards");
- var bonusUpdate = balanceUpdates.FirstOrDefault(x => x.RequiredString("kind") == "minted" && x.RequiredString("category") == "baking bonuses");
-
- Block = new Block
- {
- Id = Cache.AppState.NextOperationId(),
- Hash = rawBlock.RequiredString("hash"),
- Cycle = protocol.GetCycle(level),
- Level = level,
- ProtoCode = protocol.Code,
- Timestamp = header.RequiredDateTime("timestamp"),
- AttestationCommittee = protocol.AttestersPerBlock,
- PayloadRound = payloadRound,
- BlockRound = blockRound,
- ProposerId = proposer.Id,
- ProducerId = producer.Id,
- Events = events,
- RewardDelegated = rewardUpdate.ValueKind == JsonValueKind.Undefined ? 0 : -rewardUpdate.RequiredInt64("change"),
- BonusDelegated = bonusUpdate.ValueKind == JsonValueKind.Undefined ? 0 : -bonusUpdate.RequiredInt64("change"),
- LBToggle = GetLBToggleVote(rawBlock),
- LBToggleEma = GetLBToggleEma(rawBlock)
- };
-
- Context.Block = Block;
- Context.Proposer = proposer;
- Context.Protocol = protocol;
-
- Db.TryAttach(proposer);
- Receive(proposer, proposer, Block.RewardDelegated);
- proposer.BlocksCount++;
-
- #region set baker active
- var newDeactivationLevel = proposer.Staked ? GracePeriod.Reset(Block.Level, protocol) : GracePeriod.Init(Block.Level, protocol);
- if (proposer.DeactivationLevel < newDeactivationLevel)
- {
- if (proposer.DeactivationLevel <= Block.Level)
- await ActivateBaker(proposer);
-
- Block.ResetBakerDeactivation = proposer.DeactivationLevel;
- proposer.DeactivationLevel = newDeactivationLevel;
- }
- #endregion
-
- Db.TryAttach(producer);
- Receive(producer, producer, Block.BonusDelegated);
- if (producer.Id != proposer.Id)
- {
- producer.BlocksCount++;
-
- #region set proposer active
- newDeactivationLevel = producer.Staked ? GracePeriod.Reset(Block.Level, protocol) : GracePeriod.Init(Block.Level, protocol);
- if (producer.DeactivationLevel < newDeactivationLevel)
- {
- if (producer.DeactivationLevel <= Block.Level)
- await ActivateBaker(producer);
-
- Block.ResetProposerDeactivation = producer.DeactivationLevel;
- producer.DeactivationLevel = newDeactivationLevel;
- }
- #endregion
- }
-
- Db.TryAttach(protocol); // if we don't attach it, ef will recognize it as 'added'
- if (Block.Events.HasFlag(BlockEvents.ProtocolEnd))
- protocol.LastLevel = Block.Level;
-
-
- Cache.AppState.Get().BlocksCount++;
- Cache.Statistics.Current.TotalCreated += Block.RewardDelegated + Block.BonusDelegated;
-
- Db.Blocks.Add(Block);
- Cache.Blocks.Add(Block);
- }
-
- public virtual async Task Revert(Block block)
- {
- Block = block;
-
- var proposer = Context.Proposer;
- Db.TryAttach(proposer);
- RevertReceive(proposer, proposer, Block.RewardDelegated);
- proposer.BlocksCount--;
-
- #region reset baker activity
- if (Block.ResetBakerDeactivation != null)
- {
- if (Block.ResetBakerDeactivation <= Block.Level)
- await DeactivateBaker(proposer);
-
- proposer.DeactivationLevel = (int)Block.ResetBakerDeactivation;
- }
- #endregion
-
- var producer = Cache.Accounts.GetDelegate(block.ProducerId!.Value);
- Db.TryAttach(producer);
- RevertReceive(producer, producer, Block.BonusDelegated);
- if (producer.Id != proposer.Id)
- {
- producer.BlocksCount--;
-
- #region reset proposer activity
- if (Block.ResetProposerDeactivation != null)
- {
- if (Block.ResetProposerDeactivation <= Block.Level)
- await DeactivateBaker(producer);
-
- producer.DeactivationLevel = (int)Block.ResetProposerDeactivation;
- }
- #endregion
- }
-
- Cache.AppState.Get().BlocksCount--;
-
- Db.Blocks.Remove(Block);
- Cache.AppState.ReleaseOperationId();
- }
-
- protected virtual bool? GetLBToggleVote(JsonElement block)
- => !block.Required("header").RequiredBool("liquidity_baking_escape_vote");
-
- protected virtual int GetLBToggleEma(JsonElement block)
- => block.Required("metadata").RequiredInt32("liquidity_baking_escape_ema") * 1000;
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/CycleCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/CycleCommit.cs
deleted file mode 100644
index 68eadca9e..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/CycleCommit.cs
+++ /dev/null
@@ -1,115 +0,0 @@
-using Microsoft.EntityFrameworkCore;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class CycleCommit(ProtocolHandler protocol) : ProtocolCommit(protocol)
- {
- public Cycle? FutureCycle { get; protected set; }
- public List? Snapshots { get; protected set; }
- public Dictionary? SelectedStakes { get; protected set; }
-
- public virtual async Task Apply(Block block)
- {
- if (!block.Events.HasFlag(BlockEvents.CycleBegin))
- return;
-
- var futureCycle = block.Cycle + Context.Protocol.ConsensusRightsDelay;
-
- var lastSeed = await Db.Cycles
- .AsNoTracking()
- .Where(x => x.Index == futureCycle - 1)
- .Select(x => x.Seed)
- .FirstOrDefaultAsync()
- ?? throw new Exception($"Seed for cycle {futureCycle - 1} is missed");
-
- var nonces = block.Cycle < 2 ? [] : await Db.NonceRevelationOps
- .AsNoTracking()
- .Where(x => x.RevealedCycle == block.Cycle - 2)
- .OrderByDescending(x => x.RevealedLevel)
- .Select(x => x.Nonce)
- .ToListAsync();
-
- var futureSeed = Seed.GetNextSeed(lastSeed, nonces, null);
- var snapshotIndex = 0;
- var snapshotLevel = 1;
- var activation = false;
-
- if (block.Cycle >= 1)
- {
- if (block.Cycle == Context.Protocol.FirstCycle)
- {
- snapshotLevel = Context.Protocol.FirstLevel - 1;
- activation = true;
- }
- else if (block.Cycle == Context.Protocol.FirstCycle + 1 && Context.Protocol.FirstLevel >= Context.Protocol.FirstCycleLevel)
- {
- var snapshotProto = await Cache.Protocols.FindByCycleAsync(block.Cycle - 1);
- snapshotIndex = Seed.GetSnapshotIndex(futureSeed, snapshotProto.SnapshotsPerCycle + 1, true) - 1;
- snapshotLevel = snapshotProto.GetCycleStart(block.Cycle - 1) - 1 + (snapshotIndex + 1) * snapshotProto.BlocksPerSnapshot;
- }
- else
- {
- var snapshotProto = await Cache.Protocols.FindByCycleAsync(block.Cycle - 1);
- snapshotIndex = Seed.GetSnapshotIndex(futureSeed, snapshotProto.SnapshotsPerCycle, true);
- snapshotLevel = snapshotProto.GetCycleStart(block.Cycle - 1) - 1 + (snapshotIndex + 1) * snapshotProto.BlocksPerSnapshot;
- }
- }
-
- Snapshots = await Db.SnapshotBalances
- .AsNoTracking()
- .Where(x => x.Level == snapshotLevel && x.BakerId == x.AccountId)
- .ToListAsync();
-
- var attestationRewards = activation ? [] : await Db.BakerCycles
- .AsNoTracking()
- .Where(x => x.Cycle == block.Cycle - 1 && x.AttestationRewardsDelegated > 0)
- .ToDictionaryAsync(x => x.BakerId, x => x.AttestationRewardsDelegated);
-
- SelectedStakes = Snapshots
- .Where(x => x.StakingBalance >= Context.Protocol.MinimalStake)
- .ToDictionary(x => x.AccountId, x =>
- {
- var baker = Cache.Accounts.GetDelegate(x.AccountId);
-
- var lastBalance = baker.Balance;
- if (attestationRewards.TryGetValue(baker.Id, out var reward))
- lastBalance -= reward;
- if (block.ProposerId == baker.Id)
- lastBalance -= block.RewardDelegated;
- if (block.ProducerId == baker.Id)
- lastBalance -= block.BonusDelegated;
-
- var depositCap = Math.Min(lastBalance, baker.FrozenDepositLimit ?? lastBalance);
- return Math.Min(x.StakingBalance, depositCap * (Context.Protocol.MaxDelegatedOverFrozenRatio + 1));
- });
-
- FutureCycle = new Cycle
- {
- Id = 0,
- Index = futureCycle,
- FirstLevel = Context.Protocol.GetCycleStart(futureCycle),
- LastLevel = Context.Protocol.GetCycleEnd(futureCycle),
- SnapshotLevel = snapshotLevel,
- TotalBakers = SelectedStakes.Count,
- TotalBakingPower = SelectedStakes.Values.Sum(),
- Seed = futureSeed
- };
-
- Db.Cycles.Add(FutureCycle);
- }
-
- public virtual async Task Revert(Block block)
- {
- if (!block.Events.HasFlag(BlockEvents.CycleBegin))
- return;
-
- var futureCycle = block.Cycle + Context.Protocol.ConsensusRightsDelay;
-
- await Db.Database.ExecuteSqlRawAsync("""
- DELETE FROM "Cycles"
- WHERE "Index" = {0}
- """, futureCycle);
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/DeactivationCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/DeactivationCommit.cs
deleted file mode 100644
index 916682630..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/DeactivationCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class DeactivationCommit : Proto2.DeactivationCommit
- {
- public DeactivationCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/DelegatorCycleCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/DelegatorCycleCommit.cs
deleted file mode 100644
index 51e0bf82b..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/DelegatorCycleCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class DelegatorCycleCommit : Proto3.DelegatorCycleCommit
- {
- public DelegatorCycleCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/FreezerCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/FreezerCommit.cs
deleted file mode 100644
index c32355f22..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/FreezerCommit.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-using System.Text.Json;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class FreezerCommit : ProtocolCommit
- {
- public FreezerCommit(ProtocolHandler protocol) : base(protocol) { }
-
- public void Apply(Block block, JsonElement rawBlock)
- {
- if (!block.Events.HasFlag(BlockEvents.CycleEnd))
- return;
-
- foreach (var update in rawBlock.Required("metadata").RequiredArray("balance_updates").EnumerateArray()
- .Where(x => x.RequiredString("origin") == "block" &&
- x.RequiredString("kind") == "freezer" &&
- x.RequiredString("category") == "deposits"))
- {
- Cache.Statistics.Current.TotalFrozen += update.RequiredInt64("change");
- }
- }
-
- public void Revert()
- {
- // there is nothing to revert
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/ActivationsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/ActivationsCommit.cs
deleted file mode 100644
index 244b78f8d..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/ActivationsCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class ActivationsCommit : Proto1.ActivationsCommit
- {
- public ActivationsCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/AttestationsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/AttestationsCommit.cs
deleted file mode 100644
index 9574e2473..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/AttestationsCommit.cs
+++ /dev/null
@@ -1,76 +0,0 @@
-using System.Text.Json;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class AttestationsCommit(ProtocolHandler protocol) : ProtocolCommit(protocol)
- {
- public Task Apply(Block block, JsonElement op, JsonElement content)
- {
- var metadata = content.Required("metadata");
- return Apply(block, op.RequiredString("hash"), metadata.RequiredString("delegate"), GetPower(metadata));
- }
-
- public async Task Apply(Block block, string opHash, string bakerAddress, long power)
- {
- var baker = Cache.Accounts.GetExistingDelegate(bakerAddress);
-
- var attestation = new AttestationOperation
- {
- Id = Cache.AppState.NextOperationId(),
- Level = block.Level,
- Timestamp = block.Timestamp,
- OpHash = opHash,
- Power = power,
- DelegateId = baker.Id
- };
-
- Db.TryAttach(baker);
- baker.AttestationsCount++;
-
- #region set baker active
- var newDeactivationLevel = baker.Staked ? GracePeriod.Reset(block.Level, Context.Protocol) : GracePeriod.Init(block.Level, Context.Protocol);
- if (baker.DeactivationLevel < newDeactivationLevel)
- {
- if (baker.DeactivationLevel <= block.Level)
- await ActivateBaker(baker);
-
- attestation.ResetDeactivation = baker.DeactivationLevel;
- baker.DeactivationLevel = newDeactivationLevel;
- }
- #endregion
-
- block.Operations |= Operations.Attestations;
- block.AttestationPower += attestation.Power;
-
- Cache.AppState.Get().AttestationOpsCount++;
-
- //Db.AttestationOps.Add(attestation);
- Context.AttestationOps.Add(attestation);
- }
-
- public async Task Revert(Block block, AttestationOperation attestation)
- {
- var baker = Cache.Accounts.GetDelegate(attestation.DelegateId);
- Db.TryAttach(baker);
- baker.AttestationsCount--;
-
- #region reset baker activity
- if (attestation.ResetDeactivation != null)
- {
- if (attestation.ResetDeactivation <= block.Level)
- await DeactivateBaker(baker);
-
- baker.DeactivationLevel = (int)attestation.ResetDeactivation;
- }
- #endregion
-
- Cache.AppState.Get().AttestationOpsCount--;
-
- //Db.AttestationOps.Remove(attestation);
- Cache.AppState.ReleaseOperationId();
- }
-
- protected virtual long GetPower(JsonElement metadata) => metadata.OptionalInt64("endorsement_power") ?? metadata.RequiredInt64("consensus_power");
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/BallotsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/BallotsCommit.cs
deleted file mode 100644
index 2fc1fb288..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/BallotsCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class BallotsCommit : Proto3.BallotsCommit
- {
- public BallotsCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/DelegationsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/DelegationsCommit.cs
deleted file mode 100644
index b58507523..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/DelegationsCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class DelegationsCommit : Proto1.DelegationsCommit
- {
- public DelegationsCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/DoubleBakingCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/DoubleBakingCommit.cs
deleted file mode 100644
index 06ff64246..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/DoubleBakingCommit.cs
+++ /dev/null
@@ -1,98 +0,0 @@
-using System.Text.Json;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class DoubleBakingCommit(ProtocolHandler protocol) : ProtocolCommit(protocol)
- {
- public virtual void Apply(Block block, JsonElement op, JsonElement content)
- {
- #region init
- var balanceUpdates = content.Required("metadata").RequiredArray("balance_updates").EnumerateArray();
- var freezerUpdates = balanceUpdates.Where(x => x.RequiredString("kind") == "freezer" && x.RequiredString("category") == "deposits");
- var contractUpdates = balanceUpdates.Where(x => x.RequiredString("kind") == "contract");
-
- var offenderAddr = freezerUpdates.Any()
- ? freezerUpdates.First().RequiredString("delegate")
- : Context.Proposer.Address; // this is wrong, but no big deal
-
- var offenderLoss = freezerUpdates.Any()
- ? -freezerUpdates.Sum(x => x.RequiredInt64("change"))
- : 0;
-
- var accuserReward = contractUpdates.Any()
- ? contractUpdates.Sum(x => x.RequiredInt64("change"))
- : 0;
-
- var accuser = Context.Proposer;
- var offender = Cache.Accounts.GetExistingDelegate(offenderAddr);
-
- var doubleBaking = new DoubleBakingOperation
- {
- Id = Cache.AppState.NextOperationId(),
- Level = block.Level,
- Timestamp = block.Timestamp,
- OpHash = op.RequiredString("hash"),
-
- SlashedLevel = block.Level,
- AccusedLevel = content.Required("bh1").RequiredInt32("level"),
- AccuserId = accuser.Id,
- OffenderId = offender.Id,
-
- Reward = accuserReward,
- LostStaked = offenderLoss,
- LostUnstaked = 0,
- LostExternalStaked = 0,
- LostExternalUnstaked = 0
- };
- #endregion
-
- #region entities
- Db.TryAttach(accuser);
- Db.TryAttach(offender);
- #endregion
-
- #region apply operation
- Receive(accuser, accuser, doubleBaking.Reward);
-
- Spend(offender, offender, doubleBaking.LostStaked);
-
- accuser.DoubleBakingCount++;
- if (offender != accuser) offender.DoubleBakingCount++;
-
- block.Operations |= Operations.DoubleBakings;
-
- Cache.AppState.Get().DoubleBakingOpsCount++;
- Cache.Statistics.Current.TotalBurned += doubleBaking.LostStaked - doubleBaking.Reward;
- Cache.Statistics.Current.TotalFrozen -= doubleBaking.LostStaked;
- #endregion
-
- Db.DoubleBakingOps.Add(doubleBaking);
- Context.DoubleBakingOps.Add(doubleBaking);
- }
-
- public virtual void Revert(Block block, DoubleBakingOperation doubleBaking)
- {
- #region entities
- var accuser = Cache.Accounts.GetDelegate(doubleBaking.AccuserId);
- var offender = Cache.Accounts.GetDelegate(doubleBaking.OffenderId);
- Db.TryAttach(accuser);
- Db.TryAttach(offender);
- #endregion
-
- #region apply operation
- RevertReceive(accuser, accuser, doubleBaking.Reward);
-
- RevertSpend(offender, offender, doubleBaking.LostStaked);
-
- accuser.DoubleBakingCount--;
- if (offender != accuser) offender.DoubleBakingCount--;
-
- Cache.AppState.Get().DoubleBakingOpsCount--;
- #endregion
-
- Db.DoubleBakingOps.Remove(doubleBaking);
- Cache.AppState.ReleaseOperationId();
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/DoubleConsensusCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/DoubleConsensusCommit.cs
deleted file mode 100644
index a729ca666..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/DoubleConsensusCommit.cs
+++ /dev/null
@@ -1,106 +0,0 @@
-using System.Text.Json;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class DoubleConsensusCommit(ProtocolHandler protocol) : ProtocolCommit(protocol)
- {
- public virtual void Apply(Block block, JsonElement op, JsonElement content)
- {
- #region init
- var balanceUpdates = content.Required("metadata").RequiredArray("balance_updates").EnumerateArray();
- var freezerUpdates = balanceUpdates.Where(x => x.RequiredString("kind") == "freezer" && x.RequiredString("category") == "deposits");
- var contractUpdates = balanceUpdates.Where(x => x.RequiredString("kind") == "contract");
-
- var offenderAddr = freezerUpdates.Any()
- ? freezerUpdates.First().RequiredString("delegate")
- : Context.Proposer.Address; // this is wrong, but no big deal
-
- var offenderLoss = freezerUpdates.Any()
- ? -freezerUpdates.Sum(x => x.RequiredInt64("change"))
- : 0;
-
- var accuserReward = contractUpdates.Any()
- ? contractUpdates.Sum(x => x.RequiredInt64("change"))
- : 0;
-
- var accuser = Context.Proposer;
- var offender = Cache.Accounts.GetExistingDelegate(offenderAddr);
-
- var kind = content.RequiredString("kind") == "double_endorsement_evidence"
- ? DoubleConsensusKind.DoubleAttestation
- : DoubleConsensusKind.DoublePreattestation;
-
- var doubleConsensus = new DoubleConsensusOperation
- {
- Id = Cache.AppState.NextOperationId(),
- Level = block.Level,
- Timestamp = block.Timestamp,
- OpHash = op.RequiredString("hash"),
-
- Kind = kind,
-
- SlashedLevel = block.Level,
- AccusedLevel = content.Required("op1").Required("operations").RequiredInt32("level")
- + (kind == DoubleConsensusKind.DoubleAttestation ? 1 : 0),
-
- AccuserId = accuser.Id,
- OffenderId = offender.Id,
-
- Reward = accuserReward,
- LostStaked = offenderLoss,
- LostUnstaked = 0,
- LostExternalStaked = 0,
- LostExternalUnstaked = 0
- };
- #endregion
-
- #region entities
- Db.TryAttach(accuser);
- Db.TryAttach(offender);
- #endregion
-
- #region apply operation
- Receive(accuser, accuser, doubleConsensus.Reward);
-
- Spend(offender, offender, doubleConsensus.LostStaked);
-
- accuser.DoubleConsensusCount++;
- if (offender != accuser) offender.DoubleConsensusCount++;
-
- block.Operations |= Operations.DoubleConsensus;
-
- Cache.AppState.Get().DoubleConsensusOpsCount++;
- Cache.Statistics.Current.TotalBurned += doubleConsensus.LostStaked - doubleConsensus.Reward;
- Cache.Statistics.Current.TotalFrozen -= doubleConsensus.LostStaked;
- #endregion
-
- Db.DoubleConsensusOps.Add(doubleConsensus);
- Context.DoubleConsensusOps.Add(doubleConsensus);
- }
-
- public virtual void Revert(Block block, DoubleConsensusOperation doubleConsensus)
- {
- #region entities
- var accuser = Cache.Accounts.GetDelegate(doubleConsensus.AccuserId);
- var offender = Cache.Accounts.GetDelegate(doubleConsensus.OffenderId);
- Db.TryAttach(accuser);
- Db.TryAttach(offender);
- #endregion
-
- #region apply operation
- RevertReceive(accuser, accuser, doubleConsensus.Reward);
-
- RevertSpend(offender, offender, doubleConsensus.LostStaked);
-
- accuser.DoubleConsensusCount--;
- if (offender != accuser) offender.DoubleConsensusCount--;
-
- Cache.AppState.Get().DoubleConsensusOpsCount--;
- #endregion
-
- Db.DoubleConsensusOps.Remove(doubleConsensus);
- Cache.AppState.ReleaseOperationId();
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/NonceRevelationsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/NonceRevelationsCommit.cs
deleted file mode 100644
index 9a49da1b6..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/NonceRevelationsCommit.cs
+++ /dev/null
@@ -1,90 +0,0 @@
-using System.Text.Json;
-using Netezos.Encoding;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class NonceRevelationsCommit(ProtocolHandler protocol) : ProtocolCommit(protocol)
- {
- public virtual async Task Apply(Block block, JsonElement op, JsonElement content)
- {
- #region init
- var balanceUpdate = content.Required("metadata").RequiredArray("balance_updates").EnumerateArray()
- .FirstOrDefault(x => x.RequiredString("kind") == "contract");
-
- var reward = balanceUpdate.ValueKind != JsonValueKind.Undefined
- ? balanceUpdate.RequiredInt64("change")
- : 0;
-
- var revealedBlock = await Cache.Blocks.GetAsync(content.RequiredInt32("level"));
- var sender = Cache.Accounts.GetDelegate(revealedBlock.ProposerId!.Value);
-
- var revelation = new NonceRevelationOperation
- {
- Id = Cache.AppState.NextOperationId(),
- Level = block.Level,
- Timestamp = block.Timestamp,
- OpHash = op.RequiredString("hash"),
- BakerId = Context.Proposer.Id,
- SenderId = sender.Id,
- RevealedLevel = revealedBlock.Level,
- RevealedCycle = revealedBlock.Cycle,
- Nonce = Hex.Parse(content.RequiredString("nonce")),
- RewardDelegated = reward
- };
- #endregion
-
- #region entities
- var blockBaker = Context.Proposer;
-
- //Db.TryAttach(blockBaker);
- Db.TryAttach(sender);
- Db.TryAttach(revealedBlock);
- #endregion
-
- #region apply operation
- Receive(blockBaker, blockBaker, revelation.RewardDelegated);
-
- sender.NonceRevelationsCount++;
- if (blockBaker != sender) blockBaker.NonceRevelationsCount++;
-
- block.Operations |= Operations.Revelations;
-
- revealedBlock.RevelationId = revelation.Id;
-
- Cache.AppState.Get().NonceRevelationOpsCount++;
- Cache.Statistics.Current.TotalCreated += revelation.RewardDelegated;
- #endregion
-
- Db.NonceRevelationOps.Add(revelation);
- Context.NonceRevelationOps.Add(revelation);
- }
-
- public virtual async Task Revert(Block block, NonceRevelationOperation revelation)
- {
- #region entities
- var blockBaker = Context.Proposer;
- var sender = Cache.Accounts.GetDelegate(revelation.SenderId);
- var revealedBlock = await Cache.Blocks.GetAsync(revelation.RevealedLevel);
-
- //Db.TryAttach(blockBaker);
- Db.TryAttach(sender);
- Db.TryAttach(revealedBlock);
- #endregion
-
- #region apply operation
- RevertReceive(blockBaker, blockBaker, revelation.RewardDelegated);
-
- sender.NonceRevelationsCount--;
- if (blockBaker != sender) blockBaker.NonceRevelationsCount--;
-
- revealedBlock.RevelationId = null;
-
- Cache.AppState.Get().NonceRevelationOpsCount--;
- #endregion
-
- Db.NonceRevelationOps.Remove(revelation);
- Cache.AppState.ReleaseOperationId();
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/OriginationsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/OriginationsCommit.cs
deleted file mode 100644
index 1a3a01da4..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/OriginationsCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class OriginationsCommit : Proto5.OriginationsCommit
- {
- public OriginationsCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/PreattestationsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/PreattestationsCommit.cs
deleted file mode 100644
index 3b4cd6f74..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/PreattestationsCommit.cs
+++ /dev/null
@@ -1,55 +0,0 @@
-using System.Text.Json;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class PreattestationsCommit(ProtocolHandler protocol) : ProtocolCommit(protocol)
- {
- public void Apply(Block block, JsonElement op, JsonElement content)
- {
- var metadata = content.Required("metadata");
- Apply(block, op.RequiredString("hash"), metadata.RequiredString("delegate"), GetPower(metadata));
- }
-
- public void Apply(Block block, string opHash, string bakerAddress, long power)
- {
- var baker = Cache.Accounts.GetExistingDelegate(bakerAddress);
-
- var preattestation = new PreattestationOperation
- {
- Id = Cache.AppState.NextOperationId(),
- Level = block.Level,
- Timestamp = block.Timestamp,
- OpHash = opHash,
- Power = power,
- DelegateId = baker.Id
- };
-
- Db.TryAttach(baker);
- baker.PreattestationsCount++;
-
- block.Operations |= Operations.Preattestations;
-
- Cache.AppState.Get().PreattestationOpsCount++;
-
- Db.PreattestationOps.Add(preattestation);
- Context.PreattestationOps.Add(preattestation);
- }
-
- public Task Revert(Block block, PreattestationOperation preattestation)
- {
- var baker = Cache.Accounts.GetDelegate(preattestation.DelegateId);
- Db.TryAttach(baker);
- baker.PreattestationsCount--;
-
- Cache.AppState.Get().PreattestationOpsCount--;
-
- Db.PreattestationOps.Remove(preattestation);
- Cache.AppState.ReleaseOperationId();
-
- return Task.CompletedTask;
- }
-
- protected virtual long GetPower(JsonElement metadata) => metadata.OptionalInt64("preendorsement_power") ?? metadata.RequiredInt64("consensus_power");
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/ProposalsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/ProposalsCommit.cs
deleted file mode 100644
index 923a14681..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/ProposalsCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class ProposalsCommit : Proto3.ProposalsCommit
- {
- public ProposalsCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/RegisterConstantsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/RegisterConstantsCommit.cs
deleted file mode 100644
index 948902479..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/RegisterConstantsCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class RegisterConstantsCommit : Proto11.RegisterConstantsCommit
- {
- public RegisterConstantsCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/RevealsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/RevealsCommit.cs
deleted file mode 100644
index 6c88bbd61..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/RevealsCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class RevealsCommit : Proto1.RevealsCommit
- {
- public RevealsCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/SetDepositsLimitCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/SetDepositsLimitCommit.cs
deleted file mode 100644
index 8f33c6872..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/SetDepositsLimitCommit.cs
+++ /dev/null
@@ -1,123 +0,0 @@
-using System.Numerics;
-using System.Text.Json;
-using Microsoft.EntityFrameworkCore;
-using Tzkt.Data.Models;
-using Tzkt.Data.Models.Base;
-
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class SetDepositsLimitCommit(ProtocolHandler protocol) : ProtocolCommit(protocol)
- {
- public virtual async Task Apply(Block block, JsonElement op, JsonElement content)
- {
- #region init
- var sender = (User)await Cache.Accounts.GetExistingAsync(content.RequiredString("source"));
-
- var result = content.Required("metadata").Required("operation_result");
- var limit = content.OptionalString("limit");
-
- var operation = new SetDepositsLimitOperation
- {
- Id = Cache.AppState.NextOperationId(),
- OpHash = op.RequiredString("hash"),
- Level = block.Level,
- Timestamp = block.Timestamp,
- BakerFee = content.RequiredInt64("fee"),
- Counter = content.RequiredInt32("counter"),
- GasLimit = content.RequiredInt32("gas_limit"),
- StorageLimit = content.RequiredInt32("storage_limit"),
- SenderId = sender.Id,
- Status = result.RequiredString("status") switch
- {
- "applied" => OperationStatus.Applied,
- "backtracked" => OperationStatus.Backtracked,
- "failed" => OperationStatus.Failed,
- "skipped" => OperationStatus.Skipped,
- _ => throw new NotImplementedException()
- },
- Errors = result.TryGetProperty("errors", out var errors)
- ? OperationErrors.Parse(content, errors)
- : null,
- GasUsed = (int)(((result.OptionalInt64("consumed_milligas") ?? 0) + 999) / 1000),
- Limit = limit == null ? null : BigInteger.Parse(limit)
- };
- #endregion
-
- #region apply operation
- Db.TryAttach(sender);
- PayFee(sender, operation.BakerFee);
- sender.Counter = operation.Counter;
- sender.SetDepositsLimitsCount++;
-
- block.Operations |= Operations.SetDepositsLimits;
-
- Cache.AppState.Get().SetDepositsLimitOpsCount++;
- #endregion
-
- #region apply result
- if (operation.Status == OperationStatus.Applied)
- {
- if (operation.Limit != null)
- {
- (sender as Data.Models.Delegate)!.FrozenDepositLimit = operation.Limit > long.MaxValue / 100
- ? long.MaxValue / 100
- : (long)operation.Limit;
- }
- else
- {
- (sender as Data.Models.Delegate)!.FrozenDepositLimit = null;
- }
- UpdateBakerPower((sender as Data.Models.Delegate)!);
- }
- #endregion
-
- Proto.Manager.Set(sender);
- Db.SetDepositsLimitOps.Add(operation);
- Context.SetDepositsLimitOps.Add(operation);
- }
-
- public virtual async Task Revert(Block block, SetDepositsLimitOperation op)
- {
- #region entities
- var sender = (User)await Cache.Accounts.GetAsync(op.SenderId);
-
- Db.TryAttach(sender);
- #endregion
-
- #region revert result
- if (op.Status == OperationStatus.Applied)
- {
- var prevOp = await Db.SetDepositsLimitOps
- .AsNoTracking()
- .OrderByDescending(x => x.Id)
- .FirstOrDefaultAsync(x => x.SenderId == op.SenderId && x.Status == OperationStatus.Applied && x.Id < op.Id);
-
- if (prevOp?.Limit != null)
- {
- (sender as Data.Models.Delegate)!.FrozenDepositLimit = prevOp.Limit > long.MaxValue / 100
- ? long.MaxValue / 100
- : (long)prevOp.Limit;
- }
- else
- {
- (sender as Data.Models.Delegate)!.FrozenDepositLimit = null;
- }
- RevertBakerPower((sender as Data.Models.Delegate)!);
- }
- #endregion
-
- #region revert operation
- RevertPayFee(sender, op.BakerFee);
- sender.SetDepositsLimitsCount--;
- sender.Counter = op.Counter - 1;
- sender.Revealed = true;
-
- Cache.AppState.Get().SetDepositsLimitOpsCount--;
- #endregion
-
- Db.SetDepositsLimitOps.Remove(op);
- Cache.AppState.ReleaseManagerCounter();
- Cache.AppState.ReleaseOperationId();
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/TransactionsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/TransactionsCommit.cs
deleted file mode 100644
index 3a267e130..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/Operations/TransactionsCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class TransactionsCommit : Proto5.TransactionsCommit
- {
- public TransactionsCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/SnapshotBalanceCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/SnapshotBalanceCommit.cs
deleted file mode 100644
index f39f1836e..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/SnapshotBalanceCommit.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-using System.Text.Json;
-using Microsoft.EntityFrameworkCore;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class SnapshotBalanceCommit : Proto9.SnapshotBalanceCommit
- {
- public SnapshotBalanceCommit(ProtocolHandler protocol) : base(protocol) { }
-
- protected override async Task SubtractCycleRewards(JsonElement rawBlock, Block block)
- {
- if (!block.Events.HasFlag(BlockEvents.CycleEnd))
- return;
-
- await Db.Database.ExecuteSqlRawAsync("""
- UPDATE "SnapshotBalances" as sb
- SET "OwnDelegatedBalance" = "OwnDelegatedBalance" - bc."AttestationRewardsDelegated"
- FROM (
- SELECT "BakerId", "AttestationRewardsDelegated"
- FROM "BakerCycles"
- WHERE "Cycle" = {0}
- AND "AttestationRewardsDelegated" != 0
- ) as bc
- WHERE sb."Level" = {1}
- AND sb."BakerId" = bc."BakerId"
- AND sb."AccountId" = bc."BakerId"
- """, block.Cycle, block.Level);
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/SoftwareCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/SoftwareCommit.cs
deleted file mode 100644
index 416c849cd..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/SoftwareCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class SoftwareCommit : Proto5.SoftwareCommit
- {
- public SoftwareCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/StateCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/StateCommit.cs
deleted file mode 100644
index 961144b00..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/StateCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class StateCommit : Proto1.StateCommit
- {
- public StateCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/StatisticsCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/StatisticsCommit.cs
deleted file mode 100644
index cdc521a4e..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/StatisticsCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class StatisticsCommit : Proto1.StatisticsCommit
- {
- public StatisticsCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/SubsidyCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/SubsidyCommit.cs
deleted file mode 100644
index f41f8a4f7..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/SubsidyCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class SubsidyCommit : Proto10.SubsidyCommit
- {
- public SubsidyCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/TokensCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/TokensCommit.cs
deleted file mode 100644
index 796bca2e7..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/TokensCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class TokensCommit : Proto5.TokensCommit
- {
- public TokensCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/VotingCommit.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/VotingCommit.cs
deleted file mode 100644
index 3f731e4db..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Commits/VotingCommit.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class VotingCommit : Proto8.VotingCommit
- {
- public VotingCommit(ProtocolHandler protocol) : base(protocol) { }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Diagnostics/Diagnostics.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Diagnostics/Diagnostics.cs
deleted file mode 100644
index 7ee60a639..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Diagnostics/Diagnostics.cs
+++ /dev/null
@@ -1,127 +0,0 @@
-using System.Text.Json;
-using Netezos.Encoding;
-using Tzkt.Data.Models;
-
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class Diagnostics(ProtocolHandler handler) : Proto5.Diagnostics(handler)
- {
- protected override async Task TestDelegate(int level, Data.Models.Delegate delegat, Protocol proto)
- {
- var remote = await Rpc.GetDelegateAsync(level, delegat.Address);
-
- if (!CheckFullBalance(remote, delegat))
- throw new Exception($"Diagnostics failed: wrong balance {delegat.Address}");
-
- if (!CheckStakingBalance(remote, delegat))
- throw new Exception($"Diagnostics failed: wrong staking balance {delegat.Address}");
-
- if (!CheckDelegatedBalance(remote, delegat))
- throw new Exception($"Diagnostics failed: wrong delegated balance {delegat.Address}");
-
- if (!CheckMinDelegatedBalance(remote, delegat))
- throw new Exception($"Diagnostics failed: wrong min delegated balance {delegat.Address}");
-
- if (!CheckBakingPower(remote, delegat))
- throw new Exception($"Diagnostics failed: wrong baking power {delegat.Address}");
-
- if (!CheckVotingPower(remote, delegat))
- throw new Exception($"Diagnostics failed: wrong voting power {delegat.Address}");
-
- if (remote.RequiredBool("deactivated") != !delegat.Staked)
- throw new Exception($"Diagnostics failed: wrong deactivation state {delegat.Address}");
-
- var deactivationCycle = (delegat.DeactivationLevel - 1) >= proto.FirstLevel
- ? proto.GetCycle(delegat.DeactivationLevel - 1)
- : (await Cache.Blocks.GetAsync(delegat.DeactivationLevel - 1)).Cycle;
-
- if (remote.RequiredInt32("grace_period") != deactivationCycle)
- throw new Exception($"Diagnostics failed: wrong grace period {delegat.Address}");
-
- if (!CheckFrozenDepositLimit(remote, delegat))
- throw new Exception($"Diagnostics failed: wrong frozen deposits limit {delegat.Address}");
-
- TestDelegatorsCount(remote, delegat);
- }
-
- protected override async Task TestParticipation(AppState state)
- {
- var bakers = Cache.Accounts.GetDelegates().ToList();
- var bakerCycles = Db.ChangeTracker.Entries()
- .Where(x => x.Entity is BakerCycle bc && bc.Cycle == state.Cycle)
- .Select(x => (x.Entity as BakerCycle)!)
- .ToDictionary(x => x.BakerId);
-
- foreach (var baker in bakers)
- {
- var remote = await Rpc.GetDelegateParticipationAsync(state.Level, baker.Address);
-
- if (bakerCycles.TryGetValue(baker.Id, out var bakerCycle))
- {
- if ((long)bakerCycle.ExpectedAttestations != remote.RequiredInt64("expected_cycle_activity"))
- throw new Exception($"Invalid baker ExpectedAttestations {baker.Address}");
-
- if (bakerCycle.FutureAttestationRewards != remote.RequiredInt64("expected_endorsing_rewards"))
- throw new Exception($"Invalid baker FutureAttestationRewards {baker.Address}");
-
- if (bakerCycle.MissedAttestations != remote.RequiredInt64("missed_slots"))
- {
- var proto = await Cache.Protocols.GetAsync(state.Protocol);
- if (bakerCycle.Cycle != proto.FirstCycle)
- throw new Exception($"Invalid baker MissedAttestations {baker.Address}");
- }
- }
- else
- {
- if (remote.RequiredInt64("expected_cycle_activity") != 0)
- throw new Exception($"Invalid baker ExpectedAttestations {baker.Address}");
-
- if (remote.RequiredInt64("expected_endorsing_rewards") != 0)
- throw new Exception($"Invalid baker FutureAttestationRewards {baker.Address}");
-
- if (remote.RequiredInt64("missed_slots") != 0)
- throw new Exception($"Invalid baker MissedAttestations {baker.Address}");
- }
- }
- }
-
- protected override async Task TestCycle(AppState state, Cycle cycle)
- {
- var level = Math.Min(state.Level, cycle.FirstLevel);
- var remote = await Rpc.GetCycleAsync(level, cycle.Index);
-
- if (remote.RequiredString("random_seed") != Hex.Convert(cycle.Seed))
- throw new Exception($"Invalid cycle {cycle.Index} seed {Hex.Convert(cycle.Seed)}");
-
- if (remote.RequiredInt64("total_active_stake") != cycle.TotalBakingPower)
- throw new Exception($"Invalid cycle {cycle.Index} selected stake {cycle.TotalBakingPower}");
-
- if (remote.RequiredArray("selected_stake_distribution").Count() != cycle.TotalBakers)
- throw new Exception($"Invalid cycle {cycle.Index} selected bakers {cycle.TotalBakers}");
- }
-
- protected virtual bool CheckFullBalance(JsonElement remote, Data.Models.Delegate delegat) =>
- remote.RequiredInt64("full_balance") == delegat.Balance;
-
- protected virtual bool CheckStakingBalance(JsonElement remote, Data.Models.Delegate delegat) =>
- remote.RequiredInt64("staking_balance") == delegat.TotalDelegated + delegat.TotalStaked;
-
- protected virtual bool CheckDelegatedBalance(JsonElement remote, Data.Models.Delegate delegat) =>
- remote.RequiredInt64("delegated_balance") == delegat.ExternalDelegatedBalance + delegat.RollupBonds;
-
- protected virtual bool CheckMinDelegatedBalance(JsonElement remote, Data.Models.Delegate delegat) => true;
-
- protected virtual bool CheckFrozenDepositLimit(JsonElement remote, Data.Models.Delegate delegat) =>
- remote.OptionalInt64("frozen_deposits_limit") == delegat.FrozenDepositLimit;
-
- protected virtual bool CheckBakingPower(JsonElement remote, Data.Models.Delegate delegat)
- {
- return true;
- }
-
- protected virtual bool CheckVotingPower(JsonElement remote, Data.Models.Delegate delegat)
- {
- return true;
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Helpers.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Helpers.cs
deleted file mode 100644
index 65ddd5e9c..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Helpers.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-namespace Tzkt.Sync.Protocols.Proto12
-{
- public class Helpers(ProtocolHandler proto) : Proto1.Helpers(proto)
- {
- public override long BakingPower(Data.Models.Delegate baker)
- {
- if (!baker.Staked)
- return 0;
-
- var depositCap = baker.FrozenDepositLimit is long depositLimit
- ? Math.Min(baker.Balance, depositLimit)
- : baker.Balance;
-
- var stake = Math.Min(baker.OwnDelegatedBalance + baker.ExternalDelegatedBalance, depositCap * (Context.Protocol.MaxDelegatedOverFrozenRatio + 1));
- if (stake < Context.Protocol.MinimalStake)
- return 0;
-
- return stake;
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Proto12Handler.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Proto12Handler.cs
deleted file mode 100644
index 16c46a730..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Proto12Handler.cs
+++ /dev/null
@@ -1,313 +0,0 @@
-using System.Text.Json;
-using App.Metrics;
-using Tzkt.Data;
-using Tzkt.Data.Models;
-using Tzkt.Sync.Services;
-using Tzkt.Sync.Protocols.Proto12;
-
-namespace Tzkt.Sync.Protocols
-{
- class Proto12Handler : ProtocolHandler
- {
- public override IDiagnostics Diagnostics { get; }
- public override IHelpers Helpers { get; }
- public override IValidator Validator { get; }
- public override IRpc Rpc { get; }
- public override string VersionName => "ithaca_012";
- public override int VersionNumber => 12;
-
- public Proto12Handler(TezosNode node, TzktContext db, CacheService cache, QuotesService quotes, IServiceProvider services, IConfiguration config, ILogger logger, IMetrics metrics)
- : base(node, db, cache, quotes, services, config, logger, metrics)
- {
- Rpc = new Rpc(node);
- Diagnostics = new Diagnostics(this);
- Helpers = new Helpers(this);
- Validator = new Validator(this);
- }
-
- public override Task Activate(AppState state, JsonElement block) => new ProtoActivator(this).Activate(state, block);
- public override Task Deactivate(AppState state) => new ProtoActivator(this).Deactivate(state);
-
- public override async Task Commit(JsonElement block)
- {
- await new StatisticsCommit(this).Apply(block);
-
- var blockCommit = new BlockCommit(this);
- await blockCommit.Apply(block);
-
- var cycleCommit = new CycleCommit(this);
- await cycleCommit.Apply(blockCommit.Block);
-
- await new SoftwareCommit(this).Apply(blockCommit.Block, block);
- await new DeactivationCommit(this).Apply(blockCommit.Block, block);
-
- #region implicit operations
- foreach (var op in block
- .Required("metadata")
- .RequiredArray("implicit_operations_results")
- .EnumerateArray()
- .Where(x => x.RequiredString("kind") == "transaction"))
- await new SubsidyCommit(this).Apply(blockCommit.Block, op);
- #endregion
-
- var operations = block.RequiredArray("operations", 4);
-
- #region operations 0
- foreach (var operation in operations[0].EnumerateArray())
- {
- foreach (var content in operation.RequiredArray("contents", 1).EnumerateArray())
- {
- switch (content.RequiredString("kind"))
- {
- case "endorsement":
- await new AttestationsCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- case "preendorsement":
- new PreattestationsCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- default:
- throw new NotImplementedException($"'{content.RequiredString("kind")}' is not allowed in operations[0]");
- }
- }
- }
- #endregion
-
- #region operations 1
- foreach (var operation in operations[1].EnumerateArray())
- {
- foreach (var content in operation.RequiredArray("contents", 1).EnumerateArray())
- {
- switch (content.RequiredString("kind"))
- {
- case "proposals":
- await new ProposalsCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- case "ballot":
- await new BallotsCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- default:
- throw new NotImplementedException($"'{content.RequiredString("kind")}' is not allowed in operations[1]");
- }
- }
- }
- #endregion
-
- #region operations 2
- foreach (var operation in operations[2].EnumerateArray())
- {
- foreach (var content in operation.RequiredArray("contents", 1).EnumerateArray())
- {
- switch (content.RequiredString("kind"))
- {
- case "activate_account":
- await new ActivationsCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- case "double_baking_evidence":
- new DoubleBakingCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- case "double_endorsement_evidence":
- case "double_preendorsement_evidence":
- new DoubleConsensusCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- case "seed_nonce_revelation":
- await new NonceRevelationsCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- default:
- throw new NotImplementedException($"'{content.RequiredString("kind")}' is not allowed in operations[2]");
- }
- }
- }
- #endregion
-
- var bigMapCommit = new BigMapCommit(this);
-
- #region operations 3
- foreach (var operation in operations[3].EnumerateArray())
- {
- Manager.Init(operation);
- foreach (var content in operation.RequiredArray("contents").EnumerateArray())
- {
- switch (content.RequiredString("kind"))
- {
- case "set_deposits_limit":
- await new SetDepositsLimitCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- case "reveal":
- await new RevealsCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- case "register_global_constant":
- await new RegisterConstantsCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- case "delegation":
- await new DelegationsCommit(this).Apply(blockCommit.Block, operation, content);
- break;
- case "origination":
- var orig = new OriginationsCommit(this);
- await orig.Apply(blockCommit.Block, operation, content);
- if (orig.BigMapDiffs != null)
- bigMapCommit.Append(orig.Origination, orig.Contract!, orig.BigMapDiffs);
- break;
- case "transaction":
- var parent = new TransactionsCommit(this);
- await parent.Apply(blockCommit.Block, operation, content);
- if (parent.BigMapDiffs != null)
- bigMapCommit.Append(parent.Transaction, (parent.Target as Contract)!, parent.BigMapDiffs);
-
- if (content.Required("metadata").TryGetProperty("internal_operation_results", out var internalResult))
- {
- foreach (var internalContent in internalResult.EnumerateArray())
- {
- switch (internalContent.RequiredString("kind"))
- {
- case "delegation":
- await new DelegationsCommit(this).ApplyInternal(blockCommit.Block, parent.Transaction, internalContent);
- break;
- case "origination":
- var internalOrig = new OriginationsCommit(this);
- await internalOrig.ApplyInternal(blockCommit.Block, parent.Transaction, internalContent);
- if (internalOrig.BigMapDiffs != null)
- bigMapCommit.Append(internalOrig.Origination, internalOrig.Contract!, internalOrig.BigMapDiffs);
- break;
- case "transaction":
- var internalTx = new TransactionsCommit(this);
- await internalTx.ApplyInternal(blockCommit.Block, parent.Transaction, internalContent);
- if (internalTx.BigMapDiffs != null)
- bigMapCommit.Append(internalTx.Transaction, (internalTx.Target as Contract)!, internalTx.BigMapDiffs);
- break;
- default:
- throw new NotImplementedException($"internal '{internalContent.RequiredString("kind")}' is not implemented");
- }
- }
- }
- break;
- default:
- throw new NotImplementedException($"'{content.RequiredString("kind")}' is not expected in operations[3]");
- }
- }
- Manager.Reset();
- }
- #endregion
-
- await bigMapCommit.Apply();
- await new TokensCommit(this).Apply(blockCommit.Block, bigMapCommit.Updates);
-
- var brCommit = new BakingRightsCommit(this);
- await brCommit.Apply(blockCommit.Block, cycleCommit.FutureCycle, cycleCommit.SelectedStakes);
-
- await new DelegatorCycleCommit(this).Apply(blockCommit.Block, cycleCommit.FutureCycle);
-
- await new BakerCycleCommit(this).Apply(
- blockCommit.Block,
- cycleCommit.FutureCycle,
- brCommit.FutureBakingRights,
- brCommit.FutureAttestationRights,
- cycleCommit.Snapshots,
- cycleCommit.SelectedStakes,
- brCommit.CurrentRights);
-
- new FreezerCommit(this).Apply(blockCommit.Block, block);
- await new AttestationRewardCommit(this).Apply(blockCommit.Block, block);
- await new VotingCommit(this).Apply(blockCommit.Block, block);
- await new StateCommit(this).Apply(blockCommit.Block, block);
- }
-
- public override async Task AfterCommit(JsonElement rawBlock)
- {
- var block = await Cache.Blocks.CurrentAsync();
- await new SnapshotBalanceCommit(this).Apply(rawBlock, block);
- }
-
- public override async Task BeforeRevert()
- {
- var block = await Cache.Blocks.CurrentAsync();
- await new SnapshotBalanceCommit(this).Revert(block);
- }
-
- public override async Task Revert()
- {
- var currBlock = await Cache.Blocks.CurrentAsync();
- Db.TryAttach(currBlock);
-
- await new VotingCommit(this).Revert(currBlock);
- await new StatisticsCommit(this).Revert(currBlock);
-
- await new AttestationRewardCommit(this).Revert(currBlock);
- new FreezerCommit(this).Revert();
-
- await new BakerCycleCommit(this).Revert(currBlock);
- await new DelegatorCycleCommit(this).Revert(currBlock);
- await new BakingRightsCommit(this).Revert(currBlock);
- await new TokensCommit(this).Revert(currBlock);
- await new BigMapCommit(this).Revert(currBlock);
-
- foreach (var operation in Context.EnumerateOps().OrderByDescending(x => x.Id).ToList())
- {
- switch (operation)
- {
- case AttestationOperation op:
- await new AttestationsCommit(this).Revert(currBlock, op);
- break;
- case PreattestationOperation op:
- await new PreattestationsCommit(this).Revert(currBlock, op);
- break;
- case ProposalOperation op:
- await new ProposalsCommit(this).Revert(currBlock, op);
- break;
- case BallotOperation op:
- await new BallotsCommit(this).Revert(currBlock, op);
- break;
- case ActivationOperation op:
- await new ActivationsCommit(this).Revert(currBlock, op);
- break;
- case DoubleBakingOperation op:
- new DoubleBakingCommit(this).Revert(currBlock, op);
- break;
- case DoubleConsensusOperation op:
- new DoubleConsensusCommit(this).Revert(currBlock, op);
- break;
- case NonceRevelationOperation op:
- await new NonceRevelationsCommit(this).Revert(currBlock, op);
- break;
- case RevealOperation op:
- await new RevealsCommit(this).Revert(currBlock, op);
- break;
- case RegisterConstantOperation op:
- await new RegisterConstantsCommit(this).Revert(currBlock, op);
- break;
- case SetDepositsLimitOperation op:
- await new SetDepositsLimitCommit(this).Revert(currBlock, op);
- break;
- case DelegationOperation op:
- if (op.InitiatorId == null)
- await new DelegationsCommit(this).Revert(currBlock, op);
- else
- await new DelegationsCommit(this).RevertInternal(currBlock, op);
- break;
- case OriginationOperation op:
- if (op.InitiatorId == null)
- await new OriginationsCommit(this).Revert(currBlock, op);
- else
- await new OriginationsCommit(this).RevertInternal(currBlock, op);
- break;
- case TransactionOperation op:
- if (op.InitiatorId == null)
- await new TransactionsCommit(this).Revert(currBlock, op);
- else
- await new TransactionsCommit(this).RevertInternal(currBlock, op);
- break;
- default:
- throw new NotImplementedException($"'{operation.GetType()}' is not implemented");
- }
- }
-
- await new SubsidyCommit(this).Revert(currBlock);
-
- await new DeactivationCommit(this).Revert(currBlock);
- await new SoftwareCommit(this).Revert(currBlock);
- await new CycleCommit(this).Revert(currBlock);
- await new BlockCommit(this).Revert(currBlock);
-
- await new StateCommit(this).Revert(currBlock);
- }
- }
-}
diff --git a/Tzkt.Sync/Protocols/Handlers/Proto12/Rpc/Rpc.cs b/Tzkt.Sync/Protocols/Handlers/Proto12/Rpc/Rpc.cs
deleted file mode 100644
index f69b1dcb0..000000000
--- a/Tzkt.Sync/Protocols/Handlers/Proto12/Rpc/Rpc.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using System.Text.Json;
-using Tzkt.Sync.Services;
-
-namespace Tzkt.Sync.Protocols.Proto12
-{
- class Rpc : Proto6.Rpc
- {
- public Rpc(TezosNode node) : base(node) { }
-
- public override Task GetDelegateParticipationAsync(int level, string address)
- => Node.GetAsync($"chains/main/blocks/{level}/context/delegates/{address}/participation");
-
- public override Task