viz-js-lib 0.11.0 → 0.12.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/.qoder/docs/spec/viz-dns-nameserver-spec.md +982 -0
  2. package/.qoder/docs/viz-cpp-node-docs/data-types.md +322 -0
  3. package/.qoder/docs/viz-cpp-node-docs/index.md +160 -0
  4. package/.qoder/docs/viz-cpp-node-docs/op-account-market.md +236 -0
  5. package/.qoder/docs/viz-cpp-node-docs/op-account.md +199 -0
  6. package/.qoder/docs/viz-cpp-node-docs/op-award.md +162 -0
  7. package/.qoder/docs/viz-cpp-node-docs/op-committee.md +193 -0
  8. package/.qoder/docs/viz-cpp-node-docs/op-content.md +157 -0
  9. package/.qoder/docs/viz-cpp-node-docs/op-escrow.md +224 -0
  10. package/.qoder/docs/viz-cpp-node-docs/op-invite.md +219 -0
  11. package/.qoder/docs/viz-cpp-node-docs/op-proposal.md +229 -0
  12. package/.qoder/docs/viz-cpp-node-docs/op-recovery.md +188 -0
  13. package/.qoder/docs/viz-cpp-node-docs/op-subscription.md +146 -0
  14. package/.qoder/docs/viz-cpp-node-docs/op-transfer-vesting.md +224 -0
  15. package/.qoder/docs/viz-cpp-node-docs/op-witness.md +252 -0
  16. package/.qoder/docs/viz-cpp-node-docs/plugins.md +887 -0
  17. package/.qoder/docs/viz-cpp-node-docs/virtual-operations.md +513 -0
  18. package/.qoder/repowiki/en/content/API Reference/API Reference.md +724 -0
  19. package/.qoder/repowiki/en/content/API Reference/Configuration Options.md +410 -0
  20. package/.qoder/repowiki/en/content/API Reference/Core API Methods.md +547 -0
  21. package/.qoder/repowiki/en/content/API Reference/Streaming APIs.md +380 -0
  22. package/.qoder/repowiki/en/content/API Reference/Transport Layer.md +341 -0
  23. package/.qoder/repowiki/en/content/API Reference/VIZ Blockchain Operations Coverage Status.md +427 -0
  24. package/.qoder/repowiki/en/content/Authentication & Cryptography/Authentication & Cryptography.md +430 -0
  25. package/.qoder/repowiki/en/content/Authentication & Cryptography/Digital Signatures.md +462 -0
  26. package/.qoder/repowiki/en/content/Authentication & Cryptography/Key Management.md +456 -0
  27. package/.qoder/repowiki/en/content/Authentication & Cryptography/Memo Encryption.md +331 -0
  28. package/.qoder/repowiki/en/content/Authentication & Cryptography/Security Practices.md +488 -0
  29. package/.qoder/repowiki/en/content/Broadcast Transactions/Broadcast Transactions.md +432 -0
  30. package/.qoder/repowiki/en/content/Broadcast Transactions/Network Broadcasting.md +418 -0
  31. package/.qoder/repowiki/en/content/Broadcast Transactions/Operation Construction.md +352 -0
  32. package/.qoder/repowiki/en/content/Broadcast Transactions/Transaction Preparation.md +353 -0
  33. package/.qoder/repowiki/en/content/Broadcast Transactions/Transaction Signing.md +404 -0
  34. package/.qoder/repowiki/en/content/Data Serialization/Data Serialization.md +540 -0
  35. package/.qoder/repowiki/en/content/Data Serialization/Encoding & Decoding.md +463 -0
  36. package/.qoder/repowiki/en/content/Data Serialization/Object Templates.md +413 -0
  37. package/.qoder/repowiki/en/content/Data Serialization/Type System.md +514 -0
  38. package/.qoder/repowiki/en/content/Data Serialization/Validation Rules.md +439 -0
  39. package/.qoder/repowiki/en/content/Examples & Tutorials.md +485 -0
  40. package/.qoder/repowiki/en/content/Getting Started.md +345 -0
  41. package/.qoder/repowiki/en/content/Testing & Development.md +637 -0
  42. package/.qoder/repowiki/en/content/Utilities & Helpers.md +557 -0
  43. package/.qoder/repowiki/en/meta/repowiki-metadata.json +1 -0
  44. package/VIZ-JS-LIB-COVERAGE-STATUS.md +356 -0
  45. package/config.json +3 -1
  46. package/dist/statistics.html +1 -1
  47. package/dist/viz-tests.min.js +32 -42
  48. package/dist/viz-tests.min.js.gz +0 -0
  49. package/dist/viz.min.js +8 -18
  50. package/dist/viz.min.js.gz +0 -0
  51. package/lib/api/methods.js +24 -0
  52. package/lib/auth/serializer/src/ChainTypes.js +2 -1
  53. package/lib/auth/serializer/src/operations.js +35 -2
  54. package/lib/broadcast/index.js +29 -15
  55. package/lib/broadcast/operations.js +4 -0
  56. package/lib/dns.js +658 -0
  57. package/lib/index.js +3 -1
  58. package/package.json +3 -2
  59. package/test/dns.test.js +395 -0
  60. package/webpack/makeConfig.js +3 -0
