# What goes into a package hash?

**URL:** <https://forum.canton.network/t/what-goes-into-a-package-hash/5383>\
**Category:** App Development\
**Tags:** daml\
**Created:** [October 6, 2022, 2:37pm UTC](https://forum.canton.network/t/what-goes-into-a-package-hash/5383 "2022-10-06T14:37:18Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![Gary\_Verhaegen](https://yyz2.discourse-cdn.com/flex034/user_avatar/forum.canton.network/gary_verhaegen/32/81_2.png) [@Gary\_Verhaegen](https://forum.canton.network/u/Gary_Verhaegen)\
**Post date:** [October 6, 2022, 2:51pm UTC](https://forum.canton.network/t/what-goes-into-a-package-hash/5383/2 "2022-10-06T14:51:07Z")

</div>

It’s a hash of the package (after compilation to Daml-LF) and all of its dependencies (also compiled to Daml-LF first, if they’re not “data-dependencies”).

The SDK version the code is compiled with is also the version of the Standard Library that it gets compiled against, which is why that changes the hash, just like upgrading any other dependency. Depending on the specifics of the code and the versions of the compiler, it’s also possible that the compiler might be generating different LF, which obviously would also change the hash.

Perhaps less obviously, the hash also includes the package name (the project name set in `daml.yaml`) and version (also set in `daml.yaml`).

We work very hard to make sure that, for a given source tree (including dependencies & `daml.yaml` configuration) and a given compiler version, the package hash is reproducible. That means it does not include any kind of “time-of-compilation-timestamp”, and it does not depend on the OS you compile on (we actually have a test for that).

---

_[View the full topic](https://forum.canton.network/t/what-goes-into-a-package-hash/5383)._
