void handle_block_index( const connection_ptr& con,  chan_data& cdat, const block_index_message& msg )
          {
             ilog( "${msg}", ("msg",msg) );
             cdat.block_mgr.received_response( msg.index.header.id() );

             _fork_db.cache_header( msg.index.header );
             _new_block_info = true;

             if( msg.index.name_trxs.size() == 0 )
             {
                submit_block( msg.index.header );
             }
             else
             {
                _block_downloads.push_back( block_index_download_manager() );
                block_index_download_manager& dlmgr = _block_downloads.back();
                dlmgr.incomplete = name_block(msg.index.header);
                dlmgr.index      = msg.index;
                dlmgr.incomplete.name_trxs.resize( msg.index.name_trxs.size() );

                for( uint32_t i = 0; i < msg.index.name_trxs.size(); ++i )
                {
                    auto opt_trx = _trx_broadcast_mgr.get_value( msg.index.name_trxs[i] );                    
                    if( opt_trx )
                    {
                       dlmgr.incomplete.name_trxs[i] = *opt_trx;
                    }
                    else
                    {
                       dlmgr.unknown[msg.index.name_trxs[i]] = i;
                       _trx_broadcast_mgr.received_inventory_notice( msg.index.name_trxs[i] ); 
                       cdat.trxs_mgr.update_known( msg.index.name_trxs[i] );
                    }
                }
                if( dlmgr.unknown.size() == 0 )
                {
                    submit_block( dlmgr.incomplete );
                    _block_downloads.pop_back();
                }
             }
          }
 void name_miner::set_name_header( const name_header& name_trx_to_mine )
 {
     //ilog( "set header: ${h}", ("h",name_trx_to_mine) );
     my->_cur_block = name_block(name_trx_to_mine);
  //   my->start_new_block();
 }