区块链基础入门笔记 一
Posted gronkie
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链基础入门笔记 一相关的知识,希望对你有一定的参考价值。
- 比特币用了密码学的两个功能,一个是哈希,一个是签名
- 哈希碰撞:例有两个数,x和y,若x != y,但h(x) == h(y),则称为哈希碰撞,哈希碰撞是无法避免的,因为输入空间是大于输出空间的
- 哈希函数具有的重要性质:
- collision resistance(抗碰撞性):即没有什么人为高效的方法去制造碰撞,只能穷举输入空间所有数
- 通过抗碰撞性质,即可证明可以通过hash函数判断数是否被篡改,例h(m),当m被人为篡改后,hash值理应不同
- 但是没有哈希函数能在数学上证明抗碰撞性,只能通过实践中的经验,例md5,之前认为很安全,但后面发现可以制造哈希碰撞的方法
- Hidding(隐秘性):通过x能算出h(x),但无法通过h(x)反推出x,即h(x)没有泄露x的信息
- 该性质成立的前提为输入空间足够的大,且没有将大部分概率分散到小部分空间,即分布较均匀,防止穷举找到x
- 当输入空间较小时,可通过在后面加上一个随机数,来满足数足够分布均匀和满足输入空间足够大
- puzzle friendly:在数m通过哈希函数函数求出h(m)之前,不能知道h(m)将会若在哪个范围
- 挖矿的本质为找出H(block header) <= target,block header即区块链中某个结点(区块)的块头,其中有很多域,其中nonce域是我们可以设置的,而挖矿的过程即不停的寻找随机nonce,使得其满足上面的式子,而puzzle friendly性质本质是说,挖矿的过程没有捷径,只能通过不停的尝试来的到哈希值小于等于目标值的数
- 由于puzzle friendly,所以挖矿过程才能做为proof of work(工作量证明),因为找到了nonce符合要求,一定是做了大量的尝试工作,虽然挖矿很难,但验证很简单,只要计算一个哈希值即可
- 比特币用的哈希函数为SHA-256(Secure Hash Algorithm),该函数满足哈希函数的以上三个性质
- collision resistance(抗碰撞性):即没有什么人为高效的方法去制造碰撞,只能穷举输入空间所有数
- Sealed envelope(密封的信封),例一个人预测第二天股票结果,则他不能将结果公开,避免他人受到影响导致股票被影响,也不能将结果保存在自己那里,避免自己去修改,他可以将结果放在密封的信封里公开保存,到第二天再打开查看预测结果,判断是否正确。而我们可以通过哈希函数的collision resistance和hidding来实现,第一天将预测结果x得到的h(x)公开,他人无法通过h(x)得到x,股票不会受到影响,第二天再把x公开,可通过比较哈希值,防止篡改预测结果x
- 由于比特币是去中心化,所以不能像在银行开账户一样,但可以自己开通账户,不需要任何人批准开户,即在本地创建一个公私钥对,在比特币中就代表一个账户,公私钥对概念来源于非对称加密
- 对称加密:加密与解密过程中用到的是同一个密钥,这样的话密钥的分发就不是很方便,当网络被窃听时,可能会导致数据信息被盗窃
- 非对称加密:加密与解密过程中用到的是一对密钥,在传输过程中,发送方将数据通过接受方的公钥加密后发送,再通过接受方的私钥解密,公钥是可以公开的,私钥是保存在本地,不被公开的
- 这个公钥相当于银行账号,发送方转账时只用知道接受方的公钥就行,私钥相当于账户密码,知道密码时,就可以把该账户的钱转走
- 公钥私钥的作用即用来签名,比如有a要转比特币给b,要把交易放到区块链上,别人需要知道该交易是否是a发起,是否存在冒名顶替,即验证交易真实性,需要在交易时,a用自己的私钥对交易进行签命,其他人收到这个交易时,可以通过a的公钥来验证签名的正确性
- 例256位哈希值情况,随机生成公私钥对与已经存在的公私钥对相同的概率可以视为0,概率极低,前提是我们假设有一个好的随机源,比特币不仅要求生成公私钥时有好的随机源,还要求每一次签命的时候都有好的随机源,否则有可能会泄露私钥。简单来说,一个良好的随机源应该包含如下特性:
- 不可预测:任何时间点任何个体和群体都不能预测为发布的随机数
- 没有偏向性:最后的输出分布完全是随机的,不能有任何的倾向性
- 公共可验证:在随机数生成之后,任何人都可以进行验证
- 去中心化:随机数的产生应当是由一群独立而且活跃的个体产生出来
- 可获得性:系统必须保持持续运行,总是(按照节奏)不断地输出随机结果
2018最新区块链技术,从入门到精通视频教程(比特币基础技术)
2017最新区块链技术,从入门到精通视频教程(视频+源码+工具)
最新整理区块链技术视频包含开发工具,源码,视频教程,从小白到大神,分享给大家学习。
区块链最早是比特币的基础技术,目前世界各地均在研究,可广泛应用于金融等各领域
区块链的基本原理
交易(Transaction):一次操作,导致账本状态的一次改变,如添加一条记录;
区块(Block):记录一段时间内发生的交易和状态结果,是对当前账本状态的一次共识;
链(Chain):由一个个区块按照发生顺序串联而成,是整个状态变化的日志记录。
如果把区块链作为一个状态机,则每次交易就是试图改变一次状态,而每次共识生成的区块,就是参与者对于区块中所有交易内容导致状态改变的结果进行确认。
课程环境
Windows + Mist + eclipse 等
软件准备
Mist WebStorm 等
课程基础
对html css js等有一个基本的了解
涉及语言
Go Solidity JavaScript等
课程目录:
- 第1课 区块链介绍
- 第2课 客户端安装及运行
- 第3课 以太坊网络
- 第4课 智能合约编程入门
- 第5课 Solitidy复杂变量类型
- 第6课 Solitidy 方法
- 第7课 Solitidy 继承 和 事件
- 第8课 Solitidy 编程实战
- 第9课 Solitidy 编程实战
- 第10课 去中心化应用Dapp项目实战
感谢您的关注!可加QQ1群:135430763,QQ2群:454796847,QQ3群:187424846。QQ群进群密码:xttblog,想加微信群的朋友,可以微信搜索:xmtxtt,备注:“xttblog”,添加助理微信拉你进群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913[email protected]邮箱。商务合作可添加助理微信进行沟通!
以上是关于区块链基础入门笔记 一的主要内容,如果未能解决你的问题,请参考以下文章
2018最新区块链技术,从入门到精通视频教程(比特币基础技术)