Skip to content

Commit db55a68

Browse files
committed
Calculate inner transaction hash to verify success
1 parent 382a10b commit db55a68

File tree

6 files changed

+226
-129
lines changed

6 files changed

+226
-129
lines changed

_code-samples/batch/js/README.md

Lines changed: 114 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -16,122 +16,132 @@ node singleAccountBatch.js
1616
The script should output the following:
1717

1818
```sh
19-
Funding new wallets from faucet...
20-
Sender: raNwujquxJ7QTLhfbkKN6sZa7RBPHV671e, Balance: 100 XRP
21-
Wallet1: r4JMmKToZRMVT3mGWPnKHFEHsSMQEWigLC, Balance: 100 XRP
22-
Wallet2: rKfPgHASYuttoF1HfU56V31WbJvZn3w8xn, Balance: 100 XRP
19+
=== Funding new wallets from faucet... ===
20+
Sender: rGJVX83Y4XNCzMfCBAiZsQ7eRBBcb2VsQX, Balance: 100 XRP
21+
Wallet1: r2xW4Y66niNopexDXkQy3sMkxeomj9Q16, Balance: 100 XRP
22+
Wallet2: rfBGuCSxGj2NBi1U3MC5CQAFzsPEUXBefc, Balance: 100 XRP
2323

24-
Creating batch transaction:
24+
=== Creating Batch transaction... ===
2525
{
2626
"TransactionType": "Batch",
27-
"Account": "raNwujquxJ7QTLhfbkKN6sZa7RBPHV671e",
27+
"Account": "rGJVX83Y4XNCzMfCBAiZsQ7eRBBcb2VsQX",
2828
"Flags": 65536,
2929
"RawTransactions": [
3030
{
3131
"RawTransaction": {
3232
"TransactionType": "Payment",
33-
"Account": "raNwujquxJ7QTLhfbkKN6sZa7RBPHV671e",
34-
"Destination": "r4JMmKToZRMVT3mGWPnKHFEHsSMQEWigLC",
33+
"Account": "rGJVX83Y4XNCzMfCBAiZsQ7eRBBcb2VsQX",
34+
"Destination": "r2xW4Y66niNopexDXkQy3sMkxeomj9Q16",
3535
"Amount": "2000000",
3636
"Flags": 1073741824
3737
}
3838
},
3939
{
4040
"RawTransaction": {
4141
"TransactionType": "Payment",
42-
"Account": "raNwujquxJ7QTLhfbkKN6sZa7RBPHV671e",
43-
"Destination": "rKfPgHASYuttoF1HfU56V31WbJvZn3w8xn",
42+
"Account": "rGJVX83Y4XNCzMfCBAiZsQ7eRBBcb2VsQX",
43+
"Destination": "rfBGuCSxGj2NBi1U3MC5CQAFzsPEUXBefc",
4444
"Amount": "5000000",
4545
"Flags": 1073741824
4646
}
4747
}
4848
]
4949
}
5050

51-
Submitting batch transaction...
51+
=== Submitting Batch transaction... ===
5252

5353
Batch transaction submitted successfully!
5454
Result:
5555
{
56-
"close_time_iso": "2025-11-03T14:16:21Z",
57-
"ctid": "C00D458B00020002",
58-
"hash": "A93D3C2BDB5D600E592B64B84E66D789237D029267129EBC659EE483E532DD95",
59-
"ledger_hash": "BE6B7C12E551305F09E942D6FA3FC8546F024AE5C53FC495DA6ABF78461E7019",
60-
"ledger_index": 869771,
56+
"close_time_iso": "2025-11-17T11:43:41Z",
57+
"ctid": "C0132FC200010002",
58+
"hash": "4DB409B9ACF4EAD5C3524832915B1A30198AF5B09D9EA214420483A8A17ACC1F",
59+
"ledger_hash": "3E9853C1C2259533ED941C99F5D4F0BBF257D68E8840072300275CD26E0F7FAE",
60+
"ledger_index": 1257410,
6161
"meta": {
6262
"AffectedNodes": [
6363
{
6464
"ModifiedNode": {
6565
"FinalFields": {
66-
"Account": "raNwujquxJ7QTLhfbkKN6sZa7RBPHV671e",
66+
"Account": "rGJVX83Y4XNCzMfCBAiZsQ7eRBBcb2VsQX",
6767
"Balance": "99999996",
6868
"Flags": 0,
6969
"OwnerCount": 0,
70-
"Sequence": 869767
70+
"Sequence": 1257406
7171
},
7272
"LedgerEntryType": "AccountRoot",
73-
"LedgerIndex": "6238B6901FEBD1492C03546C7965A01F184C4E37B696304B86F78F4ADB7831B1",
73+
"LedgerIndex": "CC3A981D8CAA4EF12265CDC40A96DFC182A070E20DC17BC12CEE458F0117EFA9",
7474
"PreviousFields": {
7575
"Balance": "100000000",
76-
"Sequence": 869766
76+
"Sequence": 1257405
7777
},
78-
"PreviousTxnID": "559F102041D84FF9DA17483355C3C96A0F8923D9C9C7971BBB15C972DD1F37D6",
79-
"PreviousTxnLgrSeq": 869766
78+
"PreviousTxnID": "7CCB1557092D79D41C7C306805E64DFFD26E57EE3F823AF171C2AD06CBF63D43",
79+
"PreviousTxnLgrSeq": 1257405
8080
}
8181
}
8282
],
83-
"TransactionIndex": 2,
83+
"TransactionIndex": 1,
8484
"TransactionResult": "tesSUCCESS"
8585
},
8686
"tx_json": {
87-
"Account": "raNwujquxJ7QTLhfbkKN6sZa7RBPHV671e",
87+
"Account": "rGJVX83Y4XNCzMfCBAiZsQ7eRBBcb2VsQX",
8888
"Fee": "4",
8989
"Flags": 65536,
90-
"LastLedgerSequence": 869789,
90+
"LastLedgerSequence": 1257428,
9191
"RawTransactions": [
9292
{
9393
"RawTransaction": {
94-
"Account": "raNwujquxJ7QTLhfbkKN6sZa7RBPHV671e",
94+
"Account": "rGJVX83Y4XNCzMfCBAiZsQ7eRBBcb2VsQX",
9595
"Amount": "2000000",
96-
"Destination": "r4JMmKToZRMVT3mGWPnKHFEHsSMQEWigLC",
96+
"Destination": "r2xW4Y66niNopexDXkQy3sMkxeomj9Q16",
9797
"Fee": "0",
9898
"Flags": 1073741824,
99-
"Sequence": 869767,
99+
"Sequence": 1257406,
100100
"SigningPubKey": "",
101101
"TransactionType": "Payment"
102102
}
103103
},
104104
{
105105
"RawTransaction": {
106-
"Account": "raNwujquxJ7QTLhfbkKN6sZa7RBPHV671e",
106+
"Account": "rGJVX83Y4XNCzMfCBAiZsQ7eRBBcb2VsQX",
107107
"Amount": "5000000",
108-
"Destination": "rKfPgHASYuttoF1HfU56V31WbJvZn3w8xn",
108+
"Destination": "rfBGuCSxGj2NBi1U3MC5CQAFzsPEUXBefc",
109109
"Fee": "0",
110110
"Flags": 1073741824,
111-
"Sequence": 869768,
111+
"Sequence": 1257407,
112112
"SigningPubKey": "",
113113
"TransactionType": "Payment"
114114
}
115115
}
116116
],
117-
"Sequence": 869766,
118-
"SigningPubKey": "EDFECFB87A29F93E52BBA0BA5A14A59B520BB0E39F33943A2FDC1101D34349270D",
117+
"Sequence": 1257405,
118+
"SigningPubKey": "EDEF11EBCD1AE9ADAF20815FD558ED9281E7BAF209A21E4739AD8EC6C57104686B",
119119
"TransactionType": "Batch",
120-
"TxnSignature": "E08E300BDE1700C7CC27F3DA9B784907F637518E1C7E0978E57BFE5D1511A3B6A4269235FC2D9EAA550182A5F2B59415A442CE59555B9B9A0A79AB4030C9F701",
121-
"ctid": "C00D458B00020002",
122-
"date": 815494581,
123-
"ledger_index": 869771
120+
"TxnSignature": "9A79D3F40AD7EECC91CB75700C1EFA1BE10A31AE0EE293EA06AA33E9F42A79220F9BEE2DD7374CCF6957B4F3F00F4C0321DF3C73825B51C6EF8E6AEC484BBC08",
121+
"ctid": "C0132FC200010002",
122+
"date": 816695021,
123+
"ledger_index": 1257410
124124
},
125125
"validated": true
126126
}
127127

128-
Final balances after batch transaction:
129-
Sender: raNwujquxJ7QTLhfbkKN6sZa7RBPHV671e, Balance: 92.999996 XRP
130-
Wallet1: r4JMmKToZRMVT3mGWPnKHFEHsSMQEWigLC, Balance: 102 XRP
131-
Wallet2: rKfPgHASYuttoF1HfU56V31WbJvZn3w8xn, Balance: 105 XRP
128+
=== Verifying inner transactions... ===
132129

133-
Transaction URL:
134-
https://devnet.xrpl.org/transactions/A93D3C2BDB5D600E592B64B84E66D789237D029267129EBC659EE483E532DD95
130+
Transaction 1 hash: 0B9650AD3DE1D8A4E49F235AFF9DFD8DF6E44993EC5F2D53F9CEB24A7C3C59DD
131+
- Status: tesSUCCESS (Ledger 1257410)
132+
- Transaction URL: https://devnet.xrpl.org/transactions/0B9650AD3DE1D8A4E49F235AFF9DFD8DF6E44993EC5F2D53F9CEB24A7C3C59DD
133+
134+
Transaction 2 hash: E90C64199C5EC69F2D48A9047850829AADB40AE7483114EB4E39F1E4C8CF1712
135+
- Status: tesSUCCESS (Ledger 1257410)
136+
- Transaction URL: https://devnet.xrpl.org/transactions/E90C64199C5EC69F2D48A9047850829AADB40AE7483114EB4E39F1E4C8CF1712
137+
138+
=== Final balances ===
139+
Sender: rGJVX83Y4XNCzMfCBAiZsQ7eRBBcb2VsQX, Balance: 92.999996 XRP
140+
Wallet1: r2xW4Y66niNopexDXkQy3sMkxeomj9Q16, Balance: 102 XRP
141+
Wallet2: rfBGuCSxGj2NBi1U3MC5CQAFzsPEUXBefc, Balance: 105 XRP
142+
143+
Batch transaction URL:
144+
https://devnet.xrpl.org/transactions/4DB409B9ACF4EAD5C3524832915B1A30198AF5B09D9EA214420483A8A17ACC1F
135145
```
136146

