@qevm/address
Advanced tools
@@ -1,2 +0,2 @@ | ||
| export declare const version = "address/5.7.0"; | ||
| export declare const version = "address/5.7.3"; | ||
| //# sourceMappingURL=_version.d.ts.map |
+1
-1
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.version = void 0; | ||
| exports.version = "address/5.7.0"; | ||
| exports.version = "address/5.7.3"; | ||
| //# sourceMappingURL=_version.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src.ts/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,SAAS,EAAgE,MAAM,aAAa,CAAC;AAChH,OAAO,EAAa,YAAY,EAA4B,MAAM,iBAAiB,CAAC;AAyEpF,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAoClD;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAMlD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAItD;AAGD,wBAAgB,kBAAkB,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,UAWpF;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,GAAG,MAAM,CAQhG"} | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src.ts/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAEH,SAAS,EAKZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAEH,YAAY,EAGf,MAAM,iBAAiB,CAAC;AAsFzB,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA0ClD;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAMlD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMtD;AAGD,wBAAgB,kBAAkB,CAAC,WAAW,EAAE;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,YAAY,CAAC;CACvB,UAiBA;AAED,wBAAgB,iBAAiB,CAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS,EACf,YAAY,EAAE,SAAS,GACxB,MAAM,CAcR"} |
+42
-38
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.getCreate2Address = exports.getContractAddress = exports.getIcapAddress = exports.isAddress = exports.getAddress = void 0; | ||
| var bytes_1 = require("@qevm/bytes"); | ||
| var bignumber_1 = require("@qevm/bignumber"); | ||
| var keccak256_1 = require("@qevm/keccak256"); | ||
| var rlp_1 = require("@qevm/rlp"); | ||
| var logger_1 = require("@ethersproject/logger"); | ||
| var _version_1 = require("./_version"); | ||
| var logger = new logger_1.Logger(_version_1.version); | ||
| exports.getAddress = getAddress; | ||
| exports.isAddress = isAddress; | ||
| exports.getIcapAddress = getIcapAddress; | ||
| exports.getContractAddress = getContractAddress; | ||
| exports.getCreate2Address = getCreate2Address; | ||
| const bytes_1 = require("@qevm/bytes"); | ||
| const bignumber_1 = require("@qevm/bignumber"); | ||
| const keccak256_1 = require("@qevm/keccak256"); | ||
| const rlp_1 = require("@qevm/rlp"); | ||
| const logger_1 = require("@qevm/logger"); | ||
| const _version_1 = require("./_version"); | ||
| const logger = new logger_1.Logger(_version_1.version); | ||
| function getChecksumAddress(address) { | ||
@@ -16,10 +20,10 @@ if (!(0, bytes_1.isHexString)(address, 32)) { | ||
| address = address.toLowerCase(); | ||
| var chars = address.substring(2).split(""); | ||
| var expanded = new Uint8Array(40); | ||
| for (var i = 0; i < 40; i++) { | ||
| const chars = address.substring(2).split(""); | ||
| const expanded = new Uint8Array(64); | ||
| for (let i = 0; i < 64; i++) { | ||
| expanded[i] = chars[i].charCodeAt(0); | ||
| } | ||
| var hashed = (0, bytes_1.arrayify)((0, keccak256_1.keccak256)(expanded)); | ||
| for (var i = 0; i < 40; i += 2) { | ||
| if ((hashed[i >> 1] >> 4) >= 8) { | ||
| const hashed = (0, bytes_1.arrayify)((0, keccak256_1.keccak256)(expanded)); | ||
| for (let i = 0; i < 64; i += 2) { | ||
| if (hashed[i >> 1] >> 4 >= 8) { | ||
| chars[i] = chars[i].toUpperCase(); | ||
@@ -34,3 +38,3 @@ } | ||
| // Shims for environments that are missing some required constants and functions | ||
| var MAX_SAFE_INTEGER = 0x1fffffffffffff; | ||
| const MAX_SAFE_INTEGER = 0x1fffffffffffff; | ||
| function log10(x) { | ||
@@ -44,21 +48,27 @@ if (Math.log10) { | ||
| // Create lookup table | ||
| var ibanLookup = {}; | ||
| for (var i = 0; i < 10; i++) { | ||
| const ibanLookup = {}; | ||
| for (let i = 0; i < 10; i++) { | ||
| ibanLookup[String(i)] = String(i); | ||
| } | ||
| for (var i = 0; i < 26; i++) { | ||
| for (let i = 0; i < 26; i++) { | ||
| ibanLookup[String.fromCharCode(65 + i)] = String(10 + i); | ||
| } | ||
| // How many decimal digits can we process? (for 64-bit float, this is 15) | ||
| var safeDigits = Math.floor(log10(MAX_SAFE_INTEGER)); | ||
| const safeDigits = Math.floor(log10(MAX_SAFE_INTEGER)); | ||
| function ibanChecksum(address) { | ||
| address = address.toUpperCase(); | ||
| address = address.substring(4) + address.substring(0, 2) + "00"; | ||
| var expanded = address.split("").map(function (c) { return ibanLookup[c]; }).join(""); | ||
| let expanded = address | ||
| .split("") | ||
| .map((c) => { | ||
| return ibanLookup[c]; | ||
| }) | ||
| .join(""); | ||
| // Javascript can handle integers safely up to 15 (decimal) digits | ||
| while (expanded.length >= safeDigits) { | ||
| var block = expanded.substring(0, safeDigits); | ||
| expanded = parseInt(block, 10) % 97 + expanded.substring(block.length); | ||
| let block = expanded.substring(0, safeDigits); | ||
| expanded = | ||
| (parseInt(block, 10) % 97) + expanded.substring(block.length); | ||
| } | ||
| var checksum = String(98 - (parseInt(expanded, 10) % 97)); | ||
| let checksum = String(98 - (parseInt(expanded, 10) % 97)); | ||
| while (checksum.length < 2) { | ||
@@ -69,6 +79,5 @@ checksum = "0" + checksum; | ||
| } | ||
| ; | ||
| function getAddress(address) { | ||
| var result = null; | ||
| if (typeof (address) !== "string") { | ||
| let result = null; | ||
| if (typeof address !== "string") { | ||
| logger.throwArgumentError("invalid address", "address", address); | ||
@@ -83,6 +92,6 @@ } | ||
| // It is a checksummed address with a bad checksum | ||
| if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) { | ||
| if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && | ||
| result !== address) { | ||
| logger.throwArgumentError("bad address checksum", "address", address); | ||
| } | ||
| // Maybe ICAP? (we only support direct mode) | ||
| } | ||
@@ -95,3 +104,3 @@ else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) { | ||
| result = (0, bignumber_1._base36To16)(address.substring(4)); | ||
| while (result.length < 40) { | ||
| while (result.length < 64) { | ||
| result = "0" + result; | ||
@@ -106,3 +115,2 @@ } | ||
| } | ||
| exports.getAddress = getAddress; | ||
| function isAddress(address) { | ||
@@ -116,5 +124,4 @@ try { | ||
| } | ||
| exports.isAddress = isAddress; | ||
| function getIcapAddress(address) { | ||
| var base36 = (0, bignumber_1._base16To36)(getAddress(address).substring(2)).toUpperCase(); | ||
| let base36 = (0, bignumber_1._base16To36)(getAddress(address).substring(2)).toUpperCase(); | ||
| while (base36.length < 30) { | ||
@@ -125,6 +132,5 @@ base36 = "0" + base36; | ||
| } | ||
| exports.getIcapAddress = getIcapAddress; | ||
| // http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed | ||
| function getContractAddress(transaction) { | ||
| var from = null; | ||
| let from = null; | ||
| try { | ||
@@ -136,6 +142,5 @@ from = getAddress(transaction.from); | ||
| } | ||
| var nonce = (0, bytes_1.stripZeros)((0, bytes_1.arrayify)(bignumber_1.BigNumber.from(transaction.nonce).toHexString())); | ||
| const nonce = (0, bytes_1.stripZeros)((0, bytes_1.arrayify)(bignumber_1.BigNumber.from(transaction.nonce).toHexString())); | ||
| return getAddress((0, keccak256_1.keccak256)((0, rlp_1.encode)([from, nonce]))); | ||
| } | ||
| exports.getContractAddress = getContractAddress; | ||
| function getCreate2Address(from, salt, initCodeHash) { | ||
@@ -148,5 +153,4 @@ if ((0, bytes_1.hexDataLength)(salt) !== 32) { | ||
| } | ||
| return getAddress((0, bytes_1.hexDataSlice)((0, keccak256_1.keccak256)((0, bytes_1.concat)(["0xff", getAddress(from), salt, initCodeHash])), 12)); | ||
| return getAddress((0, keccak256_1.keccak256)((0, bytes_1.concat)(["0xff", getAddress(from), salt, initCodeHash]))); | ||
| } | ||
| exports.getCreate2Address = getCreate2Address; | ||
| //# sourceMappingURL=index.js.map |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src.ts/index.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src.ts/index.ts"],"names":[],"mappings":"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"} |
+31
-27
| { | ||
| "author": "Eugene Kuleshov", | ||
| "dependencies": { | ||
| "@ethersproject/logger": "^5.7.0", | ||
| "@qevm/bignumber": "^5.7.0", | ||
| "@qevm/bytes": "5.7.1", | ||
| "@qevm/keccak256": "^5.7.0", | ||
| "@qevm/rlp": "^5.7.0" | ||
| }, | ||
| "description": "Utilities for handling quantum Ethereum Addresses for qethers.", | ||
| "keywords": [ | ||
| "QuantumEVM", | ||
| "qethers" | ||
| ], | ||
| "license": "MIT", | ||
| "main": "./lib/index.js", | ||
| "module": "./lib.esm/index.js", | ||
| "name": "@qevm/address", | ||
| "publishConfig": { | ||
| "access": "public" | ||
| }, | ||
| "scripts": { | ||
| "test": "echo \"Error: no test specified\" && exit 1" | ||
| }, | ||
| "sideEffects": false, | ||
| "tarballHash": "0x992f958e9ea5189414cd56968a152fa5aee2a143ff083ce2894bd65dfb990ef4", | ||
| "types": "./lib/index.d.ts", | ||
| "version": "5.7.2" | ||
| "contributors": [ | ||
| "Eugene Kuleshov <kulevgen32@gmail.com>", | ||
| "Richard Moore <me@ricmoo.com>" | ||
| ], | ||
| "dependencies": { | ||
| "@qevm/logger": "^5.7.1", | ||
| "@qevm/bignumber": "^5.7.1", | ||
| "@qevm/bytes": "^5.7.2", | ||
| "@qevm/keccak256": "^5.7.1", | ||
| "@qevm/rlp": "^5.7.1" | ||
| }, | ||
| "description": "Utilities for handling quantum QuantumEVM Addresses for qethers.", | ||
| "keywords": [ | ||
| "QuantumEVM", | ||
| "QEVM", | ||
| "qethers" | ||
| ], | ||
| "license": "MIT", | ||
| "main": "./lib/index.js", | ||
| "module": "./lib.esm/index.js", | ||
| "name": "@qevm/address", | ||
| "publishConfig": { | ||
| "access": "public" | ||
| }, | ||
| "scripts": { | ||
| "test": "echo \"Error: no test specified\" && exit 1" | ||
| }, | ||
| "sideEffects": false, | ||
| "tarballHash": "0x992f958e9ea5189414cd56968a152fa5aee2a143ff083ce2894bd65dfb990ef4", | ||
| "types": "./lib/index.d.ts", | ||
| "version": "5.7.3" | ||
| } |
+4
-5
@@ -1,5 +0,5 @@ | ||
| Ethereum Address Utilities | ||
| QuantumEVM Address Utilities | ||
| ========================== | ||
| This sub-module is part of the [ethers project](https://github.com/ethers-io/ethers.js). | ||
| This sub-module is part of the qethers, a fork of [ethers project](https://github.com/ethers-io/ethers.js). | ||
@@ -10,3 +10,2 @@ It is responsible for encoding, verifying and computing checksums for | ||
| For more information, see the [documentation](https://docs.ethers.io/v5/api/utils/address/). | ||
@@ -16,3 +15,3 @@ Importing | ||
| Most users will prefer to use the [umbrella package](https://www.npmjs.com/package/ethers), | ||
| Most users will prefer to use the [umbrella package](https://www.npmjs.com/package/@qevm/qethers), | ||
| but for those with more specific needs, individual components can be imported. | ||
@@ -31,3 +30,3 @@ | ||
| } = require("@ethersproject/address"); | ||
| } = require("@qevm/address"); | ||
| ``` | ||
@@ -34,0 +33,0 @@ |
@@ -1,1 +0,1 @@ | ||
| export const version = "address/5.7.0"; | ||
| export const version = "address/5.7.3"; |
+88
-36
| "use strict"; | ||
| import { arrayify, BytesLike, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from "@qevm/bytes"; | ||
| import { BigNumber, BigNumberish, _base16To36, _base36To16 } from "@qevm/bignumber"; | ||
| import { | ||
| arrayify, | ||
| BytesLike, | ||
| concat, | ||
| hexDataLength, | ||
| isHexString, | ||
| stripZeros, | ||
| } from "@qevm/bytes"; | ||
| import { | ||
| BigNumber, | ||
| BigNumberish, | ||
| _base16To36, | ||
| _base36To16, | ||
| } from "@qevm/bignumber"; | ||
| import { keccak256 } from "@qevm/keccak256"; | ||
| import { encode } from "@qevm/rlp"; | ||
| import { Logger } from "@ethersproject/logger"; | ||
| import { Logger } from "@qevm/logger"; | ||
| import { version } from "./_version"; | ||
@@ -21,4 +33,4 @@ const logger = new Logger(version); | ||
| const expanded = new Uint8Array(40); | ||
| for (let i = 0; i < 40; i++) { | ||
| const expanded = new Uint8Array(64); | ||
| for (let i = 0; i < 64; i++) { | ||
| expanded[i] = chars[i].charCodeAt(0); | ||
@@ -29,4 +41,4 @@ } | ||
| for (let i = 0; i < 40; i += 2) { | ||
| if ((hashed[i >> 1] >> 4) >= 8) { | ||
| for (let i = 0; i < 64; i += 2) { | ||
| if (hashed[i >> 1] >> 4 >= 8) { | ||
| chars[i] = chars[i].toUpperCase(); | ||
@@ -46,13 +58,18 @@ } | ||
| function log10(x: number): number { | ||
| if (Math.log10) { return Math.log10(x); } | ||
| if (Math.log10) { | ||
| return Math.log10(x); | ||
| } | ||
| return Math.log(x) / Math.LN10; | ||
| } | ||
| // See: https://en.wikipedia.org/wiki/International_Bank_Account_Number | ||
| // Create lookup table | ||
| const ibanLookup: { [character: string]: string } = { }; | ||
| for (let i = 0; i < 10; i++) { ibanLookup[String(i)] = String(i); } | ||
| for (let i = 0; i < 26; i++) { ibanLookup[String.fromCharCode(65 + i)] = String(10 + i); } | ||
| const ibanLookup: { [character: string]: string } = {}; | ||
| for (let i = 0; i < 10; i++) { | ||
| ibanLookup[String(i)] = String(i); | ||
| } | ||
| for (let i = 0; i < 26; i++) { | ||
| ibanLookup[String.fromCharCode(65 + i)] = String(10 + i); | ||
| } | ||
@@ -66,15 +83,23 @@ // How many decimal digits can we process? (for 64-bit float, this is 15) | ||
| let expanded = address.split("").map((c) => { return ibanLookup[c]; }).join(""); | ||
| let expanded = address | ||
| .split("") | ||
| .map((c) => { | ||
| return ibanLookup[c]; | ||
| }) | ||
| .join(""); | ||
| // Javascript can handle integers safely up to 15 (decimal) digits | ||
| while (expanded.length >= safeDigits){ | ||
| while (expanded.length >= safeDigits) { | ||
| let block = expanded.substring(0, safeDigits); | ||
| expanded = parseInt(block, 10) % 97 + expanded.substring(block.length); | ||
| expanded = | ||
| (parseInt(block, 10) % 97) + expanded.substring(block.length); | ||
| } | ||
| let checksum = String(98 - (parseInt(expanded, 10) % 97)); | ||
| while (checksum.length < 2) { checksum = "0" + checksum; } | ||
| while (checksum.length < 2) { | ||
| checksum = "0" + checksum; | ||
| } | ||
| return checksum; | ||
| }; | ||
| } | ||
@@ -84,3 +109,3 @@ export function getAddress(address: string): string { | ||
| if (typeof(address) !== "string") { | ||
| if (typeof address !== "string") { | ||
| logger.throwArgumentError("invalid address", "address", address); | ||
@@ -90,5 +115,6 @@ } | ||
| if (address.match(/^(0x)?[0-9a-fA-F]{64}$/)) { | ||
| // Missing the 0x prefix | ||
| if (address.substring(0, 2) !== "0x") { address = "0x" + address; } | ||
| if (address.substring(0, 2) !== "0x") { | ||
| address = "0x" + address; | ||
| } | ||
@@ -98,9 +124,13 @@ result = getChecksumAddress(address); | ||
| // It is a checksummed address with a bad checksum | ||
| if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) { | ||
| logger.throwArgumentError("bad address checksum", "address", address); | ||
| if ( | ||
| address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && | ||
| result !== address | ||
| ) { | ||
| logger.throwArgumentError( | ||
| "bad address checksum", | ||
| "address", | ||
| address, | ||
| ); | ||
| } | ||
| // Maybe ICAP? (we only support direct mode) | ||
| } else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) { | ||
| // It is an ICAP address with a bad checksum | ||
@@ -112,5 +142,6 @@ if (address.substring(2, 4) !== ibanChecksum(address)) { | ||
| result = _base36To16(address.substring(4)); | ||
| while (result.length < 40) { result = "0" + result; } | ||
| while (result.length < 64) { | ||
| result = "0" + result; | ||
| } | ||
| result = getChecksumAddress("0x" + result); | ||
| } else { | ||
@@ -127,3 +158,3 @@ logger.throwArgumentError("invalid address", "address", address); | ||
| return true; | ||
| } catch (error) { } | ||
| } catch (error) {} | ||
| return false; | ||
@@ -134,3 +165,5 @@ } | ||
| let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase(); | ||
| while (base36.length < 30) { base36 = "0" + base36; } | ||
| while (base36.length < 30) { | ||
| base36 = "0" + base36; | ||
| } | ||
| return "XE" + ibanChecksum("XE00" + base36) + base36; | ||
@@ -140,3 +173,6 @@ } | ||
| // http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed | ||
| export function getContractAddress(transaction: { from: string, nonce: BigNumberish }) { | ||
| export function getContractAddress(transaction: { | ||
| from: string; | ||
| nonce: BigNumberish; | ||
| }) { | ||
| let from: string = null; | ||
@@ -146,11 +182,21 @@ try { | ||
| } catch (error) { | ||
| logger.throwArgumentError("missing from address", "transaction", transaction); | ||
| logger.throwArgumentError( | ||
| "missing from address", | ||
| "transaction", | ||
| transaction, | ||
| ); | ||
| } | ||
| const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString())); | ||
| const nonce = stripZeros( | ||
| arrayify(BigNumber.from(transaction.nonce).toHexString()), | ||
| ); | ||
| return getAddress(keccak256(encode([ from, nonce ]))); | ||
| return getAddress(keccak256(encode([from, nonce]))); | ||
| } | ||
| export function getCreate2Address(from: string, salt: BytesLike, initCodeHash: BytesLike): string { | ||
| export function getCreate2Address( | ||
| from: string, | ||
| salt: BytesLike, | ||
| initCodeHash: BytesLike, | ||
| ): string { | ||
| if (hexDataLength(salt) !== 32) { | ||
@@ -160,5 +206,11 @@ logger.throwArgumentError("salt must be 32 bytes", "salt", salt); | ||
| if (hexDataLength(initCodeHash) !== 32) { | ||
| logger.throwArgumentError("initCodeHash must be 32 bytes", "initCodeHash", initCodeHash); | ||
| logger.throwArgumentError( | ||
| "initCodeHash must be 32 bytes", | ||
| "initCodeHash", | ||
| initCodeHash, | ||
| ); | ||
| } | ||
| return getAddress(hexDataSlice(keccak256(concat([ "0xff", getAddress(from), salt, initCodeHash ])), 12)) | ||
| return getAddress( | ||
| keccak256(concat(["0xff", getAddress(from), salt, initCodeHash])), | ||
| ); | ||
| } |
20790
2.42%331
22.59%35
-2.78%+ Added
- Removed
- Removed
- Removed
Updated
Updated
Updated
Updated