Priority: P0 — hard blocker with NO app-side workaround; the single longest pole in retiring the legacy org.dashj.platform stack from dash-wallet. Implementation will be driven by @bfoss765 — this issue tracks design agreement.
The Android wallet's TxMetadata pipeline (tax categories, memos, gift-card and exchange-rate records) publishes per-identity ECDH-encrypted documents to the wallet contract, today via the legacy BlockchainIdentity.publishTxMetaData(...). The Kotlin SDK's only document write, documents/DocumentTransactions.create(walletHandle, ownerId, contractId, documentType, propertiesJson, signerHandle), accepts plaintext propertiesJson only — there is no encryption-key parameter and no encrypted-document surface anywhere in the SDK.
Ask: an encrypted-document create/update where the SDK derives/uses the identity encryption key (semantics equivalent to the legacy publishTxMetaData), usable for the wallet/txMetadata contract. Without it the TxMetadata loop runs on the legacy library for every user unconditionally, and the legacy dependency can never be removed.
Read-path counterpart filed separately (decrypt-on-fetch). Context: dash-wallet migration plan Phase 3h step 3 (dashpay/dash-wallet#1507). cc @QuantumExplorer
Priority: P0 — hard blocker with NO app-side workaround; the single longest pole in retiring the legacy
org.dashj.platformstack from dash-wallet. Implementation will be driven by @bfoss765 — this issue tracks design agreement.The Android wallet's TxMetadata pipeline (tax categories, memos, gift-card and exchange-rate records) publishes per-identity ECDH-encrypted documents to the wallet contract, today via the legacy
BlockchainIdentity.publishTxMetaData(...). The Kotlin SDK's only document write,documents/DocumentTransactions.create(walletHandle, ownerId, contractId, documentType, propertiesJson, signerHandle), accepts plaintext propertiesJson only — there is no encryption-key parameter and no encrypted-document surface anywhere in the SDK.Ask: an encrypted-document create/update where the SDK derives/uses the identity encryption key (semantics equivalent to the legacy
publishTxMetaData), usable for the wallet/txMetadata contract. Without it the TxMetadata loop runs on the legacy library for every user unconditionally, and the legacy dependency can never be removed.Read-path counterpart filed separately (decrypt-on-fetch). Context: dash-wallet migration plan Phase 3h step 3 (dashpay/dash-wallet#1507). cc @QuantumExplorer