-
Notifications
You must be signed in to change notification settings - Fork 522
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: add support for Batch amendment #2801
base: main
Are you sure you want to change the base?
Changes from all commits
4803cdc
84c8900
6ca94b7
810bc42
dce0947
bac69ca
7866790
768eb08
8df48e2
e1747a9
9d69271
78e3d05
dc98b1b
fe08836
4fe1986
e696113
ab8d1b1
66dc844
25ccc09
7597807
ef4ab32
762e57e
28bce04
f671532
9643508
e743ddc
826fff8
ab09e38
a4b55e2
7d7acae
8fc2600
0d86085
438a9d2
591af47
9b8c819
78e3ad9
4e3a5fb
7fb9927
447c747
4d84930
f120ea6
1772b45
009e98f
211d46a
ff9929c
29991c2
fcd579a
3818b29
7212c5e
39c7ef5
3903599
e5f5d3c
ec24418
f8376eb
260bc32
bf19d12
6b03f91
6d63995
4a22d5b
e084f43
0d08deb
f427bc4
2280b95
a5d72f9
08543fc
d243ecc
503cf6c
b3b2c4c
b092a94
c48957d
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -177,11 +177,50 @@ function multiSigningData( | |||||||||||||||||||
}) | ||||||||||||||||||||
} | ||||||||||||||||||||
|
||||||||||||||||||||
/** | ||||||||||||||||||||
* Interface describing fields required for a Batch signer | ||||||||||||||||||||
*/ | ||||||||||||||||||||
interface BatchObject extends JsonObject { | ||||||||||||||||||||
flags: number | ||||||||||||||||||||
txIDs: string[] | ||||||||||||||||||||
} | ||||||||||||||||||||
|
||||||||||||||||||||
/** | ||||||||||||||||||||
* Serialize a signingClaim | ||||||||||||||||||||
* | ||||||||||||||||||||
* @param batch A Batch object to serialize | ||||||||||||||||||||
* @param opts.definitions Custom rippled types to use instead of the default. Used for sidechains and amendments. | ||||||||||||||||||||
* @returns the serialized object with appropriate prefix | ||||||||||||||||||||
*/ | ||||||||||||||||||||
function signingBatchData(batch: BatchObject): Uint8Array { | ||||||||||||||||||||
if (batch.flags == null) { | ||||||||||||||||||||
throw Error("No field `flags'") | ||||||||||||||||||||
} | ||||||||||||||||||||
if (batch.txIDs == null) { | ||||||||||||||||||||
throw Error('No field `txIDs`') | ||||||||||||||||||||
} | ||||||||||||||||||||
const prefix = HashPrefix.batch | ||||||||||||||||||||
const flags = coreTypes.UInt32.from(batch.flags).toBytes() | ||||||||||||||||||||
const txIDsLength = coreTypes.UInt32.from(batch.txIDs.length).toBytes() | ||||||||||||||||||||
|
||||||||||||||||||||
const bytesList = new BytesList() | ||||||||||||||||||||
|
||||||||||||||||||||
bytesList.put(prefix) | ||||||||||||||||||||
bytesList.put(flags) | ||||||||||||||||||||
bytesList.put(txIDsLength) | ||||||||||||||||||||
batch.txIDs.forEach((txID: string) => { | ||||||||||||||||||||
bytesList.put(coreTypes.Hash256.from(txID).toBytes()) | ||||||||||||||||||||
}) | ||||||||||||||||||||
Comment on lines
+211
to
+213
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Add validation for txIDs format. The function should validate the format of each txID before serialization. Add validation: batch.txIDs.forEach((txID: string) => {
+ if (!/^[A-F0-9]{64}$/i.test(txID)) {
+ throw new Error(`Invalid transaction ID format: ${txID}`)
+ }
bytesList.put(coreTypes.Hash256.from(txID).toBytes())
}) 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||
|
||||||||||||||||||||
return bytesList.toBytes() | ||||||||||||||||||||
} | ||||||||||||||||||||
|
||||||||||||||||||||
export { | ||||||||||||||||||||
BinaryParser, | ||||||||||||||||||||
BinarySerializer, | ||||||||||||||||||||
BytesList, | ||||||||||||||||||||
ClaimObject, | ||||||||||||||||||||
BatchObject, | ||||||||||||||||||||
makeParser, | ||||||||||||||||||||
serializeObject, | ||||||||||||||||||||
readJSON, | ||||||||||||||||||||
|
@@ -191,4 +230,5 @@ export { | |||||||||||||||||||
binaryToJSON, | ||||||||||||||||||||
sha512Half, | ||||||||||||||||||||
transactionID, | ||||||||||||||||||||
signingBatchData, | ||||||||||||||||||||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add return type annotation and opts parameter.
The function signature should follow the pattern of other signing functions in this file.
Update the signature: