我们现行的货币流转系统里,在互联网上发生的货币转移(无论是与我们银行账户可支取纸币等值的电子化货币还是虚拟游戏币等)都是依赖于一个中心机构的,比如银行、支付宝、QQ游戏运营中心;而要实现数字货币在互联网上点对点的直接交易,远比我们直觉以为的要困难的多,可以试想下,如果没有银行这个中心机构为每个用户核实记录账户资金的变动,那我们如何能够实现转账这个行为?甚至如何拥有一个自己的账户?
比特币区块链则可以理解为一个账务系统,一段时间内的交易信息被打包记入一个数据存储单元(区块)中,给这个区块盖上时间戳,一个个区块按照时间顺序链接起来形成一个区块链账本。
当然,事实上,比特币区块链技术和其运行原理很复杂,理解它,我们可以先考虑——要实现电子货币的点对点传输必须解决哪些关键的问题呢?
1. 怎么认证交易账户的身份?
即你只有证明你是你,你才可以对你账户内资金进行支配(现行中心化系统中,中心单位通过在其总账中为用户设置账号和密码来进行确认)。
比特币区块链系统中,身份认证通过一对密钥完成,每一个账户创建时自动生成一对公钥和私钥,公钥对外可见,私钥仅由账户拥有者自己掌握。这对密钥的特点是,其中一个密钥加密过的信息,有且仅有另一个与之配对的密钥才能解密,而且用其中一个密钥无法推算出另一个密钥。
交易过程中,支付方A使用私钥对既定信息进行加密,交易的记录者可使用公开的A的公钥对加密内容进行解密验证(如下图),来判断其是否为A账户真实拥有者。类似地,支付方A用目标收款方B的公钥加密既定信息,收款方B需使用自己的私钥解密验证才能获得收款资格。区块链中所说的数字签名,就是指这样用唯一匹配的私钥和公钥完成加密解密验证来证明身份的行为。
2. 怎么确认一笔交易是不是有效?
其核心在于支付方如何证明自己的账户内有足够的资金进行支付(现行中心化系统中,中心单位在其总账中为每个账户设置余额项,一笔收入之后余额增多,一笔支出以后余额减少,满足支出额小于账户余额便可以执行支出)。
比特币区块链中的验证机制比较独特,并不对支出账户的总余额进行查验,而仅需证明支出账户中至少还存在需支出额度即可,比如A需要支出20个比特币给B则只需要证明——自己的账户在历史交易中曾经收到过20个比特币且这20个比特币没有被支出过。可事实上历史交易中不一定有一笔还没被消耗的收入正好是20个比特币,如果是存在一笔25个比特币的收入当然也可以,那其交易信息记录为: