Beispiel #1
0
        public override async Task <OperationResult <object> > GetVerifyTransaction(AuthorizedModel model, CancellationToken ct)
        {
            if (!TryReconnectChain(ct))
            {
                return(new OperationResult <object>(new AppError(LocalizationKeys.EnableConnectToBlockchain)));
            }

            var keys = ToKeyArr(model.PostingKey);

            if (keys == null)
            {
                return(new OperationResult <object>(new AppError(LocalizationKeys.WrongPrivatePostingKey)));
            }

            return(await Task.Run(() =>
            {
                var op = new FollowOperation(model.Login, "steepshot", DitchFollowType.Blog, model.Login);
                var properties = new DynamicGlobalPropertyApiObj
                {
                    HeadBlockId = Hex.ToString(_operationManager.ChainId),
                    Time = DateTime.Now,
                    HeadBlockNumber = 0
                };
                var tr = _operationManager.CreateTransaction(properties, keys, ct, op);
                return new OperationResult <object>()
                {
                    Result = tr
                };
            }, ct));
        }
Beispiel #2
0
        public Transaction CreateTransaction(DynamicGlobalPropertyApiObj propertyApiObj, IEnumerable <byte[]> userPrivateKeys, params BaseOperation[] operations)
        {
            var transaction = new Transaction
            {
                ChainId        = _chainId,
                RefBlockNum    = (ushort)(propertyApiObj.HeadBlockNumber & 0xffff),
                RefBlockPrefix = (uint)BitConverter.ToInt32(Hex.HexToBytes(propertyApiObj.HeadBlockId), 4),
                Expiration     = propertyApiObj.Time.AddSeconds(30),
                BaseOperations = operations
            };

            var msg  = SerializeHelper.TransactionToMessage(transaction);
            var data = Secp256k1Manager.GetMessageHash(msg);

            foreach (var userPrivateKey in userPrivateKeys)
            {
                var sig = Secp256k1Manager.SignCompressedCompact(data, userPrivateKey);
                transaction.Signatures.Add(sig);
            }

            return(transaction);
        }
Beispiel #3
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="propertyApiObj"></param>
 /// <param name="userPrivateKeys"></param>
 /// <param name="operations"></param>
 /// <returns></returns>
 public Transaction CreateTransaction(DynamicGlobalPropertyApiObj propertyApiObj, IEnumerable <byte[]> userPrivateKeys, params BaseOperation[] operations)
 {
     return(CreateTransaction(propertyApiObj, userPrivateKeys, CancellationToken.None, operations));
 }