Bài học 1

Stellar区块链技术

在我们的第一课中,我们将介绍Stellar,这是一个创新的开源网络,它已经改变了货币和支付领域。Stellar的区块链技术连接全球金融机构,通过降低成本和时间,彻底改革了跨境转账。与传统银行系统不同,Stellar的去中心化协议促进了高效的数字货币到法定货币的兑换,特别是在银行服务不足的地区,推动了金融包容性。

深入探讨SCP

Stellar共识协议(SCP)是Stellar网络的核心,确保系统安全高效地运营。SCP是在去中心化的金融网络中实现共识的革命性方法,基于联邦拜占庭协议(FBA)的概念,该协议侧重于去中心化控制的理念,节点自愿选择信任哪些其他参与者以获取可靠信息。了解更多关于拜占庭问题的信息,您可以参阅我们的另一篇文章:什么是拜占庭将军问题

文章摘录:“拜占庭将军问题(Byzantine failures),又称两军问题,1982年在莱斯利·兰波特研究分布式对等网络通信容错问题的论文中提出。在分布式系统的通讯过程中,可能会出现一些局部问题导致计算机发送错误信息,破坏系统一致性。因此,拜占庭将军问题本质上是关于点对点通信中的共识问题。”

SCP与工作量证明和权益证明对比

SCP与工作量证明(PoW)和权益证明(PoS)机制有很大不同。比特币等网络使用的PoW需要大量计算来解决复杂的数学问题,以验证交易并创建新区块。而以太坊2.0等网络使用的PoS则要求验证者持有(有时还需锁定)一定数量的加密货币才能参与该过程。

SCP允许节点通过选择值得信赖的合作伙伴,称为Quorum Slice,来达成共识,消除了对能源密集型挖矿的需求,并且不需要验证者锁定资本作为权益。这种转变不仅减少了对环境的影响,还使网络安全的参与更加民主化。

SCP在速度和可靠性方面的优势

SCP在速度和可靠性上具有明显优势。在Stellar网络上,交易可以在几秒钟内得到确认,这与PoW或PoS系统上可能需要几分钟甚至几小时才能确认交易的情况形成鲜明对比。此外,SCP的设计本质上可以防止双花攻击,并确保即使一些节点出现故障或恶意行为,网络也能继续平稳运行。

在共识机制的三个基本属性中,SCP重点关注其中两个:容错性和安全性,旨在在某些节点发生故障时仍能继续运行,并确保网络节点就交易结果达成一致,以避免冲突状态。虽然当节点难以达成协议时,这可能会延迟共识,但它大大降低了系统故障的可能性。

SCP的组成部分

  • Quorum Set和Quorum Slice:Stellar网络上的每个节点都定义了自己的一组可信节点,称为Quorum Set(节点集合)。在这个集合中,节点必须就交易集达成一致,形成反映网络中某些部分达成一致的Quorum Slice(单个节点)。
  • 联邦投票:SCP利用联邦投票来达成共识,这通过几个阶段进行:节点对交易集进行投票,接受基于信任的其他节点的投票,最后确认要应用的交易集。
  • 提名和投票协议:这两个阶段的SCP是让节点提出交易集,然后通过一系列投票确认它们被添加到分类账中。
    SCP是去中心化网络面临的经典问题的创新解决方案。它为Stellar网络提供了一种快速安全地处理交易的方式,而无需与其他共识机制相关的高度计算成本。这种设计反映了包容性和安全性之间的平衡,使Stellar成为需要快速结算和强大安全措施的金融应用的理想平台。

Stellar网络的层

Stellar堆栈概述

来源:https://developers.stellar.org/docs/fundamentals-and-concepts/stellar-stack

Stellar网络架构由多个层组成,这些层互相协调,提供全面的金融基础设施,目的是确保网络有强大的故障应对能力,对所有人开放,并以迅速且经济高效的方式运作,能够应对现实世界的金融活动。

不同层的角色和交互情况

  • Stellar Core:这是Stellar网络的基础层,由维护分布式账本和执行共识过程的节点组成。Stellar Core每5-7秒更新一次账本,展示了网络的卓越效率。
  • Horizon API:作为Stellar Core和各种应用之间的桥梁,Horizon是一个面向客户端的HTTP API服务器。它提供了一个可访问的界面,用于向网络提交交易和查询历史数据。虽然可以直接连接到Stellar Core,但使用Horizon简化了交互过程,使其对客户端应用程序更加实用。
  • Soroban RPC和CLI:Soroban将智能合约功能引入Stellar生态系统。Soroban RPC(远程过程调用)服务器充当应用程序与这些智能合约交互的中介。CLI(命令行界面)为开发人员提供了一种使用命令行工具构建、部署和运行智能合约的直接方式。
  • 软件开发工具包(SDK):这些工具包通过为程序员提供用各种编程语言与Horizon和Soroban RPC进行交互的库来促进开发过程,简化了直接处理网络协议所涉及的一些复杂过程。
  • DeFi协议:即去中心化金融协议,能够创建在区块链上自主运行的金融服务,如借贷平台和去中心化交易所。它们可以集成到应用程序中,利用Stellar提供的金融基础设施,而无需中央中介。

Stellar不同版本的网络

  • 主网:金融交易实际发生的主要公共网络。
  • 测试网:由Stellar开发基金会(SDF)维护的沙盒环境,供开发人员在不使用真实资金的情况下测试他们的应用程序。
  • 未来网(Futurenet):用于测试Stellar生态系统中尖端功能和发展的网络。
  • Stellar堆栈的每一层都有特定的作用,有助于实现网络的整体功能,确保它仍然是构建各种金融应用程序的强大和多功能平台。

Stellar网络层的设计以及各层之间的交互提供了一个坚实而灵活的基础,在此基础上可以构建和运营各种金融服务,从日常支付到复杂的去中心化金融应用。这种分层架构不仅确保了运营效率和可靠性,还支持创新,使开发人员能够专注于创建适合其特定用例的解决方案。

Stellar内的操作

常见操作及其用法

Stellar中的操作指的是可以改变账本状态的特定行为。每个操作都是一条做出更改的指令,这些指令以称为“交易”的集合形式提交到网络。交易具有原子性,要么全部成功,要么全部失败。操作涉及的范围从创建帐户到管理Stellar去中心化交易所(SDEX)中的订单。

交易建立和处理

Stellar中交易的建立过程是通过将一个或多个操作与其他信息(如源账户和序列号)捆绑在一起来完成的。这些交易使用源账户的密钥进行签名,以确保真实性,然后提交给Stellar网络进行处理。如果交易中的所有操作都有效,并且账户有足够的余额来支付费用和操作本身,则该笔交易被确认并纳入分类账。

创建账户操作

此操作用于创建新的Stellar账户并存入资金。它需要一个初始余额,并在分类账中为该账户创建一个新条目。

支付操作

支付操作允许账户向目标帐号发送特定资产的金额。这是在Stellar网络上转移价值的基本组成部分。

路径支付操作

路径支付操作允许使用不同的资产进行支付;Stellar网络找到发送资产和接收资产之间的最佳路径。路径支付分为严格发送和严格接收版本,分别保证发送的金额或接收的金额。

管理订单操作

这些操作用于在Stellar去中心化交易所中创建、更新或删除订单。有管理买入和卖出订单的独立操作,以及创建不立即匹配的被动订单的操作。

设置选项操作

此操作用于配置帐户的各种设置,例如设置通胀目标、管理签名者或设置可以更改帐户权限的标志。

更改信任操作

此操作会创建、更新或删除信任线,这是Stellar允许帐户持有和交易其他帐户发行的资产的方式。

账户合并操作

账户合并操作是将一个账户的余额转移到另一个账户,并从分类账中删除源账户。

管理数据操作

帐户可以将数据条目附加给自己,这些条目本质上是键值对。管理数据操作可以设置、修改或删除这些数据条目。

Stellar数据结构

分类账:如何维护和更新

Stellar中的分类账相当于其他区块链网络中的区块,可以捕获给定时间点的网络状态。它包含所有余额、订单和其他数据,如智能合约信息。分类账按时间顺序链接,每个新的分类账版本都是将一组交易应用于先前版本的结果。分类账头是分类账的摘要,包含分类账版本、先前的分类账哈希和交易集结果哈希等元数据。

账户:创建、管理和类型

账户是Stellar中的主要数据结构,代表系统的用户。账户是通过“创建账户”操作创建的,有最低XLM余额要求,该余额由基本储备金乘以账户拥有的子条目数量确定。账户具有各种属性,如唯一标识符(账户ID)、不同资产的余额、签名者以及低、中、高安全性的阈值。

