From 7fd6a3d979347e45203f582b60d00062bdce3c5a Mon Sep 17 00:00:00 2001 From: cdetrio Date: Sat, 2 Dec 2017 15:08:26 -0500 Subject: [PATCH] add test cases to EIP-55 --- EIPS/eip-55.md | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/EIPS/eip-55.md b/EIPS/eip-55.md index e60dc159b334c..8979a77257e2b 100644 --- a/EIPS/eip-55.md +++ b/EIPS/eip-55.md @@ -37,6 +37,13 @@ test('0xD1220A0cf47c7B9Be7A2E6BA89F429762e7b9aDb') In English, convert the address to hex, but if the `i`th digit is a letter (ie. it's one of `abcdef`) print it in uppercase if the `4*i`th bit of the hash of the lowercase hexadecimal address is 1 otherwise print it in lowercase. +# Rationale + +Benefits: +- Backwards compatible with many hex parsers that accept mixed case, allowing it to be easily introduced over time +- Keeps the length at 40 characters +- On average there will be 15 check bits per address, and the net probability that a randomly generated address if mistyped will accidentally pass a check is 0.0247%. This is a ~50x improvement over ICAP, but not as good as a 4-byte check code. + # Implementation In javascript: @@ -72,12 +79,21 @@ Note that the input to the Keccak256 hash is the lowercase hexadecimal string (i var hash = createKeccakHash('keccak256').update(Buffer.from(address.toLowerCase(), 'ascii')).digest() ``` -# Rationale +# Test Cases -Benefits: -- Backwards compatible with many hex parsers that accept mixed case, allowing it to be easily introduced over time -- Keeps the length at 40 characters -- On average there will be 15 check bits per address, and the net probability that a randomly generated address if mistyped will accidentally pass a check is 0.0247%. This is a ~50x improvement over ICAP, but not as good as a 4-byte check code. +``` +# All caps +0x52908400098527886E0F7030069857D2E4169EE7 +0x8617E340B3D01FA5F11F306F4090FD50E238070D +# All Lower +0xde709f2102306220921060314715629080e2fb77 +0x27b1fdb04752bbc536007a920d24acb045561c26 +# Normal +0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed +0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359 +0xdbF03B407c01E7cD3CBea99509d93f8DDDC8C6FB +0xD1220A0cf47c7B9Be7A2E6BA89F429762e7b9aDb +``` # Adoption