主页 > imtoken钱包地址 > 对比特币区块链的误解

对比特币区块链的误解

imtoken钱包地址 2023-06-09 05:36:43

账户和钱包

首先要明确账户和钱包的区别。

在比特币的世界里,没有账户属于个人的概念,只有比特币钱包,即所谓的比特币钱包,可以简单理解为公钥。由于电子计算机中的任何东西都可以零成本复制,因此必须使用非对称密码学来解决这个问题。

简单地说,钱包的意思是“任何人都可以把钱放进去,但只有你可以把它拿出来”。你之所以比别人有更大的花钱能力,是因为你持有钱包公钥对应的私钥!请记住,私钥是你用来打开钱包和花钱的钥匙。一旦被别人偷走,钱就属于别人了。一旦丢失或销毁,钱包里的钱就等于被销毁了,就像现实中的你一样,撕碎钞票烧掉。

既然没有账户的概念,我怎么知道我还有多少比特币可以花呢?

在比特币世界中,所有可以花费的钱都表示为 UTXO(未花费的交易输出),它与钱包地址相关联。如果你想知道你还剩下多少钱可以花,你只能遍历你拥有的钱包,然后将与钱包关联的 UTXO 加在一起。结果就是你的“账户余额。所有这些信息都分布在全网共识的区块链中存储。这个我以后再说。

在这里我通常会问,我的 UTXO 是从哪里来的?很简单,它来自两个来源:

除了这两种方式,你没有其他方式拥有UTXO。

UTXO是比特币世界的基本消费单位,就像我们日常的人民币面额一样,你不能把一个10元撕成两个半花,如果你用5元买东西,你就得付全10元,然后接受5元找零,当然你也可以说“别找了!”

比特币交易

那么,什么是 UTXO?我们先来看看图片:

这里写图片描述

类似上面的列表是UTXO,它是从自己钱包的交易中生成的。在上面的例子中,仍然以经典的 Alice 和 Bob 为例。

请注意锁定的概念。所谓锁,就是当爱丽丝将比特币转给鲍勃时,只有鲍勃自己可以在未来的某个时间收到并消费。为了保证这一点,比特币系统采用了非对称加密技术,使用 Bob 的公钥将一笔交易的比特币输出锁定到 Bob 的钱包中,这样,根据非对称加密原理,只有 Bob 的私钥可以被解锁。

在这里,我们回顾一下非对称密码学的两个关键点:

好吧,比特币使用了这个原理,但是它并没有使用公钥加密和私钥解密来锁定特定的接收者,而是使用了和传统交易一致的松散被动方案:

下图显示了上面的讨论:

这里写图片描述

和我们在银行里填的很像有人会问,这样合理吗?为什么输入要求很严格,需要各种验证,而输出只需要填写对方的钱包地址,即公钥?

这是非常合理的。想象一下你去银行转账的场景。如果你卡上没有那么多钱,银行肯定不会让你继续转账的。但是,银行不关心你把钱转给谁,也不会帮助你。确认此人是否是骗子,是否还活着。有很多人将钱转入骗子的账户。这不是漏洞。这是最合理有效的解决方案。为什么?

答案只有一句话:能证明一个人是否具有某种属性的,只有他自己!只有他自己可以发起证明自己的行为,然后其他人会确认证明是否有效。之所以有效,是因为他证明了自己和别人验证是一件很简单的事情,反之,别人证明自己是图灵完备的,可能会陷入死循环。

我们知道,比特币系统依托全球七层P2P网络,当你转账给某人确认全网共识时,时间是不确定的,即使你转账给某人,那个人不一定在线,他自己我也无法证明自己是我自己。这在现实中很麻烦,但是在网上很简单。只需取出私钥并检查即可。但是,实时确认有个前提,就是双方必须同时在线,但这并不能保证。 .

无论你把锁和开锁理解为钥匙和锁的故事,还是古代帝王将军之间的虎符故事,其实都是相似的,都在证明自己具有一定的能力或属性。 ,对于比特币的比例,总结为:

在花钱的时候,必须先将封印在区块链中的钱解开,然后将其锁定并发送到目的地。如此循环往复,全世界的比特币交易都是从中本聪的创造开始,输入/输出的解锁/锁定关系形成如下有向无环图:

这里写图片描述

注意:锁定和解锁脚本

在上面的解释中,为了方便,我用私钥签名和公钥签名验证来说明开锁和加锁的过程。在比特币中,这实际上是通过一个叫做脚本的东西来完成的。

注意这里提到的脚本并不是Linux bash之类的脚本,而是一种简单的虚拟机语言,类似于JVM,它内置了微型指令集,可以执行诸如值之类的简单操作操作、比较和签名验证。

所谓的解锁操作,其实就是将解锁脚本和之前的加锁脚本拼接在一起执行。如果结果为TRUE,则认为解锁成功。

你可能会问,为什么加锁机制不直接放公钥,解锁机制不直接放签名?我觉得这是比特币系统设计更灵活的方面。如果只放入公钥和私钥,那么验证只能是签名验证等操作。如果放在脚本中,可以更加灵活。战略。为了安全和简单,将其直接放入机器中不是更好吗?嗯,比特币的加锁和解锁脚本就是这样一台机器——一台虚拟机!

