diff --git a/ethchain/block.go b/ethchain/block.go
index bdb243286290c54576774e8a03be07a402e5e7af..24ff5a32f1e1cc459ceaabeee68743c7bfab6fb2 100644
--- a/ethchain/block.go
+++ b/ethchain/block.go
@@ -223,7 +223,15 @@ func (block *Block) SetTransactions(txs []*Transaction) {
 		trie.Update(strconv.Itoa(i), string(tx.RlpEncode()))
 	}
 
-	block.TxSha = []byte(trie.Root.(string))
+	switch trie.Root.(type) {
+	case string:
+		block.TxSha = []byte(trie.Root.(string))
+	case []byte:
+		block.TxSha = trie.Root.([]byte)
+	default:
+		panic(fmt.Sprintf("invalid root type %T", trie.Root))
+	}
+
 }
 
 func (block *Block) Value() *ethutil.Value {