比特币

简介: 比特币核心要点账簿公开机制身份与签名机制(公钥加密系统)矿工组织(挖矿群体)建立初始账簿(创世块)支付与交易比特币产生的动机以物易物,互相间的贸易就是老张拿一袋面粉换老李一只羊。实物货币,把黄金作为一般等价物,把其它物品和黄金的对应关系编成一张表格,例如一克黄金对应一只羊,一克黄金对应一袋面粉等等,拿着黄金去进行交易。

比特币核心要点

  1. 账簿公开机制
  2. 身份与签名机制(公钥加密系统)
  3. 矿工组织(挖矿群体)
  4. 建立初始账簿(创世块)
  5. 支付与交易

比特币产生的动机

  • 以物易物,互相间的贸易就是老张拿一袋面粉换老李一只羊。
  • 实物货币,把黄金作为一般等价物,把其它物品和黄金的对应关系编成一张表格,例如一克黄金对应一只羊,一克黄金对应一袋面粉等等,拿着黄金去进行交易。
  • 符号货币,金矿并不多,开采和冶炼金子太费时费力,金子会不断会因为磨损、丢失或有人故意囤积而发生损耗。大家可以把黄金都统一交给德高望重的老村长(政府和银行),老村长在一张纸上写上黄金量,此纸就作为了符号货币,纸张可以换回黄金。
  • 中央系统虚拟货币(已出政策把支付宝,财付通的交易都需上传),把纸给银行,银行给你一个账号并存上钱并记录余额,记录账号之间的交易就形成了账本。
  • 分布式虚拟货币,(其实很难发生)账本是否可能被银行或政府篡改,账本是否会失窃或损坏?于是就出来了一套不依赖任何中央处理人的叫比特币的分布式虚拟货币系统。

账簿公开机制 

  1. 账簿上不再记载余额,只记载每一笔交易。即记载每一笔交易的付款人、收款人和付款金额。只要账簿的初始状态确定,每一笔交易记录可靠并有时序,当前每个人持有多少钱是可以推算出来的。
  2. 账簿由私有改为公开,只要任何人需要,都可以获得当前完整的账簿,账簿上记录了从账簿创建开始到当前所有的交易记录。

第一条还无所谓,但是第二条简直无法接受,因为账簿可是记录了所有的交易,这样大家的隐私不全暴露了吗?

公钥加密系统 

在这套机制下,任何人都不使用真实身份交易,而是使用一个唯一的代号交易。对于比特币来说,钱不是支付给个人的,而是支付给某一把私钥。这就是交易匿名性的根本原因,因为没有人知道,那些私钥背后的主人是谁。
公钥是公开的,任何人都可以获取。私钥是保密的,只有拥有者才能使用。他人使用你的公钥加密信息,然后发送给你,你用私钥解密,取出信息。反过来,你也可以用私钥加密信息,别人用你的公钥解开,从而证明这个信息确实是你发出的,且未被篡改,这叫做数字签名。

如果公钥加密的不是普通的信息,而是加密了一笔钱,发送给你,这会怎样?
首先,你能解开加密包,取出里面的钱,因为私钥在你手里,因此支付可以成功。
这就是比特币的原理:非对称加密保证了支付的可靠性。
由于支付的钱必须通过私钥取出,所以你是谁并不重要,重要的是谁拥有私钥。只有拥有了私钥,才能取出支付给你的钱。(事实上,真实的交易流程稍有不同,私钥保证的不是取出支付给你的钱,而是保证只有你能把这些属于你的钱支付出去。)

成立虚拟矿工组织

  • 成为矿工不影响正常使用货币
  • 矿工每天要花费一定时间从事比特币“挖矿”活动,但是不同于挖金矿,虚拟矿工不需要拿着工具去野外作业,在家里就可以完成工作
  • 矿工有一定可能性获得报酬,在挖矿活动中付出的努力越多,获得报酬的可能性越大
  • 矿工可以随时退出,也可以随时有新的矿工加进来

交易的确认离不开矿工。为什么有人愿意做矿工呢?
比特币协议规定,挖到新区块的矿工将获得奖励,一开始(2008年)是50个比特币,然后每4年减半,目前(2018年)是12.5个比特币。这也是比特币的供给增加机制,流通中新增的比特币都是这样诞生的。那么到了2140年,矿工将得不到任何奖励,比特币的数量也将停止增加。这时,矿工的收益就完全依靠交易手续费了。所谓交易手续费,就是矿工可以从每笔交易抽成,具体的金额由支付方自愿决定。你完全可以一毛不拔,一分钱也不给矿工,但是那样的话,你的交易就会没人处理,迟迟无法写入区块链,得到确认。矿工们总是优先处理手续费最高的交易。目前由于交易数量猛增,手续费已经水涨船高,一个区块2000多笔交易的手续费总额可以达到3~10个比特币。如果你的手续费给低了,很可能过了一个星期,交易还没确认。
一个区块的奖励金12.5个比特币,再加上手续费,收益是相当可观的。按照目前的价格,可以达到100万~200万人民币。

