changes for possible delivery
This commit is contained in:
parent
a9a5ca877a
commit
f49f55cb04
@ -7,36 +7,6 @@ This is the final assesment of the blockchain minor of period 1. [EXPLANATION FI
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
# SUMMARY
|
||||
in dit project moet er een p2p connectie gestart worden door 2 sockets. Deze sockets moeten beide aanstaan om het project functioneel te hebben
|
||||
deze 2 sockets sturen naar elkaar als er een nieuwe gebruiker aangemaakt wordt, transacties, nieuwe blocks.
|
||||
Deze sockets versturen geen gehele files. Dit moet per node gedaan worden. Dus alleen transactie data moet genoeg zijn bijvoorbeeld
|
||||
|
||||
De connectie wordt gemaakt bij het moment van starten,
|
||||
User start Applicatie -> User komt in connectie scherm -> user 2 start applicatie -> beide apps starten.
|
||||
|
||||
Wanneer een connectie verbroken wordt tussen de 2 komt er een mooie melding waarop tezien wordt dat de chain gesloten wordt
|
||||
|
||||
Werking:
|
||||
Node start python programma,
|
||||
|
||||
Server start
|
||||
Client start
|
||||
Client zoekt naar een server waarmee hij kan connecten
|
||||
client kan niks vinden en blijft proberen
|
||||
|
||||
Node 2 start python
|
||||
server van node 2 start
|
||||
|
||||
Node 1 connect met server van node 2
|
||||
|
||||
Client van node 2 start
|
||||
client van node 2 connect met server van node 1
|
||||
|
||||
wanneer beide welkoms meldingen gestuurd zijn start de applicatie
|
||||
|
||||
# TODO
|
||||
- voeg een validator aan de inkomende transactie
|
||||
- voeg de block toe / kijk hem na bij inkomend
|
||||
- verwijder transacties van inkomende block
|
||||
|
||||
# SETUP
|
||||
Create 2 instances of this project (copy the folder to any place, other pc, or vm)
|
||||
make sure to change the .env file with the right IP and ports for both instances
|
||||
|
@ -382,11 +382,11 @@ def socketBlock(block):
|
||||
if block_status:
|
||||
|
||||
if block.id == last_block.id and block.blockHash == last_block.blockHash and last_block.metadata['validated'] == False:
|
||||
block.previousBlock = last_block.previousBlock
|
||||
# block.previousBlock = last_block.previousBlock
|
||||
return updateBlockValidation(block)
|
||||
|
||||
if block.id == last_block.id + 1 and block.previousHash == last_block.blockHash:
|
||||
block.previousBlock = last_block
|
||||
# block.previousBlock = last_block
|
||||
return addBlockToChain(block, last_block)
|
||||
|
||||
return False, False, block
|
||||
@ -443,21 +443,24 @@ def addBlockToChain(block, last_block):
|
||||
|
||||
def updateBlockValidation(block):
|
||||
blocks = utilityHelper.loadFile("../data/ledger.dat")
|
||||
last_block = getLastBlock()
|
||||
|
||||
if blocks == []:
|
||||
return False, False, block
|
||||
|
||||
|
||||
try:
|
||||
del blocks[-1]
|
||||
except:
|
||||
return False, False, block
|
||||
|
||||
last_block = getLastBlock()
|
||||
|
||||
utilityHelper.resetFile("../data/ledger.dat")
|
||||
block.previousBlock = last_block
|
||||
if blocks == []:
|
||||
last_block = None
|
||||
# block.previousBlock = last_block
|
||||
blocks.append(block)
|
||||
|
||||
if block.metadata['false_validations'] >= 3:
|
||||
if not block.metadata['validated']:
|
||||
# Create log for miner
|
||||
# setsaveFil transactions in block back to the pool
|
||||
for transaction in block.data:
|
||||
@ -480,21 +483,29 @@ def removeInvalid(block):
|
||||
if blocks == []:
|
||||
return False
|
||||
|
||||
# remove last transaction from pool
|
||||
transactions = Tx()
|
||||
transactions = utilityHelper.loadFile("../data/transaction_pool.dat")
|
||||
if transactions != []:
|
||||
if transactions[-1].type == 1 and transactions[-1].outputs[0][0] == block.metadata['miner']:
|
||||
try:
|
||||
del transactions[-1]
|
||||
except:
|
||||
return False
|
||||
for transaction in block.data:
|
||||
utilityHelper.addFile("../data/transaction_pool.dat", transaction)
|
||||
try:
|
||||
del blocks[-1]
|
||||
except:
|
||||
print(f"{utilityHelper.errorMessage('Something went wrong')}")
|
||||
return False
|
||||
|
||||
if last_block.blockHash == block.blockHash:
|
||||
# try to delete
|
||||
try:
|
||||
del blocks[-1]
|
||||
except:
|
||||
return False
|
||||
|
||||
# remove last transaction from pool
|
||||
transactions = Tx()
|
||||
transactions = utilityHelper.loadFile("../data/transaction_pool.dat")
|
||||
if transactions[-1].type == 1 and transactions[-1].outputs[0][0] == block.metadata['miner']:
|
||||
try:
|
||||
del transactions[-1]
|
||||
except:
|
||||
return False
|
||||
|
||||
utilityHelper.resetFile("../data/ledger.dat")
|
||||
|
||||
|
@ -50,7 +50,7 @@ def sendObj(ip_addr, blk, port):
|
||||
return True
|
||||
except:
|
||||
print("Could not connect to peer")
|
||||
# utilityHelper.close()
|
||||
utilityHelper.close()
|
||||
return False
|
||||
|
||||
def connection(ip, port, db):
|
||||
@ -85,6 +85,10 @@ def connection(ip, port, db):
|
||||
|
||||
valid, exit, block = blockHelper.socketBlock(item)
|
||||
|
||||
if valid:
|
||||
sendObj(os.getenv("PEER_IP"), ["VALIDATE BLOCK",block], int(os.getenv("PEER_PORT")))
|
||||
continue
|
||||
|
||||
if not valid:
|
||||
print(f"{utilityHelper.errorMessage('Received block is not valid')}")
|
||||
sendObj(os.getenv("PEER_IP"), ["INVALID BLOCK",block], int(os.getenv("PEER_PORT")))
|
||||
@ -144,6 +148,9 @@ def connection(ip, port, db):
|
||||
print(">>: ")
|
||||
continue
|
||||
|
||||
case "VALIDATE BLOCK":
|
||||
blockHelper.updateBlockValidation(item[1])
|
||||
|
||||
if type(item) == str:
|
||||
match item:
|
||||
case "EXIT":
|
||||
|
Loading…
x
Reference in New Issue
Block a user