Minor fixups while working together

This commit is contained in:
Joel Bixby 2017-12-28 16:59:48 -05:00
parent ecef87c5de
commit bfe4de5016
6 changed files with 112 additions and 12 deletions

View File

@ -21,4 +21,6 @@ requests = "==2.18.4"
sqlalchemy = "*"
aioodbc = "*"
sqlalchemy-aio = "*"
sanic = "*"
sanic = "*"
aiohttp = "*"
miniupnpc = "*"

95
Pipfile.lock generated
View File

@ -1,18 +1,18 @@
{
"_meta": {
"hash": {
"sha256": "8b56e0c14f675dc0d54950a061f31508a06a5103afce16f4d1e3d7002b72463d"
"sha256": "12bb22c1e036c3ea23ae6dfcd3682d0ff1f37b0e7817ba87aa3fe22ceb12ed9d"
},
"host-environment-markers": {
"implementation_name": "cpython",
"implementation_version": "3.6.3",
"implementation_version": "3.6.2",
"os_name": "posix",
"platform_machine": "x86_64",
"platform_python_implementation": "CPython",
"platform_release": "17.0.0",
"platform_release": "16.7.0",
"platform_system": "Darwin",
"platform_version": "Darwin Kernel Version 17.0.0: Thu Aug 24 21:48:19 PDT 2017; root:xnu-4570.1.46~2/RELEASE_X86_64",
"python_full_version": "3.6.3",
"platform_version": "Darwin Kernel Version 16.7.0: Thu Jun 15 17:36:27 PDT 2017; root:xnu-3789.70.16~2/RELEASE_X86_64",
"python_full_version": "3.6.2",
"python_version": "3.6",
"sys_platform": "darwin"
},
@ -36,12 +36,46 @@
],
"version": "==0.3.2"
},
"aiohttp": {
"hashes": [
"sha256:1d3659809cc3cf16007a43df3c3af34a9ad8d7594bfcd651ef2d29ff21d015e3",
"sha256:18c93827f604e3830535423f22bfaa180d7ba10baa5959a2077f2e29b320138d",
"sha256:080c82112d93fe117a2f605d5a102191ae7fc52349c53cf6676efbfb8bd2d369",
"sha256:a1c29fdc56e040c3c67a9fa6da7e05382d5216d1ead9ae8a4fb772a1abb0452a",
"sha256:d8f546159ae453572c3b87d88652705c4516dfee1ade8673b47f544b2bf1b33d",
"sha256:03085220b503bb2cf2d288e1b36cf6dcbf84fcfed550e7c73bad429a6e528084",
"sha256:00e40b1261bdb6a1e2b986e610be8a2bb0699ce5a261f78c88d761c726e0af10",
"sha256:fcec0a4878c27f04bf62de4b76d51f9583d45031317dd020088d2e258210fcc2",
"sha256:52b180767e1b75ff071f316a52946fb311ba4183cb6981201fa7843611cf42e4",
"sha256:1fbc4701639ca383dc103840fb478ce726b84c51de8d575c02b740bcb2f60262",
"sha256:9d2e10768bca6ff8392df596754adbffee39ab4243d2536f955f9db145685cbe",
"sha256:3ee498748106c2f8ce937ea27c05d8862118ce055ee3d074b383e927572b51b6",
"sha256:dc922785064187c45c71eda21d7eb87c7a0b2d867e0d7c9ffc2ea2a37dcca608",
"sha256:0415ca37ca047d4b5c2938da024abe4893fe54227b7ad36f98fb169fff4767a3",
"sha256:08715cc8d0ae00679b7c131804ae92aacc31fd0078dd0d78c309c043a4f8aa57",
"sha256:ed8fb8c9b16459895c6949215592df6119961a9999ade84b66594456883d2215",
"sha256:6b2c62e6d54a08c7e4b8b00251d3c877bdf10ceec22c7ecc5d94de64d75fe699",
"sha256:f81850cf4707a2d3d85fcb9c85c091a0df66bf4a67197530c5a4f454b8d1d950",
"sha256:5a1c7c890ac13dd05763e3617261f528fedf3255d72ba8c41e97f7de72f3d8b6",
"sha256:65d623d32a40826be88ecafe5a49fd0af3092b2bf7e1171aec1d3e7868c969c1",
"sha256:222634adcdcfda1aefafff198415df77946384d10696619f1b163cb36d03bc82",
"sha256:fe294df38e9c67374263d783a7a29c79372030f5962bd5734fa51c6f4bbfee3b"
],
"version": "==2.3.7"
},
"aioodbc": {
"hashes": [
"sha256:1a859a4ac7de85bb7a743e22da3942fb046c18fed27fb68bb2ac01750ed259a7"
],
"version": "==0.2.0"
},
"async-timeout": {
"hashes": [
"sha256:d3a195a827b0f4068d1616ae2da04aac62e365d14f2b13dbc071f9feed9db4e2",
"sha256:c17d8ac2d735d59aa62737d76f2787a6c938f5a944ecf768a8c0ab70b0dea566"
],
"version": "==2.0.0"
},
"certifi": {
"hashes": [
"sha256:244be0d93b71e93fc0a0a479862051414d0e00e16435707e5bf5000f92e04694",
@ -102,6 +136,39 @@
],
"version": "==1.0"
},
"miniupnpc": {
"hashes": [
"sha256:7ea46c93486fe1bdb31f0e0c2d911d224fce70bf5ea120e4295d647dfe274931"
],
"version": "==2.0.2"
},
"multidict": {
"hashes": [
"sha256:d12dfcff45b5c0eb3d586289cbf928012e75f93f10f4b9d7af903acb07b3c226",
"sha256:f7deb65a184cbe757faaf4c6d2b8f203cb1a11dd44603a34d7befc343253d5bf",
"sha256:80ad69b8330135b52a6da7a1f0ab6a278025bb72ea08768966785c829f515a6f",
"sha256:3261b631cd6d079e6a20def3306b433794f800ea896dce4f1d5e833ad9bf6f26",
"sha256:80e2bd17ea98fe77867771e1ee03433a54fa492a8413966a6caa766bdd6d6e62",
"sha256:8eb59892040198741944eafca0c34be4da6b58be7fddf6e491a2d9e7e1767548",
"sha256:24ec0d645ca70981e1c84e97e48c874b47f4970a173c8c751be9c213a8658e40",
"sha256:167558cfb7c43077b3d8602142109f2b52fae0841a7ff97eb0a7443db199f303",
"sha256:80abc93d197e24fb7c5aa5a8be3eacbcbc7115a2ff64e46162a4c2b46cd2f75a",
"sha256:ff2b92a41df2e4c5cafaefb782469f3e6053ed00026d75a398521096192d0408",
"sha256:5cfb63f0ddfa86ce6e80eee64e4fe886f9dfdb6dbbd724997bccb66513b0e29f",
"sha256:50dac1151e34974b04419073ee9726f4180c6daf3454fd4af258824a19ad8c1d",
"sha256:ebf1ba2af62dbaa37cf3db346830bb43d40d05a5f1f1966888a620f9b795e7c7",
"sha256:3f513f3bf933d7cb6f5741f6676d4fac1e96aa634161c071974f9bb86a7bbac9",
"sha256:ef6dc6e2d51b6058aa62cdd44dbf02c250c19eee6ff0065babc0ac126b068d43",
"sha256:90dc3b8fefc58a865d64957f8f901d724250ba2a40e02f49d0df0103e96f5afa",
"sha256:70630854b820d73ae102440123df38c983d77cd4ae444f3930a6bb6bbda87b76",
"sha256:faf2b6447521d2075d03fb5e7c5467bac68f67df1c69e034ebca3afb6b3c619d",
"sha256:eb7d5d39463137726138fc14c8458131136b8f4b06ba65f1cecd7aa6abe91df1",
"sha256:fa04df1503fae7045883c57db47ba0c07de2ebe4a91c3e64d56f20d3d99e5dc8",
"sha256:bce16633f3ee88863e4c9bcd7e037a6133c56fd9e7e7c0776bbaeeddcf154ac4",
"sha256:f82e61c7408ed0dce1862100db55595481911f159d6ddec0b375d35b6449509b"
],
"version": "==3.3.2"
},
"pyodbc": {
"hashes": [
"sha256:364621505a7488b58ac3d5ac53183425f0ba6f333fdc0500492d08485431d04c",
@ -213,6 +280,24 @@
"sha256:6246e5fc98a505824113fb6aca993d45ea284a2bcffdc2c65d0c538e53e4abd3"
],
"version": "==0.13"
},
"yarl": {
"hashes": [
"sha256:55dfe4a952fddf3e32c08e3fe004a86b77963d95a4b36c8bdb5acc68960c4767",
"sha256:5970e4deb2ad23ececbaca8e20e7421d66d84f9a8978eb7d469b931f0a7c5bfa",
"sha256:6594f27c81012c9bcad46693b599ae3cb6086ef0c32af68160e599e69b7ce2e6",
"sha256:6f662ff050945163fc70f6c4361807068f66b248d60d7f7d2fe35c6dce7e1490",
"sha256:3c90b8b89d9e163fb114f8e491f85bc44aacc528d9ade3cb4a210a2340282b15",
"sha256:c1f6aa4f6647380dfee6a2f560079d2c2b105a6d7ab7c1ad83bc811fc0df7bb2",
"sha256:e6c302aa976504e4cf299b5ae5385677b77f84b71f84aeddcc56b8841743b27b",
"sha256:e04c26c4fa6717ceeada129665cf19f630ddffb2df692bc5d51595b97227a5cf",
"sha256:15ab97fd75bd531ba6e3e2639313db177ba44ec3a68bdd3f531904782872dfe9",
"sha256:b3b2bfd039b6a89382ad46a20647286b012db34f63e00e39e185cb4df566121f",
"sha256:620f76a2452f502333392c86074046af6fde72b54065e43530e8417d689b1824",
"sha256:7a2001e180f169f762f9322066685f94808db5722ce7c4827a248d3f50d88e61",
"sha256:47622985ecd9b15335d65c1acd54aeb3ba449e6d09b36e37ecfe334c7e7b8d0b"
],
"version": "==0.16.0"
}
},
"develop": {}

