forked from TrueCloudLab/frostfs-contract
[#105] reputation: Add docs
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
This commit is contained in:
parent
18cc26f8c4
commit
a23b56fff9
2 changed files with 30 additions and 2 deletions
|
@ -1,2 +1,17 @@
|
||||||
// Reputaiton contract description.
|
/*
|
||||||
|
Reputation contract is a contract deployed in NeoFS side chain.
|
||||||
|
|
||||||
|
Inner Ring nodes produce data audit for each container in each epoch. In the end
|
||||||
|
nodes produce DataAuditResult structure that contains information about audit
|
||||||
|
progress. Reputation contract provides storage for such structures and simple
|
||||||
|
interface to iterate over available DataAuditResults on specified epoch.
|
||||||
|
|
||||||
|
During settlement process, Alphabet nodes fetch all DataAuditResult structures
|
||||||
|
from the epoch and execute balance transfers from data owners to Storage and
|
||||||
|
Inner Ring nodes, if data audit succeed.
|
||||||
|
|
||||||
|
Contract notifications
|
||||||
|
|
||||||
|
Reputation contract does not produce notifications to process.
|
||||||
|
*/
|
||||||
package reputation
|
package reputation
|
||||||
|
|
|
@ -44,6 +44,8 @@ func _deploy(data interface{}, isUpdate bool) {
|
||||||
runtime.Log("reputation contract initialized")
|
runtime.Log("reputation contract initialized")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Migrate method updates contract source code and manifest. Can be invoked
|
||||||
|
// only by contract owner.
|
||||||
func Migrate(script []byte, manifest []byte, data interface{}) bool {
|
func Migrate(script []byte, manifest []byte, data interface{}) bool {
|
||||||
ctx := storage.GetReadOnlyContext()
|
ctx := storage.GetReadOnlyContext()
|
||||||
|
|
||||||
|
@ -58,6 +60,12 @@ func Migrate(script []byte, manifest []byte, data interface{}) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Put method saves DataAuditResult in contract storage. Can be invoked only by
|
||||||
|
// Inner Ring nodes. Does not require multi signature invocations.
|
||||||
|
//
|
||||||
|
// Epoch is an epoch number when DataAuditResult structure was generated.
|
||||||
|
// PeerID contains public keys of Inner Ring node that produced DataAuditResult.
|
||||||
|
// Value contains stable marshaled structure of DataAuditResult.
|
||||||
func Put(epoch int, peerID []byte, value []byte) {
|
func Put(epoch int, peerID []byte, value []byte) {
|
||||||
ctx := storage.GetContext()
|
ctx := storage.GetContext()
|
||||||
notaryDisabled := storage.Get(ctx, notaryDisabledKey).(bool)
|
notaryDisabled := storage.Get(ctx, notaryDisabledKey).(bool)
|
||||||
|
@ -103,11 +111,15 @@ func Put(epoch int, peerID []byte, value []byte) {
|
||||||
storage.Put(ctx, id, rawValues)
|
storage.Put(ctx, id, rawValues)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get method returns list of all stable marshaled DataAuditResult structures
|
||||||
|
// produced by specified Inner Ring node in specified epoch.
|
||||||
func Get(epoch int, peerID []byte) [][]byte {
|
func Get(epoch int, peerID []byte) [][]byte {
|
||||||
id := storageID(epoch, peerID)
|
id := storageID(epoch, peerID)
|
||||||
return GetByID(id)
|
return GetByID(id)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetByID method returns list of all stable marshaled DataAuditResult with
|
||||||
|
// specified id. Use ListByEpoch method to obtain id.
|
||||||
func GetByID(id []byte) [][]byte {
|
func GetByID(id []byte) [][]byte {
|
||||||
ctx := storage.GetReadOnlyContext()
|
ctx := storage.GetReadOnlyContext()
|
||||||
|
|
||||||
|
@ -120,7 +132,7 @@ func GetByID(id []byte) [][]byte {
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListByEpoch returns list of IDs that may be used to get reputation data
|
// ListByEpoch returns list of IDs that may be used to get reputation data
|
||||||
// via GetByID method.
|
// with GetByID method.
|
||||||
func ListByEpoch(epoch int) [][]byte {
|
func ListByEpoch(epoch int) [][]byte {
|
||||||
ctx := storage.GetReadOnlyContext()
|
ctx := storage.GetReadOnlyContext()
|
||||||
var buf interface{} = epoch
|
var buf interface{} = epoch
|
||||||
|
@ -148,6 +160,7 @@ loop:
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Version returns version of the contract.
|
||||||
func Version() int {
|
func Version() int {
|
||||||
return version
|
return version
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue