2024-04-17 02:59:23
2024-04-17 20:47:51
下面是 BTC 地址 js 验证方法,截止到 2020 年。
地址规则:
1 开头的地址,是 P2PKH(pay-to-public-key-hash) 地址,也就是最原始的地址,称之为普通的BTC地址,地址长度 26 ~ 34 位;
3 开头的地址,是 P2SH(pay-to-script-hash)地址,内部也需要是 segwit,即隔离见证地址,地址长度 34 位;
bc1 开头的地址,是 BECH32 编码的地址,是专为 segwit 开发的地址格式,也是隔离见证地址,开头的地址长度大于 34 ~ 42 位。
比特币(Bitcoin)钱包地址使用 Base58 编码,Base58 包含了阿拉伯数字、小写英文字母,大写英文字母。
解决办法:
// sValidAddress_BTC (string) 返回 true 为合法 BTC 交易地址
function IsValidAddress_BTC (string) {
var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
var ALPHABET_MAP = {};
for (var i = 0; i < ALPHABET.length; ++i) {
ALPHABET_MAP[ALPHABET.charAt(i)] = i;
}
var BASE = string.length;
if (string.length === 0) return false;
for (var i = 0; i < string.length; ++i) {
var c = string[i];
if (!(c in ALPHABET_MAP)) return false;
}
if (string.length >= 26) {
// deal with leading number
if (string[0] === "1" && BASE >= 26 && BASE <= 34) return true;
if (string[0] === "3" && BASE == 34) return true;
if (string.substring(0, 3) === 'bc1' && BASE >= 34 ) return true;
} else {
return false
}
}