From: HAOYUatHZ Date: Fri, 21 Jun 2019 07:40:11 +0000 (+0800) Subject: add getInputsCnt X-Git-Url: http://git.osdn.net/view?p=bytom%2Fvapor.git;a=commitdiff_plain;h=bc027cee7f3401678bba5d45a85a7a337a322900 add getInputsCnt --- diff --git a/federation/warder.go b/federation/warder.go index 1c81b953..04f8a087 100644 --- a/federation/warder.go +++ b/federation/warder.go @@ -121,7 +121,8 @@ func (w *warder) processCrossTx(ormTx *orm.CrossTransaction) error { return err } - var signersSigns [][][]byte + inputsCnt := getInputsCnt(destTx) + signersSigns := make([][][]byte, inputsCnt) signerSigns, err := w.getSigns(destTx, ormTx) if err != nil { @@ -129,8 +130,8 @@ func (w *warder) processCrossTx(ormTx *orm.CrossTransaction) error { return err } - // TODO: pass ref? - signersSigns = w.attachSignsForTx( /*destTx,*/ ormTx, w.position, signerSigns) + // TODO: pass ref? err? + w.attachSignsForTx( /*destTx,*/ ormTx, signersSigns, w.position, signerSigns) for _, remote := range w.remotes { signerSigns, err := remote.RequestSigns(destTx, ormTx) @@ -139,8 +140,8 @@ func (w *warder) processCrossTx(ormTx *orm.CrossTransaction) error { return err } - // TODO: pass ref? - signersSigns = w.attachSignsForTx( /*destTx,*/ ormTx, remote.Position, signerSigns) + // TODO: pass ref? err? + w.attachSignsForTx( /*destTx,*/ ormTx, signersSigns, remote.Position, signerSigns) } if w.isTxSignsReachQuorum(signersSigns) && w.isLeader() { @@ -166,6 +167,17 @@ func (w *warder) processCrossTx(ormTx *orm.CrossTransaction) error { return nil } +func getInputsCnt(tx interface{}) uint64 { + switch tx := tx.(type) { + case *btmTypes.Tx: + return uint64(len(tx.Inputs)) + case *vaporTypes.Tx: + return uint64(len(tx.Inputs)) + default: + return 0 + } +} + func (w *warder) validateCrossTx(tx *orm.CrossTransaction) error { switch tx.Status { case common.CrossTxRejectedStatus: @@ -333,7 +345,7 @@ func (w *warder) getSigns(destTx interface{}, ormTx *orm.CrossTransaction) ([][] } // TODO: -func (w *warder) attachSignsForTx(destTx interface{}, ormTx *orm.CrossTransaction, position uint8, signs []string) error { +func (w *warder) attachSignsForTx( /*destTx interface{}, */ ormTx *orm.CrossTransaction, signersSigns [][][]byte, position uint8, signs []string) error { var inputsLen int switch destTx := destTx.(type) { case *vaporTypes.Tx: