~edwargix/tallyard

09513f023be0e2f9560f3df7c464fd49c4dc64de — David Florness 4 years ago 824e004
Remove commented functions from libp2p implementation
1 files changed, 0 insertions(+), 174 deletions(-)

M election/voter.go
M election/voter.go => election/voter.go +0 -174
@@ 257,180 257,6 @@ func (el *Election) GetSums(client *mautrix.Client) {
	printResults(result, el.Candidates)
}

// func handleCmd(cmd string, rw *bufio.ReadWriter, stream network.Stream, election *Election) {
// 	localVoter := election.localVoter
// 	switch cmd {
// 	case "info":
// 		rw.WriteString(fmt.Sprintf("%s\n", election.rendezvousNonce))
// 		for _, option := range election.Candidates {
// 			rw.WriteString(fmt.Sprintf("%s\n", option))
// 		}
// 		rw.Flush()
// 	case "close":
// 		election.Lock()
// 		defer election.Unlock()
// 		if peer := stream.Conn().RemotePeer(); peer != election.masterID {
// 			log.Warning("received close command from non-master:", peer)
// 			return
// 		}
// 		if election.closed {
// 			log.Warning("election already closed")
// 			return
// 		}
// 		str, err := rw.ReadString('\n')
// 		if err != nil && err != io.EOF {
// 			panic(err)
// 		}
// 		str = stripNewline(str)
// 		numPeers, err := strconv.Atoi(str)
// 		if err != nil {
// 			panic(err)
// 		}
// 		election.close <- numPeers
// 		election.closed = true
// 	case "shake":
// 		election.Lock()
// 		defer election.Unlock()
// 		peerID := stream.Conn().RemotePeer()
// 		if election.closed {
// 			log.Warning("peer attempted to shake after "+
// 				"election was closed:", peerID)
// 			return
// 		}
// 		if _, exists := election.RemoteVoters[peerID]; exists {
// 			log.Warning("peer attempted to shake after having already done so", peerID)
// 			return
// 		}
// 		fmt.Printf("found voter: %s\n", peerID)
// 		election.RemoteVoters[peerID] = &Voter{
// 			addrInfo: peer.AddrInfo{
// 				ID:    peerID,
// 				Addrs: []multiaddr.Multiaddr{stream.Conn().RemoteMultiaddr()},
// 			},
// 		}
// 	case "eval": // peer is giving their input and requesting output from our poly
// 		localVoter.polyMu.RLock()
// 		defer localVoter.polyMu.RUnlock()
// 		if localVoter.poly == nil {
// 			log.Warning("peer attempted to eval before we had our poly:",
// 				stream.Conn().RemotePeer())
// 			return
// 		}
// 		inputb58, err := rw.ReadString('\n')
// 		if err != nil && err != io.EOF {
// 			log.Warning("unable to read input from peer during eval:",
// 				stream.Conn().RemotePeer())
// 			return
// 		}
// 		inputb58 = stripNewline(inputb58)
// 		inputBytes, err := base58.Decode(inputb58)
// 		if err != nil {
// 			log.Warning("unable to base58 decode input from peer during eval:",
// 				stream.Conn().RemotePeer())
// 			return
// 		}
// 		peer, exists := election.RemoteVoters[stream.Conn().RemotePeer()]
// 		if !exists {
// 			log.Warning("received eval command from unrecognized peer")
// 			return
// 		}
// 		peer.inputMu.Lock()
// 		defer peer.inputMu.Unlock()
// 		peer.input = new(big.Int).SetBytes(inputBytes)
// 		log.Infof("%s input: %s", peer.addrInfo.ID, peer.input)
// 		output := localVoter.poly.Eval(peer.input)
// 		rw.WriteString(base58.Encode(output.Bytes()))
// 		rw.Flush()
// 	case "sum":
// 		localVoter.sumMu.RLock()
// 		defer localVoter.sumMu.RUnlock()
// 		if localVoter.sum == nil {
// 			log.Info("peer attempted to fetch sum "+
// 				"before we computed it:", stream.Conn().RemotePeer())
// 			return
// 		}
// 		rw.WriteString(base58.Encode(localVoter.sum.Bytes()))
// 		rw.Flush()
// 	default:
// 		log.Warningf("uknown command %s", cmd)
// 	}
// }

// func (election *Election) StartVoting() {
// 	localVoter := election.localVoter

// 	var err error
// 	localVoter.inputMu.Lock()
// 	localVoter.input, err = math.RandomBigInt(128, false)
// 	localVoter.inputMu.Unlock()
// 	if err != nil {
// 		panic(err)
// 	}
// 	log.Infof("our input: %s", localVoter.input)

// 	localVoter.ballot = vote(election.Candidates)
// 	log.Infof("our ballot: %v", localVoter.ballot)

// 	// no +1 since we want degree k-1 where k is total number of voters
// 	localVoter.polyMu.Lock()
// 	localVoter.poly = math.NewRandomPoly(uint(len(election.RemoteVoters)),
// 		1024, localVoter.ballot)
// 	localVoter.polyMu.Unlock()
// 	log.Infof("our constant: %s", localVoter.poly.constant)

// 	// get outputs
// 	var wg sync.WaitGroup
// 	for _, voter := range election.RemoteVoters {
// 		wg.Add(1)
// 		go func(voter *Voter) {
// 			voter.output = voter.fetchNumber(election, "eval", base58.Encode(localVoter.input.Bytes()))
// 			logger.Infof("voter %s output: %s", voter.addrInfo.ID, voter.output)
// 			wg.Done()
// 		}(voter)
// 	}
// 	wg.Wait()

// 	// calculate sum
// 	localVoter.sumMu.Lock()
// 	localVoter.sum = localVoter.poly.Eval(localVoter.input)
// 	for _, voter := range election.RemoteVoters {
// 		localVoter.sum.Add(localVoter.sum, voter.output)
// 	}
// 	localVoter.sumMu.Unlock()
// 	logger.Infof("our sum: %s", localVoter.sum)

// 	// get sums
// 	for _, voter := range election.RemoteVoters {
// 		wg.Add(1)
// 		go func(voter *Voter) {
// 			voter.sum = voter.fetchNumber(election, "sum")
// 			logger.Infof("voter %s sum: %s",
// 				voter.addrInfo.ID, voter.sum)
// 			wg.Done()
// 		}(voter)
// 	}
// 	wg.Wait()

// 	mat := constructPolyMatrix(election)
// 	mat.RREF()

// 	constant := mat[0][len(mat[0])-1]
// 	if !constant.IsInt() {
// 		panic("constant term is not an integer")
// 	}

// 	result := constant.Num().Bytes()

// 	// number of bytes we need to insert at the front since they're zero
// 	diff := (len(election.Candidates)*len(election.Candidates)) - len(result)
// 	result = append(make([]byte, diff), result...)

// 	printResults(result, election.Candidates)

// 	// temporary
// 	select {}
// }

func constructPolyMatrix(el *Election) math.Matrix {
	mat := make(math.Matrix, len(el.Joins))