资产:Stellar上的原生和自定义资产发行

Stellar网络上的资产可以代表法定货币、加密货币或任何其他形式的价值。每个资产都由资产代码和发行人的账户标识。发行资产是通过发行人向另一个账户进行支付操作完成的。资产由发行账户控制,可以设置授权标志并链接到有关资产的元数据。在Stellar上发行的资产也可以通过Stellar资产合约在智能合约中使用。

操作和交易:类型及更改状态的方式

操作是可以包含在交易中的单个指令,其范围从支付到在去中心化交易所上管理订单再到账户配置更改不等。交易会对这些操作进行捆绑并将它们提交到网络以并入分类账。交易具有原子性质;如果交易中的任何操作失败,整个交易都会失败。

智能合约:Stellar的功能和限制

Stellar通过Soroban平台引入了智能合约。Stellar上的智能合约是可以在区块链上执行操作的代码片段,由Wasm字节码组成,并存储在CONTRACT_DATA分类账条目中。智能合约可以在分类账上拥有自己的存储条目,这些条目可以是临时的,也可以是持久的,并具有不同的成本和生命周期。

每个数据结构和组成部分都在Stellar提供可扩展和灵活的金融基础设施的能力中发挥着关键作用。Stellar网络围绕这些元素的设计实现了广泛的金融操作,包括简单的支付以及复杂的金融工具和智能合约等。

高级Stellar功能

交易从提交到确认的生命周期

Stellar交易的生命周期可以总结为以下几个过程。

  • 创建:用户启动交易,指定源帐户、序列号、操作、费用和任何必要的前提条件。
  • 签名:用所需的密钥签署交易,形成交易信封。对于更复杂的设置,可能涉及多个签名者。
  • 提交:使用Horizon将交易信封提交到Stellar网络,或直接提交到Stellar Core。
  • 传播:在验证后,Stellar Core将交易传播到所有连接的服务器,确保其在整个网络中传播。
  • 候选交易集准备:在分类帐关闭期间,每个验证器从最近的时间段中收集有效的交易,并组合候选交易集。如有必要,交易将根据费用进行优先级排序。
  • 交易集提名:每个验证者向网络提名他们的候选交易集。
  • 交易应用顺序确定:计算交易应用顺序,将集合顺序打乱,制造不确定性,并维护帐户内的序列号排序。
  • 费用收取:同时收取所有交易的费用。
  • 交易应用:按确定的顺序应用每个交易,使用帐户序列号,重新检查有效性并执行操作。
  • 协议升级:如果发生协议升级,则需要实施必要的升级,修改分类账状态和分类账头的参数。由此,生命周期结束,整个过程重新开始。

Stellar生态系统提案(SEP)

SEP是对改进或增强Stellar网络互操作性和功能的提案。它们是一种标准化协议,开发人员和组织可以实施这协议以确保Stellar生态系统内的兼容性和顺畅交互。

SEP涵盖了Stellar网络运营的各个方面,包括基本的交易协议到更复杂的功能,如跨境支付和账户恢复。团队以协作的方式进行讨论、创建并更新SEP,这通常需要更广泛的Stellar社区参与讨论并发表意见。

一些重要的SEP包括:

  • SEP-0001:Stellar TOML文件,提供有关网络参与者的基本信息。
  • SEP-0006:存款和提款API,简化资产的存取款流程。
  • SEP-0010:提供了一种对用户进行身份验证的方法。
  • SEP-0012:KYC API,规范了解客户信息的流程。
  • SEP-0024:交互式存款和取款,增强非API交互的用户体验。
  • SEP-0031:跨境支付API,定义金融机构交互的协议。
    这些SEP有助于确保以无缝、标准化的方法实现Stellar网络的常见用例,对于网络的发展和新服务和功能的整合起到了重要作用。
Tuyên bố từ chối trách nhiệm
* Đầu tư tiền điện tử liên quan đến rủi ro đáng kể. Hãy tiến hành một cách thận trọng. Khóa học không nhằm mục đích tư vấn đầu tư.
* Khóa học được tạo bởi tác giả đã tham gia Gate Learn. Mọi ý kiến chia sẻ của tác giả không đại diện cho Gate Learn.
Danh mục
Bài học 1

