💎 欢迎来到第 5 章。 在最初的课程中,我们将重点设置我们的 dApp 项目并实现 TonConnect 功能。接下来,我们将通过发送实际交易来探索与合约的交互。最后,我们将讨论 dApp 发布到 GitHub 页面的过程,以此结束本章。 在上一章中,我们创建了一个具有计数器功能和存款/取款功能的智能合约。该智能合约是我们应用程序的后台基础设施。在本教程中,我们将开发前端或用户界面,使最终用户能够通过网络浏览器访问它。 重要的是要记住,我们正在构建的应用程序是去中心化的。去中心化应用程序(DApps)遵循特定的规则。 & A% ~ H) X. U2 a; H+ W2 ^* U7 m8 G
还有更多规则,但就目前而言,这两条是必须遵守的。通过遵守这些规则,我们可以确保不依赖后端服务器来提供前端服务。如果使用这样的服务器,它本质上就是中心化的(因为并非所有终端用户都有平等的访问权),因此,我们的整个应用程序也会变成中心化的。 在本章中,我们将使用另一个名为 Tonkeeper 的 TON 钱包。这将让你更好地了解不同钱包的运行方式。该钱包将通过名为 TON Connect 2 的协议与我们的 DApp 通信。如果您选择了与 Tonkeeper 不同的钱包,请确认它是否支持此版本的 TON Connect。不要忘记确保您的钱包连接到正确的网络--主网或测试网。 Tonkeeper 默认在 TON 主网上运行。如果您决定在 testnet 上运行,则需要将应用程序手动切换到开发模式。打开 "设置 "选项卡,快速点击底部的版本号 5 次。这时会出现 "开发菜单"。点击 "切换到 Testnet "并完成切换。稍后您可以使用此菜单返回主网。
$ x1 l, n% g; W( R
TON Connect让我们试着理解一下,当我们决定为合约创建用户界面时,为什么还需要 TON Connect。 我们不难发现,这其中涉及到三个方面: TON 区块链 支持大规模创建信任最小化的应用程序和服务。 应用程序 为TON提供基于智能合约无限功能的用户界面,但无法立即访问用户的资金。 钱包 提供批准交易的用户界面,并在用户的个人设备上安全地保存用户的加密密钥。 这种关注点的分离为用户带来了高速创新和高水平的安全性:钱包不需要自己建立 "walled-garden"生态系统,而应用程序则不需要承担持有最终用户账户的风险。 TON Connect 是跨越这一概念鸿沟的桥梁。 总而言之,TON Connect 旨在简化应用程序通过终端用户的钱包与 TON Blockhain 进行交互的方式。 您有时会看到 TON Connect 2,这只是最新版本的协议。请使用支持 TON Connect 2 的钱包。 为我们的 DApp 创建项目我们将使用 React 构建前端。我们将使用 Vite 及其 React 模板来创建项目。为项目选择一个名称,例如 counter-front-end,然后打开终端并运行以下程序: - yarn create vite counter-front-end --template react-ts
; |9 A; G4 c1 t h - cd counter-front-end && yarn
复制代码我们还需要安装一些软件包,以便与 TON 区块链进行交互。在前几章编写测试和编译/部署脚本时,我们已经看到了这些软件包的运行。在命令行中运行以下命令:
6 X3 g# Z1 _ t, @- yarn add ton ton-core ton-crypto
. @1 q& O( h4 k& F+ T - yarn add @orbs-network/ton-access8 X% R5 n' ?' N8 \9 m$ P+ p
复制代码 最后但并非最不重要的一点是,我们需要克服 ton 库对浏览器中不可用的 Nodejs Buffer 的依赖。我们可以通过安装 polyfill 来做到这一点。在终端运行以下命令
, b, g* N. X8 A5 c6 E; n' T0 ^- yarn add vite-plugin-node-polyfills
( |. s' o" K! i, j
复制代码完成 Buffer 修复后,请更新 vite.config.ts 文件: 2 a6 ]9 \( ]$ z* j8 ~. a% `
- import { defineConfig } from 'vite';1 h0 W. V) s* {( _6 o
- import react from '@vitejs/plugin-react';5 r _1 U, b* h2 V4 C: \( I
- import { nodePolyfills } from 'vite-plugin-node-polyfills';9 P) o+ d5 Q2 J: A$ w# h7 p
4 u' x* f5 y: w( ]" G7 o) [- // https://vitejs.dev/config/! X: D3 M6 V3 O0 L
- export default defineConfig({4 J; [' W: ?/ ^% j5 }
- plugins: [react(), nodePolyfills()],
8 }' U ]$ O0 A) K1 x - base: '/',
6 q' m2 {# |/ n - });
复制代码要查看空应用程序模板,请在命令行中运行:
! c0 |7 Q# F+ q" [- F- z- yarn dev
5 y( l) ^# l/ p. r6 Y9 }: l3 ]
复制代码 3 R# [4 u- ~# [# U5 l
您将看到一个全新页面,其中包含 Vite 的 TypeScript 模板内容。 好了!我们可以开始使用 TON Connect 来验证终端用户是否可以使用我们的 DApp 了。 / p/ T5 M3 W; b6 j. X3 u
9 L4 i6 \9 A' j; Z' ~. r |