Skip to content

Commit

Permalink
[#275] netmap: Document contract storage model
Browse files Browse the repository at this point in the history
Add comments (outside the docs) with key-value storage structure and
some explanations. The memory mode will allow to more precisely
understand and migrate the contract storage.

Signed-off-by: Leonard Lyubich <[email protected]>
  • Loading branch information
cthulhu-rider committed Sep 30, 2022
1 parent 69eb1af commit 724bd7e
Showing 1 changed file with 53 additions and 0 deletions.
53 changes: 53 additions & 0 deletions netmap/doc.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,56 @@ in the network by invoking NewEpoch method.
type: Integer
*/
package netmap

/*
Contract storage model.
# Summary
Key-value storage format:
- snapshotEpoch -> int
current epoch
- snapshotBlock -> int
block which "ticked" the current epoch
- snapshotCount -> int
number of stored network maps including current one
- snapshot_<ID> -> std.Serialize([]storageNode)
network map by snapshot ID
- snapshotCurrent -> int
ID of the snapshot representing current network map
- candidate<public_key> -> std.Serialize(netmapNode)
information about the particular network map candidate
- containerScriptHash -> 20-byte script hash
Container contract reference
- balanceScriptHash -> 20-byte script hash
Balance contract reference
- notary -> bool
is notary mode disabled
- innerring -> []interop.PublicKey
public keys of the Inner Ring members
- config<name> -> []byte
value of the particular NeoFS network parameter
# Setting
Contract can be deployed in notary and notary-disabled mode. In notary-disable
mode contract stores the Inner Ring members.
To handle some events, the contract refers to other contracts.
# Epoch
Contract stores the current (last) NeoFS timestamp for the network within which
the contract is deployed.
# Network maps
Contract records set of network parties representing the network map. Current
network map is updated on each epoch tick. Contract also holds limited number
of previous network maps (SNAPSHOT_LIMIT). Timestamped network maps are
called snapshots. Snapshots are identified by the numerical ring [0:SNAPSHOT_LIMIT).
# Network map candidates
Contract stores information about the network parties which were requested
in the network map.
# Network configuration
Contract stores NeoFS network configuration declared in the NeoFS API protocol.
*/

0 comments on commit 724bd7e

Please sign in to comment.