Stellar区块链技术

在我们的第一课中,我们将介绍Stellar,这是一个创新的开源网络,它已经改变了货币和支付领域。Stellar的区块链技术连接全球金融机构,通过降低成本和时间,彻底改革了跨境转账。与传统银行系统不同,Stellar的去中心化协议促进了高效的数字货币到法定货币的兑换,特别是在银行服务不足的地区,推动了金融包容性。

深入探讨SCP

Stellar共识协议(SCP)是Stellar网络的核心,确保系统安全高效地运营。SCP是在去中心化的金融网络中实现共识的革命性方法,基于联邦拜占庭协议(FBA)的概念,该协议侧重于去中心化控制的理念,节点自愿选择信任哪些其他参与者以获取可靠信息。了解更多关于拜占庭问题的信息,您可以参阅我们的另一篇文章:什么是拜占庭将军问题

文章摘录:“拜占庭将军问题(Byzantine failures),又称两军问题,1982年在莱斯利·兰波特研究分布式对等网络通信容错问题的论文中提出。在分布式系统的通讯过程中,可能会出现一些局部问题导致计算机发送错误信息,破坏系统一致性。因此,拜占庭将军问题本质上是关于点对点通信中的共识问题。”

SCP与工作量证明和权益证明对比

SCP与工作量证明(PoW)和权益证明(PoS)机制有很大不同。比特币等网络使用的PoW需要大量计算来解决复杂的数学问题,以验证交易并创建新区块。而以太坊2.0等网络使用的PoS则要求验证者持有(有时还需锁定)一定数量的加密货币才能参与该过程。

SCP允许节点通过选择值得信赖的合作伙伴,称为Quorum Slice,来达成共识,消除了对能源密集型挖矿的需求,并且不需要验证者锁定资本作为权益。这种转变不仅减少了对环境的影响,还使网络安全的参与更加民主化。

SCP在速度和可靠性方面的优势

SCP在速度和可靠性上具有明显优势。在Stellar网络上,交易可以在几秒钟内得到确认,这与PoW或PoS系统上可能需要几分钟甚至几小时才能确认交易的情况形成鲜明对比。此外,SCP的设计本质上可以防止双花攻击,并确保即使一些节点出现故障或恶意行为,网络也能继续平稳运行。

在共识机制的三个基本属性中,SCP重点关注其中两个:容错性和安全性,旨在在某些节点发生故障时仍能继续运行,并确保网络节点就交易结果达成一致,以避免冲突状态。虽然当节点难以达成协议时,这可能会延迟共识,但它大大降低了系统故障的可能性。

SCP的组成部分

  • Quorum Set和Quorum Slice:Stellar网络上的每个节点都定义了自己的一组可信节点,称为Quorum Set(节点集合)。在这个集合中,节点必须就交易集达成一致,形成反映网络中某些部分达成一致的Quorum Slice(单个节点)。
  • 联邦投票:SCP利用联邦投票来达成共识,这通过几个阶段进行:节点对交易集进行投票,接受基于信任的其他节点的投票,最后确认要应用的交易集。
  • 提名和投票协议:这两个阶段的SCP是让节点提出交易集,然后通过一系列投票确认它们被添加到分类账中。
    SCP是去中心化网络面临的经典问题的创新解决方案。它为Stellar网络提供了一种快速安全地处理交易的方式,而无需与其他共识机制相关的高度计算成本。这种设计反映了包容性和安全性之间的平衡,使Stellar成为需要快速结算和强大安全措施的金融应用的理想平台。

Stellar网络的层

Stellar堆栈概述

来源:https://developers.stellar.org/docs/fundamentals-and-concepts/stellar-stack

Stellar网络架构由多个层组成,这些层互相协调,提供全面的金融基础设施,目的是确保网络有强大的故障应对能力,对所有人开放,并以迅速且经济高效的方式运作,能够应对现实世界的金融活动。

