code: func (engine *PullEngine) OnDigest(digest []string, nonce uint64, context interface{}) {
  	if !engine.isAcceptingDigests() || !engine.outgoingNONCES.Exists(nonce) {
  		return
  	}
  
  	engine.lock.Lock()
  	defer engine.lock.Unlock()
  
  	for _, n := range digest {
  		if engine.state.Exists(n) {
  			continue
  		}
  
  		if _, exists := engine.item2owners[n]; !exists {
  			engine.item2owners[n] = make([]string, 0)
  		}
  
  		engine.item2owners[n] = append(engine.item2owners[n], engine.nonces2peers[nonce])
  	}
  }
docs: // OnDigest notifies the engine that a digest has arrived