Skip to content

Commit

Permalink
New test driver with modified transfer
Browse files Browse the repository at this point in the history
  • Loading branch information
glenn-chen committed Nov 10, 2023
1 parent 6c3364e commit 25e5ce4
Showing 1 changed file with 81 additions and 0 deletions.
81 changes: 81 additions & 0 deletions test_driver_2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
#%%

from resdb_driver import Resdb

db_root_url = "http://127.0.0.1:18000"

db = Resdb(db_root_url)
from resdb_driver.crypto import generate_keypair

alice, bob = generate_keypair(), generate_keypair()
#%%

# create a digital asset for Alice
game_boy_token = {
"data": {
"token_for": {"game_boy": {"serial_number": "LR35902"}},
"description": "Time share token. Each token equals one hour of usage.",
},
}

#%%

# prepare the transaction with the digital asset and issue 10 tokens for Bob
prepared_token_tx = db.transactions.prepare(
operation="CREATE",
signers=alice.public_key,
recipients=[([bob.public_key], 10)],
asset=game_boy_token,
)

#%%
# fulfill the tnx
fulfilled_token_tx = db.transactions.fulfill(
prepared_token_tx, private_keys=alice.private_key
)

#%%
db.transactions.send_commit(fulfilled_token_tx)

#%%
transfer_asset = {"id": fulfilled_token_tx["id"]}
output_index = 0
output = fulfilled_token_tx["outputs"][output_index]
transfer_input = {
"fulfillment": output["condition"]["details"],
"fulfills": {"output_index": output_index, "transaction_id": transfer_asset["id"]},
"owners_before": output["public_keys"],
}

#%%

# Bob transfers 5 tokens to Alice, and is left with 5 tokens
# The sums of amounts in recipients must match the input amount (10)
prepared_transfer_tx = db.transactions.prepare(
operation="TRANSFER",
asset=transfer_asset,
inputs=transfer_input,
recipients=[([alice.public_key], 5), ([bob.public_key], 5)],
)

#%%

fulfilled_transfer_tx = db.transactions.fulfill(
prepared_transfer_tx, private_keys=bob.private_key
)

#%%

sent_transfer_tx = db.transactions.send_commit(fulfilled_transfer_tx)


# %%
## replace `testId` with the txid for the transaction to retrieve
db.transactions.retrieve(txid=sent_transfer_tx)

#%%
# TODO valide a tx object
# from resdb_driver.validate import Transaction

# t = Transaction.from_dict(fulfilled_token_tx)
# t.validate()

0 comments on commit 25e5ce4

Please sign in to comment.