不同层的角色和交互情况

  • Stellar Core:这是Stellar网络的基础层,由维护分布式账本和执行共识过程的节点组成。Stellar Core每5-7秒更新一次账本,展示了网络的卓越效率。
  • Horizon API:作为Stellar Core和各种应用之间的桥梁,Horizon是一个面向客户端的HTTP API服务器。它提供了一个可访问的界面,用于向网络提交交易和查询历史数据。虽然可以直接连接到Stellar Core,但使用Horizon简化了交互过程,使其对客户端应用程序更加实用。
  • Soroban RPC和CLI:Soroban将智能合约功能引入Stellar生态系统。Soroban RPC(远程过程调用)服务器充当应用程序与这些智能合约交互的中介。CLI(命令行界面)为开发人员提供了一种使用命令行工具构建、部署和运行智能合约的直接方式。
  • 软件开发工具包(SDK):这些工具包通过为程序员提供用各种编程语言与Horizon和Soroban RPC进行交互的库来促进开发过程,简化了直接处理网络协议所涉及的一些复杂过程。
  • DeFi协议:即去中心化金融协议,能够创建在区块链上自主运行的金融服务,如借贷平台和去中心化交易所。它们可以集成到应用程序中,利用Stellar提供的金融基础设施,而无需中央中介。

Stellar不同版本的网络

  • 主网:金融交易实际发生的主要公共网络。
  • 测试网:由Stellar开发基金会(SDF)维护的沙盒环境,供开发人员在不使用真实资金的情况下测试他们的应用程序。
  • 未来网(Futurenet):用于测试Stellar生态系统中尖端功能和发展的网络。
  • Stellar堆栈的每一层都有特定的作用,有助于实现网络的整体功能,确保它仍然是构建各种金融应用程序的强大和多功能平台。

Stellar网络层的设计以及各层之间的交互提供了一个坚实而灵活的基础,在此基础上可以构建和运营各种金融服务,从日常支付到复杂的去中心化金融应用。这种分层架构不仅确保了运营效率和可靠性,还支持创新,使开发人员能够专注于创建适合其特定用例的解决方案。

Stellar内的操作

常见操作及其用法

Stellar中的操作指的是可以改变账本状态的特定行为。每个操作都是一条做出更改的指令,这些指令以称为“交易”的集合形式提交到网络。交易具有原子性,要么全部成功,要么全部失败。操作涉及的范围从创建帐户到管理Stellar去中心化交易所(SDEX)中的订单。

交易建立和处理

Stellar中交易的建立过程是通过将一个或多个操作与其他信息(如源账户和序列号)捆绑在一起来完成的。这些交易使用源账户的密钥进行签名,以确保真实性,然后提交给Stellar网络进行处理。如果交易中的所有操作都有效,并且账户有足够的余额来支付费用和操作本身,则该笔交易被确认并纳入分类账。

创建账户操作

此操作用于创建新的Stellar账户并存入资金。它需要一个初始余额,并在分类账中为该账户创建一个新条目。

支付操作

支付操作允许账户向目标帐号发送特定资产的金额。这是在Stellar网络上转移价值的基本组成部分。

路径支付操作

路径支付操作允许使用不同的资产进行支付;Stellar网络找到发送资产和接收资产之间的最佳路径。路径支付分为严格发送和严格接收版本,分别保证发送的金额或接收的金额。

管理订单操作

这些操作用于在Stellar去中心化交易所中创建、更新或删除订单。有管理买入和卖出订单的独立操作,以及创建不立即匹配的被动订单的操作。

设置选项操作

此操作用于配置帐户的各种设置,例如设置通胀目标、管理签名者或设置可以更改帐户权限的标志。

更改信任操作

此操作会创建、更新或删除信任线,这是Stellar允许帐户持有和交易其他帐户发行的资产的方式。

账户合并操作

账户合并操作是将一个账户的余额转移到另一个账户,并从分类账中删除源账户。

管理数据操作

帐户可以将数据条目附加给自己,这些条目本质上是键值对。管理数据操作可以设置、修改或删除这些数据条目。

Stellar数据结构

分类账:如何维护和更新

Stellar中的分类账相当于其他区块链网络中的区块,可以捕获给定时间点的网络状态。它包含所有余额、订单和其他数据,如智能合约信息。分类账按时间顺序链接,每个新的分类账版本都是将一组交易应用于先前版本的结果。分类账头是分类账的摘要,包含分类账版本、先前的分类账哈希和交易集结果哈希等元数据。

账户:创建、管理和类型

账户是Stellar中的主要数据结构,代表系统的用户。账户是通过“创建账户”操作创建的,有最低XLM余额要求,该余额由基本储备金乘以账户拥有的子条目数量确定。账户具有各种属性,如唯一标识符(账户ID)、不同资产的余额、签名者以及低、中、高安全性的阈值。

