   [^Common$Block proto-block]
   (let [clj-block (proto/proto->clj proto-block (proto/parse-trees :block-configuration))]
     ;; 1. Block Event on all channels
-    (async/put! block-event-channel clj-block)
+    (async/put! block-event-chan clj-block)
     (doseq [[data code] (map list
                              (:data clj-block)
                              (-> (:metadata clj-block)

                                 (nth (block-metadata-index-map :transactions-filter))
                                 (.toByteArray)))]
      (let [payload (:payload data)
            channel-header (get-in payload [:header :channel-header])]
        ;; 2. Transaction Event with tx-id
        (when-let [ch (tx-id->chan tx-id)]
          (async/put! ch (make-TxEvent (:tx-id channel-header) code)))
        ;; 3. Chaincode event
        (when (= (:type channel-header) (proto/header-types :endorser-transaction))
          (let [chaincode-event (get-in payload [:data :actions 0 :payload :action

  (letfn [(%get-all-chans [ref]
            (map :ch (vals (deref ref))))]
    `[~command-ch
      ~block-event-chan
      ~@(%get-all-chans tx-id->chan-fn-map)
      ~@(%get-all-chans chaincode-id->chan-fn-map)]))

;; Block event is proto/Block
;; Chaincode event is proto/ChaincodeEvent
(defrecord TxEvent [tx-id status])
(defn make-TxEvent
  [tx-id code]
  (->TxEvent tx-id code))

(defonce event-go-loop
  (async/go-loop []
