From 6922c70257fd5a8da158ed29c7bfbbdb98eb08c3 Mon Sep 17 00:00:00 2001 From: Alexander Chuprov Date: Tue, 11 Mar 2025 11:26:09 +0300 Subject: [PATCH] [#150] frostfsid: Allow migration from 0.21.1 Signed-off-by: Alexander Chuprov --- frostfsid/frostfsid_contract.go | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/frostfsid/frostfsid_contract.go b/frostfsid/frostfsid_contract.go index f177522..6d933ab 100644 --- a/frostfsid/frostfsid_contract.go +++ b/frostfsid/frostfsid_contract.go @@ -116,22 +116,24 @@ func _deploy(data any, isUpdate bool) { if isUpdate { common.CheckVersion(args.version) - it := storage.Find(ctx, subjectKeysPrefix, storage.ValuesOnly) - for iterator.Next(it) { - subjectRaw := iterator.Value(it) - subject := std.Deserialize(subjectRaw.([]byte)).(Subject) - address := addressKey(contract.CreateStandardAccount(subject.PrimaryKey)) - if storage.Get(ctx, address) != nil { - panic("frostfsid contract contains duplicate keys") - } - storage.Put(ctx, address, true) - - for i := 0; i < len(subject.AdditionalKeys); i++ { - address = addressKey(contract.CreateStandardAccount(subject.AdditionalKeys[i])) + if args.version < common.GetVersion(0, 21, 1) { + it := storage.Find(ctx, subjectKeysPrefix, storage.ValuesOnly) + for iterator.Next(it) { + subjectRaw := iterator.Value(it) + subject := std.Deserialize(subjectRaw.([]byte)).(Subject) + address := addressKey(contract.CreateStandardAccount(subject.PrimaryKey)) if storage.Get(ctx, address) != nil { panic("frostfsid contract contains duplicate keys") } storage.Put(ctx, address, true) + + for i := 0; i < len(subject.AdditionalKeys); i++ { + address = addressKey(contract.CreateStandardAccount(subject.AdditionalKeys[i])) + if storage.Get(ctx, address) != nil { + panic("frostfsid contract contains duplicate keys") + } + storage.Put(ctx, address, true) + } } }