From 41e62cb191272893dbd2cb5ccbf2172897984800 Mon Sep 17 00:00:00 2001 From: Michael Witrant Date: Sat, 15 Feb 2014 19:29:34 +0100 Subject: [PATCH] verify address version --- config/config.yml.sample | 4 ++++ lib/bitcoin_address_validator.rb | 10 +++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/config/config.yml.sample b/config/config.yml.sample index 1f1adf84..503521d9 100644 --- a/config/config.yml.sample +++ b/config/config.yml.sample @@ -38,3 +38,7 @@ min_payout: 1.0 # in PPC our_fee: 0.05 tipper_delay: "1.hour" +address_versions: # 55/117 for peercoin, 111/196 for testnet, see base58.h + - 111 + - 196 + diff --git a/lib/bitcoin_address_validator.rb b/lib/bitcoin_address_validator.rb index 3a534483..7332bd7a 100644 --- a/lib/bitcoin_address_validator.rb +++ b/lib/bitcoin_address_validator.rb @@ -13,7 +13,15 @@ def validate_each(record, field, value) B58Base = B58Chars.length def valid_bitcoin_address?(address) - (address =~ /^[a-zA-Z1-9]{33,35}$/) and version(address) + if (address =~ /^[a-zA-Z1-9]{33,35}$/) and version = version(address) + if (expected_versions = CONFIG["address_versions"]).present? + expected_versions.include?(version.ord) + else + true + end + else + false + end end def version(address)