web3系列———1.基础知识扫盲

区块链:

一种数据库,数据分为一坨一坨,称为区块,后面一坨数据的开头存储了前面一坨的Hash值。在抽象层面,这些数据就串联起来了,修改任意其中一个区块的数据,都会导致链式变化。
如下:演示

当其中一个区块内数据被修改:

Hash:

一种不可逆的加密函数,输入值为任意大小,输出值为固定长度的字符。

SHA256:

Hash函数的一种,输入任意长度,输出256位字符,常用于数据完整性验证。

RSA加密(非对称式加密):

对称式加密是指用一个秘钥对数据进行加密和解密。
非对称是用2个秘钥,用私钥加密用公钥解密,反之也可用公钥加密私钥解密。私钥可以计算出公钥,公钥无法反推私钥。

创世区块(GenesisBlock):

区块链的第一个区块被称作创世block


如何理解比特币:

2009年中本聪(satoshi)提出,他想将传统金融交易的账本数据存到区块链中,将这条区块链数据库公开到每一个节点,大家一起参与记账,互相竞争谁有资格写入下一个区块的账本数据。这样每一个节点之间都为平等关系,只要保证节点间相互竞争记账权不会出错,就能实现理想中的去中心化。账本中记录的交易货币,称为比特币。

为使节点有足够动力去竞争记账权,中本聪设计为:节点记账时有资格在账本中将一笔凭空产生的比特币奖励写入自己的账户,一旦这个节点获得了记账权,也就获得了一笔合法的比特币出块奖励

点击跳转bitcoinCommunity

节点:

  • 参与到区块链记账中的每一个单位都可称之为一个节点。比如:一台个人电脑或一台服务器。
  • 创建区块链的作者会发布这条链专用的客户端app,可以抽象理解为:安装专用app,可以加入记账网络。
  • 现在有不少软件集成了多种区块链的客户端。

如何竞争记账权:(2种主流方式)

POW(proof of work)工作量证明: 比特币采用这种方式,其客户端中写了记账权的获取代码,一个节点想记账,必须修改区块中的一个随机数,不断的修改它使整个区块的Hash值前几位都是0,具体多少位是通过上一个区块中记录的时间戳来动态获取。比如设计代码为:hash值<000000000000056。
只要节点找到合规的随机数,就能记账,从而获取出块奖励,而Hash运算是不可逆的,所以只能比拼算力,一个一个值尝试,也被称作 挖矿(Mining)

POS(proof of stack)工作权益证明:Pow需要大量消耗电力来挖矿,环境不友好,Pos由此诞生。每一个想要参与记账的节点都需要事先缴纳一笔入场费,系统从有资格记账的节点中随机选一个,让其记账,获得出块奖励和汽油费,其余节点(又称为验证节点)对其生成的区块内容进行合法性验证。验证通过返还之前交的入场费,若区块中存在非法内容,则区块作废,并将其入场费没收作为惩罚。

汽油费(交易费):

每笔交易的发起者需要额外付出一小小小小笔费用给记账节点,这样记账节点(矿工)才有动力把你的交易记录写入区块。

如何攻击区块链:

攻击的意思是修改区块中账本的交易数据或破坏整个网络的运行。
将中间区块的数据修改后会导致后面所有的区块hash值改变而失效。所以,想攻击成功必须一并的把后续区块都改掉,并广播给网络中其余节点,让我们自己生成的区块链取代掉其他节点正在使用的区块链。

  • 51%算力攻击:在使用工作量证明的区块链中(如比特币),只要我们掌握了全网大部分算力,就能保证自己出块比别人更快,修改中间区块的账本数据后,我们沿着修改后的链往下挖,最终会超越原有链,变的最长。客户端只认可最长的链为合法链==>攻击成功。
  • Sybil攻击:攻击者通过创建大量虚假身份来淹没网络,使受害者只连接到攻击者控制的节点,从而阻止真实区块被添加到链中。
  • Timejacking攻击:攻击者可以通过向网络洪泛具有不准确时间戳的节点来引起网络减速或加速,导致网络不同步。
  • etc.

你要如何设计一个比特币客户端?

  1. 存储层:负责存储比特币系统运行中的日志数据及区块链元数据。主要使用文件系统和LevelDB来存储数据。
  2. 数据层:处理比特币交易中的各类数据,如将数据打包成区块,将区块维护成链式结构,进行区块内容的加密与哈希计算,数字签名及增加时间戳印记,以及构建Merkle树并计算其根节点的哈希值。
  3. 网络层:构建比特币底层的P2P网络,支持多节点动态加入和离开,对网络连接进行有效管理,为比特币数据传输和共识达成提供基础网络支持服务。
  4. 共识层:采用工作量证明(Proof of Work)共识算法,负责通过计算满足特定条件的随机数来获得打包区块的权利,构建工作量证明机制。
  5. RPC层:实现远程过程调用(Remote Procedure Call, RPC)服务,并提供JSON API供客户端访问区块链底层服务。
  6. 应用层:承载各种比特币的应用,如比特币客户端。作为RPC客户端,通过JSON API与比特币底层交互。此外,比特币钱包及衍生应用都架设在应用层上。

在验证时:采用RSA加密,私钥生成公钥,公钥生成唯一地址,地址作为转账记录的唯一账户标识,交易发起方将自己地址+目的地址+转账金额+公钥用私钥签名打包,在节点中广播出去,其余节点拿到后,用公钥验证签名,验证地址是否存在,地址金额是否足够,合法后放入交易区块。

  • 19
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PCIE(Peripheral Component Interconnect Express)是一种计算机扩展总线标准,用于连接外部设备与计算机主板之间的数据传输。PCIe连接的设备可以是显卡、声卡、网卡等。 Flow control(流量控制)是PCIE中的一种基础机制,用于在设备之间传输数据时确保数据的可靠传输。 PCIE的flow control可以分为两种方式:Credit-based Flow Control(基于信用控制)和Acknowledgment/Negative Acknowledgment Flow Control(确认/否定确认控制)。 基于信用控制是PCIE中最常用的流量控制机制。发送方设备在发送数据之前会向接收方设备发送一个信用(credit)值,表示发送方设备可以发送的最大数据量。接收方设备在接收到数据后会发回一个更新的信用值给发送方设备,发送方设备根据接收到的信用值确定下一次可以发送的数据量。通过这种方式,可以有效控制不同速度的设备之间的数据传输,避免数据丢失或信道阻塞。 确认/否定确认控制是PCIE中的一种备用方式,当发送方设备发送数据后,接收方设备会发回一个确认或否定确认信号给发送方设备,以告知是否成功接收数据。如果发送方设备收到否定确认信号,则会重新发送数据,确保数据的可靠性。 总结来说,PCIE中的flow control机制是为了确保数据的可靠传输而设计的。基于信用控制和确认/否定确认控制是两种常用的流量控制方式,可以根据不同的需求选择适合的方式来控制数据的传输。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值