Example #1
0
 def test_transaction_signing(self):
     u1 = Client()
     u2 = Client()
     outputs = [(u2.public_key, 5)]
     tx = Transaction(u1.public_key, u1.get_sk(), [], outputs, False)
     tx.sign_transaction()
     self.assertNotEqual(None, tx.get_signature())
Example #2
0
 def test_transaction_outputs(self):
     u1 = Client()
     u2 = Client()
     outputs = [(u2.public_key, 5)]
     tx = Transaction(u1.public_key, u1.get_sk(), [], outputs, False)
     utxo_op = tx.get_outputs()
     self.assertEqual(len(outputs), 1)
     self.assertEqual(utxo_op[0].get_recipient_pk(), u2.public_key)
Example #3
0
 def test_transaction_dumping(self):
     u1 = Client()
     u2 = Client()
     outputs = [(u2.public_key, 5)]
     tx = Transaction(u1.public_key, u1.get_sk(), [], outputs, False)
     dictionary = tx.to_dict()
     self.assertEqual(dictionary['witnesses_included'], False)
     self.assertEqual(dictionary['originator'], u1.public_key)
     self.assertEqual(dictionary['witnesses'], [])
     self.assertEqual(dictionary['ip_counter'], 0)
     self.assertEqual(dictionary['inputs'], [])
     self.assertEqual(dictionary['op_counter'], 1)
     self.assertEqual(dictionary['outputs'], tx.get_outputs())
     self.assertEqual(dictionary['time'], tx.get_timestamp())
Example #4
0
 def test_transaction_verification(self):
     u1 = Client()
     u2 = Client()
     outputs = [(u2.public_key, 5)]
     tx = Transaction(u1.public_key, u1.get_sk(), [], outputs, False)
     tx.sign_transaction()
     u3 = Client()
     result = u3.validate_transaction(tx)
     self.assertFalse(
         result
     )  # because of the absense of inputs, it's considered an overspending transaction
Example #5
0
    def init(self):
        gen0 = Client()
        gen1 = Client()
        genesis_transaction = Transactions(gen0, gen1, 3)
        genesis_transaction(self)

        #verify
        transaction = self.mempool[-1]
        transactionData = self.mempoolData[transaction]

        #getting signature and public key fromo data
        transactionSignature = transactionData['signature']
        transactionVerifyKey = transactionData['sender'].publickey

        if gen0.verification(transactionData, transaction):
            #managing accounts
            transactionData['sender'].wallet -= transactionData['amount']
            transactionData['receiver'].wallet += transactionData['amount']

            #deleting the transaction from mempool
            self.mempool.remove(transaction)
            self.verified.append(transaction)
            genesis = Block()
            genesis.transactions.append(transaction)
            genesis.transactionsData[transaction] = transactionData
            genesis.index = 0
            genesis.timestamp = formatTime(datetime.now())
            genesis.prevHash = "Genesis"

            #Mining Block
            proof = genesis()
            while not proof.startswith('0' * self.difficulty):
                genesis.nonce += 1
                proof = genesis()
            self.chain.append(proof)
            self.chaindata[proof] = to_dict(genesis)
            self.prevHash = genesis.genHash(genesis.nonce)
            print('Blockchain is initialised')
Example #6
0
 def createNetTopo(self):
     # 1 Create the Server
     self.server = Server(name="Server")
     initSNR = [1, 1, 1, 1]
     # 2 Create the clients
     resoList = [6, 4, 2, 1]
     for i in range(self.hostNum):
         # init_reso = resoList[np.random.randint(4)]
         init_reso = resoList[1]
         # init_reso = resoList[len(resoList) - 1 - i]
         c = Client(name="c{}".format(i + 1),
                    channel=Channel(initCC=options.serverCC / 4,
                                    initSNR=initSNR[i]),
                    video=Video(resolution=init_reso),
                    bufferSize=options.bufferSize)
         self.clients[c.name] = c
Example #7
0
 def test_client_creation(self):
     user = Client()
     self.assertIsInstance(user, Client)
Example #8
0
 def test_transaction_creation(self):
     u1 = Client()
     u2 = Client()
     outputs = [(u2.public_key, 5)]
     tx = Transaction(u1.public_key, u1.get_sk(), [], outputs, False)
     self.assertIsInstance(tx, Transaction)
Example #9
0
from node import Client
from transaction import Transactions
from blocks import Blockchain
from util import display

frank = Client(node=True)
alex = Client()
britty = Client()
winni = Client()

miner0 = Client(node=True)
miner1 = Client(node=True)

chain = Blockchain()
chain.init()

frank = Client()
alex = Client()

miner0 = Client(node=True)
miner1 = Client(node=True)
print(miner0.wallet)
print(miner1.wallet)
t0 = Transactions(frank, alex, 30)
t0(chain)

t1 = Transactions(alex, frank, 45)
t1(chain)

t2 = Transactions(alex, frank, 21)
t2(chain)
 def test_mining_one_block_one_miner(self):
     # block chain size is set to 5
     miner_node = Miner()
     user_node1 = Client()
     user_node2 = Client()
     user_node3 = Client()
     tx1 = user_node1.generate_tx(
         [(user_node2.public_key, 5)],
         user_node1.get_random_input().get_transaction_hash(), 1)
     miner_node.add_transaction(tx1)
     tx2 = user_node1.generate_tx(
         [(user_node3.public_key, 5)],
         user_node1.get_random_input().get_transaction_hash(), 1)
     miner_node.add_transaction(tx2)
     tx3 = user_node2.generate_tx(
         [(user_node3.public_key, 5)],
         user_node2.get_random_input().get_transaction_hash(), 1)
     miner_node.add_transaction(tx3)
     tx4 = user_node2.generate_tx(
         [(user_node1.public_key, 5)],
         user_node2.get_random_input().get_transaction_hash(), 1)
     miner_node.add_transaction(tx4)
     tx5 = user_node3.generate_tx(
         [(user_node1.public_key, 5)],
         user_node3.get_random_input().get_transaction_hash(), 1)
     miner_node.add_transaction(tx5)
     self.assertTrue(miner_node.is_mining())
 def test_client_genesis_block(self):
     user_node = Client()
     self.assertEqual(user_node.wallet_size(), 1)