From 7b40167f58789803610747a4c385c0deee030f90 Mon Sep 17 00:00:00 2001 From: Thane Thomson Date: Tue, 30 Aug 2022 10:13:55 -0400 Subject: [PATCH] abci: Port `EventAttribute` field type change to `main` (#9335) * types: Refactor EventAttribute (#6408) Cherry-pick of 09a6ad7b1e1112e6b49053323130d27d161d6d9e * Ensure context is honored Signed-off-by: Thane Thomson * Replace with tagged switch Signed-off-by: Thane Thomson * Ensure contexts are honored Signed-off-by: Thane Thomson * Add UPGRADING note about type change Signed-off-by: Thane Thomson * Remove unnecessary conversion Signed-off-by: Thane Thomson Signed-off-by: Thane Thomson Co-authored-by: Aleksandr Bezobchuk --- CHANGELOG_PENDING.md | 1 + UPGRADING.md | 5 ++ abci/example/kvstore/kvstore.go | 17 ++-- abci/types/messages_test.go | 4 +- abci/types/types.pb.go | 124 +++++++++++++-------------- proto/tendermint/abci/types.proto | 6 +- state/indexer/block/kv/kv.go | 4 +- state/indexer/block/kv/kv_test.go | 16 ++-- state/indexer/sink/psql/psql.go | 4 +- state/indexer/sink/psql/psql_test.go | 4 +- state/state_test.go | 8 +- state/txindex/kv/kv.go | 36 +++++--- state/txindex/kv/kv_bench_test.go | 4 +- state/txindex/kv/kv_test.go | 26 +++--- test/e2e/app/app.go | 8 +- types/event_bus.go | 4 +- types/event_bus_test.go | 28 +++--- 17 files changed, 156 insertions(+), 143 deletions(-) diff --git a/CHANGELOG_PENDING.md b/CHANGELOG_PENDING.md index 19248159e..adf68a800 100644 --- a/CHANGELOG_PENDING.md +++ b/CHANGELOG_PENDING.md @@ -20,6 +20,7 @@ Friendly reminder, we have a [bug bounty program](https://hackerone.com/tendermi - Rename `AppVersion` to `App` so as to not stutter. - [abci] \#9301 New ABCI methods `PrepareProposal` and `ProcessProposal` which give the app control over transactions proposed and allows for verification of proposed blocks. - [abci] \#8656, \#8901 Added cli commands for `PrepareProposal` and `ProcessProposal`. (@jmalicevic, @hvanz) + - [abci] \#6403 Change the `key` and `value` fields from `[]byte` to `string` in the `EventAttribute` type. (@alexanderbez) - P2P Protocol diff --git a/UPGRADING.md b/UPGRADING.md index 97ba3f622..55a859969 100644 --- a/UPGRADING.md +++ b/UPGRADING.md @@ -26,6 +26,11 @@ Tendermint Core. in order to ensure compatibility. * The `SetOption` method has been removed from the ABCI `Client` interface. The corresponding Protobuf types have been deprecated. +* The `key` and `value` fields in the `EventAttribute` type have been changed + from type `bytes` to `string`. As per the [Protocol Buffers updating + guidelines](https://developers.google.com/protocol-buffers/docs/proto3#updating), + this should have no effect on the wire-level encoding for UTF8-encoded + strings. ## v0.34.20 diff --git a/abci/example/kvstore/kvstore.go b/abci/example/kvstore/kvstore.go index aa05f2fa9..e39291390 100644 --- a/abci/example/kvstore/kvstore.go +++ b/abci/example/kvstore/kvstore.go @@ -91,15 +91,16 @@ func (app *Application) DeliverTx(req types.RequestDeliverTx) types.ResponseDeli if isReplacedTx(req.Tx) { app.txToRemove[string(req.Tx)] = struct{}{} } - var key, value []byte + var key, value string + parts := bytes.Split(req.Tx, []byte("=")) if len(parts) == 2 { - key, value = parts[0], parts[1] + key, value = string(parts[0]), string(parts[1]) } else { - key, value = req.Tx, req.Tx + key, value = string(req.Tx), string(req.Tx) } - err := app.state.db.Set(prefixKey(key), value) + err := app.state.db.Set(prefixKey([]byte(key)), []byte(value)) if err != nil { panic(err) } @@ -109,10 +110,10 @@ func (app *Application) DeliverTx(req types.RequestDeliverTx) types.ResponseDeli { Type: "app", Attributes: []types.EventAttribute{ - {Key: []byte("creator"), Value: []byte("Cosmoshi Netowoko"), Index: true}, - {Key: []byte("key"), Value: key, Index: true}, - {Key: []byte("index_key"), Value: []byte("index is working"), Index: true}, - {Key: []byte("noindex_key"), Value: []byte("index is working"), Index: false}, + {Key: "creator", Value: "Cosmoshi Netowoko", Index: true}, + {Key: "key", Value: key, Index: true}, + {Key: "index_key", Value: "index is working", Index: true}, + {Key: "noindex_key", Value: "index is working", Index: false}, }, }, } diff --git a/abci/types/messages_test.go b/abci/types/messages_test.go index 8da12cfff..491d10c7f 100644 --- a/abci/types/messages_test.go +++ b/abci/types/messages_test.go @@ -25,7 +25,7 @@ func TestMarshalJSON(t *testing.T) { { Type: "testEvent", Attributes: []EventAttribute{ - {Key: []byte("pho"), Value: []byte("bo")}, + {Key: "pho", Value: "bo"}, }, }, }, @@ -92,7 +92,7 @@ func TestWriteReadMessage2(t *testing.T) { { Type: "testEvent", Attributes: []EventAttribute{ - {Key: []byte("abc"), Value: []byte("def")}, + {Key: "abc", Value: "def"}, }, }, }, diff --git a/abci/types/types.pb.go b/abci/types/types.pb.go index 766f900c7..7f87c7868 100644 --- a/abci/types/types.pb.go +++ b/abci/types/types.pb.go @@ -2894,8 +2894,8 @@ func (m *Event) GetAttributes() []EventAttribute { // EventAttribute is a single key-value pair, associated with an event. type EventAttribute struct { - Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` Index bool `protobuf:"varint,3,opt,name=index,proto3" json:"index,omitempty"` } @@ -2932,18 +2932,18 @@ func (m *EventAttribute) XXX_DiscardUnknown() { var xxx_messageInfo_EventAttribute proto.InternalMessageInfo -func (m *EventAttribute) GetKey() []byte { +func (m *EventAttribute) GetKey() string { if m != nil { return m.Key } - return nil + return "" } -func (m *EventAttribute) GetValue() []byte { +func (m *EventAttribute) GetValue() string { if m != nil { return m.Value } - return nil + return "" } func (m *EventAttribute) GetIndex() bool { @@ -3459,7 +3459,7 @@ func init() { func init() { proto.RegisterFile("tendermint/abci/types.proto", fileDescriptor_252557cfdd89a31a) } var fileDescriptor_252557cfdd89a31a = []byte{ - // 3004 bytes of a gzipped FileDescriptorProto + // 3006 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x5a, 0x3b, 0x73, 0x23, 0xc7, 0xf1, 0xc7, 0xfb, 0xd1, 0x78, 0x2d, 0xe7, 0xa8, 0x13, 0x0e, 0x3a, 0x91, 0xa7, 0xbd, 0x92, 0x74, 0x77, 0x92, 0x48, 0xfd, 0xa9, 0xff, 0xe9, 0x51, 0xb2, 0x6c, 0x11, 0x38, 0x9c, 0x41, 0x91, 0x22, @@ -3607,47 +3607,47 @@ var fileDescriptor_252557cfdd89a31a = []byte{ 0x9e, 0x8a, 0xad, 0x2e, 0xcd, 0x1f, 0xea, 0x23, 0xc8, 0x32, 0x6f, 0x43, 0x3d, 0x07, 0xab, 0x6b, 0x8a, 0x64, 0x94, 0xb6, 0xd1, 0xcf, 0x00, 0x34, 0x42, 0x1c, 0xa3, 0x37, 0x0e, 0x06, 0x58, 0x9f, 0xef, 0xad, 0xb6, 0x3d, 0xbe, 0xe6, 0x75, 0xe1, 0xb6, 0x56, 0x03, 0xd1, 0x90, 0xeb, 0x0a, 0x29, - 0x94, 0xf7, 0xa1, 0x1a, 0x95, 0xf5, 0xd2, 0xa7, 0xe4, 0x9c, 0xf4, 0x29, 0x15, 0x4e, 0x9f, 0xfc, - 0xe4, 0x2b, 0xcd, 0x4b, 0xd8, 0xac, 0x23, 0x7f, 0x92, 0x84, 0x42, 0x77, 0x22, 0xce, 0x71, 0x4c, - 0xf9, 0x34, 0x10, 0x4d, 0x85, 0x8b, 0x85, 0xbc, 0x1e, 0x9b, 0xf6, 0xab, 0xbc, 0x6f, 0xfa, 0x37, - 0x35, 0xb3, 0x2c, 0xda, 0xf5, 0xaa, 0xdd, 0xc2, 0x3b, 0xbd, 0x0e, 0x45, 0x3f, 0xd6, 0xd0, 0xac, - 0xde, 0xab, 0xac, 0x24, 0x45, 0x4a, 0xca, 0xbb, 0xac, 0x18, 0x6f, 0x7d, 0x28, 0xca, 0x91, 0x69, - 0x85, 0x77, 0x64, 0x1d, 0x6a, 0x53, 0x81, 0x0a, 0xbd, 0x0e, 0x79, 0x7b, 0xdc, 0x53, 0x3d, 0xf3, - 0x4c, 0xd5, 0x9f, 0xbc, 0x7c, 0x71, 0xdc, 0x1b, 0x1a, 0xfd, 0x5d, 0x7c, 0xee, 0x4d, 0xc6, 0x1e, - 0xf7, 0x76, 0xb9, 0x15, 0xf9, 0x28, 0xa9, 0xf0, 0x28, 0x67, 0x50, 0xf0, 0x0e, 0x05, 0xfa, 0x3e, - 0x14, 0xfd, 0x18, 0xe8, 0xff, 0xa3, 0x89, 0x0d, 0x9e, 0x42, 0x7d, 0x20, 0x42, 0xc1, 0x87, 0x6b, - 0x9c, 0x9a, 0x5e, 0xd5, 0x8d, 0xa3, 0xfc, 0x14, 0xdb, 0x9d, 0x1a, 0xff, 0xb0, 0xe7, 0x81, 0x0a, - 0xf9, 0x37, 0x49, 0x90, 0xa6, 0x4f, 0xe5, 0x7f, 0x72, 0x02, 0xd4, 0x29, 0xd2, 0xd3, 0xaf, 0x62, - 0x3a, 0x09, 0x1f, 0x4d, 0x95, 0x95, 0x0a, 0xa5, 0xb6, 0x3d, 0xa2, 0xfc, 0x71, 0x0a, 0x4a, 0xa1, - 0x9a, 0x1e, 0xfa, 0xff, 0xd0, 0x15, 0xa9, 0xce, 0xc9, 0x2d, 0x42, 0xbc, 0x41, 0xf9, 0x3f, 0xba, - 0xb0, 0xd4, 0xe5, 0x17, 0x16, 0xf7, 0x1b, 0xc7, 0x2b, 0x11, 0x66, 0x2e, 0x5d, 0x22, 0x7c, 0x1e, - 0x10, 0xb1, 0x88, 0x36, 0x54, 0xcf, 0x2c, 0x62, 0x98, 0xa7, 0x2a, 0x3f, 0x1a, 0x3c, 0xe3, 0x93, - 0xd8, 0x97, 0x07, 0xec, 0xc3, 0x21, 0x3b, 0x25, 0x3f, 0x4f, 0x42, 0xc1, 0x0f, 0xdd, 0x97, 0xad, - 0xe6, 0x5f, 0x85, 0x9c, 0x88, 0x4e, 0xbc, 0x9c, 0x2f, 0x7a, 0x73, 0x6b, 0xa1, 0x0d, 0x28, 0x8c, - 0x30, 0xd1, 0x58, 0xfe, 0xc2, 0x81, 0xa8, 0xdf, 0xbf, 0xf3, 0x1a, 0x94, 0x42, 0x3f, 0x56, 0xa8, - 0x9f, 0xd8, 0x6f, 0xbf, 0x23, 0x25, 0x1a, 0xf9, 0x4f, 0x3e, 0xbf, 0x91, 0xde, 0xc7, 0x1f, 0xd2, - 0x1b, 0xa6, 0xb4, 0x5b, 0x9d, 0x76, 0x6b, 0x57, 0x4a, 0x36, 0x4a, 0x9f, 0x7c, 0x7e, 0x23, 0xaf, - 0x60, 0x56, 0xbe, 0xba, 0xb3, 0x0b, 0xb5, 0xa9, 0x8d, 0x89, 0xfa, 0x77, 0x04, 0xd5, 0x7b, 0xc7, - 0x87, 0x7b, 0x3b, 0xad, 0xed, 0x6e, 0x5b, 0x7d, 0x70, 0xd0, 0x6d, 0x4b, 0x49, 0xf4, 0x38, 0x5c, - 0xd9, 0xdb, 0xf9, 0x61, 0xa7, 0xab, 0xb6, 0xf6, 0x76, 0xda, 0xfb, 0x5d, 0x75, 0xbb, 0xdb, 0xdd, - 0x6e, 0xed, 0x4a, 0xa9, 0xad, 0x7f, 0x00, 0xd4, 0xb6, 0x9b, 0xad, 0x1d, 0x1a, 0x9f, 0x8d, 0xbe, - 0xc6, 0x0a, 0x05, 0x2d, 0xc8, 0xb0, 0x52, 0xc0, 0x85, 0x4f, 0x45, 0x1a, 0x17, 0xd7, 0x36, 0xd1, - 0x7d, 0xc8, 0xb2, 0x2a, 0x01, 0xba, 0xf8, 0xed, 0x48, 0x63, 0x41, 0xb1, 0x93, 0x4e, 0x86, 0x5d, - 0xa7, 0x0b, 0x1f, 0x93, 0x34, 0x2e, 0xae, 0x7d, 0x22, 0x05, 0x8a, 0x01, 0xca, 0x58, 0xfc, 0xb8, - 0xa2, 0xb1, 0x84, 0x77, 0x44, 0x7b, 0x90, 0xf7, 0x80, 0xe1, 0xa2, 0xe7, 0x1e, 0x8d, 0x85, 0xc5, - 0x49, 0x6a, 0x2e, 0x0e, 0xe0, 0x2f, 0x7e, 0xbb, 0xd2, 0x58, 0x50, 0x69, 0x45, 0x3b, 0x90, 0x13, - 0x99, 0xf3, 0x82, 0x27, 0x1c, 0x8d, 0x45, 0xc5, 0x46, 0x6a, 0xb4, 0xa0, 0x34, 0xb2, 0xf8, 0x45, - 0x4e, 0x63, 0x89, 0x22, 0x32, 0x3a, 0x06, 0x08, 0xc1, 0xf5, 0x25, 0x9e, 0xda, 0x34, 0x96, 0x29, - 0x0e, 0xa3, 0x03, 0x28, 0xf8, 0xe8, 0x69, 0xe1, 0xc3, 0x97, 0xc6, 0xe2, 0x2a, 0x2d, 0x7a, 0x08, - 0x95, 0x28, 0x6a, 0x58, 0xee, 0x39, 0x4b, 0x63, 0xc9, 0xf2, 0x2b, 0xd5, 0x1f, 0x85, 0x10, 0xcb, - 0x3d, 0x6f, 0x69, 0x2c, 0x59, 0x8d, 0x45, 0xef, 0xc3, 0xca, 0x6c, 0x8a, 0xbf, 0xfc, 0x6b, 0x97, - 0xc6, 0x25, 0xea, 0xb3, 0x68, 0x04, 0x68, 0x0e, 0x34, 0xb8, 0xc4, 0xe3, 0x97, 0xc6, 0x65, 0xca, - 0xb5, 0x48, 0x87, 0xda, 0x74, 0xbe, 0xbd, 0xec, 0x63, 0x98, 0xc6, 0xd2, 0xa5, 0x5b, 0x3e, 0x4a, - 0x34, 0x4f, 0x5f, 0xf6, 0x71, 0x4c, 0x63, 0xe9, 0x4a, 0x6e, 0xb3, 0xfd, 0xc5, 0xd7, 0x6b, 0xc9, - 0x2f, 0xbf, 0x5e, 0x4b, 0xfe, 0xf5, 0xeb, 0xb5, 0xe4, 0xa7, 0xdf, 0xac, 0x25, 0xbe, 0xfc, 0x66, - 0x2d, 0xf1, 0xa7, 0x6f, 0xd6, 0x12, 0x3f, 0x7e, 0xee, 0xd4, 0x20, 0x83, 0x71, 0x6f, 0xa3, 0x6f, - 0x8d, 0x36, 0xc3, 0x2f, 0x04, 0xe7, 0xbd, 0x5a, 0xec, 0xe5, 0x58, 0x8c, 0x7c, 0xe9, 0x5f, 0x01, - 0x00, 0x00, 0xff, 0xff, 0x9e, 0x97, 0xe4, 0x35, 0xd5, 0x28, 0x00, 0x00, + 0x94, 0xf7, 0xa1, 0x1a, 0x95, 0xf5, 0xd2, 0x27, 0x3e, 0x87, 0x68, 0xfa, 0xc4, 0xb3, 0x61, 0x91, + 0x3e, 0xf9, 0xc9, 0x57, 0x9a, 0x97, 0xb0, 0x59, 0x47, 0xfe, 0x24, 0x09, 0x85, 0xee, 0x44, 0x9c, + 0xe3, 0x98, 0xf2, 0x69, 0x20, 0x9a, 0x0a, 0x17, 0x0b, 0x79, 0x3d, 0x36, 0xed, 0x57, 0x79, 0xdf, + 0xf4, 0x6f, 0x6a, 0x66, 0x59, 0xb4, 0xeb, 0x55, 0xbb, 0x85, 0x77, 0x7a, 0x1d, 0x8a, 0x7e, 0xac, + 0xa1, 0x59, 0xbd, 0x57, 0x59, 0x49, 0x8a, 0x94, 0x94, 0x77, 0x59, 0x31, 0xde, 0xfa, 0x50, 0x94, + 0x23, 0xd3, 0x0a, 0xef, 0xc8, 0x3a, 0xd4, 0xa6, 0x02, 0x15, 0x7a, 0x1d, 0xf2, 0xf6, 0xb8, 0xa7, + 0x7a, 0xe6, 0x99, 0xaa, 0x3f, 0x79, 0xf9, 0xe2, 0xb8, 0x37, 0x34, 0xfa, 0xbb, 0xf8, 0xdc, 0x9b, + 0x8c, 0x3d, 0xee, 0xed, 0x72, 0x2b, 0xf2, 0x51, 0x52, 0xe1, 0x51, 0xce, 0xa0, 0xe0, 0x1d, 0x0a, + 0xf4, 0x7d, 0x28, 0xfa, 0x31, 0xd0, 0xff, 0x47, 0x13, 0x1b, 0x3c, 0x85, 0xfa, 0x40, 0x84, 0x82, + 0x0f, 0xd7, 0x38, 0x35, 0xbd, 0xaa, 0x1b, 0x47, 0xf9, 0x29, 0xb6, 0x3b, 0x35, 0xfe, 0x61, 0xcf, + 0x03, 0x15, 0xf2, 0x6f, 0x92, 0x20, 0x4d, 0x9f, 0xca, 0xff, 0xe4, 0x04, 0xa8, 0x53, 0xa4, 0xa7, + 0x5f, 0xc5, 0x74, 0x12, 0x3e, 0x9a, 0x2a, 0x2b, 0x15, 0x4a, 0x6d, 0x7b, 0x44, 0xf9, 0xe3, 0x14, + 0x94, 0x42, 0x35, 0x3d, 0xf4, 0xff, 0xa1, 0x2b, 0x52, 0x9d, 0x93, 0x5b, 0x84, 0x78, 0x83, 0xf2, + 0x7f, 0x74, 0x61, 0xa9, 0xcb, 0x2f, 0x2c, 0xee, 0x37, 0x8e, 0x57, 0x22, 0xcc, 0x5c, 0xba, 0x44, + 0xf8, 0x3c, 0x20, 0x62, 0x11, 0x6d, 0xa8, 0x9e, 0x59, 0xc4, 0x30, 0x4f, 0x55, 0x7e, 0x34, 0x78, + 0xc6, 0x27, 0xb1, 0x2f, 0x0f, 0xd8, 0x87, 0x43, 0x76, 0x4a, 0x7e, 0x9e, 0x84, 0x82, 0x1f, 0xba, + 0x2f, 0x5b, 0xcd, 0xbf, 0x0a, 0x39, 0x11, 0x9d, 0x78, 0x39, 0x5f, 0xf4, 0xe6, 0xd6, 0x42, 0x1b, + 0x50, 0x18, 0x61, 0xa2, 0xb1, 0xfc, 0x85, 0x03, 0x51, 0xbf, 0x7f, 0xe7, 0x35, 0x28, 0x85, 0x7e, + 0xac, 0x50, 0x3f, 0xb1, 0xdf, 0x7e, 0x47, 0x4a, 0x34, 0xf2, 0x9f, 0x7c, 0x7e, 0x23, 0xbd, 0x8f, + 0x3f, 0xa4, 0x37, 0x4c, 0x69, 0xb7, 0x3a, 0xed, 0xd6, 0xae, 0x94, 0x6c, 0x94, 0x3e, 0xf9, 0xfc, + 0x46, 0x5e, 0xc1, 0xac, 0x7c, 0x75, 0x67, 0x17, 0x6a, 0x53, 0x1b, 0x13, 0xf5, 0xef, 0x08, 0xaa, + 0xf7, 0x8e, 0x0f, 0xf7, 0x76, 0x5a, 0xdb, 0xdd, 0xb6, 0xfa, 0xe0, 0xa0, 0xdb, 0x96, 0x92, 0xe8, + 0x71, 0xb8, 0xb2, 0xb7, 0xf3, 0xc3, 0x4e, 0x57, 0x6d, 0xed, 0xed, 0xb4, 0xf7, 0xbb, 0xea, 0x76, + 0xb7, 0xbb, 0xdd, 0xda, 0x95, 0x52, 0x5b, 0xff, 0x00, 0xa8, 0x6d, 0x37, 0x5b, 0x3b, 0x34, 0x3e, + 0x1b, 0x7d, 0x8d, 0x15, 0x0a, 0x5a, 0x90, 0x61, 0xa5, 0x80, 0x0b, 0x9f, 0x8a, 0x34, 0x2e, 0xae, + 0x6d, 0xa2, 0xfb, 0x90, 0x65, 0x55, 0x02, 0x74, 0xf1, 0xdb, 0x91, 0xc6, 0x82, 0x62, 0x27, 0x9d, + 0x0c, 0xbb, 0x4e, 0x17, 0x3e, 0x26, 0x69, 0x5c, 0x5c, 0xfb, 0x44, 0x0a, 0x14, 0x03, 0x94, 0xb1, + 0xf8, 0x71, 0x45, 0x63, 0x09, 0xef, 0x88, 0xf6, 0x20, 0xef, 0x01, 0xc3, 0x45, 0xcf, 0x3d, 0x1a, + 0x0b, 0x8b, 0x93, 0xd4, 0x5c, 0x1c, 0xc0, 0x5f, 0xfc, 0x76, 0xa5, 0xb1, 0xa0, 0xd2, 0x8a, 0x76, + 0x20, 0x27, 0x32, 0xe7, 0x05, 0x4f, 0x38, 0x1a, 0x8b, 0x8a, 0x8d, 0xd4, 0x68, 0x41, 0x69, 0x64, + 0xf1, 0x8b, 0x9c, 0xc6, 0x12, 0x45, 0x64, 0x74, 0x0c, 0x10, 0x82, 0xeb, 0x4b, 0x3c, 0xb5, 0x69, + 0x2c, 0x53, 0x1c, 0x46, 0x07, 0x50, 0xf0, 0xd1, 0xd3, 0xc2, 0x87, 0x2f, 0x8d, 0xc5, 0x55, 0x5a, + 0xf4, 0x10, 0x2a, 0x51, 0xd4, 0xb0, 0xdc, 0x73, 0x96, 0xc6, 0x92, 0xe5, 0x57, 0xaa, 0x3f, 0x0a, + 0x21, 0x96, 0x7b, 0xde, 0xd2, 0x58, 0xb2, 0x1a, 0x8b, 0xde, 0x87, 0x95, 0xd9, 0x14, 0x7f, 0xf9, + 0xd7, 0x2e, 0x8d, 0x4b, 0xd4, 0x67, 0xd1, 0x08, 0xd0, 0x1c, 0x68, 0x70, 0x89, 0xc7, 0x2f, 0x8d, + 0xcb, 0x94, 0x6b, 0x91, 0x0e, 0xb5, 0xe9, 0x7c, 0x7b, 0xd9, 0xc7, 0x30, 0x8d, 0xa5, 0x4b, 0xb7, + 0x7c, 0x94, 0x68, 0x9e, 0xbe, 0xec, 0xe3, 0x98, 0xc6, 0xd2, 0x95, 0xdc, 0x66, 0xfb, 0x8b, 0xaf, + 0xd7, 0x92, 0x5f, 0x7e, 0xbd, 0x96, 0xfc, 0xeb, 0xd7, 0x6b, 0xc9, 0x4f, 0xbf, 0x59, 0x4b, 0x7c, + 0xf9, 0xcd, 0x5a, 0xe2, 0x4f, 0xdf, 0xac, 0x25, 0x7e, 0xfc, 0xdc, 0xa9, 0x41, 0x06, 0xe3, 0xde, + 0x46, 0xdf, 0x1a, 0x6d, 0x86, 0x5f, 0x08, 0xce, 0x7b, 0xb5, 0xd8, 0xcb, 0xb1, 0x18, 0xf9, 0xd2, + 0xbf, 0x02, 0x00, 0x00, 0xff, 0xff, 0xb7, 0xe0, 0x79, 0x7a, 0xd5, 0x28, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -14566,7 +14566,7 @@ func (m *EventAttribute) Unmarshal(dAtA []byte) error { if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) } - var byteLen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -14576,31 +14576,29 @@ func (m *EventAttribute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - byteLen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if byteLen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTypes } - postIndex := iNdEx + byteLen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTypes } if postIndex > l { return io.ErrUnexpectedEOF } - m.Key = append(m.Key[:0], dAtA[iNdEx:postIndex]...) - if m.Key == nil { - m.Key = []byte{} - } + m.Key = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) } - var byteLen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -14610,25 +14608,23 @@ func (m *EventAttribute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - byteLen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if byteLen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTypes } - postIndex := iNdEx + byteLen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTypes } if postIndex > l { return io.ErrUnexpectedEOF } - m.Value = append(m.Value[:0], dAtA[iNdEx:postIndex]...) - if m.Value == nil { - m.Value = []byte{} - } + m.Value = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 0 { diff --git a/proto/tendermint/abci/types.proto b/proto/tendermint/abci/types.proto index cd68f444f..adde41118 100644 --- a/proto/tendermint/abci/types.proto +++ b/proto/tendermint/abci/types.proto @@ -344,9 +344,9 @@ message Event { // EventAttribute is a single key-value pair, associated with an event. message EventAttribute { - bytes key = 1; - bytes value = 2; - bool index = 3; // nondeterministic + string key = 1; + string value = 2; + bool index = 3; // nondeterministic } // TxResult contains results of executing the transaction. diff --git a/state/indexer/block/kv/kv.go b/state/indexer/block/kv/kv.go index 901f0e1d2..1787be9ef 100644 --- a/state/indexer/block/kv/kv.go +++ b/state/indexer/block/kv/kv.go @@ -468,13 +468,13 @@ func (idx *BlockerIndexer) indexEvents(batch dbm.Batch, events []abci.Event, typ } // index iff the event specified index:true and it's not a reserved event - compositeKey := fmt.Sprintf("%s.%s", event.Type, string(attr.Key)) + compositeKey := fmt.Sprintf("%s.%s", event.Type, attr.Key) if compositeKey == types.BlockHeightKey { return fmt.Errorf("event type and attribute key \"%s\" is reserved; please use a different key", compositeKey) } if attr.GetIndex() { - key, err := eventKey(compositeKey, typ, string(attr.Value), height) + key, err := eventKey(compositeKey, typ, attr.Value, height) if err != nil { return fmt.Errorf("failed to create block index key: %w", err) } diff --git a/state/indexer/block/kv/kv_test.go b/state/indexer/block/kv/kv_test.go index 249eb3e5a..a23ad24ac 100644 --- a/state/indexer/block/kv/kv_test.go +++ b/state/indexer/block/kv/kv_test.go @@ -26,8 +26,8 @@ func TestBlockIndexer(t *testing.T) { Type: "begin_event", Attributes: []abci.EventAttribute{ { - Key: []byte("proposer"), - Value: []byte("FCAA001"), + Key: "proposer", + Value: "FCAA001", Index: true, }, }, @@ -40,8 +40,8 @@ func TestBlockIndexer(t *testing.T) { Type: "end_event", Attributes: []abci.EventAttribute{ { - Key: []byte("foo"), - Value: []byte("100"), + Key: "foo", + Value: "100", Index: true, }, }, @@ -64,8 +64,8 @@ func TestBlockIndexer(t *testing.T) { Type: "begin_event", Attributes: []abci.EventAttribute{ { - Key: []byte("proposer"), - Value: []byte("FCAA001"), + Key: "proposer", + Value: "FCAA001", Index: true, }, }, @@ -78,8 +78,8 @@ func TestBlockIndexer(t *testing.T) { Type: "end_event", Attributes: []abci.EventAttribute{ { - Key: []byte("foo"), - Value: []byte(fmt.Sprintf("%d", i)), + Key: "foo", + Value: fmt.Sprintf("%d", i), Index: index, }, }, diff --git a/state/indexer/sink/psql/psql.go b/state/indexer/sink/psql/psql.go index 3552591d4..04e936c88 100644 --- a/state/indexer/sink/psql/psql.go +++ b/state/indexer/sink/psql/psql.go @@ -111,7 +111,7 @@ INSERT INTO `+tableEvents+` (block_id, tx_id, type) VALUES ($1, $2, $3) if !attr.Index { continue } - compositeKey := evt.Type + "." + string(attr.Key) + compositeKey := evt.Type + "." + attr.Key if _, err := dbtx.Exec(` INSERT INTO `+tableAttributes+` (event_id, key, composite_key, value) VALUES ($1, $2, $3, $4); @@ -133,7 +133,7 @@ func makeIndexedEvent(compositeKey, value string) abci.Event { return abci.Event{Type: compositeKey} } return abci.Event{Type: compositeKey[:i], Attributes: []abci.EventAttribute{ - {Key: []byte(compositeKey[i+1:]), Value: []byte(value), Index: true}, + {Key: compositeKey[i+1:], Value: value, Index: true}, }} } diff --git a/state/indexer/sink/psql/psql_test.go b/state/indexer/sink/psql/psql_test.go index d3281b99f..af60b96ae 100644 --- a/state/indexer/sink/psql/psql_test.go +++ b/state/indexer/sink/psql/psql_test.go @@ -168,8 +168,8 @@ func TestIndexing(t *testing.T) { {Type: "", Attributes: []abci.EventAttribute{ { - Key: []byte("not_allowed"), - Value: []byte("Vlad"), + Key: "not_allowed", + Value: "Vlad", Index: true, }, }}, diff --git a/state/state_test.go b/state/state_test.go index f2de2a1b0..6577e02c5 100644 --- a/state/state_test.go +++ b/state/state_test.go @@ -160,16 +160,16 @@ func TestABCIResponsesSaveLoad2(t *testing.T) { { Data: []byte("Gotcha!"), Events: []abci.Event{ - {Type: "type1", Attributes: []abci.EventAttribute{{Key: []byte("a"), Value: []byte("1")}}}, - {Type: "type2", Attributes: []abci.EventAttribute{{Key: []byte("build"), Value: []byte("stuff")}}}, + {Type: "type1", Attributes: []abci.EventAttribute{{Key: "a", Value: "1"}}}, + {Type: "type2", Attributes: []abci.EventAttribute{{Key: "build", Value: "stuff"}}}, }, }, }, []*abci.ResponseDeliverTx{ {Code: 383, Data: nil}, {Code: 0, Data: []byte("Gotcha!"), Events: []abci.Event{ - {Type: "type1", Attributes: []abci.EventAttribute{{Key: []byte("a"), Value: []byte("1")}}}, - {Type: "type2", Attributes: []abci.EventAttribute{{Key: []byte("build"), Value: []byte("stuff")}}}, + {Type: "type1", Attributes: []abci.EventAttribute{{Key: "a", Value: "1"}}}, + {Type: "type2", Attributes: []abci.EventAttribute{{Key: "build", Value: "stuff"}}}, }}, }}, 3: { diff --git a/state/txindex/kv/kv.go b/state/txindex/kv/kv.go index 9ee1f9466..a0cb0f333 100644 --- a/state/txindex/kv/kv.go +++ b/state/txindex/kv/kv.go @@ -145,7 +145,11 @@ func (txi *TxIndex) indexEvents(result *abci.TxResult, hash []byte, store dbm.Ba } // index if `index: true` is set - compositeTag := fmt.Sprintf("%s.%s", event.Type, string(attr.Key)) + compositeTag := fmt.Sprintf("%s.%s", event.Type, attr.Key) + // ensure event does not conflict with a reserved prefix key + if compositeTag == types.TxHashKey || compositeTag == types.TxHeightKey { + return fmt.Errorf("event type and attribute key \"%s\" is reserved; please use a different key", compositeTag) + } if attr.GetIndex() { err := store.Set(keyForEvent(compositeTag, attr.Value, result), hash) if err != nil { @@ -252,6 +256,7 @@ func (txi *TxIndex) Search(ctx context.Context, q *query.Query) ([]*abci.TxResul } results := make([]*abci.TxResult, 0, len(filteredHashes)) +RESULTS_LOOP: for _, h := range filteredHashes { res, err := txi.Get(h) if err != nil { @@ -262,7 +267,7 @@ func (txi *TxIndex) Search(ctx context.Context, q *query.Query) ([]*abci.TxResul // Potentially exit early. select { case <-ctx.Done(): - break + break RESULTS_LOOP default: } } @@ -310,21 +315,22 @@ func (txi *TxIndex) match( tmpHashes := make(map[string][]byte) - switch { - case c.Op == query.OpEqual: + switch c.Op { + case query.OpEqual: it, err := dbm.IteratePrefix(txi.store, startKeyBz) if err != nil { panic(err) } defer it.Close() + EQ_LOOP: for ; it.Valid(); it.Next() { tmpHashes[string(it.Value())] = it.Value() // Potentially exit early. select { case <-ctx.Done(): - break + break EQ_LOOP default: } } @@ -332,7 +338,7 @@ func (txi *TxIndex) match( panic(err) } - case c.Op == query.OpExists: + case query.OpExists: // XXX: can't use startKeyBz here because c.Operand is nil // (e.g. "account.owner//" won't match w/ a single row) it, err := dbm.IteratePrefix(txi.store, startKey(c.CompositeKey)) @@ -341,13 +347,14 @@ func (txi *TxIndex) match( } defer it.Close() + EXISTS_LOOP: for ; it.Valid(); it.Next() { tmpHashes[string(it.Value())] = it.Value() // Potentially exit early. select { case <-ctx.Done(): - break + break EXISTS_LOOP default: } } @@ -355,7 +362,7 @@ func (txi *TxIndex) match( panic(err) } - case c.Op == query.OpContains: + case query.OpContains: // XXX: startKey does not apply here. // For example, if startKey = "account.owner/an/" and search query = "account.owner CONTAINS an" // we can't iterate with prefix "account.owner/an/" because we might miss keys like "account.owner/Ulan/" @@ -365,6 +372,7 @@ func (txi *TxIndex) match( } defer it.Close() + CONTAINS_LOOP: for ; it.Valid(); it.Next() { if !isTagKey(it.Key()) { continue @@ -377,7 +385,7 @@ func (txi *TxIndex) match( // Potentially exit early. select { case <-ctx.Done(): - break + break CONTAINS_LOOP default: } } @@ -401,6 +409,7 @@ func (txi *TxIndex) match( // Remove/reduce matches in filteredHashes that were not found in this // match (tmpHashes). +REMOVE_LOOP: for k := range filteredHashes { if tmpHashes[k] == nil { delete(filteredHashes, k) @@ -408,7 +417,7 @@ func (txi *TxIndex) match( // Potentially exit early. select { case <-ctx.Done(): - break + break REMOVE_LOOP default: } } @@ -481,7 +490,7 @@ LOOP: // Potentially exit early. select { case <-ctx.Done(): - break + break LOOP default: } } @@ -502,6 +511,7 @@ LOOP: // Remove/reduce matches in filteredHashes that were not found in this // match (tmpHashes). +REMOVE_LOOP: for k := range filteredHashes { if tmpHashes[k] == nil { delete(filteredHashes, k) @@ -509,7 +519,7 @@ LOOP: // Potentially exit early. select { case <-ctx.Done(): - break + break REMOVE_LOOP default: } } @@ -529,7 +539,7 @@ func extractValueFromKey(key []byte) string { return parts[1] } -func keyForEvent(key string, value []byte, result *abci.TxResult) []byte { +func keyForEvent(key string, value string, result *abci.TxResult) []byte { return []byte(fmt.Sprintf("%s/%s/%d/%d", key, value, diff --git a/state/txindex/kv/kv_bench_test.go b/state/txindex/kv/kv_bench_test.go index 85491aad5..1939a45b6 100644 --- a/state/txindex/kv/kv_bench_test.go +++ b/state/txindex/kv/kv_bench_test.go @@ -32,8 +32,8 @@ func BenchmarkTxSearch(b *testing.B) { { Type: "transfer", Attributes: []abci.EventAttribute{ - {Key: []byte("address"), Value: []byte(fmt.Sprintf("address_%d", i%100)), Index: true}, - {Key: []byte("amount"), Value: []byte("50"), Index: true}, + {Key: "address", Value: fmt.Sprintf("address_%d", i%100), Index: true}, + {Key: "amount", Value: "50", Index: true}, }, }, } diff --git a/state/txindex/kv/kv_test.go b/state/txindex/kv/kv_test.go index cfaacf67a..bbe210cb6 100644 --- a/state/txindex/kv/kv_test.go +++ b/state/txindex/kv/kv_test.go @@ -69,9 +69,9 @@ func TestTxSearch(t *testing.T) { indexer := NewTxIndex(db.NewMemDB()) txResult := txResultWithEvents([]abci.Event{ - {Type: "account", Attributes: []abci.EventAttribute{{Key: []byte("number"), Value: []byte("1"), Index: true}}}, - {Type: "account", Attributes: []abci.EventAttribute{{Key: []byte("owner"), Value: []byte("Ivan"), Index: true}}}, - {Type: "", Attributes: []abci.EventAttribute{{Key: []byte("not_allowed"), Value: []byte("Vlad"), Index: true}}}, + {Type: "account", Attributes: []abci.EventAttribute{{Key: "number", Value: "1", Index: true}}}, + {Type: "account", Attributes: []abci.EventAttribute{{Key: "owner", Value: "Ivan", Index: true}}}, + {Type: "", Attributes: []abci.EventAttribute{{Key: "not_allowed", Value: "Vlad", Index: true}}}, }) hash := types.Tx(txResult.Tx).Hash() @@ -143,9 +143,9 @@ func TestTxSearchWithCancelation(t *testing.T) { indexer := NewTxIndex(db.NewMemDB()) txResult := txResultWithEvents([]abci.Event{ - {Type: "account", Attributes: []abci.EventAttribute{{Key: []byte("number"), Value: []byte("1"), Index: true}}}, - {Type: "account", Attributes: []abci.EventAttribute{{Key: []byte("owner"), Value: []byte("Ivan"), Index: true}}}, - {Type: "", Attributes: []abci.EventAttribute{{Key: []byte("not_allowed"), Value: []byte("Vlad"), Index: true}}}, + {Type: "account", Attributes: []abci.EventAttribute{{Key: "number", Value: "1", Index: true}}}, + {Type: "account", Attributes: []abci.EventAttribute{{Key: "owner", Value: "Ivan", Index: true}}}, + {Type: "", Attributes: []abci.EventAttribute{{Key: "not_allowed", Value: "Vlad", Index: true}}}, }) err := indexer.Index(txResult) require.NoError(t, err) @@ -162,7 +162,7 @@ func TestTxSearchDeprecatedIndexing(t *testing.T) { // index tx using events indexing (composite key) txResult1 := txResultWithEvents([]abci.Event{ - {Type: "account", Attributes: []abci.EventAttribute{{Key: []byte("number"), Value: []byte("1"), Index: true}}}, + {Type: "account", Attributes: []abci.EventAttribute{{Key: "number", Value: "1", Index: true}}}, }) hash1 := types.Tx(txResult1.Tx).Hash() @@ -240,8 +240,8 @@ func TestTxSearchOneTxWithMultipleSameTagsButDifferentValues(t *testing.T) { indexer := NewTxIndex(db.NewMemDB()) txResult := txResultWithEvents([]abci.Event{ - {Type: "account", Attributes: []abci.EventAttribute{{Key: []byte("number"), Value: []byte("1"), Index: true}}}, - {Type: "account", Attributes: []abci.EventAttribute{{Key: []byte("number"), Value: []byte("2"), Index: true}}}, + {Type: "account", Attributes: []abci.EventAttribute{{Key: "number", Value: "1", Index: true}}}, + {Type: "account", Attributes: []abci.EventAttribute{{Key: "number", Value: "2", Index: true}}}, }) err := indexer.Index(txResult) @@ -263,7 +263,7 @@ func TestTxSearchMultipleTxs(t *testing.T) { // indexed first, but bigger height (to test the order of transactions) txResult := txResultWithEvents([]abci.Event{ - {Type: "account", Attributes: []abci.EventAttribute{{Key: []byte("number"), Value: []byte("1"), Index: true}}}, + {Type: "account", Attributes: []abci.EventAttribute{{Key: "number", Value: "1", Index: true}}}, }) txResult.Tx = types.Tx("Bob's account") @@ -274,7 +274,7 @@ func TestTxSearchMultipleTxs(t *testing.T) { // indexed second, but smaller height (to test the order of transactions) txResult2 := txResultWithEvents([]abci.Event{ - {Type: "account", Attributes: []abci.EventAttribute{{Key: []byte("number"), Value: []byte("2"), Index: true}}}, + {Type: "account", Attributes: []abci.EventAttribute{{Key: "number", Value: "2", Index: true}}}, }) txResult2.Tx = types.Tx("Alice's account") txResult2.Height = 1 @@ -285,7 +285,7 @@ func TestTxSearchMultipleTxs(t *testing.T) { // indexed third (to test the order of transactions) txResult3 := txResultWithEvents([]abci.Event{ - {Type: "account", Attributes: []abci.EventAttribute{{Key: []byte("number"), Value: []byte("3"), Index: true}}}, + {Type: "account", Attributes: []abci.EventAttribute{{Key: "number", Value: "3", Index: true}}}, }) txResult3.Tx = types.Tx("Jack's account") txResult3.Height = 1 @@ -296,7 +296,7 @@ func TestTxSearchMultipleTxs(t *testing.T) { // indexed fourth (to test we don't include txs with similar events) // https://github.com/tendermint/tendermint/issues/2908 txResult4 := txResultWithEvents([]abci.Event{ - {Type: "account", Attributes: []abci.EventAttribute{{Key: []byte("number.id"), Value: []byte("1"), Index: true}}}, + {Type: "account", Attributes: []abci.EventAttribute{{Key: "number.id", Value: "1", Index: true}}}, }) txResult4.Tx = types.Tx("Mike's account") txResult4.Height = 2 diff --git a/test/e2e/app/app.go b/test/e2e/app/app.go index f1c19d63b..b4856d20a 100644 --- a/test/e2e/app/app.go +++ b/test/e2e/app/app.go @@ -176,12 +176,12 @@ func (app *Application) EndBlock(req abci.RequestEndBlock) abci.ResponseEndBlock Type: "val_updates", Attributes: []abci.EventAttribute{ { - Key: []byte("size"), - Value: []byte(strconv.Itoa(valUpdates.Len())), + Key: "size", + Value: strconv.Itoa(valUpdates.Len()), }, { - Key: []byte("height"), - Value: []byte(strconv.Itoa(int(req.Height))), + Key: "height", + Value: strconv.Itoa(int(req.Height)), }, }, }, diff --git a/types/event_bus.go b/types/event_bus.go index 3cebcf680..126bf27c6 100644 --- a/types/event_bus.go +++ b/types/event_bus.go @@ -123,8 +123,8 @@ func (b *EventBus) validateAndStringifyEvents(events []types.Event, logger log.L continue } - compositeTag := fmt.Sprintf("%s.%s", event.Type, string(attr.Key)) - result[compositeTag] = append(result[compositeTag], string(attr.Value)) + compositeTag := fmt.Sprintf("%s.%s", event.Type, attr.Key) + result[compositeTag] = append(result[compositeTag], attr.Value) } } diff --git a/types/event_bus_test.go b/types/event_bus_test.go index 30bd6b178..b6c5ed669 100644 --- a/types/event_bus_test.go +++ b/types/event_bus_test.go @@ -30,7 +30,7 @@ func TestEventBusPublishEventTx(t *testing.T) { result := abci.ResponseDeliverTx{ Data: []byte("bar"), Events: []abci.Event{ - {Type: "testType", Attributes: []abci.EventAttribute{{Key: []byte("baz"), Value: []byte("1")}}}, + {Type: "testType", Attributes: []abci.EventAttribute{{Key: "baz", Value: "1"}}}, }, } @@ -78,12 +78,12 @@ func TestEventBusPublishEventNewBlock(t *testing.T) { block := MakeBlock(0, []Tx{}, nil, []Evidence{}) resultBeginBlock := abci.ResponseBeginBlock{ Events: []abci.Event{ - {Type: "testType", Attributes: []abci.EventAttribute{{Key: []byte("baz"), Value: []byte("1")}}}, + {Type: "testType", Attributes: []abci.EventAttribute{{Key: "baz", Value: "1"}}}, }, } resultEndBlock := abci.ResponseEndBlock{ Events: []abci.Event{ - {Type: "testType", Attributes: []abci.EventAttribute{{Key: []byte("foz"), Value: []byte("2")}}}, + {Type: "testType", Attributes: []abci.EventAttribute{{Key: "foz", Value: "2"}}}, }, } @@ -133,25 +133,25 @@ func TestEventBusPublishEventTxDuplicateKeys(t *testing.T) { { Type: "transfer", Attributes: []abci.EventAttribute{ - {Key: []byte("sender"), Value: []byte("foo")}, - {Key: []byte("recipient"), Value: []byte("bar")}, - {Key: []byte("amount"), Value: []byte("5")}, + {Key: "sender", Value: "foo"}, + {Key: "recipient", Value: "bar"}, + {Key: "amount", Value: "5"}, }, }, { Type: "transfer", Attributes: []abci.EventAttribute{ - {Key: []byte("sender"), Value: []byte("baz")}, - {Key: []byte("recipient"), Value: []byte("cat")}, - {Key: []byte("amount"), Value: []byte("13")}, + {Key: "sender", Value: "baz"}, + {Key: "recipient", Value: "cat"}, + {Key: "amount", Value: "13"}, }, }, { Type: "withdraw.rewards", Attributes: []abci.EventAttribute{ - {Key: []byte("address"), Value: []byte("bar")}, - {Key: []byte("source"), Value: []byte("iceman")}, - {Key: []byte("amount"), Value: []byte("33")}, + {Key: "address", Value: "bar"}, + {Key: "source", Value: "iceman"}, + {Key: "amount", Value: "33"}, }, }, }, @@ -237,12 +237,12 @@ func TestEventBusPublishEventNewBlockHeader(t *testing.T) { block := MakeBlock(0, []Tx{}, nil, []Evidence{}) resultBeginBlock := abci.ResponseBeginBlock{ Events: []abci.Event{ - {Type: "testType", Attributes: []abci.EventAttribute{{Key: []byte("baz"), Value: []byte("1")}}}, + {Type: "testType", Attributes: []abci.EventAttribute{{Key: "baz", Value: "1"}}}, }, } resultEndBlock := abci.ResponseEndBlock{ Events: []abci.Event{ - {Type: "testType", Attributes: []abci.EventAttribute{{Key: []byte("foz"), Value: []byte("2")}}}, + {Type: "testType", Attributes: []abci.EventAttribute{{Key: "foz", Value: "2"}}}, }, }