比特币的概念

众所周知,比特币是数字货币
比特币相比我们的纸质货币,有以下优点:
1、财产可控,不像银行可以冻结你的账户,比特币不受他人控制
2、无通胀烦恼。银行可以根据经济情况,去印刷更多的钱,但比特币的总量是不变的(2100万个)。
3、比特币无假钞。这是比特币的一个明显优势
4、比特币的交易,不受国家地域限制。

区块链概念

密码朋克中的一个重要的人:中本村,2008年《比特币:一个点对点的电子现金系统》。把区块链中的技术提炼出来,慢慢就有了区块链的概念。

区块链是一系列技术的集合。
比特币系统中的数据是由一个个的区块存储的,并且通过hash的方式把一个个区块连接起来,就形成了一个区块的链条,所以把它称之为区块链。

区块链应用场景:

1、记账方面
股权交易等
2、资产方面
交易,结算,支付
3、不可篡改
各种证明,众筹等
4、点对点
共享经济等,解决互相不信任的问题
5、隐私
匿名交易,没有人知道我有多少比特币,只有当我交易的时候去验证能不能交易

比特币的去中心化

中心化就是所有数据都记录在一个地方,包括新增删除验证查询等‘
去中心化就是数据保存在每个地方,那直接就会引出两个问题:
如何验证和所有权问题
简单点就说,如何证明你的就是你的,以及如何证明你说的就是对的

验证:使用hash函数

这里的hash函数,可以理解为md5加密的那个hash,最显著的一个特点就是不可逆。
举例,Hash(a)得到b,那只要a发生变化,比如Hash(a1)就得不到b了,同时我们也不能通过b来反向得到a。
有了这个基础,那我们可以把序号+时间戳+hash值当成区块的头,
每次用hash值和交集记录,得到新的hash值,即形成新的区块头。
如下图,每个区块就是一个交易记录的打包,每个人最终只需要比对最后一个hash值是否和自己的一致,即可知道是否正确。

所有权:非对称加密技术

先类比银行,银行是通过我们在开户的时候,输入自己的信息,设置密码等一系列操作,从而让银行把这个账号的所有权给予我们自己。
而比特币的转账,是没有类似银行这样的第三方的。
比特币支付,主要有三个参数记录:出账地址,收账地址,和交易金额。
地址是公开的,而我们本地就会有一个私钥,私钥是生成这个地址的唯一来源,只有这个私钥,才能生成地址,而地址并不能反推出私钥。
所以说,私钥是绝对保密的,而且忘记后不能找回,谁有私钥,谁就可以交易

那又有一个问题:如何在不泄露私钥的前提下,证明我们有这个地址的私钥
那就是使用签名。
学习过https的同学,对这块应该很熟悉了。
签名过程:
1、先对原始交易记录hash运算,得到摘要信息7a7b34c5d
2、用摘要信息7a7b34c5d和私钥a6d77a88e0进行签名运算,得到签名信息5c3c5d2d6a

得到签名信息后,就会对所有账户进行循环广播通知,广播通知的信息包括:
交易原始信息:出款地址,收款地址,交易金额
签名信息:5c3c5d2d6a
这个广播操作,相当于说对所有人说,我是出款地址,我向收款地址交易了多少多少,签名信息是5c3c5d2d6a,,大家帮我验证一下
收到广播的节点,开始验证过程:

很容易理解:
签名就是非对称加密过程,即用付款信息的hash值和私钥进行加密,得到签名信息
而验证就是非对称解密过程,即用签名信息和付款地址进行解密,得到付款信息的hash值
这样问题就解决了,账户交易所有权由私钥控制,并且私钥也没有泄露出去。

什么是挖矿

听过挖矿的人,大概都知道挖矿很耗电,就是不断计算。那为什么要不断计算呢?

上面说的验证,也就是记账,其实是很消耗资源的,因为每天不知道多少比交易,没有节点会甘愿免费验证。
所以比特币系统提供了一种奖励机制:记账就有奖励。
有了这种奖励机制,大家又会争着记账,于是有了以下规则:
规则1:一段时间内(一般是10分钟)只有一个人可以记账成功。
规则2:可以通过解决密码学难题,即提高工作量来竞争获得唯一记账权。
规则3:其他节点只是复制记账结果。
所以说,谁能解决密码学难题,谁就更有可能记账,从而得到奖励
那什么是这个密码学难题呢?
我们之前说到,一次验证就是hash(上一个hash值,交易记录)得到新的hash值
这样有点简单了,几乎所有人都可以快速完成。
那为了保证一段时间内,比较容易的选出一个人,就必须要提高记账的难度。
于是,hash方式就变了,加入一个随机数,变成以下:

