error = str(e) + ': ' + address
print_log("error:", error)
- elif method == 'blockchain.address.get_path':
+ elif method == 'blockchain.address.get_proof':
try:
address = str(params[0])
- result = self.storage.get_address_path(address)
+ result = self.storage.get_proof(address)
except BaseException, e:
error = str(e) + ': ' + address
print_log("error:", error)
error = str(e) + ': ' + address
print_log("error:", error)
+ elif method == 'blockchain.utxo.get_address':
+ try:
+ txid = str(params[0])
+ pos = int(params[1])
+ txi = (txid + int_to_hex(pos, 4)).decode('hex')
+ result = self.storage.get_address(txi)
+ except BaseException, e:
+ error = str(e)
+ print_log("error:", error, params)
+
elif method == 'blockchain.block.get_header':
if cache_only:
result = -1
else:
try:
- height = params[0]
+ height = int(params[0])
result = self.get_header(height)
except BaseException, e:
error = str(e) + ': %d' % height
result = -1
else:
try:
- index = params[0]
+ index = int(params[0])
result = self.get_chunk(index)
except BaseException, e:
error = str(e) + ': %d' % index
def catch_up(self, sync=True):
- prh = None
+ prev_root_hash = None
while not self.shared.stopped():
self.mtime('')
if (next_block.get('previousblockhash') == self.storage.last_hash) and not revert:
+ prev_root_hash = self.storage.get_root_hash()
+
self.import_block(next_block, next_block_hash, self.storage.height+1, sync)
self.storage.height = self.storage.height + 1
self.write_header(self.block2header(next_block), sync)
self.mtimes['daemon'] = 0
self.mtimes['import'] = 0
- if prh:
- assert prh == self.storage.get_root_hash().encode('hex')
- prh = None
-
else:
- prh = self.storage.get_root_hash().encode('hex')
# revert current block
block = self.getfullblock(self.storage.last_hash)
self.header = self.read_header(self.storage.height)
self.storage.last_hash = self.hash_header(self.header)
+ if prev_root_hash:
+ assert prev_root_hash == self.storage.get_root_hash()
+ prev_root_hash = None
+
self.header = self.block2header(self.bitcoind('getblock', [self.storage.last_hash]))
+ self.header['utxo_root'] = self.storage.get_root_hash().encode('hex')
if self.shared.stopped():
print_log( "closing database" )