十分钟带你看懂比特币的运行原理

有一种货币目前价值成百上千美元 ,但不是由金子、铂金或任何贵重金属制造的,这就是比特币,那么比特币的原理是什么呢?

针对不方便打开视频的小伙伴,CDA字幕组也贴心的整理了文字版本,如下:

假设有一种货币目前价值成百上千美元 ,但不是由金子、铂金或任何贵重金属制造的,实际上这不是你能放在手中或存钱罐中的钱币。

这是数字货币,意味着它只以电子的形式存在。

我说的就是比特币,比特币的原理与大多数货币很不一样。

它不依附于国家或政府,因此它没有中央发行机构或监管机构。这意味着没有组织机构决定:什么时候要制造更多的比特币;决定要制造多少;追踪比特币流向或调查欺诈行为。

那么作为一种货币,比特币是怎么运作的呢?或者比特币是如何具有价值的呢?

如果没有整个互联网或密码学,比特币不会存在。实际上有时比特币也被认为是世界上第一种加密货币。

?比特币的运行原理

比特币是数字货币。

你能在世界范围内,点对点互联网中的计算机间进行比特币交换。

大多数点对点互联网的目的在于进行分享。比如让人们对合法的音乐或电影进行复制从而下载。

如果比特币是数字货币,那么什么阻止你复制出大量的伪币,从而变得富到流油呢?

不像mp3或视频文件,比特币不是一串可以进行复制的数据。比特币实际上是一种名为区块链的大型全球分类账,之后我们会详细解释。

区块链会记录所发生的每笔比特币交易。截止到2016年底整个分类账的数据为107GB。

因此当你给他人发送比特币时,不像发送文件,你实际上是将交易记录在大型的分类账上。例如"Michael发给Hank 5个比特币”。

可能你在想 "等等,你说比特币没有中央机构进行记录”。

虽然比特币是中央记录的,但没有任何官方的人会更新分类账,像银行一样跟踪每个人的钱。它是分散式的。

实际上任何人都能主动更新区块链的全部新交易,非常多的人都在做。这是可行的,因为许多人在追踪相同的内容,保证所有的交易是正确的。

假设你和一些朋友在玩扑克,但你们都没有扑克牌筹码,而且你忘带钱,大家都没有钱。因此你们拿出笔记本开始记录谁下注了多少,谁赢谁输。

你不完全信任其他人,因此每个人都单独记录自己的账。每一手牌结束时,你们都会对比互相写了什么。这样的话,如果有人记错了或想作弊,为自己多记一些钱,那就会当场被发现。

在几手牌之后,你会发现你在笔记本上记录了钱的流向。你可以把记录的每页视为一个交易块。最终你的笔记本会记录了许多页的信息,即一连串的块,因此形成了区块链。

如果有成千上万的人在分别维护比特币区块链,那么这些分类账是如何保持一致的呢?

回到之前扑克牌的例子。把整个比特币点对点网络视为一个很大的扑克牌桌,周围坐着数百万的人参加。有些人只是在交换钱币,但许多人在主动记录分类账。

如何你想发送或收到钱,你必须告诉桌上的每个人,那么记录的人就能更新分类账。

因此每次交易你需要告知比特币网络几点内容:你的账号;你要发送比特币的人的帐号;以及你要发送多少比特币。

所有记录区块链的人会将你的交易添加到目前的区块上。

让许多人记录交易似乎是不错的安全措施。但是如何发送比特币只需要一些账号数字的话,这样似乎会存在安全问题。

只是普通钱币的话,这会是一个大问题,不妨想想那些试图盗取他人信用卡信息的不法分子。

比特币中不存在中央银行去发现有哪儿出了问题,从而阻止欺诈行为,比如突然你把毕生的存款都花在牛肉干上之类的。

那么如何阻止Hank假装是我,把我的比特币都发送给他自己呢?

多亏了密码学,比特币十分安全。这也是为什么比特币被认为是一种加密货币。

密钥

具体来说,比特币能保持安全是由于密钥。

密钥含有大量信息从而能从数学上确保一些消息,比如”嘿,这真的是来自我本人”。

当你在比特币网络上创建账号,也就是你听说的所谓"钱包”。这个账号连接了两个独特的密钥:私人密钥和公共密钥。

在这种情况下,私人密钥对一些数据进行标记,也就是所谓的进行"签名”。那么其他人就可以在之后对签名进行验证。

假设我想在网络中发送消息说,”Michael给Olivia发送了3比特币”。那么我用我的私人密钥对消息进行签名,私人密钥只有我有,其他人都无法仿制。

接着我将签名后的消息发送到比特币网络中,每个人都能用我的公共密钥保证我的签名生效。这样每个记录所有的比特币交易的人,能够将我的交易添加到他们的区块链副本中。

换而言之,如何公共密钥奏效的话,这就证明了消息是通过我的私人密钥签名的,同时这也是我想发送的内容。

