@ difficial- labs/ tron (韩语)
使用工业标准实现动态SDK的Tron区块链集成 TronWallet 适应器。 。 。 .
概览
这个软件包使用TronWallet适配器标准在您 dApp 中提供与 Tron 钱包的无缝集成. 通过利用TronWallet适配器,可以访问9+ Tron钱包通过一个单一,统一的接口,与自动钱包检测,连接管理,以及标准化的交易处理.
安装
npm install @dynamic-labs/tron
支持的钱包
此软件包通过 TronWallet 适配器支持以下 Tron 钱包 :
| 钱包 | 类型 | 说明 |
|---|---|---|
| OKX 钱包 | 浏览器扩展 | 有 Tron 支持的多链钱包 |
| 位元钱包 | 浏览器扩展 | 原为位保存 |
| 托肯包 | 移动/延长 | 多链钱包 |
| 信任钱包 | 移动/延长 | 流行多链钱包 |
使用量
基本融合
将所有 Tron 钱包整合到您的动态配置 :
import { DynamicContextProvider } from '@dynamic-labs/sdk-react-core';
import { TronWalletConnectors } from '@dynamic-labs/tron';
function App() {
return (
<DynamicContextProvider
settings={{
environmentId: 'your-environment-id',
walletConnectors: [TronWalletConnectors()],
}}
>
{/* Your app content */}
</DynamicContextProvider>
);
}
与 Tron 钱包合作
使用 isTronWallet 安全访问Tron特定功能的类型守护 :
import { useDynamicContext } from '@dynamic-labs/sdk-react-core';
import { isTronWallet } from '@dynamic-labs/tron';
function MyComponent() {
const { primaryWallet } = useDynamicContext();
const handleSendTrx = async () => {
if (!isTronWallet(primaryWallet)) {
console.error('Not a Tron wallet');
return;
}
try {
// Send 10 TRX
const result = await primaryWallet.sendTrx('TRecipientAddress...', 10);
console.log('Transaction sent:', result.txid);
} catch (error) {
console.error('Transaction failed:', error);
}
};
return <button onClick={handleSendTrx}>Send TRX</button>;
}
正在访问 TronWeb
直接访问 TronWeb 实例 :
import { useDynamicContext } from '@dynamic-labs/sdk-react-core';
import { isTronWallet } from '@dynamic-labs/tron';
function MyComponent() {
const { primaryWallet } = useDynamicContext();
const getTronWebInstance = () => {
if (!isTronWallet(primaryWallet)) return null;
const tronWeb = primaryWallet.getTronWeb();
return tronWeb;
};
const checkBalance = async () => {
const tronWeb = getTronWebInstance();
if (!tronWeb) return;
const balance = await tronWeb.trx.getBalance(primaryWallet.address);
console.log('Balance (in SUN):', balance);
console.log('Balance (in TRX):', balance / 1_000_000);
};
return <button onClick={checkBalance}>Check Balance</button>;
}
签名信件
用 Tron 钱包签名信件( 使用) signMessageV2:
import { useDynamicContext } from '@dynamic-labs/sdk-react-core';
import { isTronWallet } from '@dynamic-labs/tron';
function MyComponent() {
const { primaryWallet } = useDynamicContext();
const handleSignMessage = async () => {
if (!isTronWallet(primaryWallet)) return;
try {
const message = 'Hello, Tron!';
const signature = await primaryWallet.signMessage(message);
console.log('Signature:', signature);
// Verify the signature
const tronWeb = primaryWallet.getTronWeb();
if (tronWeb) {
const recoveredAddress = await tronWeb.trx.verifyMessageV2(
message,
signature,
);
console.log('Verified:', recoveredAddress === primaryWallet.address);
}
} catch (error) {
console.error('Signing failed:', error);
}
};
return <button onClick={handleSignMessage}>Sign Message</button>;
}
与TRC20 Tokens合作
获取符号余额并与 TRC20 符号交互 :
import { useDynamicContext } from '@dynamic-labs/sdk-react-core';
import { isTronWallet } from '@dynamic-labs/tron';
function MyComponent() {
const { primaryWallet } = useDynamicContext();
const getUSDTBalance = async () => {
if (!isTronWallet(primaryWallet)) return;
// USDT contract address on Tron mainnet
const usdtContract = 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t';
try {
const balance = await primaryWallet.getTokenBalance(usdtContract);
console.log('USDT Balance:', balance);
} catch (error) {
console.error('Failed to get token balance:', error);
}
};
return <button onClick={getUSDTBalance}>Get USDT Balance</button>;
}
网络信息
获取当前网络细节 :
import { useDynamicContext } from '@dynamic-labs/sdk-react-core';
import { isTronWallet } from '@dynamic-labs/tron';
function MyComponent() {
const { primaryWallet } = useDynamicContext();
const getNetworkInfo = async () => {
if (!isTronWallet(primaryWallet)) return;
const network = await primaryWallet.getNetworkDetails();
console.log('Chain ID:', network.chainId);
console.log('Network Name:', network.name);
};
return <button onClick={getNetworkInfo}>Get Network Info</button>;
}
支持的网络
该套件包括内置支持:
- 特龙主网 (车名:
0x2b6653dc(中文(简体) ) - 尼罗河试验网 (车名:
0x94a9059e(中文(简体) ) - 沙斯塔测试网 (车名:
0x401e93ff(中文(简体) )
自定义网络
您可以在创建连接器时配置自定义网络 :
import { TronLinkConnector } from '@dynamic-labs/tron';
import type { GenericNetwork } from '@dynamic-labs/types';
const customNetworks: GenericNetwork[] = [
{
blockExplorerUrls: ['https://custom-explorer.com'],
chainId: '0x12345678',
chainName: 'Custom Tron Network',
name: 'Custom Tron Network',
nativeCurrency: {
decimals: 6,
name: 'TRX',
symbol: 'TRX',
},
networkId: '0x12345678',
rpcUrls: ['https://custom-rpc.example.com'],
vanityName: 'Custom Network',
},
];
// Use with connector
const connector = new TronLinkConnector({
walletBook: walletBookInstance,
tronNetworks: customNetworks,
});
API 参考
TronWallet 类
Tron钱包的主钱包类.
方法
getAddress(): Promise<string>- 获取钱包地址getNetwork(): Promise<string | number | undefined>- 获取当前网络signMessage(message: string | Uint8Array): Promise<string>- 签名getBalance(address?: string): Promise<string | undefined>- 获得TRX平衡sendTrx(to: string, amount: number, options?: { from?: string }): Promise<BroadcastReturn>- 发送TRXgetTokenBalance(tokenId: string, address?: string): Promise<number>- 获得TRC20 令牌余额getNetworkDetails(): Promise<{ chainId: string; name: string }>- 获取网络信息getTronWeb(): TronWeb | undefined- 获取TronWeb实例
是TronWallet( ) 语句
类型守护以检查钱包是否是 Tron 钱包 .
function isTronWallet(wallet: Wallet | null | undefined): wallet is TronWallet;
建筑
此软件包使用 TronWallet 适应器 模式,其中规定:
- 适配层: 每个钱包连接器将 TronWallet 适应器实例包裹
- 统一接口: 所有钱包都显示相同的方法和事件
- 事件处理: 连接,断开,账户变更等标准化事件.
- 网络检测: 自动网络检测和切换支持
该架构遵循了Dynamic的钱包连接器模式,同时利用了TronWallet Adapter的战斗测试执行.
发展
构建
npx nx build tron
测试
npx nx test tron
林特
npx nx lint tron
类型脚本支持
这个包被用TypeScript来写,并提供了完整的类型定义. 启用您的严格模式 tsconfig.json 最佳经验:
{
"compilerOptions": {
"strict": true
}
}
资源
- TronWallet 适应器文档数字 : 页:1
- 动态文档数字 : https://docs.动力学.xyz
- TronWeb 文档数字 : https://developers.tron.network/docs 页面存档备份,存于互联网档案馆
- Tron 网络数字 : https://tron.network (中文(简体) )
支助
- 文档数字 : 维基文库中相关的原始文献: 通訊通訊通訊通訊通訊通訊通訊通訊通報
- GitHub 问题数字 : 报告错误或请求特性
- 解析器数字 : 加入我们的社区
许可证
这个软件包是动态SDK的一部分,并遵循同样的许可证条款. 见 自由主义 详情
由动态实验室团队建造