code: function Naive (connector, opts) {
    var self = this
    Blockchain.call(self, connector, opts)
  
    opts = _.extend({txCacheSize: 100}, opts)
    if (connector.networkName !== self.networkName) {
      throw new TypeError('Connector and Blockchain have different networks')
    }
  
    self.connector.on('newBlock', util.makeConcurrent(function (hash, height) {
      Promise.try(function () {
        self._syncStart()
      })
      .then(function () {
        self.latest = {hash: hash, height: height}
        self.emit('newBlock', hash, height)
      })
      .then(function () {
        self._syncStop()
      })
      .catch(function (err) {
        self.emit('error', err)
      })
    }, {concurrency: 1}))
    self.connector.subscribe({event: 'newBlock'})
  
    Promise.try(function () {
      timers.setImmediate(function () { self._syncStart() })
    })
    .then(function () {
      if (self.connector.isConnected()) {
        return
      }
  
      return new Promise(function (resolve) {
        self.connector.once('connect', resolve)
      })
    })
    .then(function () {
      return self.connector.getHeader('latest')
    })
    .then(function (header) {
      self.latest = {hash: header.hash, height: header.height}
      self.emit('newBlock', header.hash, header.height)
    })
    .then(function () {
      self._syncStop()
    })
    .catch(function (err) {
      self.emit('error', err)
    })
  
    self.connector.on('touchAddress', function (address, txid) {
      self.emit('touchAddress', address, txid)
    })
  }
docs: @class Naive
  @extends Blockchain
  
  @param {Connector} connector
  @param {Object} [opts]
  @param {string} [opts.networkName=livenet]
  @param {number} [opts.txCacheSize=100]