资讯详情

Flow公链|Flow客户端库的简单力量

背景介绍:Flow 这是一个新的公共链,最初是由 CryptoKitties 和 NBA Top Shot 的创造者 Dapper Labs 设计与开发。在这个系列中,我们将使用它 Flow 客户端库 (FCL) 从技术角度讨论 Flow 不同组件的区块链。我们的文章将与您讨论Flow独特的多节点架构和 Cadence,这种新型编程语言加速了智能合约的安全发展。

区块链技术为开发人员创建和编写货币形式(加密货币)、铸造和分发限量版独特资产提供了新的处理方法 (NFT)、参与群体治理 (DAO) 甚至调解身份验证和无密码登录的能力(例如, Magic)。

就像你需要一个网络浏览器来访问互联网上的网站一样,你需要一个加密钱包来访问、存储、转移和交互区块链上的资产和信息。

即使不涉及付款,加密钱包也可用于身份验证,解决不同服务内容下的成千上万的密码问题。

加密钱包比社交登录更重要(Facebook、Apple 等等)更好,因为它们所依赖的基础设施是完全透明的,其安全性完全由用户自己控制。

因此,应用程序和钱包之间的界面非常重要。 Flow 客户端库 (FCL) 用武之地。

Flow上的FCL类似以太坊 Web3.js,但它是为消费者建造的。我们不依赖它 Web三、而是 FCL,因为:

  • 我们不想过分依赖“Javascript ”。Web3 您的钱包将代码添加到浏览器中,以便工作 dapp 可以引导你签署交易。这些操作的前提是你必须使用自定义浏览器(如 Brave)或使用扩展程序(如 Metamask)。除了导入的安全问题,这也在一定程度上阻碍了观众规模的扩大。

  • 我们不希望 dApp 开发人员过早假设目标用户组使用的提供商或平台类型。我们希望开发人员能写下自己的dApp,并与各种钱包、托管或自主权、硬件或软件、移动或台式机连接。

毫不夸张地说,开发人员可以使他们的应用程序通过一行代码接受分散的和以加密货币为中心的支付方式,甚至用户选择以美元或法定货币为中心的更主流的支付方式。

本文将会对FCL比较区块链开发中的其他知名工具和策略,教你如何使用它们 FCL 功能和速度。请自由查看文末资源,深入了解 Flow 开发的可能性。

关于 Dapper Labs 产品说明:在 FCL 它是在出现之前建造的 NBA Top Shot 以及当前版本 Dapper Wallet。因此,NBA Top Shot 目前依赖后端 Go SDK 完全托管钱包。展望未来,一切 Dapper Labs 产品将被迁移使用 FCL。这意味着一旦完整Dapp 商店准备就绪,使用 FCL 的 dApp 将在 Dapper 钱包兼容性领先一步。

区块链开发非常容易开始。我们很容易获得一些基本信息。一旦我们接触到这个领域,我们就会发现事物发展迅速。成千上万的精彩教程将教你如何构建未来网络的拼图。

然而,当你开始将这些分散的知识连接起来,并开始为真正的用户构建一个真实的世界时,真正的挑战就会出现。你会发现自己处于委托信任的三角关系中:应用程序、钱包和区块链之间的通信过程。

这个微妙的沟通轴也是用户接受度的成败时刻— 若这些流程设计不当、不安全,则难以吸引和留住用户。

在构建基于以太坊的应用程序 CryptoKitties 当时,我们的团队必须努力学习。让我们谈谈我们遇到的一些挑战,它们最终鼓励我们建立 Flow 和 FCL 等产品和工具。

在编写区块链应用程序时,外部钱包将解放您管理用户私钥的责任。浏览器插件钱包是以太坊等网络上非常流行的解决方案,例如 Metamask。假如你以前做过 Metamask 集成到您的应用程序中,您可以编写以下代码:

