1。课程介绍

(一)。区块链前世今生

密码朋克--神秘组织(邮件组)

2。区块链核心概念与原理

(一)比特币是数字货币

为什么叫区块链?

因为比特币系统里面的数据是一个个的区块来存储,并且通过hash方式将一个个区块链接起来。这样就形成了一个区块的链条叫区块链。

什么是比特币?

一串数字可以用于货币交换叫数字货币或虚拟货币--比特币

比特币就是一个虚拟货币,它的价值来源于大家的信任。在区块链中通常称为共识。(大家认为它有价值就认为它是货币)

信任由何而来?

【1】。财产只受自己控制。(比特币系统中,财产只受自己的私钥控制)

【2】。无通胀 (不会因银行发行更多钞票而乏值)

【3】。没有假钞(任何作弊的支付都无法得到比特币网络中其他矿工的确认,无法完成支付,就无假钞)

【4】。流通性好 (点对点,省去中间环节)

(二)。去中心化记账系统

(三)。比特币原理

【1】账本如何验证

如下为一个原始账本,每人每台电脑上都存储一份,当有人修改记录时,账本不一致。需要少数服从多数原则一一比对。当用户量大的时候,麻烦。

比特币如何进行账本验证--哈希函数

Hash函数:hash(原始信息)=摘要信息

上述信息形成一个区块:

注:第二个账本比第一个账本推迟10min(比特币每10min更新)

摘要信息=hash [(上一个区块摘要信息--hash值)+(交易记录) ]

【2】所有权问题

账户所有权问题--比特币系统里是如何确定某个账户的比特币是属于谁的?

【银行】

【比特币系统】

比特币系统是点对点的交易,如何保证在没有第三方的情况下来确定账户所有权。

(1)。比特币是用一个地址来表示一个账号 (账本上不保存任何的个人信息)

谁能够用该地址进行支付,谁就拥有该账户的所有权。

(2)。一个地址会有一个对应的私钥。(私钥若丢失或泄露,则比特币数据会丢失。)

谁拥有这个私钥,谁就可以用这个地址进行支付。

比特币系统:账号 & 密码是没有关系的,不能用账号推算到密码,也不能反推。

比特币地址和私钥它是一个非对称关系。(私钥是经过一系列hash计算而成。)

如何在不进行泄露私钥的情况下,证明我们拥有某个地址的私钥?--非对称加密技术(交易签名)

签名分二步:

【1】。先对原始信息进行hash运算,得到摘要信息

【2】。运用摘要信息与私钥进行签名运算,得到签名信息

摘要信息  /  私钥信息  /  签名信息

在进行签名运算后,付款节点会在整个网络里进行广播,广播内容包括:交易原始信息 和 交易的签名信息

当各个节点通过验证后,会向附近的节点再次进行广播--验证通过。

验证点:

【1】。签名信息 :是否为付款方用私钥对原始的信息签名产生的。

签名:是加密过程

验证:解密过程

【3】为什么记账?(挖矿)

A。记账: Hash打包过程  (把交易的记录,交易时间,序号等进行hash打包的过程)

该hash打包过程是【消耗资源】的,那为什么各节点还要参与记账?

因为在比特币设计里完成记账的节点是可以获得比特币系统里一部分比特币奖励。(该奖励也是比特币发行过程)

记账有奖励,每次记账是新发行一定数量的比特币到记账的账户。(当前是12.5个比特币,1比特币=4万人民币以上)

因该奖励。大家争相的去记账,因此,会出现记账不一致问题。所以要有一定规则约束大家记账。

【4】以谁的账本为准?(共识机制)

必须其他接点认同,打包的区块才能够入链,否则即使打包了,也入不了链。

分叉解决方案:采用工作量最大的链作为主链。(工作量证明+最长链的选择)

3。课程总结与实践

视频地址:https://www.imooc.com/learn/988

