thor-devkit
Version:
Typescript library to aid DApp development on VeChain Thor
53 lines • 3.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.address = void 0;
const keccak_1 = require("./keccak");
/** address related utilities */
var address;
(function (address) {
/**
* derive Address from public key, note that the public key is uncompressed
* @param pub the public key
*/
function fromPublicKey(pub) {
return '0x' + keccak_1.keccak256(pub.slice(1)).slice(12).toString('hex');
}
address.fromPublicKey = fromPublicKey;
/**
* to check if a value presents an address
* @param v the value to be checked
*/
function test(v) {
return typeof v === 'string' && /^0x[0-9a-f]{40}$/i.test(v);
}
address.test = test;
/**
* encode the address to checksumed address that is compatible with eip-55
* @param address input address
*/
function toChecksumed(addr) {
if (!test(addr)) {
throw new Error('invalid address');
}
addr = addr.slice(2).toLowerCase();
const hash = keccak_1.keccak256(addr);
let checksumed = '0x';
for (let i = 0; i < addr.length; i++) {
// tslint:disable-next-line:no-bitwise
let byte = hash[i >> 1];
if (i % 2 === 0) {
// tslint:disable-next-line:no-bitwise
byte >>= 4;
}
if (byte % 16 >= 8) {
checksumed += addr[i].toUpperCase();
}
else {
checksumed += addr[i];
}
}
return checksumed;
}
address.toChecksumed = toChecksumed;
})(address = exports.address || (exports.address = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hZGRyZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFDQUFvQztBQUVwQyxnQ0FBZ0M7QUFDaEMsSUFBaUIsT0FBTyxDQTZDdkI7QUE3Q0QsV0FBaUIsT0FBTztJQUNwQjs7O09BR0c7SUFDSCxTQUFnQixhQUFhLENBQUMsR0FBVztRQUNyQyxPQUFPLElBQUksR0FBRyxrQkFBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ25FLENBQUM7SUFGZSxxQkFBYSxnQkFFNUIsQ0FBQTtJQUVEOzs7T0FHRztJQUNILFNBQWdCLElBQUksQ0FBQyxDQUFNO1FBQ3ZCLE9BQU8sT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMvRCxDQUFDO0lBRmUsWUFBSSxPQUVuQixDQUFBO0lBRUQ7OztPQUdHO0lBQ0gsU0FBZ0IsWUFBWSxDQUFDLElBQVk7UUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtTQUNyQztRQUNELElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQ2xDLE1BQU0sSUFBSSxHQUFHLGtCQUFTLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFNUIsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFBO1FBQ3JCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2xDLHNDQUFzQztZQUN0QyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1lBQ3ZCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ2Isc0NBQXNDO2dCQUN0QyxJQUFJLEtBQUssQ0FBQyxDQUFBO2FBQ2I7WUFFRCxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFO2dCQUNoQixVQUFVLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO2FBQ3RDO2lCQUFNO2dCQUNILFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7YUFDeEI7U0FDSjtRQUNELE9BQU8sVUFBVSxDQUFBO0lBQ3JCLENBQUM7SUF2QmUsb0JBQVksZUF1QjNCLENBQUE7QUFDTCxDQUFDLEVBN0NnQixPQUFPLEdBQVAsZUFBTyxLQUFQLGVBQU8sUUE2Q3ZCIn0=