在这里,我们将检查用户是否安装了给定的浏览器插件。如果没有,我们将引导用户安装它。如果已经安装,我们将继续下一个操作。这种方法给开发人员带来了两个问题:我们需要为这两个可能的场景编写额外的代码,并引入一个我们无法控制的元素 —— 用户钱包的初始化。

对于用户来说,安装和设置外部钱包的额外步骤将是他们开始操作的障碍,特别是当与不熟悉区块链的低技术内容的观众合作时。

许多钱包提供商已经确定并解决了这个问题,尤其是那些专注于更简单入门体验的钱包提供商。通过保持基于浏览器的交互,简化设置过程,如 Fortmatic 这样的钱包将确保用户更容易进入区块链。我们可以编写以下内容 Fortmatic 集成到我们的代码中:

这种操作的问题是不太透明,根本无法很好地扩展。随着我们检查越来越多不同的钱包供应商,我们的 if-else 句子也在增长。此外,我们还必须在文件顶部设置特定的 Fortmatic 导入一些需要管理的程序 API 密钥。想象一下,如果我们将来添加更多的钱包程序,现在如此冗长的代码将来会发生什么。

我们可以很容易地预测,这将给开发团队带来越来越多的技术负担,因为用户将继续期待更多的钱包支持。在编写特定应用程序的逻辑之前,必须创建大量的模型代码。虽然它为用户提供了一些便利,但这种解决方案确实使开发工作在未来的发展道路上变得越来越复杂。

Flow 客户端库 (FCL) 为应对这些挑战而设计。 FCL,以上所有步骤都可以一行:

fcl.authenticate()

就这么简单。这基本上是从开发人员的角度验证用户身份所需要做的一切。只需要一行代码,就可以做任何事情 FCL 兼容的钱包连接到你的应用程序 - 无论是托管还是独立、硬件还是软件、移动还是桌面。您还可以在一行代码中轻松了解当前用户的所有变化:

fcl.currentUser().subscribe()

实现这种简单的魔力在于集成钱包发现协议。调用身份验证方法时,FCL 自动发现和 FCL 兼容的钱包提供商,并为用户选择的服务获得特定的配置。

本质上,FCL 负责可信通信的繁重工作,避免开发人员管理不同钱包提供商的代码。这使得开发人员能够专注于真正重要的事情:构建人们喜爱的应用程序。

但 FCL 不仅仅是身份验证。作为构建 Flow Javascript SDK 上述高级框架,FCL 使你能够创 Flow 丰富的区块链互动。在区块链上自定义查询和交易,只需要少量的构建功能,就会变得像乐高积木的排列一样简单。

fcl.send([...]).then(fcl.decode)

在区块链查询数据时,您可以使用脚本。脚本是指包含公共函数的 main 的 Cadence 该函数将在执行过程中运行。您不需要指定任何其他信息,因为脚本不会改变区块链上的数据。

fcl.send([ fcl.script`  pub fun main(): Int {     
         return 1   2  } `])

每当你想更改区块链上的数据时,fcl.transaction是您的最佳选择。你需要做的是提供交易方法 Cadence 指定提出、授权和支付交易的人。Flow 其中一个创新是,这些角色可以分布在不同的账户中,但只需要操作用户当前的账户。FCL 通过使用 fcl.authz 获取当前用户的所有授权详细信息:

fcl.send([ fcl.transaction`  transaction {     
         prepare(acct: AuthAccount) {     
          log("Hello from prepare")   }   execute {     
          log("Hello from execute")   }  } `, fcl.proposer(fcl.authz), fcl.authorizations([fcl.authz]), fcl.payer(fcl.authz),])
p>将参数注入这些构建器函数同样简单。只需将以下行添加到需要指定其他参数的任何脚本或事务中:

fcl.args([ fcl.arg(5, t.Int), ...])

请注意,你指定的任何参数也是需要命名特定类型。你可以从@onflow/types 包中导入这些类型。

如果您想看到所有这些部分组合在一起,请查看 Flow 应用程序快速入门教程,在那里您将在 Flow 上构建您的第一个应用程序:

