]> git.ardis.lu - ens2hex/commitdiff
Implement ERC-55 mixed-case checksum address
authorArdis Lu <ardisglu@gmail.com>
Thu, 23 Nov 2023 06:11:10 +0000 (22:11 -0800)
committerArdis Lu <ardisglu@gmail.com>
Thu, 23 Nov 2023 06:11:10 +0000 (22:11 -0800)
index.html

index 218efd9f191db610b1dab48441bbccb9556e2093..527e34eef71ffb197af190788632dc3c1319cf53 100644 (file)
       return addresses;
     }
 
+    // ERC-55: https://ercs.ethereum.org/ERCS/erc-55
+    function toChecksumAddress(address) {
+      address = address.toLowerCase().replace('0x', '');
+      // Hash the address (treat it as UTF-8) and return as a hex string
+      const hash = [...keccak256(address)].map(v => v.toString(16).padStart(2, '0')).join('');
+      let ret = '0x';
+
+      for (let i = 0; i < 40; i++) {
+        if (parseInt(hash[i], 16) >= 8) {
+          ret += address[i].toUpperCase();
+        }
+        else {
+          ret += address[i];
+        }
+      }
+
+      return ret;
+    }
+
     document.querySelector('form').addEventListener('submit', async event => {
       event.preventDefault();
 
 
         ens.textContent = name;
         const response = multicallResponse[name];
-        address.textContent = response;
+        address.textContent = toChecksumAddress(response);
       }
 
       spinner.style.setProperty('display', 'none');
This page took 0.034166 seconds and 4 git commands to generate.