forked from TrueCloudLab/frostfs-contract
[#194] nns: Leave container contract as owner of container zone
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
This commit is contained in:
parent
9350d027cf
commit
2ff25b5985
1 changed files with 59 additions and 0 deletions
|
@ -94,6 +94,10 @@ func _deploy(data interface{}, isUpdate bool) {
|
||||||
it := storage.Find(ctx, []byte{prefixRoot}, storage.KeysOnly|storage.RemovePrefix)
|
it := storage.Find(ctx, []byte{prefixRoot}, storage.KeysOnly|storage.RemovePrefix)
|
||||||
for iterator.Next(it) {
|
for iterator.Next(it) {
|
||||||
name := iterator.Value(it).(string)
|
name := iterator.Value(it).(string)
|
||||||
|
if name != "neofs" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
ns := NameState{
|
ns := NameState{
|
||||||
Owner: committee,
|
Owner: committee,
|
||||||
Name: name,
|
Name: name,
|
||||||
|
@ -105,6 +109,28 @@ func _deploy(data interface{}, isUpdate bool) {
|
||||||
3600 /* 1 hour */, 600, /* 10 min */
|
3600 /* 1 hour */, 600, /* 10 min */
|
||||||
604800 /* 1 week */, 3600 /* 1 hour */)
|
604800 /* 1 week */, 3600 /* 1 hour */)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
r := GetRecords("container.neofs", TXT)
|
||||||
|
owner := shBEFromLEHex(r[0])
|
||||||
|
|
||||||
|
it = storage.Find(ctx, []byte{prefixRoot}, storage.KeysOnly|storage.RemovePrefix)
|
||||||
|
for iterator.Next(it) {
|
||||||
|
name := iterator.Value(it).(string)
|
||||||
|
if name == "neofs" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
ns := NameState{
|
||||||
|
Owner: owner,
|
||||||
|
Name: name,
|
||||||
|
Expiration: runtime.GetTime() + millisecondsInYear,
|
||||||
|
}
|
||||||
|
tokenKey := getTokenKey([]byte(name))
|
||||||
|
putNameStateWithKey(ctx, tokenKey, ns)
|
||||||
|
putSoaRecord(ctx, name, "ops@nspcc.ru",
|
||||||
|
3600 /* 1 hour */, 600, /* 10 min */
|
||||||
|
604800 /* 1 week */, 3600 /* 1 hour */)
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -113,6 +139,39 @@ func _deploy(data interface{}, isUpdate bool) {
|
||||||
storage.Put(ctx, []byte{prefixRegisterPrice}, defaultRegisterPrice)
|
storage.Put(ctx, []byte{prefixRegisterPrice}, defaultRegisterPrice)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// remove after v0.13.1 upgrade
|
||||||
|
func shBEFromLEHex(s string) interop.Hash160 {
|
||||||
|
res := make([]byte, interop.Hash160Len)
|
||||||
|
|
||||||
|
ln := len(s) / 2
|
||||||
|
for i := 0; i < ln; i++ {
|
||||||
|
a := hexToNum(s[i*2])
|
||||||
|
b := hexToNum(s[i*2+1])
|
||||||
|
|
||||||
|
var n interface{} = a*16 + b
|
||||||
|
res[ln-1-i] = n.([]byte)[0]
|
||||||
|
}
|
||||||
|
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
// remove after v0.13.1 upgrade
|
||||||
|
func hexToNum(s uint8) int {
|
||||||
|
if s >= '0' && s <= '9' {
|
||||||
|
return int(s) - 48
|
||||||
|
}
|
||||||
|
|
||||||
|
if s >= 'A' && s <= 'F' {
|
||||||
|
return int(s) - 55
|
||||||
|
}
|
||||||
|
|
||||||
|
if s >= 'a' && s <= 'f' {
|
||||||
|
return int(s) - 87
|
||||||
|
}
|
||||||
|
|
||||||
|
panic("invalid hex")
|
||||||
|
}
|
||||||
|
|
||||||
// Symbol returns NeoNameService symbol.
|
// Symbol returns NeoNameService symbol.
|
||||||
func Symbol() string {
|
func Symbol() string {
|
||||||
return "NNS"
|
return "NNS"
|
||||||
|
|
Loading…
Reference in a new issue