Skip to content

Latest commit

 

History

History
53 lines (32 loc) · 1.7 KB

File metadata and controls

53 lines (32 loc) · 1.7 KB

Gas Optimization Notes

This document summarizes optimization choices applied in marketplace contract updates.

Optimization Areas

Storage layout optimization

  • Consolidated reporting-related counters under compact data keys.
  • Added structured snapshots to avoid repeated recomputation from full event scans.

Batch operations

  • bulk_add_to_whitelist uses one summary event instead of per-user event emission.
  • Asset registry tracks registered assets for bounded iteration during aggregation.

Loop optimization

  • Metric aggregation utilities perform single-pass accumulation over registered assets.
  • Scheduling iterates only over known schedule IDs and skips disabled/not-due items.

Event optimization

  • Bulk whitelist emits aggregate event payload (bulk_whitelist, count).
  • Report generation emits concise report_generated events.

Storage packing / key strategy

  • Added dedicated keys for counters (TransactionCount, HolderCount, TaxableVolume) to avoid heavier object deserialization for simple reads.

Functional safety

  • Existing behavior and tests remain valid while adding new capabilities.
  • Added tests for approvals, reporting, scheduling, and multi-asset analytics.

Benchmark Guidance

For local gas profiling use:

cd contracts
cargo test -- --nocapture

For CI comparison, capture before/after ledger footprint from test snapshots under contracts/test_snapshots/ and compare:

  • number of emitted events
  • number of storage writes per scenario
  • total state entries touched

Practical Result

Compared with per-action-only reporting, pre-aggregated counters reduce repeated full-history scans and lower per-query cost for compliance dashboards and exports.