前言

区块链是未来价值互联网发展的一个方向,具有广泛的应用前景。于是,我的本科毕设方向选择了区块链在数据共享应用的方向。前期我看了关于区块链简介的一些书籍,以及关于数据共享中的联邦学习的一些介绍。但是,我认为光看一些纸质的材料,始终不够深入。于是,我近期开始观看北大肖臻老师的区块链课程,并尝试做一些记录。

区块链的历史及其应用

区块链被认为是下一代价值互联网,因为其具有不可篡改、共识、公开透明、可溯源的特性。同时,它也被认为是最慢的数据库,因为随着时间的积累,全节点需要存储的信息会逐渐增多,维护成本将会超出其可能收益。自2008年中本聪设计的比特币问世后,全球加密货币逐渐形成了一个大爆发的趋势。早期阶段的矿工所积累的财富至今日已不知翻了多少番。所以,加密货币已然成为了一种商业模式,一种投资方式。继比特币之后,2015年由V神设计的以太坊中的以太币也成为了主流加密货币之一。

比特币(BTC)中的密码学原理

BTC中的密码学应用主要包括两个
1.哈希
2.签名

哈希是什么?

在数学中,所谓哈希就是一种映射关系。在BTC中,采用的哈希算法是SHA-256,即secure hash algorithm,输出的空间是256bits的。也就是不论输入空间有多大,其输出空间都保持不变。

SHA-256具有以下三个特性,来保证BTC系统中的公私钥安全:
1)collision resistance free:对 x != y, H(x) != H(y)
2)hiding:x -> H(x), 反之不然
3)puzzle friendly:只能通过逐一实验,即brute-force的方法查出落在某个输出的可能输入,没有其他捷径可走

这里需要注意的是,性质1在这里是相对的,严谨地说,是大概率不可能出现碰撞的情况。但如MD5加密算法,目前已经找出了制造碰撞的方法,因此该方法已被弃用。

为了避免在BTC中输入空间过小而导致brute-force难度不大的情况,设计者在block header(区块头)处引入了随机数nonce,这样H(x || nonce)就可以足够随机。

ps:所谓的挖矿,即找出合适的nonce,s.t. H( x || nonce) <= target
首先找出nonce的矿工获得记账权,即编写下一个合法区块的权利

如何建立一个BTC账户?

不同于中心化的银行开户,需要用身份证进行身份校验。BTC的注册无需其他验证,它会自动生成一个(公钥,私钥)对。其中,私钥自己保管好,而公钥的哈希值则对外公布并作为自己的地址。当别人向自己转账的时候,就可以直接向这个公钥的哈希生成的地址转账。

什么是签名?

所谓签名,即利用私钥生成的一个用于他人识别自己身份的序列。比如,我用私钥对交易签名,区块链网络上的其他节点将会用我的公钥验证签名。如果匹配,则说明我确实是该账户的主人,具有使用该地址中BTC的权利;反之,我则是冒名使用BTC的坏人。

这里有一个疑点:如果两人公钥和私钥完全重合岂不是可以偷别人的钱?

这是无需担心的,因为BTC机制保证了生成密钥的随机性,这种情况在概率上可以忽略。

这里采用的是非对称加密的方式,即加密和解密的密钥是不相同的;这就解决了对称加密中存在的密钥分发安全问题。

结语

这是本人第一次在CSDN上写博客,如有错漏之处,希望各位dalao不吝赐教!!!

