主页 > imtoken下载链接 > 区块链基础知识点(一)
区块链基础知识点(一)
区块链基础知识点(一)
一、区块链技术
1. 什么是区块链?
去中心化、分布式、块存储数据库
· 存储所有账户余额和交易流的总账
·每个节点都有完整的账本数据
·账本数据记录所有历史交易数据
交易数据存储在区块上
每个区块包含前一个区块ID和HASH组成一个链
2. 区块链基础知识
如果将区块链作为状态机,每笔交易都是一次改变状态的尝试,每次共识产生的区块是参与者对区块中所有交易内容引起的状态改变结果的确认。
Transaction:导致账本状态发生变化的操作,例如添加一条记录
Block:记录一段时间内发生的交易和状态结果,是对账本当前状态的共识
链(Chain):由区块按照出现的顺序串联而成,是整个状态变化的日志记录。
3. 区块链要解决的问题
如何以去中心化的方式共享数据?
·如何保证账号不被盗用?
·如何保证足够的账户余额?
如何保证交易记录不被篡改?
· 谁负责记账?
· 如何保证簿记员的公信力?
· 如何保证簿记员的积极性?
4. 区块链功能
· 去中心化
开放性(无限制、开源、开放数据)
不信任(仅信任机器)
自治区块链基础技术有哪些,集体维护
可靠的数据库(不可更改,始终可访问)
匿名,隐私保护
5. 核心技术
P2P网络、数字签名、区块数据库、竞争记账权、共识算法、交易回溯。
二、P2P网络与通信技术(分布式技术网络)
1. 自动发现
通过种子文件获取初始节点(地址和端口)
连接初始节点,获取初始节点已知的Peer
·将自己的地址和端口广播给每个Peer
接收各个peer广播的地址信息,构建网络的全图或分片
2. 技术领域
·分布式存储、分布式计算、分布式协作
·组播
·流媒体
·搜索引擎
3. 通信协议
· napster、Gnutella、eDonkey、Bittorrent(文件分发协议)
· XMPP、Jabber(即时通讯协议)
Paxos、Gossip(分布式系统状态同步协议)
·JXTA
4. 使用HASH算法和非对称加密签名技术
每个节点和每个人都有一对唯一的公钥和私钥
公钥也是每个节点和个人的地址和账号
私钥是证明“我就是我”的唯一手段
·HASH算法对数据进行正则化
5. 算法
RSA、Elgamal、DH、ECC
·SHA256、 RIMPED160
6. 通常使用椭圆曲线算法来生成密钥对
比特币密钥长度:256 位
·公钥哈希 = RIMPED160(SHA256(公钥))
·比特币地址=1+Base58(0+公钥哈希值+校验码)
·校验码=前四个字节(SHA256(SHA256(0+公钥哈希值)))
7. 加密
发送者使用接收者的公钥加密数据
· 接收方使用自己的私钥解密数据
通常使用这个方面来交换对称加密的Key
8. 签名
发送方使用HASH算法计算数据的HASH值
发送者用自己的私钥对HASH值进行加密,得到签名
接收方使用HASH算法计算数据的HASH值
接收方使用发送方的公钥解密签名,得到发送的HASH值
比较两个 HASH 值的一致性
9. 参考
ElGamal 算法是一种比较常见的加密算法,它是基于 1984 年提出的公钥密码体制和椭圆曲线加密体制。它既可以用于数据加密,也可以用于数字签名,其安全性取决于计算离散对数的问题有限域。在加密过程中,生成的密文长度是明文长度的两倍,每次加密后的密文中都会生成一个随机数K。离散对数问题的几个性质主要应用在密码中:求解离散对数(可能)是困难的,而它的逆指数运算可以使用平方乘法有效地计算。也就是说,在适当的组 G 中,指数函数是单向函数。
·椭圆曲线密码系统是目前已知的公钥系统,它为每个比特提供最高的加密强度。求解椭圆曲线上离散对数问题的最佳算法是 Pollard rho 方法,其时间复杂度为 ,完全是指数级的。其中 n 是等式 (2) 中 m 的二进制表示的位数。当 n=234 时,大约为 2117,它需要 1.6x1023 MIPS 年。众所周知的 RSA 使用对于大整数分解这个难题,一般来说最好的分解算法的时间复杂度是次指数的,而当n=2048时,需要2x1020MIPS年,也就是说,当使用RSA密钥时为2048位,使用 234 位的 ECC 密钥的安全强度要高得多。它们之间的密钥长度相差9倍,当ECC密钥更大时,它们之间的差异会更大。较短的 ECC 密钥的优势非常明显,随着加密强度的增加,密钥长度变化不大。
DH Diffie-Hellman算法(DH算法)是一种密钥协商协议,是公钥密码系统的创始人Diffie和Hellman提出的一种思想。简单地说,它允许两个用户在公共媒体上交换信息,以生成可以共享的“一致”密钥。也就是说,甲方生成一对密钥(公钥、私钥),乙方根据甲方的公钥生成乙方的密钥对(公钥、私钥)。以此为基准,作为数据传输保密的基础区块链基础技术有哪些,双方使用相同的对称加密算法构造本地密钥(SecretKey)对数据进行加密。这样,在交换本地密钥(SecretKey)算法后,甲乙双方公开自己的公钥,使用对方'加密数据 s 公钥和刚刚生成的私钥,可以同时使用对方的公钥和自己的私钥进行数据配对。解密。不仅是甲乙双方,还可以扩展为多方共享数据通信,从而完成网络交互数据的安全通信!该算法源自中国同余定理——中国剩余定理。
三、区块链数据库
1. 典型特征
去中心化、分布式、块存储数据库
块(标题+正文)
·链
·随机数
· 时间戳
·包含父区块创建之后和本区块创建之前的所有交易;
·满足一定条件的区块HASH;
a) SHA256(SHA256(版本 + prev_hash + merkle_root + ntime + nbits + x )) < 目标
b) Target值由动态难度系数决定,Target越小难度越高;
2. 参考
Merkle 树是由一组叶节点、一组中间节点和一个根节点组成的二叉树。最底部的一组叶子节点包含基本数据,每个中间节点是它的两个孩子的哈希,根节点也是它的两个孩子的哈希,代表默克尔树的顶部。Merkle 树的目的是允许块数据零碎传输:节点可以从一个源下载块头,从另一个源下载与它们相关的树的其余部分,并且仍然能够确认所有数据都是正确的。
Merkle 树协议可以说对比特币的长期可持续性至关重要。2014 年 4 月,比特币网络上的一个完整节点——存储和处理所有区块的全部数据的节点——占用了 15GB 的内存,并且以每月超过 1GB 的速度增长。简化支付验证(SPV)协议允许存在另一种类型的节点,这样的节点称为“轻节点”,它下载块头,使用块头确认工作量证明,然后只下载“分支” Merkle 树的“与其交易相关”。这允许轻节点通过仅下载整个区块链的一小部分来安全地确定任何比特币交易的状态和账户的当前余额。
四、记账权竞争与奖励制度(挖矿)
1. 概述
为了防止可预测的记账节点被控制或攻击,导致错误记账行为,区块链技术采用了竞争记账权的做法:
任何节点都可以参与记账,记账节点不可指望,不易被控制
比赛的过程就是看谁先算出满足条件的HASH值
每次计算都必须从最后一个有效块开始,消耗大量计算机CPU,增加伪造会计数据的成本
计算结果必须得到大多数节点的认可(共识算法)才能成为新区块。在实际算法中,如果该区块在最长的区块链上,则为官方认可的区块,即大部分节点认可计算结果,并愿意在该结果下继续计算。
这个过程称为挖掘或工作证明 (POW)。参与挖矿的节点称为矿工,参与协同挖矿的矿工联盟称为矿池
a) 以上一个区块为起点,计算满足条件的HASH值;
b) 将计算结果广播给其他节点;
c) 当其他节点验证计算结果正确时,将识别结果,并以结果为起点重新计算;
d) 当单位时间内达到共识批准要求时,该区块成为正式批准的区块。
这个过程称为系统鼓励挖矿积极性,奖励竞赛成功的记账节点
a) 给每个区块矿工一个直接的“现金”奖励。例如,比特币网络提供 25 个 BTC,以太坊提供 5 个 ETH;
b) 以太坊:包含在区块中的交易费用由发起节点和记账节点分摊(发起节点占 75%,记账占 25%)。
2. 参考
比特币使用的 SHA256 算法有 2^256 个输出。如果我们做 2^256+1 个输入,必然会发生碰撞;即使从概率的角度来看,如果我们进行 2^130 次输入,就会有 99% 的机会发生碰撞。但我们可以计算出,假设一台计算机每秒散列 10,000 次,则需要 10^27 年才能完成 2^128 次散列!这时候我们需要考虑一种情况:如果两个矿工同时得到一个正确的答案,并且各自生成一个区块并广播出去,会发生什么?这时,区块链上同一位置有两个区块,出现了所谓的“分叉”。分叉是绝对不允许的,所以当矿工发现区块链分叉时,会选择最长的继续计算,较短的会被丢弃。