看完这个视频,你会比99.999%的人懂区块链

区块链
是什么?
去中心化的数据库
原理和组成?
账户(中心化数据库:只有数据库管理人员可以创建账户):
- 任何人都可以创建账户(通过钱包app或代码);
- 可以往账户里放代码,被其他账户调用(智能合约):别的账户通过调用这个账户和账户里的应用进行交互;
- 组成:
地址:账号
密钥:密码(不被存储,保证安全)(密钥丢失的解决方案:multisig钱包等)
数字签名:
1. 怎么证明一条消息是谁发的
非对称加密/公私钥加密[1]:即用私钥签名、公钥验签
公钥vk <= 一一对应,公钥/私钥加密可用私钥/公钥破解 => 私钥sk
2. 怎么证明一条消息有没有被篡改
交易的哈希值(指纹):
交易M =生成哈希值=> 指纹 H(M) =私钥sk签名=> 数字签名S(H(M))
btc交易里包括:交易数据M,公钥vk,数字签名S(H(M))
每个账户对应一个私钥
私钥生成公钥,公钥生成地址
想 操作地址(交易) 必须用私钥对 操作(交易数据) 的哈希值进行签名
公钥验签,证明消息来自私钥拥有者
验签得到的哈希值等于交易的哈希值则证明消息没被篡改
交易
被账号的私钥签名过的一系列指令
区块链的状态通过交易得到改变
区块:存放被公认的交易记录(是一系列的交易)
区块头:存放区块最基础的数据
(包括:区块对应的状态所存的地址、区块对应的交易所存的地址(交易的哈希值)、上一个区块的哈希值)
通过 区块头 我们可以找到此区块中包含的交易
区块链上的新的状态变化(新的交易)加入各个节点的方法:
所有区块链上的交易都会通知整个区块链网络(所有节点都能收到新的交易)
每隔一段时间选一个节点生成一个新的区块,其他节点检查是否合法,如果合法,新区快的生成者会获得一定的虚拟货币奖励。
共识机制
!怎么选择节点(新区块的选取):
- 不能让节点不付出代价地参与随机抽取(开放共识体系不可能存在[2])
- 节点必须付出资源才能参与新区快的生成
区块链的种类:
工作量证明(proof of work)—— 付出计算资源 —— btc、eth 1.0
权益证明(proof of stake)—— 付出金钱资源(抵押资金越多越有机会被抽中生成新区块)—— eth 2.0、cardano
——分支:历史证明,更公平—— solana
空间证明(proof of space)——付出储存资源—— chia、filecoin
区块链给到节点的预期收益必须大于节点预期付出的资源(虚拟货币奖励)
!以哪个节点的区块历史为准:
背景: pow区块链中两个节点同时解答出结果 等情况会造成不同节点历史不一样(分叉)
一般以最长的链为准(nakamoto共识算法):被最多的资源认证/经过最多证明,最可靠
加密经济学(用经济学原理让不同节点达成共识)
- 节点选择最长的链的动机:经济利益
- 但是节点还是有一定的动机发起51%攻击,解决办法:让攻击的预期收益远低于支出
更广义的区块链
layer 2:应用层(智能合约)
layer 1.5:计算层(智能合约运行的环境,储存智能合约运行的状态、数据、逻辑)=> 广义 (一台去中
layer 1:共识层(狭义区块链) => 区块链 心化的电脑)
去中心化的电脑被所有使用者共享
[1]
RSA公钥和私钥是什么?
首先来说,RSA是一种非对称加密算法,它是由三位数学家(Rivest、Shamir、Adleman)设计出来的。
非对称加密是相对于对称加密而言的。对称加密算法是指加密解密使用的是同一个秘钥,而非对称加密是由两个密钥(公钥、私钥)来进行加密解密的,由此可见非对称加密安全性更高。
公钥顾名思义就是公开的密钥会发放给多个持有人,而私钥是私有密码往往只有一个持有人。
公私钥特性
- 公钥与私钥是成对出现的;
- 私钥文件中包含了公钥数据,所以可以基于私钥导出公钥;
- 密钥越长,越难破解,所以2048位密钥比1024位密钥要更安全;
- 公钥和私钥都是密钥,被公开的那个就是公钥,没有被公开的那个就是私钥。
公钥和私钥都可用于加密和解密
公钥和私钥都可以用于加解密操作,用公钥加密的数据只能由对应的私钥解密,反之亦然。虽说两者都可用于加密,但是不同场景使用不同的密钥来加密,规则如下:
1、私钥用于签名、公钥用于验签
签名和加密作用不同,签名并不是为了保密,而是为了保证这个签名是由特定的某个人签名的,而不是被其它人伪造的签名,所以私钥的私有性就适合用在签名用途上。
私钥签名后,只能由对应的公钥解密,公钥又是公开的(很多人可持有),所以这些人拿着公钥来解密,解密成功后就能判断出是持有私钥的人做的签名,验证了身份合法性。
2、公钥用于加密、私钥用于解密,这才能起到加密作用
因为公钥是公开的,很多人可以持有公钥。若用私钥加密,那所有持有公钥的人都可以进行解密,这是不安全的!
若用公钥加密,那只能由私钥解密,而私钥是私有不公开的,只能由特定的私钥持有人解密,保证的数据的安全性。
[2]
开放共识体系:不做人数限制、不做用户权限认证
2005年《secure computation without authentication》证明这种系统无法保证诚实用户的共识能够获胜
恶意用户制造大量用户来占据网络的大多数(sybil attack)
2008年 satoshi nakamoto 比特币建立共识体制
sybil attack根源:恶意用户 低成本 参与
解决:大幅提升账户参与区块链抽取的成本
btc里:解数学难题(付出计算资源)后才有机会生成新的区块(更新区块链的状态)
“挖矿” => 避免sybil attack