6

A runtime release might say the following:

🗳️ system.setCode hash:        0xa6b93db1b6abbe5c94e4fe0969f86eed61d78fda7e0405bfe7b1a2b4d87d4a4f
🗳️ authorizeUpgrade hash:  0x055361413e61894180c2b331b27ecfb34711aa188ae46a8d729001a1dd089d6e
#️⃣ Blake2-256 hash:        0x85cbef6d0e24bf3081fdd1e484fbf0ad510292aeb7d01fa27ae59d705466fd86
📦 IPFS:            QmVqUxwE8zoCZrxVM4nHEQPuQKfZyCMPS65hfojEY3EdME

(this one happens to be as statemine release but they all follow a pattern)

The IPFS is the content addressable hash for IPFS, but what are the other hashes used for?

1 Answer 1

3

The output that is mentioned here and in the release notes actually comes from subwasm and is internally called by srtool.

Historically, srtool used a sha256 to compare WASM runtimes. While it worked for the comparison, sha256 in that context was rather useless and has been removed. It has been replaced by the system.setCode hash which is the scale encoding of <module> / <call> / <data> so in our case system / setCode / runtime.

While also usable to compare runtimes, system.setCode is much more useful and has a direct use since it is also the one required to propose a runtime upgrade on a relay chain directly. It became the de-facto hash that represents a runtime.

The IPFS hash is rather unrelated but convenient as it allows fetching the runtime from IPFS if this runtime is seeded. srtool and subwasm do not seed the runtime on IPFS but compute the hash of the data. So if one or more users seeded this runtime, you can easily fetch it using https://ipfs.io/ipfs/QmVqUxwE8zoCZrxVM4nHEQPuQKfZyCMPS65hfojEY3EdME for the hash mentioned in the OP.

The 2 other hashes (authorizeUpgrade hash and Blake2-256 hash) are utilities that ease the creation of more complex proposals mainly related to sending parachain upgrade messages from the relay chain.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.