@coin-voyage/crypto 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -6,15 +6,20 @@ export function useSolanaTransaction() {
|
|
|
6
6
|
const { connection } = useConnection();
|
|
7
7
|
const wallet = useWallet();
|
|
8
8
|
const execute = async (params) => {
|
|
9
|
+
if (!wallet.connected && wallet.wallet) {
|
|
10
|
+
try {
|
|
11
|
+
await wallet.connect();
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
throw new Error("Wallet not connected. Please reconnect your wallet and try again.");
|
|
15
|
+
}
|
|
16
|
+
}
|
|
9
17
|
const { fromAddress, toAddress, amount, token } = params;
|
|
10
18
|
let transaction = new Transaction();
|
|
11
19
|
const senderPubKey = new PublicKey(fromAddress);
|
|
12
20
|
const receiverPubKey = new PublicKey(toAddress);
|
|
13
21
|
const instructions = [
|
|
14
|
-
|
|
15
|
-
ComputeBudgetProgram.setComputeUnitPrice({
|
|
16
|
-
microLamports: 1000000
|
|
17
|
-
})
|
|
22
|
+
ComputeBudgetProgram.setComputeUnitPrice({ microLamports: 1000000 })
|
|
18
23
|
];
|
|
19
24
|
const value = BigInt(amount);
|
|
20
25
|
// Native SOL transfer
|
|
@@ -40,14 +45,39 @@ export function useSolanaTransaction() {
|
|
|
40
45
|
senderPubKey, // from's owner
|
|
41
46
|
value, token.decimals));
|
|
42
47
|
}
|
|
43
|
-
const { context: { slot: minContextSlot }, value: { blockhash } } = await connection.getLatestBlockhashAndContext();
|
|
48
|
+
const { context: { slot: minContextSlot }, value: { blockhash, lastValidBlockHeight } } = await connection.getLatestBlockhashAndContext();
|
|
44
49
|
transaction.feePayer = senderPubKey;
|
|
45
50
|
transaction.recentBlockhash = blockhash;
|
|
46
51
|
transaction.instructions = instructions;
|
|
47
|
-
|
|
52
|
+
const signature = await wallet.sendTransaction(transaction, connection, {
|
|
48
53
|
minContextSlot
|
|
49
54
|
});
|
|
55
|
+
return waitForTransactionConfirmation(signature, connection, lastValidBlockHeight);
|
|
50
56
|
};
|
|
51
57
|
return { execute };
|
|
52
58
|
}
|
|
59
|
+
async function waitForTransactionConfirmation(signature, connection, lastValidBlockHeight) {
|
|
60
|
+
const maxRetries = 30;
|
|
61
|
+
const retryDelay = 2000;
|
|
62
|
+
for (let i = 0; i < maxRetries; i++) {
|
|
63
|
+
const { value: statuses } = await connection.getSignatureStatuses([signature]);
|
|
64
|
+
const status = statuses[0];
|
|
65
|
+
if (status) {
|
|
66
|
+
if (status.err) {
|
|
67
|
+
throw new Error(`Transaction failed: ${JSON.stringify(status.err)}`);
|
|
68
|
+
}
|
|
69
|
+
if (status.confirmationStatus === "processed" ||
|
|
70
|
+
status.confirmationStatus === "confirmed" ||
|
|
71
|
+
status.confirmationStatus === "finalized") {
|
|
72
|
+
return signature;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Check if blockhash expired
|
|
76
|
+
const blockHeight = await connection.getBlockHeight();
|
|
77
|
+
if (blockHeight > lastValidBlockHeight) {
|
|
78
|
+
throw new Error("Transaction expired. Please try again.");
|
|
79
|
+
}
|
|
80
|
+
await new Promise(resolve => setTimeout(resolve, retryDelay));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
53
83
|
//# sourceMappingURL=use-solana-transaction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-solana-transaction.js","sourceRoot":"","sources":["../../src/solana/use-solana-transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gCAAgC,EAChC,yBAAyB,EAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,oBAAoB,
|
|
1
|
+
{"version":3,"file":"use-solana-transaction.js","sourceRoot":"","sources":["../../src/solana/use-solana-transaction.ts"],"names":[],"mappings":"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"}
|