主页 > imtoken安卓app下载 > usdt怎么交流 从节点到网络:Web3 实践基础
usdt怎么交流 从节点到网络:Web3 实践基础
当节点每秒执行数百万次哈希计算以寻找哈希时,这种能量被浪费了。 虽然这增加了比特币网络的安全性,但它确实回避了是否有任何更不浪费的方法来验证块的问题。 这就是股权证明的用武之地。
股权证明(PoS)
在股权证明中,节点有权根据其在网络中的股权来验证区块。 这是一种与 PoW 根本不同的方法,大大降低了验证所需的计算能力。 节点不提供计算能力,而是将其本机网络令牌作为抵押品,以换取验证块的机会。 这基本上消除了基于竞赛的计算,增加了可以成功验证块的节点的分布。
合并后的以太坊是一个权益证明网络。 它需要使用 32 ETH 作为质押成为验证者,之后该节点可以参与区块验证,从而为网络添加新区块做出贡献。 Staking 是指锁定代币,是 PoS 网络的基础。
除了成为验证者的高额预付费用外,PoS 网络还采用其他方法来防止恶意行为者破坏网络。 一般来说,PoS 网络也需要多个节点同时验证同一个区块,这减少了一个节点验证错误或恶意区块的可能性。 此外,如果发现某个节点有恶意行为,则可以砍掉他们的股份。 这意味着他们锁定在协议中的网络令牌数量将从节点中删除,并转移到临时地址或销毁。 代币销毁是指通过将代币发送到网络上任何人都无法访问的地址,将代币从流通中永久移除。 在以太坊网络中,这是一个空地址。
其他共识机制
除了工作量证明(PoW)和权益证明(PoS)之外,还有许多针对特定网络设计的特定目的共识机制。 以下是流行共识机制的非详尽列表。
· 委托阶段证明(DPoS)
·权威证明(PoA)
· 活动证明(PoA)
Brun 证明 (PoB)
· 时空证明 (PoSt)
· 历史证明(PoH)
实用拜占庭容错(pBFT)共识【实用拜占庭容错(pBFT)共识】
共享账本-记账系统(UTXO与账户模式对比)
前面我们提到,区块链就是将数据块通过哈希算法相互加密连接,形成账本。 该分类帐保存在整个网络的数千个节点上,从而使分类帐在这些网络中“共享”。 任何账本,无论是共享区块链账本还是传统会计账本,都需要保存。 分类帐指的是如何接受、执行交易以及如何将新余额存储在区块链上。 在 Web3 中,有两种主要的计费模型。
· 未花费交易输出(UTXO)模型(如比特币网络)
· 账户模型(The Account Model,如以太坊网络)
为了帮助理解这些不同的会计模型,将区块链视为状态机会很有帮助。 状态机是一个存储其状态的系统,它可以根据对设备的输入而改变。 这意味着,在任何给定的时间点,系统都处于特定状态,并且随着对系统的任何输入(例如通过交易),系统的状态都会发生变化。 当向系统提供输入并且状态发生变化时,系统会经历状态转换。
如果我们从状态机的角度来看区块链,这意味着在任何给定的时间点,区块链系统处于状态 n,添加到区块链的任何块都会导致状态转换和 n+1的新状态。 这个 n+1 新状态考虑了所有添加到新块的交易,从而产生了新的系统状态。
区块链和交易引起的状态变化
未花费交易输出 (UTXO) 模型
UTXO 模型和账户模型之间的区别在于簿记或记录交易的处理方式。
简单地说,在 UTXO 模型中,不存在账户余额这种东西。 相反,每笔交易都是一张收据,表明谁向谁发送了多少。 这就是 Unspent Outputs 这个名字的由来,因为用户可以转移的余额是他们之前尚未花费的交易量。
UTXO模型工作原理图解
当用户想要发送比特币时,所选 UTXO 内的所有比特币都将成为交易输入(参见上面的 UTXO0)。 创建一个新的 UTXO,其中包含要发送的金额(参见上面的 UTXO2)。 如果UTXO持有的比特币多于它想要发送的比特币,剩余的比特币将作为新的UTXO发送回用户(上图中有0.5比特币要发送,但是UTXO0持有2.0,所以UTXO2包含0.5要发送, UTX03 包含 1.5 返回给发送者)。
这也实现了一个有趣的特性:由于 UTXO 模型,每个原生代币的来源都可以追溯到它的创建,因为每个交易输出都必须有一个相应的输入。 对于使用UTXO模型的比特币网络来说,这意味着每个比特币都可以追溯到它被开采的区块。因此,UTXO模型中不存在余额的概念。 相反,余额是网络中所有交易收据的总和。
网络上的每笔交易都精确定义了谁从哪笔交易的输入中获得了多少比特币。 然后,系统会验证交易输入是否未花费,发送方是否有权发送比特币,以及接收方是否符合接收比特币的正确参数。 因此,UTXO 模型可以被认为是一个验证系统。
虽然没有包括在前面的例子中,但交给矿工的交易费也作为交易的一部分被扣除。 UTXO3 不是 1.5 个硬币,而是 1.499 个硬币,差额是交易费用。
帐户模型
账户模型更接近传统银行账户的数字表示。 在每个状态转换中,存储所有账户和余额的集合,而不是像 UTXO 模型中那样必须根据一组收据来计算账户余额。 为了启动状态转换,需要启动事务,指示系统更改余额。 然后系统计算每个账户余额的变化,并在下一个状态下存储新的余额集。
帐户模型如何工作的解释
在UTXO系统中,每笔交易输入(从之前的交易中收到的UTXO)都是单独验证的,必须大于输出,而在账户模型中,账户余额必须大于交易输出。 这意味着,在 UTXO 系统中,多个 UTXO 可以组合并单独验证usdt怎么交流,以创建一个或多个交易输出,而在账户模型中,只需要验证余额。
如果使用多个 UTXO 作为输入,UTXO 模型如何工作
有关 UTXO 模型与帐户模型的更多信息,我强烈建议阅读这篇关于该主题的 Horizen.io 帖子。
虚拟机 (VM)、智能合约和图灵完备性
虚拟机是模拟计算机的软件。 它取代了物理设备,虚拟计算机的所有物理组件都在另一个系统中作为软件运行。 例如,Windows 虚拟机可以运行在 MacOS 上,让整个 Windows 系统运行在 MacOS 内部。 Windows虚拟机的物理组成部分是在软件中模拟出来的,因此对于Windows系统来说是未知的。
这个概念也适用于区块链网络:一个单独的虚拟机组件与共享分类账一起存在,它允许执行计算任务。 这意味着,除了存储余额(账户模型)或余额变化(UTXO 模型)的共享账本之外,还有一个单独的计算组件来计算余额。 除了简单的余额计算之外,此计算组件还可用于更复杂的逻辑。 这就是为智能合约铺平道路的原因 - 稍后会详细介绍。 第一个取得广泛成功的此类系统是以太坊虚拟机 (EVM)。
比特币脚本也可以被认为是一个虚拟机,因为它是比特币网络的计算组件,节点用来验证 UTXO 和执行交易。 然而,Bitcoin Script 非常有限,无法像 EVM 那样运行复杂的逻辑。
以太坊虚拟机 (EVM)
EVM 是一种模拟特定计算机系统的软件,运行在以太坊节点上。 EVM 的主要目的是计算以太坊网络的世界状态并运行智能合约。 EVM的创新在于两个方面:
1. EVM实现了世界状态的去中心化计算,包括执行比较复杂的智能合约的计算逻辑
2. EVM 可以在去中心化的区块链网络(智能合约)上自主和去信任地执行代码
区块链和虚拟机 (VM)
当一个网络声称“与 EVM 兼容”时,这意味着该网络可以部署和执行为以太坊虚拟机编写的智能合约。 EVM 是最流行的虚拟机,已经成为 Web3 中智能合约计算的事实标准。 具有 EVM 兼容性允许较新的网络通过使项目更容易移植到他们的网络来引导他们的生态系统。 这种标准化还使得在网络之间桥接代币变得更加容易,因为两个网络都可以运行相同的代码。
为了深入了解 EVM 架构,我引导读者阅读 Takenobu T 的这篇文章。(由于“合并”标志着以太坊生态系统在 2022 年 9 月 15 日从 PoW 过渡到 PoS,因此 PoW 方面这个谈话的内容已经过时了)。
智能合约
智能合约是存储在去中心化网络中的程序,当满足特定条件时可以由虚拟机自主执行。 这些条件可以指在网络上发生特定事件或用户与智能合约交互时激活的任何内容。 智能合约的复杂计算能力还可以创建 ERC-20 代币和 NFT(不可替代代币)。
智能合约和 EVM 正在推动行业超越区块链和加密,转向 Web3 的概念:由于这些创新,有可能拥有在不受审查的去中心化网络上自主运行的可组合应用程序。 这些创新的结合是 Web3 庞大的 dApp 生态系统的起源。
dApp 是一种去中心化的应用程序,它使用智能合约的组合,通常也是一个易于访问的基于 Web 的前端,与区块链网络进行交互。 dApps的智能合约也可以通过节点直接访问,但是基于网络的前端大大降低了访问门槛。 当今最著名的 dApp 可能是 Uniswap。
Solidity 语言、Rust 语言和比特币脚本
Solidity 是以太坊区块链上智能合约最常用的编程语言。 开发人员在 Solidity 中编写他们的智能合约,将它们编译成字节码,并将字节码部署到网络中。 Solidity 是一种面向对象的静态类型编程语言,构建于 C++、Python 和 JavaScript 之上。
Rust 是 Solana、Polkadot 和 NEAR 链上最流行的智能合约编程语言之一。 Rust 是一种低级静态类型编程语言,以其速度、效率和设计最佳实践而闻名。 虽然它是一门年轻的语言,但它在 2020 年和 2021 年连续两年被 StackOverflow 评为最受欢迎的编程语言。就像 Solidity 一样,编译代码并将字节码部署到各种网络。
区块链接受多种编程语言,只要代码可以编译成网络可以读取和解释的字节码。 这也适用于比特币网络,其主要脚本语言是比特币脚本。 Bitcoin Script 和 Solidity/Rust 的区别在于,Bitcoin Script 实际上不是一种编程语言,而是一种用于交易的脚本系统。 在比特币网络中,脚本是记录在每笔交易中的指令列表,描述了下一个想要花费转移的比特币的人将如何获得它们。 请记住,UTXO 是未花费的交易输出; 因此,每个输出都可以有附带的要求,需要满足这些要求才能使输出成为另一个交易的输入。
图灵完整性
从图灵完备的角度来看,Solidity/Rust 和比特币脚本之间的差异变得更加清晰。 图灵完备性指的是抽象机(图灵机)的概念:给定无限的时间和计算资源,它能够计算任何问题,只要该问题可以编码或逻辑构造。
更复杂的逻辑问题需要使用条件语句和循环,Solidity 和 Rust 作为完整的编程语言支持它们。 但是,比特币脚本不支持这些。 这是因为比特币网络不允许进行复杂的计算,而是依赖于相当简单的指令集usdt怎么交流,该指令集仅围绕交易(无智能合约)的思想运作。 虽然这使得比特币网络不易出错并且可以说更安全,但它确实限制了它的可编程性。
以太坊、Solana 和 Polkadot 可以被认为是准图灵完备的。 尽管由于 Solidity 和 Rust,他们能够进行复杂的计算,并且理论上可以在足够的时间解决任何逻辑问题,但他们受到汽油费的限制。 Gas 费是网络执行任何计算任务所收取的费用。 虽然时间和计算资源在理论上可以是无限的,但本地网络令牌的数量可能不是。 因此,虽然理论上这些网络是图灵完备的,但实际上它们充其量只能被视为准图灵完备。
图灵完备和非图灵完备之间的区别对于更好地理解 Web 的功能以及可以在其上构建什么非常重要。 图灵机和图灵完备性还有很多细微差别,感兴趣的读者可以在这里阅读更多内容。
从 EIP 到 ERC
ERC(Ethereum Request for Comment)是指以太坊区块链中使用的技术编码标准。 ERC 规定了以太坊智能合约必须遵循的一些规则和动作,以及如何执行这些规则和动作。
然而,ERC 已经是事实上的标准,包含在开发人员同意使用的以太坊文档中。 在 ERC 成为 ERC 之前,它最初是作为 EIP(以太坊改进提案)开始的。 EIP 本质上是非常详细的论坛帖子,用户可以在其中争论、讨论并对以太坊区块链和生态系统的更改进行投票。
EIP到ERC的过程
该系统在整个 Web3 生态系统中使用非常广泛,从 Web(例如,比特币使用 BIP - Bitcoin Improvement Proposals)到 dApps(例如,AAVE 使用 AIPS - AAVE Improvement Proposals)。
ERC 代币标准
基于 ERC 的代币建立在以太坊网络上,但它们在技术上不同于以太坊代币,后者是以太坊网络的原生代币。 以太坊代币被定义为网络的一部分,是网络的底层“货币”。 它们以汽油费的形式支付交易和智能合约执行费用,而基于 ERC 的代币则在智能合约中定义。
ERC 标准的智能合约定义了代币的所有参数和所有行为,可以使用 etherscan.io 或任何其他 EVM 兼容网络的区块浏览器在线查看。 Block Explorer 是一种工具,可让您查看存储在区块链上的实时和历史信息。 由于这种标准化,基于 ERC 的代币的行为是可预测的,允许 dApp 和其他智能合约与使用这些标准的任何智能合约进行交互。
接下来,我们将介绍 ERC-20、ERC-721、ERC-1155 和 ERC-4626 标准。 前三个标准涉及在区块链上创建可替代和不可替代的数字资产,而 ERC-4626 标准规定了应用于 ERC-20 的收益函数。
ERC-20、ERC-721 和 ERC-1155 代币标准及其同质性
ERC-20 代币(Fungible Token)
ERC-20 是同质代币的标准。 同质性意味着一种资产可以与另一种相同的资产互换,而这两种资产彼此无法区分。 例如,一张一美元的钞票是可替代的,因为它可以兑换成任何其他一美元的钞票。
ERC-20 标准允许在 EVM 兼容网络上创建可替代代币。 Curve代币(CRV)、Uniswap代币(UNI)或AAVE代币(AAVE)都是fungible tokens的例子,但法定货币的数字代币也是ERC-20,比如USDT或USDC,与美元挂钩一样.
ERC-20 代币是可替代代币
ERC-721 代币(不可替代代币)
ERC-721 标准定义了不可替代的代币 (NFT)。 NFT 的独特之处在于它的名字:token are unforgeable,也就是说每一个 token 都是独一无二的。 NFT 是一个令人兴奋的发展,因为每个 NFT 的内容可以是创建者想要的任何内容,从人的照片到契约或任何其他房地产证书。 NFT 使任何物理或独特数字资产的公开可验证数字所有权成为可能。
流行的 NFT 包括 Cryptopunks、Bored Ape Yacht Club 和 Ethereum Name Service (ENS)。
ERC-721 (NFT) 是不可替代的代币
ERC-1155(多令牌)
ERC-1155 是所谓的“多代币”:它们结合了 ERC-20(可替代代币)和 ERC-721(不可替代代币)的功能。 这意味着,除了通过多个“独特”的可替代资产启用新用例,例如游戏中的一把剑(不可替代)和 100 的供应(可替代),还可以管理多种代币类型一份智能合约。
将这些功能组合到一个智能合约中,允许智能合约在 EVM 中使用的空间方面创造效率。 这也为更大、更复杂的项目创造了简单性,因为可以从单个智能合约管理多组代币。
流行的 ERC-1155 包括 ENJIN NFT,它使用 ERC-1155 来跟踪少数基于区块链的游戏和票务应用程序中的资产,这些应用程序可能需要定期创建大量独特的资产作为合同的一部分。 使用 ERC-1155 的项目示例包括 The Sandbox Metaverse、Fanz 和 Azure Heroes。
ERC-1155 代币结合了可替代和不可替代代币的功能
ERC-4626(金库标准)
ERC-4626 标准化了代币保险库。 保险库是一种收益智能合约,它接受 ERC-20 代币存款并为存款人提供另一种代币形式的代币奖励(收益)。 它本质上是一个多重签名的资产管理智能合约,生成代币作为存款奖励的一种形式,随后可以将其兑换为最初存入金库的代币。
例如,xSushi 是一种收益代币,可以与 SUSHI 代币(SushiSwap dApp 的治理代币)交换,它基本上代表用户在 Sushi DeFi 协议中的收益产生活动份额。
该令牌标准使开发人员能够接受任何 ERC-20 令牌,而无需手动集成每个令牌并考虑他们的特定设计决策。 这降低了可能导致资产损失的编码错误的风险。
Yearn V3 是第一个使用 ERC-4626 标准的主要协议,Balancer 和 Rari Capital 等协议也开始实施该标准。
区块链与有向无环图 (DAG)
有向无环图 (DAG) 是一种不同的数据结构方法,一些项目正在使用它们作为区块链共享账本结构的替代方案。 区块链交易包含在块中,这些块按时间顺序进行验证和链接。 区块链被复制到网络上的所有节点。
在 DAG 中,交易是逐一验证的,每笔交易都与下一笔交易相关联。 为了验证一笔交易,还必须验证由网络确定的另外两笔交易。 这导致了一个类似网络的结构,可以很容易地扩展,并允许并行计算交易,这可以大大提高吞吐速度。 由于验证交易非常简单,矿工在系统中扮演的角色非常小:任何与网络交互的用户都可以验证其他用户的交易,这大大降低了交易成本。
区块链与。 有向无环图
术语有向无环图很好地描述了这种结构:
定向:数据结构只能向一个方向移动(添加新数据)
非循环的:当沿着数据点之间的有向路径移动时,不可能碰到之前的数据点(不是循环的)
图:由节点/顶点和边(节点之间的连接)组成的非线性数据结构
虽然这种结构在交易吞吐量、验证速度和交易成本方面带来了好处,但 DAG 面临着完全不同的挑战。 虽然理论上该系统允许强大的去中心化,但理论上较少的交易会导致网络安全性较低:较少的交易意味着较少的随机验证器,这增加了单个验证器或一组验证器控制大多数交易的可能性。 如果一个实体控制了大部分网络活动,就更容易将恶意活动引入网络。
为了应对上述挑战,基于 DAG 的网络已经转向中心化解决方案:实现一个中央协调器来路由待验证的交易,控制具有更高权限的“见证”验证器,或者直接将验证网络私有化。
尽管存在这些挑战,DAG 网络填补了 Web3 生态系统中的一个重要空白:它们是稍微更中心化的高吞吐量网络,可以管理繁重的交易负载,并且会发现更多的用例。
单体区块链与模块化区块链
去中心化网络是由各种组件组成的复杂系统,这些组件相互操作以创建去信任和不可变的网络。 比特币、以太坊、Solana、Polkadot 和 NEAR 等网络都被认为是单体区块链——它们都是“由单片组成”的网络,任何一个组件的变化都需要更新整个网络。 模块化区块链采用这些不同的组件,并允许将它们换成其他组件。
模块化区块链系统的各个组件包括:
执行层:交易执行和智能合约
· 结算层:交易验证、交易结算
· 共识层:共识机制
· 数据可用性:共享账本
单体区块链与模块化区块链。改编自:Celestia 网站
通过将系统拆分成多个组件,可以优化每个组件,提高每个组件的效率和安全性。 Layer 2 将在本系列的下一部分详细介绍,可以说是迈向模块化的第一步。 Layer 2 卸载执行层,在单独的网络上执行交易和智能合约,并将结果反馈给 Layer 1 单体网络,其中管理结算、共识和共享账本。
虽然模块化有很多好处,但模块化系统的强度取决于其最薄弱的环节。 使用模块化组件,单个组件可能更容易定位。 此外,从技术角度和网络原生代币的价值来看,向网络添加模块化在确保网络正常运行方面引入了新的复杂性。 如果结算层可以被另一个使用不同代币的结算层取代,网络将很难首先证明代币的存在。
尽管存在这些挑战,模块化区块链的概念为开发有助于扩展和发展 Web3 生态系统的新项目和技术提供了令人兴奋的方向。 流行的模块化区块链项目包括 Celestia 和 Cosmos。
第一层网络总结
Web3 是一个庞大的概念,结合了区块链、加密和建立在它们之上的生态系统以及相关技术。
比特币是普及去中心化区块链技术的layer 1网络,而以太坊是提供准图灵完备计算功能并实现智能合约的网络。 正是通过散列来自早期块的数据来连接数据块的想法,再加上跨多个节点分布所有存储数据的副本,实现了不变性和数据永久性。 除了这些技术要素外,节点基础设施也必须到位才能发挥作用:如果网络上只有一个节点,网络本质上是中心化的,面临中心化挑战:数据可以更改、删除,其访问可以是受节点限制。
除了底层数据结构之外,还有一个问题是网络上的节点如何知道提供给它们的数据是否正确。 这被概括为“拜占庭将军问题”。 比特币通过其工作量证明共识算法解决了这个问题,该算法要求网络上的节点解决计算密集型密码难题,以证明它们已经完成了验证区块所需的验证工作。 存在替代的共识算法,例如股权证明,它需要的能量少得多,并且被认为对环境更好。
在撰写本文时,比特币和以太坊是两个最流行的区块链网络,它们使用截然不同的账本模型。 比特币网络使用 UTXO 模型,而以太坊网络使用账户模型。 UTXO模型可以认为是一个“验证系统”,每一个UTXO就是一个交易单。 账户模型更像是一个账户和余额的数据库,随着每个新块被添加到区块链,它会更新。
以太坊的计算组件,称为“以太坊虚拟机”,允许执行智能合约。 智能合约是存储在去中心化区块链网络上的应用程序,可以根据可编程的触发标准自主执行。 根据您使用的区块链,智能合约可以用 Solidity、Rust 或其他编程语言编写。
智能合约的标准化对于实现智能合约之间更好的互操作性是必要的。 ERC是已经固化在以太坊文档中的编码标准,是一个“成功”的EIP。 EIP 是以太坊生态系统中任何人都可以提出的建议,并开放给任何人查看、讨论和投票。 如果对 EIP 进行投票,建议的更改将应用于网络。 四种最流行的 ERC 代币标准是 ERC-20(可替代代币)、ERC-721(不可替代代币或“NFT”)、ERC-1155(多代币)和 ERC-4626(金库标准)。
虽然区块链一直是 Web3 去中心化网络最流行的分类账格式,但随着现有结构针对特定用例进行调整,替代格式也应运而生。 有向无环图 (DAG) 是这种替代结构的一个例子,它依赖于验证交易而不是完整的区块。 模块化网络是我们需要重新思考现有结构这一想法的延伸。 模块化网络旨在将去中心化网络划分为不同的功能层,每个功能层都可以单独优化。
结语
掌握 Web3 基础知识系列的第 1 部分到此结束,感谢阅读! 如果您喜欢这篇文章,请考虑分享它! 如果您对本文有任何反馈,或想讨论其内容,请在 Twitter 上联系@0xPhillan。
如果您想成为第 2 部分发布时的第一批读者,或者想要对最近的 Web3 事件有一个非常扎实和透彻的了解,请订阅 Web3edge 时事通讯并在 Twitter 上关注@Web3edge_io!
本文由 0xPhillan 为 Web3edge 撰写 - 在 Twitter 上关注@0xPhillan!