The transaction weights in Polkadot are benchmarked on reference hardware. We ran the benchmark on VM instances of two major cloud providers: Google Cloud Platform (GCP) and Amazon Web Services (AWS). To be specific, we used
c2d-highcpu-8VM instance on GCP and
- x86-64 compatible;
- Intel Ice Lake, or newer (Xeon or Core series); AMD Zen3, or newer (EPYC or Ryzen);
- 4 physical cores @ 3.4GHz;
- Simultaneous multithreading disabled (Hyper-Threading on Intel, SMT on AMD);
- An NVMe SSD of 1 TB (In general, the latency is more important than the throughput.)
- 16GB DDR4 ECC.
- Linux Kernel 5.16 or newer.
Parachains need to gauge precisely how much time they will consume for their proof of validity with the relay chain for each state transition. This is a hard limit AFAIK for now, that s about 1/6th of the total block time on the relay IIRC.
It is unclear if a parachain must use this same hardware to generate weights. I would think so, based on the hard PoV requirements.
- Can parachains decide on arbitrary reference hardware to benchmark against?
- [If so] How can one ensure they are limiting their total weight such that all possible conditions will be within the PoV weight limits?