Changeset 275

Show
Ignore:
Timestamp:
04/23/09 17:43:38 (3 years ago)
Author:
ocjhb
Message:

redeeming. All basic operations are there

Location:
trunk/sandbox/jhb/oc2
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • trunk/sandbox/jhb/oc2/documentation.py

    r273 r275  
    682682True 
    683683 
     684Lets try to double spend 
     685>>> import messages 
     686>>> bobblank = bobwallet._makeBlank(cdd,mkc) 
     687>>> bobsecret, bobblind = key.blindBlank(bobblank) 
     688>>> blinds = [[mkc.keyId,bobblind]] 
     689>>> bobtid = wallet.makeSerial() 
     690>>> clientside = protocols.TransferRequest(transport,tid,blinds = blinds, coins = coins) 
     691>>> testserver.run_once(port,issuer=issuer,mint=mint) 
     692>>> clientside.run().header 
     693'TransferReject' 
    684694 
    685695 
     
    722732 
    723733 
     734############################################################################### 
     735 
     736>>> bobtid = wallet.makeSerial() 
     737>>> clientside = protocols.TransferRequest(transport,tid,target='foo', coins = [bobcoin]) 
     738>>> testserver.run_once(port,issuer=issuer,mint=mint) 
     739>>> clientside.run().header 
     740'TransferAccept' 
     741 
     742 
     743############################################################################### 
     744 
     745 
     746 
    7247474. References 
    725748 
  • trunk/sandbox/jhb/oc2/mint.py

    r274 r275  
    5454        return key.verifyContainerSignature(message) 
    5555 
    56     def handleMintingRequest(self,authorizedMessage): 
    57           
    58         if not self.validateAuthorization(authorizedMessage): 
    59             return messages.TransferReject() 
    60           
    61         message = authorizedMessage.message 
    62         blinds = message.blinds 
    63         return self._mintBlinds(message) 
    64  
    65  
    6656    def validateCoins(self,coins): 
    6757        problems = [] 
     
    8878 
    8979 
     80    def handleMintingRequest(self,authorizedMessage): 
     81          
     82        if not self.validateAuthorization(authorizedMessage): 
     83            return messages.TransferReject() 
     84          
     85        message = authorizedMessage.message 
     86        blinds = message.blinds 
     87        return self._mintBlinds(message) 
    9088 
    9189 
     
    115113            return reject 
    116114         
     115        for coin in coins: 
     116            self.addToDSDB(coin) 
    117117 
    118118        return self._mintBlinds(message) 
    119              
     119 
     120 
     121    def handleRedeemRequest(self,message): 
     122        target = message.target 
     123        tid = message.transactionId 
     124        coins = message.coins 
     125 
     126        result = self.validateCoins(coins) 
     127        if result != True: 
     128            reject = messages.TransferReject() 
     129            reject.reason = 'coins' 
     130            reject.coins = result 
     131            return reject 
     132         
     133        amount = sum([int(coin.denomination) for coin in coins]) 
     134        for coin in coins: 
     135            self.addToDSDB(coin) 
     136        self.addRedeemed(target,tid,amount) 
     137        return messages.TransferAccept() 
     138         
    120139    def _mintBlinds(self,message): 
    121140         
     
    152171    def inDSDB(self,coin): 
    153172        return coin.serial in self.storage.setdefault('dsdb',[]) 
     173 
     174    def addRedeemed(self,target,tid,amount): 
     175        self.storage.setdefault('redeemed',[]).append((target,tid,amount)) 
  • trunk/sandbox/jhb/oc2/protocols.py

    r273 r275  
    121121        elif requesttype == 'exchange': 
    122122            return self.mint.handleExchangeRequest(message) 
     123                         
     124        elif requesttype == 'redeem': 
     125            return self.mint.handleRedeemRequest(message) 
    123126         
    124127        else: