Migrate¶
Migrating from dazl v5 from v4
Library Initialization¶
Old API:
# original dazl API
with create_client(participant_url='http://localhost:7600', parties=['Alice', 'Bob']) as manager:
alice_client = manager.client('Alice')
bob_client = manager.client('Bob')
# register some event handlers for Alice and Bob
manager.run_forever()
New API:
# asyncio-based API
network = Network()
network.set_config(url='http://localhost:7600')
alice_client = network.aio_party('Alice')
bob_client = network.aio_party('Bob')
# run
alice_client.run_forever()
Initialization Event Listeners¶
Arguments to event listeners have changed in order to provide more information about events and for consistency across event handlers.
Initialization has been collapsed into a single event, where formerly, there were two events
(on_init
and on_init_metadata
):
Old API:
# original dazl API
client = manager.client('Some Party')
client.on_init(lambda: print('Ledger initialization is happening')
client.on_init_metadata(lambda store: print(f'Ledger package store: {store}'))
New API:
# asyncio-based API
client.add_ledger_init(lambda event: print(f'Ledger initialization with package store: {event.store}'))
Ready Event Listeners¶
Old API:
# original dazl API
client = manager.client('Some Party')
client.on_ready(lambda party_name, client\_: print(f'Party {party_name} is ready'))
New API:
# asyncio-based API
client = network.aio_party('Some Party')
client.add_ledger_ready(lambda event: print(f'Party {event.party} is ready'))
Create/Archive Event Listeners¶
Create and archive events now take a single parameter, called event
by convention, that contain
the contract ID, contract data, and additional metadata about the event, such as the time of
execution, ledger ID, and access to the active contract set.
Old API:
# original dazl API
client = manager.client('Some Party')
client.on_created('Some.Asset', lambda cid, cdata: print(cid, cdata))
client.on_archived('Some.Asset', lambda cid: print(cid))
New API:
# asyncio-based API
client = network.aio_party('Some Party')
client.add_ledger_created('Some.Asset', lambda event: print(event.cid, event.cdata))
client.add_ledger_archived('Some.Asset', lambda event: print(event.cid))