What’s the default endianness of the arith_uint256 kind?
tl;dr: The one chosen by the libraries and compiler you’re utilizing for the processor you focused? However that is not what it’s essential to know.
Endianness is a better supply of confusion in Bitcoin than in another software program undertaking I’ve encountered.
CPU
Some traditionally well-liked processors, 68K, SPARC, PowerPC, have been big-endian – however these are not important.
At present, most private computer systems which are bigger than pocket sized use processors which are little-endian. Most of these processors have an instruction to effectively swap between byte orders. For instance bswap
or rev
. This form of provision usually makes endianness comparatively unimportant for effectivity issues.
Present ARM processor designs are stated to be bi-endian. They’ll work with both endianness with equal effectivity.
Web
Web requirements specify that information transmitted over the Web ought to transmit numbers in big-endian order. Nevertheless Bitcoin doesn’t. This is also a supply of confusion.
Software program
In many of the software program growth initiatives I’ve labored on, together with heterogeneous community purposes, endianness is just not a difficulty. Builders do not even want to pay attention to endianness. The compiler takes care of this for you. Normal software program libraries maintain this for you.
Bitcoin core is an exception to this. There are in all probability many others however it’s the solely undertaking I recall encountering the place it is a massive problem that often journeys folks up and causes confusion so typically.
People
Most numbers introduced to people in hexadecimal notation are introduced as big-endian. This implies probably the most important digits are on the left, in order that in a left-to-right writing system the offset or position-index is smallest for probably the most important digit.
Conclusion
The order you see in a hexadecimal illustration might need been ordered to go well with human interpretation or it may be ordered to match, for instance, community order. Context ought to make this obvious.