下载

arrow_down

开发者服务

arrow_down

更多

arrow_down
activityactivityactivityactivity
  • themelight
  • languageIcon

  • menu
Skip to Content

Solana

当在 Bitget Wallet App 中运行 DApp 或在安装了 Chrome 扩展的 Chrome 浏览器中时,您可以访问全局对象 window.bitkeep.solana 来进行后续的 API 调用。

注入对象属性和方法

  • connect - () => object: 连接到钱包
  • getAccount - () => string: 获取账户信息
  • disconnect - () => void: 断开连接
  • signMessage - (message) => object: 签名消息
  • getTransactionVersion - (transaction) => string: 获取交易版本
  • signTransaction - (transaction) => object: 签名交易
  • signAllTransactions - (transactions) => object: 签名多个交易

连接到Bitget钱包

Provider

const provider = window.bitkeep.solana;

连接

Preview

用法

try { await provider.connect() const publicKey = await provider.getAccount() const address = provider.publicKey.toString() // 一旦Web应用程序连接到Bitkeep, } catch { alert('连接错误') }

试一试

Loading live editor...

连接状态

provider.connected const publicKey = await provider.getAccount() provider.publicKey.toString() // 一旦Web应用程序连接到Bitkeep

签名消息

Chrome
App
Preview
Preview

用法

//字符串 provider.signMessage('020006106e655af38ff7324bbf1d4e16b06084763269b9') // uint8Array const message = `您可以使用uint8array来验证` const encodedMessage = new TextEncoder().encode(message) const signedMessage = await provider.signMessage(encodedMessage) const nacl = require('tweetnacl') const { PublicKey } = require('@solana/web3.js') // nacl.sign.detached.verify(encodedMessage, signedMessage, publicKey) nacl.sign.detached.verify( encodedMessage, signedMessage, new PublicKey(address).toBytes() )

试一试

Loading live editor...

事件监听器

使用 eventemitter3

provider.on('connect', () => console.log('已连接!'))

交易

版本化交易

Chrome
App
Preview
Preview

Solana 在 2022 年 10 月 10 日引入了带有 v0 交易的版本化交易

v0 的目标是增加交易的最大容量,从而增加可以容纳在单个原子交易中的账户数量。使用 LUTs,开发者现在可以构建包含最多 256 个账户的交易,而没有 LUTs 的传统交易只能包含最多 35 个账户。

包含地址查找表(LUTS)的交易

1. 构建版本化交易

版本化交易的构建方式与传统交易非常相似,唯一的区别是开发者应该使用 VersionedTransaction 类而不是 Transaction 类。

以下示例演示了如何构建一个简单的转账指令。发送转账指令后,使用转账指令构建 MessageV0 格式的交易消息,最后创建一个新的 VersionedTransaction 来解析 v0 兼容的消息。

import { TransactionMessage, VersionedTransaction, SystemProgram, } from '@solana/web3.js' // 创建指令数组 const instructions = [ SystemProgram.transfer({ fromPubkey: publicKey, toPubkey: publicKey, lamports: 10, }), ] // 创建v0兼容消息 const messageV0 = new TransactionMessage({ payerKey: publicKey, recentBlockhash: blockhash, instructions, }).compileToV0Message() // 创建版本化交易 const transactionV0 = new VersionedTransaction(messageV0)

2. 签名版本化交易

版本化交易可以直接使用 signTransaction 方法签名。此方法调用将返回已签名交易的Promise。这与传统交易的签名方法相同。

const provider = getProvider() const network = '<NETWORK_URL>' const connection = new Connection(network) const signedTransaction = await provider.signTransaction(transactionV0)

传统交易

1. 构建传统交易

const pubKey = new PublicKey(publicKey.pubkey) const transaction = new Transaction().add( SystemProgram.transfer({ fromPubkey: publicKey, toPubkey: publicKey, lamports: 100, }) ) transaction.feePayer = pubKey const anyTransaction: any = transaction anyTransaction.recentBlockhash = ( await connection.getLatestBlockhash() ).blockhash return transaction

2. 签名传统交易

const provider = getProvider() const network = '<NETWORK_URL>' const connection = new Connection(network) const signedTransaction = await provider.signTransaction(transaction)
Last updated on