建立初始账簿(创世块)

在第一个区块上记录了一些交易记录,特别的是,这些记录的付款人一栏全都是“系统”,而收款人分别是每个比特币钱包(私钥和公钥),代表初始时刻,系统默认分配了一定数量比特币,但是数量非常少,都只有几枚。大家可以自行决定要不要接受比特币。随着比特币的流动和矿工的活动,比特币会慢慢多起来。

钱包地址

比特币交易的第一件事,就是你必须拥有自己的公钥和私钥。你去网上那些比特币交易所开户,它们会让你首先生成一个比特币钱包(wallet)。这个钱包不是用来存放比特币,而是存放你的公钥(对外)和私钥。
钱包的地址:根据协议公钥的长度是512位。这个长度不太方便传播,因此协议又规定,要为公钥生成一个160位的指纹。所谓指纹,就是一个比较短的、易于传播的哈希值。160位是二进制,写成十六进制,大约是26到35个字符,它是唯一的,即每个钱包的地址肯定都是不一样的。

ps:

你向别人收钱时,只要告诉对方你的钱包地址即可,对方向这个地址付款。由于你是这个地址的拥有者,所以你会收到这笔钱。
由于你是否拥有某个钱包地址,是由私钥证明的,所以一定要保护好私钥。如果你的私钥被偷了,你的比特币也就等于没了,因为他人可以冒用你的身份了,把钱包里面的钱都转走。同样的,你向他人支付比特币,千万不能写错他人的钱包地址,否则你的比特币就支付到了另一个不同的人了。

交易真实性

举例来说,有人申报了一笔交易:地址 A 向地址 B 支付10个比特币。我怎么知道这个申报是真的,申报人就是地址 A 的主人?

  1. 比特币协议规定,申报交易的时候,除了交易金额,转出比特币的一方还必须提供以下数据。
    • 上一笔交易的 Hash(你从哪里得到这些比特币)
    • 本次交易双方的地址
    • 支付方的公钥
    • 支付方的私钥生成的数字签名
  2. 验证这笔交易是否属实,需要三步
    • 找到上一笔交易,确认支付方的比特币来源。
    • 算出支付方公钥的指纹,确认与支付方的地址一致,从而保证公钥属实。
    • 使用公钥去解开数字签名,保证私钥属实。

 ps:

一笔交易就是一个地址的比特币,转移到另一个地址。由于比特币的交易记录全部都是公开的,哪个地址拥有多少比特币,都是可以查到的。因此,支付方是否拥有足够的比特币,完成这笔交易,这是可以轻易验证的(由矿工验证)。

交易确认 

  • 所有的交易数据都会传送到矿工那里。矿工负责把这些交易写入区块链。
  • 根据比特币协议,一个区块的大小最大是 1MB,而一笔交易大概是500字节左右,因此一个区块最多可以包含2000多笔交易。矿工负责把这2000多笔交易打包在一起,组成一个区块,然后计算这个区块的 Hash。
  • 比特币不存放在钱包或其他别的地方,而是只存在于区块链上面。区块链记载了你参与的每一笔交易,你得到过多少比特币,你又支付了多少比特币,因此可以算出来你拥有多少资产。

交易数据必须写入数据库,才算成立,对方才能真正收到钱。
计算 Hash 的过程叫做采矿,这需要大量的计算。矿工之间也在竞争,谁先算出 Hash,谁就能第一个添加新区块进入区块链,从而享受这个区块的全部收益,而其他矿工将一无所获。收到钱。
关于区块链分叉攻击,中本聪给出的解决方案是,建议收款人不要在公告挂出时立即确认交易完成,而是应该再看一段时间,等待各个挖矿小组再挂出6张确认账簿,并且之前的账簿没有被取消,才确认钱已到账,再进行实物交换。
中本聪解释道,之前设定变态的Hash规则,正是为了防御这一点。根据前面所述,生成有效区块不是那么简单的,要花费大量的人力反复试不同的幸运数字,而且过程完全是碰运气。如果某区块包含你收到钱的确认,并且在后面又延续了6个,那么攻击者想要在落后6页的情况下从另一个分支赶超当前主分支是非常困难的,除非攻击者拥有非常多的人力,超过其他所有诚实矿工的人力之和。如果攻击者有如此多人力,与其花这么大力气搞这种攻击,还不如做良民挖矿来的收益大。这就从动机上杜绝了攻击的形成。

 

