App represents an application that can be used to create, transform or destroy charms (tokens,
NFTs and other instances of app data).
An app is identified by a single character tag, a 32-byte identity and a 32-byte vk
(verification key).
The tag is a single character that represents the type of the app, with two special values:
TOKEN (tag t) for tokens,
NFT (tag n) for NFTs.
Other values of tag are perfectly legal. The above ones are special: tokens and NFTs can be
transferred without providing the app’s implementation (RISC-V binary).
The vk is a 32-byte byte string (hash) that is used to verify proofs that the app’s contract
is satisfied (against the certain transaction, additional public input and private input).
The identity is a 32-byte byte string (hash) that uniquely identifies the app among other apps
implemented using the same code.