[#150] frostfsid: Allow migration from 0.21.1

Signed-off-by: Alexander Chuprov <a.chuprov@yadro.com>
This commit is contained in:
Alexander Chuprov 2025-03-11 11:26:09 +03:00
parent 0653f0dbc6
commit 6922c70257
Signed by: achuprov
GPG key ID: 2D916FFD803B0EDD

View file

@ -116,22 +116,24 @@ func _deploy(data any, isUpdate bool) {
if isUpdate { if isUpdate {
common.CheckVersion(args.version) common.CheckVersion(args.version)
it := storage.Find(ctx, subjectKeysPrefix, storage.ValuesOnly) if args.version < common.GetVersion(0, 21, 1) {
for iterator.Next(it) { it := storage.Find(ctx, subjectKeysPrefix, storage.ValuesOnly)
subjectRaw := iterator.Value(it) for iterator.Next(it) {
subject := std.Deserialize(subjectRaw.([]byte)).(Subject) subjectRaw := iterator.Value(it)
address := addressKey(contract.CreateStandardAccount(subject.PrimaryKey)) subject := std.Deserialize(subjectRaw.([]byte)).(Subject)
if storage.Get(ctx, address) != nil { address := addressKey(contract.CreateStandardAccount(subject.PrimaryKey))
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 { if storage.Get(ctx, address) != nil {
panic("frostfsid contract contains duplicate keys") panic("frostfsid contract contains duplicate keys")
} }
storage.Put(ctx, address, true) 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)
}
} }
} }