在我最近的两篇文章中,构建了一个简单区块链的一些基本功能。在你看这篇文章之前,我建议你先看看之前的文章。您可能已经知道,区块链是一个分散的和加密安全的数据库。在这个分散的网络中,任何参与者都有一个地址,我们称之为公钥,它与所谓的私钥有很强的连接。存储在区块链中的数据可以是任何东西,但在大多数情况下,这些数据集是事务。这就是我们使用加密货币的地方——加密货币仅仅是一个区块链网络,其数据就是事务。在本文中,我想更深入地研究这个领域,并向您展示加密货币的实际工作方式。
跟踪资金——以账户为基础的分类账系统
在区块链技术中,有两种可能的方法来跟踪网络中的参与者所拥有的资金。比特币网络使用的系统是所谓的基于交易的分类账。我将在另一篇文章中集中讨论这个问题。最直观的使用方式是基于帐户的分类账。简单地说,在这个系统中,每个用户都有一个具有以下属性的帐号:
account = {publicKey,Funds}
因此,该帐户是一个包含用户及其资金的公钥的数据集。存在的每个帐户都存储在块链中。资金将随着每一个正在生成的块而更新。如果一个用户想要将他的一些硬币转移到另一个公钥,他就会生成一个事务。交易是一个包含以下资料集:事务 = {发件人、收件人、资金、签名}变量发送者代表资金发送者的公钥,而变量接收者代表接收代币的公钥。可变基金指的是被转移的代币数量。签名是使用椭圆曲线密码术生成的,并证明私钥确实是由发送代币的人拥有的。如果您对这个过程不再熟悉,请再次查看一下了解如何编写椭圆曲线密码术。一旦交易数据集位于区块链的最新块中,资金就会被正式转移。账户分类帐系统中的区块结构可能是这样的:
每个事务数据集都包含发送方的公钥、接收方的公钥、所转移的资金数额和发送方的签名。帐户数据是一个帐户列表,其中每个帐户只是一个只包含一个公钥和资金数额的数据集。
网络中的事务
用户生成事务后,将该数据集发送到整个网络,以便对其进行验证。理论上应该是这样的。实际情况是一个由完全节点和轻节点组成的网络。这些完整的节点是网络参与者,负责收集事务数据集、对它们进行验证并将它们添加到它们生成的块中。轻节点只是网络的用户,它们发送和接收资金。因此,产生事务的轻节点将事务数据集发送到整个节点,然后对其进行验证。确认程序要求整个节点查看签名是否有效,如果汇款人在钱包中的资金数额足以转移硬币。因此,他得到区块链的最后一个块,并查找带有用户公钥的帐户,以检查自有资金的价值是否至少与所转移资金的价值一样高。如果签名和基金检查结果为正值,发送方和接收方的帐户将被更新,交易将被添加到最新的块中。在一个实际生成该块的网络参与者收集了足够的事务之后,他将该块发送给块链中的每个人。其他网络参与者检查块中的数据及其有效性。在得到每个节点的接受之后,区块链就会被更新,资金就会被转移。资金转移程序见下表。
因此,现在您可能已经了解了如何使用区块链技术处理加密货币的基本知识了。在下面的文章中,我们将编写一个基于帐户的分类帐系统。