@relayprotocol/relay-ton-wallet-adapter 2.0.0
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/LICENSE +21 -0
- package/README.md +47 -0
- package/_cjs/package.json +1 -0
- package/_cjs/src/adapter.js +148 -0
- package/_cjs/src/adapter.js.map +1 -0
- package/_cjs/src/index.js +6 -0
- package/_cjs/src/index.js.map +1 -0
- package/_cjs/src/types.js +3 -0
- package/_cjs/src/types.js.map +1 -0
- package/_cjs/tsconfig.build.tsbuildinfo +1 -0
- package/_esm/package.json +1 -0
- package/_esm/src/adapter.js +199 -0
- package/_esm/src/adapter.js.map +1 -0
- package/_esm/src/index.js +3 -0
- package/_esm/src/index.js.map +1 -0
- package/_esm/src/types.js +7 -0
- package/_esm/src/types.js.map +1 -0
- package/_esm/tsconfig.build.tsbuildinfo +1 -0
- package/_types/src/adapter.d.ts +15 -0
- package/_types/src/adapter.d.ts.map +1 -0
- package/_types/src/index.d.ts +3 -0
- package/_types/src/index.d.ts.map +1 -0
- package/_types/src/types.d.ts +21 -0
- package/_types/src/types.d.ts.map +1 -0
- package/_types/tsconfig.build.tsbuildinfo +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type": "module","sideEffects":false}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { LogLevel, getClient } from '@relayprotocol/relay-sdk';
|
|
2
|
+
import { TonClient } from '@ton/ton';
|
|
3
|
+
import { Address, Cell, beginCell, loadMessage, storeMessage } from '@ton/core';
|
|
4
|
+
// TON Connect CHAIN identifier for mainnet (Relay only supports TON mainnet).
|
|
5
|
+
const TON_MAINNET_CHAIN = '-239';
|
|
6
|
+
// Relay's numeric chainId for TON mainnet. TON is single-chain for Relay, so
|
|
7
|
+
// the adapter owns this rather than taking it as a parameter.
|
|
8
|
+
const TON_CHAIN_ID = 224235520;
|
|
9
|
+
const DEFAULT_VALID_FOR_SECONDS = 300;
|
|
10
|
+
const CONFIRM_POLL_MS = 2000;
|
|
11
|
+
const CONFIRM_TIMEOUT_MS = 120_000;
|
|
12
|
+
const CONFIRM_TX_LOOKBACK = 32;
|
|
13
|
+
/**
|
|
14
|
+
* Adapts a TON wallet for use with the Relay SDK.
|
|
15
|
+
*
|
|
16
|
+
* The user's key lives in their wallet (e.g. Dynamic / TON Connect), so this
|
|
17
|
+
* adapter never signs. It maps the Relay quote step into a TON Connect request,
|
|
18
|
+
* hands it to the wallet-provided `sendTransaction` callback (which signs +
|
|
19
|
+
* broadcasts), and then confirms the origin transaction landed successfully.
|
|
20
|
+
*
|
|
21
|
+
* @param walletAddress - The connected wallet's address.
|
|
22
|
+
* @param sendTransaction - Wallet callback that signs + broadcasts a request.
|
|
23
|
+
*/
|
|
24
|
+
export const adaptTonWallet = (walletAddress, sendTransaction) => {
|
|
25
|
+
if (typeof sendTransaction !== 'function') {
|
|
26
|
+
throw new Error('adaptTonWallet requires a sendTransaction function');
|
|
27
|
+
}
|
|
28
|
+
// Parse (and validate) the wallet address once, then reuse it for confirmation.
|
|
29
|
+
const walletAccount = Address.parse(walletAddress);
|
|
30
|
+
return {
|
|
31
|
+
vmType: 'tonvm',
|
|
32
|
+
getChainId: async () => TON_CHAIN_ID,
|
|
33
|
+
address: async () => walletAddress,
|
|
34
|
+
handleSignMessageStep: async () => {
|
|
35
|
+
// Not used by deposit/bridge flows; mirrors the other VM adapters.
|
|
36
|
+
throw new Error('Message signing not implemented for TON');
|
|
37
|
+
},
|
|
38
|
+
handleSendTransactionStep: async (_chainId, stepItem) => {
|
|
39
|
+
const client = getClient();
|
|
40
|
+
const messages = stepItem.data.messages;
|
|
41
|
+
if (!messages || messages.length === 0) {
|
|
42
|
+
throw new Error('TON transaction step is missing messages');
|
|
43
|
+
}
|
|
44
|
+
// Relay returns internal-message fields (to/value/body); map them to the
|
|
45
|
+
// TON Connect request shape the wallet expects (address/amount/payload).
|
|
46
|
+
// TON Connect has no per-message bounce flag — the wallet derives it from
|
|
47
|
+
// the address form — so honor the step's `bounce` field by re-encoding the
|
|
48
|
+
// address (e.g. bounce:false -> non-bounceable `UQ…`). Sending a deposit
|
|
49
|
+
// to the bounceable form makes the depository bounce the funds back.
|
|
50
|
+
const request = {
|
|
51
|
+
validUntil: Math.floor(Date.now() / 1000) + DEFAULT_VALID_FOR_SECONDS,
|
|
52
|
+
network: TON_MAINNET_CHAIN,
|
|
53
|
+
messages: messages.map((message) => ({
|
|
54
|
+
address: encodeAddress(message.to, message.bounce),
|
|
55
|
+
amount: message.value.toString(),
|
|
56
|
+
...(message.body ? { payload: message.body } : {}),
|
|
57
|
+
...(message.stateInit ? { stateInit: message.stateInit } : {})
|
|
58
|
+
}))
|
|
59
|
+
};
|
|
60
|
+
client.log(['Sending TON transaction', request], LogLevel.Verbose);
|
|
61
|
+
const result = await sendTransaction(request);
|
|
62
|
+
// The wallet returns the signed external-message BOC (base64). Reduce it
|
|
63
|
+
// to the external-message hash so callers get a clean identifier (the raw
|
|
64
|
+
// BOC mangles explorer URLs) that also matches the on-chain transaction.
|
|
65
|
+
const boc = result.boc ?? result.transactionHash;
|
|
66
|
+
if (!boc) {
|
|
67
|
+
throw new Error('No result returned from the TON wallet');
|
|
68
|
+
}
|
|
69
|
+
const messageHash = toMessageHash(boc, walletAccount);
|
|
70
|
+
client.log(['TON transaction submitted', messageHash], LogLevel.Verbose);
|
|
71
|
+
return messageHash;
|
|
72
|
+
},
|
|
73
|
+
handleConfirmTransactionStep: async (externalMessageHash, chainId) => {
|
|
74
|
+
const client = getClient();
|
|
75
|
+
// Read the TON RPC from the Relay client's chain config so integrators can
|
|
76
|
+
// override it by configuring the chain — no adapter-level endpoint option.
|
|
77
|
+
const rpcUrl = client.chains.find((chain) => chain.id === chainId)
|
|
78
|
+
?.httpRpcUrl;
|
|
79
|
+
if (!rpcUrl) {
|
|
80
|
+
throw new Error(`No TON httpRpcUrl configured for chainId ${chainId} in the Relay client`);
|
|
81
|
+
}
|
|
82
|
+
const tonClient = new TonClient({ endpoint: rpcUrl });
|
|
83
|
+
// `handleSendTransactionStep` returns the external-message hash, which
|
|
84
|
+
// equals the inbound message hash of the transaction it produces. Poll the
|
|
85
|
+
// wallet's recent transactions for that one and confirm the origin
|
|
86
|
+
// (deposit) executed successfully. This confirms the wallet's external-in
|
|
87
|
+
// transaction; it does not independently verify each emitted internal
|
|
88
|
+
// message against the Relay step.
|
|
89
|
+
const start = Date.now();
|
|
90
|
+
const maxAttempts = Math.ceil(CONFIRM_TIMEOUT_MS / CONFIRM_POLL_MS) + 1;
|
|
91
|
+
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
92
|
+
let match;
|
|
93
|
+
try {
|
|
94
|
+
const transactions = await tonClient.getTransactions(walletAccount, {
|
|
95
|
+
limit: CONFIRM_TX_LOOKBACK
|
|
96
|
+
});
|
|
97
|
+
for (const tx of transactions) {
|
|
98
|
+
if (!tx.inMessage) {
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
if (hashMessage(tx.inMessage) === externalMessageHash) {
|
|
102
|
+
match = {
|
|
103
|
+
hash: tx.hash().toString('hex'),
|
|
104
|
+
lt: tx.lt.toString(),
|
|
105
|
+
description: tx.description
|
|
106
|
+
};
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
client.log(['Error polling for TON transaction', error], LogLevel.Verbose);
|
|
113
|
+
}
|
|
114
|
+
if (match) {
|
|
115
|
+
if (!isTransactionSuccessful(match.description)) {
|
|
116
|
+
client.log(['TON transaction failed', match.description], LogLevel.Verbose);
|
|
117
|
+
throw new Error('TON transaction failed');
|
|
118
|
+
}
|
|
119
|
+
return { hash: match.hash, lt: match.lt };
|
|
120
|
+
}
|
|
121
|
+
if (Date.now() - start > CONFIRM_TIMEOUT_MS) {
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
await new Promise((resolve) => setTimeout(resolve, CONFIRM_POLL_MS));
|
|
125
|
+
}
|
|
126
|
+
throw new Error('TON transaction confirmation timed out');
|
|
127
|
+
},
|
|
128
|
+
switchChain: () => Promise.resolve()
|
|
129
|
+
};
|
|
130
|
+
};
|
|
131
|
+
/** Canonical message hash, used identically for the BOC and on-chain messages. */
|
|
132
|
+
const hashMessage = (message) => {
|
|
133
|
+
return beginCell()
|
|
134
|
+
.store(storeMessage(message))
|
|
135
|
+
.endCell()
|
|
136
|
+
.hash()
|
|
137
|
+
.toString('hex');
|
|
138
|
+
};
|
|
139
|
+
/**
|
|
140
|
+
* Reduce the wallet's result to the external-message hash. The wallet returns
|
|
141
|
+
* the signed external-message BOC; we parse it as a message and hash it via the
|
|
142
|
+
* same `hashMessage` used on-chain (so both sides use identical serialization).
|
|
143
|
+
* Validates it's an external-in message addressed to the expected wallet. Falls
|
|
144
|
+
* back only when the input is already a 64-char hex hash.
|
|
145
|
+
*/
|
|
146
|
+
const toMessageHash = (bocOrHash, expectedWallet) => {
|
|
147
|
+
try {
|
|
148
|
+
const message = loadMessage(Cell.fromBase64(bocOrHash).beginParse());
|
|
149
|
+
if (message.info.type !== 'external-in') {
|
|
150
|
+
throw new Error(`Expected an external-in message, got ${message.info.type}`);
|
|
151
|
+
}
|
|
152
|
+
if (expectedWallet && !message.info.dest.equals(expectedWallet)) {
|
|
153
|
+
throw new Error('TON wallet returned a BOC for an unexpected account');
|
|
154
|
+
}
|
|
155
|
+
return hashMessage(message);
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
const normalized = bocOrHash.trim().replace(/^0x/, '').toLowerCase();
|
|
159
|
+
if (/^[0-9a-f]{64}$/.test(normalized)) {
|
|
160
|
+
return normalized;
|
|
161
|
+
}
|
|
162
|
+
throw error;
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
/**
|
|
166
|
+
* TON Connect derives a message's bounceability from the address form, so
|
|
167
|
+
* re-encode the destination to match the Relay step's `bounce` flag
|
|
168
|
+
* (`bounce: false` -> non-bounceable `UQ…`). When `bounce` is undefined the
|
|
169
|
+
* address is left as-is; a malformed address with an explicit flag is a bad
|
|
170
|
+
* step and fails loudly.
|
|
171
|
+
*/
|
|
172
|
+
const encodeAddress = (to, bounce) => {
|
|
173
|
+
if (bounce === undefined) {
|
|
174
|
+
return to;
|
|
175
|
+
}
|
|
176
|
+
return Address.parse(to).toString({ bounceable: bounce, urlSafe: true });
|
|
177
|
+
};
|
|
178
|
+
/**
|
|
179
|
+
* Origin success: the external message executed and the wallet emitted its
|
|
180
|
+
* action. Deliberately lenient — only an explicit failure (aborted, or a phase
|
|
181
|
+
* reporting `success: false`) is treated as failed, to avoid false negatives on
|
|
182
|
+
* a deposit that actually landed (the SDK's route polling catches real route
|
|
183
|
+
* failures separately).
|
|
184
|
+
*/
|
|
185
|
+
const isTransactionSuccessful = (description) => {
|
|
186
|
+
const desc = description;
|
|
187
|
+
if (desc?.type !== 'generic') {
|
|
188
|
+
return true;
|
|
189
|
+
}
|
|
190
|
+
if (desc.aborted === true) {
|
|
191
|
+
return false;
|
|
192
|
+
}
|
|
193
|
+
const computeOk = desc.computePhase?.type === 'vm'
|
|
194
|
+
? desc.computePhase.success !== false
|
|
195
|
+
: true;
|
|
196
|
+
const actionOk = desc.actionPhase ? desc.actionPhase.success !== false : true;
|
|
197
|
+
return computeOk && actionOk;
|
|
198
|
+
};
|
|
199
|
+
//# sourceMappingURL=adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// TonConnect-compatible transaction request shapes.
|
|
2
|
+
//
|
|
3
|
+
// These mirror the TON Connect `SendTransactionRequest` spec and the request
|
|
4
|
+
// shape accepted by wallet providers such as Dynamic's `sendTransaction`:
|
|
5
|
+
// https://www.dynamic.xyz/docs/javascript/reference/ton/send-transaction
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,EAAE;AACF,6EAA6E;AAC7E,0EAA0E;AAC1E,yEAAyE"}
|