@@ -0,0 +1,887 @@
1
+ # VIZ Blockchain — Plugins Reference
2
+
3
+ Complete specification of all VIZ node plugins: what they do, dependencies, status (active/deprecated), and JSON-RPC API methods.
4
+
5
+ ---
6
+
7
+ ## Plugin Architecture Overview
8
+
9
+ VIZ uses a modular plugin architecture based on Appbase. Plugins can:
10
+ - Provide JSON-RPC API methods
11
+ - Store additional data in the chainbase database
12
+ - React to blockchain events (applied blocks, operations, etc.)
13
+ - Depend on other plugins
14
+
15
+ ### Plugin Categories
16
+
17
+ | Category | Description |
18
+ |---|---|
19
+ | **Core** | Essential for node operation |
20
+ | **API** | Expose JSON-RPC endpoints |
21
+ | **Index** | Index blockchain data for queries |
22
+ | **Infrastructure** | Networking, web server |
23
+ | **External** | Integration with external systems |
24
+ | **Debug/Test** | Development and testing only |
25
+
26
+ ---
27
+
28
+ ## Core Plugins
29
+
30
+ ### `chain`
31
+ **Status:** Active (Required)
32
+ **Category:** Core
33
+ **Dependencies:** `json_rpc`
34
+
35
+ The fundamental plugin that manages the blockchain database, block validation, and transaction processing.
36
+
37
+ **Purpose:**
38
+ - Maintains the blockchain state database (chainbase)
39
+ - Validates and applies blocks and transactions
40
+ - Provides database access to other plugins
41
+ - Emits signals on block application
42
+
43
+ **JSON-RPC:** None (internal only)
44
+
45
+ **Config options:**
46
+ ```ini
47
+ shared-file-size = 2G
48
+ shared-file-dir = /path/to/blockchain
49
+ flush-state-interval = 0
50
+ ```
51
+
52
+ ---
53
+
54
+ ### `json_rpc`
55
+ **Status:** Active (Required)
56
+ **Category:** Core
57
+ **Dependencies:** None
58
+
59
+ Provides the JSON-RPC 2.0 framework for API method registration and dispatching.
60
+
61
+ **Purpose:**
62
+ - Registers API methods from all plugins
63
+ - Parses JSON-RPC requests
64
+ - Dispatches to appropriate handlers
65
+ - Returns formatted responses
66
+
67
+ **JSON-RPC:** None (framework only)
68
+
69
+ ---
70
+
71
+ ### `webserver`
72
+ **Status:** Active (Required for API access)
73
+ **Category:** Infrastructure
74
+ **Dependencies:** `json_rpc`
75
+
76
+ HTTP/WebSocket server that accepts JSON-RPC requests.
77
+
78
+ **Purpose:**
79
+ - Serves HTTP and WebSocket connections
80
+ - Routes requests to `json_rpc` plugin
81
+ - Handles CORS, timeouts, connection limits
82
+
83
+ **JSON-RPC:** None (transport only)
84
+
85
+ **Config options:**
86
+ ```ini
87
+ webserver-http-endpoint = 0.0.0.0:8090
88
+ webserver-ws-endpoint = 0.0.0.0:8091
89
+ webserver-thread-pool-size = 32
90
+ ```
91
+
92
+ ---
93
+
94
+ ### `p2p`
95
+ **Status:** Active (Required for network sync)
96
+ **Category:** Infrastructure
97
+ **Dependencies:** `chain`
98
+
99
+ Peer-to-peer networking for block and transaction propagation.
100
+
101
+ **Purpose:**
102
+ - Discovers and connects to peers
103
+ - Syncs blockchain from the network
104
+ - Broadcasts blocks and transactions
105
+ - Maintains peer database
106
+
107
+ **JSON-RPC:** None (internal only)
108
+
109
+ **Config options:**
110
+ ```ini
111
+ p2p-endpoint = 0.0.0.0:2001
112
+ p2p-seed-node = seed.viz.world:2001
113
+ p2p-max-connections = 200
114
+ ```
115
+
116
+ ---
117
+
118
+ ## API Plugins
119
+
120
+ ### `database_api`
121
+ **Status:** Active
122
+ **Category:** API
123
+ **Dependencies:** `json_rpc`, `chain`
124
+
125
+ Primary read API for blockchain state queries.
126
+
127
+ **Purpose:**
128
+ - Query blocks, transactions, accounts
129
+ - Query chain properties, hardfork status
130
+ - Validate transactions and signatures
131
+ - Query escrows, delegations, proposals
132
+
133
+ **JSON-RPC Methods:**
134
+
135
+ | Method | Description |
136
+ |---|---|
137
+ | `database_api.get_block_header` | Get block header by height |
138
+ | `database_api.get_block` | Get full signed block |
139
+ | `database_api.get_irreversible_block_header` | Get irreversible block header |
140
+ | `database_api.get_irreversible_block` | Get irreversible block |
141
+ | `database_api.set_block_applied_callback` | Subscribe to new blocks |
142
+ | `database_api.get_config` | Get compile-time chain constants |
143
+ | `database_api.get_dynamic_global_properties` | Get current chain state |
144
+ | `database_api.get_chain_properties` | Get median witness properties |
145
+ | `database_api.get_hardfork_version` | Get current hardfork version |
146
+ | `database_api.get_next_scheduled_hardfork` | Get next hardfork info |
147
+ | `database_api.get_accounts` | Get accounts by names |
148
+ | `database_api.lookup_account_names` | Lookup accounts (nullable) |
149
+ | `database_api.lookup_accounts` | List accounts by prefix |
150
+ | `database_api.get_account_count` | Get total account count |
151
+ | `database_api.get_master_history` | Get account master key history |
152
+ | `database_api.get_recovery_request` | Get pending recovery request |
153
+ | `database_api.get_escrow` | Get escrow by ID |
154
+ | `database_api.get_withdraw_routes` | Get vesting withdraw routes |
155
+ | `database_api.get_vesting_delegations` | Get active delegations |
156
+ | `database_api.get_expiring_vesting_delegations` | Get expiring delegations |
157
+ | `database_api.get_transaction_hex` | Get transaction as hex |
158
+ | `database_api.get_required_signatures` | Get required signatures |
159
+ | `database_api.get_potential_signatures` | Get all potential signers |
160
+ | `database_api.verify_authority` | Verify transaction authority |
161
+ | `database_api.verify_account_authority` | Verify account authority |
162
+ | `database_api.get_database_info` | Get database statistics |
163
+ | `database_api.get_proposed_transactions` | Get proposals for account |
164
+ | `database_api.get_accounts_on_sale` | List accounts for sale |
165
+ | `database_api.get_accounts_on_auction` | List accounts on auction |
166
+ | `database_api.get_subaccounts_on_sale` | List subaccounts for sale |
167
+
168
+ ---
169
+
170
+ ### `network_broadcast_api`
171
+ **Status:** Active
172
+ **Category:** API
173
+ **Dependencies:** `json_rpc`, `chain`, `p2p`
174
+
175
+ Broadcasts transactions and blocks to the network.
176
+
177
+ **Purpose:**
178
+ - Broadcast signed transactions
179
+ - Broadcast signed blocks (for witnesses)
180
+ - Synchronous transaction confirmation
181
+
182
+ **JSON-RPC Methods:**
183
+
184
+ | Method | Description |
185
+ |---|---|
186
+ | `network_broadcast_api.broadcast_transaction` | Broadcast transaction (async) |
187
+ | `network_broadcast_api.broadcast_transaction_synchronous` | Broadcast and wait for inclusion |
188
+ | `network_broadcast_api.broadcast_transaction_with_callback` | Broadcast with callback |
189
+ | `network_broadcast_api.broadcast_block` | Broadcast a signed block |
190
+
191
+ ---
192
+
193
+ ### `witness_api`
194
+ **Status:** Active
195
+ **Category:** API
196
+ **Dependencies:** `json_rpc`, `chain`
197
+
198
+ Query witness information.
199
+
200
+ **Purpose:**
201
+ - List active/scheduled witnesses
202
+ - Query witness by account or vote rank
203
+ - Get witness schedule
204
+
205
+ **JSON-RPC Methods:**
206
+
207
+ | Method | Description |
208
+ |---|---|
209
+ | `witness_api.get_active_witnesses` | Get current active witness set |
210
+ | `witness_api.get_witness_schedule` | Get witness schedule object |
211
+ | `witness_api.get_witnesses` | Get witnesses by IDs |
212
+ | `witness_api.get_witness_by_account` | Get witness by account name |
213
+ | `witness_api.get_witnesses_by_vote` | Get witnesses ranked by votes |
214
+ | `witness_api.get_witnesses_by_counted_vote` | Get witnesses by counted votes |
215
+ | `witness_api.get_witness_count` | Get total witness count |
216
+ | `witness_api.lookup_witness_accounts` | List witness accounts by prefix |
217
+
218
+ ---
219
+
220
+ ### `account_by_key`
221
+ **Status:** Active
222
+ **Category:** Index/API
223
+ **Dependencies:** `json_rpc`, `chain`
224
+
225
+ Indexes accounts by their public keys for reverse lookup.
226
+
227
+ **Purpose:**
228
+ - Find accounts that use a given public key
229
+ - Useful for wallet applications
230
+
231
+ **JSON-RPC Methods:**
232
+
233
+ | Method | Description |
234
+ |---|---|
235
+ | `account_by_key.get_key_references` | Get accounts using given public keys |
236
+
237
+ ---
238
+
239
+ ### `account_history`
240
+ **Status:** Active
241
+ **Category:** Index/API
242
+ **Dependencies:** `json_rpc`, `chain`, `operation_history`
243
+
244
+ Indexes operation history per account.
245
+
246
+ **Purpose:**
247
+ - Query operation history for a specific account
248
+ - Paginated access to account activity
249
+
250
+ **JSON-RPC Methods:**
251
+
252
+ | Method | Description |
253
+ |---|---|
254
+ | `account_history.get_account_history` | Get operations for an account |
255
+
256
+ #### `get_account_history`
257
+
258
+ **Parameters:**
259
+
260
+ | # | Name | Type | Description |
261
+ |---|---|---|---|
262
+ | 1 | `account` | string | Account name to query |
263
+ | 2 | `from` | uint32 | Starting sequence number, or `-1` for newest |
264
+ | 3 | `limit` | uint32 | Max entries to return (1-1000) |
265
+
266
+ **Behavior:**
267
+ - `from = -1` (or `4294967295`): Start from the most recent operation
268
+ - Returns entries in descending order (newest first)
269
+ - If `limit` exceeds available entries, returns all available without error
270
+ - Example: Account has 5 entries, request `from=-1, limit=10` → returns all 5 entries
271
+
272
+ **Request:**
273
+ ```json
274
+ {
275
+ "jsonrpc": "2.0",
276
+ "method": "account_history.get_account_history",
277
+ "params": ["on1x", -1, 10],
278
+ "id": 1
279
+ }
280
+ ```
281
+
282
+ **Response:**
283
+ ```json
284
+ {
285
+ "jsonrpc": "2.0",
286
+ "result": {
287
+ "4": {"trx_id": "abc...", "block": 1234, "op": [...]},
288
+ "3": {"trx_id": "def...", "block": 1233, "op": [...]},
289
+ "2": {"trx_id": "ghi...", "block": 1232, "op": [...]}
290
+ },
291
+ "id": 1
292
+ }
293
+ ```
294
+
295
+ **Config options:**
296
+ ```ini
297
+ track-account-range = ["", "zzzzzzzzzzzzzzzz"]
298
+ history-count-blocks = 4294967295
299
+ ```
300
+
301
+ **Memory Management:**
302
+ - Old history entries are automatically purged based on `history-count-blocks`
303
+ - Coordinates with `operation_history` plugin to avoid dangling references
304
+ - Uses the more aggressive purge threshold between both plugins
305
+ - Signal handlers are properly disconnected on shutdown to prevent memory leaks
306
+
307
+ ---
308
+
309
+ ### `operation_history`
310
+ **Status:** Active
311
+ **Category:** Index/API
312
+ **Dependencies:** `json_rpc`, `chain`
313
+
314
+ Indexes all operations in blocks.
315
+
316
+ **Purpose:**
317
+ - Query operations within a block
318
+ - Lookup transactions by ID
319
+ - Provides base operation storage for `account_history` plugin
320
+
321
+ **JSON-RPC Methods:**
322
+
323
+ | Method | Description |
324
+ |---|---|
325
+ | `operation_history.get_ops_in_block` | Get operations in a block |
326
+ | `operation_history.get_transaction` | Get transaction by ID |
327
+
328
+ **Config options:**
329
+ ```ini
330
+ history-whitelist-ops = [] # Only store these operations (exclusive with blacklist)
331
+ history-blacklist-ops = [] # Don't store these operations
332
+ history-start-block = 0 # Start recording from this block
333
+ history-count-blocks = 4294967295 # How many blocks of history to keep
334
+ ```
335
+
336
+ **Memory Management:**
337
+ - Old operations are automatically purged based on `history-count-blocks`
338
+ - `account_history` plugin coordinates purging with this plugin
339
+ - Signal handlers are properly disconnected on shutdown to prevent memory leaks
340
+ - Exposes `get_min_keep_block()` for dependent plugins to coordinate purging
341
+
342
+ ---
343
+
344
+ ### `committee_api`
345
+ **Status:** Active
346
+ **Category:** API
347
+ **Dependencies:** `json_rpc`, `chain`
348
+
349
+ Query committee worker requests.
350
+
351
+ **Purpose:**
352
+ - Get committee request details
353
+ - List all committee requests
354
+ - Get votes on requests
355
+
356
+ **JSON-RPC Methods:**
357
+
358
+ | Method | Description |
359
+ |---|---|
360
+ | `committee_api.get_committee_request` | Get request by ID |
361
+ | `committee_api.get_committee_request_votes` | Get votes on a request |
362
+ | `committee_api.get_committee_requests_list` | List all request IDs |
363
+
364
+ ---
365
+
366
+ ### `invite_api`
367
+ **Status:** Active
368
+ **Category:** API
369
+ **Dependencies:** `json_rpc`, `chain`
370
+
371
+ Query invite codes.
372
+
373
+ **Purpose:**
374
+ - List active invites
375
+ - Lookup invite by ID or public key
376
+
377
+ **JSON-RPC Methods:**
378
+
379
+ | Method | Description |
380
+ |---|---|
381
+ | `invite_api.get_invites_list` | List all invite IDs |
382
+ | `invite_api.get_invite_by_id` | Get invite by database ID |
383
+ | `invite_api.get_invite_by_key` | Get invite by public key |
384
+
385
+ ---
386
+
387
+ ### `paid_subscription_api`
388
+ **Status:** Active
389
+ **Category:** API
390
+ **Dependencies:** `json_rpc`, `chain`
391
+
392
+ Query paid subscriptions.
393
+
394
+ **Purpose:**
395
+ - List subscription offerings
396
+ - Check subscription status between accounts
397
+
398
+ **JSON-RPC Methods:**
399
+
400
+ | Method | Description |
401
+ |---|---|
402
+ | `paid_subscription_api.get_paid_subscriptions` | List all subscription offerings |
403
+ | `paid_subscription_api.get_paid_subscription_options` | Get subscription config for account |
404
+ | `paid_subscription_api.get_paid_subscription_status` | Get subscription status subscriber→account |
405
+ | `paid_subscription_api.get_active_paid_subscriptions` | List active subscriptions for subscriber |
406
+ | `paid_subscription_api.get_inactive_paid_subscriptions` | List expired subscriptions |
407
+
408
+ ---
409
+
410
+ ### `follow`
411
+ **Status:** Deprecated
412
+ **Category:** Index/API
413
+ **Dependencies:** `json_rpc`, `chain`
414
+
415
+ Indexes follow relationships and content feeds.
416
+
417
+ **Purpose:**
418
+ - Track followers/following
419
+ - Build personalized feeds
420
+ - Track reblogs
421
+
422
+ **JSON-RPC Methods:**
423
+
424
+ | Method | Description |
425
+ |---|---|
426
+ | `follow.get_followers` | Get followers of an account |
427
+ | `follow.get_following` | Get accounts followed by an account |
428
+ | `follow.get_follow_count` | Get follower/following counts |
429
+ | `follow.get_feed_entries` | Get feed entries (references only) |
430
+ | `follow.get_feed` | Get feed with full content |
431
+ | `follow.get_blog_entries` | Get blog entries (references) |
432
+ | `follow.get_blog` | Get blog with full content |
433
+ | `follow.get_reblogged_by` | Get accounts that reblogged content |
434
+ | `follow.get_blog_authors` | Get authors reblogged on a blog |
435
+
436
+ ---
437
+
438
+ ### `tags`
439
+ **Status:** Deprecated
440
+ **Category:** Index/API
441
+ **Dependencies:** `json_rpc`, `chain`, `follow`
442
+
443
+ Indexes content by tags and provides content discovery.
444
+
445
+ **Purpose:**
446
+ - Query trending/hot/new content by tag
447
+ - Track tag statistics
448
+ - Content discovery APIs
449
+
450
+ **JSON-RPC Methods:**
451
+
452
+ | Method | Description |
453
+ |---|---|
454
+ | `tags.get_trending_tags` | Get tags sorted by activity |
455
+ | `tags.get_tags_used_by_author` | Get tags used by an author |
456
+ | `tags.get_discussions_by_trending` | Get trending discussions |
457
+ | `tags.get_discussions_by_created` | Get newest discussions |
458
+ | `tags.get_discussions_by_active` | Get recently active discussions |
459
+ | `tags.get_discussions_by_cashout` | Get discussions by cashout time |
460
+ | `tags.get_discussions_by_payout` | Get discussions by payout |
461
+ | `tags.get_discussions_by_votes` | Get discussions by vote count |
462
+ | `tags.get_discussions_by_children` | Get discussions by reply count |
463
+ | `tags.get_discussions_by_hot` | Get hot discussions |
464
+ | `tags.get_discussions_by_feed` | Get discussions from feed |
465
+ | `tags.get_discussions_by_blog` | Get discussions from blog |
466
+ | `tags.get_discussions_by_contents` | Get discussions by content |
467
+ | `tags.get_discussions_by_author_before_date` | Get author's posts before date |
468
+ | `tags.get_languages` | Get available content languages |
469
+
470
+ ---
471
+
472
+ ### `social_network`
473
+ **Status:** Deprecated
474
+ **Category:** API
475
+ **Dependencies:** `json_rpc`, `chain`
476
+
477
+ High-level content and social queries (combines multiple data sources).
478
+
479
+ **Purpose:**
480
+ - Query content discussions
481
+ - Get votes on content
482
+ - Committee and invite queries (convenience)
483
+
484
+ **JSON-RPC Methods:**
485
+
486
+ | Method | Description |
487
+ |---|---|
488
+ | `social_network.get_content` | Get discussion by author/permlink |
489
+ | `social_network.get_content_replies` | Get direct replies |
490
+ | `social_network.get_all_content_replies` | Get all nested replies |
491
+ | `social_network.get_account_votes` | Get votes cast by account |
492
+ | `social_network.get_active_votes` | Get votes on content |
493
+ | `social_network.get_replies_by_last_update` | Get replies sorted by update |
494
+ | `social_network.get_committee_request` | Get committee request |
495
+ | `social_network.get_committee_request_votes` | Get committee request votes |
496
+ | `social_network.get_committee_requests_list` | List committee requests |
497
+ | `social_network.get_invites_list` | List invites |
498
+ | `social_network.get_invite_by_id` | Get invite by ID |
499
+ | `social_network.get_invite_by_key` | Get invite by key |
500
+
501
+ ---
502
+
503
+ ### `private_message`
504
+ **Status:** Deprecated
505
+ **Category:** Index/API
506
+ **Dependencies:** `json_rpc`, `chain`
507
+
508
+ Indexes encrypted private messages sent via `custom_operation`.
509
+
510
+ **Purpose:**
511
+ - Track inbox/outbox messages
512
+ - Encrypted message protocol support
513
+
514
+ **JSON-RPC Methods:**
515
+
516
+ | Method | Description |
517
+ |---|---|
518
+ | `private_message.get_inbox` | Get received messages |
519
+ | `private_message.get_outbox` | Get sent messages |
520
+
521
+ **Config options:**
522
+ ```ini
523
+ pm-account-range = ["", "zzzzzzzzzzzzzzzz"]
524
+ ```
525
+
526
+ ---
527
+
528
+ ### `custom_protocol_api`
529
+ **Status:** Active
530
+ **Category:** API
531
+ **Dependencies:** `json_rpc`, `chain`
532
+
533
+ Tracks custom protocol sequences from `custom_operation`.
534
+
535
+ **Purpose:**
536
+ - Get account info with custom protocol metadata
537
+ - Useful for apps using custom_operation
538
+
539
+ **JSON-RPC Methods:**
540
+
541
+ | Method | Description |
542
+ |---|---|
543
+ | `custom_protocol_api.get_account` | Get account with custom protocol reference |
544
+
545
+ ---
546
+
547
+ ### `auth_util`
548
+ **Status:** Active
549
+ **Category:** API
550
+ **Dependencies:** `json_rpc`, `chain`
551
+
552
+ Authority verification utilities.
553
+
554
+ **Purpose:**
555
+ - Check signatures against account authority
556
+
557
+ **JSON-RPC Methods:**
558
+
559
+ | Method | Description |
560
+ |---|---|
561
+ | `auth_util.check_authority_signature` | Verify signature satisfies authority |
562
+
563
+ ---
564
+
565
+ ### `block_info`
566
+ **Status:** Active
567
+ **Category:** API
568
+ **Dependencies:** `json_rpc`, `chain`
569
+
570
+ Detailed block information queries.
571
+
572
+ **Purpose:**
573
+ - Get extended block information
574
+ - Block statistics
575
+
576
+ **JSON-RPC Methods:**
577
+
578
+ | Method | Description |
579
+ |---|---|
580
+ | `block_info.get_block_info` | Get block info for range |
581
+ | `block_info.get_blocks_with_info` | Get blocks with extended info |
582
+
583
+ ---
584
+
585
+ ### `raw_block`
586
+ **Status:** Active
587
+ **Category:** API
588
+ **Dependencies:** `json_rpc`, `chain`
589
+
590
+ Get raw serialized blocks.
591
+
592
+ **Purpose:**
593
+ - Export blocks in raw binary format
594
+ - Useful for block archival/replication
595
+
596
+ **JSON-RPC Methods:**
597
+
598
+ | Method | Description |
599
+ |---|---|
600
+ | `raw_block.get_raw_block` | Get raw block by height |
601
+
602
+ ---
603
+
604
+ ## Witness/Producer Plugins
605
+
606
+ ### `witness`
607
+ **Status:** Active
608
+ **Category:** Core (for block producers)
609
+ **Dependencies:** `chain`, `p2p`
610
+
611
+ Block production plugin for witnesses.
612
+
613
+ **Purpose:**
614
+ - Sign and produce blocks on schedule
615
+ - Manage witness private keys
616
+
617
+ **JSON-RPC:** None
618
+
619
+ **Config options:**
620
+ ```ini
621
+ witness = "your-witness-account"
622
+ private-key = 5K...
623
+ ```
624
+
625
+ ---
626
+
627
+ ## Debug/Test Plugins
628
+
629
+ ### `debug_node`
630
+ **Status:** Active (Development only)
631
+ **Category:** Debug
632
+ **Dependencies:** `chain`
633
+
634
+ Development and testing utilities. **NOT for production use.**
635
+
636
+ **Purpose:**
637
+ - Generate test blocks
638
+ - Push blocks from files
639
+ - Set hardforks manually
640
+
641
+ **JSON-RPC Methods:**
642
+
643
+ | Method | Description |
644
+ |---|---|
645
+ | `debug_node.debug_generate_blocks` | Generate N test blocks |
646
+ | `debug_node.debug_generate_blocks_until` | Generate blocks until time |
647
+ | `debug_node.debug_push_blocks` | Push blocks from database |
648
+ | `debug_node.debug_push_json_blocks` | Push blocks from JSON file |
649
+ | `debug_node.debug_pop_block` | Pop and return last block |
650
+ | `debug_node.debug_get_witness_schedule` | Get witness schedule |
651
+ | `debug_node.debug_set_hardfork` | Force set hardfork |
652
+ | `debug_node.debug_has_hardfork` | Check if hardfork applied |
653
+
654
+ ---
655
+
656
+ ### `test_api`
657
+ **Status:** Active (Testing only)
658
+ **Category:** Test
659
+ **Dependencies:** `json_rpc`
660
+
661
+ Test API plugin for connectivity testing.
662
+
663
+ **JSON-RPC Methods:** None documented (internal testing)
664
+
665
+ ---
666
+
667
+ ## External Integration Plugins
668
+
669
+ ### `mongo_db`
670
+ **Status:** Active
671
+ **Category:** External
672
+ **Dependencies:** `chain`
673
+
674
+ Exports blockchain data to MongoDB.
675
+
676
+ **Purpose:**
677
+ - Real-time export of blocks, transactions, operations
678
+ - Enable MongoDB-based queries and analytics
679
+
680
+ **JSON-RPC:** None
681
+
682
+ **Config options:**
683
+ ```ini
684
+ mongodb-uri = mongodb://localhost:27017
685
+ mongodb-db-name = viz
686
+ ```
687
+
688
+ ---
689
+
690
+ ## Plugin Status Summary
691
+
692
+ | Plugin | Status | Has API | Category |
693
+ |---|---|---|---|
694
+ | `chain` | Active | No | Core |
695
+ | `json_rpc` | Active | No | Core |
696
+ | `webserver` | Active | No | Infrastructure |
697
+ | `p2p` | Active | No | Infrastructure |
698
+ | `database_api` | Active | Yes | API |
699
+ | `network_broadcast_api` | Active | Yes | API |
700
+ | `witness_api` | Active | Yes | API |
701
+ | `account_by_key` | Active | Yes | Index/API |
702
+ | `account_history` | Active | Yes | Index/API |
703
+ | `operation_history` | Active | Yes | Index/API |
704
+ | `committee_api` | Active | Yes | API |
705
+ | `invite_api` | Active | Yes | API |
706
+ | `paid_subscription_api` | Active | Yes | API |
707
+ | `follow` | Deprecated | Yes | Index/API |
708
+ | `tags` | Deprecated | Yes | Index/API |
709
+ | `social_network` | Deprecated | Yes | API |
710
+ | `private_message` | Deprecated | Yes | Index/API |
711
+ | `custom_protocol_api` | Active | Yes | API |
712
+ | `auth_util` | Active | Yes | API |
713
+ | `block_info` | Active | Yes | API |
714
+ | `raw_block` | Active | Yes | API |
715
+ | `witness` | Active | No | Producer |
716
+ | `debug_node` | Dev only | Yes | Debug |
717
+ | `test_api` | Test only | Yes | Test |
718
+ | `mongo_db` | Active | No | External |
719
+
720
+ ---
721
+
722
+ ## JSON-RPC Quick Reference
723
+
724
+ All methods use JSON-RPC 2.0 format:
725
+
726
+ ```json
727
+ {
728
+ "jsonrpc": "2.0",
729
+ "method": "api_name.method_name",
730
+ "params": {},
731
+ "id": 1
732
+ }
733
+ ```
734
+
735
+ ### Complete API Method Index
736
+
737
+ | API | Method | Description |
738
+ |---|---|---|
739
+ | `database_api` | `get_block_header` | Block header by height |
740
+ | `database_api` | `get_block` | Full block by height |
741
+ | `database_api` | `get_irreversible_block_header` | Irreversible block header |
742
+ | `database_api` | `get_irreversible_block` | Irreversible block |
743
+ | `database_api` | `set_block_applied_callback` | Subscribe to blocks |
744
+ | `database_api` | `get_config` | Chain constants |
745
+ | `database_api` | `get_dynamic_global_properties` | Current chain state |
746
+ | `database_api` | `get_chain_properties` | Median witness props |
747
+ | `database_api` | `get_hardfork_version` | Current HF version |
748
+ | `database_api` | `get_next_scheduled_hardfork` | Next HF info |
749
+ | `database_api` | `get_accounts` | Accounts by names |
750
+ | `database_api` | `lookup_account_names` | Lookup accounts |
751
+ | `database_api` | `lookup_accounts` | List accounts |
752
+ | `database_api` | `get_account_count` | Total accounts |
753
+ | `database_api` | `get_master_history` | Key history |
754
+ | `database_api` | `get_recovery_request` | Recovery request |
755
+ | `database_api` | `get_escrow` | Escrow by ID |
756
+ | `database_api` | `get_withdraw_routes` | Withdraw routes |
757
+ | `database_api` | `get_vesting_delegations` | Delegations |
758
+ | `database_api` | `get_expiring_vesting_delegations` | Expiring delegations |
759
+ | `database_api` | `get_transaction_hex` | TX as hex |
760
+ | `database_api` | `get_required_signatures` | Required sigs |
761
+ | `database_api` | `get_potential_signatures` | Potential signers |
762
+ | `database_api` | `verify_authority` | Verify TX auth |
763
+ | `database_api` | `verify_account_authority` | Verify account auth |
764
+ | `database_api` | `get_database_info` | DB stats |
765
+ | `database_api` | `get_proposed_transactions` | Proposals |
766
+ | `database_api` | `get_accounts_on_sale` | Accounts for sale |
767
+ | `database_api` | `get_accounts_on_auction` | Accounts on auction |
768
+ | `database_api` | `get_subaccounts_on_sale` | Subaccounts for sale |
769
+ | `network_broadcast_api` | `broadcast_transaction` | Broadcast TX |
770
+ | `network_broadcast_api` | `broadcast_transaction_synchronous` | Broadcast TX (sync) |
771
+ | `network_broadcast_api` | `broadcast_transaction_with_callback` | Broadcast TX (callback) |
772
+ | `network_broadcast_api` | `broadcast_block` | Broadcast block |
773
+ | `witness_api` | `get_active_witnesses` | Active witnesses |
774
+ | `witness_api` | `get_witness_schedule` | Witness schedule |
775
+ | `witness_api` | `get_witnesses` | Witnesses by ID |
776
+ | `witness_api` | `get_witness_by_account` | Witness by account |
777
+ | `witness_api` | `get_witnesses_by_vote` | Witnesses by votes |
778
+ | `witness_api` | `get_witnesses_by_counted_vote` | Witnesses by counted votes |
779
+ | `witness_api` | `get_witness_count` | Witness count |
780
+ | `witness_api` | `lookup_witness_accounts` | List witnesses |
781
+ | `account_by_key` | `get_key_references` | Accounts by key |
782
+ | `account_history` | `get_account_history` | Account operations |
783
+ | `operation_history` | `get_ops_in_block` | Block operations |
784
+ | `operation_history` | `get_transaction` | TX by ID |
785
+ | `committee_api` | `get_committee_request` | Request by ID |
786
+ | `committee_api` | `get_committee_request_votes` | Request votes |
787
+ | `committee_api` | `get_committee_requests_list` | All requests |
788
+ | `invite_api` | `get_invites_list` | All invites |
789
+ | `invite_api` | `get_invite_by_id` | Invite by ID |
790
+ | `invite_api` | `get_invite_by_key` | Invite by key |
791
+ | `paid_subscription_api` | `get_paid_subscriptions` | All subscriptions |
792
+ | `paid_subscription_api` | `get_paid_subscription_options` | Subscription config |
793
+ | `paid_subscription_api` | `get_paid_subscription_status` | Subscription status |
794
+ | `paid_subscription_api` | `get_active_paid_subscriptions` | Active subscriptions |
795
+ | `paid_subscription_api` | `get_inactive_paid_subscriptions` | Inactive subscriptions |
796
+ | `follow` | `get_followers` | Followers |
797
+ | `follow` | `get_following` | Following |
798
+ | `follow` | `get_follow_count` | Follow counts |
799
+ | `follow` | `get_feed_entries` | Feed entries |
800
+ | `follow` | `get_feed` | Feed content |
801
+ | `follow` | `get_blog_entries` | Blog entries |
802
+ | `follow` | `get_blog` | Blog content |
803
+ | `follow` | `get_reblogged_by` | Rebloggers |
804
+ | `follow` | `get_blog_authors` | Blog authors |
805
+ | `tags` | `get_trending_tags` | Trending tags |
806
+ | `tags` | `get_tags_used_by_author` | Author's tags |
807
+ | `tags` | `get_discussions_by_trending` | Trending posts |
808
+ | `tags` | `get_discussions_by_created` | New posts |
809
+ | `tags` | `get_discussions_by_active` | Active posts |
810
+ | `tags` | `get_discussions_by_cashout` | Posts by cashout |
811
+ | `tags` | `get_discussions_by_payout` | Posts by payout |
812
+ | `tags` | `get_discussions_by_votes` | Posts by votes |
813
+ | `tags` | `get_discussions_by_children` | Posts by replies |
814
+ | `tags` | `get_discussions_by_hot` | Hot posts |
815
+ | `tags` | `get_discussions_by_feed` | Feed posts |
816
+ | `tags` | `get_discussions_by_blog` | Blog posts |
817
+ | `tags` | `get_discussions_by_contents` | Content posts |
818
+ | `tags` | `get_discussions_by_author_before_date` | Author posts |
819
+ | `tags` | `get_languages` | Languages |
820
+ | `social_network` | `get_content` | Discussion |
821
+ | `social_network` | `get_content_replies` | Replies |
822
+ | `social_network` | `get_all_content_replies` | All replies |
823
+ | `social_network` | `get_account_votes` | Account's votes |
824
+ | `social_network` | `get_active_votes` | Votes on content |
825
+ | `social_network` | `get_replies_by_last_update` | Replies by update |
826
+ | `private_message` | `get_inbox` | Inbox |
827
+ | `private_message` | `get_outbox` | Outbox |
828
+ | `custom_protocol_api` | `get_account` | Account + custom |
829
+ | `auth_util` | `check_authority_signature` | Check sig |
830
+ | `block_info` | `get_block_info` | Block info |
831
+ | `block_info` | `get_blocks_with_info` | Blocks + info |
832
+ | `raw_block` | `get_raw_block` | Raw block |
833
+ | `debug_node` | `debug_generate_blocks` | Generate blocks |
834
+ | `debug_node` | `debug_generate_blocks_until` | Generate until |
835
+ | `debug_node` | `debug_push_blocks` | Push blocks |
836
+ | `debug_node` | `debug_push_json_blocks` | Push JSON blocks |
837
+ | `debug_node` | `debug_pop_block` | Pop block |
838
+ | `debug_node` | `debug_get_witness_schedule` | Witness schedule |
839
+ | `debug_node` | `debug_set_hardfork` | Set hardfork |
840
+ | `debug_node` | `debug_has_hardfork` | Check hardfork |
841
+
842
+ ---
843
+
844
+ ## Recommended Plugin Sets
845
+
846
+ ### Minimal API Node
847
+ ```ini
848
+ plugin = chain
849
+ plugin = json_rpc
850
+ plugin = webserver
851
+ plugin = p2p
852
+ plugin = database_api
853
+ plugin = network_broadcast_api
854
+ ```
855
+
856
+ ### Full API Node
857
+ ```ini
858
+ plugin = chain
859
+ plugin = json_rpc
860
+ plugin = webserver
861
+ plugin = p2p
862
+ plugin = database_api
863
+ plugin = network_broadcast_api
864
+ plugin = witness_api
865
+ plugin = account_by_key
866
+ plugin = account_history
867
+ plugin = operation_history
868
+ plugin = committee_api
869
+ plugin = invite_api
870
+ plugin = paid_subscription_api
871
+ plugin = follow
872
+ plugin = tags
873
+ plugin = social_network
874
+ plugin = private_message
875
+ ```
876
+
877
+ ### Witness Node
878
+ ```ini
879
+ plugin = chain
880
+ plugin = p2p
881
+ plugin = witness
882
+ plugin = json_rpc
883
+ plugin = webserver
884
+ plugin = database_api
885
+ plugin = network_broadcast_api
886
+ plugin = witness_api
887
+ ```