@ difficial- labs/ spark (英语)
用于动态 SDK 的 Spark 钱包连接软件包,可以与 Spark 网络钱包进行无缝集成.
特征
- 弹性提供者接口 - 方便为额外的 Spark 钱包添加支持
- 比特币传输 - 在可选的磁盘支持下将比特币送到 Spark 地址
- 调试 - 在 Spark 地址之间传送令牌
- 信件签名 - 在可选的磁盘支持下签名认证信件
- 主网支助 - 目前支持Spark主网(链式ID 301)
安装
npm install @dynamic-labs/spark
建筑
基础连接器类
这个 SparkWalletConnector 为所有 Spark 钱包集成提供坚实的基础 :
- 摘要执行 - 处理普通钱包操作
- 处理错误 - 综合错误处理和记录
- 主网焦点 - 目前优化用于主网
提供者接口
所有 Spark 钱包提供者必须执行 ISparkProvider 接口 :
interface ISparkProvider {
isConnected: boolean;
chainId?: string;
network?: string;
connect(): Promise<SparkConnectionResult | string>;
disconnect(): Promise<void>;
getAddress(): Promise<SparkAddressResult>;
signMessage(
message: string | SparkSignMessageRequest,
): Promise<SparkSignatureResult>;
signMessageWithTaproot(message: string): Promise<SparkSignatureResult>;
transferBitcoin(params: {
receiverSparkAddress: string;
amountSats: bigint;
isTaproot?: boolean;
}): Promise<string>;
transferTokens(params: {
tokenPublicKey: string;
receiverSparkAddress: string;
tokenAmount: number;
isTaproot?: boolean;
}): Promise<string>;
request(method: string, params?: unknown): Promise<unknown>;
[key: string]: unknown; // Extensible for additional properties
}
++ 支持的网络
| 网络 | 链式标识 | 说明 | 块浏览器 |
|---|---|---|---|
| 主要网 | 301国道 | 生产网络 | mempool. 空间 |
说明:目前仅支持主网. 未来版本中可能会添加Testnet,signet,和regtest支持.
使用量
基本融合
import { DynamicContextProvider } from '@dynamic-labs/sdk-react-core';
import { SparkWalletConnectors } from '@dynamic-labs/spark';
function App() {
return (
<DynamicContextProvider
settings={{
environmentId: 'your-environment-id',
walletConnectors: [SparkWalletConnectors()],
}}
>
{/* Your app content */}
</DynamicContextProvider>
);
}
使用 SparkWallet
import { useDynamicContext } from '@dynamic-labs/sdk-react-core';
import { SparkWallet } from '@dynamic-labs/spark';
function MyComponent() {
const { primaryWallet } = useDynamicContext();
const handleSendBitcoin = async () => {
if (primaryWallet instanceof SparkWallet) {
// Send Bitcoin
const txHash = await primaryWallet.sendBalance({
amount: '100000', // 100,000 satoshis
toAddress: 'sp1recipient123456789abcdef',
isTaproot: false,
});
// Or use the direct transferBitcoin method
const txHash2 = await primaryWallet.transferBitcoin({
amount: '50000',
toAddress: 'sp1recipient123456789abcdef',
isTaproot: true,
});
}
};
const handleSendTokens = async () => {
if (primaryWallet instanceof SparkWallet) {
const txHash = await primaryWallet.transferTokens({
tokenPublicKey: 'token123',
receiverSparkAddress: 'sp1recipient123456789abcdef',
tokenAmount: 1000,
isTaproot: false,
});
}
};
return (
<div>
<button onClick={handleSendBitcoin}>Send Bitcoin</button>
<button onClick={handleSendTokens}>Send Tokens</button>
</div>
);
}
自定义连接符执行
要添加对新 Spark 钱包的支持 :
import { SparkWalletConnector } from '@dynamic-labs/spark';
export class YourSparkConnector extends SparkWalletConnector {
override name = 'Your Spark Wallet';
override overrideKey = 'yourspark';
public override getProvider(): ISparkProvider | undefined {
return window.yourProvider;
}
}
类型检查
使用 isSparkWallet 用 Spark 钱包安全工作的类型守护 :
import { isSparkWallet } from '@dynamic-labs/spark';
function handleWallet(wallet: Wallet) {
if (isSparkWallet(wallet)) {
// TypeScript now knows this is a SparkWallet
wallet.transferBitcoin({
amount: '100000',
toAddress: 'sp1recipient123456789abcdef',
});
}
}
测试
运行测试
npx nx test spark
构建软件包
npx nx build spark
Demo App 测试
- 启动演示应用 :
npm run start - 导航到 Spark 钱包区域
- 测试连接、地址检索和信件签名
API 参考
核心出口
SparkWalletConnectors()- 工厂函数返回所有可用的连接器SparkWalletConnector- 自定义执行的基本类别SparkWallet- 带有比特币和代币转让方法的钱包类ISparkProvider- 钱包提供者的接口isSparkWallet- 火花钱包的护卫类型
火花钱包方法
sendBalance(params)- 发送比特币(别名用于转移比特币)transferBitcoin(params)- 把比特币送到火花地址transferTokens(params)- 向Spark地址发送信号
类型定义
SparkConnectionResult- 钱包连接的结果SparkAddressResult- 地址检索的结果SparkSignMessageRequest- 信件签名请求选项SparkSignatureResult- 消息签名的结果
有关软件包
- @ 动态- labs/ sdk- react- core - 反应SDK核心功能
- @ distractive- labs/ wallet- 连接器- 核心 - 基本钱包连接器类
- @ 动态数据/ 类型 - 通用类型定义
捐款
我们欢迎捐款! 请看我们的 提供指南 详细情况.
开发设置
- 清除仓库
- 安装依赖性 :
npm install - 运行测试 :
npx nx test spark - 构建软件包 :
npx nx build spark
添加新钱包
- 创建新的连接器类扩展
SparkWalletConnector - 执行
getProvider()方法 - 添加综合测试
- 更新
SparkWalletConnectors()工厂函数
许可证
这个软件包是动态SDK的一部分,并遵循同样的许可证条款. 见 自由主义 详细情况.
++ 辅助
- 文档数字 : 维基文库中相关的原始文献: 通訊通訊通訊通訊通訊通訊通訊通訊通報
- GitHub 问题数字 : 报告错误或请求特性
- 解析器数字 : 加入我们的社区
由动态实验室团队建造