2020-11-15 05:59:46 +00:00
|
|
|
package node
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
|
|
|
|
"github.com/sirupsen/logrus"
|
|
|
|
)
|
|
|
|
|
|
|
|
func (n *Node) subscribeOnEthContracts(ctx context.Context) {
|
|
|
|
eventChan, subscription, err := n.Ethereum.SubscribeOnOracleEvents(ctx)
|
|
|
|
if err != nil {
|
|
|
|
logrus.Fatal("Can't subscribe on ethereum contracts, exiting... ", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
go func() {
|
|
|
|
EventLoop:
|
|
|
|
for {
|
|
|
|
select {
|
|
|
|
case event := <-eventChan:
|
|
|
|
{
|
|
|
|
task, err := n.Miner.MineTask(ctx, event, n.Wallet.WalletSign)
|
|
|
|
if err != nil {
|
|
|
|
logrus.Fatal("Error with mining algorithm, exiting... ", err)
|
|
|
|
}
|
2020-11-15 10:11:07 +00:00
|
|
|
if task == nil {
|
|
|
|
continue
|
|
|
|
}
|
2020-11-15 05:59:46 +00:00
|
|
|
logrus.Info("BlockHash for Solana transaction: ", task.BlockHash)
|
|
|
|
logrus.Info("Started new consensus round with ID: ", task.BlockHash)
|
2020-11-15 13:46:58 +00:00
|
|
|
//n.ConsensusManager.NewTestConsensus(string(task.BlockHash), task.BlockHash, func(finalData string) {
|
|
|
|
// if finalData != string(task.BlockHash) {
|
|
|
|
// logrus.Warnf("Expected final data to be %s, not %s", task.BlockHash, finalData)
|
|
|
|
// return
|
|
|
|
// }
|
|
|
|
// logrus.Info("Consensus ID: ", task.BlockHash, " was successfull")
|
|
|
|
// logrus.Info("Submitting on-chain result: ", task.BlockHash, "for consensus ID: ", task.BlockHash)
|
|
|
|
// if task.Miner == n.Host.ID() {
|
|
|
|
// if err := n.Ethereum.SubmitRequestAnswer(event.RequestID, task.BlockHash, event.CallbackAddress, event.CallbackMethodID); err != nil {
|
|
|
|
// logrus.Warn("Can't submit request to ethereum chain: ", err)
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
//})
|
|
|
|
|
|
|
|
err = n.ConsensusManager.Propose(task.BlockHash, task.BlockHash, event.RequestID, event.CallbackAddress)
|
|
|
|
if err != nil {
|
|
|
|
logrus.Errorf("Failed to propose task: %w", err)
|
|
|
|
}
|
2020-11-15 05:59:46 +00:00
|
|
|
}
|
|
|
|
case <-ctx.Done():
|
|
|
|
break EventLoop
|
|
|
|
case <-subscription.Err():
|
|
|
|
logrus.Fatal("Error with ethereum subscription, exiting... ", err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
}
|