Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
plugin
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
link33
plugin
Commits
fbb4f355
Commit
fbb4f355
authored
Feb 14, 2020
by
harrylee2015
Committed by
vipwzw
Feb 15, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix a bug for storage
parent
99eaabec
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
405 additions
and
145 deletions
+405
-145
storage.proto
plugin/dapp/storage/proto/storage.proto
+4
-2
storage.go
plugin/dapp/storage/types/storage.go
+7
-2
storage.pb.go
plugin/dapp/storage/types/storage.pb.go
+394
-141
No files found.
plugin/dapp/storage/proto/storage.proto
View file @
fbb4f355
...
...
@@ -88,4 +88,7 @@ message BatchQueryStorage {
message
BatchReplyStorage
{
repeated
Storage
storages
=
1
;
}
\ No newline at end of file
}
message
ReceiptStorage
{
}
plugin/dapp/storage/types/storage.go
View file @
fbb4f355
...
...
@@ -2,6 +2,8 @@ package types
import
(
"github.com/33cn/chain33/types"
"reflect"
)
/*
...
...
@@ -52,9 +54,12 @@ var (
}
//定义log的id和具体log类型及名称,填入具体自定义log类型
logMap
=
map
[
int64
]
*
types
.
LogInfo
{
//LogID: {Ty: reflect.TypeOf(LogStruct), Name: LogName},
TyContentStorageLog
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptStorage
{}),
Name
:
"LogContentStorage"
},
TyHashStorageLog
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptStorage
{}),
Name
:
"LogHashStorage"
},
TyLinkStorageLog
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptStorage
{}),
Name
:
"LogLinkStorage"
},
TyEncryptStorageLog
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptStorage
{}),
Name
:
"LogEncryptStorage"
},
TyEncryptShareStorageLog
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptStorage
{}),
Name
:
"LogEncryptShareStorage"
},
}
//tlog = log.New("module", "storage.types")
)
// init defines a register function
...
...
plugin/dapp/storage/types/storage.pb.go
View file @
fbb4f355
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: storage.proto
/*
Package types is a generated protocol buffer package.
It is generated from these files:
storage.proto
It has these top-level messages:
Storage
StorageAction
ContentOnlyNotaryStorage
HashOnlyNotaryStorage
LinkNotaryStorage
EncryptNotaryStorage
EncryptContentOnlyNotaryStorage
EncryptShareNotaryStorage
QueryStorage
BatchQueryStorage
BatchReplyStorage
*/
package
types
import
(
fmt
"fmt"
proto
"github.com/golang/protobuf/proto"
math
"math"
import
proto
"github.com/golang/protobuf/proto"
import
fmt
"fmt"
import
math
"math"
import
(
context
"golang.org/x/net/context"
grpc
"google.golang.org/grpc"
)
...
...
@@ -45,6 +23,7 @@ var _ = math.Inf
// proto package needs to be updated.
const
_
=
proto
.
ProtoPackageIsVersion2
// please upgrade the proto package
// 后面如果有其他数据模型可继续往上面添加
type
Storage
struct
{
// Types that are valid to be assigned to Value:
// *Storage_ContentStorage
...
...
@@ -52,32 +31,54 @@ type Storage struct {
// *Storage_LinkStorage
// *Storage_EncryptStorage
// *Storage_EncryptShareStorage
Value
isStorage_Value
`protobuf_oneof:"value"`
Value
isStorage_Value
`protobuf_oneof:"value"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
Storage
)
Reset
()
{
*
m
=
Storage
{}
}
func
(
m
*
Storage
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
Storage
)
ProtoMessage
()
{}
func
(
*
Storage
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_storage_919e542fa62fc0e7
,
[]
int
{
0
}
}
func
(
m
*
Storage
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_Storage
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
Storage
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_Storage
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
dst
*
Storage
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_Storage
.
Merge
(
dst
,
src
)
}
func
(
m
*
Storage
)
XXX_Size
()
int
{
return
xxx_messageInfo_Storage
.
Size
(
m
)
}
func
(
m
*
Storage
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_Storage
.
DiscardUnknown
(
m
)
}
func
(
m
*
Storage
)
Reset
()
{
*
m
=
Storage
{}
}
func
(
m
*
Storage
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
Storage
)
ProtoMessage
()
{}
func
(
*
Storage
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
0
}
}
var
xxx_messageInfo_Storage
proto
.
InternalMessageInfo
type
isStorage_Value
interface
{
isStorage_Value
()
}
type
Storage_ContentStorage
struct
{
ContentStorage
*
ContentOnlyNotaryStorage
`protobuf:"bytes,1,opt,name=contentStorage,oneof"`
ContentStorage
*
ContentOnlyNotaryStorage
`protobuf:"bytes,1,opt,name=contentStorage,
proto3,
oneof"`
}
type
Storage_HashStorage
struct
{
HashStorage
*
HashOnlyNotaryStorage
`protobuf:"bytes,2,opt,name=hashStorage,oneof"`
HashStorage
*
HashOnlyNotaryStorage
`protobuf:"bytes,2,opt,name=hashStorage,
proto3,
oneof"`
}
type
Storage_LinkStorage
struct
{
LinkStorage
*
LinkNotaryStorage
`protobuf:"bytes,3,opt,name=linkStorage,oneof"`
LinkStorage
*
LinkNotaryStorage
`protobuf:"bytes,3,opt,name=linkStorage,
proto3,
oneof"`
}
type
Storage_EncryptStorage
struct
{
EncryptStorage
*
EncryptNotaryStorage
`protobuf:"bytes,4,opt,name=encryptStorage,oneof"`
EncryptStorage
*
EncryptNotaryStorage
`protobuf:"bytes,4,opt,name=encryptStorage,
proto3,
oneof"`
}
type
Storage_EncryptShareStorage
struct
{
EncryptShareStorage
*
EncryptShareNotaryStorage
`protobuf:"bytes,5,opt,name=encryptShareStorage,oneof"`
EncryptShareStorage
*
EncryptShareNotaryStorage
`protobuf:"bytes,5,opt,name=encryptShareStorage,
proto3,
oneof"`
}
func
(
*
Storage_ContentStorage
)
isStorage_Value
()
{}
...
...
@@ -229,27 +230,27 @@ func _Storage_OneofSizer(msg proto.Message) (n int) {
switch
x
:=
m
.
Value
.
(
type
)
{
case
*
Storage_ContentStorage
:
s
:=
proto
.
Size
(
x
.
ContentStorage
)
n
+=
proto
.
SizeVarint
(
1
<<
3
|
proto
.
WireBytes
)
n
+=
1
// tag and wire
n
+=
proto
.
SizeVarint
(
uint64
(
s
))
n
+=
s
case
*
Storage_HashStorage
:
s
:=
proto
.
Size
(
x
.
HashStorage
)
n
+=
proto
.
SizeVarint
(
2
<<
3
|
proto
.
WireBytes
)
n
+=
1
// tag and wire
n
+=
proto
.
SizeVarint
(
uint64
(
s
))
n
+=
s
case
*
Storage_LinkStorage
:
s
:=
proto
.
Size
(
x
.
LinkStorage
)
n
+=
proto
.
SizeVarint
(
3
<<
3
|
proto
.
WireBytes
)
n
+=
1
// tag and wire
n
+=
proto
.
SizeVarint
(
uint64
(
s
))
n
+=
s
case
*
Storage_EncryptStorage
:
s
:=
proto
.
Size
(
x
.
EncryptStorage
)
n
+=
proto
.
SizeVarint
(
4
<<
3
|
proto
.
WireBytes
)
n
+=
1
// tag and wire
n
+=
proto
.
SizeVarint
(
uint64
(
s
))
n
+=
s
case
*
Storage_EncryptShareStorage
:
s
:=
proto
.
Size
(
x
.
EncryptShareStorage
)
n
+=
proto
.
SizeVarint
(
5
<<
3
|
proto
.
WireBytes
)
n
+=
1
// tag and wire
n
+=
proto
.
SizeVarint
(
uint64
(
s
))
n
+=
s
case
nil
:
...
...
@@ -266,33 +267,55 @@ type StorageAction struct {
// *StorageAction_LinkStorage
// *StorageAction_EncryptStorage
// *StorageAction_EncryptShareStorage
Value
isStorageAction_Value
`protobuf_oneof:"value"`
Ty
int32
`protobuf:"varint,6,opt,name=ty" json:"ty,omitempty"`
Value
isStorageAction_Value
`protobuf_oneof:"value"`
Ty
int32
`protobuf:"varint,6,opt,name=ty,proto3" json:"ty,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
StorageAction
)
Reset
()
{
*
m
=
StorageAction
{}
}
func
(
m
*
StorageAction
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
StorageAction
)
ProtoMessage
()
{}
func
(
*
StorageAction
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
1
}
}
func
(
m
*
StorageAction
)
Reset
()
{
*
m
=
StorageAction
{}
}
func
(
m
*
StorageAction
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
StorageAction
)
ProtoMessage
()
{}
func
(
*
StorageAction
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_storage_919e542fa62fc0e7
,
[]
int
{
1
}
}
func
(
m
*
StorageAction
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_StorageAction
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
StorageAction
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_StorageAction
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
dst
*
StorageAction
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_StorageAction
.
Merge
(
dst
,
src
)
}
func
(
m
*
StorageAction
)
XXX_Size
()
int
{
return
xxx_messageInfo_StorageAction
.
Size
(
m
)
}
func
(
m
*
StorageAction
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_StorageAction
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_StorageAction
proto
.
InternalMessageInfo
type
isStorageAction_Value
interface
{
isStorageAction_Value
()
}
type
StorageAction_ContentStorage
struct
{
ContentStorage
*
ContentOnlyNotaryStorage
`protobuf:"bytes,1,opt,name=contentStorage,oneof"`
ContentStorage
*
ContentOnlyNotaryStorage
`protobuf:"bytes,1,opt,name=contentStorage,
proto3,
oneof"`
}
type
StorageAction_HashStorage
struct
{
HashStorage
*
HashOnlyNotaryStorage
`protobuf:"bytes,2,opt,name=hashStorage,oneof"`
HashStorage
*
HashOnlyNotaryStorage
`protobuf:"bytes,2,opt,name=hashStorage,
proto3,
oneof"`
}
type
StorageAction_LinkStorage
struct
{
LinkStorage
*
LinkNotaryStorage
`protobuf:"bytes,3,opt,name=linkStorage,oneof"`
LinkStorage
*
LinkNotaryStorage
`protobuf:"bytes,3,opt,name=linkStorage,
proto3,
oneof"`
}
type
StorageAction_EncryptStorage
struct
{
EncryptStorage
*
EncryptNotaryStorage
`protobuf:"bytes,4,opt,name=encryptStorage,oneof"`
EncryptStorage
*
EncryptNotaryStorage
`protobuf:"bytes,4,opt,name=encryptStorage,
proto3,
oneof"`
}
type
StorageAction_EncryptShareStorage
struct
{
EncryptShareStorage
*
EncryptShareNotaryStorage
`protobuf:"bytes,5,opt,name=encryptShareStorage,oneof"`
EncryptShareStorage
*
EncryptShareNotaryStorage
`protobuf:"bytes,5,opt,name=encryptShareStorage,
proto3,
oneof"`
}
func
(
*
StorageAction_ContentStorage
)
isStorageAction_Value
()
{}
...
...
@@ -451,27 +474,27 @@ func _StorageAction_OneofSizer(msg proto.Message) (n int) {
switch
x
:=
m
.
Value
.
(
type
)
{
case
*
StorageAction_ContentStorage
:
s
:=
proto
.
Size
(
x
.
ContentStorage
)
n
+=
proto
.
SizeVarint
(
1
<<
3
|
proto
.
WireBytes
)
n
+=
1
// tag and wire
n
+=
proto
.
SizeVarint
(
uint64
(
s
))
n
+=
s
case
*
StorageAction_HashStorage
:
s
:=
proto
.
Size
(
x
.
HashStorage
)
n
+=
proto
.
SizeVarint
(
2
<<
3
|
proto
.
WireBytes
)
n
+=
1
// tag and wire
n
+=
proto
.
SizeVarint
(
uint64
(
s
))
n
+=
s
case
*
StorageAction_LinkStorage
:
s
:=
proto
.
Size
(
x
.
LinkStorage
)
n
+=
proto
.
SizeVarint
(
3
<<
3
|
proto
.
WireBytes
)
n
+=
1
// tag and wire
n
+=
proto
.
SizeVarint
(
uint64
(
s
))
n
+=
s
case
*
StorageAction_EncryptStorage
:
s
:=
proto
.
Size
(
x
.
EncryptStorage
)
n
+=
proto
.
SizeVarint
(
4
<<
3
|
proto
.
WireBytes
)
n
+=
1
// tag and wire
n
+=
proto
.
SizeVarint
(
uint64
(
s
))
n
+=
s
case
*
StorageAction_EncryptShareStorage
:
s
:=
proto
.
Size
(
x
.
EncryptShareStorage
)
n
+=
proto
.
SizeVarint
(
5
<<
3
|
proto
.
WireBytes
)
n
+=
1
// tag and wire
n
+=
proto
.
SizeVarint
(
uint64
(
s
))
n
+=
s
case
nil
:
...
...
@@ -484,13 +507,35 @@ func _StorageAction_OneofSizer(msg proto.Message) (n int) {
// 内容存证模型
type
ContentOnlyNotaryStorage
struct
{
// 长度需要小于512k
Content
[]
byte
`protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"`
Content
[]
byte
`protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
ContentOnlyNotaryStorage
)
Reset
()
{
*
m
=
ContentOnlyNotaryStorage
{}
}
func
(
m
*
ContentOnlyNotaryStorage
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
ContentOnlyNotaryStorage
)
ProtoMessage
()
{}
func
(
*
ContentOnlyNotaryStorage
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
2
}
}
func
(
m
*
ContentOnlyNotaryStorage
)
Reset
()
{
*
m
=
ContentOnlyNotaryStorage
{}
}
func
(
m
*
ContentOnlyNotaryStorage
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
ContentOnlyNotaryStorage
)
ProtoMessage
()
{}
func
(
*
ContentOnlyNotaryStorage
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_storage_919e542fa62fc0e7
,
[]
int
{
2
}
}
func
(
m
*
ContentOnlyNotaryStorage
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_ContentOnlyNotaryStorage
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
ContentOnlyNotaryStorage
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_ContentOnlyNotaryStorage
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
dst
*
ContentOnlyNotaryStorage
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_ContentOnlyNotaryStorage
.
Merge
(
dst
,
src
)
}
func
(
m
*
ContentOnlyNotaryStorage
)
XXX_Size
()
int
{
return
xxx_messageInfo_ContentOnlyNotaryStorage
.
Size
(
m
)
}
func
(
m
*
ContentOnlyNotaryStorage
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_ContentOnlyNotaryStorage
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_ContentOnlyNotaryStorage
proto
.
InternalMessageInfo
func
(
m
*
ContentOnlyNotaryStorage
)
GetContent
()
[]
byte
{
if
m
!=
nil
{
...
...
@@ -502,13 +547,35 @@ func (m *ContentOnlyNotaryStorage) GetContent() []byte {
// 哈希存证模型,推荐使用sha256哈希,限制256位得摘要值
type
HashOnlyNotaryStorage
struct
{
// 长度固定为32字节
Hash
[]
byte
`protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"`
Hash
[]
byte
`protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
HashOnlyNotaryStorage
)
Reset
()
{
*
m
=
HashOnlyNotaryStorage
{}
}
func
(
m
*
HashOnlyNotaryStorage
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
HashOnlyNotaryStorage
)
ProtoMessage
()
{}
func
(
*
HashOnlyNotaryStorage
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_storage_919e542fa62fc0e7
,
[]
int
{
3
}
}
func
(
m
*
HashOnlyNotaryStorage
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_HashOnlyNotaryStorage
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
HashOnlyNotaryStorage
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_HashOnlyNotaryStorage
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
dst
*
HashOnlyNotaryStorage
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_HashOnlyNotaryStorage
.
Merge
(
dst
,
src
)
}
func
(
m
*
HashOnlyNotaryStorage
)
XXX_Size
()
int
{
return
xxx_messageInfo_HashOnlyNotaryStorage
.
Size
(
m
)
}
func
(
m
*
HashOnlyNotaryStorage
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_HashOnlyNotaryStorage
.
DiscardUnknown
(
m
)
}
func
(
m
*
HashOnlyNotaryStorage
)
Reset
()
{
*
m
=
HashOnlyNotaryStorage
{}
}
func
(
m
*
HashOnlyNotaryStorage
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
HashOnlyNotaryStorage
)
ProtoMessage
()
{}
func
(
*
HashOnlyNotaryStorage
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
3
}
}
var
xxx_messageInfo_HashOnlyNotaryStorage
proto
.
InternalMessageInfo
func
(
m
*
HashOnlyNotaryStorage
)
GetHash
()
[]
byte
{
if
m
!=
nil
{
...
...
@@ -522,13 +589,35 @@ type LinkNotaryStorage struct {
// 存证内容的链接,可以写入URL,或者其他可用于定位源文件得线索.
Link
[]
byte
`protobuf:"bytes,1,opt,name=link,proto3" json:"link,omitempty"`
// 源文件得hash值,推荐使用sha256哈希,限制256位得摘要值
Hash
[]
byte
`protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"`
Hash
[]
byte
`protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
LinkNotaryStorage
)
Reset
()
{
*
m
=
LinkNotaryStorage
{}
}
func
(
m
*
LinkNotaryStorage
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
LinkNotaryStorage
)
ProtoMessage
()
{}
func
(
*
LinkNotaryStorage
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
4
}
}
func
(
m
*
LinkNotaryStorage
)
Reset
()
{
*
m
=
LinkNotaryStorage
{}
}
func
(
m
*
LinkNotaryStorage
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
LinkNotaryStorage
)
ProtoMessage
()
{}
func
(
*
LinkNotaryStorage
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_storage_919e542fa62fc0e7
,
[]
int
{
4
}
}
func
(
m
*
LinkNotaryStorage
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_LinkNotaryStorage
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
LinkNotaryStorage
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_LinkNotaryStorage
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
dst
*
LinkNotaryStorage
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_LinkNotaryStorage
.
Merge
(
dst
,
src
)
}
func
(
m
*
LinkNotaryStorage
)
XXX_Size
()
int
{
return
xxx_messageInfo_LinkNotaryStorage
.
Size
(
m
)
}
func
(
m
*
LinkNotaryStorage
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_LinkNotaryStorage
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_LinkNotaryStorage
proto
.
InternalMessageInfo
func
(
m
*
LinkNotaryStorage
)
GetLink
()
[]
byte
{
if
m
!=
nil
{
...
...
@@ -551,13 +640,35 @@ type EncryptNotaryStorage struct {
// 源文件得密文,由加密key及nonce对明文加密得到该值。
EncryptContent
[]
byte
`protobuf:"bytes,2,opt,name=encryptContent,proto3" json:"encryptContent,omitempty"`
// 加密iv,通过AES进行加密时制定随机生成的iv,解密时需要使用该值
Nonce
[]
byte
`protobuf:"bytes,3,opt,name=nonce,proto3" json:"nonce,omitempty"`
Nonce
[]
byte
`protobuf:"bytes,3,opt,name=nonce,proto3" json:"nonce,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
EncryptNotaryStorage
)
Reset
()
{
*
m
=
EncryptNotaryStorage
{}
}
func
(
m
*
EncryptNotaryStorage
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
EncryptNotaryStorage
)
ProtoMessage
()
{}
func
(
*
EncryptNotaryStorage
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_storage_919e542fa62fc0e7
,
[]
int
{
5
}
}
func
(
m
*
EncryptNotaryStorage
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_EncryptNotaryStorage
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
EncryptNotaryStorage
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_EncryptNotaryStorage
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
dst
*
EncryptNotaryStorage
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_EncryptNotaryStorage
.
Merge
(
dst
,
src
)
}
func
(
m
*
EncryptNotaryStorage
)
XXX_Size
()
int
{
return
xxx_messageInfo_EncryptNotaryStorage
.
Size
(
m
)
}
func
(
m
*
EncryptNotaryStorage
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_EncryptNotaryStorage
.
DiscardUnknown
(
m
)
}
func
(
m
*
EncryptNotaryStorage
)
Reset
()
{
*
m
=
EncryptNotaryStorage
{}
}
func
(
m
*
EncryptNotaryStorage
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
EncryptNotaryStorage
)
ProtoMessage
()
{}
func
(
*
EncryptNotaryStorage
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
5
}
}
var
xxx_messageInfo_EncryptNotaryStorage
proto
.
InternalMessageInfo
func
(
m
*
EncryptNotaryStorage
)
GetContentHash
()
[]
byte
{
if
m
!=
nil
{
...
...
@@ -587,13 +698,35 @@ type EncryptContentOnlyNotaryStorage struct {
// 源文件得密文。
EncryptContent
[]
byte
`protobuf:"bytes,1,opt,name=encryptContent,proto3" json:"encryptContent,omitempty"`
// 加密iv,通过AES进行加密时制定随机生成的iv,解密时需要使用该值
Nonce
[]
byte
`protobuf:"bytes,2,opt,name=nonce,proto3" json:"nonce,omitempty"`
Nonce
[]
byte
`protobuf:"bytes,2,opt,name=nonce,proto3" json:"nonce,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
EncryptContentOnlyNotaryStorage
)
Reset
()
{
*
m
=
EncryptContentOnlyNotaryStorage
{}
}
func
(
m
*
EncryptContentOnlyNotaryStorage
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
EncryptContentOnlyNotaryStorage
)
ProtoMessage
()
{}
func
(
*
EncryptContentOnlyNotaryStorage
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
6
}
}
func
(
m
*
EncryptContentOnlyNotaryStorage
)
Reset
()
{
*
m
=
EncryptContentOnlyNotaryStorage
{}
}
func
(
m
*
EncryptContentOnlyNotaryStorage
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
EncryptContentOnlyNotaryStorage
)
ProtoMessage
()
{}
func
(
*
EncryptContentOnlyNotaryStorage
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_storage_919e542fa62fc0e7
,
[]
int
{
6
}
}
func
(
m
*
EncryptContentOnlyNotaryStorage
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_EncryptContentOnlyNotaryStorage
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
EncryptContentOnlyNotaryStorage
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_EncryptContentOnlyNotaryStorage
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
dst
*
EncryptContentOnlyNotaryStorage
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_EncryptContentOnlyNotaryStorage
.
Merge
(
dst
,
src
)
}
func
(
m
*
EncryptContentOnlyNotaryStorage
)
XXX_Size
()
int
{
return
xxx_messageInfo_EncryptContentOnlyNotaryStorage
.
Size
(
m
)
}
func
(
m
*
EncryptContentOnlyNotaryStorage
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_EncryptContentOnlyNotaryStorage
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_EncryptContentOnlyNotaryStorage
proto
.
InternalMessageInfo
func
(
m
*
EncryptContentOnlyNotaryStorage
)
GetEncryptContent
()
[]
byte
{
if
m
!=
nil
{
...
...
@@ -609,7 +742,7 @@ func (m *EncryptContentOnlyNotaryStorage) GetNonce() []byte {
return
nil
}
// 分享隐私存证模型
// 分享隐私存证模型
,需要完备的sdk或者相应的密钥库支持
type
EncryptShareNotaryStorage
struct
{
// 存证明文内容的hash值,推荐使用sha256哈希,限制256位得摘要值
ContentHash
[]
byte
`protobuf:"bytes,1,opt,name=contentHash,proto3" json:"contentHash,omitempty"`
...
...
@@ -621,13 +754,35 @@ type EncryptShareNotaryStorage struct {
// 使用时,通过私密key对wrap key解密得到加密key对密文进行解密。
KeyWrap
[]
byte
`protobuf:"bytes,4,opt,name=keyWrap,proto3" json:"keyWrap,omitempty"`
// 加密iv,通过AES进行加密时制定随机生成的iv,解密时需要使用该值
Nonce
[]
byte
`protobuf:"bytes,5,opt,name=nonce,proto3" json:"nonce,omitempty"`
Nonce
[]
byte
`protobuf:"bytes,5,opt,name=nonce,proto3" json:"nonce,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
EncryptShareNotaryStorage
)
Reset
()
{
*
m
=
EncryptShareNotaryStorage
{}
}
func
(
m
*
EncryptShareNotaryStorage
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
EncryptShareNotaryStorage
)
ProtoMessage
()
{}
func
(
*
EncryptShareNotaryStorage
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_storage_919e542fa62fc0e7
,
[]
int
{
7
}
}
func
(
m
*
EncryptShareNotaryStorage
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_EncryptShareNotaryStorage
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
EncryptShareNotaryStorage
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_EncryptShareNotaryStorage
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
dst
*
EncryptShareNotaryStorage
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_EncryptShareNotaryStorage
.
Merge
(
dst
,
src
)
}
func
(
m
*
EncryptShareNotaryStorage
)
XXX_Size
()
int
{
return
xxx_messageInfo_EncryptShareNotaryStorage
.
Size
(
m
)
}
func
(
m
*
EncryptShareNotaryStorage
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_EncryptShareNotaryStorage
.
DiscardUnknown
(
m
)
}
func
(
m
*
EncryptShareNotaryStorage
)
Reset
()
{
*
m
=
EncryptShareNotaryStorage
{}
}
func
(
m
*
EncryptShareNotaryStorage
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
EncryptShareNotaryStorage
)
ProtoMessage
()
{}
func
(
*
EncryptShareNotaryStorage
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
7
}
}
var
xxx_messageInfo_EncryptShareNotaryStorage
proto
.
InternalMessageInfo
func
(
m
*
EncryptShareNotaryStorage
)
GetContentHash
()
[]
byte
{
if
m
!=
nil
{
...
...
@@ -664,15 +819,37 @@ func (m *EncryptShareNotaryStorage) GetNonce() []byte {
return
nil
}
// 根据txhash去状态数据中查询存储内容
// 根据txhash去状态数据
库
中查询存储内容
type
QueryStorage
struct
{
TxHash
string
`protobuf:"bytes,1,opt,name=txHash" json:"txHash,omitempty"`
TxHash
string
`protobuf:"bytes,1,opt,name=txHash,proto3" json:"txHash,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
QueryStorage
)
Reset
()
{
*
m
=
QueryStorage
{}
}
func
(
m
*
QueryStorage
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
QueryStorage
)
ProtoMessage
()
{}
func
(
*
QueryStorage
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_storage_919e542fa62fc0e7
,
[]
int
{
8
}
}
func
(
m
*
QueryStorage
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_QueryStorage
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
QueryStorage
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_QueryStorage
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
dst
*
QueryStorage
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_QueryStorage
.
Merge
(
dst
,
src
)
}
func
(
m
*
QueryStorage
)
XXX_Size
()
int
{
return
xxx_messageInfo_QueryStorage
.
Size
(
m
)
}
func
(
m
*
QueryStorage
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_QueryStorage
.
DiscardUnknown
(
m
)
}
func
(
m
*
QueryStorage
)
Reset
()
{
*
m
=
QueryStorage
{}
}
func
(
m
*
QueryStorage
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
QueryStorage
)
ProtoMessage
()
{}
func
(
*
QueryStorage
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
8
}
}
var
xxx_messageInfo_QueryStorage
proto
.
InternalMessageInfo
func
(
m
*
QueryStorage
)
GetTxHash
()
string
{
if
m
!=
nil
{
...
...
@@ -683,13 +860,35 @@ func (m *QueryStorage) GetTxHash() string {
// 批量查询有可能导致数据库崩溃
type
BatchQueryStorage
struct
{
TxHashs
[]
string
`protobuf:"bytes,1,rep,name=txHashs" json:"txHashs,omitempty"`
TxHashs
[]
string
`protobuf:"bytes,1,rep,name=txHashs,proto3" json:"txHashs,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
BatchQueryStorage
)
Reset
()
{
*
m
=
BatchQueryStorage
{}
}
func
(
m
*
BatchQueryStorage
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
BatchQueryStorage
)
ProtoMessage
()
{}
func
(
*
BatchQueryStorage
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
9
}
}
func
(
m
*
BatchQueryStorage
)
Reset
()
{
*
m
=
BatchQueryStorage
{}
}
func
(
m
*
BatchQueryStorage
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
BatchQueryStorage
)
ProtoMessage
()
{}
func
(
*
BatchQueryStorage
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_storage_919e542fa62fc0e7
,
[]
int
{
9
}
}
func
(
m
*
BatchQueryStorage
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_BatchQueryStorage
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
BatchQueryStorage
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_BatchQueryStorage
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
dst
*
BatchQueryStorage
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_BatchQueryStorage
.
Merge
(
dst
,
src
)
}
func
(
m
*
BatchQueryStorage
)
XXX_Size
()
int
{
return
xxx_messageInfo_BatchQueryStorage
.
Size
(
m
)
}
func
(
m
*
BatchQueryStorage
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_BatchQueryStorage
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_BatchQueryStorage
proto
.
InternalMessageInfo
func
(
m
*
BatchQueryStorage
)
GetTxHashs
()
[]
string
{
if
m
!=
nil
{
...
...
@@ -699,13 +898,35 @@ func (m *BatchQueryStorage) GetTxHashs() []string {
}
type
BatchReplyStorage
struct
{
Storages
[]
*
Storage
`protobuf:"bytes,1,rep,name=storages" json:"storages,omitempty"`
Storages
[]
*
Storage
`protobuf:"bytes,1,rep,name=storages,proto3" json:"storages,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
BatchReplyStorage
)
Reset
()
{
*
m
=
BatchReplyStorage
{}
}
func
(
m
*
BatchReplyStorage
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
BatchReplyStorage
)
ProtoMessage
()
{}
func
(
*
BatchReplyStorage
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_storage_919e542fa62fc0e7
,
[]
int
{
10
}
}
func
(
m
*
BatchReplyStorage
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_BatchReplyStorage
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
BatchReplyStorage
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_BatchReplyStorage
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
dst
*
BatchReplyStorage
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_BatchReplyStorage
.
Merge
(
dst
,
src
)
}
func
(
m
*
BatchReplyStorage
)
XXX_Size
()
int
{
return
xxx_messageInfo_BatchReplyStorage
.
Size
(
m
)
}
func
(
m
*
BatchReplyStorage
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_BatchReplyStorage
.
DiscardUnknown
(
m
)
}
func
(
m
*
BatchReplyStorage
)
Reset
()
{
*
m
=
BatchReplyStorage
{}
}
func
(
m
*
BatchReplyStorage
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
BatchReplyStorage
)
ProtoMessage
()
{}
func
(
*
BatchReplyStorage
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
10
}
}
var
xxx_messageInfo_BatchReplyStorage
proto
.
InternalMessageInfo
func
(
m
*
BatchReplyStorage
)
GetStorages
()
[]
*
Storage
{
if
m
!=
nil
{
...
...
@@ -714,6 +935,36 @@ func (m *BatchReplyStorage) GetStorages() []*Storage {
return
nil
}
type
ReceiptStorage
struct
{
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
ReceiptStorage
)
Reset
()
{
*
m
=
ReceiptStorage
{}
}
func
(
m
*
ReceiptStorage
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
ReceiptStorage
)
ProtoMessage
()
{}
func
(
*
ReceiptStorage
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_storage_919e542fa62fc0e7
,
[]
int
{
11
}
}
func
(
m
*
ReceiptStorage
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_ReceiptStorage
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
ReceiptStorage
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_ReceiptStorage
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
dst
*
ReceiptStorage
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_ReceiptStorage
.
Merge
(
dst
,
src
)
}
func
(
m
*
ReceiptStorage
)
XXX_Size
()
int
{
return
xxx_messageInfo_ReceiptStorage
.
Size
(
m
)
}
func
(
m
*
ReceiptStorage
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_ReceiptStorage
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_ReceiptStorage
proto
.
InternalMessageInfo
func
init
()
{
proto
.
RegisterType
((
*
Storage
)(
nil
),
"types.Storage"
)
proto
.
RegisterType
((
*
StorageAction
)(
nil
),
"types.StorageAction"
)
...
...
@@ -726,6 +977,7 @@ func init() {
proto
.
RegisterType
((
*
QueryStorage
)(
nil
),
"types.QueryStorage"
)
proto
.
RegisterType
((
*
BatchQueryStorage
)(
nil
),
"types.BatchQueryStorage"
)
proto
.
RegisterType
((
*
BatchReplyStorage
)(
nil
),
"types.BatchReplyStorage"
)
proto
.
RegisterType
((
*
ReceiptStorage
)(
nil
),
"types.ReceiptStorage"
)
}
// Reference imports to suppress errors if they are not otherwise used.
...
...
@@ -736,8 +988,9 @@ var _ grpc.ClientConn
// is compatible with the grpc package it is being compiled against.
const
_
=
grpc
.
SupportPackageIsVersion4
// Client API for Storage service
// StorageClient is the client API for Storage service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type
StorageClient
interface
{
}
...
...
@@ -749,8 +1002,7 @@ func NewStorageClient(cc *grpc.ClientConn) StorageClient {
return
&
storageClient
{
cc
}
}
// Server API for Storage service
// StorageServer is the server API for Storage service.
type
StorageServer
interface
{
}
...
...
@@ -766,37 +1018,38 @@ var _Storage_serviceDesc = grpc.ServiceDesc{
Metadata
:
"storage.proto"
,
}
func
init
()
{
proto
.
RegisterFile
(
"storage.proto"
,
fileDescriptor0
)
}
var
fileDescriptor0
=
[]
byte
{
// 462 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0xec
,
0x94
,
0xcf
,
0x8b
,
0xd3
,
0x40
,
0x14
,
0xc7
,
0x4d
,
0xba
,
0x69
,
0xec
,
0x4b
,
0xb7
,
0xb0
,
0xe3
,
0x2a
,
0x23
,
0x0a
,
0x1b
,
0x72
,
0x58
,
0x8a
,
0x62
,
0x0f
,
0xd5
,
0x9b
,
0x82
,
0xba
,
0x52
,
0xa8
,
0x20
,
0x2b
,
0x8e
,
0x82
,
0x47
,
0x19
,
0xc3
,
0x60
,
0x4a
,
0xeb
,
0x24
,
0x24
,
0xb3
,
0x8b
,
0xf9
,
0x2f
,
0xfc
,
0x4f
,
0xfc
,
0xff
,
0x3c
,
0x49
,
0x66
,
0xde
,
0xe4
,
0x47
,
0x93
,
0x7a
,
0x12
,
0x4f
,
0x7b
,
0x9b
,
0xf7
,
0xde
,
0xf7
,
0x7d
,
0xde
,
0xaf
,
0x10
,
0x38
,
0x2e
,
0x54
,
0x9a
,
0xf3
,
0x6f
,
0x62
,
0x91
,
0xe5
,
0xa9
,
0x4a
,
0x89
,
0xa7
,
0xca
,
0x4c
,
0x14
,
0xd1
,
0x6f
,
0x17
,
0xfc
,
0x8f
,
0x26
,
0x40
,
0xde
,
0xc2
,
0x2c
,
0x4e
,
0xa5
,
0x12
,
0x52
,
0xa1
,
0x87
,
0x3a
,
0xa1
,
0x33
,
0x0f
,
0x96
,
0x67
,
0x0b
,
0xad
,
0x5d
,
0xbc
,
0x31
,
0xc1
,
0xf7
,
0x72
,
0x57
,
0x5e
,
0xa6
,
0x8a
,
0xe7
,
0x25
,
0xca
,
0xd6
,
0xb7
,
0xd8
,
0x5e
,
0x22
,
0x79
,
0x05
,
0x41
,
0xc2
,
0x8b
,
0xc4
,
0x72
,
0x5c
,
0xcd
,
0x79
,
0x88
,
0x9c
,
0x35
,
0x2f
,
0x92
,
0x21
,
0x48
,
0x3b
,
0x85
,
0xbc
,
0x80
,
0x60
,
0xb7
,
0x91
,
0x5b
,
0x4b
,
0x18
,
0x69
,
0x02
,
0x45
,
0xc2
,
0xbb
,
0x8d
,
0xdc
,
0xf6
,
0xb2
,
0x5b
,
0x72
,
0xb2
,
0x82
,
0x99
,
0x90
,
0x71
,
0x5e
,
0x66
,
0xf5
,
0x28
,
0x47
,
0x1a
,
0xf0
,
0x00
,
0x01
,
0x2b
,
0x13
,
0xec
,
0x8d
,
0xd1
,
0x4d
,
0x22
,
0x9f
,
0xe0
,
0x8e
,
0xf5
,
0x24
,
0x3c
,
0x17
,
0x96
,
0xe5
,
0x69
,
0x56
,
0xd8
,
0x65
,
0x69
,
0xc5
,
0x3e
,
0x70
,
0x28
,
0xfd
,
0xc2
,
0x07
,
0xef
,
0x9a
,
0xef
,
0xae
,
0x44
,
0xf4
,
0x73
,
0x04
,
0xc7
,
0xe8
,
0x7c
,
0x1d
,
0xab
,
0x4d
,
0x2a
,
0x6f
,
0x4e
,
0xf0
,
0x7f
,
0x4e
,
0x40
,
0x66
,
0xe0
,
0xaa
,
0x92
,
0x8e
,
0x43
,
0x67
,
0xee
,
0x31
,
0x57
,
0x95
,
0xcd
,
0x49
,
0x9e
,
0x01
,
0x3d
,
0xb4
,
0x63
,
0x42
,
0xc1
,
0xc7
,
0x1d
,
0xeb
,
0xab
,
0x4c
,
0x99
,
0x35
,
0xa3
,
0xc7
,
0x70
,
0x77
,
0x70
,
0xa3
,
0x84
,
0xc0
,
0x51
,
0xb5
,
0x51
,
0xd4
,
0xeb
,
0x77
,
0xf4
,
0x1c
,
0x4e
,
0x7a
,
0xcb
,
0xab
,
0x84
,
0xd5
,
0xf2
,
0xac
,
0xb0
,
0x7a
,
0xd7
,
0xc9
,
0x6e
,
0x2b
,
0xf9
,
0x1a
,
0x4e
,
0x87
,
0x16
,
0x47
,
0x42
,
0x08
,
0xb0
,
0x99
,
0x75
,
0x53
,
0xaf
,
0xed
,
0x22
,
0xe7
,
0xf5
,
0x3d
,
0x70
,
0x40
,
0xe4
,
0xee
,
0x79
,
0xc9
,
0x29
,
0x78
,
0x32
,
0x95
,
0xb1
,
0xb9
,
0xf7
,
0x94
,
0x19
,
0x23
,
0xfa
,
0x02
,
0x67
,
0xab
,
0x8e
,
0xae
,
0x3f
,
0x6b
,
0xbf
,
0x80
,
0xf3
,
0xf7
,
0x02
,
0x6e
,
0xbb
,
0xc0
,
0x2f
,
0x07
,
0xee
,
0x1f
,
0x3c
,
0xe3
,
0x3f
,
0x1c
,
0x8f
,
0x82
,
0xbf
,
0x15
,
0xe5
,
0x25
,
0xff
,
0x6e
,
0x07
,
0xb4
,
0x26
,
0x46
,
0x3e
,
0xe7
,
0x3c
,
0xd3
,
0x5f
,
0xaa
,
0x89
,
0x54
,
0x66
,
0xd3
,
0xb1
,
0xd7
,
0xee
,
0xf8
,
0x1c
,
0xa6
,
0x1f
,
0xae
,
0x44
,
0xd3
,
0xe3
,
0x3d
,
0x18
,
0xab
,
0x1f
,
0x75
,
0x7b
,
0x13
,
0x86
,
0x56
,
0xf4
,
0x04
,
0x4e
,
0x2e
,
0xb8
,
0x8a
,
0x93
,
0x8e
,
0x98
,
0x82
,
0x6f
,
0xc2
,
0x05
,
0x75
,
0xc2
,
0xd1
,
0x7c
,
0xc2
,
0xac
,
0x19
,
0xbd
,
0x44
,
0x39
,
0x13
,
0xd9
,
0xae
,
0x96
,
0x3f
,
0x82
,
0xdb
,
0xf8
,
0xfb
,
0x36
,
0xfa
,
0x60
,
0x39
,
0xc3
,
0x4f
,
0x1f
,
0x15
,
0xac
,
0x8e
,
0x2f
,
0x27
,
0xe0
,
0xe3
,
0xfb
,
0xeb
,
0x58
,
0xff
,
0xeb
,
0x9f
,
0xfe
,
0x09
,
0x00
,
0x00
,
0xff
,
0xff
,
0x93
,
0x02
,
0x76
,
0xfb
,
0xfc
,
0x05
,
0x00
,
0x00
,
func
init
()
{
proto
.
RegisterFile
(
"storage.proto"
,
fileDescriptor_storage_919e542fa62fc0e7
)
}
var
fileDescriptor_storage_919e542fa62fc0e7
=
[]
byte
{
// 471 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0xec
,
0x54
,
0xcf
,
0x8b
,
0xd3
,
0x40
,
0x14
,
0x36
,
0xe9
,
0xa6
,
0xb1
,
0x2f
,
0xdd
,
0xe0
,
0x8e
,
0xab
,
0x8c
,
0x28
,
0x6c
,
0x98
,
0xc3
,
0x52
,
0x14
,
0x7b
,
0xa8
,
0xde
,
0x14
,
0xd4
,
0x95
,
0x42
,
0x05
,
0x59
,
0x71
,
0x14
,
0x3c
,
0xca
,
0x18
,
0x06
,
0x53
,
0x5a
,
0x27
,
0x21
,
0x99
,
0x5d
,
0xcc
,
0x7f
,
0xe1
,
0x7f
,
0xe2
,
0xff
,
0xe7
,
0x49
,
0x32
,
0xf3
,
0x26
,
0x4d
,
0x9b
,
0xd6
,
0x93
,
0x78
,
0xf2
,
0x96
,
0xf7
,
0xbe
,
0xef
,
0x7d
,
0xef
,
0xc7
,
0x97
,
0x04
,
0x8e
,
0x2b
,
0x9d
,
0x97
,
0xe2
,
0xab
,
0x9c
,
0x16
,
0x65
,
0xae
,
0x73
,
0x12
,
0xe8
,
0xba
,
0x90
,
0x15
,
0xfb
,
0xe5
,
0x43
,
0xf8
,
0xc1
,
0x02
,
0xe4
,
0x0d
,
0xc4
,
0x69
,
0xae
,
0xb4
,
0x54
,
0x1a
,
0x33
,
0xd4
,
0x4b
,
0xbc
,
0x49
,
0x34
,
0x3b
,
0x9b
,
0x1a
,
0xee
,
0xf4
,
0xb5
,
0x05
,
0xdf
,
0xa9
,
0x75
,
0x7d
,
0x99
,
0x6b
,
0x51
,
0xd6
,
0x48
,
0x5b
,
0xdc
,
0xe0
,
0x3b
,
0x85
,
0xe4
,
0x25
,
0x44
,
0x99
,
0xa8
,
0x32
,
0xa7
,
0xe3
,
0x1b
,
0x9d
,
0x07
,
0xa8
,
0xb3
,
0x10
,
0x55
,
0xb6
,
0x4f
,
0xa4
,
0x5b
,
0x42
,
0x9e
,
0x43
,
0xb4
,
0x5e
,
0xaa
,
0x95
,
0x53
,
0x18
,
0x18
,
0x05
,
0x8a
,
0x0a
,
0x6f
,
0x97
,
0x6a
,
0xd5
,
0xab
,
0xee
,
0xd0
,
0xc9
,
0x1c
,
0x62
,
0xa9
,
0xd2
,
0xb2
,
0x2e
,
0xda
,
0x55
,
0x8e
,
0x8c
,
0xc0
,
0x7d
,
0x14
,
0x98
,
0x5b
,
0xb0
,
0xb7
,
0xc6
,
0x76
,
0x11
,
0xf9
,
0x08
,
0xb7
,
0x5d
,
0x26
,
0x13
,
0xa5
,
0x74
,
0x5a
,
0x81
,
0xd1
,
0x4a
,
0xb6
,
0xb5
,
0x0c
,
0x63
,
0x57
,
0x70
,
0x5f
,
0xf9
,
0x45
,
0x08
,
0xc1
,
0xb5
,
0x58
,
0x5f
,
0x49
,
0xf6
,
0x63
,
0x00
,
0xc7
,
0x98
,
0x7c
,
0x95
,
0xea
,
0x65
,
0xae
,
0xfe
,
0x5b
,
0xf0
,
0x6f
,
0x2c
,
0x20
,
0x31
,
0xf8
,
0xba
,
0xa6
,
0xc3
,
0xc4
,
0x9b
,
0x04
,
0xdc
,
0xd7
,
0xf5
,
0xc6
,
0x92
,
0xa7
,
0x40
,
0x0f
,
0xdd
,
0x98
,
0x50
,
0x08
,
0xf1
,
0xc6
,
0xc6
,
0x95
,
0x31
,
0x77
,
0x21
,
0x7b
,
0x04
,
0x77
,
0xf6
,
0x5e
,
0x94
,
0x10
,
0x38
,
0x6a
,
0x2e
,
0x8a
,
0x7c
,
0xf3
,
0xcc
,
0x9e
,
0xc1
,
0x49
,
0xef
,
0x78
,
0x0d
,
0xb1
,
0x39
,
0x9e
,
0x23
,
0x36
,
0xcf
,
0x6d
,
0xb1
,
0xdf
,
0x29
,
0xbe
,
0x86
,
0xd3
,
0x7d
,
0x87
,
0x23
,
0x09
,
0x44
,
0x38
,
0xcc
,
0x62
,
0xd3
,
0xaf
,
0x9b
,
0x22
,
0xe7
,
0xad
,
0x1f
,
0xb8
,
0x20
,
0xea
,
0xee
,
0x64
,
0xc9
,
0x29
,
0x04
,
0x2a
,
0x57
,
0xa9
,
0xf5
,
0x7b
,
0xcc
,
0x6d
,
0xc0
,
0x3e
,
0xc3
,
0xd9
,
0x7c
,
0x8b
,
0xd7
,
0xdf
,
0xb5
,
0xdf
,
0xc0
,
0xfb
,
0x73
,
0x03
,
0xbf
,
0xdb
,
0xe0
,
0xa7
,
0x07
,
0xf7
,
0x0e
,
0xda
,
0xf8
,
0x17
,
0xd7
,
0xa3
,
0x10
,
0xae
,
0x64
,
0x7d
,
0x29
,
0xbe
,
0xb9
,
0x05
,
0x5d
,
0x88
,
0xc8
,
0xa7
,
0x52
,
0x14
,
0xe6
,
0x4d
,
0xb5
,
0x48
,
0x13
,
0x6e
,
0x26
,
0x0e
,
0xba
,
0x13
,
0x9f
,
0xc3
,
0xf8
,
0xfd
,
0x95
,
0xdc
,
0xcc
,
0x78
,
0x17
,
0x86
,
0xfa
,
0x7b
,
0x3b
,
0xde
,
0x88
,
0x63
,
0xc4
,
0x1e
,
0xc3
,
0xc9
,
0x85
,
0xd0
,
0x69
,
0xb6
,
0x45
,
0xa6
,
0x10
,
0x5a
,
0xb8
,
0xa2
,
0x5e
,
0x32
,
0x98
,
0x8c
,
0xb8
,
0x0b
,
0xd9
,
0x0b
,
0xa4
,
0x73
,
0x59
,
0xac
,
0x5b
,
0xfa
,
0x43
,
0xb8
,
0x89
,
0xbf
,
0x6f
,
0xcb
,
0x8f
,
0x66
,
0x31
,
0xbe
,
0xfa
,
0xc8
,
0xe0
,
0x2d
,
0xce
,
0x6e
,
0x41
,
0xcc
,
0x65
,
0x2a
,
0x97
,
0xed
,
0x37
,
0x34
,
0x1b
,
0x41
,
0x88
,
0xe8
,
0x97
,
0xa1
,
0xf9
,
0xfb
,
0x3f
,
0xf9
,
0x1d
,
0x00
,
0x00
,
0xff
,
0xff
,
0x9e
,
0x3b
,
0x2b
,
0xb0
,
0x0e
,
0x06
,
0x00
,
0x00
,
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment