Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
0681e0a
models and integration tests for Dynamic MPTs (XLS-94D)
ckeshava Sep 15, 2025
ad316b7
unit tests suggested by rabbit
ckeshava Sep 16, 2025
fd1513d
fix linter errors
ckeshava Sep 16, 2025
2a56be3
Merge branch 'main' into xls-94d
ckeshava Sep 16, 2025
29b8e80
Merge branch 'main' into xls-94d
ckeshava Sep 16, 2025
058ad5b
updated flages in Dynamic MPT amendment to use tmf and lmf prefixes
ckeshava Sep 22, 2025
1e0aaa0
add Github Actions step to inspect Docker containter
ckeshava Sep 22, 2025
fc51d7e
helpful message in Github Actions output
ckeshava Sep 22, 2025
b792695
reorder the conditions
ckeshava Sep 22, 2025
7e2e712
Github Actions: include docker-inspect command to investigate the con…
ckeshava Sep 22, 2025
0876e86
Merge branch 'main' into xls-94d
ckeshava Sep 25, 2025
0e07910
Merge branch 'main' into xls-94d
ckeshava Sep 29, 2025
02d4a96
simplify Github Actions steps
ckeshava Sep 29, 2025
d6ec04a
fix: rectify the syntax error in bash script
ckeshava Sep 29, 2025
bda0c2e
additional comments for MPToken transaction flags
ckeshava Sep 30, 2025
cbdcbc3
Additional validation on sfMutableFlags field for MPTokenIssuance(Cre…
ckeshava Sep 30, 2025
565402b
Rename ledger flags corresponding to rippled commit: 8e4fda160d9fb66d…
ckeshava Sep 30, 2025
747bfd2
Merge branch 'main' into xls-94d
ckeshava Oct 6, 2025
ce16616
address Phu comment: Introduce distinct MutableFlags interface
ckeshava Oct 6, 2025
42049ac
address Phu comment: refactor MutableFlags in MPTokenIssuanceSet tran…
ckeshava Oct 6, 2025
13f9ec9
Additional validations+tests for MPTokenIssuanceCreate transaction
ckeshava Oct 7, 2025
7260f2f
Additional validations and tests for MPTokenIssuanceSet txn
ckeshava Oct 7, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .ci-config/rippled.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,7 @@ Batch
PermissionedDEX
TokenEscrow
SingleAssetVault
DynamicMPT

# This section can be used to simulate various FeeSettings scenarios for rippled node in standalone mode
[voting]
Expand Down
28 changes: 28 additions & 0 deletions .github/workflows/nodejs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -122,8 +122,11 @@ jobs:
fetch-depth: 0

- name: Run docker in background
id: run-docker
run: |
docker run --detach --rm -p 6006:6006 --volume "${{ github.workspace }}/.ci-config/":"/etc/opt/ripple/" --name rippled-service --health-cmd="rippled server_info || exit 1" --health-interval=5s --health-retries=10 --health-timeout=2s --env GITHUB_ACTIONS=true --env CI=true --entrypoint bash ${{ env.RIPPLED_DOCKER_IMAGE }} -c "rippled -a"
CONTAINER_ID=$(docker ps -aqf "name=rippled-service")
echo "docker-container-id=$CONTAINER_ID" >> $GITHUB_OUTPUT

- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
Expand Down Expand Up @@ -154,6 +157,17 @@ jobs:

- run: npm run build

- name: Check if Docker container is running
id: check-docker-container
run: |
if ! docker ps | grep -q rippled-service; then
echo "INFO: Currently running docker containers:"
docker ps
echo "ERROR: rippled-service Docker container is not running"
exit 1
fi
docker inspect ${{ steps.run-docker.outputs.docker-container-id }}

- name: Run integration test
run: npm run test:integration

Expand Down Expand Up @@ -181,8 +195,11 @@ jobs:
node-version: ${{ matrix.node-version }}

- name: Run docker in background
id: run-docker
run: |
docker run --detach --rm -p 6006:6006 --volume "${{ github.workspace }}/.ci-config/":"/etc/opt/ripple/" --name rippled-service --health-cmd="rippled server_info || exit 1" --health-interval=5s --health-retries=10 --health-timeout=2s --env GITHUB_ACTIONS=true --env CI=true --entrypoint bash ${{ env.RIPPLED_DOCKER_IMAGE }} -c "rippled -a"
CONTAINER_ID=$(docker ps -aqf "name=rippled-service")
echo "docker-container-id=$CONTAINER_ID" >> $GITHUB_OUTPUT

- name: Setup npm version 10
run: |
Expand All @@ -208,6 +225,17 @@ jobs:

- run: npm run build

- name: Check if Docker container is running
id: check-docker-container
run: |
if ! docker ps | grep -q rippled-service; then
echo "INFO: Currently running docker containers:"
docker ps
echo "ERROR: rippled-service Docker container is not running"
exit 1
fi
docker inspect ${{ steps.run-docker.outputs.docker-container-id }}

- name: Run integration test
run: npm run test:browser

Expand Down
10 changes: 10 additions & 0 deletions packages/ripple-binary-codec/src/enums/definitions.json
Original file line number Diff line number Diff line change
Expand Up @@ -680,6 +680,16 @@
"type": "UInt32"
}
],
[
"MutableFlags",
{
"isSerialized": true,
"isSigningField": true,
"isVLEncoded": false,
"nth": 53,
"type": "UInt32"
}
],
[
"IndexNext",
{
Expand Down
3 changes: 3 additions & 0 deletions packages/xrpl/HISTORY.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ Subscribe to [the **xrpl-announce** mailing list](https://groups.google.com/g/xr

## Unreleased

### Added
* Support for `Dynamic MPT` (XLS-94D)

### Fixed
* Fix incorrect type checking in `validateVaultCreate` that prevented vault creation with MPT as an asset.

Expand Down
2 changes: 2 additions & 0 deletions packages/xrpl/src/models/ledger/LedgerEntry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import DirectoryNode from './DirectoryNode'
import Escrow from './Escrow'
import FeeSettings from './FeeSettings'
import LedgerHashes from './LedgerHashes'
import { MPTokenIssuance } from './MPTokenIssuance'
import NegativeUNL from './NegativeUNL'
import Offer from './Offer'
import Oracle from './Oracle'
Expand Down Expand Up @@ -46,6 +47,7 @@ type LedgerEntry =
| Vault
| XChainOwnedClaimID
| XChainOwnedCreateAccountClaimID
| MPTokenIssuance

type LedgerEntryFilter =
| 'account'
Expand Down
88 changes: 88 additions & 0 deletions packages/xrpl/src/models/ledger/MPTokenIssuance.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,92 @@ export interface MPTokenIssuance extends BaseLedgerEntry, HasPreviousTxnID {
MPTokenMetadata?: string
OwnerNode?: string
LockedAmount?: string
DomainID?: string
MutableFlags: number
}

export interface MPTokenIssuanceFlagsInterface {
lsfMPTLocked?: boolean
lsfMPTCanLock?: boolean
lsfMPTRequireAuth?: boolean
lsfMPTCanEscrow?: boolean
lsfMPTCanTrade?: boolean
lsfMPTCanTransfer?: boolean
lsfMPTCanClawback?: boolean

/**
* Indicates flag lsfMPTCanLock can be changed
*/
lsmfMPTCanMutateCanLock?: boolean
/**
* Indicates flag lsfMPTRequireAuth can be changed
*/
lsmfMPTCanMutateRequireAuth?: boolean
/**
* Indicates flag lsfMPTCanEscrow can be changed
*/
lsmfMPTCanMutateCanEscrow?: boolean
/**
* Indicates flag lsfMPTCanTrade can be changed
*/
lsmfMPTCanMutateCanTrade?: boolean
/**
* Indicates flag lsfMPTCanTransfer can be changed
*/
lsmfMPTCanMutateCanTransfer?: boolean
/**
* Indicates flag lsfMPTCanClawback can be changed
*/
lsmfMPTCanMutateCanClawback?: boolean
/**
* Allows field MPTokenMetadata to be modified
*/
lsmfMPTCanMutateMetadata?: boolean
/**
* Allows field TransferFee to be modified
*/
lsmfMPTCanMutateTransferFee?: boolean
}

export enum MPTokenIssuanceFlags {
lsfMPTLocked = 0x00000001,
lsfMPTCanLock = 0x00000002,
lsfMPTRequireAuth = 0x00000004,
lsfMPTCanEscrow = 0x00000008,
lsfMPTCanTrade = 0x00000010,
lsfMPTCanTransfer = 0x00000020,
lsfMPTCanClawback = 0x00000040,

/**
* Indicates flag lsfMPTCanLock can be changed
*/
lsmfMPTCanMutateCanLock = 0x00000002,
/**
* Indicates flag lsfMPTRequireAuth can be changed
*/
lsmfMPTCanMutateRequireAuth = 0x00000004,
/**
* Indicates flag lsfMPTCanEscrow can be changed
*/
lsmfMPTCanMutateCanEscrow = 0x00000008,
/**
* Indicates flag lsfMPTCanTrade can be changed
*/
lsmfMPTCanMutateCanTrade = 0x00000010,
/**
* Indicates flag lsfMPTCanTransfer can be changed
*/
lsmfMPTCanMutateCanTransfer = 0x00000020,
/**
* Indicates flag lsfMPTCanClawback can be changed
*/
lsmfMPTCanMutateCanClawback = 0x00000040,
/**
* Allows field MPTokenMetadata to be modified
*/
lsmfMPTCanMutateMetadata = 0x00010000,
/**
* Allows field TransferFee to be modified
*/
lsmfMPTCanMutateTransferFee = 0x00020000,
}
Loading
Loading