通常比特币都是以虚拟货币的概念出现在大众眼前,实际上比特币是第一个真正的区块链“平台”,利用它去中心化、不可篡改、可追溯等特点不光可以实现多种交易模式(如点对点交易、多重签名交易等),还可以实现虚拟货币以外的其他功能(如数据染色等,这些功能内容不是本节讨论范畴)。
那比特币究竟是如何实现多种多样的功能的呢?
最重要的原因是比特币的交易过程是非静态的,而是通过锁定脚本(locking script)与解锁脚本(unlocking script)实现动态的交易过程。今天我们主要来探寻比特币在普通交易中锁定脚本与解锁脚本是如何发挥作用的。
首先,我们先了解比特币交易脚本的特性:
1.图灵非完备
比特币交易脚本故意使用一种图灵非完备的语言,没有循环或复杂流程控制,减少了灵活性,但极大的提高了安全性。
2.无状态验证
比特币交易脚本是无状态的,所以一个脚本能在任何系统上以相同的方式执行,如果你的系统验证了一个脚本,可以确信的是每一个比特币网络中的其他系统也将验证这个脚本,这意味着一个有效的交易对每个人而言都是有效的,而且每一个人都知道这一点。
3.基于堆栈的语言
堆栈语言极其简单,也增强了比特币的安全性。
比特币交易P2PKH(Pay-to-Public-Key-Hash)解锁过程示例
比特币最基本的交易类型为P2PKH,顾名思义交易付款的对象是公钥哈希
解锁脚本:<Sig> <PubKey>