github.com/cranelv/ethereum_mpc@v0.0.0-20191031014521-23aeb1415092/mpcService/step/mpc_jrss_step.go (about) 1 package step 2 3 import ( 4 "github.com/ethereum/go-ethereum/mpcService/step/generator" 5 "github.com/ethereum/go-ethereum/mpcService/protocol" 6 "github.com/ethereum/go-ethereum/log" 7 ) 8 9 type MpcJRSS_Step struct { 10 BaseMpcStep 11 } 12 13 func CreateMpcJRSS_Step(result protocol.MpcResultInterface,degree int, nodeInfo protocol.MpcNodeInterface) *MpcJRSS_Step { 14 mpc := &MpcJRSS_Step{*CreateBaseMpcStep(result,nodeInfo, 1,true)} 15 mpc.messages[0] = generator.CreateJRSSValue(degree, nodeInfo.NeedQuorum(),protocol.MpcPrivateShare) 16 return mpc 17 } 18 19 func (jrss *MpcJRSS_Step) CreateMessage() []protocol.StepMessage { 20 peerLen := jrss.nodeInfo.NeedQuorum() 21 message := make([]protocol.StepMessage, peerLen) 22 peerInfo := jrss.nodeInfo.GetPeers() 23 for i := 0; i < peerLen; i++ { 24 message[i].Msgcode = protocol.MSG_MPCMessage 25 message[i].PeerID = peerInfo[i].PeerID 26 message[i].Data = append(message[i].Data,&protocol.MpcData{protocol.MPCPolyvalue,jrss.messages[0].GetMessageData(i)}) 27 } 28 return message 29 } 30 31 func (jrss *MpcJRSS_Step) FinishStep( mpc protocol.MpcManager) error { 32 err := jrss.BaseMpcStep.FinishStep() 33 if err != nil { 34 return err 35 } 36 37 result := jrss.messages[0].GetResultData() 38 err = jrss.mpcResult.SetValue(result.Key,result.Data) 39 if err != nil { 40 return err 41 } 42 JRSSvalue := jrss.messages[0].(*generator.RandomPolynomialValue) 43 err = jrss.mpcResult.SetValue(protocol.MpcPublicShare, JRSSvalue.RandCoefficient[0]) 44 if err != nil { 45 return err 46 } 47 return nil 48 } 49 50 func (jrss *MpcJRSS_Step) HandleMessage(msg *protocol.StepMessage) bool { 51 seed := jrss.nodeInfo.GetSeed(msg.PeerID) 52 if seed == 0 { 53 log.Error("MpcJRSS_Step, can't find peer seed. peerID:%s", msg.PeerID) 54 } 55 56 jrss.messages[0].SetMessageData(seed,msg.Data[0].Data) 57 // log.Error("MpcJRSS_Step.HandleMessage","peerId",msg.PeerID,"stepWaiting",jrss.waiting) 58 return true 59 }