What is the function of Daml Drivers? Can they transpile to other languages?

my understanding is that daml driver sits between the persistence layer and “translates” daml execution results into what the underlying persistence layer understands. Persistence can be a ledger like corda , fabric etc.
Daml engine executes daml and results are written to the ledger via daml driver. Is this correct understanding?
Also in some diagrams I’ve seen references to EVM, WASM and MOVE which looks like that if DAML execution can somehow be converted into EVM execution? Is that possible,? In case I have existing solidity smart contract , do I have to rewrite that in DAML to benefit from DAML interop and portability or somehow I can keep my solidity code running as is and “magically” DAML can be integrated at a layer above. Sorry for the long and somewhat ambiguous question but I couldn’t figure it out. Any help would be much appreciated, many thanks

1 Like

A Daml driver is how we refer to an implementation of the Ledger API for a specific persistence solution (e.g. the Daml Driver for PostgreSQL – which is self-explanatory).

The Daml engine is the component that operates within a Daml driver which evaluates a command coming through the Ledger API into a transaction, based on some known compiled Daml code. This can happen multiple times, as distributed actors can run the engine to validate a transaction before persisting it.

The Daml engine only evaluates Daml-LF (the output of the Daml compiler). To the best of my knowledge there is no compiler from Solidity to Daml-LF, so you would have to write your smart contract in Daml.


Thanks very much , clear now :slight_smile: