add modify block command
This commit is contained in:
parent
baa981e4cc
commit
a66fb691e4
|
|
@ -6,3 +6,4 @@ build/
|
|||
dist/
|
||||
blockshell/
|
||||
blockshell.egg-info/
|
||||
*.csv
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
#!/bin/sh
|
||||
|
||||
CMD=""
|
||||
PREVIFS=$IFS
|
||||
IFS=','
|
||||
|
||||
[ $# -ne 1 ] && { echo "Usage: add_blocks <file.csv>"; exit 1; }
|
||||
[ ! -f $1 ] && { echo "file $1 not found"; exit 1; }
|
||||
|
||||
while read uid mail firstname lastname end
|
||||
do
|
||||
CMD="${CMD}dotx $uid $mail $firstname $lastname\n"
|
||||
done < $1
|
||||
|
||||
# Add blocks to existing blockchain (if it exists) or to a new blockchain
|
||||
printf $CMD | blockshell load chain.txt
|
||||
|
||||
IFS=$PREVIFS
|
||||
|
|
@ -77,6 +77,7 @@ class Block:
|
|||
"""
|
||||
print(Back.RED + "\n[Status] Mining block (" + str(self.index) + ") with PoW ...")
|
||||
startTime = time.time()
|
||||
self.hash = ""
|
||||
|
||||
while self.hash[:difficulty] != "0"*difficulty:
|
||||
self.nonce += 1
|
||||
|
|
@ -152,3 +153,29 @@ class Blockchain:
|
|||
print(Back.RED + "[Error] Creating new blockchain.")
|
||||
print(Style.RESET_ALL)
|
||||
self.writeBlocks()
|
||||
|
||||
def modifyBlock(self, hash, uid_epita, email_epita, firstname, lastname):
|
||||
"""
|
||||
Method to modify existing block
|
||||
"""
|
||||
i = 0
|
||||
for i in range(len(self.chain)):
|
||||
eachBlock = self.chain[i]
|
||||
if eachBlock.hash == hash:
|
||||
eachBlock.uid_epita = uid_epita
|
||||
eachBlock.email_epita = email_epita
|
||||
eachBlock.firstname = firstname
|
||||
eachBlock.lastname = lastname
|
||||
eachBlock.createRandomImage()
|
||||
eachBlock.mineBlock(self.difficulty)
|
||||
break
|
||||
if i == len(self.chain) - 1:
|
||||
return False
|
||||
for i in range(i+1, len(self.chain)):
|
||||
eachBlock = self.chain[i]
|
||||
eachBlock.index = i
|
||||
eachBlock.previousHash = self.chain[i-1].hash
|
||||
eachBlock.mineBlock(self.difficulty)
|
||||
self.writeBlocks()
|
||||
return True
|
||||
|
||||
|
|
|
|||
14
bscli.py
14
bscli.py
|
|
@ -25,7 +25,8 @@ SUPPORTED_COMMANDS = [
|
|||
'dotx',
|
||||
'allblocks',
|
||||
'getblock',
|
||||
'help'
|
||||
'help',
|
||||
'modify',
|
||||
]
|
||||
|
||||
def printLogo():
|
||||
|
|
@ -91,6 +92,7 @@ def load(filename, difficulty):
|
|||
# Set difficulty of blockchain
|
||||
coin.difficulty = difficulty
|
||||
|
||||
printSuccess(f"Blockchain loaded successfully. {len(coin.chain)} blocks loaded.")
|
||||
# Start blockshell shell
|
||||
startShell()
|
||||
|
||||
|
|
@ -148,6 +150,16 @@ def help(cmd):
|
|||
print(" dotx <uid> <mail> <firstname> <lastname> Create new transaction")
|
||||
print(" allblocks Fetch all mined blocks in blockchain")
|
||||
print(" getblock <block hash> Fetch information about particular block")
|
||||
print(" modify <block hash> <uid> <mail> <firstname> <lastname> Modify a particular block keeping blockchain validity")
|
||||
|
||||
def modify(args):
|
||||
"""
|
||||
Method to modify any block in blockchain.
|
||||
"""
|
||||
if coin.modifyBlock(args[0], args[1], args[2], args[3], args[4]):
|
||||
printSuccess("Block modified successfully!")
|
||||
else:
|
||||
throwError("Block modification failed!")
|
||||
|
||||
def throwError(msg):
|
||||
"""
|
||||
|
|
|
|||
Loading…
Reference in New Issue