002/区块链核心概念与原理详解(Mooc)的更多相关文章

  1. Storm概念、原理详解及其应用(一)BaseStorm

    本文借鉴官文,添加了一些解释和看法,其中有些理解,写的比较粗糙,有问题的地方希望大家指出.写这篇文章,是想把一些官文和资料中基础.重点拿出来,能总结出便于大家理解的话语.与大多数“wordcount” ...

  2. 微软Azure区块链开发工具包三大功能详解

    2018年11月15日,微软宣布了Azure区块链开发工具包,它基于微软的无服务器技术构建,并且利用微软和第三方SaaS,完美集成了区块链.该工具包扩展了微软的区块链开发模板和Azure Blockc ...

  3. ognl概念和原理详解

    一.问题的提出   在mvc中,数据是在各个层次之间进行流转是一个不争的事实.而这种流转,也就会面临一些困境,这些困境,是由于数据在不同世界中的表现形式不同而造成的: 1. 数据在页面上是一个扁平的, ...

  4. 整理jvm概念和原理详解以及gc机制

    注:源代码就是.java文件,JVM字节码就是.class文件 1. Java 堆(Java Heap):(1)是Java虚拟机所管理的内存中最大的一块.(2)在虚拟机启动的时候创建.堆是jvm所有线 ...

  5. 【转载】JAVA消息服务JMS规范及原理详解

    转载:https://www.cnblogs.com/molao-doing/articles/6557305.html 作者: moyun- 一.简介 JMS即Java消息服务(Java Messa ...

  6. JAVA消息服务JMS规范及原理详解

    JAVA消息服务JMS规范及原理详解 一.简介 JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应 ...

  7. 区块链轻松上手:原理、源码、搭建与应用pdf电子版下载

    区块链轻松上手:原理.源码.搭建与应用pdf电子版下载 链接:https://pan.baidu.com/s/1rKF4U9wq612RMIChs0zv8w提取码:hquz <区块链轻松上手:原 ...

  8. 【转】VLAN原理详解

    1.为什么需要VLAN 1.1 什么是VLAN? VLAN(Virtual LAN),翻译成中文是“虚拟局域网”.LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络.V ...

  9. CentOS 6.5 iptables原理详解以及功能说明

    CentOS 6.5 iptables原理详解以及功能说明 来源 https://blog.51cto.com/tanxw/1389114 前言 iptables其实就是Linux下的一个开源的信息过 ...

随机推荐

  1. bash_profile和bashrc区别

    [.bash_profile 与 .bashrc 的区别].bash_profile is executed for login shells, while .bashrc is executed f ...

  2. GUI学习之二十七——布局管理学习总结

    今天讲一个大的内容——布局管理. 一.布局管理的诞生背景 在前面所讲的所有案例中,我们都是用采用手动布局的方式来布局的.结合个案例来说明一下:在一个界面上放三个label,三个label纵向排列 fr ...

  3. 做股票软件用的各种k线图

    这是各种k线图地址: http://echarts.baidu.com/echarts2/doc/example.html 个人公众号谢谢各位老铁支持 本人qq群也有许多的技术文档,希望可以为你提供一 ...

  4. poj 3352 : Road Construction 【ebcc】

    题目链接 题意:给出一个连通图,求最少加入多少条边可使图变成一个 边-双连通分量 模板题,熟悉一下边连通分量的定义.最后ans=(leaf+1)/2.leaf为原图中size为1的边-双连通分量 #i ...

  5. JS基础篇--sort()方法的用法,参数以及排序原理

    JS基础篇--sort()方法的用法,参数以及排序原理   sort() 方法用于对数组的元素进行排序,并返回数组.默认排序顺序是根据字符串Unicode码点.语法:arrayObject.sort( ...

  6. Bugku web 计算器

    计算器 打开网页,想输入正确的计算结果发现只输进去一位数??? 遇事不决先F12看一眼源码,发现flag

  7. HDU 6153 A Secret ( KMP&&DP || 拓展KMP )

    题意 : 给出两个字符串,现在需要求一个和sum,考虑第二个字符串的所有后缀,每个后缀对于这个sum的贡献是这个后缀在第一个字符串出现的次数*后缀的长度,最后输出的答案应当是 sum % 1e9+7 ...

  8. Activiti的流程实例及挂起激活(七)

    1.1什么是流程实例 参与者(可以是用户也可以是程序)按照流程定义内容发起一个流程,这就是一个流程实例.是动态的.流程定义和流程实例的图解: 1.2启动流程实例 流程定义部署在 activiti 后, ...

  9. Python_020(几个经典内置方法)

    一.内置方法 1.内置方法表示:__名字__ 几种名称: 1)双下方法 2)魔术方法 3)类中的特殊方法/内置方法 类中的每一个双下方法都有它自己的特殊意义;所有的双下方法没有 需要你在外部直接调用的 ...

  10. websocket 传输数据帧打包 (client端)

    /* Vertion: 0.2.1 date: 2015.8.11 content: gcc 编译通过 */ //websocket 传输数据帧打包 client端 //参数:src 为输入字符串 / ...