From 555962dc4ab2fc00f671d7e767071f8aac1e9380 Mon Sep 17 00:00:00 2001 From: Francois de la Rouviere Date: Mon, 20 Jun 2022 13:11:23 +0100 Subject: [PATCH] Update federation member API --- .../Models/FederationMemberModel.cs | 6 ++++++ .../Voting/FederationController.cs | 21 ++++++++++++++++--- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/Stratis.Bitcoin.Features.PoA/Models/FederationMemberModel.cs b/src/Stratis.Bitcoin.Features.PoA/Models/FederationMemberModel.cs index 8524017bdd..629a3ff75a 100644 --- a/src/Stratis.Bitcoin.Features.PoA/Models/FederationMemberModel.cs +++ b/src/Stratis.Bitcoin.Features.PoA/Models/FederationMemberModel.cs @@ -5,12 +5,18 @@ namespace Stratis.Bitcoin.Features.PoA.Models { public class FederationMemberModel { + [JsonProperty("collateralAddress")] + public string CollateralAddress { get; set; } + [JsonProperty("pubkey")] public string PubKey { get; set; } [JsonProperty("collateralAmount")] public decimal CollateralAmount { get; set; } + [JsonProperty("isMultiSig")] + public bool IsMultiSig { get; set; } + [JsonProperty("lastActiveTime")] public DateTime? LastActiveTime { get; set; } diff --git a/src/Stratis.Bitcoin.Features.PoA/Voting/FederationController.cs b/src/Stratis.Bitcoin.Features.PoA/Voting/FederationController.cs index 69103338cd..9f2d5c64a9 100644 --- a/src/Stratis.Bitcoin.Features.PoA/Voting/FederationController.cs +++ b/src/Stratis.Bitcoin.Features.PoA/Voting/FederationController.cs @@ -93,6 +93,13 @@ public IActionResult GetCurrentMemberInfo() PubKey = this.federationManager.CurrentFederationKey.PubKey.ToHex() }; + if (this.federationManager.GetCurrentFederationMember() is CollateralFederationMember collateralFederationMember) + { + federationMemberModel.CollateralAddress = collateralFederationMember.CollateralMainchainAddress; + federationMemberModel.CollateralAmount = collateralFederationMember.CollateralAmount.ToUnit(MoneyUnit.BTC); + federationMemberModel.IsMultiSig = collateralFederationMember.IsMultisigMember; + } + ChainedHeader chainTip = this.chainIndexer.Tip; federationMemberModel.FederationSize = this.federationHistory.GetFederationForBlock(chainTip).Count; @@ -167,13 +174,21 @@ public IActionResult GetMembers() ConcurrentDictionary activeTimes = this.federationHistory.GetFederationMembersByLastActiveTime(); foreach (IFederationMember federationMember in federationMembers) { - federationMemberModels.Add(new FederationMemberModel() + var model = new FederationMemberModel() { PubKey = federationMember.PubKey.ToHex(), - CollateralAmount = (federationMember as CollateralFederationMember).CollateralAmount.ToUnit(MoneyUnit.BTC), LastActiveTime = new DateTime(1970, 1, 1, 0, 0, 0).AddSeconds(activeTimes.FirstOrDefault(a => a.Key.PubKey == federationMember.PubKey).Value), PeriodOfInActivity = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0).AddSeconds(activeTimes.FirstOrDefault(a => a.Key.PubKey == federationMember.PubKey).Value) - }); + }; + + if (federationMember is CollateralFederationMember collateralFederationMember) + { + model.CollateralAddress = collateralFederationMember.CollateralMainchainAddress; + model.CollateralAmount = (federationMember as CollateralFederationMember).CollateralAmount.ToUnit(MoneyUnit.BTC); + model.IsMultiSig = collateralFederationMember.IsMultisigMember; + } + + federationMemberModels.Add(model); } return Json(federationMemberModels);