1. 首页 > 娱乐生活

RLP币最新价格(RLC币价格)

前言

Web 3.0 的概念是由以太坊联合创始人 Gavin Wood 在 2014 年提出的,指基于区块链的去中心化在线生态系统,它代表了下一代互联网时代。目前 Web 3.0 仍处于起步阶段,但是发展非常迅猛,其去中心化、抗审查等特点使得人们更容易建设一个开放的网络生态。

本文会先对 Web3.0 的底层区块链做个简单介绍,然后再介绍 Web3.0 的整体架构,最后通过一个简单的例子来介绍 Web3.0 开发常用的一些技术。本文只是一个引子,让大家对 Web3.0 不再陌生,文中提到的一些技术感兴趣的同学可以再自行深入了解。

区块链简介

区块链架构

区块链是一个去中心化的分布式账本,可以在数字世界中进行价值的表示和转移。区块链的架构自下而上分为六层,分别是数据层、网络层、共识层、激励层、合约层和应用层。

  • 数据层

区块链是通过区块(block)存储数据,每个数据节点之间都包含所有数据,即分布式账本。每个区块都包括了区块的大小、区块头、区块所包含的交易数量及部分或所有的近期新交易。数据层主要是解决这些数据以什么样的形式组合在一起,形成一个有意义的区块。

区块链的数据结构中包括两种哈希指针,它们均是不可篡改特性的数据结构基础。一个是形成“区块+链”(block+chain)的链状数据结构,另一个是哈希指针形成的梅克尔树(如下图所示)。链状数据结构使得对某一区块内的数据的修改很容易被发现;梅克尔树的结构起类似作用,使得对其中的任何交易数据的修改很容易被发现。

可以在https://www.blockchain/explorer上查看比特币的区块链交易数据,可以在https://cn.etherscan/上查看以太坊的区块链交易数据。

  • 网络层

区块链使用的是去中心化的网络架构,没有中心化服务器,依靠用户点对点交换信息,主要包括 P2P 组网机制、数据传播和验证机制。正是由于节点的 P2P 特性,数据传输是分散在各个节点之间进行的,部分节点或网络遭到破坏对其他部分影响很小。

节点指的是区块链客户端软件(比如比特币客户端、以太坊客户端),一般分为全节点和轻节点,全节点包含了所有区块链的区块数据,轻节点仅包括与自己相关的数据。

  • 共识层

共识层的功能是让高度分散的节点在 P2P 网络中,针对区块数据的有效性达成共识,决定了谁可以将新的区块添加到主链中(挖矿机制)。

工作量证明共识机制(PoW),矿工需要将网络中未确认的交易按梅克尔树组装成候选区块,在候选区块的头部有一个 32 位的随机数区域,矿工需要反复调整随机数并计算,目标是让整个区块的哈希值小于一个“目标值”,谁先完成这个目标谁就有权力将交易记录到区块链分布式账本中并获得一定的奖励。

挖矿的过程比拼的就是各个矿工节点的算力,可以变相认为谁的算力高谁的工作量就高,就有权力记账和获得奖励。比特币使用的是 PoW 机制;以太坊开始使用的是 PoW 机制,后来改成了 PoS 机制,原因是该机制交易速度更快、资源消耗更低。

这种挖矿计算是非对称的,挖矿可能需要经过许多次哈希计算,而要验证的确找到有效的随机数,只需要一次计算就可以,因此其他节点能够很快验证交易是否已经被记入账本。

  • 激励层

激励层的功能主要是提供一些激励措施,鼓励节点参与记账,保证整个网络的安全运行。通过共识机制胜出取得记账权的节点能获得一定的奖励。

目前比特币的激励措施是新区块产生时系统会奖励矿工一定的比特币(系统产生的新比特币,也会记录在分布式账本,来源地址是 0,因此整个过程叫挖矿),奖励最初是 50 个比特币,每四年减半一次,分别为 25 个、12.5 个,以此类推。当比特币数量达到 2100 万枚的上限后(2140 年),激励就全靠交易的手续费了。以太坊交易是靠 gas 手续费来激励矿工。

  • 合约层

合约层封装了各类脚本、算法和智能合约,使得区块链具有可编程能力。例如,比特币的脚本[1]中就规定了比特币的交易方式和过程中的种种细节,不过这种脚本使用不够便捷且不是图灵完备的。以太坊提出了智能合约的解决方案,提供了一种图灵完备的高级编程语言来编写智能合约,并使智能合约能够运行在分布式的以太坊虚拟机 EVM 上。

智能合约就是存储在区块链上的一段代码,它们可以被区块链上的交易所触发,触发后,这段代码可以从区块链上读取数据或者向区块链上写入数据。区块链系统(比特币、以太坊)可以认为是一个分布式状态机,通过交易触发合约(脚本、智能合约)运行来改变状态机的状态。

  • 应用层

应用层封装了区块链的各种应用场景,具体应用可参见90+ #Ethereum Apps You Can Use Right Now[2]

以下为一笔比特币转账交易的过程:

以太坊简介

因为我们将要在以太坊上开发一个 Web3.0 demo 应用,所以先简单介绍一下以太坊的一些基本概念。

账户和钱包

以太坊账户分为外部账户和合约账户。外部账户是拥有私钥的账户,拥有私钥意味着控制对以太币或合约的访问。合约账户具有地址但是没有私钥,合约账户具有智能合约代码,而外部账户不具有。智能合约代码是在合约账户创建时由以太坊区块链记录的软件程序,由 EVM 执行。

钱包是用来管理以太坊账户的软件应用程序 ,它控制对以太币的访问、管理私钥和地址、跟踪账户的余额、创建并签名交易。可以说,以太坊钱包是通往以太坊世界的大门。一个针对以太坊钱包的常见误解是认为钱包中包含以太币或者代币。实际上,钱包中只保存了密钥。以太币和其他各种代币都保存在以太坊区块链上。

当创建一个以太坊外部账户的时候,会用非对称加密算法生成一对公钥与私钥,并保存在钱包里,而地址是公钥的哈希值。交易的签名和验证过程如下(椭圆曲线数字签名算法):

Sig=Fsig(Fkeccak256(m) , k)

其中:

  • k 是用于签名的私钥
  • m 是经过 RLP 编码的交易数据包
  • Fkeccak256 是 Keccak-256 哈希函数
  • Fsig 是签名算法
  • Sig 是输出的数字签名

函数 Fsig 生成了一个签名,这个签名包含两部分内容,通常称为 r 和 s:Sig=(r, s)

签名验证算法的输入包括交易数据包(其实是交易的哈希值的一部分)、签名方的公钥和签名(r 和 s 值),如果针对消息和公钥的签名验证成功,算法会返回 true。

以太币和 gas

以太坊的货币单位称为 ether,也常使用 ETH 表示,例如 1 ether 或者 1 ETH。以太币可以被拆分成更小的单元,最小单元称为 wei,1 ether = 10^18 wei。以太币的面额和单位名称如下所示:

以太坊交易过程使用的是 gas 来支付手续费。gas 并不是以太币,它是一种独立的虚拟货币,跟以太币之间存在汇率关系。gas 独立于以太币,是为了在以太币价格大幅度波动的情况下,仍旧保护系统的灵活性,保证 gas 的价值相对稳定。

gas 的另一个作用是控制交易对资源的使用。交易数据会包含 gasPrice(交易发起方愿意支付的 gas 价格)和 gasLimit(交易发起方愿意为这个交易支付的最大 gas 数量)两个参数,而每一条智能合约代码语句的运行都会消耗对应的 gas,当运行过程中累计的 gas 消耗超过了 gasLimit,合约就会终止执行,交易失败。

失败的交易仍旧会被作为一次失败的尝试而记录在案,执行所花费的 gas 将从发起账户中被扣除,除此之外,它不会对合约或者账户状态产生任何其他影响。

客户端

Geth 是官方提供的 go 语言实现的以太坊客户端。客户端可以以全功能节点的方式运行,也可以以远程调用的方式运行。全功能节点会下载全部的区块数据,对系统的网络和存储有较高的要求。

从远程调用以太坊的客户端不在本地保存区块链数据,也不参与区块和交易验证,这样的客户端提供钱包功能,也可以创建并广播交易。以太坊客户端会对外提供 API(例如 web3.js API、JSON-RPC API)来访问以太坊网络。

智能合约

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:http://www.fjxmta.com/ylsh/28565.html

联系我们

在线咨询:点击这里给我发消息

微信号:wx123456