把比特币发给其他人需要先发布意图,节点扫描整个比特币网络来验证这个请求。其中包含验证是否有想发送的比特币,然后就是有没有发送给别人。一旦该信息被确认,这个“块”被附加到上一个块中,交易不能被撤消或篡改。

如果我想把我的一些比特币发送给你,我就会发布我的意图,而节点扫描整个比特币网络来验证我的请求。其中包含验证我是否有想发送的比特币,然后就是有没有发送给别人。一旦该信息被确认,我的交易就会被包含在一个“块”中,这个“块”被附加到上一个块中,因此“区块链”这个术语就会被包含进来。交易不能被撤消或篡改,否则它将意味着重新执行后面的所有块。

比特币交易是如何运作的  第1张

复杂一点的分析

我的比特币钱包实际上并没有持有我的比特币。它所做的是保存我的比特币地址,它记录了我所有的交易,因此我的余额。这个地址——一个长串的 34 个字母和数字——也被称为我的“公钥”。我不介意整个世界都能看到这个序列。每个地址/公钥都有对应的 64 个字母和数字的“私钥”。这是私人的,我保密和安全是至关重要的。这两个键是相关的,但是你不可能从我的公钥中找到我的私钥。

这很重要,因为我从比特币地址发出的任何交易都需要用我的私钥“签名”。为了做到这一点,我将我的私钥和交易细节(我想要发送多少比特币,以及谁)放入我的电脑或智能手机上的比特币软件中。

有了这些信息,程序就会吐出一个数字签名,然后发送到网络进行验证。

这个交易是可以验证的——也就是说,我可以确认我拥有的比特币是我转账给你的,而且我还没有把它发送给其他人——通过将签名和我的公钥(每个人都知道)插入比特币程序。这是比特币的一个天才部分:如果签名是用与那个公钥相对应的私钥进行的,程序将验证该事务,而不知道私钥是什么。非常聪明。

该网络随后证实,我以前从未在我的地址历史上运行过比特币,因为它知道我的地址(我的公钥),而且因为所有交易都是在比特币分类账上公开的。

更复杂的分析

一旦我的事务被验证了,它就会被包含到一个“块”中,还有一些其他的事务。

一个简短的 detour 来讨论什么是“散列”,因为它对下一段很重要:哈希是由一个“哈希函数”产生的,它是一个复杂的数学方程,可以减少任何数量的文本或数据到 64 字符的字符串。它不是随机的-每次你放入特定的数据集通过哈希函数,你会得到相同的 64 字串。但是如果你改变了一个逗号,你就会得到一个完全不同的 64 字字符串。这整篇文章可以被简化成一个散列,除非我更改、删除或添加任何内容到文本中,同样的散列可以一次又一次地生成。这是一种非常有效的方法来判断是否发生了更改,以及区块链如何确认事务没有被篡改。

返回到我们的块:每个块包含了前面块的散列,作为其数据的一部分。这就是为什么它是链的一部分,也就是"区块链"因此,如果前一个块的一小部分被篡改,当前块的散列就必须改变(记住,哈希函数输入中的一个微小的变化会改变输出)。因此,如果您想要在前面的块中更改某些内容,那么您还必须在当前块中更改某个东西(散列),因为当前包含的内容不再正确。这是很难做到的,特别是当你已经走到一半的时候,可能会有另一个块在当前的顶部。你也必须改变这个等等。

这就是为什么比特币实际上是防篡改的。我说实际上,因为这不是不可能的,只是非常非常非常非常困难,因此不太可能。