Previously, this would measure as <20 bytes for addresses with leading
zeroes. This resulted in transactions with unexpected behavior.
For example, sending ETH to the zero address would create a contract
instead.
Here we switch to using +encode:rlp directly and indicate a width of
20 bytes for the "to" field.
It will measure them for you, making it easier to encode lists
containing both fixed- and variable-width numbers.
Largely obviates the need for +encode-atoms.
Null bytes in lists were getting eaten during concatenation. To avoid
this, we track encoded item widths (which are always 1 or higher) and
+can them all together.
This likely did not affect any of the other Ethereum code, considering
it nearly always measures atoms, and the null byte would be seen as
no bytes in that case.
* release/next-vere: (104 commits)
vere: adds backwards-compatibility TODO comments for terminal inputs
vere: adds backwards-compatibility to blit handling under -t
u3: replaces spurious bloq-size bail:exit's in +rap and +rep jets
build: patch windows uv_pipe impl to allow null writes
build: update pmnsh to support cachix text/x-nix-narinfo responses
vere: renames terminal streams for clarity, removes unused uv_tcp_t
vere: refactors _term_it_send_csi()
vere: suppress null writes in term.c
vere: use memset to wipe hashmaps
pill: all
webterm: simpler TermState
webterm: clean up component state derivation
webterm: fix broken api interactions
herm: close old-style subscriptions
webterm: include @urbit/api/term files
herm: accept old /view/* wires
hood, pill: clean up merge artifacts
webterm: improve container handling
webterm: factor logic out into functions
webterm: more idiomatic array type definitions
...
Notably, we include the base desk last. This is to ensure that the
other desks are present by the time kiln gets loaded from base, letting
it install the software on the other desks, as per 22ad2516c.
During kiln's +on-init, we now check for non-base (and non-kids) desks.
If any are present, we execute the install flow for them, and set them
to sync from our sponsor afterwards.
This depends on work done in d7afe3229, in that without those changes
the successive +find requests from kiln to clay would clobber each
other, leaving only the "install from sponsor" one active, thus never
actually installing the desk for which we already have the files.
When installing from an existing local desk, kiln now scries the
relevant data out of clay instead of sending moves to it and awaiting
responses.
This prepares for coming kiln work.