ERC-7673: Distinguishable base256emoji Addresses

Depict Account Addresses As A String of Emoji


Metadata
Status: DraftStandards Track: ERCCreated: 2024-04-01
Authors
William Morriss (@wjmelements)

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

EmojiUnicode codepointByte Value
๐Ÿš€U+1F6800
๐ŸชU+1FA901
โ˜„U+26042
๐Ÿ›ฐU+1F6F03
๐ŸŒŒU+1F30C4
๐ŸŒ‘U+1F3115
๐ŸŒ’U+1F3126
๐ŸŒ“U+1F3137
๐ŸŒ”U+1F3148
๐ŸŒ•U+1F3159
๐ŸŒ–U+1F31610
๐ŸŒ—U+1F31711
๐ŸŒ˜U+1F31812
๐ŸŒU+1F30D13
๐ŸŒU+1F30F14
๐ŸŒŽU+1F30E15
๐Ÿ‰U+1F40916
โ˜€U+260017
๐Ÿ’ปU+1F4BB18
๐Ÿ–ฅU+1F5A519
๐Ÿ’พU+1F4BE20
๐Ÿ’ฟU+1F4BF21
๐Ÿ˜‚U+1F60222
โคU+276423
๐Ÿ˜U+1F60D24
๐ŸคฃU+1F92325
๐Ÿ˜ŠU+1F60A26
๐Ÿ™U+1F64F27
๐Ÿ’•U+1F49528
๐Ÿ˜ญU+1F62D29
๐Ÿ˜˜U+1F61830
๐Ÿ‘U+1F44D31
๐Ÿ˜…U+1F60532
๐Ÿ‘U+1F44F33
๐Ÿ˜U+1F60134
๐Ÿ”ฅU+1F52535
๐ŸฅฐU+1F97036
๐Ÿ’”U+1F49437
๐Ÿ’–U+1F49638
๐Ÿ’™U+1F49939
๐Ÿ˜ขU+1F62240
๐Ÿค”U+1F91441
๐Ÿ˜†U+1F60642
๐Ÿ™„U+1F64443
๐Ÿ’ชU+1F4AA44
๐Ÿ˜‰U+1F60945
โ˜บU+263A46
๐Ÿ‘ŒU+1F44C47
๐Ÿค—U+1F91748
๐Ÿ’œU+1F49C49
๐Ÿ˜”U+1F61450
๐Ÿ˜ŽU+1F60E51
๐Ÿ˜‡U+1F60752
๐ŸŒนU+1F33953
๐ŸคฆU+1F92654
๐ŸŽ‰U+1F38955
๐Ÿ’žU+1F49E56
โœŒU+270C57
โœจU+272858
๐ŸคทU+1F93759
๐Ÿ˜ฑU+1F63160
๐Ÿ˜ŒU+1F60C61
๐ŸŒธU+1F33862
๐Ÿ™ŒU+1F64C63
๐Ÿ˜‹U+1F60B64
๐Ÿ’—U+1F49765
๐Ÿ’šU+1F49A66
๐Ÿ˜U+1F60F67
๐Ÿ’›U+1F49B68
๐Ÿ™‚U+1F64269
๐Ÿ’“U+1F49370
๐ŸคฉU+1F92971
๐Ÿ˜„U+1F60472
๐Ÿ˜€U+1F60073
๐Ÿ–คU+1F5A474
๐Ÿ˜ƒU+1F60375
๐Ÿ’ฏU+1F4AF76
๐Ÿ™ˆU+1F64877
๐Ÿ‘‡U+1F44778
๐ŸŽถU+1F3B679
๐Ÿ˜’U+1F61280
๐ŸคญU+1F92D81
โฃU+276382
๐Ÿ˜œU+1F61C83
๐Ÿ’‹U+1F48B84
๐Ÿ‘€U+1F44085
๐Ÿ˜ชU+1F62A86
๐Ÿ˜‘U+1F61187
๐Ÿ’ฅU+1F4A588
๐Ÿ™‹U+1F64B89
๐Ÿ˜žU+1F61E90
๐Ÿ˜ฉU+1F62991
๐Ÿ˜กU+1F62192
๐ŸคชU+1F92A93
๐Ÿ‘ŠU+1F44A94
๐ŸฅณU+1F97395
๐Ÿ˜ฅU+1F62596
๐ŸคคU+1F92497
๐Ÿ‘‰U+1F44998
๐Ÿ’ƒU+1F48399
๐Ÿ˜ณU+1F633100
โœ‹U+270B101
๐Ÿ˜šU+1F61A102
๐Ÿ˜U+1F61D103
๐Ÿ˜ดU+1F634104
๐ŸŒŸU+1F31F105
๐Ÿ˜ฌU+1F62C106
๐Ÿ™ƒU+1F643107
๐Ÿ€U+1F340108
๐ŸŒทU+1F337109
๐Ÿ˜ปU+1F63B110
๐Ÿ˜“U+1F613111
โญU+2B50112
โœ…U+2705113
๐ŸฅบU+1F97A114
๐ŸŒˆU+1F308115
๐Ÿ˜ˆU+1F608116
๐Ÿค˜U+1F918117
๐Ÿ’ฆU+1F4A6118
โœ”U+2714119
๐Ÿ˜ฃU+1F623120
๐ŸƒU+1F3C3121
๐Ÿ’U+1F490122
โ˜นU+2639123
๐ŸŽŠU+1F38A124
๐Ÿ’˜U+1F498125
๐Ÿ˜ U+1F620126
โ˜U+261D127
๐Ÿ˜•U+1F615128
๐ŸŒบU+1F33A129
๐ŸŽ‚U+1F382130
๐ŸŒปU+1F33B131
๐Ÿ˜U+1F610132
๐Ÿ–•U+1F595133
๐Ÿ’U+1F49D134
๐Ÿ™ŠU+1F64A135
๐Ÿ˜นU+1F639136
๐Ÿ—ฃU+1F5E3137
๐Ÿ’ซU+1F4AB138
๐Ÿ’€U+1F480139
๐Ÿ‘‘U+1F451140
๐ŸŽตU+1F3B5141
๐ŸคžU+1F91E142
๐Ÿ˜›U+1F61B143
๐Ÿ”ดU+1F534144
๐Ÿ˜คU+1F624145
๐ŸŒผU+1F33C146
๐Ÿ˜ซU+1F62B147
โšฝU+26BD148
๐Ÿค™U+1F919149
โ˜•U+2615150
๐Ÿ†U+1F3C6151
๐ŸคซU+1F92B152
๐Ÿ‘ˆU+1F448153
๐Ÿ˜ฎU+1F62E154
๐Ÿ™†U+1F646155
๐ŸปU+1F37B156
๐ŸƒU+1F343157
๐ŸถU+1F436158
๐Ÿ’U+1F481159
๐Ÿ˜ฒU+1F632160
๐ŸŒฟU+1F33F161
๐ŸงกU+1F9E1162
๐ŸŽU+1F381163
โšกU+26A1164
๐ŸŒžU+1F31E165
๐ŸŽˆU+1F388166
โŒU+274C167
โœŠU+270A168
๐Ÿ‘‹U+1F44B169
๐Ÿ˜ฐU+1F630170
๐ŸคจU+1F928171
๐Ÿ˜ถU+1F636172
๐ŸคU+1F91D173
๐ŸšถU+1F6B6174
๐Ÿ’ฐU+1F4B0175
๐Ÿ“U+1F353176
๐Ÿ’ขU+1F4A2177
๐ŸคŸU+1F91F178
๐Ÿ™U+1F641179
๐ŸšจU+1F6A8180
๐Ÿ’จU+1F4A8181
๐ŸคฌU+1F92C182
โœˆU+2708183
๐ŸŽ€U+1F380184
๐ŸบU+1F37A185
๐Ÿค“U+1F913186
๐Ÿ˜™U+1F619187
๐Ÿ’ŸU+1F49F188
๐ŸŒฑU+1F331189
๐Ÿ˜–U+1F616190
๐Ÿ‘ถU+1F476191
๐ŸฅดU+1F974192
โ–ถU+25B6193
โžกU+27A1194
โ“U+2753195
๐Ÿ’ŽU+1F48E196
๐Ÿ’ธU+1F4B8197
โฌ‡U+2B07198
๐Ÿ˜จU+1F628199
๐ŸŒšU+1F31A200
๐Ÿฆ‹U+1F98B201
๐Ÿ˜ทU+1F637202
๐Ÿ•บU+1F57A203
โš U+26A0204
๐Ÿ™…U+1F645205
๐Ÿ˜ŸU+1F61F206
๐Ÿ˜ตU+1F635207
๐Ÿ‘ŽU+1F44E208
๐ŸคฒU+1F932209
๐Ÿค U+1F920210
๐ŸคงU+1F927211
๐Ÿ“ŒU+1F4CC212
๐Ÿ”ตU+1F535213
๐Ÿ’…U+1F485214
๐ŸงU+1F9D0215
๐ŸพU+1F43E216
๐Ÿ’U+1F352217
๐Ÿ˜—U+1F617218
๐Ÿค‘U+1F911219
๐ŸŒŠU+1F30A220
๐ŸคฏU+1F92F221
๐ŸทU+1F437222
โ˜ŽU+260E223
๐Ÿ’งU+1F4A7224
๐Ÿ˜ฏU+1F62F225
๐Ÿ’†U+1F486226
๐Ÿ‘†U+1F446227
๐ŸŽคU+1F3A4228
๐Ÿ™‡U+1F647229
๐Ÿ‘U+1F351230
โ„U+2744231
๐ŸŒดU+1F334232
๐Ÿ’ฃU+1F4A3233
๐ŸธU+1F438234
๐Ÿ’ŒU+1F48C235
๐Ÿ“U+1F4CD236
๐Ÿฅ€U+1F940237
๐ŸคขU+1F922238
๐Ÿ‘…U+1F445239
๐Ÿ’กU+1F4A1240
๐Ÿ’ฉU+1F4A9241
๐Ÿ‘U+1F450242
๐Ÿ“ธU+1F4F8243
๐Ÿ‘ปU+1F47B244
๐ŸคU+1F910245
๐ŸคฎU+1F92E246
๐ŸŽผU+1F3BC247
๐ŸฅตU+1F975248
๐ŸšฉU+1F6A9249
๐ŸŽU+1F34E250
๐ŸŠU+1F34A251
๐Ÿ‘ผU+1F47C252
๐Ÿ’U+1F48D253
๐Ÿ“ฃU+1F4E3254
๐Ÿฅ‚U+1F942255

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


base256emojiERC-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.