def transfer_token(prevtx, privkey, recipient): root = 'receipt:' + pywc.digest_for_tx(prevtx) if prevtx['txnum'] == 0 \ else prevtx['root'] txbody = dict( root=root, txnum=prevtx['txnum']+1, recipient=unicode(keys.pubkey_uri_for_name(recipient)), pubkey=unicode(privkey.publickey().exportKey()), prevdigest=unicode(pywc.digest_for_tx(prevtx)), ) tx = sign_txbody(txbody, privkey) pywc.validate_transaction(tx, prevtx) return tx
import pywebcredits.jsonld as jsonld import pywebcredits.notary from pywebcredits.notary import Notary import json from contextlib import contextmanager import sys import os # Include keys from the demos path sys.path += os.path.dirname(__file__) import keys # Create the notary using a temporary store (a dict) # FIXME use a permanent store notary = Notary(keys.pubkey_uri_for_name('test_notary_0'), keys.privkey_for_name('test_notary_0'), {}) # Load several keys to play with alice_privkey = keys.privkey_for_name('alice') bob_privkey = keys.privkey_for_name('bob') carol_privkey = keys.privkey_for_name('carol') def sign_txbody(txbody, privkey): assert txbody == pywc.parse_txbody(json.dumps(txbody)) tx = jsonld.sign(txbody, privkey) jsonld.validate(tx, privkey.publickey()) return tx