ERC-7673: Distinguishable base256emoji Addresses
Depict Account Addresses As A String of Emoji
Abstract
Introduce base256emoji for use as the primary input and display for account addresses in all user interfaces.
Motivation
Human users often fail to distinguish between long strings of hexadecimal characters, especially when they match at the beginning and at the end. This makes hexadecimal strings a poor format for human-readable account addresses. The problem is being exploited by several spoofing strategies that mine similar addresses and spoof ERC-20 Transfer events with the goal of tricking the end user into copying the wrong recipient address. These address spoofing attacks have mislead tens of thousands of ether, and countless other tokens. Spoofers flooding the network with fake Transfer events waste network resources and complicate blockchain accounting. Improving the distinguishability of addresses will reduce the incentives for this behavior.
Specification
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 and RFC 8174.
User interfaces:
- SHALL depict account addresses as a base256emoji string instead of hexadecimal.
- SHALL accept base256emoji strings as input for user-supplied account address parameters.
- SHOULD recognize and interpret strings of exactly 20 consecutive emoji as addresses when all of them are valid base256emoji.
base256emoji encoding table
Emoji | Unicode codepoint | Byte Value |
---|---|---|
๐ | U+1F680 | 0 |
๐ช | U+1FA90 | 1 |
โ | U+2604 | 2 |
๐ฐ | U+1F6F0 | 3 |
๐ | U+1F30C | 4 |
๐ | U+1F311 | 5 |
๐ | U+1F312 | 6 |
๐ | U+1F313 | 7 |
๐ | U+1F314 | 8 |
๐ | U+1F315 | 9 |
๐ | U+1F316 | 10 |
๐ | U+1F317 | 11 |
๐ | U+1F318 | 12 |
๐ | U+1F30D | 13 |
๐ | U+1F30F | 14 |
๐ | U+1F30E | 15 |
๐ | U+1F409 | 16 |
โ | U+2600 | 17 |
๐ป | U+1F4BB | 18 |
๐ฅ | U+1F5A5 | 19 |
๐พ | U+1F4BE | 20 |
๐ฟ | U+1F4BF | 21 |
๐ | U+1F602 | 22 |
โค | U+2764 | 23 |
๐ | U+1F60D | 24 |
๐คฃ | U+1F923 | 25 |
๐ | U+1F60A | 26 |
๐ | U+1F64F | 27 |
๐ | U+1F495 | 28 |
๐ญ | U+1F62D | 29 |
๐ | U+1F618 | 30 |
๐ | U+1F44D | 31 |
๐ | U+1F605 | 32 |
๐ | U+1F44F | 33 |
๐ | U+1F601 | 34 |
๐ฅ | U+1F525 | 35 |
๐ฅฐ | U+1F970 | 36 |
๐ | U+1F494 | 37 |
๐ | U+1F496 | 38 |
๐ | U+1F499 | 39 |
๐ข | U+1F622 | 40 |
๐ค | U+1F914 | 41 |
๐ | U+1F606 | 42 |
๐ | U+1F644 | 43 |
๐ช | U+1F4AA | 44 |
๐ | U+1F609 | 45 |
โบ | U+263A | 46 |
๐ | U+1F44C | 47 |
๐ค | U+1F917 | 48 |
๐ | U+1F49C | 49 |
๐ | U+1F614 | 50 |
๐ | U+1F60E | 51 |
๐ | U+1F607 | 52 |
๐น | U+1F339 | 53 |
๐คฆ | U+1F926 | 54 |
๐ | U+1F389 | 55 |
๐ | U+1F49E | 56 |
โ | U+270C | 57 |
โจ | U+2728 | 58 |
๐คท | U+1F937 | 59 |
๐ฑ | U+1F631 | 60 |
๐ | U+1F60C | 61 |
๐ธ | U+1F338 | 62 |
๐ | U+1F64C | 63 |
๐ | U+1F60B | 64 |
๐ | U+1F497 | 65 |
๐ | U+1F49A | 66 |
๐ | U+1F60F | 67 |
๐ | U+1F49B | 68 |
๐ | U+1F642 | 69 |
๐ | U+1F493 | 70 |
๐คฉ | U+1F929 | 71 |
๐ | U+1F604 | 72 |
๐ | U+1F600 | 73 |
๐ค | U+1F5A4 | 74 |
๐ | U+1F603 | 75 |
๐ฏ | U+1F4AF | 76 |
๐ | U+1F648 | 77 |
๐ | U+1F447 | 78 |
๐ถ | U+1F3B6 | 79 |
๐ | U+1F612 | 80 |
๐คญ | U+1F92D | 81 |
โฃ | U+2763 | 82 |
๐ | U+1F61C | 83 |
๐ | U+1F48B | 84 |
๐ | U+1F440 | 85 |
๐ช | U+1F62A | 86 |
๐ | U+1F611 | 87 |
๐ฅ | U+1F4A5 | 88 |
๐ | U+1F64B | 89 |
๐ | U+1F61E | 90 |
๐ฉ | U+1F629 | 91 |
๐ก | U+1F621 | 92 |
๐คช | U+1F92A | 93 |
๐ | U+1F44A | 94 |
๐ฅณ | U+1F973 | 95 |
๐ฅ | U+1F625 | 96 |
๐คค | U+1F924 | 97 |
๐ | U+1F449 | 98 |
๐ | U+1F483 | 99 |
๐ณ | U+1F633 | 100 |
โ | U+270B | 101 |
๐ | U+1F61A | 102 |
๐ | U+1F61D | 103 |
๐ด | U+1F634 | 104 |
๐ | U+1F31F | 105 |
๐ฌ | U+1F62C | 106 |
๐ | U+1F643 | 107 |
๐ | U+1F340 | 108 |
๐ท | U+1F337 | 109 |
๐ป | U+1F63B | 110 |
๐ | U+1F613 | 111 |
โญ | U+2B50 | 112 |
โ | U+2705 | 113 |
๐ฅบ | U+1F97A | 114 |
๐ | U+1F308 | 115 |
๐ | U+1F608 | 116 |
๐ค | U+1F918 | 117 |
๐ฆ | U+1F4A6 | 118 |
โ | U+2714 | 119 |
๐ฃ | U+1F623 | 120 |
๐ | U+1F3C3 | 121 |
๐ | U+1F490 | 122 |
โน | U+2639 | 123 |
๐ | U+1F38A | 124 |
๐ | U+1F498 | 125 |
๐ | U+1F620 | 126 |
โ | U+261D | 127 |
๐ | U+1F615 | 128 |
๐บ | U+1F33A | 129 |
๐ | U+1F382 | 130 |
๐ป | U+1F33B | 131 |
๐ | U+1F610 | 132 |
๐ | U+1F595 | 133 |
๐ | U+1F49D | 134 |
๐ | U+1F64A | 135 |
๐น | U+1F639 | 136 |
๐ฃ | U+1F5E3 | 137 |
๐ซ | U+1F4AB | 138 |
๐ | U+1F480 | 139 |
๐ | U+1F451 | 140 |
๐ต | U+1F3B5 | 141 |
๐ค | U+1F91E | 142 |
๐ | U+1F61B | 143 |
๐ด | U+1F534 | 144 |
๐ค | U+1F624 | 145 |
๐ผ | U+1F33C | 146 |
๐ซ | U+1F62B | 147 |
โฝ | U+26BD | 148 |
๐ค | U+1F919 | 149 |
โ | U+2615 | 150 |
๐ | U+1F3C6 | 151 |
๐คซ | U+1F92B | 152 |
๐ | U+1F448 | 153 |
๐ฎ | U+1F62E | 154 |
๐ | U+1F646 | 155 |
๐ป | U+1F37B | 156 |
๐ | U+1F343 | 157 |
๐ถ | U+1F436 | 158 |
๐ | U+1F481 | 159 |
๐ฒ | U+1F632 | 160 |
๐ฟ | U+1F33F | 161 |
๐งก | U+1F9E1 | 162 |
๐ | U+1F381 | 163 |
โก | U+26A1 | 164 |
๐ | U+1F31E | 165 |
๐ | U+1F388 | 166 |
โ | U+274C | 167 |
โ | U+270A | 168 |
๐ | U+1F44B | 169 |
๐ฐ | U+1F630 | 170 |
๐คจ | U+1F928 | 171 |
๐ถ | U+1F636 | 172 |
๐ค | U+1F91D | 173 |
๐ถ | U+1F6B6 | 174 |
๐ฐ | U+1F4B0 | 175 |
๐ | U+1F353 | 176 |
๐ข | U+1F4A2 | 177 |
๐ค | U+1F91F | 178 |
๐ | U+1F641 | 179 |
๐จ | U+1F6A8 | 180 |
๐จ | U+1F4A8 | 181 |
๐คฌ | U+1F92C | 182 |
โ | U+2708 | 183 |
๐ | U+1F380 | 184 |
๐บ | U+1F37A | 185 |
๐ค | U+1F913 | 186 |
๐ | U+1F619 | 187 |
๐ | U+1F49F | 188 |
๐ฑ | U+1F331 | 189 |
๐ | U+1F616 | 190 |
๐ถ | U+1F476 | 191 |
๐ฅด | U+1F974 | 192 |
โถ | U+25B6 | 193 |
โก | U+27A1 | 194 |
โ | U+2753 | 195 |
๐ | U+1F48E | 196 |
๐ธ | U+1F4B8 | 197 |
โฌ | U+2B07 | 198 |
๐จ | U+1F628 | 199 |
๐ | U+1F31A | 200 |
๐ฆ | U+1F98B | 201 |
๐ท | U+1F637 | 202 |
๐บ | U+1F57A | 203 |
โ | U+26A0 | 204 |
๐ | U+1F645 | 205 |
๐ | U+1F61F | 206 |
๐ต | U+1F635 | 207 |
๐ | U+1F44E | 208 |
๐คฒ | U+1F932 | 209 |
๐ค | U+1F920 | 210 |
๐คง | U+1F927 | 211 |
๐ | U+1F4CC | 212 |
๐ต | U+1F535 | 213 |
๐ | U+1F485 | 214 |
๐ง | U+1F9D0 | 215 |
๐พ | U+1F43E | 216 |
๐ | U+1F352 | 217 |
๐ | U+1F617 | 218 |
๐ค | U+1F911 | 219 |
๐ | U+1F30A | 220 |
๐คฏ | U+1F92F | 221 |
๐ท | U+1F437 | 222 |
โ | U+260E | 223 |
๐ง | U+1F4A7 | 224 |
๐ฏ | U+1F62F | 225 |
๐ | U+1F486 | 226 |
๐ | U+1F446 | 227 |
๐ค | U+1F3A4 | 228 |
๐ | U+1F647 | 229 |
๐ | U+1F351 | 230 |
โ | U+2744 | 231 |
๐ด | U+1F334 | 232 |
๐ฃ | U+1F4A3 | 233 |
๐ธ | U+1F438 | 234 |
๐ | U+1F48C | 235 |
๐ | U+1F4CD | 236 |
๐ฅ | U+1F940 | 237 |
๐คข | U+1F922 | 238 |
๐ | U+1F445 | 239 |
๐ก | U+1F4A1 | 240 |
๐ฉ | U+1F4A9 | 241 |
๐ | U+1F450 | 242 |
๐ธ | U+1F4F8 | 243 |
๐ป | U+1F47B | 244 |
๐ค | U+1F910 | 245 |
๐คฎ | U+1F92E | 246 |
๐ผ | U+1F3BC | 247 |
๐ฅต | U+1F975 | 248 |
๐ฉ | U+1F6A9 | 249 |
๐ | U+1F34E | 250 |
๐ | U+1F34A | 251 |
๐ผ | U+1F47C | 252 |
๐ | U+1F48D | 253 |
๐ฃ | U+1F4E3 | 254 |
๐ฅ | U+1F942 | 255 |
Rationale
Previous attempts to reduce spoofing and other copy errors such as ERC-55 have not reduced the number of characters in an address. Any base-256 standard would achieve this goal but emoji were chosen to maximize human-distinguishability. Multiple base-256 emoji encodings have been proposed. The base256emoji encoding was chosen due to its acceptance into the multibase repository.
This standard does not also recommend base256emoji for use in depicting other bytestrings such as transaction hashes and calldata. Transaction hashes are not yet being spoofed. Calldata is best decoded via the appropriate ABI. By only using base256emoji for addresses, addresses can be easily noticed among other information.
Backwards Compatibility
Using the encoding table, the base256emoji encoding can be transcoded into hexadecimal and vice-versa.
Test Cases
base256emoji | ERC-55 |
---|---|
๐๐๐๐๐๐๐๐๐ฅด๐ฃ๐ป๐๐๐คข๐ฅโน๐๐ฉ๐๐ | 0x0000000000004946c0e9F43F4Dee607b0eF1fA1c |
๐๐๐๐๐๐๐ธ๐๐ก๐ฟ๐ฉ๐ฅ๐๐๐โ๐ฐ๐ฉ๐คโญ | 0x000000000000c57CF0A1f923d44527e703F1ad70 |
โโโโโโค๐๐โ๐โ๐๐โ๐๐ฐ๐๐ โโ | 0x111111111117dC0aa78b770fA6A738034120C302 |
๐๐คซ๐โ๐คช๐๐ค๐ถ๐ญโค๐๐ฉ๐๐ฑ๐ค๐๐๐ช๐ฉ๐ | 0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984 |
๐๐โ โจ๐๐๐โบ๐ถ๐๐ธ๐คฉ๐๐โ๐คคโญ๐โนโก | 0x2a0f713aA953442EacA9EA47083f656170e67BA4 |
๐ฅ๐คฌ๐๐๐๐๐๐ข๐ฃ๐โจ๐๐พ๐ก๐๐ค๐ธ๐๐ค๐ต | 0x23B608675a2B2fB1890d3ABBd85c5775c51691d5 |
๐ฃ๐ ๐โจ๐คท๐๐๐ท๐ท๐ถโ๐ช๐ฅ๐ฅ๐ค๐๐๐ช๐โ | 0x89205A3A3b2A69De6Dbf7f01ED13B2108B2c43e7 |
๐ฅด๐๐ฐโ๐ค๐ฅ๐ฃ๐ต๐๐๐ก๐ถ๐๐ธ๐๐๐ฑ๐ค๐โก | 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 |
โถ๐ป๐ฅ๐๐๐๐๐จโ๐ธ๐๐ช๐๐คค๐ธ๐ป๐โ๐๐ฅบ | 0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72 |
Reference Implementation
Security Considerations
With the base256emoji encoding, addresses use half as many characters. The characters used are more distinguishable. This squares the difficulty of generating similar addresses, making address spoofing impractical.
Copyright
Copyright and related rights waived via CC0.