Skip to content

feat: rpcserver swagger openrpc#763

Merged
gokutheengineer merged 5 commits into
bsv-blockchain:mainfrom
gokutheengineer:gokhan/rpcserver-swagger-openrpc
May 12, 2026
Merged

feat: rpcserver swagger openrpc#763
gokutheengineer merged 5 commits into
bsv-blockchain:mainfrom
gokutheengineer:gokhan/rpcserver-swagger-openrpc

Conversation

@gokutheengineer

Copy link
Copy Markdown
Collaborator

No description provided.

@github-actions

github-actions Bot commented Apr 28, 2026

Copy link
Copy Markdown
Contributor

🤖 Claude Code Review

Status: Complete

Current Review:

No issues found. This PR adds comprehensive OpenRPC 1.2.6 documentation for all 31 implemented JSON-RPC methods.

What was verified:

  • OpenRPC spec structure is valid and complete
  • All 31 implemented methods match their handler implementations
  • Parameter types and field names align with bsvjson types
  • Method return schemas match actual handler responses
  • License URL correctly uses blob/main/LICENSE
  • Documentation accurately distinguishes implemented vs unimplemented methods
  • BSV extensions (getminingcandidate, submitminingsolution, freeze, unfreeze, reassign) are correctly marked

History:

  • ✅ Fixed: getminingcandidate spec now includes all fields returned by implementation (version, nBits, time, height, difficulty, coinbase, subtreeHashes)
  • ✅ Fixed: License URL corrected from blob/master/LICENSE to blob/main/LICENSE

@github-actions

github-actions Bot commented Apr 28, 2026

Copy link
Copy Markdown
Contributor

Benchmark Comparison Report

Baseline: main (unknown)

Current: PR-763 (912cb83)

Summary

  • Regressions: 0
  • Improvements: 0
  • Unchanged: 142
  • Significance level: p < 0.05