资产:Stellar上的原生和自定义资产发行

Stellar网络上的资产可以代表法定货币、加密货币或任何其他形式的价值。每个资产都由资产代码和发行人的账户标识。发行资产是通过发行人向另一个账户进行支付操作完成的。资产由发行账户控制,可以设置授权标志并链接到有关资产的元数据。在Stellar上发行的资产也可以通过Stellar资产合约在智能合约中使用。

操作和交易:类型及更改状态的方式

操作是可以包含在交易中的单个指令,其范围从支付到在去中心化交易所上管理订单再到账户配置更改不等。交易会对这些操作进行捆绑并将它们提交到网络以并入分类账。交易具有原子性质;如果交易中的任何操作失败,整个交易都会失败。

智能合约:Stellar的功能和限制

Stellar通过Soroban平台引入了智能合约。Stellar上的智能合约是可以在区块链上执行操作的代码片段,由Wasm字节码组成,并存储在CONTRACT_DATA分类账条目中。智能合约可以在分类账上拥有自己的存储条目,这些条目可以是临时的,也可以是持久的,并具有不同的成本和生命周期。

每个数据结构和组成部分都在Stellar提供可扩展和灵活的金融基础设施的能力中发挥着关键作用。Stellar网络围绕这些元素的设计实现了广泛的金融操作,包括简单的支付以及复杂的金融工具和智能合约等。

高级Stellar功能

交易从提交到确认的生命周期

Stellar交易的生命周期可以总结为以下几个过程。

  • 创建:用户启动交易,指定源帐户、序列号、操作、费用和任何必要的前提条件。
  • 签名:用所需的密钥签署交易,形成交易信封。对于更复杂的设置,可能涉及多个签名者。
  • 提交:使用Horizon将交易信封提交到Stellar网络,或直接提交到Stellar Core。
  • 传播:在验证后,Stellar Core将交易传播到所有连接的服务器,确保其在整个网络中传播。
  • 候选交易集准备:在分类帐关闭期间,每个验证器从最近的时间段中收集有效的交易,并组合候选交易集。如有必要,交易将根据费用进行优先级排序。
  • 交易集提名:每个验证者向网络提名他们的候选交易集。
  • 交易应用顺序确定:计算交易应用顺序,将集合顺序打乱,制造不确定性,并维护帐户内的序列号排序。
  • 费用收取:同时收取所有交易的费用。
  • 交易应用:按确定的顺序应用每个交易,使用帐户序列号,重新检查有效性并执行操作。
  • 协议升级:如果发生协议升级,则需要实施必要的升级,修改分类账状态和分类账头的参数。由此,生命周期结束,整个过程重新开始。

Stellar生态系统提案(SEP)

SEP是对改进或增强Stellar网络互操作性和功能的提案。它们是一种标准化协议,开发人员和组织可以实施这协议以确保Stellar生态系统内的兼容性和顺畅交互。

SEP涵盖了Stellar网络运营的各个方面,包括基本的交易协议到更复杂的功能,如跨境支付和账户恢复。团队以协作的方式进行讨论、创建并更新SEP,这通常需要更广泛的Stellar社区参与讨论并发表意见。

一些重要的SEP包括:

  • SEP-0001:Stellar TOML文件,提供有关网络参与者的基本信息。
  • SEP-0006:存款和提款API,简化资产的存取款流程。
  • SEP-0010:提供了一种对用户进行身份验证的方法。
  • SEP-0012:KYC API,规范了解客户信息的流程。
  • SEP-0024:交互式存款和取款,增强非API交互的用户体验。
  • SEP-0031:跨境支付API,定义金融机构交互的协议。
    这些SEP有助于确保以无缝、标准化的方法实现Stellar网络的常见用例,对于网络的发展和新服务和功能的整合起到了重要作用。
Tuyên bố từ chối trách nhiệm
* Đầu tư tiền điện tử liên quan đến rủi ro đáng kể. Hãy tiến hành một cách thận trọng. Khóa học không nhằm mục đích tư vấn đầu tư.
* Khóa học được tạo bởi tác giả đã tham gia Gate Learn. Mọi ý kiến chia sẻ của tác giả không đại diện cho Gate Learn.