51 lines
1.3 KiB
Python
51 lines
1.3 KiB
Python
from BlockChain import CBlock
|
|
from Signature import generate_keys, sign, verify
|
|
from cryptography.hazmat.primitives import hashes
|
|
from cryptography.hazmat.backends import default_backend
|
|
|
|
import random
|
|
|
|
REWARD_VALUE = 25.0
|
|
leading_zeros = 2
|
|
next_char_limit = 20
|
|
|
|
class TxBlock (CBlock):
|
|
|
|
def __init__(self, previousBlock):
|
|
self.nonce = "A random nonce"
|
|
super(TxBlock, self).__init__([], previousBlock)
|
|
|
|
def addTx(self, Tx_in):
|
|
self.data.append(Tx_in)
|
|
|
|
def __count_totals(self):
|
|
total_in = 0
|
|
total_out = 0
|
|
for tx in self.data:
|
|
for addr, amt in tx.inputs:
|
|
total_in = total_in + amt
|
|
for addr, amt in tx.outputs:
|
|
total_out = total_out + amt
|
|
return total_in, total_out
|
|
|
|
def is_valid(self):
|
|
if not super(TxBlock, self).is_valid():
|
|
return False
|
|
for tx in self.data:
|
|
if not tx.is_valid():
|
|
return False
|
|
|
|
total_in, total_out = self.__count_totals()
|
|
|
|
Tx_Balance = round(total_out - total_in, 10)
|
|
|
|
if Tx_Balance > REWARD_VALUE:
|
|
return False
|
|
return True
|
|
|
|
def good_nonce(self):
|
|
return False
|
|
|
|
def find_nonce(self):
|
|
return None
|