github.com/cranelv/ethereum_mpc@v0.0.0-20191031014521-23aeb1415092/mpcService/step/txsign_lagrange_step.go (about) 1 package step 2 3 import ( 4 "github.com/ethereum/go-ethereum/log" 5 "github.com/ethereum/go-ethereum/mpcService/protocol" 6 "github.com/ethereum/go-ethereum/mpcService/step/generator" 7 ) 8 9 type TXSign_Lagrange_Step struct { 10 BaseMpcStep 11 } 12 13 func CreateTXSign_Lagrange_Step(result protocol.MpcResultInterface,nodeinfo protocol.MpcNodeInterface, preValueKeys []string, resultKeys []string) *TXSign_Lagrange_Step { 14 log.Info("CreateTXSign_Lagrange_Step begin") 15 16 signNum := len(preValueKeys) 17 mpc := &TXSign_Lagrange_Step{*CreateBaseMpcStep(result,nodeinfo, signNum,true)} 18 19 for i := 0; i < signNum; i++ { 20 mpc.messages[i] = generator.CreateLagrangeGenerator(preValueKeys[i],resultKeys[i]) 21 } 22 23 log.Info("CreateTXSign_Lagrange_Step succeed") 24 return mpc 25 } 26 27 func (lagStep *TXSign_Lagrange_Step) CreateMessage() []protocol.StepMessage { 28 log.Info("TXSign_Lagrange_Step.CreateMessage begin") 29 30 message := make([]protocol.StepMessage, 1) 31 message[0].Msgcode = protocol.MSG_MPCMessage 32 message[0].PeerID = nil 33 34 for _,msg := range lagStep.messages{ 35 message[0].Data = append(message[0].Data, &protocol.MpcData{protocol.MpcLagrange,msg.GetMessageData(0)}) 36 } 37 38 log.Info("TXSign_Lagrange_Step.CreateMessage succeed") 39 return message 40 } 41 42 func (lagStep *TXSign_Lagrange_Step) HandleMessage(msg *protocol.StepMessage) bool { 43 log.Info("TXSign_Lagrange_Step.HandleMessage begin, peerID:%s", msg.PeerID.String()) 44 45 seed := lagStep.nodeInfo.GetSeed(msg.PeerID) 46 if seed == 0 { 47 log.Error("TXSign_Lagrange_Step.HandleMessage, get seed fail. peer:%s", msg.PeerID.String()) 48 return false 49 } 50 // log.Error("TXSign_Lagrange_Step","Seed",seed,"Data",msg.Data[0].Data.(*big.Int)) 51 52 for i,msger := range lagStep.messages{ 53 msger.SetMessageData(seed,msg.Data[i].Data) 54 } 55 log.Info("TXSign_Lagrange_Step.HandleMessage succees") 56 return true 57 } 58 59 func (lagStep *TXSign_Lagrange_Step) FinishStep( mpc protocol.MpcManager) error { 60 log.Info("TXSign_Lagrange_Step.FinishStep begin") 61 62 err := lagStep.BaseMpcStep.FinishStep() 63 if err != nil { 64 return err 65 } 66 67 for _,msger := range lagStep.messages{ 68 result := msger.GetResultData() 69 lagStep.mpcResult.SetValue(result.Key,result.Data) 70 } 71 72 log.Info("TXSign_Lagrange_Step.FinishStep succeed") 73 return nil 74 } 75 76