module Ethereum::SPV
Public Class Methods
grabbing(node)
click to toggle source
# File lib/ethereum/spv.rb, line 19 def grabbing(node) proof.grabbing node if proof end
make_transaction_proof(block, tx)
click to toggle source
# File lib/ethereum/spv.rb, line 54 def make_transaction_proof(block, tx) result, nodes = record do block.apply_transaction(tx) end nodes .map {|x| RLP.encode(x) } .uniq .map {|x| RLP.decode(x) } end
mode()
click to toggle source
# File lib/ethereum/spv.rb, line 43 def mode case proof when ProofConstructor :record when ProofVerifier :verify else nil end end
proof()
click to toggle source
# File lib/ethereum/spv.rb, line 15 def proof proofs.last end
proofs()
click to toggle source
# File lib/ethereum/spv.rb, line 11 def proofs @proofs ||= [] end
record() { || ... }
click to toggle source
# File lib/ethereum/spv.rb, line 27 def record proofs.push ProofConstructor.new result = yield nodes = proof.decoded_nodes [result, nodes] ensure proofs.pop end
store(node)
click to toggle source
# File lib/ethereum/spv.rb, line 23 def store(node) proof.store node if proof end
verify(nodes) { || ... }
click to toggle source
# File lib/ethereum/spv.rb, line 36 def verify(nodes) proofs.push ProofVerifier.new(nodes: nodes) yield ensure proofs.pop end
verify_transaction_proof(block, tx, nodes)
click to toggle source
# File lib/ethereum/spv.rb, line 65 def verify_transaction_proof(block, tx, nodes) verify do block.apply_transaction(tx) end true rescue puts $! false end