import utime
from machine import Pin
from socket
import threading
import json
from time import time
import hashlib
from defn import BlockchainNode
trigger=Pin(3,Pin.OUT)
echo=Pin(2,Pin.IN)
blockchain_node = BlockchainNode('localhost', 5001)
threading.Thread(target=blockchain_node.start).start()
def ultra(blockchain_node):
# Connect to another node
blockchain_node.connect_to_peer('localhost', 5001)
trigger.low()
utime.sleep_us(2)
trigger.high()
utime.sleep_us(5)
trigger.low()
while echo.value()==0:
signaloff=utime.ticks_us()
while echo.value()==1:
signalon=utime.ticks_us()
timepassed=signalon-signaloff
distance=(timepassed*0.0343)/2
print("the distance from the object is",distance,"cm")
# Add a new transaction and broadcast it
blockchain_node.new_data({'distance': distance})
blockchain_node.broadcast_transaction({'distance': distance})
# Mine a new block and broadcast it
last_proof = blockchain_node.last_block['proof']
proof = blockchain_node.proof_of_work(last_proof)
previous_hash = blockchain_node.hash(blockchain_node.last_block)
block = blockchain_node.new_block(proof, previous_hash)
blockchain_node.broadcast_block(block)
print("New Block Added: ", block)
for block in blockchain_node.chain:
print(json.dumps(block, indent=4))
while True:
ultra(blockchain_node)
utime.sleep(1)