区块链与比特币(1)
比特币协议的五大核心特征包括:数字签名(Digital Signature),公共账本(the ledger is the currency.) ,去中心化存储(Decentralize), 工作量的证明(Proof of work),区块链(block chain)。
首先是电子签名,在比特币协议中,只认可具有合法签名的交易,并且会将交易广播到网络中的所有用户。这里的数字签名技术就是采用一个公私钥对,私钥用于签名加密过程,用户私有本地保存,公钥则广播公开,提供给网络中的其他用户来解密验证。交易的签名人是当前bitcoin的所有者。
注意这里的签名过程与非对称加密的过程是不同的,公私钥的作用恰好相反。
签署函数( 信息,私钥 )= 签名 验证函数(信息, 签名,公钥)=正/否
这里所使用的加密解密函数没有具体规定,比较的过程就是看签名与信息是否对应的上。 但是加密的信息不是交易记录本身,而是对交易信息使用SHA256加密算法,生成的固定为256bit长度的哈希值,通常会在每一笔交易记录中添加交易所独有的信息,如ID等,增加原始信息的独特性,区分多笔相同内容的交易,也可以避免因为交易内容长度较短而容易复制的情况。
公共账本,因为每名用户的比特币具有不可超支性,所以在交易发生之前,必须知道完整的交易历史。账本是分布式放置的,每名用户均有一个账本的记录,每次发生交易后,比较账本记录后,将交易记录在账本上后广播给其他用户知晓。
去中心化,只要超过50%认可了某个账本的记录,那么经过广播后此账本内所包含的交易内容就会被认为是真实发生的。既没有集中存储管理账本信息的用户,也不存在准确的账本版本,只要经过了网络内用户的认可就是真实的账本。
工作量的证明,这个利用了hash函数SHA256的不可逆的特性,输入任意长度的信息,输出为256bit长度的摘要值。输入值的微小变化会引起输出摘要的巨大变动,因而无法使用摘要对输入信息进行预测估计,当前计算条件下逆向计算是不现实的。

因而我们可以利用这个特性,在每个账本的末端附上某个数字使得整个账本记录信息经过SHA256后的摘要值,前N位为0,这个N可能会不断变化,因为无法提前预估摘要值,只能挨个数字进行尝试,这个过程较漫长,得到的结果就可以用作自己工作量的体现,其他用户检验的时候只需进行一次SHA256算法既可得知是否成立。