主页 > imtoken钱包最新下载 > 比特币中的计算机知识

比特币中的计算机知识

imtoken钱包最新下载 2023-01-17 05:02:00

比特币中的计算机知识

一、人民币、支付宝、比特币有什么区别

( 1)人民币

大家都知道人民币是中国人民银行发行的货币。这些货币在市场上流通,每个人只要有钱就可以购买各种商品和服务。它将从一个人的手中转移到另一个人的手中。货币在市场流通后,一定数量的纸币在一定时间属于谁是不确定的,国家不在乎。在实践中,纸币是很难复制的,复制成本高,风险也大。

(2)支付宝

支付宝,包括微信,当然,里面的余额只是一个数据,存储在支付宝和微信的服务器上。与人民币不同,复制和修改数据是免费的。这些电子货币在市场上是如何运作的?以支付宝为例,首先需要申请支付宝账户,然后绑定银行卡,这样就可以从支付宝转账到银行卡或者从银行卡充值到支付宝。当您使用支付宝支付消费或通过支付宝收款时,对方还必须如果您有支付宝账户,您支付的金额实际上是从您的支付宝账户中扣除,并添加到对方的支付宝账户中。

这涉及两个数据更改。一是和银行有关:支付宝已经在各大银行开户。个人使用银行卡在自己的支付宝账户中充值或取款,其实就是银行里的大支付宝账户和你的账户之间的存款找零。当然,支付宝公司您的支付宝账户上的价值也会相应改变。二是与银行无关,支付宝内部数据转换。当您和对方使用支付宝付款,对方收款时,此时与银行无关。 , 是支付宝自己内部数据的转换。

国家发行的纸币有国家信用背书,保证纸币有购买力,不是废纸,通货膨胀和贬值除外。银行卡存款是安全的 背书是以银行的信用为基础的。当然,中国的银行主要是国有银行,但也有国家信用背书。支付宝和微信的电子货币支付得到了蚂蚁金服和腾讯的信用背书。如果哪天蚂蚁金服把在各大银行开立的账户里的钱转账后全部注销,并声明支付宝上的余额是一个数字,那是没有意义的,甚至直接将支付宝账户的余额全部清零。这并非不可能。作为一个国家,必须有一定的监管措施。比如支付宝在工商银行开的账户和平时不一样,在一定时间内有大量资金流到其他几个账户,就会冻结交易,进行调查。但是支付宝直接把大家的支付宝账号清零,就算他们的大银行账户有我也不知道怎么给你分钱。

不同用户的支付宝账户之间支付宝的支付金额和金额会发生变化。这个实现比较复杂。最难的是如何保证安全、可靠、无差错,所以安全是互联网金融的生命线。 .

(3)比特币

上面提到的人民币、银行卡、支付宝等都是中央的。 《权力》说:权力导致腐败,绝对的权力导致绝对的腐败。总是相信一个机构不会做坏事是更危险的。

为了解决这个问题,比特币采用了另一种思路:简而言之,去中心化。每个人都有一个账本,账本是公开的,每个人都可以查看谁支付了谁以及何时支付了多少。其次,账本只能写入新的 Transaction 记录,任何已经写入的记录永远无法更改,如果有人试图篡改它,每个人都可以找到它。这类似于在海上填写航海日志,记录完成后当天的航海日志不可更改。

这里需要重点关注两个问题:

首先,如何让账本不可篡改,不管是谁修改的,大家都能找到。它需要在计算机中使用密码学。主要用了两点,一是数字签名技术,比特币使用椭圆曲线数字签名算法,二是哈希算法,比特币使用的是SHA256。

第二,比特币是一个去中心化的分布式系统,存在一致性问题。分布式系统的核心是一致性。

二、比特币如何防篡改

(一)区块中的交易记录如何防篡改

每个区块中有几条交易记录,这些交易记录如何防篡改?例如,A 向 C Money 转移 100 个区块。查账本时,怎么判断是A转了,B说转了,怎么判断B在撒谎?此处使用数字签名。密码学中有对称加密和非对称加密。在对称加密中,加密的秘钥和解密的秘钥是一样的。在非对称加密中,公钥和私钥不同,成对出现。比特币在这里使用的是非对称加密:椭圆曲线算法。

一个人的公钥公开在网上,大家都知道私钥是自己保管的,只能自己掌握。一些受信任的第三方组织或公司专门签发公钥和私钥对数字证书。用自己的公钥加密的数据只能用自己的私钥解密,用自己的私钥加密的数据只能用自己的公钥解密。所以这里有正反两个方向:(1)如果别人要给我发数据,先用我在网上的公钥加密数据,加密后发给我,再用我自己解密数据私钥。这样,即使数据被加密了,被人截获也没关系,只有我有可以解密的私钥,也就是使用公钥和私钥对加密传输的数据。 (2)另外一个方向:如果我有文件需要传给朋友,朋友收到后怎么确定是我发的?这需要我用自己的私钥首先,文件是加密的,朋友收到后用我的公钥解密,只有用我的私钥加密的文件才能用我的公钥正确解密,这就是数字签名功能。

目前流行的非对称密码算法有 3 种:RSA 密码系统、基于离散对数问题的密码系统和椭圆曲线密码系统。比特币使用的签名算法是椭圆曲线算法,比其他两种加密算法更加密。在比特币系统中,一对公钥和私钥代表一个人。每个人的公钥都是公开的。要验证一条消息是否是某个人发送的,其他人只需要用他的公钥来回走动即可。验证它以确定真实性。

(二)区块链中的区块是如何防篡改的