区块链(BTC)学习总结1相关推荐

  1. Comunion 区块链深度学习系列|区块链的发展历程

    打开一切科学的钥匙都毫无异议地是问号,我们大部分的伟大发现都应当归功于如何?而生活的智慧大概就在于逢事都问个为什么? -- 巴尔扎克 之前写过一篇区块链新手学习要有系统性的文章,也有读者获取到了学习视 ...

  2. 区块链需要学习哪些东西_区块链主要学习哪些知识?

    原标题:区块链主要学习哪些知识? 就业市场分析公司Buring Glass发布的数据显示,2017年区块链行业就业岗位发布数量同比增长115%,而根据Indeed.com统计结果,这一数字则达到了惊人 ...

  3. 通过python构建一个区块链来学习区块链

    了解区块链Blockchains如何工作的最快方法就是构建一个区块链.你来到这里是因为,和我一样,你对加密钱币的崛起感到很兴奋.而且你想知道区块链是如何工作的,想了解它们背后的基本技术. 但理解区块链 ...

  4. 如何使用区块链币收款地址找合约地址?_区块链技术学习指引

    本文原文链接 本文为博客文章索引,小白必看.有新文章时会更新本文,建议大家加入收藏夹中,如果你觉得本站不错,欢迎你转发给朋友. 引言 给迷失在如何学习区块链技术的同学一个指引,区块链技术是随比特币诞生 ...

  5. 开营 | 未来杯区块链技术学习营狂撒2万元现金奖励!速进~

    2021未来杯区块链应用创新大赛已于9月24日正式启动!本届大赛是由中国信息协会主办,中国信息协会教育分会.艾肯文化传媒(北京)有限公司.中软国际教育科技集团.以太坊行星承办,北京大学研发实验服务基地 ...

  6. 区块链需要学习哪些东西_区块链课程需要学习哪些内容?

    现阶段随着区块链技术和相关应用的发展,区块链领域正在变得炙手可热,很多朋友看到了区块链的发展前景和空间,纷纷投身于区块链的学习中.那么,区块链课程需要了解哪些内容呢? 1.区块链主流语言--Go语言. ...

  7. 区块链基础学习(二)

    二.以太坊介绍 首先我们要知道我们为什么要学习以太坊,主要有以下四个原因: 以太坊是区块链2.0的代表,学习以太坊能了解到区块链技术的所有知识 引入了智能合约,拓宽了区块链的应用场景 对开发者友好.对 ...

  8. 区块链基础学习(一)

    一.区块链简介 1.1.区块链与区块链技术 区块链是将记录(区块)通过密码学串联并加密的链式数据结构.而区块链技术,是通过P2P网络和区块链来实现数据存储的去中心化.不可逆和不可篡改.比特币正是构建在 ...

  9. 区块链需要学习哪些东西_区块链入门需要学哪些知识?

    区块链入门需要学哪些知识? 区块链技术近年来发展迅速,全球范围内都掀起了区块链的热潮. 那么区块链入门需要学哪些知识? 首先学习区块链需要知道区块链与编程语言之间的关系 1.区块链是一种编程思想,使用 ...

  10. 尹成学院区块链 Go 学习大纲-取得大纲试看视频联系微信yinchengak48

    网址:http://www.1cxy.net GO技术交流QQ群:254416566 所处阶段 主讲内容 技术要点 学习目标 第一阶段Go语言开发入门实战 1.Go语言介绍及开发环境搭建 1.Go语言 ...

最新文章

  1. 数据科学 | Python数据科学常用库
  2. 语义分割--Efficient Deep Models for Monocular Road Segmentation
  3. 如何使用 Visual Basic 脚本添加默认打印机
  4. study notes for python
  5. c++从txt中读取数据,数据并不是一行路径(实用)
  6. centos6.8自带mysql_CentOS6.8下MySQL数据库版本信息查看
  7. oid 值 内存使用_JVM:对Java内存模型的理解,你还停留在面试阶段吗?
  8. tina中信号带宽_如何理解选择示波器带宽的5倍法则 ?
  9. 将bin文件以16进制字符显示
  10. mysqld.exe 无法找到入口
  11. 对接环信踩坑记(环信客服+IMSDk即时通信)
  12. centos7搭建ftp服务
  13. 天原笔记(2)——气团与锋
  14. Linux 系统设置 : insmod 命令详解
  15. VB循环结构之For Each...Next详解
  16. Java流程控制和方法
  17. WEB 视频开发-强大的MSE
  18. 计算机信息学院活动简报,青海师范大学计算机学院“善行一百”活动简报
  19. ghost的使用技巧
  20. web _html_css_七大选择器

热门文章

  1. 人脸对齐:Wing Loss人脸关键点检测算法2018
  2. 数据中台在企业数字化转型中的践行(上篇)
  3. 锐角三角形的一些结论及证明
  4. Pollard rho 算法求解离散对数问题
  5. Python开发——16.HTML
  6. 基于Java 生产者消费者模式(详细分析)
  7. 妙!云服务器远程登录,本地听声音
  8. jQuery 官网下载js
  9. windows安装choco
  10. 【读书笔记】【目标:提升记忆力】申一帆记忆力课程