Example #1
0
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
Example #2
0
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