由于本文只是科普性质的介绍,这里不再赘述。

区块链简介

到目前为止,让我总结一下使这个系统工作的要点:

将所有交易订单交给中央银行是一个不错的选择,或者至少是一家可靠的商业银行。这确实是我们几千年来一直沿用的方式,完全依靠中央机构或个人来调解一切,而现在比特币系统采用了完全不同的思路,去中心化。

忘掉UTXO,忘掉交易列表,还是从需求开始,我们的目标是:

区块链来了!

区块链技术之所以能完美覆盖比特币所面临的各种问题,是因为其解决方案并非纯技术,而是采取社会学博弈的激励措施,形成典型的负反馈效应,最终让作恶变得昂贵。

我们来看看什么是区块链:

这里写图片描述

嗯,就是一个链树结构,Intel的网卡队列也是这样设计的。这种互锁的结构,在这个链状结构中哪怕是一点点的修改,都会影响到全身。也许你会说,如果是大事,我会全部改变,那你就错了。我们说哈希解决了这个问题,因为生成的每个块都是数学难题的昂贵解决方案:

这里写图片描述

这意味着没有人可以修改区块链中的每一位。如果这样做,则意味着你要解决上图中的数学问题 n 次,其中 n" role="presentation">nn 是指从修改的块到当前最新块中的块数,解决这个问题一次会消耗巨大的成本,解决n次怎么样...

简单解释一下为什么这个问题很难。

考虑数字0X00FF,它产生的概率是多少?对于 16 位数字,要求高 8 位为 0,低 8 位无关。解法可以通过排列和概率相乘来解决:1212" role="presentation">12121212...这种题难度很大,需要你花钱买昂贵的硬件,夜以继日的运行下注概率,也就是说除了买硬件挖比特币是怎么回事,还要交电费。忍受噪音意味着要么把设备搬到无人区,要么自己买别墅,用地下室……

让我们看看区块链如何保护交易单据。放大上图,我们来看看每个区块包含的内容:

这里写图片描述

我们看到,在区块链中,每个区块其实就是一个容器,里面有几个交易订单,有多少取决于效率和消耗之间的权衡。如果每笔交易使用一个区块,整体消耗会非常大。如果一个区块用于1亿笔交易订单,等待确认的时间会很长,所以……区块包含交易文档,也就是说你不能修改任何已经包含在区块中的交易文档。

交易收据中如何包含区块?

比特币挖矿

当你生成一张交易票并广播到全网时,世界上可能有很多人在做,也就是说交易票是在不断生成的。同时,在世界的某些角落,总是有勤劳的比特币矿工搜索这些交易单据,将它们整合到他们生成的区块中,并将该区块链接到一个独特的区块链。

我们知道,只有交易订单被纳入区块链后,它才会可信和安全,才会因此而产生价值,而正是这些比特币矿工试图将其纳入区块链,并且他们真的在挖掘可以产生价值的东西,所以他们真的在挖掘。

就像《越过关东》,越勤奋越愿意冒险,付出越多,越有可能获得高额回报。请注意,这是可能的,同时您将失去一切。风险,这是一个概率问题。和《越过关东》看起来不同的是,那些淘金者可以保留他们找到的部分黄金,那么比特币矿工努力解决数学问题挖块的动机是什么?

答案很明确。对于技术无法解决的问题,经济将占据主导地位:

看来问题已经解决了。然而,矿工们不应该像这样工作,而应该采取一些小动作来赚取更多。抛开勇气和胆量之间的差异,假设所有人都一样,是什么阻止了这些小动作的发生?技术上的困难阻碍了吗?

在我看来,技术问题是最简单的问题,最难的是社会学和心理学最难的问题。以上两者都可以归结为一个经济问题:我从做坏事中得到什么?

社会学博弈论

去中心化最根本的特点就是消除了信息不对称!犯罪的根源在于利用信息不对称。推而广之,结构越扁平,在空间维度上越难看到系统中的低熵体,但时间长了,低熵体必然会出现。我想,低熵体来自时间维度,而不是空间维度!扁平结构越大,低熵体形成的速度越快挖比特币是怎么回事,因为盘子越大,乌合之众所能提供的能量就越多……

如果你知道的信息和我一模一样,我不会冒险去做伤害你我的事情,因为这是最糟糕的选择!为什么?

如果你是一个诚实的人,那么我会得到好处,但这对我来说是唯一的好处,如果你像我一样讨厌,那么我们都输了,如果你比我更讨厌,我就是净亏损。计算概率,值得吗?反之,如果大家都按规矩办事,就能得到稳定的收益,既是双赢的,也是自利的!

这不是零和游戏。据说比特币的技术原理和激励机制有助于博弈偏差。人们自然会为了这种激励而做诚实的事情,不是因为人类一开始就天生好,而是因为:

哈哈,很帅,不用惩罚!

比特币如何抵御攻击?

比特币旨在让攻击者在不使用警察和军队等暴力机构的情况下感到攻击毫无意义。事实上确实如此。

接下来,面对技术白痴,唯一能用的手段就是技术手段,这里不再赘述。详情请参考其他文章或我去年写的这篇文章:

“比特币与区块链科普”中的“区块链技术如何避免攻击”部分:

以下只是典型攻击行为的几个示例: