@exodus/solana-lib 3.22.0 → 3.22.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.
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [3.22.1](https://github.com/ExodusMovement/assets/compare/@exodus/solana-lib@3.22.0...@exodus/solana-lib@3.22.1) (2026-03-18)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @exodus/solana-lib
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
6
14
|
## [3.22.0](https://github.com/ExodusMovement/assets/compare/@exodus/solana-lib@3.21.1...@exodus/solana-lib@3.22.0) (2026-03-13)
|
|
7
15
|
|
|
8
16
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@exodus/solana-lib",
|
|
3
|
-
"version": "3.22.
|
|
3
|
+
"version": "3.22.1",
|
|
4
4
|
"description": "Solana utils, such as for cryptography, address encoding/decoding, transaction building, etc.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "src/index.js",
|
|
@@ -48,5 +48,5 @@
|
|
|
48
48
|
"type": "git",
|
|
49
49
|
"url": "git+https://github.com/ExodusMovement/assets.git"
|
|
50
50
|
},
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "e746a88ef78a0e7167587bfa14068ceb494d6fd7"
|
|
52
52
|
}
|
package/src/keypair.js
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
|
+
// eslint-disable-next-line @exodus/import/no-deprecated
|
|
2
3
|
edwardsToPublicSync,
|
|
4
|
+
// eslint-disable-next-line @exodus/import/no-deprecated
|
|
3
5
|
signDetachedSync,
|
|
6
|
+
// eslint-disable-next-line @exodus/import/no-deprecated
|
|
4
7
|
verifyDetachedSync,
|
|
5
8
|
} from '@exodus/crypto/curve25519'
|
|
9
|
+
// eslint-disable-next-line @exodus/import/no-deprecated
|
|
6
10
|
import { randomBytes } from '@exodus/crypto/randomBytes'
|
|
7
11
|
|
|
8
12
|
import { PublicKey } from './vendor/publickey.js'
|
|
@@ -10,6 +14,7 @@ import { PublicKey } from './vendor/publickey.js'
|
|
|
10
14
|
export function getKeyPairFromPrivateKey(seed) {
|
|
11
15
|
const pair = Buffer.from(seed, 'hex')
|
|
12
16
|
const privateKey = pair.subarray(0, 32)
|
|
17
|
+
// eslint-disable-next-line @exodus/import/no-deprecated
|
|
13
18
|
const publicKey = edwardsToPublicSync({ privateKey, format: 'buffer' })
|
|
14
19
|
|
|
15
20
|
// Recheck just in case
|
|
@@ -23,6 +28,7 @@ export function getKeyPairFromPrivateKey(seed) {
|
|
|
23
28
|
}
|
|
24
29
|
|
|
25
30
|
export function generateKeyPair() {
|
|
31
|
+
// eslint-disable-next-line @exodus/import/no-deprecated
|
|
26
32
|
const { publicKey, privateKey } = getKeyPairFromPrivateKey(randomBytes(32))
|
|
27
33
|
|
|
28
34
|
return {
|
|
@@ -36,6 +42,7 @@ export function getPublicKey(privateKey) {
|
|
|
36
42
|
}
|
|
37
43
|
|
|
38
44
|
export function sign(data, privateKey) {
|
|
45
|
+
// eslint-disable-next-line @exodus/import/no-deprecated
|
|
39
46
|
return signDetachedSync({
|
|
40
47
|
message: data,
|
|
41
48
|
privateKey: Buffer.from(privateKey, 'hex'),
|
|
@@ -44,5 +51,6 @@ export function sign(data, privateKey) {
|
|
|
44
51
|
}
|
|
45
52
|
|
|
46
53
|
export function verifySignature(data, signature, publicKey) {
|
|
54
|
+
// eslint-disable-next-line @exodus/import/no-deprecated
|
|
47
55
|
return verifyDetachedSync({ message: data, signature, publicKey: Buffer.from(publicKey, 'hex') })
|
|
48
56
|
}
|
package/src/magiceden/coders.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as BufferLayout from '@exodus/buffer-layout'
|
|
2
|
+
// eslint-disable-next-line @exodus/import/no-deprecated
|
|
2
3
|
import { hashSync } from '@exodus/crypto/hash'
|
|
3
4
|
|
|
4
5
|
import { bnAmountU64, publicKey } from '../vendor/utils/layout.js'
|
|
@@ -21,6 +22,7 @@ const idl = {
|
|
|
21
22
|
export function sighash(nameSpace, ixName) {
|
|
22
23
|
const preimage = `${nameSpace}:${ixName}`
|
|
23
24
|
|
|
25
|
+
// eslint-disable-next-line @exodus/import/no-deprecated
|
|
24
26
|
return hashSync('sha256', preimage).slice(0, 8)
|
|
25
27
|
}
|
|
26
28
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// eslint-disable-next-line @exodus/import/no-deprecated
|
|
1
2
|
import { signDetachedSync } from '@exodus/crypto/curve25519'
|
|
2
3
|
import bs58 from 'bs58'
|
|
3
4
|
import assert from 'minimalistic-assert'
|
|
@@ -13,6 +14,7 @@ export function signMessage({ message, privateKey }) {
|
|
|
13
14
|
!isTransactionMessage(messageBuffer),
|
|
14
15
|
'attempted to sign transaction using message signing'
|
|
15
16
|
)
|
|
17
|
+
// eslint-disable-next-line @exodus/import/no-deprecated
|
|
16
18
|
const signature = signDetachedSync({
|
|
17
19
|
message: messageBuffer,
|
|
18
20
|
privateKey: Buffer.from(privateKey, 'hex').subarray(0, 32),
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// eslint-disable-next-line @exodus/import/no-deprecated
|
|
1
2
|
import { isNumberUnit } from '@exodus/currency'
|
|
2
3
|
import { VersionedTransaction } from '@exodus/solana-web3.js'
|
|
3
4
|
import BN from 'bn.js'
|
|
@@ -55,11 +56,13 @@ export function prepareForSigning(unsignedTx, { checkBalances = true } = {}) {
|
|
|
55
56
|
const address = from
|
|
56
57
|
|
|
57
58
|
const amount = unitAmount
|
|
58
|
-
?
|
|
59
|
+
? // eslint-disable-next-line @exodus/import/no-deprecated
|
|
60
|
+
new BN(isNumberUnit(unitAmount) ? unitAmount.toBaseString() : unitAmount).toString()
|
|
59
61
|
: unitAmount
|
|
60
62
|
|
|
61
63
|
const fee = feeAmount
|
|
62
|
-
?
|
|
64
|
+
? // eslint-disable-next-line @exodus/import/no-deprecated
|
|
65
|
+
new BN(isNumberUnit(feeAmount) ? feeAmount.toBaseString() : feeAmount).toNumber()
|
|
63
66
|
: feeAmount
|
|
64
67
|
|
|
65
68
|
const txData = { ...unsignedTx.txData, address, amount, fee }
|
package/src/vendor/publickey.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { typedView } from '@exodus/bytes/array.js'
|
|
2
|
+
// eslint-disable-next-line @exodus/import/no-deprecated
|
|
2
3
|
import { edwardsToMontgomeryPublicSync } from '@exodus/crypto/curve25519'
|
|
4
|
+
// eslint-disable-next-line @exodus/import/no-deprecated
|
|
3
5
|
import { hashSync } from '@exodus/crypto/hash'
|
|
4
6
|
import BN from 'bn.js'
|
|
5
7
|
import bs58 from 'bs58'
|
|
@@ -121,6 +123,7 @@ export class PublicKey {
|
|
|
121
123
|
Buffer.from(seed),
|
|
122
124
|
programId.toBuffer(),
|
|
123
125
|
])
|
|
126
|
+
// eslint-disable-next-line @exodus/import/no-deprecated
|
|
124
127
|
const hash = hashSync('sha256', buffer)
|
|
125
128
|
return new PublicKey(hash)
|
|
126
129
|
}
|
|
@@ -138,6 +141,7 @@ export class PublicKey {
|
|
|
138
141
|
buffer = Buffer.concat([buffer, Buffer.from(seed)])
|
|
139
142
|
})
|
|
140
143
|
buffer = Buffer.concat([buffer, programId.toBuffer(), Buffer.from('ProgramDerivedAddress')])
|
|
144
|
+
// eslint-disable-next-line @exodus/import/no-deprecated
|
|
141
145
|
const hash = hashSync('sha256', buffer, 'hex')
|
|
142
146
|
const publicKeyBytes = new BN(hash, 16).toArray(null, 32)
|
|
143
147
|
if (isOnCurve(publicKeyBytes)) {
|
|
@@ -152,6 +156,7 @@ export class PublicKey {
|
|
|
152
156
|
function isOnCurve(p) {
|
|
153
157
|
try {
|
|
154
158
|
// This tries to parse edwards public key and validates it
|
|
159
|
+
// eslint-disable-next-line @exodus/import/no-deprecated
|
|
155
160
|
edwardsToMontgomeryPublicSync({ publicKey: Uint8Array.from(p) })
|
|
156
161
|
return true
|
|
157
162
|
} catch {}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// https://github.com/solana-labs/solana-web3.js/blob/master/src/transaction.js
|
|
2
2
|
|
|
3
|
+
// eslint-disable-next-line @exodus/import/no-deprecated
|
|
3
4
|
import { signDetachedSync, verifyDetachedSync } from '@exodus/crypto/curve25519'
|
|
4
5
|
import bs58 from 'bs58'
|
|
5
6
|
import invariant from 'minimalistic-assert'
|
|
@@ -436,6 +437,7 @@ export class Transaction {
|
|
|
436
437
|
|
|
437
438
|
const signData = message.serialize()
|
|
438
439
|
signers.forEach((signer) => {
|
|
440
|
+
// eslint-disable-next-line @exodus/import/no-deprecated
|
|
439
441
|
const signature = signDetachedSync({ message: signData, privateKey: signer.privateKey })
|
|
440
442
|
this.addSignature(signer.publicKey, signature)
|
|
441
443
|
})
|
|
@@ -474,6 +476,7 @@ export class Transaction {
|
|
|
474
476
|
}
|
|
475
477
|
} else {
|
|
476
478
|
if (
|
|
479
|
+
// eslint-disable-next-line @exodus/import/no-deprecated
|
|
477
480
|
!verifyDetachedSync({ message: signData, signature, publicKey: publicKey.toBuffer() })
|
|
478
481
|
) {
|
|
479
482
|
return false
|