Harden zero-amount transfers; deprecate disputeInitiator; add compact config telemetry #519
+50
−14
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
transferandtransferFromcalls in payout/bond paths.Description
_tFromto centralizesafeTransferFromExactusage and skip 0-amount calls, and changed_tto skip 0 transfers incontracts/AGIJobManager.sol.transferFromwithamount == 0(uses_tFromand preserveslocked*Bondsaccounting).Job.disputeInitiatoras deprecated in-place (kept storage layout) and removed active setting/clearing to avoid misleading non-zero values while keeping the slot reserved.ConfigUpdated(bytes32,bytes32)telemetry event (emitted via a tiny assembly log helper) for a small set of numeric setters (setPremiumReputationThreshold,setMaxJobPayout,setJobDurationLimit) to improve ops visibility while preserving bytecode headroom.delistJobalready usesnonReentrantso no change was needed there, and left ENSJobPages unchanged because it already emits owner setter events.Testing
npm run buildwhich compiled the contracts successfully withsolc(no config changes totruffle-config.jsandsolcViaIR=false).npm run size) and the AGIJobManager runtime bytecode is within the guard (artifact reports24575bytes), so size gating passes.Codex Task