主页 > imtoken中文版app > bitcoin:比特币的简单python实现,主要介绍比特币的底层技术。

bitcoin:比特币的简单python实现,主要介绍比特币的底层技术。

imtoken中文版app 2023-06-10 05:37:43

比特币期货对比特币影响_比特币区块和比特币的区别_比特币UTXo

比特币项目的简单python实现,使用python实现一个完整的区块链项目

注:本项目为业余项目。 它并不打算完全实现所有的比特币协议,甚至还增加了一些不同的地方。 比如最近想用V8+llvm实现虚拟机。 为什么这么说? 一些中国人真的很担心他们的素质。 上来就说没有完全领悟,狂喷。 这里特别说明一下,不为巨魔服务的请绕道巨魔!

从零用python实现一个简单的比特币项目,写出一个完整的区块链。

项目架构介绍

比特币UTXo_比特币期货对比特币影响_比特币区块和比特币的区别

下面是整个项目的架构图,这里从下到上对下面的图进行说明

架构图

1. Crypto 该模块是BTC链上使用的密码学相关内容,主要包括Base58、hash、elliptic加密算法。 区块链中一个非常核心的就是加密技术,所以Crypto在整个技术架构中占有非常重要的地位。 它是整个区块链技术的基石,承载着整个区块链项目的顺利运行。

2. Net是区块链的点对点网络部分,即P2P(Peer-to-Peer)网络。 区块链技术是一种去中心化技术,不同于传统的中心化技术架构。 它不是B/S(Brower/Server)也不是C/S(Client/Server)模型,它的节点是完全平等的,但是对于不同的链,或者基于不同的共识算法,它的节点所扮演的角色是不同的。 比如有的节点作为矿工节点负责挖矿,有的节点负责钱包轻节点(spv),有的是全节点(存储完整的链数据),所以网络也是支撑整个技术的底层区块链技术中的架构。

比特币区块和比特币的区别_比特币UTXo_比特币期货对比特币影响

3.存储存储,存储的重要性想必大家都很清楚了,这里还是多说几句。 无论是在中心化的互联网技术架构中,还是在传统行业的技术架构中,或者任何其他人类活动中,存储一直是一个非常重要的话题。 大家都知道,人脑是最早的存储“设备”。 当初人们还没有发明会计工具的时候,是人脑负责这个功能的。 随着人类社会的发展和进步,人们储存知识的方式和手段越来越丰富,直到现在主要还是以电子设备为主。 当然,在区块链的世界里,存储也是绕不开的话题。 甚至可以说,在去中心化的架构中,存储是一个新的机遇和挑战。 目前比特币链上的数据量并不大,主要有内存存储、kv数据库存储等几种主流存储方式。 近年来,随着区块链技术的发展,更多数据的产生和上链,新的存储解决方案也进入了大众视野,其中最具代表性的就是IPFS

4、说完基础部分,我们终于要进入比特币的核心部分了,因为前面的部分是基础部分。 首先我们从BlockChain说起,BlockChain,嗯,没错,这就是我们整个技术架构的主角,因为BlockChain就是区块链(哈哈,废话多多)。 在比特币白皮书的描述中,为了达到去中介化的目的,即在没有第三方参与的情况下解决双付问题,提出了两个非常重要的概念:

链的本质是数据结构中的链表。 前一个Node指向下一个Node,但是这个链表是一个特殊的链表,它的设置是不能改变的。 它是一个只能相加的链表。 并且永远只认最长的链,其他的链都是假的,只有最长的链是真的。

如图所示,一条链包含了很多信息。 首先,一条链是由很多Block组成的,也就是它有很多块。 相应地,在链表中,一个链表是由许多节点组成的。 而每个节点都包含很多信息,最重要的四个信息分别是Timestamp(时间戳)、Hash(自己的哈希值)、PrevHash(上一个区块的哈希值)、Transactions(交易信息),这几个都是值非常重要,非常重要,必须牢记在心。

比特币期货对比特币影响_比特币区块和比特币的区别_比特币UTXo

相信你也看到了,我把Transactions写成了复数。 是的,一个区块可能包含很多交易信息。 这些交易信息也是比特币可以用于支付和交易的主要原因。 在比特币中,一笔交易由三个主要信息组成:

说到这里,我们先暂停一下,先了解一下Address,也就是地址。 在传统金融领域,也就是我们现在使用的各种银行账户,或者说支付宝账户,都是账户模式,也就是说一个人对应一个或者多个账户,是通过实名制进行的. 它完全由第三方中介机构,即银行控制。 因为我们相信银行的信用,所以我们不怕把自己的个人信息泄露给银行,也不特别担心银行会泄露我们的个人信息。 当然,随着人们个人隐私意识的升级以及银行等中介机构的强大,这种信任也面临着危机。

让我们回到比特币。 在比特币中,使用了前面提到的椭圆加密算法,它使用椭圆加密算法生成公钥和私钥。 也就是我们银行账户对应的账号和密码。 密码由我们亲自保管,公钥是公开的,任何人都可以查看,包括这个账户里的钱,转账记录等等,任何人都可以查看。 看到这里,有些人可能开始感到鼓了。 ,既然我的账号是公开的,是不是说我去东莞当小模特就可以被发现了? 没错,是的! 但是这里有一个很微妙的设计,就是这个地址实际上并不对应一个人,也就是说别人可以知道这个地址做了什么,但是不能知道是你。 (当然,如果你公开住址+身份,那你就准备跪搓衣板了!) 哈哈,我知道,说完这句话大多数人都释然了。

说完地址,我们继续说上面的交易。 事实上,每一笔交易都与地址直接相关。 也可以说交易信息自然而然的涵盖了交易地址。 当然,你可能会在比特币交易信息中看到它。 不会,因为背后有密码学,这里就不展开了。 简而言之,你知道你的每一笔交易都会与你的地址直接相关,当你进行交易时,会触发UTXO(比特币中特有的一些交易模型)来验证是否有足够的余额并确认是否顺利交易的进展,所有这些东西结合起来生成一个比特币链。 你觉得很厉害吗? 好吧,更强大的还在后头。

比特币区块和比特币的区别_比特币UTXo_比特币期货对比特币影响

5.重点来了。 前面说了UTXO是用在交易中的,那么UTXO到底是什么? UTXO 是比特币特有的交易模型。 防止你的交易出错,验证你的账户余额等一系列的事情都是基于UTXO。 UTXO官方的解释是:Unspent Transaction输出。 如何翻译? 你可以自己查字典。 我觉得翻译的很奇怪,就直接UTXO了,那么UTXO怎么理解呢? 前面说了一笔交易会有输入和输出。 实际上,每进行一笔交易,都会遍历整个链条,找到这个账户下的所有交易,然后比较所有的输入和输出。 如果还有剩余输入,也就是说你还有钱可以花,而你交易的金额刚好小于等于你剩余的支出,那么ok,你可以进行这笔交易,也就是你仍然有货币交易。 否则,你无法进行交易,就像你没有钱就无法消费一样。

当然,UTXO的设计是非常讲究的。 它不同于我们日常使用的帐户模型。 它不再是一组资产和资产负债表。 这是一个全新的概念,我认为这是非常了不起的。 当然,你可能会说每笔交易都要重新检查我历史上的所有交易,那不是很慢吗? 那么我告诉你,当数据量很大的时候,它是很慢的。 比特币也想到了这一点,所以他采用了chainstate,我这里称之为状态机,来保存账户的历史交易状态,这样就避免了每次都要遍历整条链比特币UTXo,大大提高了效率。

6. POW 前面提到,为了达到去中心化的目的比特币UTXo,比特币提出了两个核心概念,一个是链,一个是共识算法POW(proof-of-work)工作量证明算法。 简单的理解就是谁干的活最多,谁来记账,把区块的交易信息写到链上。 POW算法是目前最成熟的算法。 正是因为POW,才造就了挖矿业,我国的半导体芯片产业才有了长足的进步。 如果非要说我们在半导体领域走在了前列呢? 那我肯定会说是矿机。

7、RPC作为分布式系统之间的一种通信方式,没有什么特别的说。

比特币期货对比特币影响_比特币区块和比特币的区别_比特币UTXo

8、API层是整个系统对外暴露的部分,是外界与系统进行通信的窗口。

总结

一张看似简单的图,说了半天还是觉得不够完整。 还有很多内容需要解释和挖掘。 这也从侧面说明了整个比特币系统的强大。 系统包含的东西太多了。 我们需要慢慢挖掘,了解透彻。 架构部分这里简单提一下。 由于这是一个系列教程,代码会开源,所以有必要在这里贴出整个项目的代码组织结构。 毕竟话不多说,把代码给我看看才是我们的合规。

文件许可证

py-bitcoin 代码根据 GNU GENERAL PUBLIC LICENSE 第 3 版授权,2007 年 6 月 29 日 ()