diff --git a/go/neo/proto/proto.go b/go/neo/proto/proto.go
index d436f90207f4414e40a0157c9c2959d79154e14b..b2907f5778f7040eea8b378bb202ac0800ca1440 100644
--- a/go/neo/proto/proto.go
+++ b/go/neo/proto/proto.go
@@ -1171,6 +1171,12 @@ type Truncate struct {
 	// answer = Error
 }
 
+// Request all nodes to flush their logs.
+//
+//neo:nodes ctl -> A -> M -> *
+type FlushLog struct {}
+
+
 // ---- runtime support for protogen and custom codecs ----
 
 // customCodec is the interface that is implemented by types with custom encodings.
diff --git a/go/neo/proto/zproto-marshal.go b/go/neo/proto/zproto-marshal.go
index 44e573458cce58928ee70798a90afebb82c8a8c4..e06c511df3da34d83205eb1eda6dc6d248d5d88d 100644
--- a/go/neo/proto/zproto-marshal.go
+++ b/go/neo/proto/zproto-marshal.go
@@ -4092,6 +4092,23 @@ overflow:
 	return 0, ErrDecodeOverflow
 }
 
+// 65. FlushLog
+
+func (*FlushLog) NEOMsgCode() uint16 {
+	return 65
+}
+
+func (p *FlushLog) NEOMsgEncodedLen() int {
+	return 0
+}
+
+func (p *FlushLog) NEOMsgEncode(data []byte) {
+}
+
+func (p *FlushLog) NEOMsgDecode(data []byte) (int, error) {
+	return 0, nil
+}
+
 // registry of message types
 var msgTypeRegistry = map[uint16]reflect.Type{
 	0 | answerBit:  reflect.TypeOf(Error{}),
@@ -4193,4 +4210,5 @@ var msgTypeRegistry = map[uint16]reflect.Type{
 	62:             reflect.TypeOf(AddTransaction{}),
 	63:             reflect.TypeOf(AddObject{}),
 	64:             reflect.TypeOf(Truncate{}),
+	65:             reflect.TypeOf(FlushLog{}),
 }
diff --git a/go/neo/proto/ztestdata_proto_py_test.go b/go/neo/proto/ztestdata_proto_py_test.go
index da908381a18d5b9bdbc1ee575e49f08391245a59..ab824a4533fd251324f2056528c5feb85784f1ce 100644
--- a/go/neo/proto/ztestdata_proto_py_test.go
+++ b/go/neo/proto/ztestdata_proto_py_test.go
@@ -66,6 +66,7 @@ var pyMsgRegistry = map[uint16]string{
 	62:	"AddTransaction",
 	63:	"AddObject",
 	64:	"Truncate",
+	65:	"FlushLog",
 	32768:	"Error",
 	32769:	"AcceptIdentification",
 	32770:	"Pong",