public IActionResult MineBlock()
        {
            var lastBlock = _blockchain.LastBlock;
            var lastProof = lastBlock.Proof;
            var proof     = _blockchain.ProofOfWork(lastProof);

            _blockchain.AddNewTransaction("0", "unique", 1);
            _blockchain.CreateBlock(proof);
            return(Ok(_blockchain.LastBlock));
        }
예제 #2
0
        public Block Mine(string identifier)
        {
            Block lastBlock   = Blockchain.GetLastBlock();
            Int64 proofOfWork = Blockchain.GetProofOfWork(lastBlock.ProofOfWork);

            Blockchain.AddNewTransaction(new byte[0], Util.Hash.HashString(identifier), 1);

            return(Blockchain.AddNewBlock(proofOfWork, Util.Hash.HashBlock(lastBlock)));
        }
예제 #3
0
 public Transaction Post([FromBody][Required] TransactionPost transaction)
 {
     if (ModelState.IsValid)
     {
         return(Blockchain.AddNewTransaction(Util.Hash.HashString(transaction.Sender), Util.Hash.HashString(transaction.Recipient), transaction.Amount));
     }
     else
     {
         throw new HttpResponseException(HttpStatusCode.BadRequest);
     }
 }
예제 #4
0
        public void SendTokens(int amount, byte[] recipient)
        {
            Transaction transaction = new Transaction(PublicKey, recipient, amount, HashFactory);

            transaction.SignTransaction(Signer);

            try
            {
                Blockchain.AddNewTransaction(transaction);
                NumberOfTokens -= amount;
            }
            catch (ArgumentException)
            {
                NumberOfTokens += amount;
            }
        }