137147
## Multi-Account Batch Transaction
@@ -144,138 +154,148 @@ node multiAccountBatch.js
144154
The script should output the following:
145155

146156
```sh
147-
Funding new wallets from faucet...
148-
Alice: rfCBfRGpcGJLwdbfz1M6HYoAL8nZyHRHHa, Balance: 100 XRP
149-
Bob: rKPUDuS2jQNpAMhkNncqC9rKJDpL2gXDN7, Balance: 100 XRP
150-
Charlie: rnz3Da7phfR6tgTZoPYF5psYTiHTshTB8K, Balance: 100 XRP
151-
Third-party wallet: rU8LsCmVjSdf7hSmiGBtBDtt2WhHxp7Zpc, Balance: 100 XRP
157+
=== Funding new wallets from faucet... ===
158+
Alice: r98RVomTFb3dhVXkJbf9Q1qQea7jTK5uoU, Balance: 100 XRP
159+
Bob: rJwE3a9sewuumLrxmqTMuDrMmufZePxiaZ, Balance: 100 XRP
160+
Charlie: rPC8xPf5gfbDeaz48Xf3642dGgX24VPmKD, Balance: 100 XRP
161+
Third-party wallet: rKVW25NNjye1ML9cqoLFMpaUF96rNguM7y, Balance: 100 XRP
152162

153-
Creating batch transaction:
163+
=== Creating Batch transaction... ===
154164
{
155165
"TransactionType": "Batch",
156-
"Account": "rU8LsCmVjSdf7hSmiGBtBDtt2WhHxp7Zpc",
166+
"Account": "rKVW25NNjye1ML9cqoLFMpaUF96rNguM7y",
157167
"Flags": 65536,
158168
"RawTransactions": [
159169
{
160170
"RawTransaction": {
161171
"TransactionType": "Payment",
162-
"Account": "rnz3Da7phfR6tgTZoPYF5psYTiHTshTB8K",
163-
"Destination": "rfCBfRGpcGJLwdbfz1M6HYoAL8nZyHRHHa",
172+
"Account": "rPC8xPf5gfbDeaz48Xf3642dGgX24VPmKD",
173+
"Destination": "r98RVomTFb3dhVXkJbf9Q1qQea7jTK5uoU",
164174
"Amount": "50000000",
165175
"Flags": 1073741824
166176
}
167177
},
168178
{
169179
"RawTransaction": {
170180
"TransactionType": "Payment",
171-
"Account": "rKPUDuS2jQNpAMhkNncqC9rKJDpL2gXDN7",
172-
"Destination": "rfCBfRGpcGJLwdbfz1M6HYoAL8nZyHRHHa",
181+
"Account": "rJwE3a9sewuumLrxmqTMuDrMmufZePxiaZ",
182+
"Destination": "r98RVomTFb3dhVXkJbf9Q1qQea7jTK5uoU",
173183
"Amount": "50000000",
174184
"Flags": 1073741824
175185
}
176186
}
177187
]
178188
}
179189

180-
Submitting batch transaction...
190+
=== Submitting Batch transaction... ===
181191

182192
Batch transaction submitted successfully!
183193
Result:
184194
{
185-
"close_time_iso": "2025-11-03T14:15:00Z",
186-
"ctid": "C00D457000000002",
187-
"hash": "8CBCCD88B8ABC248797B84ABB92066961C1CB5FE75ACE2115ADCA6B74C85993A",
188-
"ledger_hash": "2217A0DBB38B870187B412533B939724095359A050B21E071A2A114BF57CFB60",
189-
"ledger_index": 869744,
195+
"close_time_iso": "2025-11-17T11:45:23Z",
196+
"ctid": "C0132FE300010002",
197+
"hash": "07F7B63E7D29233FC6966AC8FFCE7C74D6167405AF9C8AD32C0C9B7FDFAA86BA",
198+
"ledger_hash": "5EB244BED6036605B8931DB53448140DF2369FF3ED8F847E58B4CCE94C217414",
199+
"ledger_index": 1257443,
190200
"meta": {
191201
"AffectedNodes": [
192202
{
193203
"ModifiedNode": {
194204
"FinalFields": {
195-
"Account": "rU8LsCmVjSdf7hSmiGBtBDtt2WhHxp7Zpc",
205+
"Account": "rKVW25NNjye1ML9cqoLFMpaUF96rNguM7y",
196206
"Balance": "99999994",
197207
"Flags": 0,
198208
"OwnerCount": 0,
199-
"Sequence": 869743
209+
"Sequence": 1257442
200210
},
201211
"LedgerEntryType": "AccountRoot",
202-
"LedgerIndex": "1E9BA043B9C6518582D0FF73A08DCD8B6958195735086CF7295E5EB6433FB453",
212+
"LedgerIndex": "67A4B4B36E4A595651379389ADF5C28A269BD760F69DB4E8A5E0A58F3F50BB40",
203213
"PreviousFields": {
204214
"Balance": "100000000",
205-
"Sequence": 869742
215+
"Sequence": 1257441
206216
},
207-
"PreviousTxnID": "F7019BC55D80438FDDB01C2549CCC3F7DAF9791F8645E0269D63979EAEC5BBA6",
208-
"PreviousTxnLgrSeq": 869742
217+
"PreviousTxnID": "48102E5EBC694A29A434A5E262DD0844D6C8AB47FAEEB001B8A7A8F6945E4A48",
218+
"PreviousTxnLgrSeq": 1257441
209219
}
210220
}
211221
],
212-
"TransactionIndex": 0,
222+
"TransactionIndex": 1,
213223
"TransactionResult": "tesSUCCESS"
214224
},
215225
"tx_json": {
216-
"Account": "rU8LsCmVjSdf7hSmiGBtBDtt2WhHxp7Zpc",
226+
"Account": "rKVW25NNjye1ML9cqoLFMpaUF96rNguM7y",
217227
"BatchSigners": [
218228
{
219229
"BatchSigner": {
220-
"Account": "rnz3Da7phfR6tgTZoPYF5psYTiHTshTB8K",
221-
"SigningPubKey": "EDC566D7DA8186BBD30DDAE1FB770FCE7F248949194E1A2E70B18CFA060B140B59",
222-
"TxnSignature": "31639BFA1359DD24345776EAEEACCF61C1CDC792988679263D113E80A22D837E20ACD2B25E482FCA769990C004D747836370C6BAD14524559639BBEBA5813002"
230+
"Account": "rJwE3a9sewuumLrxmqTMuDrMmufZePxiaZ",
231+
"SigningPubKey": "ED34C452CAFD52FDA1C3250F19FAD448546B8FA369650AB86CC76D54B76B43DAC3",
232+
"TxnSignature": "C40159FD639D7E02EEE9E1F3113887D5C52F8AEDD128E618A6F5B83ADC5F518403248083623105A476EC32CD9B9CEBC5F105FDA43B0441D0F05D8975FBE9FC05"
223233
}
224234
},
225235
{
226236
"BatchSigner": {
227-
"Account": "rKPUDuS2jQNpAMhkNncqC9rKJDpL2gXDN7",
228-
"SigningPubKey": "EDEF1966B325000407940E4C0792E3CCC3E27F51D132BDC53DCC2B1998E7C32A34",
229-
"TxnSignature": "6BF9860B0E2E134FB302329D711BAA7B6314395D39523982DBBC037E84FB17AB5E8E736DB3DB0019B4477686AF2D91E5D2B49409698A95219376B2E318D3E501"
237+
"Account": "rPC8xPf5gfbDeaz48Xf3642dGgX24VPmKD",
238+
"SigningPubKey": "EDEEBFF46B1C37F7D94929F8E264B36B0D4BFD5CBA9B6196747997C4EA4B229BD5",
239+
"TxnSignature": "3464B995E2A59A476B697606C0B13BABEA4DE8BE94DFE962C5F0FC888E958F358CFE0CFE043485C79B89365D79A68A89827471EC1BA868642F0458D0BFCADB09"
230240
}
231241
}
232242
],
233243
"Fee": "6",
234244
"Flags": 65536,
235-
"LastLedgerSequence": 869762,
245+
"LastLedgerSequence": 1257461,
236246
"RawTransactions": [
237247
{
238248
"RawTransaction": {
239-
"Account": "rnz3Da7phfR6tgTZoPYF5psYTiHTshTB8K",
249+
"Account": "rPC8xPf5gfbDeaz48Xf3642dGgX24VPmKD",
240250
"Amount": "50000000",
241-
"Destination": "rfCBfRGpcGJLwdbfz1M6HYoAL8nZyHRHHa",
251+
"Destination": "r98RVomTFb3dhVXkJbf9Q1qQea7jTK5uoU",
242252
"Fee": "0",
243253
"Flags": 1073741824,
244-
"Sequence": 869740,
254+
"Sequence": 1257439,
245255
"SigningPubKey": "",
246256
"TransactionType": "Payment"
247257
}
248258
},
249259
{
250260
"RawTransaction": {
251-
"Account": "rKPUDuS2jQNpAMhkNncqC9rKJDpL2gXDN7",
261+
"Account": "rJwE3a9sewuumLrxmqTMuDrMmufZePxiaZ",
252262
"Amount": "50000000",
253-
"Destination": "rfCBfRGpcGJLwdbfz1M6HYoAL8nZyHRHHa",
263+
"Destination": "r98RVomTFb3dhVXkJbf9Q1qQea7jTK5uoU",
254264
"Fee": "0",
255265
"Flags": 1073741824,
256-
"Sequence": 869738,
266+
"Sequence": 1257437,
257267
"SigningPubKey": "",
258268
"TransactionType": "Payment"
259269
}
260270
}
261271
],
262-
"Sequence": 869742,
263-
"SigningPubKey": "ED2B56D6FB4E8C236A6B07E8D8AD9A4938606144E31779918F99525CA6B3C56664",
272+
"Sequence": 1257441,
273+
"SigningPubKey": "EDFC40C4A0422811F4DF073D4EB641F3CEA516650E21C578695F3B0F8D35469EAE",
264274
"TransactionType": "Batch",
265-
"TxnSignature": "9C51C1F2CB0E8BCEA1FADD3992249DE72AC46FC86AB2FB023A597FBD5C4CCB3337967E9AAFFB5F1C0CBC91128F3FD194F78F207E461BE1FF906C496B94EC410E",
266-
"ctid": "C00D457000000002",
267-
"date": 815494500,
268-
"ledger_index": 869744
275+
"TxnSignature": "29941E32B23267D32961A8861293A354658E98CE49632BA1ED16270311C9680992CF2E0929004F6E8CE5661068C2715DF1CE54C39D12F7DEC933F0A34C7C5B05",
276+
"ctid": "C0132FE300010002",
277+
"date": 816695123,
278+
"ledger_index": 1257443
269279
},
270280
"validated": true
271281
}
272282

273-
Final balances after batch transaction:
274-
Alice: rfCBfRGpcGJLwdbfz1M6HYoAL8nZyHRHHa, Balance: 200 XRP
275-
Bob: rKPUDuS2jQNpAMhkNncqC9rKJDpL2gXDN7, Balance: 50 XRP
276-
Charlie: rnz3Da7phfR6tgTZoPYF5psYTiHTshTB8K, Balance: 50 XRP
277-
Third-party wallet: rU8LsCmVjSdf7hSmiGBtBDtt2WhHxp7Zpc, Balance: 99.999994 XRP
283+
=== Verifying inner transactions ===
284+
285+
Transaction 1 hash: 7F95734E3A0ACDB1E3DF2A8F0A426D8CA44C5F9B4A87C0972DDE9584A98544EB
286+
- Status: tesSUCCESS (Ledger 1257443)
287+
- Transaction URL: https://devnet.xrpl.org/transactions/7F95734E3A0ACDB1E3DF2A8F0A426D8CA44C5F9B4A87C0972DDE9584A98544EB
288+
289+
Transaction 2 hash: 3E73E5F51A36464799B8ACDCD44CCB4711396BDBF30D0C4689A5DD0755517A3F
290+
- Status: tesSUCCESS (Ledger 1257443)
291+
- Transaction URL: https://devnet.xrpl.org/transactions/3E73E5F51A36464799B8ACDCD44CCB4711396BDBF30D0C4689A5DD0755517A3F
292+
293+
=== Final balances ===
294+
Alice: r98RVomTFb3dhVXkJbf9Q1qQea7jTK5uoU, Balance: 200 XRP
295+
Bob: rJwE3a9sewuumLrxmqTMuDrMmufZePxiaZ, Balance: 50 XRP
296+
Charlie: rPC8xPf5gfbDeaz48Xf3642dGgX24VPmKD, Balance: 50 XRP
297+
Third-party wallet: rKVW25NNjye1ML9cqoLFMpaUF96rNguM7y, Balance: 99.999994 XRP
278298

279-
Transaction URL:
280-
https://devnet.xrpl.org/transactions/8CBCCD88B8ABC248797B84ABB92066961C1CB5FE75ACE2115ADCA6B74C85993A
299+
Batch transaction URL:
300+
https://devnet.xrpl.org/transactions/07F7B63E7D29233FC6966AC8FFCE7C74D6167405AF9C8AD32C0C9B7FDFAA86BA
281301
```

0 commit comments

Comments
 (0)