@ -13,7 +13,6 @@ from jmbase import (hextobin, is_hs_uri, get_tor_agent, JMHiddenService,
get_nontor_agent , BytesProducer , wrapped_urlparse ,
get_nontor_agent , BytesProducer , wrapped_urlparse ,
bdict_sdict_convert , JMHTTPResource )
bdict_sdict_convert , JMHTTPResource )
from jmbase . commands import *
from jmbase . commands import *
from jmbitcoin . fidelity_bond import FidelityBond
from twisted . protocols import amp
from twisted . protocols import amp
from twisted . internet import reactor , ssl , task
from twisted . internet import reactor , ssl , task
from twisted . internet . protocol import ServerFactory
from twisted . internet . protocol import ServerFactory
@ -475,7 +474,7 @@ class JMDaemonServerProtocol(amp.AMP, OrderbookWatch):
self . crypto_boxes = { }
self . crypto_boxes = { }
self . sig_lock = threading . Lock ( )
self . sig_lock = threading . Lock ( )
self . active_orders = { }
self . active_orders = { }
self . fidelity_bond = Non e
self . use_ fidelity_bond = Fals e
def checkClientResponse ( self , response ) :
def checkClientResponse ( self , response ) :
""" A generic check of client acceptance; any failure
""" A generic check of client acceptance; any failure
@ -553,7 +552,7 @@ class JMDaemonServerProtocol(amp.AMP, OrderbookWatch):
return { ' accepted ' : True }
return { ' accepted ' : True }
@JMSetup . responder
@JMSetup . responder
def on_JM_SETUP ( self , role , offers , fidelity_bond ) :
def on_JM_SETUP ( self , role , offers , use_ fidelity_bond) :
assert self . jm_state == 0
assert self . jm_state == 0
self . role = role
self . role = role
self . crypto_boxes = { }
self . crypto_boxes = { }
@ -568,8 +567,7 @@ class JMDaemonServerProtocol(amp.AMP, OrderbookWatch):
self . mcc . pubmsg ( COMMAND_PREFIX + " orderbook " )
self . mcc . pubmsg ( COMMAND_PREFIX + " orderbook " )
elif self . role == " MAKER " :
elif self . role == " MAKER " :
self . offerlist = json . loads ( offers )
self . offerlist = json . loads ( offers )
if fidelity_bond :
self . use_fidelity_bond = use_fidelity_bond
self . fidelity_bond = FidelityBond . deserialize ( fidelity_bond )
self . mcc . announce_orders ( self . offerlist , None , None , None )
self . mcc . announce_orders ( self . offerlist , None , None , None )
self . jm_state = 1
self . jm_state = 1
return { ' accepted ' : True }
return { ' accepted ' : True }
@ -659,7 +657,13 @@ class JMDaemonServerProtocol(amp.AMP, OrderbookWatch):
if len ( to_cancel ) > 0 :
if len ( to_cancel ) > 0 :
self . mcc . cancel_orders ( to_cancel )
self . mcc . cancel_orders ( to_cancel )
if len ( to_announce ) > 0 :
if len ( to_announce ) > 0 :
self . mcc . announce_orders ( to_announce , None , None )
self . mcc . announce_orders ( to_announce , None , None , None )
return { " accepted " : True }
@JMFidelityBondProof . responder
def on_JM_FIDELITY_BOND_PROOF ( self , nick , proof ) :
""" Called by maker client as a reply to a request of a fidelity bond proof """
self . mcc . announce_orders ( self . offerlist , nick , proof , new_mc = None )
return { " accepted " : True }
return { " accepted " : True }
@JMIOAuth . responder
@JMIOAuth . responder
@ -715,15 +719,16 @@ class JMDaemonServerProtocol(amp.AMP, OrderbookWatch):
def on_orderbook_requested ( self , nick , mc = None ) :
def on_orderbook_requested ( self , nick , mc = None ) :
""" Dealt with by daemon, assuming offerlist is up to date
""" Dealt with by daemon, assuming offerlist is up to date
"""
"""
if self . fidelity_bond :
if self . use_ fidelity_bond:
taker_nick = nick
taker_nick = nick
maker_nick = self . mcc . nick
maker_nick = self . mcc . nick
proof = self . fidelity_bond . create_proof ( maker_nick , taker_nick )
d = self . callRemote ( JMFidelityBondProofRequest ,
proof_msg = proof . create_proof_msg ( self . fidelity_bond . cert_privkey )
takernick = taker_nick ,
makernick = maker_nick )
self . defaultCallbacks ( d )
else :
else :
proof_msg = None
self . mcc . announce_orders ( self . offerlist , nick , fidelity_bond_proof_msg = None ,
new_mc = mc )
self . mcc . announce_orders ( self . offerlist , nick , proof_msg , mc )
@maker_only
@maker_only
def on_order_fill ( self , nick , oid , amount , taker_pk , commit ) :
def on_order_fill ( self , nick , oid , amount , taker_pk , commit ) :