All benchmark results (sec/op)
Benchmark Baseline Current Change p-value
_NewBlockFromBytes-4 1.647µ 1.652µ ~ 0.200
SplitSyncedParentMap_SetIfNotExists/256_buckets-4 61.59n 61.55n ~ 0.700
SplitSyncedParentMap_SetIfNotExists/16_buckets-4 61.55n 61.45n ~ 0.300
SplitSyncedParentMap_SetIfNotExists/1_bucket-4 61.77n 61.55n ~ 0.100
SplitSyncedParentMap_ConcurrentSetIfNotExists/256_buckets... 30.07n 29.99n ~ 0.700
SplitSyncedParentMap_ConcurrentSetIfNotExists/16_buckets_... 51.42n 50.21n ~ 0.700
SplitSyncedParentMap_ConcurrentSetIfNotExists/1_bucket_pa... 106.5n 106.4n ~ 1.000
MiningCandidate_Stringify_Short-4 264.5n 263.6n ~ 0.300
MiningCandidate_Stringify_Long-4 1.885µ 1.888µ ~ 0.100
MiningSolution_Stringify-4 973.8n 976.9n ~ 0.400
BlockInfo_MarshalJSON-4 1.735µ 1.729µ ~ 0.200
NewFromBytes-4 132.3n 129.1n ~ 0.100
Mine_EasyDifficulty-4 67.18µ 67.14µ ~ 0.700
Mine_WithAddress-4 6.994µ 6.927µ ~ 0.200
BlockAssembler_AddTx-4 0.02869n 0.02540n ~ 0.200
AddNode-4 10.77 10.90 ~ 0.400
AddNodeWithMap-4 10.58 10.77 ~ 1.000
DirectSubtreeAdd/4_per_subtree-4 60.66n 60.19n ~ 0.700
DirectSubtreeAdd/64_per_subtree-4 32.37n 31.84n ~ 0.200
DirectSubtreeAdd/256_per_subtree-4 30.68n 31.32n ~ 0.700
DirectSubtreeAdd/1024_per_subtree-4 29.56n 29.56n ~ 1.000
DirectSubtreeAdd/2048_per_subtree-4 28.87n 28.91n ~ 0.600
SubtreeProcessorAdd/4_per_subtree-4 284.8n 284.0n ~ 1.000
SubtreeProcessorAdd/64_per_subtree-4 279.1n 276.8n ~ 0.700
SubtreeProcessorAdd/256_per_subtree-4 280.4n 279.7n ~ 0.400
SubtreeProcessorAdd/1024_per_subtree-4 272.9n 268.2n ~ 0.100
SubtreeProcessorAdd/2048_per_subtree-4 271.5n 272.2n ~ 1.000
SubtreeProcessorRotate/4_per_subtree-4 276.9n 278.9n ~ 0.200
SubtreeProcessorRotate/64_per_subtree-4 276.1n 274.9n ~ 0.100
SubtreeProcessorRotate/256_per_subtree-4 277.4n 271.8n ~ 0.100
SubtreeProcessorRotate/1024_per_subtree-4 277.0n 272.7n ~ 0.100
SubtreeNodeAddOnly/4_per_subtree-4 55.20n 55.00n ~ 0.700
SubtreeNodeAddOnly/64_per_subtree-4 34.96n 34.73n ~ 0.100
SubtreeNodeAddOnly/256_per_subtree-4 33.91n 33.80n ~ 0.200
SubtreeNodeAddOnly/1024_per_subtree-4 33.33n 33.12n ~ 0.100
SubtreeCreationOnly/4_per_subtree-4 114.6n 117.7n ~ 0.400
SubtreeCreationOnly/64_per_subtree-4 415.1n 450.8n ~ 0.200
SubtreeCreationOnly/256_per_subtree-4 1.431µ 1.521µ ~ 0.200
SubtreeCreationOnly/1024_per_subtree-4 4.541µ 5.023µ ~ 0.100
SubtreeCreationOnly/2048_per_subtree-4 8.943µ 9.050µ ~ 0.400
SubtreeProcessorOverheadBreakdown/64_per_subtree-4 274.6n 278.2n ~ 0.100
SubtreeProcessorOverheadBreakdown/1024_per_subtree-4 272.9n 275.7n ~ 0.100
ParallelGetAndSetIfNotExists/1k_nodes-4 812.8µ 610.4µ ~ 0.700
ParallelGetAndSetIfNotExists/10k_nodes-4 1.371m 1.392m ~ 0.700
ParallelGetAndSetIfNotExists/50k_nodes-4 6.707m 6.893m ~ 0.400
ParallelGetAndSetIfNotExists/100k_nodes-4 13.50m 13.93m ~ 0.100
SequentialGetAndSetIfNotExists/1k_nodes-4 668.9µ 674.1µ ~ 0.700
SequentialGetAndSetIfNotExists/10k_nodes-4 2.766m 2.866m ~ 0.100
SequentialGetAndSetIfNotExists/50k_nodes-4 10.51m 10.94m ~ 0.100
SequentialGetAndSetIfNotExists/100k_nodes-4 20.34m 20.96m ~ 0.100
ProcessOwnBlockSubtreeNodesParallel/1k_nodes-4 641.4µ 643.1µ ~ 0.200
ProcessOwnBlockSubtreeNodesParallel/10k_nodes-4 4.204m 4.198m ~ 1.000
ProcessOwnBlockSubtreeNodesParallel/100k_nodes-4 16.91m 16.82m ~ 0.700
ProcessOwnBlockSubtreeNodesSequential/1k_nodes-4 710.2µ 715.1µ ~ 0.700
ProcessOwnBlockSubtreeNodesSequential/10k_nodes-4 5.755m 5.794m ~ 0.700
ProcessOwnBlockSubtreeNodesSequential/100k_nodes-4 38.00m 38.23m ~ 0.100
DiskTxMap_SetIfNotExists-4 3.667µ 3.629µ ~ 0.400
DiskTxMap_SetIfNotExists_Parallel-4 3.498µ 3.494µ ~ 1.000
DiskTxMap_ExistenceOnly-4 301.8n 302.2n ~ 1.000
Queue-4 189.2n 191.1n ~ 0.100
AtomicPointer-4 3.639n 3.642n ~ 1.000
ReorgOptimizations/DedupFilterPipeline/Old/10K-4 860.5µ 805.5µ ~ 0.100
ReorgOptimizations/DedupFilterPipeline/New/10K-4 835.1µ 790.1µ ~ 0.100
ReorgOptimizations/AllMarkFalse/Old/10K-4 127.0µ 126.9µ ~ 1.000
ReorgOptimizations/AllMarkFalse/New/10K-4 64.72µ 64.53µ ~ 0.700
ReorgOptimizations/HashSlicePool/Old/10K-4 71.09µ 66.88µ ~ 0.100
ReorgOptimizations/HashSlicePool/New/10K-4 11.14µ 11.19µ ~ 1.000
ReorgOptimizations/NodeFlags/Old/10K-4 5.541µ 5.566µ ~ 1.000
ReorgOptimizations/NodeFlags/New/10K-4 1.787µ 2.116µ ~ 0.100
ReorgOptimizations/DedupFilterPipeline/Old/100K-4 9.323m 9.729m ~ 0.100
ReorgOptimizations/DedupFilterPipeline/New/100K-4 9.507m 9.525m ~ 1.000
ReorgOptimizations/AllMarkFalse/Old/100K-4 1.159m 1.116m ~ 0.100
ReorgOptimizations/AllMarkFalse/New/100K-4 705.8µ 705.8µ ~ 1.000
ReorgOptimizations/HashSlicePool/Old/100K-4 586.2µ 623.0µ ~ 0.100
ReorgOptimizations/HashSlicePool/New/100K-4 200.5µ 193.9µ ~ 0.100
ReorgOptimizations/NodeFlags/Old/100K-4 51.69µ 54.34µ ~ 0.700
ReorgOptimizations/NodeFlags/New/100K-4 16.94µ 17.77µ ~ 0.400
TxMapSetIfNotExists-4 46.63n 46.45n ~ 0.400
TxMapSetIfNotExistsDuplicate-4 38.78n 38.81n ~ 0.400
ChannelSendReceive-4 578.0n 583.6n ~ 0.400
CalcBlockWork-4 504.8n 510.0n ~ 0.700
CalculateWork-4 687.6n 695.7n ~ 0.100
BuildBlockLocatorString_Helpers/Size_10-4 1.029µ 1.069µ ~ 0.700
BuildBlockLocatorString_Helpers/Size_100-4 9.881µ 9.879µ ~ 1.000
BuildBlockLocatorString_Helpers/Size_1000-4 117.54µ 98.94µ ~ 0.400
CatchupWithHeaderCache-4 103.7m 103.7m ~ 0.700
SubtreeSizes/10k_tx_4_per_subtree-4 1.412m 1.370m ~ 0.100
SubtreeSizes/10k_tx_16_per_subtree-4 331.3µ 321.5µ ~ 0.700
SubtreeSizes/10k_tx_64_per_subtree-4 78.96µ 78.84µ ~ 0.400
SubtreeSizes/10k_tx_256_per_subtree-4 19.58µ 19.51µ ~ 0.800
SubtreeSizes/10k_tx_512_per_subtree-4 9.678µ 9.636µ ~ 0.400
SubtreeSizes/10k_tx_1024_per_subtree-4 4.835µ 4.801µ ~ 0.700
SubtreeSizes/10k_tx_2k_per_subtree-4 2.410µ 2.426µ ~ 1.000
BlockSizeScaling/10k_tx_64_per_subtree-4 76.58µ 76.77µ ~ 0.700
BlockSizeScaling/10k_tx_256_per_subtree-4 19.08µ 19.40µ ~ 0.100
BlockSizeScaling/10k_tx_1024_per_subtree-4 4.816µ 4.797µ ~ 1.000
BlockSizeScaling/50k_tx_64_per_subtree-4 407.1µ 393.9µ ~ 0.400
BlockSizeScaling/50k_tx_256_per_subtree-4 95.48µ 95.83µ ~ 1.000
BlockSizeScaling/50k_tx_1024_per_subtree-4 23.71µ 23.81µ ~ 0.200
SubtreeAllocations/small_subtrees_exists_check-4 162.2µ 160.4µ ~ 0.700
SubtreeAllocations/small_subtrees_data_fetch-4 170.1µ 168.8µ ~ 1.000
SubtreeAllocations/small_subtrees_full_validation-4 332.3µ 331.0µ ~ 0.100
SubtreeAllocations/medium_subtrees_exists_check-4 9.408µ 9.307µ ~ 0.200
SubtreeAllocations/medium_subtrees_data_fetch-4 10.13µ 10.03µ ~ 0.700
SubtreeAllocations/medium_subtrees_full_validation-4 19.30µ 19.34µ ~ 0.700
SubtreeAllocations/large_subtrees_exists_check-4 2.214µ 2.223µ ~ 0.700
SubtreeAllocations/large_subtrees_data_fetch-4 2.434µ 2.444µ ~ 0.300
SubtreeAllocations/large_subtrees_full_validation-4 4.832µ 4.811µ ~ 1.000
_BufferPoolAllocation/16KB-4 3.298µ 3.331µ ~ 0.700
_BufferPoolAllocation/32KB-4 8.012µ 8.063µ ~ 0.700
_BufferPoolAllocation/64KB-4 15.67µ 14.67µ ~ 0.200
_BufferPoolAllocation/128KB-4 28.00µ 30.20µ ~ 0.400
_BufferPoolAllocation/512KB-4 93.70µ 110.87µ ~ 0.100
_BufferPoolConcurrent/32KB-4 16.92µ 18.71µ ~ 0.100
_BufferPoolConcurrent/64KB-4 26.80µ 30.50µ ~ 0.100
_BufferPoolConcurrent/512KB-4 135.9µ 141.7µ ~ 0.100
_SubtreeDeserializationWithBufferSizes/16KB-4 649.8µ 646.3µ ~ 0.700
_SubtreeDeserializationWithBufferSizes/32KB-4 645.2µ 630.0µ ~ 0.700
_SubtreeDeserializationWithBufferSizes/64KB-4 658.3µ 613.5µ ~ 0.100
_SubtreeDeserializationWithBufferSizes/128KB-4 653.6µ 617.2µ ~ 0.100
_SubtreeDeserializationWithBufferSizes/512KB-4 649.8µ 605.5µ ~ 0.100
_SubtreeDataDeserializationWithBufferSizes/16KB-4 35.70m 35.47m ~ 0.400
_SubtreeDataDeserializationWithBufferSizes/32KB-4 35.91m 35.08m ~ 0.100
_SubtreeDataDeserializationWithBufferSizes/64KB-4 36.06m 35.28m ~ 0.400
_SubtreeDataDeserializationWithBufferSizes/128KB-4 35.45m 35.94m ~ 0.700
_SubtreeDataDeserializationWithBufferSizes/512KB-4 35.37m 35.34m ~ 1.000
_PooledVsNonPooled/Pooled-4 841.9n 829.6n ~ 0.200
_PooledVsNonPooled/NonPooled-4 6.444µ 6.229µ ~ 0.700
_MemoryFootprint/Current_512KB_32concurrent-4 6.753µ 7.052µ ~ 0.200
_MemoryFootprint/Proposed_32KB_32concurrent-4 9.568µ 9.182µ ~ 0.100
_MemoryFootprint/Alternative_64KB_32concurrent-4 8.936µ 8.861µ ~ 0.400
_prepareTxsPerLevel-4 397.6m 401.1m ~ 0.400
_prepareTxsPerLevelOrdered-4 3.582m 3.606m ~ 0.700
_prepareTxsPerLevel_Comparison/Original-4 398.8m 400.3m ~ 1.000
_prepareTxsPerLevel_Comparison/Optimized-4 3.567m 3.582m ~ 0.400
StoreBlock_Sequential/BelowCSVHeight-4 321.5µ 322.5µ ~ 0.700
StoreBlock_Sequential/AboveCSVHeight-4 326.0µ 325.5µ ~ 1.000
GetUtxoHashes-4 257.1n 259.2n ~ 1.000
GetUtxoHashes_ManyOutputs-4 42.78µ 43.51µ ~ 0.100
_NewMetaDataFromBytes-4 239.6n 236.5n ~ 0.400
_Bytes-4 610.0n 609.0n ~ 1.000
_MetaBytes-4 558.9n 558.8n ~ 0.700

Threshold: >10% with p < 0.05 | Generated: 2026-05-11 13:20 UTC

@gokutheengineer gokutheengineer force-pushed the gokhan/rpcserver-swagger-openrpc branch from e56386c to 9760363 Compare April 29, 2026 12:42
Comment thread openapi/rpc_openrpc.json
Comment thread openapi/rpc_openrpc.json Outdated
@gokutheengineer gokutheengineer requested review from icellan and removed request for icellan April 29, 2026 13:24
@gokutheengineer gokutheengineer force-pushed the gokhan/rpcserver-swagger-openrpc branch from 38b4415 to 7d6f30c Compare May 4, 2026 13:06
Comment thread stores/blockchain/sql/GenesisHash_test.go Outdated
@gokutheengineer gokutheengineer force-pushed the gokhan/rpcserver-swagger-openrpc branch from d7c304b to 7d6f30c Compare May 11, 2026 12:56
@sonarqubecloud

Copy link
Copy Markdown

@gokutheengineer gokutheengineer merged commit 6701866 into bsv-blockchain:main May 12, 2026
25 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants