Etiket: self-enforcing smart contracts