您对移动或网络应用程序有一个突破性的想法。
您知道 Solana 是完美的区块链,并且您渴望快速启动功能丰富的体验,从第一天起就吸引用户。
那么,你的开发人员工具包里有什么可以实现这一目标呢?
Cursor 和 v0 等工具很可能在您的列表中名列前茅,而 Next.js 则是您选择的前端框架的有力竞争者。
但是,当谈到满足您的应用程序对 Solana 的特定需求时,哪些解决方案可以帮助您确保顺利启动并有效扩展?
在 Solana 上构建和扩展需要两个关键组件:
1.用于身份验证和钱包管理的无缝入门解决方案
2.强大的 RPC 服务可处理高性能交易
这些要素不仅简化了开发,而且还提供了无缝的用户体验。
让我们更深入地了解每一个元素。
Solana 钱包适配器
最简单的入职流程是通过现有钱包(例如 Phantom 或 Solflare)连接用户。此方法非常适合熟悉 Solana 并已设置钱包的入职用户。
一个很好的起点是Solana 钱包适配器,它提供:
1.标准化 API,可轻松集成
2.钱包连接和交易签名的基本功能
3.开源灵活性,可根据你的应用需求进行定制
Solana 钱包适配器实现起来快速而简单,对于拥有现有钱包的用户来说是一个可靠的选择。
除了支持多个钱包外,它还配备了标准化集成,以实现一致的钱包功能和现成的 UI 组件(例如钱包连接按钮)。最后,与原始 API 相比,它优化了性能,可以更快地签署和发送交易window.solana。
Solana 钱包适配器的开源设计允许开发人员根据特定的应用需求对其进行自定义。它还允许社区实现将其兼容性扩展到 Vue、Angular、Svelte 和 TypeScript 等框架。
但是,使用适配器确实会给您的项目引入额外的依赖关系,这会增加开发人员的负担。
虽然适配器提供了许多现成的功能,但要实现广泛的自定义可能需要深入研究其代码库或创建变通方法。根据用例,这可能会很耗时。
与任何第三方库一样,开发人员可能会遇到他们无法控制的错误或问题,这可能会影响应用程序的稳定性或需要外部支持来解决。
虽然使用钱包适配器对于加密原生用户来说很实用,但当你的目标是吸引更广泛的受众时,它就不够了,尤其是那些不熟悉区块链或还没有钱包的用户。
使用嵌入式钱包吸引新用户
嵌入式钱包可以显著增强 Solana 的入门功能,使开发人员能够获得更多用户。嵌入式钱包允许新用户注册,并在应用程序本身内自动收到钱包。
这使得用户可以:
1.无需设置第三方钱包即可开始使用
2.无缝接收资产
3.进行链上交易
这种方法最大限度地减少了摩擦,对于以主流采用为目标的消费者应用程序来说很有价值。
根据 Dynamic 的数据,超过 50% 的用户选择嵌入式钱包而不是连接现有的钱包。
然而,采用率因入职方法和目标用户群而异。
加密原生受众可能倾向于连接他们现有的钱包,而更多的主流用户可能会更喜欢嵌入式解决方案的便利性。
找到正确的平衡是关键。
零售流动性仍然主要存在于热钱包中,这意味着虽然嵌入式钱包简化了入门流程,但它们可能并不总是最好的起点。开发人员应该考虑他们的初始目标受众,并设计符合用户需求的入门体验。
用于入门和钱包基础设施的综合 SDK
对于希望启用 Solana 钱包适配器所提供功能以外的功能的开发人员,Dynamic 的 SDK等解决方案提供了更全面的方法。
使用 Dynamic,您可以:
1.支持多种钱包选择
允许用户连接现有的 Solana 钱包(如 Phantom),并为新用户发行嵌入式钱包。
2. 启用社交和电子邮件登录
使用熟悉的登录方法(例如 X 和 Telegram)简化钱包设置。
3. 定制用户体验
使用预构建的 UI 组件进行快速集成,或选择完全无头选项来设计您自己的流程。
4. 让你的应用面向未来
添加多钱包支持、欺诈保护工具和分析功能,以扩展和优化您的应用程序。
5. 从其他链获取用户
当您准备好时,将应用程序的功能从 Solana 扩展到其他链。
使用像 Dynamic 这样的解决方案,您可以简化开发过程,同时为用户提供无缝的入职体验。
它对 Solana 钱包适配器进行了补充,为开发人员提供了更多的入职功能、可扩展性和定制化是关键。
Solana 钱包适配器与嵌入式钱包
以下是一个有用的比较:
特征 | Solana 钱包适配器 | 动态的 |
钱包连接 | ✅ | ✅ |
嵌入式钱包 | ❌ | ✅ |
社交登录 | ❌ | ✅ |
多链支持 | ❌ | ✅ |
可定制的用户界面 | ❌ | ✅ |
欺诈保护 | ❌ | ✅ |
访问列表 | ❌ | ✅ |
用户管理 | ❌ | ✅ |
Webhook | ❌ | ✅ |
无论功能如何,实施时间永远是一个决定因素,您可能会认为,在如此多的事情发生的情况下,Dynamic 与 Solana 钱包适配器的实施更为复杂,但事实并非如此。
以下是默认 React 实现的比较:
Solana 钱包适配器:默认实现
import React, { FC, useMemo } from 'react';
import { ConnectionProvider, WalletProvider } from '@solana/wallet-adapter-react';
import { WalletAdapterNetwork } from '@solana/wallet-adapter-base';
import { UnsafeBurnerWalletAdapter } from '@solana/wallet-adapter-wallets';
import {
WalletModalProvider,
WalletDisconnectButton,
WalletMultiButton
} from '@solana/wallet-adapter-react-ui';
import { clusterApiUrl } from '@solana/web3.js';
// Default styles that can be overridden by your app
require('@solana/wallet-adapter-react-ui/styles.css');
export const Wallet: FC = () => {
// The network can be set to 'devnet', 'testnet', or 'mainnet-beta'.
const network = WalletAdapterNetwork.Devnet;
// You can also provide a custom RPC endpoint.
const endpoint = useMemo(() => clusterApiUrl(network), [network]);
const wallets = useMemo(
() => [
new UnsafeBurnerWalletAdapter(),
],
// eslint-disable-next-line react-hooks/exhaustive-deps
[network]
);
return (
<ConnectionProvider endpoint={endpoint}>
<WalletProvider wallets={wallets} autoConnect>
<WalletModalProvider>
<WalletMultiButton />
<WalletDisconnectButton />
{ /* Your app's components go here, nested within the context providers. */ }
</WalletModalProvider>
</WalletProvider>
</ConnectionProvider>
);
};
动态:默认实现
代码
import React from 'react'
import { DynamicContextProvider, DynamicWidget } from '@dynamic-labs/sdk-react-core'
import { SolanaWalletConnectors } from '@dynamic-labs/solana'
export const App = () => {
return (
<div className="App">
<DynamicContextProvider
settings={{
environmentId: process.env.REACT_APP_DYNAMIC_ENVIRONMENT_ID,
walletConnectors: [SolanaWalletConnectors],
}}
>
{ /* Your app's components go here, nested within the context providers. */ }
<DynamicWidget />
</DynamicContextProvider>
</div>
)
}
您已完全做好入职准备,因为我们使用的是DynamicWidget,这是一个一体化 UI 组件,可处理登录/注册按钮、完整的身份验证流程、用户配置文件等。
启动应用程序后,您将看到以下内容:
支持 solana 的嵌入式钱包小部件
动态嵌入式钱包小部件
如果您希望构建自己的 UI 或自定义特定元素,一切都可以完全配置,直至像素。探索设计文档或无头集成选项以获取详细指导。
要在 Solana 上启用嵌入式钱包注册,只需导航到仪表板并按照以下步骤操作:
在动态仪表板中启用嵌入式钱包支持
在 Dynamic 的仪表板中启用嵌入式钱包注册
开启 Solana 网络对嵌入式钱包的支持
就是这样!
任何使用电子邮件、电话或社交媒体帐户注册的人都会获得一个 Solana 钱包,并且他们可以立即使用您的应用程序。
只需几行代码,您就可以获得一流的入职培训,包括您现在和将来需要的所有功能。
添加您的 RPC 提供商并设置优先费用
虽然入门仍然是当今用户面临的最大问题之一,但交易处理紧随其后。 在 Solana 上处理网络拥塞可能很棘手。如果没有专用的 RPC 服务,用户可能会遇到交易中断的情况,从而导致沮丧。同样,设置不正确的优先级费用可能会破坏用户体验并破坏应用程序的可靠性。
您可以通过将 Helius 用于 RPC 端点并使用其优先费用 API动态设置费用来避免这种情况。将其插入 Dynamic 就像在仪表板中设置 RPC URL 一样简单。
在动态仪表板中添加您的 Helius RPC URL
创建交易时,使用优先费用 API 获取费用。
代码
async function getPriorityFeeEstimate(priorityLevel, transaction) {
const response = await fetch(HeliusURL, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
jsonrpc: "2.0",
id: "1",
method: "getPriorityFeeEstimate",
params: [
{
transaction: bs58.encode(transaction.serialize()), // Pass serialized transaction in Base58
options: { priorityLevel: priorityLevel },
},
],
}),
});
const data = await response.json();
console.log(
"Fee in function for",
priorityLevel,
"",
data.result.priorityFeeEstimate
);
return data.result;
}
Magic Eden 案例研究
强大的钱包基础设施对于开发强大且可扩展的 Solana 应用程序至关重要。
领先的 NFT 市场 Magic Eden 通过添加新链积极扩大规模。他们需要一个灵活的钱包来满足这种方法,并在 NFT 铸币等高流量时段表现出色。
通过集成 Dynamic 的 SDK,Magic Eden 可以提供多链钱包支持、社交链接和多钱包管理。管理多个钱包和跨网络收款非常简单。
Magic Eden 还依靠 Helius 来管理 RPC 节点并优化交易吞吐量。通过 Helius 的 Priority Fee API,Magic Eden 即使在高峰流量期间也能保持可靠性和速度。
Dynamic 与 Helius 的结合使 Magic Eden 能够高效扩展,同时为其每月数百万用户提供卓越的体验。
通过优先考虑可扩展性、速度和用户体验,Magic Eden 为 NFT 市场设定了基准。
对于希望构建吸引加密原生和主流受众的应用程序的开发人员来说,投资可靠的钱包解决方案可以简化开发过程,覆盖更广泛的用户群,并为长期增长奠定基础。