Skip to content
Snippets Groups Projects
Commit 81b33be1 authored by Bernardo Cardoso's avatar Bernardo Cardoso
Browse files

Add address validation example

parent 721f0cae
No related branches found
No related tags found
No related merge requests found
const { decodeAddress } = require('@polkadot/keyring');
// This address is valid
const validXXNetworkAddress = '6VKGAwtDvAZxbCurxD5c5V7s48XREDiEWErHgB14G4qZU9bs';
// Changed the 'C' to lowercase, |
// making the address checksum invalid |
// v
const invalidChecksumXXNetworkAddress = '6VKGAwtDvAZxbcurxD5c5V7s48XREDiEWErHgB14G4qZU9bs';
// Address is too short
const tooShortXXNetworkAddress = '6VKGAwtDvAZxbcurxD5c5V7s48XREDiEWErHgB14G4qZ';
// Address is too long
const tooLongXXNetworkAddress = '6VKGAwtDvAZxbCurxD5c5V7s48XREDiEWErHgB14G4qZU9bsAb1234';
// These addresses are valid but are from other Substrate based networks
// so not valid in xx network
const validPolkadotAddress = '1nUC7afqmo7zwRFWxDjrUQu9skk6fk99pafb4SiyGSRc8z3';
const validSubstrateAddress = '5GrpknVvGGrGH3EFuURXeMrWHvbpj3VfER1oX5jFtuGbfzCE';
// Check if an address is a valid xx network address
function isValidXXNetworkAddress(address) {
try {
// Use ss58 format 55, which is registered for xx network
decodeAddress(address, false, 55);
return true;
} catch (error) {
// In this example we can log the error
console.log(error);
return false;
}
}
// Valid
// true
console.log(isValidXXNetworkAddress(validXXNetworkAddress));
// Invalid Checksum
// false
console.log(isValidXXNetworkAddress(invalidChecksumXXNetworkAddress));
// Too short
// false
console.log(isValidXXNetworkAddress(tooShortXXNetworkAddress));
// Too long
// false
console.log(isValidXXNetworkAddress(tooLongXXNetworkAddress));
// Wrong network
// false
console.log(isValidXXNetworkAddress(validPolkadotAddress));
// Wrong network
// false
console.log(isValidXXNetworkAddress(validSubstrateAddress));
{
"name": "address-validation",
"version": "1.0.0",
"description": "Example on how to validate an xx network address using SS58 format",
"main": "index.js",
"repository": "github.com/xx-labs/scripts/address-validation",
"author": "xx labs",
"license": "MIT",
"dependencies": {
"@polkadot/keyring": "^8.7.1"
}
}
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
"@babel/runtime@^7.17.8":
version "7.17.8"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.8.tgz#3e56e4aff81befa55ac3ac6a0967349fd1c5bca2"
integrity sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==
dependencies:
regenerator-runtime "^0.13.4"
"@noble/hashes@1.0.0":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.0.0.tgz#d5e38bfbdaba174805a4e649f13be9a9ed3351ae"
integrity sha512-DZVbtY62kc3kkBtMHqwCOfXrT/hnoORy5BJ4+HU1IR59X0KWAOqsfzQPcUl/lQLlG7qXbe/fZ3r/emxtAl+sqg==
"@noble/secp256k1@1.5.5":
version "1.5.5"
resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.5.5.tgz#315ab5745509d1a8c8e90d0bdf59823ccf9bcfc3"
integrity sha512-sZ1W6gQzYnu45wPrWx8D3kwI2/U29VYTx9OjbDAd7jwRItJ0cSTMPRL/C8AWZFn9kWFLQGqEXVEE86w4Z8LpIQ==
"@polkadot/keyring@^8.7.1":
version "8.7.1"
resolved "https://registry.yarnpkg.com/@polkadot/keyring/-/keyring-8.7.1.tgz#07cf6d6ee351dcf70fbf965b1d6d96c5025ae1b8"
integrity sha512-t6ZgQVC+nQT7XwbWtEhkDpiAzxKVJw8Xd/gWdww6xIrawHu7jo3SGB4QNdPgkf8TvDHYAAJiupzVQYAlOIq3GA==
dependencies:
"@babel/runtime" "^7.17.8"
"@polkadot/util" "8.7.1"
"@polkadot/util-crypto" "8.7.1"
"@polkadot/networks@8.7.1":
version "8.7.1"
resolved "https://registry.yarnpkg.com/@polkadot/networks/-/networks-8.7.1.tgz#26c2ec6158c985bb77c510d98a3ab1c7e049f89c"
integrity sha512-8xAmhDW0ry5EKcEjp6VTuwoTm0DdDo/zHsmx88P6sVL87gupuFsL+B6TrsYLl8GcaqxujwrOlKB+CKTUg7qFKg==
dependencies:
"@babel/runtime" "^7.17.8"
"@polkadot/util" "8.7.1"
"@substrate/ss58-registry" "^1.17.0"
"@polkadot/util-crypto@8.7.1":
version "8.7.1"
resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-8.7.1.tgz#f9fcca2895b5f160ce1c2faa0aa3054cc7aa4655"
integrity sha512-TaSuJ2aNrB5sYK7YXszkEv24nYJKRFqjF2OrggoMg6uYxUAECvTkldFnhtgeizMweRMxJIBu6bMHlSIutbWgjw==
dependencies:
"@babel/runtime" "^7.17.8"
"@noble/hashes" "1.0.0"
"@noble/secp256k1" "1.5.5"
"@polkadot/networks" "8.7.1"
"@polkadot/util" "8.7.1"
"@polkadot/wasm-crypto" "^5.1.1"
"@polkadot/x-bigint" "8.7.1"
"@polkadot/x-randomvalues" "8.7.1"
"@scure/base" "1.0.0"
ed2curve "^0.3.0"
tweetnacl "^1.0.3"
"@polkadot/util@8.7.1":
version "8.7.1"
resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-8.7.1.tgz#27fe93bf7b8345276f10cfe9c0380510cd4584f6"
integrity sha512-XjY1bTo7V6OvOCe4yn8H2vifeuBciCy0gq0k5P1tlGUQLI/Yt0hvDmxcA0FEPtqg8CL+rYRG7WXGPVNjkrNvyQ==
dependencies:
"@babel/runtime" "^7.17.8"
"@polkadot/x-bigint" "8.7.1"
"@polkadot/x-global" "8.7.1"
"@polkadot/x-textdecoder" "8.7.1"
"@polkadot/x-textencoder" "8.7.1"
"@types/bn.js" "^5.1.0"
bn.js "^5.2.0"
ip-regex "^4.3.0"
"@polkadot/wasm-crypto-asmjs@^5.1.1":
version "5.1.1"
resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-5.1.1.tgz#6648e9c6f627501f61aef570e110022f2be1eff2"
integrity sha512-1WBwc2G3pZMKW1T01uXzKE30Sg22MXmF3RbbZiWWk3H2d/Er4jZQRpjumxO5YGWan+xOb7HQQdwnrUnrPgbDhg==
dependencies:
"@babel/runtime" "^7.17.8"
"@polkadot/wasm-crypto-wasm@^5.1.1":
version "5.1.1"
resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-5.1.1.tgz#dc371755a05fe93f87a2754a2bcf1ff42e4bb541"
integrity sha512-F9PZ30J2S8vUNl2oY7Myow5Xsx5z5uNVpnNlJwlmY8IXBvyucvyQ4HSdhJsrbs4W1BfFc0mHghxgp0FbBCnf/Q==
dependencies:
"@babel/runtime" "^7.17.8"
"@polkadot/wasm-crypto@^5.1.1":
version "5.1.1"
resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto/-/wasm-crypto-5.1.1.tgz#d1f8a0da631028ba904c374c1e8496ab3ba4636b"
integrity sha512-JCcAVfH8DhYuEyd4oX1ouByxhou0TvpErKn8kHjtzt7+tRoFi0nzWlmK4z49vszsV3JJgXxV81i10C0BYlwTcQ==
dependencies:
"@babel/runtime" "^7.17.8"
"@polkadot/wasm-crypto-asmjs" "^5.1.1"
"@polkadot/wasm-crypto-wasm" "^5.1.1"
"@polkadot/x-bigint@8.7.1":
version "8.7.1"
resolved "https://registry.yarnpkg.com/@polkadot/x-bigint/-/x-bigint-8.7.1.tgz#a496225def32e98c430c76b91c1579f48acf501a"
integrity sha512-ClkhgdB/KqcAKk3zA6Qw8wBL6Wz67pYTPkrAtImpvoPJmR+l4RARauv+MH34JXMUNlNb3aUwqN6lq2Z1zN+mJg==
dependencies:
"@babel/runtime" "^7.17.8"
"@polkadot/x-global" "8.7.1"
"@polkadot/x-global@8.7.1":
version "8.7.1"
resolved "https://registry.yarnpkg.com/@polkadot/x-global/-/x-global-8.7.1.tgz#b972044125a4fe059f4aef7c15a4e22d18179095"
integrity sha512-WOgUor16IihgNVdiTVGAWksYLUAlqjmODmIK1cuWrLOZtV1VBomWcb3obkO9sh5P6iWziAvCB/i+L0vnTN9ZCA==
dependencies:
"@babel/runtime" "^7.17.8"
"@polkadot/x-randomvalues@8.7.1":
version "8.7.1"
resolved "https://registry.yarnpkg.com/@polkadot/x-randomvalues/-/x-randomvalues-8.7.1.tgz#b7cc358c2a6d20f7e7798d45d1d5c7ac8c9ab4f2"
integrity sha512-njt17MlfN6yNyNEti7fL12lr5qM6A1aSGkWKVuqzc7XwSBesifJuW4km5u6r2gwhXjH2eHDv9SoQ7WXu8vrrkg==
dependencies:
"@babel/runtime" "^7.17.8"
"@polkadot/x-global" "8.7.1"
"@polkadot/x-textdecoder@8.7.1":
version "8.7.1"
resolved "https://registry.yarnpkg.com/@polkadot/x-textdecoder/-/x-textdecoder-8.7.1.tgz#b706ef98d5a033d02c633009fb8dab4a4f9d7d55"
integrity sha512-ia0Ie2zi4VdQdNVD2GE2FZzBMfX//hEL4w546RMJfZM2LqDS674LofHmcyrsv5zscLnnRyCxZC1+J2dt+6MDIA==
dependencies:
"@babel/runtime" "^7.17.8"
"@polkadot/x-global" "8.7.1"
"@polkadot/x-textencoder@8.7.1":
version "8.7.1"
resolved "https://registry.yarnpkg.com/@polkadot/x-textencoder/-/x-textencoder-8.7.1.tgz#7820e30081e8e0a607c1c27b9e3486d82d1a723e"
integrity sha512-XDO0A27Xy+eJCKSxENroB8Dcnl+UclGG4ZBei+P/BqZ9rsjskUyd2Vsl6peMXAcsxwOE7g0uTvujoGM8jpKOXw==
dependencies:
"@babel/runtime" "^7.17.8"
"@polkadot/x-global" "8.7.1"
"@scure/base@1.0.0":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.0.0.tgz#109fb595021de285f05a7db6806f2f48296fcee7"
integrity sha512-gIVaYhUsy+9s58m/ETjSJVKHhKTBMmcRb9cEV5/5dwvfDlfORjKrFsDeDHWRrm6RjcPvCLZFwGJjAjLj1gg4HA==
"@substrate/ss58-registry@^1.17.0":
version "1.17.0"
resolved "https://registry.yarnpkg.com/@substrate/ss58-registry/-/ss58-registry-1.17.0.tgz#a6a50dbef67da0114aff7cdae7c6eec685c5983b"
integrity sha512-YdQOxCtEZLnYZFg/zSzfROYtvIs5+iLD7p/VHoll7AVEhrPAmxgF5ggMDB2Dass7dfwABVx7heATbPFNg95Q8w==
"@types/bn.js@^5.1.0":
version "5.1.0"
resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.0.tgz#32c5d271503a12653c62cf4d2b45e6eab8cebc68"
integrity sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==
dependencies:
"@types/node" "*"
"@types/node@*":
version "17.0.23"
resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.23.tgz#3b41a6e643589ac6442bdbd7a4a3ded62f33f7da"
integrity sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==
bn.js@^5.2.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002"
integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==
ed2curve@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/ed2curve/-/ed2curve-0.3.0.tgz#322b575152a45305429d546b071823a93129a05d"
integrity sha512-8w2fmmq3hv9rCrcI7g9hms2pMunQr1JINfcjwR9tAyZqhtyaMN991lF/ZfHfr5tzZQ8c7y7aBgZbjfbd0fjFwQ==
dependencies:
tweetnacl "1.x.x"
ip-regex@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5"
integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==
regenerator-runtime@^0.13.4:
version "0.13.9"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
tweetnacl@1.x.x, tweetnacl@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596"
integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment