Sha256: 05ecb78753ab55193b62225dd115fa4d3a07be4040faa3408443a5c7f1fe53c1
Contents?: true
Size: 1.29 KB
Versions: 1
Compression:
Stored size: 1.29 KB
Contents
import { keccak, blake2b, base58Encode, base16Decode } from '@waves/ts-lib-crypto'; const validateEthAddress = (addr) => { return addr != null && addr.length == 42; }; export default function ethAddress2waves(ethAddress, chainId) { if (validateEthAddress(ethAddress)) { ethAddress = ethAddress.substr(2); } else { throw `Invalid ethereum address: ${ethAddress} `; } const prefixBytes = new Uint8Array([0x01, chainId]); // Раскодировать HEX строку в байты (PK_HASH) const pkHashBytes = base16Decode(ethAddress); // Сделать чексумму CHECKSUM=keccak256(blake2b256([0x01, CHAIN_ID] + PK_HASH)) const checksumBytes = new Uint8Array([ ...prefixBytes, ...pkHashBytes ]); const checksum = keccak(blake2b(checksumBytes)); // склеить [0x01, CHAIN_ID] (два байта) + PK_HASH (изначальные 20 байт) + CHECKSUM[1:4] (первые четыре байта чексуммы) const wavesBytes = new Uint8Array([ ...prefixBytes, ...pkHashBytes.slice(0, 20), ...checksum.slice(0, 4) ]); // закодировать в base58 const wavesAddress = base58Encode(wavesBytes); return wavesAddress; } //# sourceMappingURL=ethAddress2waves.js.map
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
waves_lib-0.1.0 | js/node_modules/@waves/node-api-js/es/tools/adresses/ethAddress2waves.js |