@ -299,6 +299,9 @@ Value getblock(const Array& params, bool fHelp)
CBlock block ;
CBlock block ;
CBlockIndex * pblockindex = mapBlockIndex [ hash ] ;
CBlockIndex * pblockindex = mapBlockIndex [ hash ] ;
if ( fHavePruned & & ! ( pblockindex - > nStatus & BLOCK_HAVE_DATA ) & & pblockindex - > nTx > 0 )
throw JSONRPCError ( RPC_INTERNAL_ERROR , " Block not available (pruned data) " ) ;
if ( ! ReadBlockFromDisk ( block , pblockindex ) )
if ( ! ReadBlockFromDisk ( block , pblockindex ) )
throw JSONRPCError ( RPC_INTERNAL_ERROR , " Can't read block from disk " ) ;
throw JSONRPCError ( RPC_INTERNAL_ERROR , " Can't read block from disk " ) ;
@ -492,6 +495,15 @@ Value getblockchaininfo(const Array& params, bool fHelp)
obj . push_back ( Pair ( " difficulty " , ( double ) GetDifficulty ( ) ) ) ;
obj . push_back ( Pair ( " difficulty " , ( double ) GetDifficulty ( ) ) ) ;
obj . push_back ( Pair ( " verificationprogress " , Checkpoints : : GuessVerificationProgress ( Params ( ) . Checkpoints ( ) , chainActive . Tip ( ) ) ) ) ;
obj . push_back ( Pair ( " verificationprogress " , Checkpoints : : GuessVerificationProgress ( Params ( ) . Checkpoints ( ) , chainActive . Tip ( ) ) ) ) ;
obj . push_back ( Pair ( " chainwork " , chainActive . Tip ( ) - > nChainWork . GetHex ( ) ) ) ;
obj . push_back ( Pair ( " chainwork " , chainActive . Tip ( ) - > nChainWork . GetHex ( ) ) ) ;
obj . push_back ( Pair ( " pruned " , fPruneMode ) ) ;
if ( fPruneMode )
{
CBlockIndex * block = chainActive . Tip ( ) ;
while ( block & & block - > pprev & & ( block - > pprev - > nStatus & BLOCK_HAVE_DATA ) )
block = block - > pprev ;
obj . push_back ( Pair ( " pruneheight " , block - > nHeight ) ) ;
}
return obj ;
return obj ;
}
}