Skip to content

Commit

Permalink
Trying Challenges
Browse files Browse the repository at this point in the history
  • Loading branch information
super3 committed May 31, 2015
1 parent a214ec9 commit fd8670d
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 7 deletions.
19 changes: 14 additions & 5 deletions dataserv/Challenge.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
import hashlib
import random
from RandomIO import RandomIO
from dataserv.Farmer import sha256


def sha256(content):
"""Finds the sha256 hash of the content."""
content = content.encode('utf-8')
return hashlib.sha256(content).hexdigest()


class Challenge:
Expand All @@ -22,9 +28,12 @@ def gen_seeds(self):
last_seed = sha256(last_seed)
return seeds

def pick_seed(self):
"""Generate a random challenge for the Farmer."""
self.seed = random.choice(self.seed_list)
def pick_seed(self, pick=None):
"""Generate a random challenge or force a choice for the Farmer."""
if pick is None:
self.seed = random.choice(self.seed_list)
else:
self.seed = self.seed_list[pick]
return self.seed

def get_seeds(self):
Expand All @@ -38,4 +47,4 @@ def gen_shard(self, seed, path):
def gen_challenge(self, path):
"""Generate a challenge set for the farmer."""
self.pick_seed()
return self.gen_shard(self.seed, path)
return (self.seed, self.gen_shard(self.seed, path))
11 changes: 10 additions & 1 deletion dataserv/Farmer.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,16 @@
from flask import Flask
from datetime import datetime
from sqlalchemy import DateTime
from dataserv.Challenge import Challenge
from flask.ext.sqlalchemy import SQLAlchemy
from dataserv.Validator import is_btc_address


app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///dataserv.db'
app.config['SEED_HEIGHT'] = 100
app.config['DATA_DIR'] = 'data/'
app.config['SHARD_SIZE'] = 10*1024*1024 # 10 MB
db = SQLAlchemy(app)


Expand Down Expand Up @@ -37,7 +41,7 @@ def __init__(self, btc_addr, last_seen=None, last_audit=None):
self.btc_addr = btc_addr
self.last_seen = last_seen
self.last_audit = last_audit
self.iter_num = None
self.seed = None
self.response = None

def __repr__(self):
Expand Down Expand Up @@ -83,3 +87,8 @@ def ping(self):
else:
raise LookupError("Farmer not found.")
return farmer

def gen_challenge(self):
chal = Challenge(self.btc_addr, app.config['SEED_HEIGHT'], app.config['SHARD_SIZE'])
self.seed, self.response = chal.gen_challenge(app.config['DATA_DIR'])
print(self.seed, self.response)
2 changes: 1 addition & 1 deletion tests/test_Challenge.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,5 @@ def test_shard(self):
def test_gen_challenge(self):
addr = '191GVvAaTRxLmz3rW3nU5jAV1rF186VxQc'
chal = Challenge(addr, 100, 10*1024*1024) # 10 MB
path = chal.gen_challenge('data/')
path = chal.gen_challenge('data/')[1]
os.remove(path)
5 changes: 5 additions & 0 deletions tests/test_Farmer.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,3 +73,8 @@ def test_sha256(self):
ans = 'c059c8035bbd74aa81f4c787c39390b57b974ec9af25a7248c46a3ebfe0f9dc8'
self.assertEqual(sha256("storj"), ans)
self.assertNotEqual(sha256("not storj"), ans)

def test_gen_challenge(self):
addr = '191GVvAaTRxLmz3rW3nU5jAV1rF186VxQc'
farmer = Farmer(addr)
farmer.gen_challenge()

0 comments on commit fd8670d

Please sign in to comment.