-图 2. 简化的交易请求讯息-
鉴于账本由一群相互连通的计算机而非诸如银行这类中心化的实体来维护,区块链有以下几个特点:
在我们的银行系统中每个人仅仅了解发生在自己身上的交易和账户余额;而在区块链中每个人都能知道其他所有人的交易。
尽管你通常可以信任你的银行,但比特币网络是分布式的,如果出现问题,你并没有服务台可以咨询也没人能让你起诉。
区块链本身的设计方式使得人们无需相互信任,而是通过特定的数学函数和代码来保证其安全性和可靠性。
我们可以这样定义区块链:让一组相互连接的电脑可以维护一个安全账本、且账本可以不断更新的系统。为了在区块链上完成交易,你需要一个钱包――一个让你储存并交易比特币的程序。由于每个人的比特币应该只能由自己花掉,每个钱包都受到一种特殊的密码学技术的保护,这种技术要用到一对不同但互相关联的密钥:私钥和公钥。
编者注:使用两把不同但相互关联的私钥的办法来自于非对称密码学,即在加密和解密过程中使用两把不同密钥的密码学技术。在这种模式中,私钥即 Private Key,指由行动者自己保管、可以推导出公钥(但不能反向推导出私钥)并且(出于实际需要)不该公开给任何人的密钥,公钥即 Public Key,是由私钥推导出来的、可以公开给任何人的密钥。
公钥密码学一般有两种用途。一种是加密通信,发送者使用接收者的公钥来加密,接收者使用自己的私钥来解密,这样就能保证机密性;另一种是数字签名,签名者用自己的私钥来签名,验证者用签名者的公钥来校验,这样就能保证签名的身份同一性(不能欺诈也不能抵赖)。
……。当 David 想要支付比特币时,他需要广播一条经由他钱包中私钥加密过的信息。由于 David 是唯一一个知道解锁钱包对应的私钥的人,所以他是唯一一个可以花费他持有的比特币的人。网络中的任意节点都可以通过使用 David 钱包对应的公钥解密信息,从而检查交易请求是否确实来自 David 本人。
当你使用你钱包中的私钥来加密一条交易请求信息时,你也生成了一个数字签名,区块链中的计算机通过检验该签名来判断交易请求的来源和真实性。这一数字签名是由你的交易请求和私钥共同生成的一串文本;因此它不能被用于其他交易。如果你更改了交易请求信息中的任何一个字符,那么数字签名就会变得不一样,因此任何攻击者(如果有的话)都不能更改交易请求或交易额。
-图 3. 简化的数字签名-
鉴于交易请求信息需要使用私钥加密,也就是说在支付比特币之前,你总是需要证明你是你的钱包私钥的所有者。由于信息总在加密后才会广播,因此你永远不会泄露你的私钥。
编者注:进阶阅读:
《关于钱包的基础密码学》
《密码学如何重新定义私有产权?》
追踪你的钱包余额
区块链中的每个节点都保存了账本副本。那么,某个节点是怎样知道你账户余额的呢?区块链系统本身并不会追踪余额;它仅仅记录每一笔经过确认与验证的交易。事实上,账本也不会追踪余额,而仅仅追踪比特币网络内广播的每笔交易(图四)。要确定你的钱包余额,你需要分析并验证整个网络内与你的钱包有关联的每一笔交易。
-图 4. 区块链账本-“余额” 的验证基于先前进行的交易。要向 John 支付 10 枚比特币,Mary 需要生成一个交易请求,这一请求包含了 Mary 先前收到比特币合计至少 10 枚的交易链接。这些链接被称为 “输入”。网络中的节点会确认交易额并确保这些 “输入” 暂未被花费。事实上,每当你在交易中纳入某些 “输入” 时,它们在这次交易之后的交易中就会变得无效。上述这些内容会自动在 Mary 的钱包中完成,并通过比特币网络的节点进行二次确认;她只是通过 John 的公钥向他的钱包支付了 10 枚比特币。
编者注:上面谈到的只是比特币等使用 UTXO 形式来表示资金的区块链的特点。并非所有区块链都是如此的,比如以太坊就不是这样。
此文由 中国比特币交易钱包 编辑,未经允许不得转载!:首页 > 比特币行情 » 科普 | 区块链的运作方式(注释版)