Compare commits

...

5 Commits

Author SHA1 Message Date
Denis Angell
edc11a1f88 Publish
- @transia/ripple-binary-codec@1.4.6-alpha.3
 - @transia/xrpl@2.7.3-alpha.12
2023-09-26 09:05:42 +02:00
Denis Angell
7c81f14ebf bump new field def test 2023-09-26 09:04:42 +02:00
Denis Angell
37b4848023 lint 2023-09-26 09:04:33 +02:00
Denis Angell
2de5da180e Update definitions.json 2023-09-26 08:59:46 +02:00
Denis Angell
659c5c7a22 add claim reward 2023-09-26 08:48:14 +02:00
8 changed files with 230 additions and 6 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "@transia/ripple-binary-codec",
"version": "1.4.6-alpha.2",
"version": "1.4.6-alpha.3",
"description": "XRP Ledger binary codec",
"files": [
"dist/*",

View File

@@ -37,6 +37,7 @@
"LedgerHashes": 104,
"Amendments": 102,
"FeeSettings": 115,
"ImportVlseq": 73,
"Escrow": 117,
"PayChannel": 120,
"Check": 67,
@@ -796,6 +797,16 @@
"type": "UInt32"
}
],
[
"XahauActivationLgrSeq",
{
"nth": 96,
"isVLEncoded": false,
"isSerialized": true,
"isSigningField": true,
"type": "UInt32"
}
],
[
"ImportSequence",
{
@@ -806,6 +817,36 @@
"type": "UInt32"
}
],
[
"RewardTime",
{
"nth": 98,
"isVLEncoded": false,
"isSerialized": true,
"isSigningField": true,
"type": "UInt32"
}
],
[
"RewardLgrFirst",
{
"nth": 99,
"isVLEncoded": false,
"isSerialized": true,
"isSigningField": true,
"type": "UInt32"
}
],
[
"RewardLgrLast",
{
"nth": 100,
"isVLEncoded": false,
"isSerialized": true,
"isSigningField": true,
"type": "UInt32"
}
],
[
"IndexNext",
{
@@ -966,6 +1007,36 @@
"type": "UInt64"
}
],
[
"AccountIndex",
{
"nth": 98,
"isVLEncoded": false,
"isSerialized": true,
"isSigningField": true,
"type": "UInt64"
}
],
[
"AccountCount",
{
"nth": 99,
"isVLEncoded": false,
"isSerialized": true,
"isSigningField": true,
"type": "UInt64"
}
],
[
"RewardAccumulator",
{
"nth": 100,
"isVLEncoded": false,
"isSerialized": true,
"isSigningField": true,
"type": "UInt64"
}
],
[
"EmailHash",
{
@@ -1356,6 +1427,36 @@
"type": "Hash256"
}
],
[
"GovernanceFlags",
{
"nth": 99,
"isVLEncoded": false,
"isSerialized": true,
"isSigningField": true,
"type": "Hash256"
}
],
[
"GovernanceMarks",
{
"nth": 98,
"isVLEncoded": false,
"isSerialized": true,
"isSigningField": true,
"type": "Hash256"
}
],
[
"EmittedTxnID",
{
"nth": 97,
"isVLEncoded": false,
"isSerialized": true,
"isSigningField": true,
"type": "Hash256"
}
],
[
"Amount",
{
@@ -2166,6 +2267,46 @@
"type": "STObject"
}
],
[
"GenesisMint",
{
"nth": 96,
"isVLEncoded": false,
"isSerialized": true,
"isSigningField": true,
"type": "STObject"
}
],
[
"ActiveValidator",
{
"nth": 95,
"isVLEncoded": false,
"isSerialized": true,
"isSigningField": true,
"type": "STObject"
}
],
[
"ImportVLKey",
{
"nth": 94,
"isVLEncoded": false,
"isSerialized": true,
"isSigningField": true,
"type": "STObject"
}
],
[
"HookEmission",
{
"nth": 93,
"isVLEncoded": false,
"isSerialized": true,
"isSigningField": true,
"type": "STObject"
}
],
[
"Signers",
{
@@ -2305,6 +2446,46 @@
"isSigningField": true,
"type": "STArray"
}
],
[
"GenesisMints",
{
"nth": 96,
"isVLEncoded": false,
"isSerialized": true,
"isSigningField": true,
"type": "STArray"
}
],
[
"ActiveValidators",
{
"nth": 95,
"isVLEncoded": false,
"isSerialized": true,
"isSigningField": true,
"type": "STArray"
}
],
[
"ImportVLKeys",
{
"nth": 94,
"isVLEncoded": false,
"isSerialized": true,
"isSigningField": true,
"type": "STArray"
}
],
[
"HookEmissions",
{
"nth": 93,
"isVLEncoded": false,
"isSerialized": true,
"isSigningField": true,
"type": "STArray"
}
]
],
"TRANSACTION_RESULTS": {
@@ -2399,6 +2580,7 @@
"tefNO_TICKET": -180,
"tefNFTOKEN_IS_NOT_TRANSFERABLE": -179,
"tefPAST_IMPORT_SEQ": -178,
"tefPAST_IMPORT_VL_SEQ": -177,
"terRETRY": -99,
"terFUNDS_SPENT": -98,
@@ -2526,11 +2708,14 @@
"URITokenBuy": 47,
"URITokenCreateSellOffer": 48,
"URITokenCancelSellOffer": 49,
"GenesisMint": 96,
"Import": 97,
"ClaimReward": 98,
"Invoke": 99,
"EnableAmendment": 100,
"SetFee": 101,
"UNLModify": 102,
"EmitFailure": 103
"EmitFailure": 103,
"UNLReport": 104
}
}

