Pin xrpl-py to main; drop the SponsorshipSet compat shim - #92
Conversation
xrpl-py's main branch now carries every 3.3.0 feature, including the confidential MPT and sponsor models that kept us on pre-3.3-release-group. Move both refs together (pyproject branch + Dockerfile XRPL_PY_REF) so the proofs and the models stay on one ref. Knock-on changes: - sponsorship_compat.py is deleted. SponsorshipSet with FeeAmountDelta / RemainingOwnerCountDelta ships upstream, so the field-header injection shim has no reason to exist. - setup-confidential-crypto.sh gates the mpt-crypto version on a compatibility class rather than string equality. main targets 1.0.4 while both xrpld develop and staging/3.3.x-private pin 1.0.2, and git diff 1.0.2 1.0.4 -- include src is empty, so the pair is listed as equivalent and the crypto build (and the confidential valid paths) stay live. 1.0.5 is deliberately not listed: it adds a BSGS DLP solver. - Faulty vectors that main's tightened model validation now rejects at construction move onto submit_raw dict mutation, so rippled still does the rejecting: SponsorshipSet - zero deltas and the neither-field-set case raise XRPLModelException; caught and re-routed to keep temBAD_AMOUNT / temINVALID reachable. ConfidentialMPT* - the models now enforce the MPTokenIssuanceID length plus the issuer roles rippled checks in preflight: the issuer may not be the Account of MergeInbox / Convert / ConvertBack / Send nor the Destination of a Send, and Clawback's Account must be the issuer. Adds _pick_holder_pool() so the four holder-shaped types draw a non-issuer account, rebuilds _clawback_faulty from a tracked issuer, and moves the send_to_issuer, non_issuer and fake_mpt_id vectors onto mutate. All five check-* gates pass.
|
To my ignorant eyes, this appears to be a grab-bag of not terribly related changes. For example, it's not clear what requires the Nothing obviously jumps out as functionally problematic, but it's stretching my working memory enough that it's hard to approve with confidence. |
|
Having reviewed the commit message itself, the amalgam makes sense. FWIW the commit message is tighter than the PR description above; I recommend using it directly. |
lmaisons
left a comment
There was a problem hiding this comment.
Reviewed both manually and with Claude assistance. Neither pass revealed anything obviously problematic. The only suggestion that came up was to replace the PR description with the description used in the commit message itself, as that flowed better and made the necessity of the scope of the changes much more obvious.
Independent of #91 — one commit off
main, no lending v1.1 changes.xrpl-py's
mainbranch now carries every 3.3.0 feature, including the confidential MPT and sponsor models that kept us onpre-3.3-release-group. Both refs move together (pyproject.tomlbranch +Dockerfile.workloadXRPL_PY_REF) so proofs and models come from one ref.xrpl-py5.0.0 → 5.1.0.sponsorship_compat.py is deleted
SponsorshipSetwithFeeAmountDelta/RemainingOwnerCountDeltaships upstream, so the field-header injection shim has no reason to exist — import fromxrpl.modelsagain.mpt-crypto version gate is a compatibility class, not string equality
maintargets mpt-crypto 1.0.4; both xrplddevelopandstaging/3.3.x-privatepin 1.0.2. Under the old equality check the crypto build would be skipped on every run, taking all fiveConfidentialMPT*valid paths dark.git diff 1.0.2 1.0.4 -- include srcis empty (CMake/packaging/tests only), sosetup-confidential-crypto.shnow lists that pair in_COMPATIBLE_CLASSESand the build stays live.1.0.5is deliberately not listed — it adds a BSGS DLP solver, a real library change.Faulty vectors main's tightened validation now blocks at construction
Each moves onto
submit_rawdict mutation, so rippled still does the rejecting:XRPLModelException; caught and re-routed to keeptemBAD_AMOUNT/temINVALIDreachable.MPTokenIssuanceIDlength plus the issuer roles rippled checks in preflight: the issuer may not be theAccountof MergeInbox / Convert / ConvertBack / Send nor theDestinationof a Send, and Clawback'sAccountmust be the issuer. Adds_pick_holder_pool()so the four holder-shaped types draw a non-issuer account, rebuilds_clawback_faultyfrom a tracked issuer, and moves thesend_to_issuer,non_issuerandfake_mpt_idvectors ontomutate.Checks
check-imports,check-endpoints,check-fuzz-coverage,check-modifier-coverage,check-assembler-roundtrip, ruff, ruff format all pass.Two things only an image build can prove, worth watching on the first run: the crypto build succeeding with 1.0.4 bindings against a 1.0.2-pinned xrpld, and the rerouted
ConfidentialMPT*vectors returning the expectedtem*/tec*from rippled rather than just constructing cleanly.Pull Request opened by Augment Code with guidance from the PR author