1. 什么是区块链
从定义的角度
它是一个公共的数据库,由网络中的许多计算机更新和共享。 区块指的是数据和状态是按照顺序批量的区块
区块
是由区块头和区块体组成 区块头记录当前区块的特征值 区块体存储实际数据
哈希的计算
- 所谓哈希,就是计算机可以对任意内容,计算出一个长度相同的特征值
- 当前节点的哈希=区块头的内容+上一个节点的哈希值
- 哈希不可修改性
- 只要通过极大量的计算,才能得到当前区块的有效哈希。由于计算量太大,所以快不起来
- 区块头包含一个难度系数,这个值决定了计算哈希的难度
- 区块链协议规定,使用一个常量除以难度系数,可以得到目标值。显然难度系数越大,目标值越小。
- 哈希的邮箱性跟目标值密切相关,只有小于目标值的哈希才是有效的,否则哈希无效,必须重算。由于目标值非常小,哈希小于该值的机会及其渺茫,可能计算10亿次,才能算中一次。
区块链的分叉
新节点总是采用最长的那条区块链,如果区块链有分叉,将看哪个分支在分叉点后面,先达到6个新区块。也就是说,拥有大多数计算能力的那条分支,就是正宗的区块链。
去中心化存储和广播机制
- 每当有新区块产生时,它都会进行一次广播,一遍通知其他计算机新增区块
- 每当产生新节点后,无需你向所有节点进行广播,而是通过点对点的方式,就近向已经建立连接的若干个节点进行广播
- 并非所有的广播都会被认可,至少满足以下两点
- 当前节点未接收过被广播的新增区块
- 广播中新增的区块,哈希校验合法
共识机制
- 用以约束新增的区块,只有当它们及它们的哈希符合某一特征时,才能被其他节点所接收
- 工作量证明PoW(Proof of Work) 参与共识的节点需要通过一定的设计量来验证交易和生成新的区块。计算量越大的节点,越有可能获得记账权,因此节点需要投入越来越多的计算资源和电力成本来参与共识
- 权益证明PoS(Proof of Stake) 参与共识的节点需要拥有一定数量的代币等数字资产,代币数量越多的获得权力越大 ;相比于PoW机制,PoS机制降低了参与共识的计算量和电力成本,但需要高度信任代币持有者的行为。
- 权威人士PoA(Proof of Authority) 参与共识的节点为预选的授权人士,拥有成为记账节点的特权。
- 权益共识DPoS(Delegated Proof of Stake) 参与共识的节点由社区选举产生,委托节点获得记账权,此机制下的区块链的技术性质在很多方面类似于PoS,但由于全网共识节点只有几个,因此提高交易执行速度和网络的可扩展性。
特点
- 分布式网络 (每一个节点都是平等的)
- 公开账本 (数据存储在区块链网络的每一个节点上,也就是每一个节点都有相同的数据源;)
- 共识算法 (想要修改一条链上一个区块的内容,就必须同时修改这条链上其他所有区块的内容)
公共区块链平台
- Bitcoin(BTC) 比特币
- Etherium(ETH) 以太坊
- Ripple(XRP)专注于金融机构间的加密资产
- Litecoin(LTC)类似比特币
- TRON(TRX)全球首个基于区块链技术打造的内容发布与社交平台
- IOTA(MIOTA)面向物联网的新型加密数字货币
- ...
DApp
以太坊
一种基于区块链技术的开源平台,它提供了一组工具和接口,使得开发者能够在其上构建和部署去中心化的应用程序(DApps)。以太坊智能合约功能使得开发者能够编写自动执行的合约,从而实现复杂的业务逻辑。以太坊的核心是以太坊虚拟机,它是一个在以太坊网络中运行智能合约的虚拟机。
DApp定义
基于区块链技术的去中心应用程序,相对于传统的中心化应用程序而言,DApp具有自治、透明、无需信任第三方等显著优点。
智能合约
智能合约是一种自动执行、不可更改的计算机代码,其运作基于特定条件的数学公式或者事实判断。 solidity语言开发智能合约 truffle框架自动化部署编译合约代码 web3.js引入合约到前端代码中,连接以太坊和合约