@solana/spl-token
有两种方法:
getAssociatedTokenAddress
getOrCreateAssociatedTokenAccount
上下文,只有公网地址可以访问幻象
如果关联的令牌已经存在,
getAssociatedTokenAddress
工作正常但 getOrCreateAssociatedTokenAccount
需要密钥。
使用 Phantom,如何通过签名机制生成该令牌地址?
具体用例:想要将 USDT 发送给没有 USDT 关联地址的公众。我希望幻影以某种方式签署行动并创建该地址
所以,如果这就是你想要做的:
具体用例:想要将 USDT 发送给没有 USDT 关联地址的公众。我希望幻影以某种方式签署行动并创建该地址
您无需担心直接创建帐户,因为您只需将令牌发送到钱包,并从签名者那里为帐户创建提供资金。所以一个普通的
token::transfer
应该足够IIRC.
但是要回答你的第一个问题,关于如何使用 Phantom 进行一些需要私钥的操作,一般的方法是在 JS 中创建一个
Transaction
,然后使用钱包适配器 signTransaction
对其进行签名,然后发送/确认签署的交易。 (根据您发送和确认的方式,您可能还需要在Transaction
中添加最近的区块哈希和付款人)
这类似于
createAssociatedTokenAccount
在幕后所做的事情——https://github.com/solana-labs/solana-program-library/blob/48fbb5b7/token/js/src/actions/createAssociatedTokenAccount.ts# L30——增加了通过钱包适配器签名的功能。