|
| 1 | +--- |
| 2 | +title: v0.1.18 |
| 3 | +--- |
| 4 | + |
| 5 | +### Added |
| 6 | + |
| 7 | +#### xrpl |
| 8 | + |
| 9 | +- Added method `GetAccountObjects` and `GetAccountLines` to testutil `client` interface |
| 10 | +- Added integration tests for `TrustSet` transaction |
| 11 | +- Added Dynamic MPT support for `MPTokenIssuanceCreate`: |
| 12 | + - `MutableFlags` field to declare which properties can be mutated after creation. |
| 13 | + - `DomainID` field to associate a permissioned domain (requires `TfMPTRequireAuth` flag). |
| 14 | + - MutableFlags constants: `TmfMPTCanMutateCanLock`, `TmfMPTCanMutateRequireAuth`, `TmfMPTCanMutateCanEscrow`, `TmfMPTCanMutateCanTrade`, `TmfMPTCanMutateCanTransfer`, `TmfMPTCanMutateCanClawback`, `TmfMPTCanMutateMetadata`, `TmfMPTCanMutateTransferFee`. |
| 15 | + - Flag setter methods for all mutable flags. |
| 16 | +- Added Dynamic MPT support for `MPTokenIssuanceSet`: |
| 17 | + - `MutableFlags`, `MPTokenMetadata`, `TransferFee`, and `DomainID` fields for post-creation mutation. |
| 18 | + - MutableFlags set/clear constant pairs: `TmfMPTSetCanLock`/`TmfMPTClearCanLock`, `TmfMPTSetRequireAuth`/`TmfMPTClearRequireAuth`, `TmfMPTSetCanEscrow`/`TmfMPTClearCanEscrow`, `TmfMPTSetCanTrade`/`TmfMPTClearCanTrade`, `TmfMPTSetCanTransfer`/`TmfMPTClearCanTransfer`, `TmfMPTSetCanClawback`/`TmfMPTClearCanClawback`. |
| 19 | + - Flag setter methods for all set/clear mutable flags. |
| 20 | + - Validation: mutual exclusivity between `Holder`/`Flags` and DynamicMPT fields, set/clear conflict detection, `TransferFee` + `ClearCanTransfer` conflict, `DomainID` format validation, no-op transaction detection. |
| 21 | +- Added `MutableFlags` and `DomainID` fields to `MPTokenIssuance` ledger entry type with ledger-state mutable flags constants (`Lsmf` prefix) and flag setter methods. |
| 22 | +- Added `MutableFlags` helper function in `types` package. |
| 23 | +- Added integration tests for account transactions `AccountSet` and `AccountDelete` |
| 24 | +- Added integration test for permissioned domain transactions |
| 25 | +- Added integration test for check transactions `CheckCreate`, `CheckCash` and `CheckCancel` |
| 26 | +- Added integration tests for did transactions `DIDSet` and `DIDDelete` |
| 27 | +- Added integration test for credential transactions `CredentialAccept` and `CredentialDelete` |
| 28 | +- Added integration test for `DepositPreauth` transaction |
| 29 | +- Added integration test for escrow transactions. |
| 30 | +- Added integration test for payment and payment channels transactions. |
| 31 | +- Added integration test for vault transactions |
| 32 | +- Added integration test for oracle transactions `OracleSet` and `OracleDelete` |
| 33 | +- Added integration test for NFT transaction `NFTModify` |
| 34 | +- Added integration tests for MPT transactions `MPTokenAuthorize`, `MPTokenIssuanceCreate`, `MPTokenIssuanceDestroy` and `MPTokenIssuanceSet` |
| 35 | +- Added `RippleTimeToUnixSeconds` function |
| 36 | +- Added `GetAMMInfo` query for both RPC and WebSocket clients |
| 37 | +- Added unit tests for `amm_info` request and response serialization |
| 38 | +- Added integration test for amm transactions |
| 39 | +- Added `pkg/decodehook` package with shared `JSON()` decode hook for `mapstructure` |
| 40 | +- Added `hash.PaymentChannel()` function to compute payment channel ID from source, destination, and sequence |
| 41 | +- Added `hash.MPTID()` function to compute MPT ID from sequence and issuer |
| 42 | +- Added `ObjectType` constants for `DID`, `MPToken`, `MPTIssuance`, `Oracle`, `PermissionedDomain`, and `Vault` in account objects query |
| 43 | + |
| 44 | +### Changed |
| 45 | + |
| 46 | +#### Makefile |
| 47 | + |
| 48 | +- Changed localnet rippled image to `develop` |
| 49 | +- Exposed RPC port in localnet command |
| 50 | +- Use `gotest` (colorized output) with fallback to `go test` |
| 51 | + |
| 52 | +### Fixed |
| 53 | + |
| 54 | +#### xrpl |
| 55 | + |
| 56 | +- Validate `DomainID` is valid hexadecimal in `IsDomainID` check (previously only checked length). |
| 57 | +- Validate `MPTokenMetadata` length (max 1024 bytes) in `MPTokenIssuanceCreate` (previously only checked hex format). |
| 58 | +- Reject `MPTokenIssuanceSet` when `Holder` equals `Account` (`temMALFORMED` per rippled spec). |
| 59 | +- Validate `MPTokenIssuanceID` is valid hexadecimal in `MPTokenIssuanceSet`, `MPTokenIssuanceDestroy`, and `MPTokenAuthorize` (previously only checked non-empty). |
| 60 | +- `PaymentChannelCreate.Flatten()` and `PaymentChannelFund.Flatten()` now set `TransactionType` in flattened output. |
| 61 | + |
| 62 | +#### binary-codec |
| 63 | + |
| 64 | +- `UInt64` type now validates hex string length (max 16 chars) before padding, preventing silent overflow. |
| 65 | + |
| 66 | +#### xrpl/websocket |
| 67 | + |
| 68 | +- `GetResult` now composes a `jsonUnmarshalerHookFunc` alongside the existing `TextUnmarshallerHookFunc`, so any target type implementing `json.Unmarshaler` is decoded via its own `UnmarshalJSON` rather than by mapstructure directly. |
| 69 | + |
| 70 | +#### xrpl/queries/server/types |
| 71 | + |
| 72 | +- `State.ValidatorListExpires` remains a `string`; a custom `UnmarshalJSON` on `State` now accepts both a JSON string and a JSON number for that field, converting the number to its string representation. This fixes a crash when rippled returns `0` for `validator_list_expires` over WebSocket. |
| 73 | + |
| 74 | +#### xrpl/ledger-entry-types |
| 75 | + |
| 76 | +- Fixed `AuthAccount.Flatten()` storing `types.Address` without converting to `string`, causing binary codec serialization to fail. |
| 77 | + |
| 78 | +#### Makefile |
| 79 | + |
| 80 | +- Corrected localnet setup to automatically create ledgers periodically |
| 81 | + |
| 82 | +### Removed |
| 83 | + |
| 84 | +#### xrpl/transaction |
| 85 | + |
| 86 | +- Removed integration tests for obsolete transactions `Batch` and `DelegateSet` |
0 commit comments