@bronlabs/intents-sdk 1.0.128 → 1.0.135
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/abi/Metadata.json +34 -0
- package/abi/OrderEngine.json +118 -0
- package/dist/attestation.d.ts +54 -0
- package/dist/attestation.js +132 -0
- package/dist/attestation.js.map +1 -0
- package/dist/contracts.d.ts +8 -0
- package/dist/contracts.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/networks/btc.d.ts +10 -1
- package/dist/networks/btc.js +51 -14
- package/dist/networks/btc.js.map +1 -1
- package/dist/networks/canton.d.ts +10 -1
- package/dist/networks/canton.js +36 -0
- package/dist/networks/canton.js.map +1 -1
- package/dist/networks/cosmos.d.ts +12 -3
- package/dist/networks/cosmos.js +63 -30
- package/dist/networks/cosmos.js.map +1 -1
- package/dist/networks/evm.d.ts +9 -2
- package/dist/networks/evm.js +34 -7
- package/dist/networks/evm.js.map +1 -1
- package/dist/networks/index.d.ts +3 -0
- package/dist/networks/index.js.map +1 -1
- package/dist/networks/sol.d.ts +9 -2
- package/dist/networks/sol.js +70 -25
- package/dist/networks/sol.js.map +1 -1
- package/dist/networks/ton.d.ts +9 -1
- package/dist/networks/ton.js +26 -5
- package/dist/networks/ton.js.map +1 -1
- package/dist/networks/trx.d.ts +9 -2
- package/dist/networks/trx.js +54 -26
- package/dist/networks/trx.js.map +1 -1
- package/dist/networks/xrp.d.ts +8 -1
- package/dist/networks/xrp.js +14 -0
- package/dist/networks/xrp.js.map +1 -1
- package/package.json +5 -2
package/dist/networks/sol.js
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { Connection, Transaction, SystemProgram, Keypair, PublicKey } from "@solana/web3.js";
|
|
2
2
|
import { createTransferInstruction, getOrCreateAssociatedTokenAccount } from "@solana/spl-token";
|
|
3
3
|
import bs58 from "bs58";
|
|
4
|
+
import { ethers } from 'ethers';
|
|
5
|
+
import { SignatureScheme, verifyEd25519 } from '../attestation.js';
|
|
4
6
|
import { log, memoize } from "../utils.js";
|
|
5
7
|
import { proxyFetch } from '../proxy.js';
|
|
6
8
|
export class SolNetwork {
|
|
7
9
|
constructor(rpcUrl, confirmations = 20) {
|
|
8
|
-
this.nativeAssetDecimals = 9;
|
|
10
|
+
this.nativeAssetDecimals = 9;
|
|
9
11
|
this.retryDelay = 5000;
|
|
12
|
+
this.signatureScheme = SignatureScheme.Ed25519;
|
|
10
13
|
this.rpcUrl = rpcUrl;
|
|
11
14
|
this.confirmations = confirmations;
|
|
12
15
|
this.connection = new Connection(rpcUrl, { commitment: "confirmed" });
|
|
@@ -14,6 +17,16 @@ export class SolNetwork {
|
|
|
14
17
|
async ping() {
|
|
15
18
|
await this.connection.getSlot();
|
|
16
19
|
}
|
|
20
|
+
addressFromPublicKey(publicKey) {
|
|
21
|
+
const bytes = ethers.getBytes(publicKey);
|
|
22
|
+
if (bytes.length !== 32) {
|
|
23
|
+
throw new Error(`Invalid Solana public key length: ${bytes.length} (expected 32)`);
|
|
24
|
+
}
|
|
25
|
+
return new PublicKey(Buffer.from(bytes)).toBase58();
|
|
26
|
+
}
|
|
27
|
+
verifyAttestation(publicKey, signature, preimage) {
|
|
28
|
+
return verifyEd25519(publicKey, signature, preimage);
|
|
29
|
+
}
|
|
17
30
|
async getDecimals(tokenAddress) {
|
|
18
31
|
if (tokenAddress === "0x0") {
|
|
19
32
|
return this.nativeAssetDecimals;
|
|
@@ -33,7 +46,7 @@ export class SolNetwork {
|
|
|
33
46
|
return result.value.data.parsed.info.decimals;
|
|
34
47
|
});
|
|
35
48
|
}
|
|
36
|
-
async getTxData(txHash, tokenAddress) {
|
|
49
|
+
async getTxData(txHash, tokenAddress, recipientAddress) {
|
|
37
50
|
const currentBlock = await proxyFetch(this.rpcUrl, {
|
|
38
51
|
method: 'POST',
|
|
39
52
|
body: JSON.stringify({
|
|
@@ -71,56 +84,89 @@ export class SolNetwork {
|
|
|
71
84
|
};
|
|
72
85
|
}
|
|
73
86
|
log.info(`Confirmations ${txHash}: ${currentBlock - blockNumber}`);
|
|
74
|
-
//
|
|
75
|
-
//
|
|
76
|
-
|
|
87
|
+
// `from` must be the account that actually FUNDED the transfer, not accountKeys[0] (the fee
|
|
88
|
+
// payer). Returning the fee payer lets an attacker fund a settlement from an address they don't
|
|
89
|
+
// control while signing with a throwaway fee payer that derives to the declared orderFrom —
|
|
90
|
+
// the oracle's senderValid would then check the wrong account.
|
|
91
|
+
const accountKeys = result.transaction.message.accountKeys;
|
|
92
|
+
const numSigners = result.transaction.message.header?.numRequiredSignatures ?? 1;
|
|
93
|
+
const isSigner = (i) => i < numSigners;
|
|
77
94
|
if (tokenAddress === "0x0") {
|
|
78
|
-
|
|
95
|
+
const idx = accountKeys.findIndex((key) => key === recipientAddress);
|
|
96
|
+
if (idx === -1) {
|
|
79
97
|
return {
|
|
80
|
-
from:
|
|
81
|
-
to:
|
|
82
|
-
token:
|
|
83
|
-
amount:
|
|
98
|
+
from: "",
|
|
99
|
+
to: "",
|
|
100
|
+
token: "",
|
|
101
|
+
amount: 0n,
|
|
84
102
|
confirmed
|
|
85
103
|
};
|
|
86
104
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
105
|
+
const amount = BigInt(result.meta.postBalances[idx]) - BigInt(result.meta.preBalances[idx]);
|
|
106
|
+
// funder = a signing account (other than the recipient) whose lamports dropped by at least the
|
|
107
|
+
// credited amount. Attribution must be unambiguous: with several qualifying signers we cannot
|
|
108
|
+
// tell which one funded the transfer, so fail closed (empty from → senderValid fails).
|
|
109
|
+
const funders = [];
|
|
110
|
+
for (let i = 0; i < accountKeys.length; i++) {
|
|
111
|
+
if (i === idx || !isSigner(i)) {
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
const decrease = BigInt(result.meta.preBalances[i]) - BigInt(result.meta.postBalances[i]);
|
|
115
|
+
if (decrease >= amount) {
|
|
116
|
+
funders.push(accountKeys[i]);
|
|
117
|
+
}
|
|
95
118
|
}
|
|
119
|
+
const from = funders.length === 1 ? funders[0] : "";
|
|
120
|
+
return {
|
|
121
|
+
from,
|
|
122
|
+
to: accountKeys[idx],
|
|
123
|
+
token: tokenAddress,
|
|
124
|
+
amount,
|
|
125
|
+
confirmed
|
|
126
|
+
};
|
|
96
127
|
}
|
|
97
128
|
// ERC20 token
|
|
98
129
|
const postTokenBalances = result.meta.postTokenBalances.filter((balance) => balance.mint === tokenAddress);
|
|
99
130
|
const preTokenBalances = result.meta.preTokenBalances.filter((balance) => balance.mint === tokenAddress);
|
|
100
131
|
const senderAddress = (() => {
|
|
101
|
-
// Find the account that has less tokens in postTokenBalances than in preTokenBalances
|
|
102
132
|
for (const postBalance of postTokenBalances) {
|
|
103
133
|
const preBalance = preTokenBalances.find((balance) => balance.owner === postBalance.owner);
|
|
104
134
|
if (preBalance && BigInt(postBalance.uiTokenAmount.amount) < BigInt(preBalance.uiTokenAmount.amount)) {
|
|
105
135
|
return preBalance.owner;
|
|
106
136
|
}
|
|
107
137
|
}
|
|
108
|
-
|
|
138
|
+
return "";
|
|
109
139
|
})();
|
|
110
|
-
const postTokenBalanceOfReceiver = postTokenBalances.find((balance) => balance.owner
|
|
111
|
-
const preTokenBalanceOfReceiver = preTokenBalances.find((balance) => balance.owner
|
|
140
|
+
const postTokenBalanceOfReceiver = postTokenBalances.find((balance) => balance.owner === recipientAddress);
|
|
141
|
+
const preTokenBalanceOfReceiver = preTokenBalances.find((balance) => balance.owner === recipientAddress);
|
|
142
|
+
if (!senderAddress || !postTokenBalanceOfReceiver) {
|
|
143
|
+
return {
|
|
144
|
+
from: "",
|
|
145
|
+
to: "",
|
|
146
|
+
token: "",
|
|
147
|
+
amount: 0n,
|
|
148
|
+
confirmed
|
|
149
|
+
};
|
|
150
|
+
}
|
|
112
151
|
let preBalance = 0n;
|
|
113
152
|
if (preTokenBalanceOfReceiver?.uiTokenAmount.amount) {
|
|
114
153
|
preBalance = BigInt(preTokenBalanceOfReceiver.uiTokenAmount.amount);
|
|
115
154
|
}
|
|
155
|
+
// `from` is the token-account owner whose balance dropped (computed above), required to be a
|
|
156
|
+
// signer of the tx — not accountKeys[0]. A non-signing funder means we can't bind the payment to
|
|
157
|
+
// the attester, so reject (empty from → senderValid fails).
|
|
158
|
+
const senderIsSigner = accountKeys.slice(0, numSigners).includes(senderAddress);
|
|
116
159
|
return {
|
|
117
|
-
from:
|
|
160
|
+
from: senderIsSigner ? senderAddress : "",
|
|
118
161
|
to: postTokenBalanceOfReceiver.owner,
|
|
119
162
|
token: postTokenBalanceOfReceiver.mint,
|
|
120
163
|
amount: BigInt(postTokenBalanceOfReceiver.uiTokenAmount.amount) - preBalance,
|
|
121
164
|
confirmed
|
|
122
165
|
};
|
|
123
166
|
}
|
|
167
|
+
/**
|
|
168
|
+
* @deprecated Signs from a raw private key — do not use in production. Kept for local tooling/tests.
|
|
169
|
+
*/
|
|
124
170
|
async transfer(privateKey, to, value, tokenAddress) {
|
|
125
171
|
const keypair = this.base58ToKeypair(privateKey);
|
|
126
172
|
if (tokenAddress === "0x0") {
|
|
@@ -134,8 +180,7 @@ export class SolNetwork {
|
|
|
134
180
|
return await this.connection.sendTransaction(transaction, [keypair]);
|
|
135
181
|
}
|
|
136
182
|
const senderTokenAccount = await getOrCreateAssociatedTokenAccount(this.connection, keypair, new PublicKey(tokenAddress), keypair.publicKey);
|
|
137
|
-
const receiverTokenAccount = await getOrCreateAssociatedTokenAccount(this.connection, keypair, new PublicKey(tokenAddress), new PublicKey(to), true
|
|
138
|
-
);
|
|
183
|
+
const receiverTokenAccount = await getOrCreateAssociatedTokenAccount(this.connection, keypair, new PublicKey(tokenAddress), new PublicKey(to), true);
|
|
139
184
|
const transaction = new Transaction().add(createTransferInstruction(senderTokenAccount.address, receiverTokenAccount.address, keypair.publicKey, value));
|
|
140
185
|
transaction.recentBlockhash = (await this.connection.getLatestBlockhash()).blockhash;
|
|
141
186
|
return await this.connection.sendTransaction(transaction, [keypair]);
|
package/dist/networks/sol.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sol.js","sourceRoot":"","sources":["../../src/networks/sol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAE,yBAAyB,EAAE,iCAAiC,EAAE,MAAM,mBAAmB,CAAC;AACjG,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"sol.js","sourceRoot":"","sources":["../../src/networks/sol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAE,yBAAyB,EAAE,iCAAiC,EAAE,MAAM,mBAAmB,CAAC;AACjG,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAsB,eAAe,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,OAAO,UAAU;IAQrB,YAAY,MAAc,EAAE,gBAAwB,EAAE;QALrC,wBAAmB,GAAW,CAAC,CAAC;QACxC,eAAU,GAAW,IAAI,CAAC;QAC1B,oBAAe,GAAG,eAAe,CAAC,OAAO,CAAC;QAIjD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC;IAED,oBAAoB,CAAC,SAAiB;QACpC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAEzC,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,qCAAqC,KAAK,CAAC,MAAM,gBAAgB,CAAC,CAAC;QACrF,CAAC;QAED,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACtD,CAAC;IAED,iBAAiB,CAAC,SAAiB,EAAE,SAAiB,EAAE,QAAoB;QAC1E,OAAO,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,YAAoB;QACpC,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,mBAAmB,CAAC;QAClC,CAAC;QAED,OAAO,OAAO,CAAC,gBAAgB,YAAY,EAAE,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE;gBAC/C,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,EAAE,EAAE,CAAC;oBACL,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,gBAAgB;oBACxB,MAAM,EAAE,CAAC,YAAY,EAAE;4BACrB,UAAU,EAAE,YAAY;yBACzB,CAAC;iBACH,CAAC;aACH,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YAE7B,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QAChD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS,CACb,MAAc,EACd,YAAoB,EACpB,gBAAwB;QAExB,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE;YACjD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,EAAE,EAAE,CAAC;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,oBAAoB;gBAC5B,MAAM,EAAE,EAAE;aACX,CAAC;SACH,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEpE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE;YAC/C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,EAAE,EAAE,CAAC;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,gBAAgB;gBACxB,MAAM,EAAE,CAAC,MAAM,EAAE;wBACf,YAAY,EAAE,WAAW;wBACzB,gCAAgC,EAAE,CAAC;wBACnC,UAAU,EAAE,MAAM;qBACnB,CAAC;aACH,CAAC;SACH,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAE7B,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,IAAI,YAAY,CAAC;QAChD,MAAM,SAAS,GAAG,YAAY,GAAG,WAAW,IAAI,IAAI,CAAC,aAAa,CAAA;QAElE,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;YACrB,GAAG,CAAC,IAAI,CAAC,eAAe,MAAM,0BAA0B,MAAM,EAAE,CAAC,CAAC;YAElE,OAAO;gBACL,IAAI,EAAE,EAAE;gBACR,EAAE,EAAE,EAAE;gBACN,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE,EAAE;gBACV,SAAS;aACV,CAAC;QACJ,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,iBAAiB,MAAM,KAAK,YAAY,GAAG,WAAW,EAAE,CAAC,CAAC;QAEnE,4FAA4F;QAC5F,gGAAgG;QAChG,4FAA4F;QAC5F,+DAA+D;QAC/D,MAAM,WAAW,GAAa,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC;QACrE,MAAM,UAAU,GAAW,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,qBAAqB,IAAI,CAAC,CAAC;QACzF,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC;QAE/C,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,KAAK,gBAAgB,CAAC,CAAC;YAE7E,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;gBACf,OAAO;oBACL,IAAI,EAAE,EAAE;oBACR,EAAE,EAAE,EAAE;oBACN,KAAK,EAAE,EAAE;oBACT,MAAM,EAAE,EAAE;oBACV,SAAS;iBACV,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;YAE5F,+FAA+F;YAC/F,8FAA8F;YAC9F,uFAAuF;YACvF,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC9B,SAAS;gBACX,CAAC;gBACD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1F,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;oBACvB,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;YAED,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAEpD,OAAO;gBACL,IAAI;gBACJ,EAAE,EAAE,WAAW,CAAC,GAAG,CAAC;gBACpB,KAAK,EAAE,YAAY;gBACnB,MAAM;gBACN,SAAS;aACV,CAAC;QACJ,CAAC;QAED,cAAc;QACd,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,CAAA;QAC/G,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,CAAA;QAE7G,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE;YAC1B,KAAK,MAAM,WAAW,IAAI,iBAAiB,EAAE,CAAC;gBAC5C,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,OAAY,EAAE,EAAE,CACxD,OAAO,CAAC,KAAK,KAAK,WAAW,CAAC,KAAK,CACpC,CAAC;gBAEF,IAAI,UAAU,IAAI,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;oBACrG,OAAO,UAAU,CAAC,KAAK,CAAC;gBAC1B,CAAC;YACH,CAAC;YAED,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,EAAE,CAAC;QAEL,MAAM,0BAA0B,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,KAAK,gBAAgB,CAAC,CAAA;QAC/G,MAAM,yBAAyB,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,KAAK,gBAAgB,CAAC,CAAA;QAE7G,IAAI,CAAC,aAAa,IAAI,CAAC,0BAA0B,EAAE,CAAC;YAClD,OAAO;gBACL,IAAI,EAAE,EAAE;gBACR,EAAE,EAAE,EAAE;gBACN,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE,EAAE;gBACV,SAAS;aACV,CAAC;QACJ,CAAC;QAED,IAAI,UAAU,GAAG,EAAE,CAAA;QACnB,IAAI,yBAAyB,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC;YACpD,UAAU,GAAG,MAAM,CAAC,yBAAyB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QACrE,CAAC;QAED,6FAA6F;QAC7F,iGAAiG;QACjG,4DAA4D;QAC5D,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAEhF,OAAO;YACL,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;YACzC,EAAE,EAAE,0BAA0B,CAAC,KAAK;YACpC,KAAK,EAAE,0BAA0B,CAAC,IAAI;YACtC,MAAM,EAAE,MAAM,CAAC,0BAA0B,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,UAAU;YAC5E,SAAS;SACV,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,UAAkB,EAAE,EAAU,EAAE,KAAa,EAAE,YAAoB;QAChF,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAEjD,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;YAC3B,0BAA0B;YAC1B,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC,GAAG,CACvC,aAAa,CAAC,QAAQ,CAAC;gBACrB,UAAU,EAAE,OAAO,CAAC,SAAS;gBAC7B,QAAQ,EAAE,IAAI,SAAS,CAAC,EAAE,CAAC;gBAC3B,QAAQ,EAAE,KAAK;aAChB,CAAC,CACH,CAAC;YAEF,WAAW,CAAC,eAAe,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAA;YAEpF,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,eAAe,CAC1C,WAAW,EACX,CAAC,OAAO,CAAC,CACV,CAAC;QACJ,CAAC;QAED,MAAM,kBAAkB,GAAG,MAAM,iCAAiC,CAChE,IAAI,CAAC,UAAU,EACf,OAAO,EACP,IAAI,SAAS,CAAC,YAAY,CAAC,EAC3B,OAAO,CAAC,SAAS,CAClB,CAAC;QAEF,MAAM,oBAAoB,GAAG,MAAM,iCAAiC,CAClE,IAAI,CAAC,UAAU,EACf,OAAO,EACP,IAAI,SAAS,CAAC,YAAY,CAAC,EAC3B,IAAI,SAAS,CAAC,EAAE,CAAC,EACjB,IAAI,CACL,CAAC;QAEF,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC,GAAG,CACvC,yBAAyB,CACvB,kBAAkB,CAAC,OAAO,EAC1B,oBAAoB,CAAC,OAAO,EAC5B,OAAO,CAAC,SAAS,EACjB,KAAK,CACN,CACF,CAAC;QAEF,WAAW,CAAC,eAAe,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAA;QAEpF,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,eAAe,CAC1C,WAAW,EACX,CAAC,OAAO,CAAC,CACV,CAAC;IACJ,CAAC;IAEO,eAAe,CAAC,gBAAwB;QAC9C,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YACvD,OAAO,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;CACF"}
|
package/dist/networks/ton.d.ts
CHANGED
|
@@ -1,14 +1,22 @@
|
|
|
1
1
|
import { Network, TransactionData } from "./index.js";
|
|
2
|
-
|
|
2
|
+
import { AttestationCapable, SignatureScheme } from '../attestation.js';
|
|
3
|
+
export declare class TonNetwork implements Network, AttestationCapable {
|
|
3
4
|
private readonly client;
|
|
4
5
|
private readonly rpcUrl;
|
|
5
6
|
private readonly confirmations;
|
|
6
7
|
private readonly nativeAssetDecimals;
|
|
7
8
|
readonly retryDelay: number;
|
|
9
|
+
readonly signatureScheme = SignatureScheme.Ed25519;
|
|
8
10
|
constructor(rpcUrl: string, confirmations?: number);
|
|
11
|
+
addressFromPublicKey(publicKey: string): string;
|
|
12
|
+
verifyAttestation(publicKey: string, signature: string, preimage: Uint8Array): Promise<boolean>;
|
|
13
|
+
matchesAddress(publicKey: string, address: string): boolean;
|
|
9
14
|
ping(): Promise<void>;
|
|
10
15
|
getDecimals(tokenAddress: string): Promise<number>;
|
|
11
16
|
getTxData(txHash: string, tokenAddress: string, recipientAddress: string): Promise<TransactionData | undefined>;
|
|
17
|
+
/**
|
|
18
|
+
* @deprecated Signs from a raw private key — do not use in production. Kept for local tooling/tests.
|
|
19
|
+
*/
|
|
12
20
|
transfer(privateKey: string, to: string, value: bigint, tokenAddress: string): Promise<string>;
|
|
13
21
|
private parsePrivateKey;
|
|
14
22
|
private parseNativeTransfer;
|
package/dist/networks/ton.js
CHANGED
|
@@ -1,17 +1,36 @@
|
|
|
1
1
|
import { Address, beginCell, internal, SendMode, toNano, TonClient, WalletContractV5R1 } from "@ton/ton";
|
|
2
2
|
import { keyPairFromSecretKey } from "@ton/crypto";
|
|
3
|
+
import { ethers } from 'ethers';
|
|
4
|
+
import { SignatureScheme, verifyEd25519 } from '../attestation.js';
|
|
3
5
|
import { log, memoize } from "../utils.js";
|
|
4
6
|
import { proxyFetch } from '../proxy.js';
|
|
5
7
|
export class TonNetwork {
|
|
6
8
|
constructor(rpcUrl, confirmations = 20) {
|
|
7
9
|
this.nativeAssetDecimals = 9;
|
|
8
10
|
this.retryDelay = 5000;
|
|
11
|
+
this.signatureScheme = SignatureScheme.Ed25519;
|
|
9
12
|
this.rpcUrl = rpcUrl;
|
|
10
13
|
this.confirmations = confirmations;
|
|
11
14
|
this.client = new TonClient({
|
|
12
15
|
endpoint: rpcUrl
|
|
13
16
|
});
|
|
14
17
|
}
|
|
18
|
+
// A TON wallet is a contract; one public key maps to different addresses per wallet version.
|
|
19
|
+
// Pinned to WalletContractV5R1 (see transfer()) — settlements must come from a V5R1 wallet,
|
|
20
|
+
// else the derived address won't match orderFrom.
|
|
21
|
+
addressFromPublicKey(publicKey) {
|
|
22
|
+
const wallet = WalletContractV5R1.create({
|
|
23
|
+
workchain: 0,
|
|
24
|
+
publicKey: Buffer.from(ethers.getBytes(publicKey)),
|
|
25
|
+
});
|
|
26
|
+
return wallet.address.toString({ bounceable: false });
|
|
27
|
+
}
|
|
28
|
+
verifyAttestation(publicKey, signature, preimage) {
|
|
29
|
+
return verifyEd25519(publicKey, signature, preimage);
|
|
30
|
+
}
|
|
31
|
+
matchesAddress(publicKey, address) {
|
|
32
|
+
return this.addressesMatch(this.addressFromPublicKey(publicKey), address);
|
|
33
|
+
}
|
|
15
34
|
async ping() {
|
|
16
35
|
await this.request("/v3/masterchainInfo");
|
|
17
36
|
}
|
|
@@ -63,6 +82,9 @@ export class TonNetwork {
|
|
|
63
82
|
}
|
|
64
83
|
return this.parseJettonTransfer(txHash, tokenAddress, recipientAddress, confirmed);
|
|
65
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* @deprecated Signs from a raw private key — do not use in production. Kept for local tooling/tests.
|
|
87
|
+
*/
|
|
66
88
|
async transfer(privateKey, to, value, tokenAddress) {
|
|
67
89
|
const keyPair = this.parsePrivateKey(privateKey);
|
|
68
90
|
const wallet = WalletContractV5R1.create({
|
|
@@ -111,14 +133,12 @@ export class TonNetwork {
|
|
|
111
133
|
]
|
|
112
134
|
});
|
|
113
135
|
}
|
|
114
|
-
// Wait for seqno to change (transaction confirmed)
|
|
115
136
|
for (let attempt = 0; attempt < 30; attempt++) {
|
|
116
137
|
await this.sleep(2000);
|
|
117
138
|
const currentSeqno = await contract.getSeqno();
|
|
118
139
|
if (currentSeqno > seqno)
|
|
119
140
|
break;
|
|
120
141
|
}
|
|
121
|
-
// Get the latest transaction hash
|
|
122
142
|
const transactions = await this.client.getTransactions(wallet.address, { limit: 1 });
|
|
123
143
|
if (transactions.length === 0) {
|
|
124
144
|
throw new Error("Transaction not found after confirmation");
|
|
@@ -142,7 +162,6 @@ export class TonNetwork {
|
|
|
142
162
|
}
|
|
143
163
|
parseNativeTransfer(tx, recipientAddress, confirmed) {
|
|
144
164
|
const outMsgs = tx.out_msgs || [];
|
|
145
|
-
// For outgoing messages, the sender is the account that owns this transaction
|
|
146
165
|
const txAccount = this.normalizeAddress(tx.account);
|
|
147
166
|
for (const msg of outMsgs) {
|
|
148
167
|
if (msg.destination) {
|
|
@@ -158,7 +177,6 @@ export class TonNetwork {
|
|
|
158
177
|
}
|
|
159
178
|
}
|
|
160
179
|
}
|
|
161
|
-
// For incoming messages, the sender is the source of the in_msg
|
|
162
180
|
if (tx.in_msg?.value) {
|
|
163
181
|
const from = this.normalizeAddress(tx.in_msg.source);
|
|
164
182
|
return {
|
|
@@ -192,7 +210,10 @@ export class TonNetwork {
|
|
|
192
210
|
walk(trace);
|
|
193
211
|
const resp = await this.request(`/v3/jetton/transfers?jetton_master=${encodeURIComponent(tokenAddress)}` +
|
|
194
212
|
`&address=${encodeURIComponent(recipientAddress)}&limit=50`);
|
|
195
|
-
const transfer = (resp.jetton_transfers ?? []).find((t) => typeof t.transaction_hash === "string" &&
|
|
213
|
+
const transfer = (resp.jetton_transfers ?? []).find((t) => typeof t.transaction_hash === "string" &&
|
|
214
|
+
traceTxHashes.has(t.transaction_hash) &&
|
|
215
|
+
t.transaction_aborted !== true &&
|
|
216
|
+
this.addressesMatch(this.normalizeAddress(t.destination?.address || t.destination), recipientAddress));
|
|
196
217
|
if (!transfer) {
|
|
197
218
|
return;
|
|
198
219
|
}
|
package/dist/networks/ton.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ton.js","sourceRoot":"","sources":["../../src/networks/ton.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ton.js","sourceRoot":"","sources":["../../src/networks/ton.ts"],"names":[],"mappings":"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"}
|
package/dist/networks/trx.d.ts
CHANGED
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
import { Network, TransactionData } from "./index.js";
|
|
2
|
-
|
|
2
|
+
import { AttestationCapable, SignatureScheme } from '../attestation.js';
|
|
3
|
+
export declare class TrxNetwork implements Network, AttestationCapable {
|
|
3
4
|
private readonly rpcUrl;
|
|
4
5
|
private readonly authHeaders;
|
|
5
6
|
private readonly confirmations;
|
|
6
7
|
private readonly nativeAssetDecimals;
|
|
7
8
|
readonly retryDelay: number;
|
|
9
|
+
readonly signatureScheme = SignatureScheme.Secp256k1;
|
|
8
10
|
private tronWeb;
|
|
9
11
|
constructor(rpcUrl: string, confirmations?: number);
|
|
12
|
+
addressFromPublicKey(publicKey: string): string;
|
|
13
|
+
verifyAttestation(publicKey: string, signature: string, preimage: Uint8Array): boolean;
|
|
10
14
|
ping(): Promise<void>;
|
|
11
15
|
getDecimals(tokenAddress: string): Promise<number>;
|
|
12
|
-
getTxData(txHash: string, tokenAddress: string): Promise<TransactionData | undefined>;
|
|
16
|
+
getTxData(txHash: string, tokenAddress: string, recipientAddress: string): Promise<TransactionData | undefined>;
|
|
17
|
+
/**
|
|
18
|
+
* @deprecated Signs from a raw private key — do not use in production. Kept for local tooling/tests.
|
|
19
|
+
*/
|
|
13
20
|
transfer(privateKey: string, to: string, value: bigint, tokenAddress: string): Promise<string>;
|
|
14
21
|
private request;
|
|
15
22
|
}
|
package/dist/networks/trx.js
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
|
-
import { fromHex } from "tron-format-address";
|
|
1
|
+
import { fromHex, toHex } from "tron-format-address";
|
|
2
2
|
import { TronWeb } from "tronweb";
|
|
3
|
+
import { ethers } from 'ethers';
|
|
4
|
+
import { SignatureScheme, verifySecp256k1 } from '../attestation.js';
|
|
3
5
|
import { log, memoize } from "../utils.js";
|
|
4
6
|
import { proxyFetch } from '../proxy.js';
|
|
7
|
+
const TRC20_TRANSFER_TOPIC = "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef";
|
|
8
|
+
const addrBody = (s) => (s || "").replace(/^0x/, "").toLowerCase().slice(-40);
|
|
5
9
|
export class TrxNetwork {
|
|
6
10
|
constructor(rpcUrl, confirmations = 20) {
|
|
7
11
|
this.authHeaders = {};
|
|
8
12
|
this.nativeAssetDecimals = 6;
|
|
9
13
|
this.retryDelay = 10000;
|
|
14
|
+
this.signatureScheme = SignatureScheme.Secp256k1;
|
|
10
15
|
if (rpcUrl.includes('@')) {
|
|
11
16
|
const [rpcUrlPart, apiKey] = rpcUrl.split('@', 2);
|
|
12
17
|
this.rpcUrl = rpcUrlPart;
|
|
@@ -21,6 +26,12 @@ export class TrxNetwork {
|
|
|
21
26
|
headers: this.authHeaders
|
|
22
27
|
});
|
|
23
28
|
}
|
|
29
|
+
addressFromPublicKey(publicKey) {
|
|
30
|
+
return fromHex('41' + ethers.computeAddress(publicKey).slice(2));
|
|
31
|
+
}
|
|
32
|
+
verifyAttestation(publicKey, signature, preimage) {
|
|
33
|
+
return verifySecp256k1(publicKey, signature, preimage);
|
|
34
|
+
}
|
|
24
35
|
async ping() {
|
|
25
36
|
await this.request('/wallet/getnowblock', {
|
|
26
37
|
method: 'POST',
|
|
@@ -44,7 +55,7 @@ export class TrxNetwork {
|
|
|
44
55
|
return parseInt(response.constant_result[0], 16);
|
|
45
56
|
});
|
|
46
57
|
}
|
|
47
|
-
async getTxData(txHash, tokenAddress) {
|
|
58
|
+
async getTxData(txHash, tokenAddress, recipientAddress) {
|
|
48
59
|
const currentBlock = await this.request(`/wallet/getblockbylatestnum`, {
|
|
49
60
|
method: "POST",
|
|
50
61
|
headers: {
|
|
@@ -53,7 +64,6 @@ export class TrxNetwork {
|
|
|
53
64
|
},
|
|
54
65
|
body: JSON.stringify({ num: 1 })
|
|
55
66
|
}).then((res) => res.block[0].block_header.raw_data.number);
|
|
56
|
-
// Native token - TRX
|
|
57
67
|
if (tokenAddress === "0x0") {
|
|
58
68
|
const response = await this.request(`/wallet/gettransactionbyid`, {
|
|
59
69
|
method: "POST",
|
|
@@ -85,15 +95,25 @@ export class TrxNetwork {
|
|
|
85
95
|
};
|
|
86
96
|
}
|
|
87
97
|
log.info(`Confirmations ${txHash}: ${currentBlock - blockNumber}`);
|
|
98
|
+
const contract = response.raw_data?.contract?.[0];
|
|
99
|
+
if (contract?.type !== "TransferContract") {
|
|
100
|
+
log.warn(`Transaction ${txHash} is not a native TRX transfer: ${contract?.type}`);
|
|
101
|
+
return {
|
|
102
|
+
from: "",
|
|
103
|
+
to: "",
|
|
104
|
+
token: "",
|
|
105
|
+
amount: 0n,
|
|
106
|
+
confirmed
|
|
107
|
+
};
|
|
108
|
+
}
|
|
88
109
|
return {
|
|
89
|
-
from: fromHex(
|
|
90
|
-
to: fromHex(
|
|
110
|
+
from: fromHex(contract.parameter.value.owner_address),
|
|
111
|
+
to: fromHex(contract.parameter.value.to_address),
|
|
91
112
|
token: tokenAddress,
|
|
92
|
-
amount: BigInt(
|
|
113
|
+
amount: BigInt(contract.parameter.value.amount),
|
|
93
114
|
confirmed
|
|
94
115
|
};
|
|
95
116
|
}
|
|
96
|
-
// TRC20 token
|
|
97
117
|
const response = await this.request(`/wallet/gettransactioninfobyid`, {
|
|
98
118
|
method: "POST",
|
|
99
119
|
headers: {
|
|
@@ -115,36 +135,44 @@ export class TrxNetwork {
|
|
|
115
135
|
confirmed
|
|
116
136
|
};
|
|
117
137
|
}
|
|
118
|
-
//
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
138
|
+
// TRC20 — trust only a Transfer emitted by the token contract itself, to the expected
|
|
139
|
+
// recipient. Reading log[0] blindly lets approve() / events from other contracts satisfy
|
|
140
|
+
// validation with no real transfer.
|
|
141
|
+
const tokenBody = addrBody(toHex(tokenAddress));
|
|
142
|
+
const recipientBody = addrBody(toHex(recipientAddress));
|
|
143
|
+
const transferLog = (response.log || []).find((l) => addrBody(l.address) === tokenBody &&
|
|
144
|
+
(l.topics?.[0] || "").replace(/^0x/, "").toLowerCase() === TRC20_TRANSFER_TOPIC &&
|
|
145
|
+
l.topics?.length === 3 &&
|
|
146
|
+
addrBody(l.topics[2]) === recipientBody);
|
|
147
|
+
if (!transferLog) {
|
|
148
|
+
log.warn(`Transaction ${txHash} has no TRC20 Transfer of ${tokenAddress} to ${recipientAddress}`);
|
|
149
|
+
return {
|
|
150
|
+
from: "",
|
|
151
|
+
to: "",
|
|
152
|
+
token: "",
|
|
153
|
+
amount: 0n,
|
|
154
|
+
confirmed
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
const amountHex = (transferLog.data || "").replace(/^0x/, "");
|
|
130
158
|
return {
|
|
131
|
-
from,
|
|
132
|
-
to: fromHex("0x" +
|
|
133
|
-
token: fromHex(
|
|
134
|
-
amount: BigInt(
|
|
159
|
+
from: fromHex("0x" + addrBody(transferLog.topics[1])),
|
|
160
|
+
to: fromHex("0x" + addrBody(transferLog.topics[2])),
|
|
161
|
+
token: fromHex("0x" + tokenBody),
|
|
162
|
+
amount: amountHex ? BigInt("0x" + amountHex) : 0n,
|
|
135
163
|
confirmed
|
|
136
164
|
};
|
|
137
165
|
}
|
|
166
|
+
/**
|
|
167
|
+
* @deprecated Signs from a raw private key — do not use in production. Kept for local tooling/tests.
|
|
168
|
+
*/
|
|
138
169
|
async transfer(privateKey, to, value, tokenAddress) {
|
|
139
|
-
// Set private key
|
|
140
170
|
this.tronWeb.setPrivateKey(privateKey);
|
|
141
171
|
if (tokenAddress === "0x0") {
|
|
142
|
-
// Send TRX (native token)
|
|
143
172
|
const tx = await this.tronWeb.trx.sendTransaction(to, Number(value));
|
|
144
173
|
return tx.txid;
|
|
145
174
|
}
|
|
146
175
|
const { abi } = await this.tronWeb.trx.getContract(tokenAddress);
|
|
147
|
-
// Send USDT or other TRC20 tokens
|
|
148
176
|
const contract = this.tronWeb.contract(abi.entrys, tokenAddress);
|
|
149
177
|
return await contract.methods.transfer(to, Number(value)).send();
|
|
150
178
|
}
|
package/dist/networks/trx.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trx.js","sourceRoot":"","sources":["../../src/networks/trx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"trx.js","sourceRoot":"","sources":["../../src/networks/trx.ts"],"names":[],"mappings":"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"}
|
package/dist/networks/xrp.d.ts
CHANGED
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
import { Network, TransactionData } from './index.js';
|
|
2
|
-
|
|
2
|
+
import { AttestationCapable, SignatureScheme } from '../attestation.js';
|
|
3
|
+
export declare class XrpNetwork implements Network, AttestationCapable {
|
|
3
4
|
private readonly rpcUrl;
|
|
4
5
|
private readonly authHeaders;
|
|
5
6
|
private readonly confirmations;
|
|
6
7
|
private readonly nativeAssetDecimals;
|
|
7
8
|
readonly retryDelay: number;
|
|
9
|
+
readonly signatureScheme = SignatureScheme.Secp256k1;
|
|
8
10
|
constructor(rpcUrl: string, confirmations?: number);
|
|
11
|
+
addressFromPublicKey(publicKey: string): string;
|
|
12
|
+
verifyAttestation(publicKey: string, signature: string, preimage: Uint8Array): boolean;
|
|
9
13
|
ping(): Promise<void>;
|
|
10
14
|
getDecimals(tokenAddress: string): Promise<number>;
|
|
11
15
|
getTxData(txHash: string, tokenAddress: string, recipientAddress: string): Promise<TransactionData | undefined>;
|
|
16
|
+
/**
|
|
17
|
+
* @deprecated Signs from a raw private key — do not use in production. Kept for local tooling/tests.
|
|
18
|
+
*/
|
|
12
19
|
transfer(privateKey: string, to: string, value: bigint, tokenAddress: string): Promise<string>;
|
|
13
20
|
private parseTokenAddress;
|
|
14
21
|
private getCurrentValidatedLedger;
|
package/dist/networks/xrp.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import Big from 'big.js';
|
|
2
2
|
import { Wallet } from 'xrpl';
|
|
3
|
+
import { deriveAddress } from 'ripple-keypairs';
|
|
4
|
+
import { ethers } from 'ethers';
|
|
5
|
+
import { SignatureScheme, verifySecp256k1 } from '../attestation.js';
|
|
3
6
|
import { log } from '../utils.js';
|
|
4
7
|
import { proxyFetch } from '../proxy.js';
|
|
5
8
|
const DEFAULT_ISSUED_CURRENCY_DECIMALS = 15;
|
|
@@ -8,6 +11,7 @@ export class XrpNetwork {
|
|
|
8
11
|
this.authHeaders = {};
|
|
9
12
|
this.nativeAssetDecimals = 6;
|
|
10
13
|
this.retryDelay = 10000;
|
|
14
|
+
this.signatureScheme = SignatureScheme.Secp256k1;
|
|
11
15
|
if (rpcUrl.includes('@')) {
|
|
12
16
|
const [rpcUrlPart, apiKey] = rpcUrl.split('@', 2);
|
|
13
17
|
this.rpcUrl = rpcUrlPart;
|
|
@@ -18,6 +22,13 @@ export class XrpNetwork {
|
|
|
18
22
|
}
|
|
19
23
|
this.confirmations = confirmations;
|
|
20
24
|
}
|
|
25
|
+
// XRP classic address from a secp256k1 public key (compressed, uppercase hex — the XRPL form).
|
|
26
|
+
addressFromPublicKey(publicKey) {
|
|
27
|
+
return deriveAddress(ethers.SigningKey.computePublicKey(publicKey, true).slice(2).toUpperCase());
|
|
28
|
+
}
|
|
29
|
+
verifyAttestation(publicKey, signature, preimage) {
|
|
30
|
+
return verifySecp256k1(publicKey, signature, preimage);
|
|
31
|
+
}
|
|
21
32
|
async ping() {
|
|
22
33
|
await this.rpcCall('server_info');
|
|
23
34
|
}
|
|
@@ -90,6 +101,9 @@ export class XrpNetwork {
|
|
|
90
101
|
confirmed
|
|
91
102
|
};
|
|
92
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* @deprecated Signs from a raw private key — do not use in production. Kept for local tooling/tests.
|
|
106
|
+
*/
|
|
93
107
|
async transfer(privateKey, to, value, tokenAddress) {
|
|
94
108
|
const wallet = Wallet.fromSeed(privateKey);
|
|
95
109
|
const accountInfo = await this.rpcCall('account_info', {
|