From 942155be6e17765531002443a906c7705d122383 Mon Sep 17 00:00:00 2001 From: Evgenii Stratonikov Date: Mon, 24 Oct 2022 14:12:36 +0300 Subject: [PATCH] [#1959] neofs-adm: Fix double multisig Signed-off-by: Evgenii Stratonikov --- cmd/neofs-adm/internal/modules/morph/initialize.go | 1 + .../internal/modules/morph/initialize_transfer.go | 13 +++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/cmd/neofs-adm/internal/modules/morph/initialize.go b/cmd/neofs-adm/internal/modules/morph/initialize.go index ddc040b0..1631af94 100644 --- a/cmd/neofs-adm/internal/modules/morph/initialize.go +++ b/cmd/neofs-adm/internal/modules/morph/initialize.go @@ -395,6 +395,7 @@ func (c *initializeContext) sendMultiTx(script []byte, tryGroup bool, withConsen var act *actor.Actor var err error + withConsensus = withConsensus && !c.ConsensusAcc.Contract.ScriptHash().Equals(c.CommitteeAcc.ScriptHash()) if tryGroup { // Even for consensus signatures we need the committee to pay. signers := make([]actor.SignerAccount, 1, 2) diff --git a/cmd/neofs-adm/internal/modules/morph/initialize_transfer.go b/cmd/neofs-adm/internal/modules/morph/initialize_transfer.go index 591f809d..af488984 100644 --- a/cmd/neofs-adm/internal/modules/morph/initialize_transfer.go +++ b/cmd/neofs-adm/internal/modules/morph/initialize_transfer.go @@ -131,12 +131,17 @@ func (c *initializeContext) multiSign(tx *transaction.Transaction, accType strin } if len(tx.Scripts) == 0 { - tx.Scripts = append(tx.Scripts, *w) - } else { - tx.Scripts[0] = *w + tx.Scripts = make([]transaction.Witness, len(tx.Signers)) } - return nil + for i := range tx.Signers { + if tx.Signers[i].Account == h { + tx.Scripts[i] = *w + return nil + } + } + + return fmt.Errorf("%s account was not found among transaction signers", accType) } func (c *initializeContext) transferGASToProxy() error {