目录
相关文章
|
Windows
Coze开源软件Windows客户端-coze_desk
Coze开源软件Windows客户端-coze_desk
2149 0
|
11月前
|
网络协议 程序员
为什么TCP需要三次握手?一文讲透!
TCP三次握手是TCP协议建立连接的关键步骤,确保客户端和服务端同步状态并确认彼此的存在。过程分为三步:1) 客户端发送SYN包请求连接;2) 服务端回应SYN/ACK包确认收到并提供初始序列号;3) 客户端发送ACK包确认服务端的序列号,双方进入连接状态。此机制确保了双向通信的可靠性和资源的有效利用,避免了失效请求导致的问题。
|
存储 Java 关系型数据库
高效连接之道:Java连接池原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。频繁创建和关闭连接会消耗大量资源,导致性能瓶颈。为此,Java连接池技术通过复用连接,实现高效、稳定的数据库连接管理。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接池的基本操作、配置和使用方法,以及在电商应用中的具体应用示例。
304 5
|
存储 机器学习/深度学习 编解码
阿里云服务器计算型c7、计算型c8y、计算型c8i实例性能对比与选择参考
目前阿里云在售的云服务器中,主要包含了第6代、第7代、第8代实例规格的云服务器产品,从类别上来说,又分为计算型(c系列)、通用型(g系列)、内存型(r/re系列)、通用算力型(U实例)、大数据型(d系列)、本地SSD型(i系列)、高主频型(hf系列)等不同种类的云服务器实例规格,而在阿里云目前的活动中,计算型(c系列)主要计算型c7、计算型c8y和计算型c8i实例可选,有的新手用户并不清楚这三个计算型实例之间的差别,本文对这三个计算型实例的实例规格、CPU(核)、内存(G)、计算、存储、内存等方面为大家做个对比,让大家了解一下他们之间的不同,以供参考选择。
|
9月前
|
数据采集 编解码 缓存
通义万相Wan2.1视频模型开源!视频生成模型新标杆,支持中文字效+高质量视频生成
通义万相Wan2.1视频模型开源!视频生成模型新标杆,支持中文字效+高质量视频生成
1501 0
|
10月前
|
JavaScript Java C#
【Typora-markdown语言】使用说明【指南】
Typora-markdown语言的使用说明和常见用法,好用的做笔记的工具软件及使用方法指南。目录 一、标题 二、段落 1、换行 2、分割线 三、文字显示 1、字体 2、上下标 四、列表 1、无序列表 2、无序列表 3、任务列表 五、区块显示 六、代码显示 1、行内代码 2、代码块 七、链接 八、脚注 九、图片插入 十、表格 十一、表情符号 语法: #(一级标题)##(二级标题)###(三级标题)。。。快捷键: Ctrl+数字1~6可以快速将选中的文本调成对
286 9
|
机器学习/深度学习 计算机视觉 网络架构
【YOLO11改进 - C3k2融合】C3k2融合DWRSeg二次创新C3k2_DWRSeg:扩张式残差分割网络,提高特征提取效率和多尺度信息获取能力,助力小目标检测
【YOLO11改进 - C3k2融合】C3k2融合DWRSDWRSeg是一种高效的实时语义分割网络,通过将多尺度特征提取方法分解为区域残差化和语义残差化两步,提高了多尺度信息获取的效率。网络设计了Dilation-wise Residual (DWR) 和 Simple Inverted Residual (SIR) 模块,分别用于高阶段和低阶段,以充分利用不同感受野的特征图。实验结果表明,DWRSeg在Cityscapes和CamVid数据集上表现出色,以每秒319.5帧的速度在NVIDIA GeForce GTX 1080 Ti上达到72.7%的mIoU,超越了现有方法。代码和模型已公开。
|
11月前
|
前端开发 JavaScript API
React 文件下载组件:File Download
本文详细介绍了如何在React应用中实现文件下载组件,包括基本概念、实现步骤和代码示例。同时,探讨了常见问题如文件类型不匹配、文件名乱码等及其解决方法,旨在提升用户体验和代码可维护性。
736 2
|
存储 Oracle 关系型数据库
Oracle和MySQL有哪些区别?从基本特性、技术选型、字段类型、事务、语句等角度详细对比Oracle和MySQL
从基本特性、技术选型、字段类型、事务提交方式、SQL语句、分页方法等方面对比Oracle和MySQL的区别。
2243 18
Oracle和MySQL有哪些区别?从基本特性、技术选型、字段类型、事务、语句等角度详细对比Oracle和MySQL
|
机器学习/深度学习 人工智能 DataWorks
云上AI服务,中国最佳
云上AI服务,中国最佳
333 10