forked from TrueCloudLab/frostfs-contract
container: register NNS root on update
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
This commit is contained in:
parent
80d599b65b
commit
18ff4ea116
1 changed files with 17 additions and 5 deletions
|
@ -71,10 +71,6 @@ func OnNEP11Payment(a interop.Hash160, b int, c []byte, d interface{}) {
|
||||||
func _deploy(data interface{}, isUpdate bool) {
|
func _deploy(data interface{}, isUpdate bool) {
|
||||||
ctx := storage.GetContext()
|
ctx := storage.GetContext()
|
||||||
|
|
||||||
if isUpdate {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
args := data.([]interface{})
|
args := data.([]interface{})
|
||||||
notaryDisabled := args[0].(bool)
|
notaryDisabled := args[0].(bool)
|
||||||
addrNetmap := args[1].(interop.Hash160)
|
addrNetmap := args[1].(interop.Hash160)
|
||||||
|
@ -83,6 +79,11 @@ func _deploy(data interface{}, isUpdate bool) {
|
||||||
addrNNS := args[4].(interop.Hash160)
|
addrNNS := args[4].(interop.Hash160)
|
||||||
nnsRoot := args[5].(string)
|
nnsRoot := args[5].(string)
|
||||||
|
|
||||||
|
if isUpdate {
|
||||||
|
registerNiceNameTLD(addrNNS, nnsRoot)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if len(addrNetmap) != 20 || len(addrBalance) != 20 || len(addrID) != 20 {
|
if len(addrNetmap) != 20 || len(addrBalance) != 20 || len(addrID) != 20 {
|
||||||
panic("incorrect length of contract script hash")
|
panic("incorrect length of contract script hash")
|
||||||
}
|
}
|
||||||
|
@ -101,11 +102,22 @@ func _deploy(data interface{}, isUpdate bool) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// add NNS root for container alias domains
|
// add NNS root for container alias domains
|
||||||
contract.Call(addrNNS, "addRoot", contract.All, nnsRoot)
|
registerNiceNameTLD(addrNNS, nnsRoot)
|
||||||
|
|
||||||
runtime.Log("container contract initialized")
|
runtime.Log("container contract initialized")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func registerNiceNameTLD(addrNNS interop.Hash160, nnsRoot string) {
|
||||||
|
iter := contract.Call(addrNNS, "roots", contract.ReadStates).(iterator.Iterator)
|
||||||
|
for iterator.Next(iter) {
|
||||||
|
if iterator.Value(iter).(string) == nnsRoot {
|
||||||
|
runtime.Log("NNS root is already registered: " + nnsRoot)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
contract.Call(addrNNS, "addRoot", contract.All, nnsRoot)
|
||||||
|
}
|
||||||
|
|
||||||
// Update method updates contract source code and manifest. Can be invoked
|
// Update method updates contract source code and manifest. Can be invoked
|
||||||
// only by committee.
|
// only by committee.
|
||||||
func Update(script []byte, manifest []byte, data interface{}) {
|
func Update(script []byte, manifest []byte, data interface{}) {
|
||||||
|
|
Loading…
Reference in a new issue