Skip to content

Commit 9693d83

Browse files
[TON]: Fixes issue with large transfers (trustwallet#4413)
* [TON]: Fixes issue with large transfers * Removes lock change --------- Co-authored-by: Sergei Boiko <[email protected]>
1 parent 11bd2fb commit 9693d83

File tree

9 files changed

+83
-58
lines changed

9 files changed

+83
-58
lines changed

android/app/src/androidTest/java/com/trustwallet/core/app/blockchains/theopennetwork/TestTheOpenNetworkSigner.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class TestTheOpenNetworkSigner {
2626

2727
val transfer = TheOpenNetwork.Transfer.newBuilder()
2828
.setDest("EQBm--PFwDv1yCeS-QTJ-L8oiUpqo9IT1BwgVptlSq3ts90Q")
29-
.setAmount(10)
29+
.setAmount(ByteString.copyFrom("0A".toHexByteArray())) // 10
3030
.setMode(TheOpenNetwork.SendMode.PAY_FEES_SEPARATELY_VALUE or TheOpenNetwork.SendMode.IGNORE_ACTION_PHASE_ERRORS_VALUE)
3131
.setBounceable(true)
3232
.build()
@@ -52,15 +52,15 @@ class TestTheOpenNetworkSigner {
5252
val privateKey = PrivateKey("c054900a527538c1b4325688a421c0469b171c29f23a62da216e90b0df2412ee".toHexByteArray())
5353

5454
val jettonTransfer = TheOpenNetwork.JettonTransfer.newBuilder()
55-
.setJettonAmount(500 * 1000 * 1000)
55+
.setJettonAmount(ByteString.copyFrom("1DCD6500".toHexByteArray())) // 500 * 1000 * 1000
5656
.setToOwner("EQAFwMs5ha8OgZ9M4hQr80z9NkE7rGxUpE1hCFndiY6JnDx8")
5757
.setResponseAddress("EQBaKIMq5Am2p_rfR1IFTwsNWHxBkOpLTmwUain5Fj4llTXk")
58-
.setForwardAmount(1)
58+
.setForwardAmount(ByteString.copyFrom("01".toHexByteArray())) // 1
5959
.build()
6060

6161
val transfer = TheOpenNetwork.Transfer.newBuilder()
6262
.setDest("EQBiaD8PO1NwfbxSkwbcNT9rXDjqhiIvXWymNO-edV0H5lja")
63-
.setAmount(100 * 1000 * 1000)
63+
.setAmount(ByteString.copyFrom("05F5E100".toHexByteArray())) // 100 * 1000 * 1000
6464
.setMode(TheOpenNetwork.SendMode.PAY_FEES_SEPARATELY_VALUE or TheOpenNetwork.SendMode.IGNORE_ACTION_PHASE_ERRORS_VALUE)
6565
.setComment("test comment")
6666
.setBounceable(true)
@@ -100,7 +100,7 @@ class TestTheOpenNetworkSigner {
100100
val transfer = TheOpenNetwork.Transfer.newBuilder()
101101
.setDest(dogeChatbotDeployingAddress)
102102
// 0.069 TON
103-
.setAmount(69_000_000)
103+
.setAmount(ByteString.copyFrom("041CDB40".toHexByteArray())) // 69_000_000
104104
.setMode(TheOpenNetwork.SendMode.PAY_FEES_SEPARATELY_VALUE or TheOpenNetwork.SendMode.IGNORE_ACTION_PHASE_ERRORS_VALUE)
105105
.setBounceable(false)
106106
.setStateInit(dogeChatbotStateInit)

rust/chains/tw_ton/src/signing_request/builder.rs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,9 +116,13 @@ impl SigningRequestBuilder {
116116
PayloadType::None => None,
117117
};
118118

119+
let ton_amount = U256::from_big_endian_slice(input.amount.as_ref())
120+
.tw_err(SigningErrorType::Error_invalid_params)
121+
.context("Invalid 'amount'")?;
122+
119123
Ok(TransferRequest {
120124
dest,
121-
ton_amount: U256::from(input.amount),
125+
ton_amount,
122126
mode,
123127
comment,
124128
state_init,
@@ -141,13 +145,21 @@ impl SigningRequestBuilder {
141145
Some(input.custom_payload.to_string())
142146
};
143147

148+
let jetton_amount = U256::from_big_endian_slice(input.jetton_amount.as_ref())
149+
.tw_err(SigningErrorType::Error_invalid_params)
150+
.context("Invalid 'jetton_amount'")?;
151+
152+
let forward_ton_amount = U256::from_big_endian_slice(input.forward_amount.as_ref())
153+
.tw_err(SigningErrorType::Error_invalid_params)
154+
.context("Invalid 'forward_amount'")?;
155+
144156
let jetton_payload = JettonTransferRequest {
145157
query_id: input.query_id,
146-
jetton_amount: U256::from(input.jetton_amount),
158+
jetton_amount,
147159
dest,
148160
response_address,
149161
custom_payload,
150-
forward_ton_amount: U256::from(input.forward_amount),
162+
forward_ton_amount,
151163
};
152164

153165
Ok(TransferPayload::JettonTransfer(jetton_payload))

rust/tw_tests/tests/chains/ton/ton_compile.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ use crate::chains::ton::ton_sign::assert_eq_boc;
66
use tw_any_coin::test_utils::sign_utils::{CompilerHelper, PreImageHelper};
77
use tw_coin_registry::coin_type::CoinType;
88
use tw_encoding::hex::{DecodeHex, ToHex};
9+
use tw_number::U256;
910
use tw_proto::Common::Proto::SigningError;
1011
use tw_proto::TheOpenNetwork::Proto;
1112
use tw_proto::TxCompiler::Proto as CompilerProto;
@@ -16,7 +17,7 @@ fn test_ton_compile_wallet_v4r2_transfer_and_deploy() {
1617

1718
let transfer = Proto::Transfer {
1819
dest: "EQDYW_1eScJVxtitoBRksvoV9cCYo4uKGWLVNIHB1JqRR3n0".into(),
19-
amount: 10,
20+
amount: U256::encode_be_compact(10),
2021
mode: Proto::SendMode::PAY_FEES_SEPARATELY as u32
2122
| Proto::SendMode::IGNORE_ACTION_PHASE_ERRORS as u32,
2223
bounceable: true,
@@ -63,7 +64,7 @@ fn test_ton_compile_wallet_v5r1_transfer_and_deploy() {
6364

6465
let transfer = Proto::Transfer {
6566
dest: "EQBe6DtCpJZe8M4t-crMXe93JlEYgSl30S5OUuMSLOfeQfBu".into(),
66-
amount: 10,
67+
amount: U256::encode_be_compact(10),
6768
mode: Proto::SendMode::PAY_FEES_SEPARATELY as u32
6869
| Proto::SendMode::IGNORE_ACTION_PHASE_ERRORS as u32,
6970
bounceable: true,

rust/tw_tests/tests/chains/ton/ton_sign.rs

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use crate::chains::ton::cell_example::{
88
use tw_any_coin::test_utils::sign_utils::AnySignerHelper;
99
use tw_coin_registry::coin_type::CoinType;
1010
use tw_encoding::hex::{DecodeHex, ToHex};
11+
use tw_number::U256;
1112
use tw_proto::Common::Proto::SigningError;
1213
use tw_proto::TheOpenNetwork::Proto;
1314
use tw_proto::TheOpenNetwork::Proto::mod_Transfer::OneOfpayload as PayloadType;
@@ -30,7 +31,7 @@ fn test_ton_sign_transfer_and_deploy() {
3031

3132
let transfer = Proto::Transfer {
3233
dest: "EQDYW_1eScJVxtitoBRksvoV9cCYo4uKGWLVNIHB1JqRR3n0".into(),
33-
amount: 10,
34+
amount: U256::encode_be_compact(10),
3435
mode: Proto::SendMode::PAY_FEES_SEPARATELY as u32
3536
| Proto::SendMode::IGNORE_ACTION_PHASE_ERRORS as u32,
3637
bounceable: true,
@@ -65,7 +66,7 @@ fn test_ton_sign_transfer_and_deploy_4b1d9f() {
6566
let transfer = Proto::Transfer {
6667
dest: "UQA6whN_oU5h9jPljnlDSWRYQNDPkLaUqqaEWULNB_Zoykuu".into(),
6768
// 0.0001 TON
68-
amount: 100_000,
69+
amount: U256::encode_be_compact(100_000),
6970
mode: Proto::SendMode::PAY_FEES_SEPARATELY as u32
7071
| Proto::SendMode::IGNORE_ACTION_PHASE_ERRORS as u32,
7172
bounceable: true,
@@ -98,7 +99,7 @@ fn test_ton_sign_transfer_ordinary() {
9899

99100
let transfer = Proto::Transfer {
100101
dest: "EQBm--PFwDv1yCeS-QTJ-L8oiUpqo9IT1BwgVptlSq3ts90Q".into(),
101-
amount: 10,
102+
amount: U256::encode_be_compact(10),
102103
mode: Proto::SendMode::PAY_FEES_SEPARATELY as u32
103104
| Proto::SendMode::IGNORE_ACTION_PHASE_ERRORS as u32,
104105
bounceable: true,
@@ -132,7 +133,7 @@ fn test_ton_sign_transfer_all_balance() {
132133

133134
let transfer = Proto::Transfer {
134135
dest: "EQBm--PFwDv1yCeS-QTJ-L8oiUpqo9IT1BwgVptlSq3ts90Q".into(),
135-
amount: 0,
136+
amount: U256::encode_be_compact(0),
136137
mode: Proto::SendMode::ATTACH_ALL_CONTRACT_BALANCE as u32
137138
| Proto::SendMode::IGNORE_ACTION_PHASE_ERRORS as u32,
138139
bounceable: true,
@@ -166,7 +167,7 @@ fn test_ton_sign_transfer_all_balance_non_bounceable() {
166167

167168
let transfer = Proto::Transfer {
168169
dest: "UQBm--PFwDv1yCeS-QTJ-L8oiUpqo9IT1BwgVptlSq3ts4DV".into(),
169-
amount: 0,
170+
amount: U256::encode_be_compact(0),
170171
mode: Proto::SendMode::ATTACH_ALL_CONTRACT_BALANCE as u32
171172
| Proto::SendMode::IGNORE_ACTION_PHASE_ERRORS as u32,
172173
bounceable: false,
@@ -200,7 +201,7 @@ fn test_ton_sign_transfer_with_ascii_comment() {
200201

201202
let transfer = Proto::Transfer {
202203
dest: "EQBm--PFwDv1yCeS-QTJ-L8oiUpqo9IT1BwgVptlSq3ts90Q".into(),
203-
amount: 10,
204+
amount: U256::encode_be_compact(10),
204205
mode: Proto::SendMode::PAY_FEES_SEPARATELY as u32
205206
| Proto::SendMode::IGNORE_ACTION_PHASE_ERRORS as u32,
206207
bounceable: true,
@@ -235,7 +236,7 @@ fn test_ton_sign_transfer_with_utf8_comment() {
235236

236237
let transfer = Proto::Transfer {
237238
dest: "EQBm--PFwDv1yCeS-QTJ-L8oiUpqo9IT1BwgVptlSq3ts90Q".into(),
238-
amount: 10,
239+
amount: U256::encode_be_compact(10),
239240
mode: Proto::SendMode::PAY_FEES_SEPARATELY as u32
240241
| Proto::SendMode::IGNORE_ACTION_PHASE_ERRORS as u32,
241242
bounceable: true,
@@ -270,7 +271,7 @@ fn test_ton_sign_transfer_invalid_wallet_version() {
270271

271272
let transfer = Proto::Transfer {
272273
dest: "EQBm--PFwDv1yCeS-QTJ-L8oiUpqo9IT1BwgVptlSq3ts90Q".into(),
273-
amount: 10,
274+
amount: U256::encode_be_compact(10),
274275
mode: Proto::SendMode::PAY_FEES_SEPARATELY as u32
275276
| Proto::SendMode::IGNORE_ACTION_PHASE_ERRORS as u32,
276277
bounceable: true,
@@ -298,17 +299,17 @@ fn test_ton_sign_transfer_jettons() {
298299
let jetton_transfer = Proto::JettonTransfer {
299300
query_id: 69,
300301
// Transfer 1 testtwt (decimal precision is 9).
301-
jetton_amount: 1000 * 1000 * 1000,
302+
jetton_amount: U256::encode_be_compact(1000 * 1000 * 1000),
302303
to_owner: "EQAFwMs5ha8OgZ9M4hQr80z9NkE7rGxUpE1hCFndiY6JnDx8".into(),
303304
// Send unused toncoins back to sender.
304305
response_address: "EQBaKIMq5Am2p_rfR1IFTwsNWHxBkOpLTmwUain5Fj4llTXk".into(),
305-
forward_amount: 1,
306+
forward_amount: U256::encode_be_compact(1),
306307
..Proto::JettonTransfer::default()
307308
};
308309

309310
let transfer = Proto::Transfer {
310311
dest: "EQBiaD8PO1NwfbxSkwbcNT9rXDjqhiIvXWymNO-edV0H5lja".into(),
311-
amount: 100 * 1000 * 1000,
312+
amount: U256::encode_be_compact(100 * 1000 * 1000),
312313
mode: Proto::SendMode::PAY_FEES_SEPARATELY as u32
313314
| Proto::SendMode::IGNORE_ACTION_PHASE_ERRORS as u32,
314315
bounceable: true,
@@ -344,17 +345,17 @@ fn test_ton_sign_transfer_jettons_with_comment() {
344345
let jetton_transfer = Proto::JettonTransfer {
345346
query_id: 0,
346347
// Transfer 0.5 testtwt (decimal precision is 9).
347-
jetton_amount: 500 * 1000 * 1000,
348+
jetton_amount: U256::encode_be_compact(500 * 1000 * 1000),
348349
to_owner: "EQAFwMs5ha8OgZ9M4hQr80z9NkE7rGxUpE1hCFndiY6JnDx8".into(),
349350
// Send unused toncoins back to sender.
350351
response_address: "EQBaKIMq5Am2p_rfR1IFTwsNWHxBkOpLTmwUain5Fj4llTXk".into(),
351-
forward_amount: 1,
352+
forward_amount: U256::encode_be_compact(1),
352353
..Proto::JettonTransfer::default()
353354
};
354355

355356
let transfer = Proto::Transfer {
356357
dest: "EQBiaD8PO1NwfbxSkwbcNT9rXDjqhiIvXWymNO-edV0H5lja".into(),
357-
amount: 100 * 1000 * 1000,
358+
amount: U256::encode_be_compact(100 * 1000 * 1000),
358359
mode: Proto::SendMode::PAY_FEES_SEPARATELY as u32
359360
| Proto::SendMode::IGNORE_ACTION_PHASE_ERRORS as u32,
360361
bounceable: true,
@@ -392,7 +393,7 @@ fn test_ton_sign_transfer_custom_payload() {
392393
let transfer = Proto::Transfer {
393394
dest: "UQA6whN_oU5h9jPljnlDSWRYQNDPkLaUqqaEWULNB_Zoykuu".into(),
394395
// 0.00025 TON
395-
amount: 250_000,
396+
amount: U256::encode_be_compact(250_000),
396397
mode: Proto::SendMode::PAY_FEES_SEPARATELY as u32
397398
| Proto::SendMode::IGNORE_ACTION_PHASE_ERRORS as u32,
398399
bounceable: true,
@@ -443,7 +444,7 @@ fn test_ton_sign_transfer_custom_payload_with_state_init() {
443444
let transfer = Proto::Transfer {
444445
dest: doge_contract_address.into(),
445446
// 0.069 TON
446-
amount: 69_000_000,
447+
amount: U256::encode_be_compact(69_000_000),
447448
mode: Proto::SendMode::PAY_FEES_SEPARATELY as u32
448449
| Proto::SendMode::IGNORE_ACTION_PHASE_ERRORS as u32,
449450
bounceable: false,

rust/tw_tests/tests/chains/ton/ton_sign_wallet_v5r1.rs

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ use crate::chains::ton::ton_sign::assert_eq_boc;
99
use tw_any_coin::test_utils::sign_utils::AnySignerHelper;
1010
use tw_coin_registry::coin_type::CoinType;
1111
use tw_encoding::hex::{DecodeHex, ToHex};
12+
use tw_number::U256;
1213
use tw_proto::Common::Proto::SigningError;
1314
use tw_proto::TheOpenNetwork::Proto;
1415
use tw_proto::TheOpenNetwork::Proto::mod_Transfer::OneOfpayload as PayloadType;
@@ -19,7 +20,7 @@ fn test_ton_sign_wallet_v5r1_transfer_and_deploy() {
1920

2021
let transfer = Proto::Transfer {
2122
dest: "EQBe6DtCpJZe8M4t-crMXe93JlEYgSl30S5OUuMSLOfeQfBu".into(),
22-
amount: 10,
23+
amount: U256::encode_be_compact(10),
2324
mode: Proto::SendMode::PAY_FEES_SEPARATELY as u32
2425
| Proto::SendMode::IGNORE_ACTION_PHASE_ERRORS as u32,
2526
bounceable: true,
@@ -52,7 +53,7 @@ fn test_ton_sign_wallet_v5r1_transfer_ordinary() {
5253

5354
let transfer = Proto::Transfer {
5455
dest: "EQBe6DtCpJZe8M4t-crMXe93JlEYgSl30S5OUuMSLOfeQfBu".into(),
55-
amount: 10,
56+
amount: U256::encode_be_compact(10),
5657
mode: Proto::SendMode::PAY_FEES_SEPARATELY as u32
5758
| Proto::SendMode::IGNORE_ACTION_PHASE_ERRORS as u32,
5859
bounceable: true,
@@ -87,7 +88,7 @@ fn test_ton_sign_wallet_v5r1_transfer_all_balance() {
8788

8889
let transfer = Proto::Transfer {
8990
dest: "UQAU3o5-Sp1MYRpw3U7b_wmARxqI49LxiFhEoVCxpUKjTYXk".into(),
90-
amount: 0,
91+
amount: U256::encode_be_compact(0),
9192
mode: Proto::SendMode::ATTACH_ALL_CONTRACT_BALANCE as u32
9293
| Proto::SendMode::IGNORE_ACTION_PHASE_ERRORS as u32,
9394
bounceable: true,
@@ -121,7 +122,7 @@ fn test_ton_sign_wallet_v5r1_transfer_all_balance_non_bounceable() {
121122

122123
let transfer = Proto::Transfer {
123124
dest: "UQBe6DtCpJZe8M4t-crMXe93JlEYgSl30S5OUuMSLOfeQa2r".into(),
124-
amount: 0,
125+
amount: U256::encode_be_compact(0),
125126
mode: Proto::SendMode::ATTACH_ALL_CONTRACT_BALANCE as u32
126127
| Proto::SendMode::IGNORE_ACTION_PHASE_ERRORS as u32,
127128
bounceable: false,
@@ -155,7 +156,7 @@ fn test_ton_sign_wallet_v5r1_transfer_with_ascii_comment() {
155156

156157
let transfer = Proto::Transfer {
157158
dest: "EQBe6DtCpJZe8M4t-crMXe93JlEYgSl30S5OUuMSLOfeQfBu".into(),
158-
amount: 10,
159+
amount: U256::encode_be_compact(10),
159160
mode: Proto::SendMode::PAY_FEES_SEPARATELY as u32
160161
| Proto::SendMode::IGNORE_ACTION_PHASE_ERRORS as u32,
161162
bounceable: true,
@@ -190,7 +191,7 @@ fn test_ton_sign_wallet_v5r1_transfer_with_utf8_comment() {
190191

191192
let transfer = Proto::Transfer {
192193
dest: "EQBe6DtCpJZe8M4t-crMXe93JlEYgSl30S5OUuMSLOfeQfBu".into(),
193-
amount: 10,
194+
amount: U256::encode_be_compact(10),
194195
mode: Proto::SendMode::PAY_FEES_SEPARATELY as u32
195196
| Proto::SendMode::IGNORE_ACTION_PHASE_ERRORS as u32,
196197
bounceable: true,
@@ -226,17 +227,17 @@ fn test_ton_sign_wallet_v5r1_transfer_jettons() {
226227
let jetton_transfer = Proto::JettonTransfer {
227228
query_id: 69,
228229
// Transfer 0.12 USDT (decimal precision is 6).
229-
jetton_amount: 120000,
230+
jetton_amount: U256::encode_be_compact(120000),
230231
to_owner: "UQAU3o5-Sp1MYRpw3U7b_wmARxqI49LxiFhEoVCxpUKjTYXk".into(),
231232
// Send unused toncoins back to sender.
232233
response_address: "UQCh41gQP1A4I0lnAn6yAfitDAIYpXG6UFIXqeSz1TVxNOJ_".into(),
233-
forward_amount: 1,
234+
forward_amount: U256::encode_be_compact(1),
234235
..Default::default()
235236
};
236237

237238
let transfer = Proto::Transfer {
238239
dest: "EQDg4AjfaxQBVsUFueenkKlHLhhYWrcBvCEzbEgfrT0nxuGC".into(),
239-
amount: 100 * 1000 * 1000,
240+
amount: U256::encode_be_compact(100 * 1000 * 1000),
240241
mode: Proto::SendMode::PAY_FEES_SEPARATELY as u32
241242
| Proto::SendMode::IGNORE_ACTION_PHASE_ERRORS as u32,
242243
bounceable: true,
@@ -272,17 +273,17 @@ fn test_ton_sign_wallet_v5r1_transfer_jettons_with_comment() {
272273
let jetton_transfer = Proto::JettonTransfer {
273274
query_id: 0,
274275
// Transfer 0.11 USDT (decimal precision is 6).
275-
jetton_amount: 110000,
276+
jetton_amount: U256::encode_be_compact(110000),
276277
to_owner: "UQAU3o5-Sp1MYRpw3U7b_wmARxqI49LxiFhEoVCxpUKjTYXk".into(),
277278
// Send unused toncoins back to sender.
278279
response_address: "UQCh41gQP1A4I0lnAn6yAfitDAIYpXG6UFIXqeSz1TVxNOJ_".into(),
279-
forward_amount: 1,
280+
forward_amount: U256::encode_be_compact(1),
280281
..Default::default()
281282
};
282283

283284
let transfer = Proto::Transfer {
284285
dest: "EQDg4AjfaxQBVsUFueenkKlHLhhYWrcBvCEzbEgfrT0nxuGC".into(),
285-
amount: 100 * 1000 * 1000,
286+
amount: U256::encode_be_compact(100 * 1000 * 1000),
286287
mode: Proto::SendMode::PAY_FEES_SEPARATELY as u32
287288
| Proto::SendMode::IGNORE_ACTION_PHASE_ERRORS as u32,
288289
bounceable: true,
@@ -320,7 +321,7 @@ fn test_ton_sign_wallet_v5r1_transfer_custom_payload() {
320321
let transfer = Proto::Transfer {
321322
dest: "UQAU3o5-Sp1MYRpw3U7b_wmARxqI49LxiFhEoVCxpUKjTYXk".into(),
322323
// 0.00025 TON
323-
amount: 250_000,
324+
amount: U256::encode_be_compact(250_000),
324325
mode: Proto::SendMode::PAY_FEES_SEPARATELY as u32
325326
| Proto::SendMode::IGNORE_ACTION_PHASE_ERRORS as u32,
326327
bounceable: true,
@@ -371,7 +372,7 @@ fn test_ton_sign_wallet_v5r1_transfer_custom_payload_with_state_init() {
371372
let transfer = Proto::Transfer {
372373
dest: doge_contract_address.into(),
373374
// 0.0069 TON
374-
amount: 6_900_000,
375+
amount: U256::encode_be_compact(6_900_000),
375376
mode: Proto::SendMode::PAY_FEES_SEPARATELY as u32
376377
| Proto::SendMode::IGNORE_ACTION_PHASE_ERRORS as u32,
377378
bounceable: false,
@@ -409,7 +410,7 @@ fn test_ton_sign_wallet_v5r1_missing_required_send_mode() {
409410

410411
let transfer = Proto::Transfer {
411412
dest: "EQBe6DtCpJZe8M4t-crMXe93JlEYgSl30S5OUuMSLOfeQfBu".into(),
412-
amount: 10,
413+
amount: U256::encode_be_compact(10),
413414
// Proto::SendMode::IGNORE_ACTION_PHASE_ERRORS is required for wallet v5r1 external messages.
414415
mode: Proto::SendMode::PAY_FEES_SEPARATELY as u32,
415416
bounceable: true,
@@ -438,17 +439,17 @@ fn test_ton_sign_wallet_v5r1_mintless_jetton() {
438439
let jetton_transfer = Proto::JettonTransfer {
439440
query_id: 1,
440441
// Transfer 0 mintless jetton to self.
441-
jetton_amount: 0,
442+
jetton_amount: U256::encode_be_compact(0),
442443
to_owner: "UQCh41gQP1A4I0lnAn6yAfitDAIYpXG6UFIXqeSz1TVxNOJ_".into(),
443444
// Send unused toncoins back to sender.
444445
response_address: "UQCh41gQP1A4I0lnAn6yAfitDAIYpXG6UFIXqeSz1TVxNOJ_".into(),
445-
forward_amount: 1,
446+
forward_amount: U256::encode_be_compact(1),
446447
custom_payload: "te6ccgECNQEABJMAAQgN9gLWAQlGA6+1FWXC4ss/wvDOFwMk2bVM97AUEWqaUhh63uWfQ26nAB4CIgWBcAIDBChIAQEZG2ZqtEYGAq27TvzHdGuGrhhKoICBU+Zg9Xq/qRMHGAAdIgEgBQYiASAHCChIAQEV0tdPcZG01smq0thhsmqf9ZzE0QqpP3c+ERvuHF1JDgAbKEgBAf3dO8qdKoPys7AWvavs1wMNWCOq5XashXaRopmksx/LABsiASAJCiIBIAsMKEgBAWP0xUs9JBrfQRl1FkF2tIfIDYpwLdf3fXqMi6BqxNtmABoiASANDihIAQFOErI5E7ld/nTAgHXdGI74UH8kxIaFyAkH42P54tEC9QAYIgEgDxAoSAEBrF16Czdlg18FB467CrR6Ucwxb8H+Z1e4qDeFWbkz1WEAFyIBIBESKEgBAXeWzg9xTFO6z0FP+axi8Njuxxp0zPrAUs4vnmt/dE3xABYoSAEBEZ7KazNpaWJoInmqO4II/AfncyhMNWxh6BE2qFU7/9wAFCIBIBMUKEgBAZleZTNXbgCF+8G08kiQeDPanQtNCVakzEU3g9GKB+K2ABQiASAVFihIAQFeCM83J7sm36g24qFeEDvStahHWn6SsEk+Wii49rzBiAASIgEgFxgoSAEBfV9jrgSeiAKVqeeLliXdoLrxFWe2HK0f4SG5h4kfb8YAESIBIBkaIgEgGxwoSAEBImHhXIbOHuOnOgE5f0KLqoXDB7/ZLQQGiHysuulUq2IAECIBIB0eKEgBAXT+qb5w1+qtvbJ1Fbn8y6IhO85YfxKIgKBga6ROO/yQAA8iASAfIChIAQGoJHXWXWRQGZdP9xIUrMowhvgnf+CwKTIIOBxlDiKgcAANKEgBAZ6tCuDr89HFRz3WwwK+wW4XmkE+O7Hf+NgUDI+uqnAJAAwiASAhIihIAQHtasTLBAw7MZHpRTsKyC47E1PZ/LAtF3n2Y2b5ThX0VgALIgEgIyQiASAlJihIAQGumGRf7UXrpK12Cuvj06565IC0Kbd4i2XoG6dnqC+uQAAJKEgBAXM19HUUkz6ns7o/2x45kQ2iLj8gl3zYhrAhISEUg0O1AAgiASAnKCIBICkqKEgBAa7kNA+lev+Z5T/xqKBbO648BvnLL6/hAp1auOiZTWRhAAcoSAEBxn19AKZGAUPYWs8pTpNQrCB4Ap0KfzyjOgB1Mc9PbIUABSIBICssKEgBAWarrCPqSS6+lq6NRcrWZ2/v6bN4b6Zd3GWAtN6j8a6BAAQiASAtLiIBIC8wKEgBAXYYqhLZ1tHg+HdKd8vLmTBsojkj61ZiafXB7pOt+hEFAAMiASAxMihIAQHt8p6qBiXtz+kKcgo13Udyh7Uo8irrdKlSSY2dOdALogAAIgFIMzQoSAEByacrlqsAKiFOlv4Rp4V1gNg2i4aVPkcHJq8Vug/89k4AAABduZA/UDgjSWcCfrIB+K0MAhilcbpQUhep5LPVNXE0Q7msoAAABm4N2AAABm9VrQgoSAEByIAktH0CNxT//QZ8Vgj68CApZON9XBKDfE0D2rY8Fx4AAA==".into()
447448
};
448449

449450
let transfer = Proto::Transfer {
450451
dest: "UQCn2lssMz09Gn60mBnv544DgiqIX3mK5cqGEPEPKxCNbE0E".into(), // jetton wallet address
451-
amount: 90 * 1000 * 1000, // 0.09 TON as fee
452+
amount: U256::encode_be_compact(90 * 1000 * 1000), // 0.09 TON as fee
452453
mode: Proto::SendMode::PAY_FEES_SEPARATELY as u32
453454
| Proto::SendMode::IGNORE_ACTION_PHASE_ERRORS as u32,
454455
bounceable: true,

0 commit comments

Comments
 (0)