hash(上一个hash值,交易记录,随机数)得到新的hash值
而这样就会对新的hash值有要求了,需要新的hash值满足若干个0开头,比如0000a6h7jj85。
我们知道hash的数字,只要稍微修改一点,就会引起值的大范围变化,所以在hash的时候,就可以不断修改随机数,从而得到全新的hash值。
理论上只要我们不停的用随机数hash,总会得到满足条件的hash值。
现在基本上普通电脑,如果要得到四个0开头的hash值,基本在1~2分钟左右。
而现在比特币由于参与竞争的人太多,所以难度就会提升,已经到了需要18个0开头的hash值,谁率先找到这个hash值,就可以获得一个唯一记账权

那找这个hash值的过程,很有随机性,也就叫挖矿,拿到唯一记账权,就可以说是挖到矿了。

挖矿步骤

1、收集广播中还没有被记录账本的交易
2、交易的有效性验证
3、添加一笔给自己转账的交易(就是挖矿奖励)

估算一下拿到记账权的难度

好比如,现在需要得到新的hash值,需要以18个0开头。
hash是16进制的,
那如果第一位要得到0,平均需要16次计算。
如果前两位都要得到0,平均就需要16*16次计算,即16的2次方。
以此类推,如果要得到前18个0,就需要16的18次方次计算
所以现在都是多人联合挖矿,挖到后再分成,很少有独狼。
简单分析下,比如挖到矿能得到10万人民币,那只要挖矿成本小于10万,就有人去挖矿,挖矿的人越多,计算难度就会变大,挖矿成本也会变大,所以最终会达到一个平衡的状态,即平均差不多花10万的成本,挖出10万的矿。

共识机制

虽然计算难度增大,那也可能会出现有多个节点同时完成工作量的情况,那这种情况,要使用谁的区块呢?
首先,每个计算节点都要遵守规则,即节点的工作量只有在其他节点认同时才是有效的。那这个规则,就是共识机制。

共识机制:每个节点,只认可累计工作量最大的区块链,即大家都去找最长的链

举个例子:
现在已有链#1213<–#1214
大家开始挖矿,挖#1215,某个时刻,甲乙二人同时挖到了,
甲延长区块链#1215A,乙延长区块链#1215B,然后甲乙分别将自己的结果广播出去。
这个时候就出现的分支,那到底用哪个呢?
这时丙收到甲的广播信息,对丙来说,此时最长的区块链是到#1215A,于是丙又开始算,去竞争下一个区块。
和丙类似,丁此时收到了乙的广播信息,丁认为此时最长的区块链是#1215B,于是丁开始以#1215B开始竞争下一个区块。
又在某个时刻,丙先算出来了,于是他将区块链延长至:
#1213<–#1214<–#1215A<–#1216丙,并广播出去
至此,网络中其他节点收到这个#1216丙,和#1215B,就知道丙的这个是最长的。
那么最终就会选用#1213<–#1214<–#1215A<–#1216丙作为最终的链,原来乙的那条链,也就废掉了。

交易确认时间

比特币将出块时间设计成10分钟,其实是在更快的交易确认和更低的分叉直接做了妥协。
确认时间如果很短,那么交易确认就会频繁,分叉就会很多
确认时间如果很长,分叉减少,但交易确认就很慢
所以既要保证交易确认快,由不能有太多分叉,才选了10分钟。

后续

以上只是比特币和区块链的一些简单概念理解,更深层次的知识,还要继续挖掘
1、比特币的P2P网络
比特币的节点,都是点对点通信的,没办法知道其他服务的ip,每个服务器都是随时可能上线,随时可能下线的,那一个节点是怎么连接到其他节点的呢
2、区块结构:Merkle数]
比特币的存储信息想细节
3、比特币白皮书
4、比特币交易脚本
5、如何将区块链技术运用到项目实战中

