我希望如果有人能给我指出正确的方向...我正在尝试将“钱包连接”扩展(例如 sollet / phantom)功能添加到我的网站,但我不知道从哪里开始。Metamask 有一个很好的解释/示例来说明如何做到这一点,但我不确定 Solana 是否相同?
yan*_*-io 10
您可以使用https://github.com/project-serum/sol-wallet-adapter进行 Sollet Web 或 Sollet 扩展
对于幻影钱包,文档位于https://docs.phantom.app/integrating/builting-a-connection
请注意,EVM 钱包(例如 Metamask)之间的一个主要区别是,大多数 EVM 钱包还将处理在链上发送交易,而 Solana 钱包仅处理签署交易,并且发送由应用程序完成。
下面是如何与 Sollet 和 Phantom 集成的示例
import { Connection, SystemProgram, Transaction, clusterApiUrl } from '@solana/web3.js';
import Wallet from '@project-serum/sol-wallet-adapter';
let provider = 'https://www.sollet.io';
// For sollet extension use
// provider = window.sollet
let wallet = new Wallet(provider);
wallet.on('connect', publicKey => console.log('Connected to ' + publicKey.toBase58()));
wallet.on('disconnect', () => console.log('Disconnected'));
await wallet.connect();
// Sending a transaction
let connection = new Connection(clusterApiUrl('devnet'));
let transaction = new Transaction().add(
SystemProgram.transfer({
fromPubkey: wallet.publicKey,
toPubkey: wallet.publicKey,
lamports: 100,
})
);
let { blockhash } = await connection.getRecentBlockhash();
transaction.recentBlockhash = blockhash;
transaction.feePayer = wallet.publicKey;
let signed = await wallet.signTransaction(transaction);
let txid = await connection.sendRawTransaction(signed.serialize());
await connection.confirmTransaction(txid);
// Phantom Wallet
window.solana.connect();
window.solana.on("connect", () => console.log("connected!"))
console.log(window.solana.publicKey);
Run Code Online (Sandbox Code Playgroud)
Solana 团队还编写了一个广泛的库来与 Solana 上的大量现有钱包集成 - https://github.com/solana-labs/wallet-adapter
| 归档时间: |
|
| 查看次数: |
12999 次 |
| 最近记录: |