Как отправить солану через мое приложение в vanilla js?
Попытка сделать простую функцию отправки и получения в Солане с ванильным JS.
Ниже моя функция отправки, которая отлично работает, и теперь мне нужна функция приема. Где провайдер мог перевести Солану из моего казначейского кошелька.
Я не уверен, какой подход у меня должен быть, только начинаю. Есть ли способ просто перемещать вещи в этой функции? Или у меня должен быть совершенно другой подход?
Спасибо!
async function transferSOL() {
// Detecing and storing the phantom wallet of the user (creator in this case)
var provider = phantom;
// Establishing connection
var connection = new web3.Connection(
web3.clusterApiUrl('devnet'),
);
var transaction = new web3.Transaction().add(
web3.SystemProgram.transfer({
fromPubkey: provider.publicKey,
toPubkey: treasuryWallet.publicKey,
lamports: 0.1 * web3.LAMPORTS_PER_SOL - 100
}),
);
// Setting the variables for the transaction
transaction.feePayer = await provider.publicKey;
let blockhashObj = await connection.getRecentBlockhash();
transaction.recentBlockhash = await blockhashObj.blockhash;
// Request creator to sign the transaction (allow the transaction)
let signed = await provider.signTransaction(transaction);
let signature = await connection.sendRawTransaction(signed.serialize());
await connection.confirmTransaction(signature);
}
1 ответ
Если вы хотите перевести из своей казны пользователю, то вы должны подписаться на
var transaction = new web3.Transaction().add(
web3.SystemProgram.transfer({
toPubkey: provider.publicKey,
fromPubkey: treasuryWallet.publicKey,
lamports: 0.1 * web3.LAMPORTS_PER_SOL - 100
}),
);
// Setting the variables for the transaction
transaction.feePayer = treasuryWallet.publicKey;
let blockhashObj = await connection.getRecentBlockhash();
transaction.recentBlockhash = await blockhashObj.blockhash;
// Request creator to sign the transaction (allow the transaction)
transaction.sign(treasuryWallet);
let signature = await connection.sendRawTransaction(transaction.serialize());
await connection.confirmTransaction(signature);
Обратите внимание, что это очень небезопасно! Каждый, кто использует ваше веб-приложение, имеет полный доступ к казначейским средствам, если пара ключей открыта, поскольку они могут просто подписывать ею все транзакции, которые захотят.