@ -820,7 +820,8 @@ UniValue pruneblockchain(const JSONRPCRequest& request)
throw runtime_error (
throw runtime_error (
" pruneblockchain \n "
" pruneblockchain \n "
" \n Arguments: \n "
" \n Arguments: \n "
" 1. \" height \" (numeric, required) The block height to prune up to. May be set to a discrete height, or to a unix timestamp to prune based on block time. \n "
" 1. \" height \" (numeric, required) The block height to prune up to. May be set to a discrete height, or a unix timestamp \n "
" to prune blocks whose block time is at least 2 hours older than the provided timestamp. \n "
" \n Result: \n "
" \n Result: \n "
" n (numeric) Height of the last block pruned. \n "
" n (numeric) Height of the last block pruned. \n "
" \n Examples: \n "
" \n Examples: \n "
@ -839,7 +840,8 @@ UniValue pruneblockchain(const JSONRPCRequest& request)
// Height value more than a billion is too high to be a block height, and
// Height value more than a billion is too high to be a block height, and
// too low to be a block time (corresponds to timestamp from Sep 2001).
// too low to be a block time (corresponds to timestamp from Sep 2001).
if ( heightParam > 1000000000 ) {
if ( heightParam > 1000000000 ) {
CBlockIndex * pindex = chainActive . FindEarliestAtLeast ( heightParam ) ;
// Add a 2 hour buffer to include blocks which might have had old timestamps
CBlockIndex * pindex = chainActive . FindEarliestAtLeast ( heightParam - 7200 ) ;
if ( ! pindex ) {
if ( ! pindex ) {
throw JSONRPCError ( RPC_INTERNAL_ERROR , " Could not find block with at least the specified timestamp. " ) ;
throw JSONRPCError ( RPC_INTERNAL_ERROR , " Could not find block with at least the specified timestamp. " ) ;
}
}