View File

@ -15,7 +15,7 @@ class Blockchain:
# Create the genesis block if necessary
if not self.get_blocks(0):
self.new_block(previous_hash='1', proof=100, height=0)
self.new_block(previous_hash='1', proof=100)
logger.info("✨ Created genesis block")
logger.info("Blockchain Initiated")
@ -59,7 +59,7 @@ class Blockchain:
return True
def new_block(self, proof, previous_hash, height):
def new_block(self, proof, previous_hash):
"""
Create a new Block in the Blockchain
@ -70,7 +70,6 @@ class Blockchain:
"""
block = Block(
height=height,
timestamp=datetime.now(),
transactions=self.current_transactions,
proof=proof,

View File

@ -9,6 +9,15 @@ from sqlalchemy.orm import scoped_session, sessionmaker
engine = create_engine('sqlite:///electron.db')
db = scoped_session(sessionmaker(bind=engine))
from datetime import datetime
import json
class DateTimeEncoder(json.JSONEncoder):
def default(self, o):
if isinstance(o, datetime):
return o.isoformat()
return json.JSONEncoder.default(self, o)
class BaseModel(object):
@declared_attr
@ -28,7 +37,7 @@ class BaseModel(object):
"""
Helper method to convert any database row to JSON
"""
return json.dumps(self.to_dict(), sort_keys=True)
return json.dumps(self.to_dict(), sort_keys=True, cls=DateTimeEncoder)
Base = declarative_base(cls=BaseModel)

View File

@ -51,4 +51,4 @@ def miner(right, event):
if latest_task:
proof = proof_of_work(latest_task['last_hash'], latest_task['difficulty'], event)
right.send(proof)
right.send({'proof': proof, 'last_hash': latest_task['last_hash']})

View File

@ -134,4 +134,9 @@ async def mining_controller(app):
if left.poll():
result = left.recv()
print(f'A new block was found with proof: {result}')
proof = result['proof']
previous_hash = result['last_hash']
app.blockchain.new_block(proof, previous_hash)
last_block_hash = app.blockchain.hash(app.blockchain.last_block)
left.send({'last_hash': last_block_hash, 'difficulty': 6})