Checksums
Every figure for the release files, the signature, the law’s digests and the registry contract can be recomputed yourself.
Release files
Version 0.1.5 has six release files, with their checksums in the release list SHA256SUMS.txt:
.dmg35bbd7df4bd89845ee63786b1339fed0a5ce564f0dbd890a5281e3957ef68751.pkgfbeb29373dc40877ebd3531810e0e5447b2fbf0517dde4631c66af54e11d9d3e.zip6347110c57bfd7aa6d6c941ef6a4f030d9f2c79a371e8a0dced475e2eca62062.deb426ee6cd23fa4813fcd85995f54c343714f658c1daa88284f11912b95fbfd0c0On each system, compute one file and compare it with the table:
- macOS
shasum -a 256 ZIKARON-0.1.5-macos-arm64.dmg- Linux
sha256sum zikaron-desk_0.1.5_amd64.deb- Windows
- PowerShell prints the value in capitals; compare it without regard to case.
Get-FileHash ZIKARON-0.1.5-windows-x86_64.zip -Algorithm SHA256
On macOS and Linux you can also put the release list and the downloaded files in one folder and check them all at once:
- macOS
shasum -a 256 -c --ignore-missing SHA256SUMS.txt- Linux
sha256sum -c --ignore-missing SHA256SUMS.txt
The third-party licences of the three platforms, THIRD-PARTY-LICENSES-macos.txt, THIRD-PARTY-LICENSES-linux.txt and THIRD-PARTY-LICENSES-windows.txt, are published separately, byte for byte the same as the copy in each package, and stay outside the release list. The drop zone on the download page does the same check: it computes the SHA-256 in the browser and compares it with the list.
Signature
On macOS the app and the dmg are signed with Kaptonia’s self-signed certificate; the pkg is checked by its SHA-256. Once installed, look at the app’s signature: Authority in the output should be Kaptonia, and Identifier should be com.kaptonia.zikaron.app:
codesign -dvv /Applications/ZIKARON.appThen look at the signing requirement; the string after certificate leaf is the certificate’s SHA-1:
codesign -d -r- /Applications/ZIKARON.appTo compute the certificate’s SHA-256, extract the certificate first:
codesign -d --extract-certificates /Applications/ZIKARON.app
shasum -a 256 codesign0The dmg’s own signature can be checked the same way: codesign -dvv ZIKARON-0.1.5-macos-arm64.dmg.
The Windows zip and the Linux deb and AppImage are unsigned; check them by their SHA-256. On first start Windows says “Windows protected your PC”; click “More info”, then “Run anyway”. On Windows 11 with Smart App Control on, unsigned programs are blocked outright, so turn it off first.
Zikaron record
The code of each release is one commit. At release, the project records that commit and each release file’s fingerprint in its Zikaron ledger and anchors them on Ethereum mainnet: written once and final, with a block time; the “Zikaron record” column of the download table links to that transaction. Before 0.1.5 was published, these fingerprints were recorded as ten records and anchored in the two transactions below, the deb package’s in the second:
The ten records in the ledger (entry number, record name and content fingerprint):
| Entry | Record | Content fingerprint |
|---|---|---|
| #72 | ZIKARON-0.1.5-macos-arm64.dmg | 0x35bbd7df4bd89845ee63786b1339fed0a5ce564f0dbd890a5281e3957ef68751 |
| #73 | ZIKARON-0.1.5-macos-arm64.pkg | 0xfbeb29373dc40877ebd3531810e0e5447b2fbf0517dde4631c66af54e11d9d3e |
| #83 | zikaron-desk_0.1.5_amd64.deb | 0x426ee6cd23fa4813fcd85995f54c343714f658c1daa88284f11912b95fbfd0c0 |
| #75 | ZIKARON-0.1.5-x86_64.AppImage | 0x80a24e2b25bcc8178f0643ab528541684fc7905bfe731f07a01ae5b4b633b37f |
| #76 | zikaron-0.1.5-src.tar.gz | 0xb30c7a2d7f0af2493e513ca06a06a7260d01b348bf60ead6e31909e4604523ef |
| #77 | ZIKARON-0.1.5-windows-x86_64.zip | 0x6347110c57bfd7aa6d6c941ef6a4f030d9f2c79a371e8a0dced475e2eca62062 |
| #78 | Zikaron-Desk-0.1.5-Windows.exe, that is zikaron-desk.exe in the zip | 0x64dc07db433f2bf0563c5f350b63934f4c534c88f9d46eabc83e76e310c011c9 |
| #79 | Zikaron-CLI-0.1.5-Windows.exe, that is zikaron.exe in the zip | 0x12f32717b501dca2a4c8410f9cb64dbaa72efd20b27411124ab89e9f45df8b09 |
| #80 | Zikaron 0.1.5 SHA256, that is SHA256SUMS.txt | 0xa7e832545d5d357c5d0bfb82ad18bf7224f6eb077967ffd0155ea4453ef42416 |
| #81 | Zikaron 0.1.5 github repo, that is commit 7d44f97 | 0x0ced9dcb1c6ef8867a9c193d5eb48a03b209609d9710287fa3baee7609a57163 |
A file’s content fingerprint is the SHA-256 of its bytes; the two Windows programs each get a record of their own, to check one by one after unpacking the zip. The repository’s fingerprint is the SHA-256 of the current commit object; in a clone of the repository, run:
git cat-file commit v0.1.5 | shasum -a 256What is anchored on chain is the entry IDs of these ten entries (the SHA-256 of each entry’s bytes), and the entries record the fingerprints above. Each entry’s ID:
The law’s digests
Both laws are frozen, and their digests are written in the law texts. Unpack the source and compute them yourself; the results should match the table:
cd zikaron-0.1.5/base/zikaron-conformance
./criterion-digest.sh
./criterion-digest-kit.shEach script reads a few Python source files and computes one digest; change any byte of them and the digest changes. See The law and the conformance suite.
The registry contract
The registry contract does one thing: it receives a fingerprint and emits an event. The app comes with four deployments, of which Ethereum mainnet, Arbitrum One and OP Mainnet are the same build at the same address. Read the code on chain and compute its keccak256, and the result should equal the code hash below:
cast keccak $(cast code <contract address> --rpc-url <node>)How to recompute the hash from source is under The registry contract and anchoring.