3
A
回答
4
這bitcoin_address_validator.rb從GitHub檢查一個比特幣地址是有效的:
require 'digest'
class BitcoinAddressValidator < ActiveModel::EachValidator
def validate(record, field, value)
unless valid_bitcoin_address?(value)
record.errors[field] << "Bitcoin address is invalid"
end
end
private
B58Chars = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
B58Base = B58Chars.length
def self.valid_bitcoin_address?(address)
(address =~ /^[a-zA-Z1-9]{33,35}$/) and version(address)
end
def self.version(address)
decoded = b58_decode(address, 25)
version = decoded[0, 1]
checksum = decoded[-4, decoded.length]
vh160 = decoded[0, decoded.length - 4]
hashed = (Digest::SHA2.new << (Digest::SHA2.new << vh160).digest).digest
hashed[0, 4] == checksum ? version[0] : nil
end
def self.b58_decode(value, length)
long_value = 0
index = 0
result = ""
value.reverse.each_char do |c|
long_value += B58Chars.index(c) * (B58Base ** index)
index += 1
end
while long_value >= 256 do
div, mod = long_value.divmod 256
result = mod.chr + result
long_value = div
end
result = long_value.chr + result
if result.length < length
result = 0.chr * (length - result.length) + result
end
result
end
end
通行證單元測試(見http://github.com/davout/bitcoin-bank)
並檢查格式
class User < ActiveRecord::Base
validates :bitcoin_address, format: { with: /\A(1|3)[a-zA-Z1-9]{26,33}\z/,
message: "invalid bitcoin address" }
# This is NOT calculate checksum
end
5
如果你不」要保持自己的實現,可以使用the bitcoin-ruby gem。
具體爲:Bitcoin.valid_address? "your_address_here"
相關問題
- 1. 比特幣地址檢查返回錯誤
- 2. 查找所有發佈的比特幣地址的網頁(PHP)
- 3. 如何使用addMarker()檢查地圖地址是否有效?
- 4. 在ruby中創建比特幣地址
- 5. Django驗證比特幣地址
- 6. 解析比特幣URL地址格式
- 7. 比特幣:如何檢查在許多比特幣地址上收到的付款
- 8. 檢查地址網址以檢查它是否有端點
- 9. 如何檢查電子郵件地址是否有效?
- 10. 如何檢查IP地址是否有效?與php
- 11. Android檢查電子郵件地址是否有效?
- 12. 我們如何檢查電子郵件地址是否有效?
- 13. 如何檢查以太坊地址是否有效?
- 14. 讀取IP地址和/檢查是否有效範圍之間
- 15. 檢查IP地址是否有效的方法?
- 16. 如何檢查變量是否包含有效的IP地址
- 17. 事務從bitcoinjs-lib的衍生比特幣地址比特幣芯未示出
- 18. 如何將比特幣從我的地址轉移到其他比特幣地址?
- 19. 檢查網址是否有效,並在PHP有效的XML
- 20. 如何從我的應用程序中檢查比特幣地址餘額?
- 21. 通過純javascript驗證比特幣地址(不是node.js)
- 22. 如何檢查有效的URL地址?
- 23. 檢查url是否有效
- 24. 檢查是否有效
- 25. 檢查cherrypy是否有效
- 26. 檢查BitmapData是否有效
- 27. 如何檢查地址是否是回送地址nodejs
- 28. 如何檢查地址是否是商業或住宅地址
- 29. C++ REST SDK如何檢查http地址是否無效
- 30. java中的ip地址是否有效