View File

@@ -44,7 +44,7 @@ describe('encode and decode using new types as a parameter', function () {
definitions.FIELDS.push([
'NewFieldDefinition',
{
nth: 100,
nth: 101,
isVLEncoded: false,
isSerialized: true,
isSigningField: true,

View File

@@ -1,6 +1,6 @@
{
"name": "@transia/xrpl",
"version": "2.7.3-alpha.11",
"version": "2.7.3-alpha.12",
"license": "ISC",
"description": "A TypeScript/JavaScript API for interacting with the XRP Ledger in Node.js and the browser",
"files": [
@@ -23,7 +23,7 @@
},
"dependencies": {
"@transia/ripple-address-codec": "^4.2.8-alpha.0",
"@transia/ripple-binary-codec": "^1.4.6-alpha.2",
"@transia/ripple-binary-codec": "^1.4.6-alpha.3",
"@transia/ripple-keypairs": "^1.1.8-alpha.0",
"bignumber.js": "^9.0.0",
"bip32": "^2.0.6",

View File

@@ -0,0 +1,28 @@
import { ValidationError } from '../../errors'
import { BaseTransaction, validateBaseTransaction } from './common'
/**
* ClaimReward is a transaction model that allows an account to claim rewards.
*
* @category Transaction Models
*/
export interface ClaimReward extends BaseTransaction {
TransactionType: 'ClaimReward'
/** The unique address of the issuer where the reward.c hook is installed. */
Issuer?: string
}
/**
* Verify the form and type of an ClaimReward at runtime.
*
* @param tx - An ClaimReward Transaction.
* @throws When the ClaimReward is Malformed.
*/
export function validateClaimReward(tx: Record<string, unknown>): void {
validateBaseTransaction(tx)
if (tx.Issuer !== undefined && typeof tx.Issuer !== 'string') {
throw new ValidationError('ClaimReward: invalid Issuer')
}
}

View File

@@ -10,6 +10,7 @@ export { AccountDelete } from './accountDelete'
export { CheckCancel } from './checkCancel'
export { CheckCash } from './checkCash'
export { CheckCreate } from './checkCreate'
export { ClaimReward } from './claimReward'
export { DepositPreauth } from './depositPreauth'
export { EscrowCancel } from './escrowCancel'
export { EscrowCreate } from './escrowCreate'

View File

@@ -9,6 +9,7 @@ import { AccountSet, validateAccountSet } from './accountSet'
import { CheckCancel, validateCheckCancel } from './checkCancel'
import { CheckCash, validateCheckCash } from './checkCash'
import { CheckCreate, validateCheckCreate } from './checkCreate'
import { ClaimReward, validateClaimReward } from './claimReward'
import { DepositPreauth, validateDepositPreauth } from './depositPreauth'
import { EscrowCancel, validateEscrowCancel } from './escrowCancel'
import { EscrowCreate, validateEscrowCreate } from './escrowCreate'
@@ -71,6 +72,7 @@ export type Transaction =
| CheckCancel
| CheckCash
| CheckCreate
| ClaimReward
| DepositPreauth
| EscrowCancel
| EscrowCreate
@@ -146,6 +148,10 @@ export function validate(transaction: Record<string, unknown>): void {
validateCheckCreate(tx)
break
case 'ClaimReward':
validateClaimReward(tx)
break
case 'DepositPreauth':
validateDepositPreauth(tx)
break

View File

@@ -83,7 +83,11 @@ export function hashSignedTx(tx: Transaction | string): string {
txObject = tx
}
if (!txObject.EmitDetails && txObject.TxnSignature === undefined && txObject.Signers === undefined) {
if (
!txObject.EmitDetails &&
txObject.TxnSignature === undefined &&
txObject.Signers === undefined
) {
throw new ValidationError('The transaction must be signed to hash it.')
}