Maybe I'm a bit silly about this, but can't linear or affine types be actually useful for blockchain? To represent something which can be used (spent) only once?
Possibly, but linear types only describe the rules that have to be followed by a program. Enforcing those rules has to be done by something somewhere -- typically for most software by a compiler at compile-time or by a runtime at execution time. In blockchain these rules are enforced by the consensus and validation algorithms.