diff --git a/core/types/block.go b/core/types/block.go
index a40bac42c8daf8e4a5d92d8d61a5c2c44c3e4d2b..d5cd8a21ea6e460eba8feabd1d274a25aff4d256 100644
--- a/core/types/block.go
+++ b/core/types/block.go
@@ -250,10 +250,10 @@ func (self *Block) AddReceipt(receipt *Receipt) {
 }
 
 func (self *Block) RlpData() interface{} {
-	// 	return []interface{}{self.header, self.transactions, self.uncles}
-	// }
+	return []interface{}{self.header, self.transactions, self.uncles}
+}
 
-	// func (self *Block) RlpDataForStorage() interface{} {
+func (self *Block) RlpDataForStorage() interface{} {
 	return []interface{}{self.header, self.transactions, self.uncles, self.Td /* TODO receipts */}
 }
 
diff --git a/eth/protocol.go b/eth/protocol.go
index f0a749d3371daed2dd01c234c3e5e212085f29dc..214eed875d5f018dd32dc54683c51fc947e0ecba 100644
--- a/eth/protocol.go
+++ b/eth/protocol.go
@@ -185,7 +185,10 @@ func (self *ethProtocol) handle() error {
 		if err := msg.Decode(&txs); err != nil {
 			return self.protoError(ErrDecode, "msg %v: %v", msg, err)
 		}
-		for _, tx := range txs {
+		for i, tx := range txs {
+			if tx == nil {
+				return self.protoError(ErrDecode, "transaction %d is nil", i)
+			}
 			jsonlogger.LogJson(&logger.EthTxReceived{
 				TxHash:   tx.Hash().Hex(),
 				RemoteId: self.peer.ID().String(),
diff --git a/eth/protocol_test.go b/eth/protocol_test.go
index 6a8eedaddf661b41acfb44cff01e601188fad35b..2228fa0ecdd2a07107b184e984365da4a301ba91 100644
--- a/eth/protocol_test.go
+++ b/eth/protocol_test.go
@@ -359,3 +359,42 @@ func TestBlockMsg(t *testing.T) {
 	eth.checkError(ErrDecode, delay)
 
 }
+
+func TestTransactionsMsg(t *testing.T) {
+	logInit()
+	eth := newEth(t)
+	txs := make(chan *types.Transaction)
+
+	eth.txPool.addTransactions = func(t []*types.Transaction) {
+		for _, tx := range t {
+			txs <- tx
+		}
+	}
+	go eth.run()
+
+	eth.handshake(t, true)
+	err := p2p.ExpectMsg(eth, TxMsg, []interface{}{})
+	if err != nil {
+		t.Errorf("transactions expected, got %v", err)
+	}
+
+	var delay = 3 * time.Second
+	tx := &types.Transaction{}
+
+	go p2p.Send(eth, TxMsg, []interface{}{tx, tx})
+	timer := time.After(delay)
+	for i := int64(0); i < 2; i++ {
+		select {
+		case <-txs:
+		case <-timer:
+			return
+		case err := <-eth.quit:
+			t.Errorf("no error expected, got %v", err)
+			return
+		}
+	}
+
+	go p2p.Send(eth, TxMsg, []interface{}{[]interface{}{}})
+	eth.checkError(ErrDecode, delay)
+
+}