quorum_sdk 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 575ecf478b2a506d1370cb46615bfb67c0a96385b9bcce97576172520cf55fa0
4
- data.tar.gz: 8dbf6f2cf9ce014419a02a13895320dbfe75d6ef550ae37319025bd566cc8143
3
+ metadata.gz: 245e92c9c15874d6bb256ed440cd35022e5957d5b8ab29e259a53d4453df1a0e
4
+ data.tar.gz: 1c2fc0cb78d949eafc39b25f7d5f8c74b8c2ca48cf1b7fc035cfb64ad6cef92e
5
5
  SHA512:
6
- metadata.gz: 75e151a940633aa6c2fcdd7ad2005642aa096c3763109ae55b965055973ea09347da4aa2f9fab0228b2809a9a5d49882542327ffbed63422c94fb3f6b006138e
7
- data.tar.gz: cfac31d64825054781e16e6dfb9a5fb3cca5bae0598a7114272d574b5750b1695f6e63fcf0a01c76c7ad17be28d080eae2f2bac864598c9f087125b85b4bd002
6
+ metadata.gz: 93a857d4eb6197c52b83447640c146d9818723eebdc8102552e5140fc32c939316c6c0f546bf203d4e0d5dd458be37d2a0afef957d1fd2d74b8fe71bec5d4ef6
7
+ data.tar.gz: c48771075369a6b8d27c7ddc04a9593fe782a4a1189c069271535a8d5d2830d4c64f25604a0530fb84b415840625bfec73df30c5332c9aa4e0990508b7cfc810
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- quorum_sdk (0.2.0)
4
+ quorum_sdk (0.3.0)
5
5
  activesupport (~> 7)
6
6
  addressable (~> 2)
7
7
  bcrypt (~> 3.1)
data/README.md CHANGED
@@ -10,21 +10,13 @@ If bundler is not being used to manage dependencies, install the gem by executin
10
10
 
11
11
  $ gem install quorum_sdk
12
12
 
13
- ## Usage
13
+ ## LightNode Usage
14
14
 
15
15
  ### Initilize
16
16
 
17
17
  ```ruby
18
18
  # Initilize by seed url
19
- rum = QuorumSdk::API.new seed_url: "rum://...."
20
-
21
- # Initilize by config
22
- rum = QuorumSdk::API.new(
23
- gropu_id: '',
24
- gropu_name: '',
25
- cipher_key: '',
26
- chain_urls: ['', '']
27
- )
19
+ node = QuorumSdk::Node.new seed: "rum://...."
28
20
  ```
29
21
 
30
22
  ### Send a trx
@@ -44,10 +36,10 @@ account = QuorumSdk::Account.new
44
36
  # account = QuorumSdk::Account.new priv: private_key
45
37
 
46
38
  # build trx
47
- trx = rum.build_trx data: msg, private_key: account.private_hex
39
+ trx = node.build_trx data: msg, private_key: account.private_hex
48
40
 
49
41
  # push trx to chain
50
- rum.send_trx trx
42
+ node.send_trx trx
51
43
  # output: { trx_id: '...' }
52
44
 
53
45
  ```
@@ -69,18 +61,32 @@ activity = { type: 'Create', object: note }
69
61
  trx = rum.build_trx data: activity, private_key: account.private_hex
70
62
 
71
63
  # push trx to chain
72
- rum.send_trx trx
64
+ node.send_trx trx
73
65
  # output: { trx_id: '...' }
74
66
 
75
- # list Trx on chain
76
- rum.list_trx
67
+ # list Trx in the group on chain
68
+ node.list_trx
77
69
  # output: [{ trx_id: '...', Data: { type: 'Create', object: { type: 'Note', name: 'A title', content: 'Something awesome' }}}]
78
70
 
79
71
  ```
80
72
 
81
- ### Proto
73
+ ## FullNode Usage
82
74
 
