Skip to content

Commit

Permalink
netmap: expose Candidate structure to RPC bindings
Browse files Browse the repository at this point in the history
Unfortunately, we don't have any more elegant way to do this now.

Signed-off-by: Roman Khimov <[email protected]>
  • Loading branch information
roman-khimov committed Jan 24, 2025
1 parent 2477b0e commit 248c1f9
Show file tree
Hide file tree
Showing 5 changed files with 154 additions and 2 deletions.
2 changes: 1 addition & 1 deletion contracts/netmap/config.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: "NeoFS Netmap"
safemethods: ["innerRingList", "epoch", "netmap", "netmapCandidates", "snapshot", "snapshotByEpoch", "config", "listConfig", "version", "listNodes", "listCandidates", "cleanupThreshold"]
safemethods: ["innerRingList", "epoch", "netmap", "netmapCandidates", "snapshot", "snapshotByEpoch", "config", "listConfig", "version", "listNodes", "listCandidates", "cleanupThreshold", "unusedCandidate"]
permissions:
- methods: ["update", "newEpoch"]
events:
Expand Down
7 changes: 7 additions & 0 deletions contracts/netmap/contract.go
Original file line number Diff line number Diff line change
Expand Up @@ -775,6 +775,13 @@ func CleanupThreshold() int {
return storage.Get(storage.GetReadOnlyContext(), []byte(cleanupThresholdKey)).(int)
}

// UnusedCandidate does nothing except marking Candidate structure as used one
// thereby making RPC binding generator produce code for it. It is a temporary
// solution until we have proper iterator types. Never use it.
func UnusedCandidate() Candidate {
return Candidate{}
}

