diff --git a/data/bytes.go b/data/bytes.go
index <HASH>..<HASH> 100644
--- a/data/bytes.go
+++ b/data/bytes.go
@@ -30,6 +30,17 @@ var (
 // app base58...
 type Bytes []byte
 
+// Marshal needed for protobuf compatibility
+func (b Bytes) Marshal() ([]byte, error) {
+	return b, nil
+}
+
+// Unmarshal needed for protobuf compatibility
+func (b *Bytes) Unmarshal(data []byte) error {
+	*b = data
+	return nil
+}
+
 func (b Bytes) MarshalJSON() ([]byte, error) {
 	return Encoder.Marshal(b)
 }
diff --git a/data/bytes_test.go b/data/bytes_test.go
index <HASH>..<HASH> 100644
--- a/data/bytes_test.go
+++ b/data/bytes_test.go
@@ -9,6 +9,21 @@ import (
 	data "github.com/tendermint/go-wire/data"
 )
 
+func TestMarshal(t *testing.T) {
+	assert := assert.New(t)
+
+	b := []byte("hello world")
+	dataB := data.Bytes(b)
+	b2, err := dataB.Marshal()
+	assert.Nil(err)
+	assert.Equal(b, b2)
+
+	var dataB2 data.Bytes
+	err = (&dataB2).Unmarshal(b)
+	assert.Nil(err)
+	assert.Equal(dataB, dataB2)
+}
+
 func TestEncoders(t *testing.T) {
 	assert := assert.New(t)
data: add Marshal and Unmarshal methods to Bytes