class Bitcoin::Node::SPV
SPV
class
Attributes
bloom[RW]
chain[R]
configuration[R]
logger[R]
pool[R]
running[RW]
server[RW]
wallet[RW]
Public Class Methods
new(configuration)
click to toggle source
Initialize spv settings @param [Bitcoin::Node::Configuration] configuration configuration for spv.
“`ruby config = Bitcoin::Node::Configuration.new
(network: :mainnet) spv = Bitcoin::Node::SPV.new(config)
spv.run ““
# File lib/bitcoin/node/spv.rb, line 24 def initialize(configuration) @chain = Bitcoin::Store::SPVChain.new @configuration = configuration @pool = Bitcoin::Network::Pool.new(self, @chain, @configuration) @logger = Bitcoin::Logger.create(:debug) @running = false @wallet = Bitcoin::Wallet::Base.current_wallet # TODO : optimize bloom filter parameters setup_filter end
Public Instance Methods
add_observer(observer)
click to toggle source
# File lib/bitcoin/node/spv.rb, line 71 def add_observer(observer) pool.add_observer(observer) end
broadcast(tx)
click to toggle source
broadcast a transaction
# File lib/bitcoin/node/spv.rb, line 54 def broadcast(tx) pool.broadcast(tx) logger.debug "broadcast tx: #{tx.to_hex}" end
delete_observer(observer)
click to toggle source
# File lib/bitcoin/node/spv.rb, line 75 def delete_observer(observer) pool.delete_observer(observer) end
filter_add(element)
click to toggle source
add filter element to bloom filter.
String
-
element. the hex string of txid, public key, public key hash or outpoint.
# File lib/bitcoin/node/spv.rb, line 61 def filter_add(element) bloom.add(element) pool.filter_add(element) end
filter_clear()
click to toggle source
clear bloom filter.
# File lib/bitcoin/node/spv.rb, line 67 def filter_clear pool.filter_clear end
run()
click to toggle source
open the node.
# File lib/bitcoin/node/spv.rb, line 36 def run # TODO need process running check. return if running logger.debug 'SPV node start running.' EM.run do # EM.start_server('0.0.0.0', Bitcoin.chain_params.default_port, Bitcoin::Network::InboundConnector, self) pool.start @server = Bitcoin::RPC::HttpServer.run(self, configuration.port) end end
shutdown()
click to toggle source
close the node.
# File lib/bitcoin/node/spv.rb, line 48 def shutdown pool.terminate logger.debug 'SPV node shutdown.' end
Private Instance Methods
setup_filter()
click to toggle source
# File lib/bitcoin/node/spv.rb, line 81 def setup_filter @bloom = Bitcoin::BloomFilter.create_filter(512, 0.01) wallet.watch_targets.each{|t|bloom.add(t.htb)} if wallet end