예제 #1
0
        public override SynthesizedBlock ConvertApiSynthesizedBlock(SynthesizedBlockAPI synthesizedBlockApi)
        {
            SynthesizedBlock synthesizedBlock = base.ConvertApiSynthesizedBlock(synthesizedBlockApi);

            AccountId accountId = synthesizedBlockApi.AccountId != null ? new AccountId(synthesizedBlockApi.AccountId) : new AccountId(synthesizedBlockApi.AccountHash);

            if (synthesizedBlockApi is NeuraliumSynthesizedBlockApi neuraliumSynthesizedBlockApi && synthesizedBlock is NeuraliumSynthesizedBlock neuraliumSynthesizedBlock)
            {
                foreach (NeuraliumSynthesizedBlockApi.NeuraliumSynthesizedElectionResultAPI electionResult in neuraliumSynthesizedBlockApi.FinalElectionResults)
                {
                    NeuraliumSynthesizedBlock.NeuraliumSynthesizedElectionResult neuraliumSynthesizedElectionResult = new NeuraliumSynthesizedBlock.NeuraliumSynthesizedElectionResult();

                    neuraliumSynthesizedElectionResult.BlockId   = synthesizedBlockApi.BlockId;
                    neuraliumSynthesizedElectionResult.Timestamp = synthesizedBlockApi.Timestamp;

                    AccountId delegateAccountId = null;

                    if (!string.IsNullOrWhiteSpace(electionResult.DelegateAccountId))
                    {
                        delegateAccountId = new AccountId(electionResult.DelegateAccountId);
                    }

                    neuraliumSynthesizedElectionResult.ElectedAccounts.Add(accountId, (accountId, delegateAccountId, (Enums.ElectedPeerShareTypes)electionResult.PeerType, electionResult.SelectedTransactions));
                    neuraliumSynthesizedElectionResult.BlockId = synthesizedBlockApi.BlockId - electionResult.Offset;
                    neuraliumSynthesizedElectionResult.ElectedGains.Add(accountId, (electionResult.BountyShare, electionResult.Tips));

                    neuraliumSynthesizedBlock.FinalElectionResults.Add(neuraliumSynthesizedElectionResult);
                }
            }

            return(synthesizedBlock);
        }
예제 #2
0
 protected override SynthesizedBlock CreateSynthesizedBlockFromApi(SynthesizedBlockAPI synthesizedBlockApi)
 {
     return(new NeuraliumSynthesizedBlock());
 }