// serializes and stores the given Node by its public key in the contract storage,
// and throws AddPeerSuccess notification after this.
//
Expand Down
Binary file modified contracts/netmap/contract.nef
Binary file not shown.
2 changes: 1 addition & 1 deletion contracts/netmap/manifest.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"name":"NeoFS Netmap","abi":{"methods":[{"name":"_initialize","offset":0,"parameters":[],"returntype":"Void","safe":false},{"name":"_deploy","offset":93,"parameters":[{"name":"data","type":"Any"},{"name":"isUpdate","type":"Boolean"}],"returntype":"Void","safe":false},{"name":"addNode","offset":1927,"parameters":[{"name":"n","type":"Array"}],"returntype":"Void","safe":false},{"name":"addPeer","offset":1881,"parameters":[{"name":"nodeInfo","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"addPeerIR","offset":1841,"parameters":[{"name":"nodeInfo","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"cleanupThreshold","offset":4269,"parameters":[],"returntype":"Integer","safe":true},{"name":"config","offset":3693,"parameters":[{"name":"key","type":"ByteArray"}],"returntype":"Any","safe":true},{"name":"deleteNode","offset":2108,"parameters":[{"name":"pkey","type":"PublicKey"}],"returntype":"Void","safe":false},{"name":"epoch","offset":2753,"parameters":[],"returntype":"Integer","safe":true},{"name":"innerRingList","offset":1796,"parameters":[],"returntype":"Array","safe":true},{"name":"lastEpochBlock","offset":2792,"parameters":[],"returntype":"Integer","safe":false},{"name":"listCandidates","offset":2981,"parameters":[],"returntype":"InteropInterface","safe":true},{"name":"listConfig","offset":3772,"parameters":[],"returntype":"Array","safe":true},{"name":"listNodes","offset":2929,"parameters":[],"returntype":"InteropInterface","safe":true},{"name":"listNodes","offset":2937,"parameters":[{"name":"epoch","type":"Integer"}],"returntype":"InteropInterface","safe":true},{"name":"netmap","offset":2831,"parameters":[],"returntype":"Array","safe":true},{"name":"netmapCandidates","offset":2913,"parameters":[],"returntype":"Array","safe":true},{"name":"newEpoch","offset":2445,"parameters":[{"name":"epochNum","type":"Integer"}],"returntype":"Void","safe":false},{"name":"setCleanupThreshold","offset":4213,"parameters":[{"name":"val","type":"Integer"}],"returntype":"Void","safe":false},{"name":"setConfig","offset":3711,"parameters":[{"name":"id","type":"ByteArray"},{"name":"key","type":"ByteArray"},{"name":"val","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"snapshot","offset":3011,"parameters":[{"name":"diff","type":"Integer"}],"returntype":"Array","safe":true},{"name":"snapshotByEpoch","offset":3645,"parameters":[{"name":"epoch","type":"Integer"}],"returntype":"Array","safe":true},{"name":"subscribeForNewEpoch","offset":3828,"parameters":[{"name":"contract","type":"Hash160"}],"returntype":"Void","safe":false},{"name":"update","offset":1666,"parameters":[{"name":"script","type":"ByteArray"},{"name":"manifest","type":"ByteArray"},{"name":"data","type":"Any"}],"returntype":"Void","safe":false},{"name":"updateSnapshotCount","offset":3165,"parameters":[{"name":"count","type":"Integer"}],"returntype":"Void","safe":false},{"name":"updateState","offset":2354,"parameters":[{"name":"state","type":"Integer"},{"name":"publicKey","type":"PublicKey"}],"returntype":"Void","safe":false},{"name":"updateStateIR","offset":2421,"parameters":[{"name":"state","type":"Integer"},{"name":"publicKey","type":"PublicKey"}],"returntype":"Void","safe":false},{"name":"version","offset":4209,"parameters":[],"returntype":"Integer","safe":true}],"events":[{"name":"AddNode","parameters":[{"name":"publicKey","type":"PublicKey"},{"name":"addresses","type":"Array"},{"name":"attributes","type":"Map"}]},{"name":"AddPeerSuccess","parameters":[{"name":"publicKey","type":"PublicKey"}]},{"name":"UpdateStateSuccess","parameters":[{"name":"publicKey","type":"PublicKey"},{"name":"state","type":"Integer"}]},{"name":"NewEpoch","parameters":[{"name":"epoch","type":"Integer"}]},{"name":"NewEpochSubscription","parameters":[{"name":"contract","type":"Hash160"}]}]},"features":{},"groups":[],"permissions":[{"contract":"*","methods":["update","newEpoch"]}],"supportedstandards":[],"trusts":[],"extra":null}
{"name":"NeoFS Netmap","abi":{"methods":[{"name":"_initialize","offset":0,"parameters":[],"returntype":"Void","safe":false},{"name":"_deploy","offset":93,"parameters":[{"name":"data","type":"Any"},{"name":"isUpdate","type":"Boolean"}],"returntype":"Void","safe":false},{"name":"addNode","offset":1927,"parameters":[{"name":"n","type":"Array"}],"returntype":"Void","safe":false},{"name":"addPeer","offset":1881,"parameters":[{"name":"nodeInfo","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"addPeerIR","offset":1841,"parameters":[{"name":"nodeInfo","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"cleanupThreshold","offset":4269,"parameters":[],"returntype":"Integer","safe":true},{"name":"config","offset":3693,"parameters":[{"name":"key","type":"ByteArray"}],"returntype":"Any","safe":true},{"name":"deleteNode","offset":2108,"parameters":[{"name":"pkey","type":"PublicKey"}],"returntype":"Void","safe":false},{"name":"epoch","offset":2753,"parameters":[],"returntype":"Integer","safe":true},{"name":"innerRingList","offset":1796,"parameters":[],"returntype":"Array","safe":true},{"name":"lastEpochBlock","offset":2792,"parameters":[],"returntype":"Integer","safe":false},{"name":"listCandidates","offset":2981,"parameters":[],"returntype":"InteropInterface","safe":true},{"name":"listConfig","offset":3772,"parameters":[],"returntype":"Array","safe":true},{"name":"listNodes","offset":2929,"parameters":[],"returntype":"InteropInterface","safe":true},{"name":"listNodes","offset":2937,"parameters":[{"name":"epoch","type":"Integer"}],"returntype":"InteropInterface","safe":true},{"name":"netmap","offset":2831,"parameters":[],"returntype":"Array","safe":true},{"name":"netmapCandidates","offset":2913,"parameters":[],"returntype":"Array","safe":true},{"name":"newEpoch","offset":2445,"parameters":[{"name":"epochNum","type":"Integer"}],"returntype":"Void","safe":false},{"name":"setCleanupThreshold","offset":4213,"parameters":[{"name":"val","type":"Integer"}],"returntype":"Void","safe":false},{"name":"setConfig","offset":3711,"parameters":[{"name":"id","type":"ByteArray"},{"name":"key","type":"ByteArray"},{"name":"val","type":"ByteArray"}],"returntype":"Void","safe":false},{"name":"snapshot","offset":3011,"parameters":[{"name":"diff","type":"Integer"}],"returntype":"Array","safe":true},{"name":"snapshotByEpoch","offset":3645,"parameters":[{"name":"epoch","type":"Integer"}],"returntype":"Array","safe":true},{"name":"subscribeForNewEpoch","offset":3828,"parameters":[{"name":"contract","type":"Hash160"}],"returntype":"Void","safe":false},{"name":"unusedCandidate","offset":4305,"parameters":[],"returntype":"Array","safe":true},{"name":"update","offset":1666,"parameters":[{"name":"script","type":"ByteArray"},{"name":"manifest","type":"ByteArray"},{"name":"data","type":"Any"}],"returntype":"Void","safe":false},{"name":"updateSnapshotCount","offset":3165,"parameters":[{"name":"count","type":"Integer"}],"returntype":"Void","safe":false},{"name":"updateState","offset":2354,"parameters":[{"name":"state","type":"Integer"},{"name":"publicKey","type":"PublicKey"}],"returntype":"Void","safe":false},{"name":"updateStateIR","offset":2421,"parameters":[{"name":"state","type":"Integer"},{"name":"publicKey","type":"PublicKey"}],"returntype":"Void","safe":false},{"name":"version","offset":4209,"parameters":[],"returntype":"Integer","safe":true}],"events":[{"name":"AddNode","parameters":[{"name":"publicKey","type":"PublicKey"},{"name":"addresses","type":"Array"},{"name":"attributes","type":"Map"}]},{"name":"AddPeerSuccess","parameters":[{"name":"publicKey","type":"PublicKey"}]},{"name":"UpdateStateSuccess","parameters":[{"name":"publicKey","type":"PublicKey"},{"name":"state","type":"Integer"}]},{"name":"NewEpoch","parameters":[{"name":"epoch","type":"Integer"}]},{"name":"NewEpochSubscription","parameters":[{"name":"contract","type":"Hash160"}]}]},"features":{},"groups":[],"permissions":[{"contract":"*","methods":["update","newEpoch"]}],"supportedstandards":[],"trusts":[],"extra":null}
145 changes: 145 additions & 0 deletions rpc/netmap/rpcbinding.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 248c1f9

Please sign in to comment.