83
- Check all available proto types in [chain_pb.rb](./lib/proto/chain_pb.rb) and [activity_stream_pb.rb](./lib/proto/activity_stream_pb.rb).
75
+ ### Initilize
76
+
77
+ ```ruby
78
+ chain = QuorumSdk::Chain.new chain_url: 'http://127.0.0.1:8002', jwt: ''
79
+
80
+ # list joined groups
81
+ chain.groups
82
+
83
+ # network
84
+ chain.network
85
+ ```
86
+
87
+ ## Proto
88
+
89
+ Check all available proto types in [chain_pb.rb](./lib/proto/chain_pb.rb).
84
90
 
85
91
  ## Development
86
92
 
@@ -5,10 +5,9 @@ package quorum.pb;
5
5
  option go_package = "github.com/rumsystem/quorum/pkg/pb";
6
6
 
7
7
  enum PackageType {
8
- TRX = 0;
9
- BLOCK = 1;
10
- SNAPSHOT = 2;
11
- HBB = 3;
8
+ TRX = 0;
9
+ BLOCK = 1;
10
+ HBB = 2;
12
11
  }
13
12
 
14
13
  message Package {
@@ -16,27 +15,9 @@ message Package {
16
15
  bytes Data = 2;
17
16
  }
18
17
 
19
- enum TrxType {
20
- POST = 0; // post to group
21
- SCHEMA = 2; // group schema
22
- PRODUCER = 3; // update group producer
23
- ANNOUNCE = 4; // self announce, producer or user)
24
- REQ_BLOCK_FORWARD = 5; // request next block
25
- REQ_BLOCK_BACKWARD = 6; // request previous block
26
- REQ_BLOCK_RESP = 7; // response request next block
27
- BLOCK_SYNCED = 8; // block for producer to sync (old block)
28
- BLOCK_PRODUCED = 9; // block for producer to merge (newly produced block)
29
- USER = 10; // update group user
30
- ASK_PEERID = 11; // ask owner/producer peerid
31
- ASK_PEERID_RESP = 12; // response ask peerid
32
- CHAIN_CONFIG = 13; // predefined chain configuration
33
- APP_CONFIG = 14; // group app customized configuration
34
- }
35
-
36
18
  enum AnnounceType {
37
19
  AS_USER = 0;
38
20
  AS_PRODUCER = 1;
39
- AS_USER_ENCRYPT = 2;
40
21
  }
41
22
 
42
23
  enum ApproveType {
@@ -55,129 +36,78 @@ enum TrxStroageType {
55
36
  CACHE = 1;
56
37
  }
57
38
 
58
- message Trx {
59
- string TrxId = 1;
60
- TrxType Type = 2;
61
- string GroupId = 3;
62
- bytes Data = 4;
63
- int64 TimeStamp = 5;
64
- string Version = 6;
65
- int64 Expired = 7;
66
- int64 ResendCount = 8;
67
- int64 Nonce = 9;
68
- string SenderPubkey = 10;
69
- bytes SenderSign = 11;
70
- TrxStroageType StorageType = 12;
71
- }
72
-
73
- message Block {
74
- string BlockId = 1;
75
- string GroupId = 2;
76
- string PrevBlockId = 3;
77
- bytes PreviousHash = 4;
78
- repeated Trx Trxs = 5;
79
- string ProducerPubKey = 6;
80
- bytes Hash = 7;
81
- bytes Signature = 8;
82
- int64 TimeStamp = 9;
83
- }
84
-
85
- message Snapshot {
86
- string SnapshotId = 1;
87
- string SnapshotPackageId = 2;
88
- int64 TotalCount = 3;
89
- string GroupId = 4;
90
- int64 Nonce = 5;
91
- repeated SnapshotItem SnapshotItems = 6;
92
- string SenderPubkey = 7;
93
- bytes Singature = 8;
94
- int64 TimeStamp = 9;
95
- int64 HighestHeight = 10;
96
- string HighestBlockId = 11;
97
- bytes ItemsHash = 12;
98
- }
99
-
100
- message SnapshotItem {
101
- string SnapshotItemId = 1;
102
- SnapShotItemType Type = 2;
103
- bytes Data = 3;
104
- }
105
-
106
- enum SnapShotItemType {
107
- SNAPSHOT_APP_CONFIG = 0; //app_config item
108
- SNAPSHOT_CHAIN_CONFIG = 1; //chain_config item
109
- SNAPSHOT_PRODUCER = 2; //producer item
110
- SNAPSHOT_USER = 3; //user item
111
- SNAPSHOT_ANNOUNCE = 4; //announce item
112
- }
113
-
114
- message SnapShotTag {
115
- int64 TimeStamp = 1;
116
- int64 HighestHeight = 2;
117
- string HighestBlockId = 3;
118
- bytes ItemsHash = 4;
119
- int64 Nonce = 5;
120
- string SnapshotPackageId = 6;
121
- string SenderPubkey = 7;
122
- }
123
-
124
- message BlockDbChunk {
125
- string BlockId = 1;
126
- Block BlockItem = 2;
127
- string ParentBlockId = 3;
128
- repeated string SubBlockId = 4;
129
- int64 Height = 6;
130
- }
131
-
132
- message ReqBlock {
133
- string BlockId = 1; //block id
134
- string GroupId = 2; //group id
135
- string UserId = 3; //requester
136
- }
137
-
138
- message BlockSynced {
139
- Block BlockItem = 1;
39
+ enum TrxType {
40
+ POST = 0; // post to group
41
+ ANNOUNCE = 1; // producer or user self announce
42
+ PRODUCER = 2; // owner update group producer
43
+ USER = 3; // owner update group user
44
+ REQ_BLOCK = 4; // request block
45
+ REQ_BLOCK_RESP = 5; // response request block
46
+ CHAIN_CONFIG = 6; // chain configuration
47
+ APP_CONFIG = 7; // app configuration
140
48
  }
141
49
 
142
- message AskPeerId {
143
- string GroupId = 1;
144
- string UserPeerId = 2;
145
- string UserPubkey = 3;
146
- string UserSign = 4;
147
- string Memo = 5;
50
+ message Trx {
51
+ string TrxId = 1;
52
+ TrxType Type = 2;
53
+ string GroupId = 3;
54
+ bytes Data = 4;
55
+ int64 TimeStamp = 5;
56
+ string Version = 6;
57
+ int64 Expired = 7;
58
+ int64 ResendCount = 8;
59
+ string SenderPubkey = 10;
60
+ bytes SenderSign = 11;
61
+ TrxStroageType StorageType = 12;
62
+ reserved 9;
63
+ }
64
+
65
+ message Block {
66
+ string GroupId = 1;
67
+ uint64 BlockId = 2;
68
+ uint64 Epoch = 3;
69
+ bytes PrevHash = 4;
70
+ string ProducerPubkey = 5;
71
+ repeated Trx Trxs = 6;
72
+ bool Sudo = 7;
73
+ int64 TimeStamp = 8;
74
+ bytes BlockHash = 9;
75
+ bytes ProducerSign = 10;
148
76
  }
149
77
 
150
- message AskPeerIdResp {
151
- string GroupId = 1;
152
- string RespPeerId = 2;
153
- string RespPeerPubkey = 3;
154
- string RespSign = 4;
155
- bool IsDirectConnected = 5;
78
+ message ReqBlock {
79
+ string GroupId = 1; //group id
80
+ uint64 FromBlock = 2; //from which block
81
+ int32 BlksRequested = 3; //how many blocks requested, "-1" means many as possible
82
+ string ReqPubkey = 4; //requester pubkey
156
83
  }
157
84
 
158
- message BlockProduced {
159
- Block BlockItem = 1;
85
+ message BlocksBundle {
86
+ repeated Block Blocks = 1;
160
87
  }
161
88
 
162
89
  enum ReqBlkResult {
163
- BLOCK_IN_TRX = 0; //block data in trx
164
- BLOCK_NOT_FOUND = 1; //block not found
90
+ BLOCK_IN_RESP = 0; //"block(s) in resp and I may have more"
91
+ BLOCK_IN_RESP_ON_TOP = 1; //"block(s) in resp and I have no more block(when get req)"
92
+ BLOCK_NOT_FOUND = 2; //"no block in resp and I don't have the requested block"
165
93
  }
166
94
 
167
95
  message ReqBlockResp {
168
- ReqBlkResult Result = 1;
169
- string ProviderPubkey = 2;
170
- string RequesterPubkey = 3;
171
- string GroupId = 4;
172
- string BlockId = 5;
173
- bytes Block = 6;
96
+ string GroupId = 1;
97
+ string RequesterPubkey = 2;
98
+ string ProviderPubkey = 3;
99
+ ReqBlkResult Result = 4;
100
+ uint64 FromBlock = 5;
101
+ int32 BlksRequested = 6;
102
+ int32 BlksProvided = 7;
103
+ BlocksBundle Blocks = 8;
174
104
  }
175
105
 
176
106
  message PostItem {
177
- string TrxId = 1;
178
- string PublisherPubkey = 2;
179
- bytes Content = 3;
180
- int64 TimeStamp = 4;
107
+ string TrxId = 1;
108
+ string SenderPubkey = 2;
109
+ bytes Content = 3;
110
+ int64 TimeStamp = 4;
181
111
  }
182
112
 
183
113
  message ProducerItem {
@@ -185,12 +115,16 @@ message ProducerItem {
185
115
  string ProducerPubkey = 2;
186
116
  string GroupOwnerPubkey = 3;
187
117
  string GroupOwnerSign = 4;
188
- int64 TimeStamp = 5;
189
- ActionType Action = 6;
190
- int64 BlockProduced = 7;
118
+ ActionType Action = 5;
119
+ int64 WithnessBlocks = 6;
120
+ int64 TimeStamp = 7;
191
121
  string Memo = 8;
192
122
  }
193
123
 
124
+ message BFTProducerBundleItem {
125
+ repeated ProducerItem Producers = 1;
126
+ }
127
+
194
128
  message UserItem {
195
129
  string GroupId = 1;
196
130
  string UserPubkey = 2;
@@ -216,40 +150,28 @@ message AnnounceItem {
216
150
  string Memo = 11;
217
151
  }
218
152
 
219
- message SchemaItem {
220
- string GroupId = 1;
221
- string GroupOwnerPubkey = 2;
222
- string GroupOwnerSign = 3;
223
- string Type = 4;
224
- string Rule = 5;
225
- int64 TimeStamp = 6;
226
- ActionType Action = 7;
227
- }
228
-
229
153
  enum GroupEncryptType {
230
- PUBLIC = 0; //public group
231
- PRIVATE = 1; //private group
154
+ PUBLIC = 0;
155
+ PRIVATE = 1;
232
156
  }
233
157
 
234
158
  enum GroupConsenseType {
235
- POA = 0; //proof of authen
159
+ POA = 0;
236
160
  POS = 1;
237
161
  }
238
162
 
239
163
  message GroupItem {
240
- string GroupId = 1;
241
- string GroupName = 2;
242
- string OwnerPubKey = 3;
243
- string UserSignPubkey = 4;
244
- string UserEncryptPubkey = 5;
245
- int64 LastUpdate = 6;
246
- int64 HighestHeight = 7;
247
- string HighestBlockId = 8;
248
- Block GenesisBlock = 9;
249
- GroupEncryptType EncryptType = 10;
250
- GroupConsenseType ConsenseType = 11;
251
- string CipherKey = 12;
252
- string AppKey = 13;
164
+ string GroupId = 1;
165
+ string GroupName = 2;
166
+ string OwnerPubKey = 3;
167
+ string UserSignPubkey = 4;
168
+ string UserEncryptPubkey = 5;
169
+ int64 LastUpdate = 6;
170
+ Block GenesisBlock = 7;
171
+ GroupEncryptType EncryptType = 8;
172
+ GroupConsenseType ConsenseType = 9;
173
+ string CipherKey = 10;
174
+ string AppKey = 11;
253
175
  }
254
176
 
255
177
  enum RoleV0 {
@@ -294,23 +216,6 @@ message SetTrxAuthModeItem {
294
216
  TrxAuthMode Mode = 2;
295
217
  }
296
218
 
297
- message GroupItemV0 {
298
- string GroupId = 1;
299
- string GroupName = 2;
300
- string OwnerPubKey = 3;
301
- string UserSignPubkey = 4;
302
- string UserEncryptPubkey = 5;
303
- RoleV0 UserRole = 6;
304
- int64 LastUpdate = 7;
305
- int64 HighestHeight = 8;
306
- string HighestBlockId = 9;
307
- Block GenesisBlock = 10;
308
- GroupEncryptType EncryptType = 11;
309
- GroupConsenseType ConsenseType = 12;
310
- string CipherKey = 13;
311
- string AppKey = 14;
312
- }
313
-
314
219
  enum AppConfigType {
315
220
  INT = 0;
316
221
  BOOL = 1;
@@ -329,93 +234,123 @@ message AppConfigItem{
329
234
  int64 TimeStamp = 9;
330
235
  }
331
236
 
332
- message PSPing {
333
- int32 Seqnum = 1;
334
- bool IsResp = 2;
335
- int64 TimeStamp = 3;
336
- bytes Payload = 4;
337
- }
338
-
339
237
  message GroupSeed {
340
- Block GenesisBlock = 1;
341
- string GroupId = 2;
342
- string GroupName = 3;
343
- string OwnerPubkey = 4;
238
+ Block GenesisBlock = 1;
239
+ string GroupId = 2;
240
+ string GroupName = 3;
241
+ string OwnerPubkey = 4;
344
242
  string ConsensusType = 5;
345
243
  string EncryptionType = 6;
346
- string CipherKey = 7;
347
- string AppKey = 8;
348
- string Signature = 9;
244
+ string CipherKey = 7;
245
+ string AppKey = 8;
246
+ string Signature = 9;
349
247
  }
350
248
 
351
249
  message NodeSDKGroupItem {
352
- GroupItem Group = 1;
353
- string EncryptAlias = 2;
354
- string SignAlias = 3;
355
- repeated string ApiUrl = 4;
356
- string GroupSeed = 5;
250
+ GroupItem Group = 1;
251
+ string EncryptAlias = 2;
252
+ string SignAlias = 3;
253
+ repeated string ApiUrl = 4;
254
+ string GroupSeed = 5;
357
255
  }
358
256
 
359
- enum HBBMsgType {
360
- AGREEMENT = 0;
361
- BROADCAST = 1;
257
+ message HBTrxBundle {
258
+ repeated Trx Trxs = 1;
259
+ }
260
+
261
+ message HBMsgv1 {
262
+ string MsgId = 1;
263
+ uint64 Epoch = 2;
264
+ HBMsgPayloadType PayloadType = 3; // RBC or BBA
265
+ bytes Payload = 4;
362
266
  }
363
267
 
364
- message HBMsg {
365
- string MsgId = 1;
366
- HBBMsgType MsgType = 2;
367
- bytes Payload = 3;
268
+ enum HBMsgPayloadType {
269
+ RBC = 0;
270
+ BBA = 1;
368
271
  }
369
272
 
370
- enum BroadcastMsgType {
371
- PROOF = 0;
372
- READY = 1;
273
+ // RBC
274
+ message RBCMsg {
275
+ RBCMsgType Type = 1; //INIT_PROPOSE / PROOF / READY
276
+ bytes Payload = 2;
373
277
  }
374
278
 
375
- message HBTrxBundle {
376
- repeated Trx Trxs = 1;
279
+ enum RBCMsgType {
280
+ INIT_PROPOSE = 0;
281
+ ECHO = 1;
282
+ READY = 2;
377
283
  }
378
284
 
379
- message BroadcastMsg {
380
- string SenderPubkey = 1;
381
- BroadcastMsgType Type = 2;
382
- int64 Epoch = 3;
383
- bytes Payload = 4;
285
+ message InitPropose {
286
+ bytes RootHash = 1;
287
+ repeated bytes Proof = 2;
288
+ int64 Index = 3;
289
+ int64 Leaves = 4;
290
+ int64 OriginalDataSize = 5;
291
+ string RecvNodePubkey = 6; //producer which should handle this ecc data shard
292
+ string ProposerPubkey = 7; //producer which make this propose (part of ecc shards)
293
+ bytes ProposerSign = 8; //signature of producer made this propose
384
294
  }
385
295
 
386
- message Proof{
387
- bytes RootHash = 1;
388
- repeated bytes Proof = 2;
389
- int64 Index = 3;
390
- int64 Leaves = 4;
391
- bytes ProposerPubkey = 5;
392
- bytes ProposerSign = 6;
296
+ message Echo {
297
+ bytes RootHash = 1;
298
+ repeated bytes Proof = 2;
299
+ int64 Index = 3;
300
+ int64 Leaves = 4;
301
+ int64 OriginalDataSize = 5;
302
+ string OriginalProposerPubkey = 6; //producer make this original input
303
+ string EchoProviderPubkey = 7; //producer which broadcast this Echo
304
+ bytes EchoProviderSign = 8; //signature of producer broadcast this Echo
393
305
  }
394
306
 
395
307
  message Ready {
396
- bytes RootHash = 1;
397
- bytes ProoferPubkey = 2;
398
- bytes ProposerPubkey = 3;
399
- bytes ProposerSign = 4;
308
+ bytes RootHash = 1;
309
+ string OriginalProposerPubkey = 2;
310
+ string ReadyProviderPubkey = 3;
311
+ bytes ReadyProviderSign = 4;
400
312
  }
401
313
 
402
- enum AgreementMsgType {
403
- BVAL = 0;
404
- AUX = 1;
314
+ // BBA
315
+ message BBAMsg {
316
+ BBAMsgType Type = 1; //BVAL or AUX
317
+ bytes Payload = 2;
405
318
  }
406
319
 
407
- message AgreementMsg {
408
- AgreementMsgType Type = 1;
409
- string ProposerId = 2;
410
- string SenderId = 3;
411
- int64 Epoch = 4;
412
- bytes Payload = 5;
320
+ enum BBAMsgType {
321
+ BVAL = 0;
322
+ AUX = 1;
413
323
  }
414
324
 
415
325
  message Bval {
416
- bool Value = 1;
326
+ string ProposerId = 1;
327
+ string SenderPubkey = 2;
328
+ int64 Epoch = 3;
329
+ bool Value = 4;
417
330
  }
418
331
 
419
332
  message Aux {
420
- bool Value = 1;
333
+ string ProposerId = 1;
334
+ string SenderPubkey = 2;
335
+ uint64 Epoch = 3;
336
+ bool Value = 4;
421
337
  }
338
+
339
+ //old proto msg
340
+ message GroupItemV0 {
341
+ string GroupId = 1;
342
+ string GroupName = 2;
343
+ string OwnerPubKey = 3;
344
+ string UserSignPubkey = 4;
345
+ string UserEncryptPubkey = 5;
346
+ RoleV0 UserRole = 6;
347
+ int64 LastUpdate = 7;
348
+ int64 HighestHeight = 8;
349
+ string HighestBlockId = 9;
350
+ Block GenesisBlock = 10;
351
+ GroupEncryptType EncryptType = 11;
352
+ GroupConsenseType ConsenseType = 12;
353
+ string CipherKey = 13;
354
+ string AppKey = 14;
355
+ }
356
+