Mercurial > pysmcl
changeset 251:95f0cfe90bd1
examples: removed irrelevant example
author | Sigurd Meldgaard <stm@daimi.au.dk> |
---|---|
date | Wed, 06 Jan 2010 12:21:16 +0100 |
parents | cbee252910f3 |
children | c7b4e913b22a |
files | examples/poker.py |
diffstat | 1 files changed, 0 insertions(+), 144 deletions(-) [+] |
line wrap: on
line diff
--- a/examples/poker.py Wed Jan 06 12:20:12 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,144 +0,0 @@ - -import sys -from optparse import OptionParser - - -import viff.reactor -viff.reactor.install() -from twisted.internet import reactor -from twisted.internet.defer import Deferred, DeferredList, gatherResults - -from viff.field import GF -from viff.runtime import Share, create_runtime, gather_shares -from viff.config import load_config -from viff.util import dprint, find_prime, rand -from viff.comparison import Toft07Runtime - -from secretset import SecretSet - -# Load the configuration from the player configuration files. -id, players = load_config(sys.argv[1]) - -# Initialize the field we do arithmetic over. -Zp = GF(53) - -print "I am player %d" % id - - -class Dealer(object): - - def __init__(self, runtime, random, one): - self.runtime = runtime - self.random = random - self.one = one - self.dealt_cards = SecretSet(random, one) - - def next_card(self): -# print "n1" - def choose_random_card(x, r): -# print "n3" - if x: -# print "n4" - self.dealt_cards.add(r) - return r, - else: -# print "n5", self.random - r = self.random() -# print "n6" - contains = self.dealt_cards.contains(r) -# print "n7" - v = self.runtime.output(contains) -# print "n8" - v.addCallback(choose_random_card, r) -# print "n9" - v.addErrback(errorHandler) -# print "n10" - return v -# print "n2" - return choose_random_card(Zp(0), None) - - def get_list_of_cards(self, n): -# print "ls", n - if 0 >= n: -# print "foobar" - return [] -# print "ls2" - def f(card, n, acc): -# print "f:", card, acc, n - acc.append(card[0]) - if 0 == n: -# print "f: done" - return acc - else: -# print "f: cont." - card = self.next_card() - card.addCallback(f, n - 1, acc) - return card -# print "ls3" - card = self.next_card() -# print "ls4" - self.runtime.schedule_callback(card, f, n - 1, []) -# print "ls5" - return card - - -def get_one(runtime): - if 1 == runtime.id: - one = runtime.input([1], Zp, 1) - else: - one = runtime.input([1], Zp, None) - return one - - -def playPoker(runtime): - num_cards = 4 - - def random(): - r = runtime.prss_share_random(Zp) - return r - - one = get_one(runtime) - dealer = Dealer(runtime, random, one) - - cards = dealer.get_list_of_cards(num_cards*runtime.num_players) - - def deal_cards(cards): - my_cards = [] - for player in runtime.players.keys(): - for card in cards[(player-1)*num_cards:(player*num_cards)]: - c = runtime.output(card, [player]) - if c is not None: - my_cards.append(c) - - def print_cards(cards): - print "You have been dealt the following cards:" - for card in cards: - print "Card nr.", card.value - return None - dls = gatherResults(my_cards) - dls.addCallbacks(print_cards, errorHandler) - return dls - - runtime.schedule_callback(cards, deal_cards) - runtime.schedule_callback(cards, lambda _: runtime.synchronize()) - runtime.schedule_callback(cards, lambda _: runtime.shutdown()) - -def errorHandler(failure): - print "Error: %s" % failure - - -# Parse command line arguments. -parser = OptionParser() -Toft07Runtime.add_options(parser) -options, args = parser.parse_args() - -if len(args) == 0: - parser.error("you must specify a config file") -else: - id, players = load_config(args[0]) - -# Create a deferred Runtime and ask it to run our protocol when ready. -pre_runtime = create_runtime(id, players, 1, options, Toft07Runtime) -pre_runtime.addCallbacks(playPoker, errorHandler) -# Start the Twisted event loop. -reactor.run()