讲讲我对比特币和区块链的认知,挖矿不难,挖到难相关推荐

  1. 深入了解区块链中的挖矿过程及其意义

    在区块链中,挖矿是一个非常重要的概念.挖矿过程是通过计算机运算来验证和确认交易,并将其记录在区块链中.在本文中,我们将为您介绍区块链中挖矿的过程及其意义. 什么是挖矿 挖矿是指通过计算机运算来验证和确 ...

  2. 全球比特币和区块链领域创业企业全景图

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 全球比特币和区块链创业企业中,美国的数量占全球55%,其次为英国占6%,新加坡占3%,中国仅占2%! 荷兰的BitFur ...

  3. 在区块链上表白——使用C#将一句话放入比特币的区块链上

    最近在看区块链和比特币的知识,顺便简单研究了一下BitCoin的脚本语言,发现OP_RETURN这个命令可以在后面放入自己想说的内容,很多侧链啊,公证之类就是利用了这个特性,可以把一句话,或者一个哈希 ...

  4. 区块链比特币开源_开源资金:比特币,区块链和免费软件

    区块链比特币开源 无论您是相信区块链技术已准备好改变世界还是在转瞬即逝,都可以肯定的是:关于区块链的技术和法律问题如今已浮现在每个人的脑海. 人们常常想知道:比特币是"开源的"吗? ...

  5. 哈佛创业者讲述:比特币与区块链背后的真相 | 硬创公开课

    新年伊始,比特币过山车式的行情让人不解,一群不明真相的吃瓜群众甚至就此加入追涨大军然后沦为韭菜.而因为是比特币底层技术的区块链,近来也呈现出行情高涨的态势,但同时也存在一部分关注该行业的人群未能真正认 ...

  6. 区块链数字货币挖矿专业名词解释,让你告别矿圈小白!

    很多人都是先从听说比特币兴起,然后进入数字货币的圈子.区块链的概念很多,各种专业术语让人头晕眼花.莫名其妙,新人小白进入币圈很难一时明白这到底是什么?今天我们 "泛圈" 就针对一些 ...

  7. 认识区块链,认知区块链— —数据上链

    上周末参加一次长沙本地胡子互联网俱乐部举办的区块链分享会,颇受启发,同时感谢俱乐部提供的这个交流平台,祝好.好吧,还是先把前些天对区块链的一点理解简单整理下,再回顾下上周末的参会纪要比较好,下篇给大家 ...

  8. YEX黄建:脱离比特币谈区块链,要么真傻,要么装疯卖傻丨区块链十人谈

    如果说2017年是属于虚拟货币的一年,那么2018年的区块链将是生态和应用的一年,随之而来的也将是新的玩法.新的赚钱姿势.为此,雷锋网推出"区块链十人谈"(十人者,取是知众人博所长 ...

  9. 比特币:区块链的最基础实现

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 我并不是说比特币本身注定要失败.我所指的是,我认为区块链纯粹作为货币的实施注定远没有世界认为的那么成功.这包括诸如Lit ...

最新文章

  1. PoPo数据可视化第9期
  2. 导致定时器失效_IIS进程回收导致定时器失效的解决方法(CMD命令)
  3. Keras实现mode.fit和model.fit_generator比较
  4. Android双列表联动和固定头部ScrollView效果实现
  5. CodeForces - 1339C Powered Addition(思维+贪心)
  6. Oracle新手笔记(2) 关于Oracle 9i或9i以上版本客户端连接Oracle 8i及8i版本以下服务器端中文字符乱码的解决办法...
  7. 译 | 在 Azure SQL 上节约成本的八种方法
  8. openOCD安装 极简教程
  9. 让程序暂停几秒_如何构建一个简单的Python提醒应用程序
  10. 深入解读Linux进程调度系列(7)——调度与CPU隔离
  11. acc 蓝牙_蓝牙中的三种音频编码:Apt-X、SBC、AAC,请问分别有什么区别?
  12. 视频压缩工具及使用方法
  13. Window10笔记本电脑如何更改默认浏览器
  14. oracle的显示和隐式,oracle的显式受权和隐式授权(转)
  15. 跟着实训团初学HTML的第一天
  16. 大咖发声 | 聊聊互联网安全建设从0到1的那些事儿
  17. (总结1)多机器人系统动态任务分配
  18. Robot Framework自动化测试教程-通过RIDE创建工程、测试套、测试用例、测试资源、变量文件,引入测试库
  19. rv1108 GMAC 以太网接口的介绍
  20. 618年中大促 ,全场6折起!限量周边8件套!

热门文章

  1. 16 操作系统第四章 文件管理 文件的基本操作 文件共享 文件保护 文件系统的层次结构
  2. 849. 到最近的人的最大距离
  3. 【bzoj 3601】一个人的数论 (莫比乌斯反演+伯努利数)
  4. 解决PendingIntent传递参数为空的问题
  5. PHP中的中文截取乱码问题_gb2312_utf-8
  6. 1_RabbitMQ初入门入门Hello消费者+生产者
  7. 牛客21297 手机号码
  8. Leetcode--225. 用队列实现栈(Java)
  9. 下取整函数的含义_取整函数解读
  10. unordered_map使用自定义enum作为键值