public async Task <IEnumerable <RegisterConstantOperation> > GetRegisterConstants(Block block, MichelineFormat format, Symbols quote) { var sql = @" SELECT o.* FROM ""RegisterConstantOps"" as o WHERE o.""Level"" = @level ORDER BY o.""Id"""; using var db = GetConnection(); var rows = await db.QueryAsync(sql, new { level = block.Level }); return(rows.Select(row => new RegisterConstantOperation { Id = row.Id, Level = block.Level, Block = block.Hash, Timestamp = row.Timestamp, Hash = row.OpHash, Sender = Accounts.GetAlias(row.SenderId), Counter = row.Counter, GasLimit = row.GasLimit, GasUsed = row.GasUsed, StorageLimit = row.StorageLimit, StorageUsed = row.StorageUsed, BakerFee = row.BakerFee, StorageFee = row.StorageFee ?? 0, Status = OpStatuses.ToString(row.Status), Address = row.Address, Value = row.Value == null ? null : ((int)format % 2 == 0 ? Micheline.FromBytes(row.Value) : Micheline.ToJson(row.Value)), Errors = row.Errors != null ? OperationErrorSerializer.Deserialize(row.Errors) : null, Quote = Quotes.Get(quote, row.Level) })); }
public async Task <IEnumerable <RevealOperation> > GetReveals(Block block, Symbols quote) { var sql = @" SELECT ""Id"", ""Timestamp"", ""OpHash"", ""SenderId"", ""Counter"", ""BakerFee"", ""GasLimit"", ""GasUsed"", ""Status"", ""Errors"" FROM ""RevealOps"" WHERE ""Level"" = @level ORDER BY ""Id"""; using var db = GetConnection(); var rows = await db.QueryAsync(sql, new { level = block.Level }); return(rows.Select(row => new RevealOperation { Id = row.Id, Level = block.Level, Block = block.Hash, Timestamp = row.Timestamp, Hash = row.OpHash, Sender = Accounts.GetAlias(row.SenderId), Counter = row.Counter, GasLimit = row.GasLimit, GasUsed = row.GasUsed, BakerFee = row.BakerFee, Status = OpStatuses.ToString(row.Status), Errors = row.Errors != null ? OperationErrorSerializer.Deserialize(row.Errors) : null, Quote = Quotes.Get(quote, block.Level) })); }
public async Task <IEnumerable <RevealOperation> > GetReveals(string hash, int counter, Symbols quote) { var sql = @" SELECT o.""Id"", o.""Level"", o.""Timestamp"", o.""SenderId"", o.""BakerFee"", o.""GasLimit"", o.""GasUsed"", o.""Status"", o.""Errors"", b.""Hash"" FROM ""RevealOps"" as o INNER JOIN ""Blocks"" as b ON b.""Level"" = o.""Level"" WHERE o.""OpHash"" = @hash::character(51) AND o.""Counter"" = @counter LIMIT 1"; using var db = GetConnection(); var rows = await db.QueryAsync(sql, new { hash, counter }); return(rows.Select(row => new RevealOperation { Id = row.Id, Level = row.Level, Block = row.Hash, Timestamp = row.Timestamp, Hash = hash, Sender = Accounts.GetAlias(row.SenderId), Counter = counter, GasLimit = row.GasLimit, GasUsed = row.GasUsed, BakerFee = row.BakerFee, Status = OpStatuses.ToString(row.Status), Errors = row.Errors != null ? OperationErrorSerializer.Deserialize(row.Errors) : null, Quote = Quotes.Get(quote, row.Level) })); }
public async Task <IEnumerable <OriginationOperation> > GetOriginations(Block block, Symbols quote) { var sql = @" SELECT ""Id"", ""Timestamp"", ""OpHash"", ""SenderId"", ""InitiatorId"", ""Counter"", ""BakerFee"", ""StorageFee"", ""AllocationFee"", ""GasLimit"", ""GasUsed"", ""StorageLimit"", ""StorageUsed"", ""Status"", ""Nonce"", ""ContractId"", ""DelegateId"", ""Balance"", ""ManagerId"", ""Errors"" FROM ""OriginationOps"" WHERE ""Level"" = @level ORDER BY ""Id"""; using var db = GetConnection(); var rows = await db.QueryAsync(sql, new { level = block.Level }); return(rows.Select(row => { var contract = row.ContractId == null ? null : (RawContract)Accounts.Get((int)row.ContractId); return new OriginationOperation { Id = row.Id, Level = block.Level, Block = block.Hash, Timestamp = row.Timestamp, Hash = row.OpHash, Initiator = row.InitiatorId != null ? Accounts.GetAlias(row.InitiatorId) : null, Sender = Accounts.GetAlias(row.SenderId), Counter = row.Counter, Nonce = row.Nonce, GasLimit = row.GasLimit, GasUsed = row.GasUsed, StorageLimit = row.StorageLimit, StorageUsed = row.StorageUsed, BakerFee = row.BakerFee, StorageFee = row.StorageFee ?? 0, AllocationFee = row.AllocationFee ?? 0, ContractDelegate = row.DelegateId != null ? Accounts.GetAlias(row.DelegateId) : null, ContractBalance = row.Balance, Status = OpStatuses.ToString(row.Status), OriginatedContract = contract == null ? null : new OriginatedContract { Alias = contract.Alias, Address = contract.Address, Kind = contract.KindString, TypeHash = contract.TypeHash, CodeHash = contract.CodeHash }, ContractManager = row.ManagerId != null ? Accounts.GetAlias(row.ManagerId) : null, Errors = row.Errors != null ? OperationErrorSerializer.Deserialize(row.Errors) : null, Quote = Quotes.Get(quote, block.Level) }; })); }
public async Task <IEnumerable <DelegationOperation> > GetDelegations(string hash, Symbols quote) { var sql = @" SELECT o.""Id"", o.""Level"", o.""Timestamp"", o.""SenderId"", o.""InitiatorId"", o.""Counter"", o.""BakerFee"", o.""GasLimit"", o.""GasUsed"", o.""Status"", o.""Nonce"", o.""Amount"", o.""PrevDelegateId"", o.""DelegateId"", o.""Errors"", b.""Hash"" FROM ""DelegationOps"" as o INNER JOIN ""Blocks"" as b ON b.""Level"" = o.""Level"" WHERE o.""OpHash"" = @hash::character(51) ORDER BY o.""Id"""; using var db = GetConnection(); var rows = await db.QueryAsync(sql, new { hash }); return(rows.Select(row => new DelegationOperation { Id = row.Id, Level = row.Level, Block = row.Hash, Timestamp = row.Timestamp, Hash = hash, Initiator = row.InitiatorId != null ? Accounts.GetAlias(row.InitiatorId) : null, Sender = Accounts.GetAlias(row.SenderId), Counter = row.Counter, Nonce = row.Nonce, GasLimit = row.GasLimit, GasUsed = row.GasUsed, BakerFee = row.BakerFee, Amount = row.Amount, PrevDelegate = row.PrevDelegateId != null ? Accounts.GetAlias(row.PrevDelegateId) : null, NewDelegate = row.DelegateId != null ? Accounts.GetAlias(row.DelegateId) : null, Status = OpStatuses.ToString(row.Status), Errors = row.Errors != null ? OperationErrorSerializer.Deserialize(row.Errors) : null, Quote = Quotes.Get(quote, row.Level) })); }
public async Task <IEnumerable <OriginationOperation> > GetOriginations(string hash, MichelineFormat format, Symbols quote) { var sql = $@" SELECT o.*, b.""Hash"", sc.""ParameterSchema"", sc.""StorageSchema"", sc.""CodeSchema"", sc.""Views"" FROM ""OriginationOps"" as o INNER JOIN ""Blocks"" as b ON b.""Level"" = o.""Level"" LEFT JOIN ""Scripts"" as sc ON sc.""Id"" = o.""ScriptId"" WHERE o.""OpHash"" = @hash::character(51) ORDER BY o.""Id"""; using var db = GetConnection(); var rows = await db.QueryAsync(sql, new { hash }); #region include storage var storages = await AccountRepository.GetStorages(db, rows.Where(x => x.StorageId != null) .Select(x => (int)x.StorageId) .Distinct() .ToList(), format); #endregion #region include diffs var diffs = await BigMapsRepository.GetOriginationDiffs(db, rows.Where(x => x.BigMapUpdates != null) .Select(x => (int)x.Id) .ToList(), format); #endregion return(rows.Select(row => { var contract = row.ContractId == null ? null : (RawContract)Accounts.Get((int)row.ContractId); MichelineArray code = null; if (row.ParameterSchema != null) { code = new(); code.Add(Micheline.FromBytes(row.ParameterSchema)); code.Add(Micheline.FromBytes(row.StorageSchema)); if (row.Views != null) { code.AddRange(((byte[][])row.Views).Select(x => Micheline.FromBytes(x))); } code.Add(Micheline.FromBytes(row.CodeSchema)); } return new OriginationOperation { Id = row.Id, Level = row.Level, Block = row.Hash, Timestamp = row.Timestamp, Hash = hash, Initiator = row.InitiatorId != null ? Accounts.GetAlias(row.InitiatorId) : null, Sender = Accounts.GetAlias(row.SenderId), Counter = row.Counter, Nonce = row.Nonce, GasLimit = row.GasLimit, GasUsed = row.GasUsed, StorageLimit = row.StorageLimit, StorageUsed = row.StorageUsed, BakerFee = row.BakerFee, StorageFee = row.StorageFee ?? 0, AllocationFee = row.AllocationFee ?? 0, ContractDelegate = row.DelegateId != null ? Accounts.GetAlias(row.DelegateId) : null, ContractBalance = row.Balance, Code = (int)format % 2 == 0 ? code : code.ToJson(), Storage = row.StorageId == null ? null : storages?[row.StorageId], Diffs = diffs?.GetValueOrDefault((int)row.Id), Status = OpStatuses.ToString(row.Status), OriginatedContract = contract == null ? null : new OriginatedContract { Alias = contract.Alias, Address = contract.Address, Kind = contract.KindString, TypeHash = contract.TypeHash, CodeHash = contract.CodeHash }, ContractManager = row.ManagerId != null ? Accounts.GetAlias(row.ManagerId) : null, Errors = row.Errors != null ? OperationErrorSerializer.Deserialize(row.Errors) : null, Quote = Quotes.Get(quote, row.Level) }; })); }