不同于手写签名或信用卡号,这种身份证明无法被骗子伪造。

交易中的时间

每笔交易的"谁"是非常重要的,用来确保正确的人在比特币交易;但”何时"同样重要。

假设你在银行账号中有一千美元,你想买两个均为一千美元的物品。银行会接受第一次的购买,拒绝第二次的购买。

如果银行不这么做你将可以多次使用同一笔钱,这听起来很棒 ,但也很糟糕。金融系统不能这样运行,因为没有人会获得报酬。

如果我有一笔钱只够支付给Olivia或者Hank,但我想付给他们两个人。在比特币系统中内置了检查,比特币网络和你的钱包会自动检查你以前的交易,以确保你有足够的比特币可供发送。

但围绕时间又存在一个问题,因为全世界有许多人在记录区块链的副本,网络延迟意味着你无法总是以同样的顺序收到交易请求。

现在有许多人有稍微不同的区块可选,但每个人都不一定是错的。比特币要怎么解决这个问题呢?

数学问题

证明是通过真正解决问题,数学问题。

要添加一个区块的交易,每个维护分类账的人必须解决一个由加密哈希函数创建特殊的数学问题。

哈希函数是一个算法,当中输入的大小任意,但得出的输出大小固定。

假设你有一些数字作为输入,哈希函数定义要把这些数字加起来,这种情况下输出为10。

对于密码学来说哈希函数很棒的点在于,当你给出输入,很容易得出输出。但是给出输出很难弄清最初的输入是什么。

即使是这个简单的例子,也有很多数字加起来为10。唯一得出输入为1 2 3 4 的方法就是不断猜直到答对。

如今比特币使用的哈希函数称为SHA256,这表示安全的哈希算法256位,最初由美国国家安全局创建。

专门用来解决SHA256哈希问题的计算机,平均需要10分钟来解决每个问题,意味着在答对前需要数以亿计次尝试。谁第一个解答了哈希问题能够在交易中添加下一个区块,从而生成新需要解决的数学问题。

如果许多人几乎在同时添加了区块,网络选出其中一个 这就成为全长且最信任的链子。这些没被选择的链子上的交易将重新被放入池中,将被添加到之后的区块上。

这些志愿者在专门的计算机上花费了数千美元,从而去解答SHA256问题,付高昂的电费保持机器的运转,但为什么呢?维护区块链他们能获得什么呢?只是社区服务吗?

奖励系统

比特币其实有内置的系统来奖励他们。

如今每次当你率先添加区块到区块链中,就有12.5个比特币会凭空添加到你的账号中。

实际上你可能通过比特币分类账维护者的另一个名字知道他们:矿工。

因为更新区块链,就像在那些哈希问题上挥舞着镐头希望以此致富。

当比特币在2009年首次被创建时,它没有太多价值,数十个比特币可能相当于一堆硬币。然而在2016年11月10日,一个比特币价值708美元,因此12.5比特币价值8850美元,这是很不错的改变。

每个比特币的存在都是为了奖励比特币矿工而创造的,除了在交易中添加新区块时获得的报酬,矿工在每笔交易中还能获得一小笔小费。

同样值得注意的是,每到21万区块时,当添加新的区块时,产生的币数量会减少一半。

因此开始奖励为50比特币,减少为25,之后是12.5。在之后几年会变为6,并且继续下降。

最终一个区块中会有很多笔交易,矿工们主要通过从当中获得小费,这还是值得的。

最新的预测是:最后的比特币,大约是第2100万个,会在2140年内被挖到。

比特币数量的减少实际上在模拟地球上被开采金子的速度。目的是限制比特币提供数量能够随着时间提高其价值。

那么投资比特币是一个好主意吗?

在这里我们不进行深究。

比特币仍然不稳定并且在实验阶段,很多人喜欢比特币,还有很多人认为它注定会失败。

我们觉得这是个有趣的想法,让我们不禁思考密码学之后又能为我们做些什么。

原文地址:https://www.cnblogs.com/CDA-JG/p/10387186.html

时间: 2024-12-14 14:58:17

十分钟带你看懂比特币的运行原理的相关文章

【 全干货 】5 分钟带你看懂 Docker !

欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者丨唐文广:腾讯工程师,负责无线研发部地图测试. 导语:Docker,近两年才流行起来的超轻量级虚拟机,它可以让你轻松完成持续集成.自动交付.自动部署,并且实现开发环境.测试环境.运维环境三方环境的真正同步.本文从Docker定义,作用,技术架构,安装和使用等全方位带你看懂Docker. Docker是啥? 打开翻译君输入Docker 结果显示码头工人,没错!码头工人搬运的是集装箱,那么今天要讲的Docker其操作的也是集装箱,这个集装

十分钟带你看完 KOA 源码