Start Building docs.onflow.org

从这些示例中可以看出,FCL 架构的简单性使您能够快速操作,同时编写整齐、可预期且安全的代码。

FCL 作为一个框架,通过底层 Flow Javascript SDK,提供了一个抽象层来简化交互、强制执行高安全性的操作,从而大大加快了区块链的开发。但是,它仍然为开发人员提供了灵活性,可以自定义任何应用程序可能需要的细节。— 它是两全其美的。

FCL 中公开了原始 Javascript SDK 的各种方法,允许你使用较低级别的操作,例如通过地址查找帐户、获取特定交易的状态或查询其他交互。此外,诸如 decode 之类的方法也会允许你传入自己的自定义函数,让你完全控制你的应用程序解析响应。

由于以上的多功能性,你应该尽可能选择 FCL 而不是 Javascript SDK,因为它可以显着降低开发时间和复杂性,同时仍然会考虑到高级场景。对于具有频繁的低级区块链交互这种复杂用例,直接使用 Javascript SDK 应该是最后的手段。例如,构建处理用户帐户创建的托管应用程序或编写经常使用协议层技术指标的开发人员工具。

在 Flow,我们相信赋予创造者和创新者能力的建设者。钱包提供商非常适合这一类别,因为它们使其他创作者无需管理私钥即可构建出色的用户体验。然而,这是以增加这些提供商的责任为代价的,因为他们需要在安全的背景下支持许多不同的用例。

为了减轻钱包提供商的压力,FCL 提供了明确的区块链身份验证和授权标准,规范了兼容 FCL 的钱包和基于 FCL 的应用程序之间的通信流程。就像 OAuth 等其他授权协议一样,它通过阐明各方之间的期望来实施高安全性操作,从而实现更快、更安全的通信程序。

对于钱包提供商而言,这种标准化会使与 Flow 的合作变得简单直接,使他们能够专注于其关键工具的性能和安全性的开发。同时,这是对未来的承诺:每个基于 FCL 的应用程序都将支持他们的钱包,而无需开发人员编写特定于供应商的代码。通过这种方式,钱包应用程序可以更快地进入市场,同时不断扩大其对更大潜在用户群的影响。

FCL 是 dApps 和钱包相互交流的更好方法,因为:

  1. FCL 不需要浏览器扩展或额外安装来吸引用户。

  2. FCL 同样适用于托管和非托管钱包,包括移动钱包。

  3. FCL 允许开发人员编写更清晰、更简洁且不易出错的代码。

重头戏在这:结合 Flow 的第一个稳定币 FUSD 和第三方提供商(如 Moonpay 或 Ramp),FCL 将成为您轻松入门,让您的用户能够一更快更简单的方式充分参与您的 dApp程序。

FCL 是一款符合 Flow 整体理念的工具:我们希望为用户、开发人员和合作伙伴等提供简单而精致的体验。这是关于克服摩擦和激发创造性的协同作用,可以帮助您的应用程序吸引到百万用户。

如果您想更深入地了解 FCL 和 Flow 的详细信息,请参阅下面的其他资源。如果您在使用 FCL 和 Flow 构建应用程序时遇到问题,请随时通过下面列出的渠道与我们联系 — 我们非常乐意为您提供帮助。

  • https://www.onflow.org/primer

  • https://docs.onflow.org/flow-js-sdk/flow-app-quickstart/

  • https://github.com/onflow/flow-js-sdk

  • https://docs.onflow.org/cadence/

  • https://discord.com/invite/flow

  • https://forum.onflow.org/

我们欢迎越来越多的小伙伴加入Flow星球,为星球增添色彩!

https://zh.onflow.org/

https://forum.onflow.org/

https://discord.com/invite/flow

https://t.me/flow_zh

https://space.bilibili.com/1002168058

https://weibo.com/7610419699

https://blog.csdn.net/weixin_57551966?spm=1010.2135.3001.5343

标签: 公连接器类型

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台