如何保证之前的区块不会被篡改。这是计算机加密和解密中使用的另一种方法。物品技术:哈希。哈希不同于上面提到的对称加密和非对称加密。对称和非对称加密是双向和可逆的。例如,我用对称加密密钥加密数据后,我可以使用该密钥进行解密,在非对称加密中使用公钥加密数据或使用私钥签名后,对端可以使用私钥解密或用公钥验证签名。

而且散列函数是不可逆的,散列函数计算一个消息的摘要,而这个摘要是一个很短的定长字符串,这个消息摘要可以看作是消息的指纹。散列函数必须满足几个条件,第一个是散列函数是单向的,即不可逆的,也就是说给定一个散列值,你不能推导出相应的消息。第二个哈希函数需要弱防冲突,完全防冲突是不可能的,例如常用的MD5摘要算法得到的消息摘要是128位。根据鸽笼原理,相同的消息摘要必然有不同的消息。是否存在弱冲突无关紧要,只要在实际应用中没有发现。这就够了。这是可行的。在实际应用中,两条消息得到的消息摘要相同的概率几乎可以忽略不计。第三个防冲突属性,message 1经过hash得到digest 1,理论上存在Message 2也经过hash计算得到digest 1,但这在计算上是不可行的。只有满足这三个基本条件,MD5、SHA-256、SHA才是目前常用的-384、SHA-512哈希函数。 SHA-256 哈希算法用于比特币。我们通常会下载一个软件安装包,下载完成后,我们会进行完整性检查,防止被不法分子添加,一些病毒等就是利用这个原理。

(三)区块链结构与形成

上一节介绍了如何防止区块中的交易记录如何防止篡改以及已经写入区块链系统的区块,我们来详细看看。

首先,我们来看看每个区块里有什么:首先,有几条交易记录,前面分析的交易记录是通过公钥密码学进行数字签名,以确定记录的真实性。其次,有一个标题。每个block前面都有一个header,header里面存放的是前一个block的数据。上一个区块的地址和哈希值。

每个区块的大小都是有限的,区块链中的区块数量在不断增加。这样就形成了一个单链表,新生成的块在链表的末尾。第一个块称为创始块。我们来看看整个区块链的生成过程:

首先,系统Block A中只有一个Block,Block A包含多条交易记录,这些交易记录都是用私钥签名的。区块 A 的地址和散列被广播给系统的每个成员。如果A区块被修改,其他人会对A区块进行哈希运算,哈希值是否对应可以判断是否被篡改。

运行一段时间后,A块无法存储,这就需要一个新的B块。B的头部记录了A的地址和哈希值,这样B的地址和哈希值就会广播给系统中的每个人。这样B就不能被篡改,因为每个人都有B的哈希值,A也不能被篡改。如果 A 篡改了 A 存储在 B 中的哈希值,也可以查到。这样系统继续运行,C块和D块的添加方式相同。

三、区块链中的共识问题

比特币系统中的每个人都可以检查账户以确定是否发生了篡改。那么谁负责记账,也就是谁负责将交易信息写入区块。本来是权威人士最容易写的,但这与区块链去中心化的理念相矛盾。所以比特币采用的是人人记账法。这里就出现了一个问题,就是分布式系统的一致性问题,这也是分布式系统的核心问题。

分布式系统一致性:这个系统中的一个节点提出一个特定的值。经过一系列步骤,所有节点达成共识,选择相同的值,而这个值必须是某个节点。来自。

利用区块链技术实现一种电子货币,其不可变的方法很常见,即公钥加密算法和哈希算法,区别在于选择的算法不同。最重要的是解决分布式系统的一致性问题,也就是说,共识问题是关键。

一种简化的共识算法:

1.提议的交易信息被广播到系统中的每个节点。

2.每个节点将收到的交易信息写入一个新的区块。如果写入新区块的交易信息成功加入区块链,则执行成功。

3.新一轮开始时,随机选择整个系统中的一个节点,被选中的节点将自己的新区块广播给大家。

4.每个收到新区块的节点都会验证新区块中的交易记录,并使用交易记录中相关成员的公钥信息进行验证,验证后新区块将被已验证。这些块被添加到它们自己的本地分类帐中。

如何保证每个人的账本一致?如果上述算法可以在完美的条件下完成,那么什么是完美的环境:系统的每个成员都表现良好,网络相当可靠。但在实践中这是不可能的。一是系统中的网络复杂且不可靠,二是系统中的每个成员是否可信。比特币系统采取的做法是遵循整个系统中最长的区块链是公认真理的原则。

那为什么比特币系统中被选中的节点愿意努力生成这个区块呢?因为系统会奖励你。如果他创建的区块最终出现在系统中最长的区块链中,他可以获得可观的奖励。他为成功写入的交易收取费用;每个新区块的创建者都会获得一个额外的比特币,每四年减半,从前四年 50 个比特币开始,然后是 25 个,以此类推。

谁创建了系统可以接受的块?创建区块时,需要计算其哈希值以进行完整性验证。块中有一个随机填充的空间,它的值是没有意义的。唯一的作用就是为这个块生成不同的哈希值。比特币网络要求生成的哈希值的前几位都是 0。为了生成合法的哈希值,对于要生成的新块,必须改变随机区域的值。对此没有捷径可走,只能用穷举法,反复计算,直到前几位全为0。hash值。这就是比特币挖矿,每个人都通过自己贡献的算力来分配奖励。不管网络上有多少计算能力,无论如何怎么使用比特币支付,比特币区块每 10 分钟就会产生一次。算力越多怎么使用比特币支付,生成的hash前面0的个数就会越多,反之亦然。比特币系统中参与计算的人越多,计算能力越强,整个系统就越稳定。