前段时间看了 koa 源码,得益于 koa 良好抽象,不仅提供了简洁的 api ,同时也使得源码相当的简洁和优雅.今天花点时间画了一张 koa 源码的结构图来分析其源码,在总结的同时,希望能够帮到相关的同学. 注:源码是基于 2.x 版本,源码结构与 1.x 完全一致,代码更加简洁直观一点. 基础知识 任何用过 node 的人对下面的代码都不会陌生,如下: const http = require('http'); const server = http.createServer((req, r

少啰嗦!一分钟带你读懂Java的NIO和经典IO的区别

1.引言 很多初涉网络编程的程序员,在研究Java NIO(即异步IO)和经典IO(也就是常说的阻塞式IO)的API时,很快就会发现一个问题:我什么时候应该使用经典IO,什么时候应该使用NIO? 在本文中,将尝试用简明扼要的文字,阐明Java NIO和经典IO之间的差异.典型用例,以及这些差异如何影响我们的网络编程或数据传输代码的设计和实现的. 本文没有复杂理论,也没有像网上基它文章一样千篇一律的复制粘贴,有的只是接地气的通俗易懂,希望能给你带来帮助. (本文同步发布于:http://www.5

顾嘉:5分钟带你读懂《在线》逻辑

互联网成了基础设施,是创新平台:数据成了生产资料,是自然资源 :计算成了公共服务,是能源动力. ——王坚:<在线> 在我的记忆里,云计算.物联网.大数据是近年来被媒体和产业界炒得最热的几个概念了.然而时至今日,尽管有一大批创业公司以大无畏的勇气踏上了探索前路的征途,我们依然很少在现实工作和生活中真切地感受到这几个新技术带来的变化. 除了少部分出类拔萃的企业,大部分产品依旧停留在发布会的PPT中,还没来得及面世就被资本的力量洗刷殆尽.这背后自然有“物竞天择”的无常,也有市场竞争的残酷,但从主观上

三个案例带你看懂LayoutInflater中inflate方法两个参数和三个参数的区别

版权声明:本文为sang原创文章,转载请注明出处. 目录(?)[+] 关于inflate参数问题,我想很多人多多少少都了解一点,网上也有很多关于这方面介绍的文章,但是枯燥的理论或者翻译让很多小伙伴看完之后还是一脸懵逼,so,我今天想通过三个案例来让小伙伴彻底的搞清楚这个东东.本篇博客我们不讲源码,只看使用.源码的解读会在下一篇博文中带来. inflate方法从大范围来看,分两种,三个参数的构造方法和两个参数的构造方法.在这两类中又有细分,OK,那我们就把各种情况都来演示一遍. 1.三个参数的in

FinFET全面攻占iPhone 五分钟让你看懂FinFET

OFweek电子工程网 讯 打开这一年来半导体最热门的新闻,大概就属FinFET了,例如:iPhone 6s内新一代A9应用处理器采用新电晶体架构很可能为鳍式电晶体(FinFET),代表FinFET开始全面攻占手机处理器.三星与台积电较劲,将10纳 米FinFET正式纳入开发蓝图.联电携ARM,完成14纳米FinFET制程测试.到底什么是FinFET?它的作用是什么?为什么让这么多国际大厂趋 之若骛呢? 什么是FET? FET的全名是"场效电晶体(Field Effect Transistor,

5分钟带你读懂事务隔离性与隔离级别

前言 我们在上一章节中介绍过数据库的带你了解数据库中事务的ACID特性的相关用法.本章节主要来介绍下数据库中一个非常重要的知识点事务的隔离级别.如有错误还请大家及时指出~ 问题: 事务的隔离级别有哪些? 如果并发事务没有进行隔离,会出现什么问题? 以下都是采用mysql数据库 在多个事务并发做数据库操作的时候,如果没有有效的避免机制,就会出现种种问题.大体上有以下问题: 一.引发的问题 在并发事务没有进行隔离的情况下,会发生如下问题. 问题一:脏读 脏读指一个事务读取了另外一个事务未提交的数据.

带你看懂Dictionary的内部实现

了解Dictionary的开发人员都了解,和List相比,字典添加会慢,但是查找会比较快,那么Dictionary是如何实现的呢? Dictionary的构造 下面的代码我看看Dictionary在构造时都做了什么: private void Initialize(int capacity) { int prime = HashHelpers.GetPrime(capacity); this.buckets = new int[prime]; for (int i = 0; i < this.b

10分钟教你看懂mongodb的npm包

最近刚开始接触node.js,在做一个博客,在学习过程中,肯定是接触了不少npm的包,主要就是学习使用它的API.现在所写的就是关于mongodb的使用.首先mongodb这个包是用来提供连接和操作mongdb这个数据库的包,如果你的后台数据库是采用的mongodb那么我们将要用到这个包. 首先我们在npm中去搜索这个包,就是第一个 我们点进去去看他的具体信息,我们直接看它的API手册 然后该文档的主页介绍了里面的一些资源文件(js文件)的大致作用:http://mongodb.github.i