Smart contract code is verified by storing smart contract code, identifying a type system for verifying a determinism of the smart contract code based on a first set of security-level values and a second set of security level values, and verifying the determinism of the smart contract code by taking the first set of security-level values as deterministic values and the second set of security level values as non-deterministic values.