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 {