Beispiel #1
0
        private void RemoveItem_Click(object sender, RoutedEventArgs e)
        {
            SignedItem item = (sender as Button)?.DataContext as SignedItem;

            Items.Remove(item);
            NotifyChange("SignEnable");
        }
Beispiel #2
0
 private InternalTransaction MapToInternalTransaction(SignedItem item)
 {
     return(new InternalTransaction()
     {
         Type = MapUserType(item.Type), From = item.PubKey, Nonce = item.Nonce, Sign = item.Sign, Data = item.Seed
     });
 }
        public async Task <RevealItem> Reveal(SignedItem item)
        {
            var revealItem = await storage.Get <RevealItem>(item.Sign);

            if (!cryptoService.VerifySignature(revealItem.ToString(), revealItem.Sign, revealItem.PubKey))
            {
                throw new ArgumentException("Invalid signature");
            }
            ;

            return(revealItem);
        }
Beispiel #4
0
        public async Task <Sp8deTransaction> AggregatedReveal(ProtocolTransaction request, UserInfo userInfo, Sp8deTransaction original)
        {
            var createRequest = new CreateTransactionRequest()
            {
                Type      = Sp8deTransactionType.AggregatedReveal,
                DependsOn = request.DependsOn
            };

            var rtx = original.InternalTransactions.First(x => x.Type == Sp8deTransactionType.InternalValidator);

            createRequest.InnerTransactions = request.Items.Select(x => MapToInternalTransaction(x)).ToList();

            var validatorCommit = new SignedItem()
            {
                Type = UserType.Validator, PubKey = rtx.From, Nonce = rtx.Nonce, Sign = rtx.Sign
            };

            var reveal = await contributorService.Reveal(validatorCommit);

            createRequest.InnerTransactions.Add(new InternalTransaction()
            {
                Type  = MapUserType(reveal.Type),
                From  = reveal.PubKey,
                Nonce = reveal.Nonce,
                Sign  = reveal.Sign,
                Data  = reveal.Seed
            });

            createRequest.AddOriginalRandomSettings(original.InputData?.Items);
            createRequest.AddExtended(request.Extended);

            var result = await transactionNode.AddTransaction(createRequest);

            await ProcessFee(userInfo);

            return(result);
        }