Add +address-to-checksum gate to ethereum lib as per EIP-55

https://github.com/ethereum/EIPs/blob/master/EIPS/eip-55.md

I needed it because some api's i'm hitting fail if the address isn't checksummed.

Could maybe be written better, haven't done much byte munging in hoon. Feel free to improve.
This commit is contained in:
xiphiness 2022-01-23 19:57:13 +02:00 committed by GitHub
parent 0c9fc76b93
commit 73b2d27d49
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -948,6 +948,21 @@
%- prefix-hex
(render-hex-bytes 20 `@`a)
::
++ address-to-checksum
|= =address
^- tape
=/ hexed (render-hex-bytes 20 `@`a)
=/ hash (keccak-256:keccak:crypto (as-octs:mimes:html (crip hexed)))
=| ret=tape
=/ pos 63
|-
?~ hexed (prefix-hex (flop ret))
=/ char i.hexed
?: (lth char 58) $(pos (dec pos), ret [char ret], hexed t.hexed)
=/ nib (cut 2 [pos 1] hash)
?: (lth 7 nib) $(pos (dec pos), ret [(sub char 32) ret], hexed t.hexed)
$(pos (dec pos), ret [char ret], hexed t.hexed)
::
++ transaction-to-hex
|= h=@
^- tape