  Smart contracts are crucial elements of decentralized technologies, but they
face significant obstacles to trustworthiness due to security bugs and
trapdoors. To address the core issue, we propose a technology that enables
programmers to focus on design-level properties rather than specific low-level
attack patterns. Our proposed technology, called Theorem-Carrying-Transaction
(TCT), combines the benefits of runtime checking and symbolic proof. Under the
TCT protocol, every transaction must carry a theorem that proves its adherence
to the safety properties in the invoked contracts, and the blockchain checks
the proof before executing the transaction. The unique design of TCT ensures
that the theorems are provable and checkable in an efficient manner. We believe
that TCT holds a great promise for enabling provably secure smart contracts in
the future. As such, we call for collaboration toward this vision.
