Fix some syntax issues

This commit is contained in:
ChronosX88 2020-12-02 18:09:46 +04:00
parent a42776be67
commit e3931c23a2
Signed by: ChronosXYZ
GPG Key ID: 085A69A82C8C511A
3 changed files with 126 additions and 125 deletions

View File

@ -4,19 +4,18 @@ import (
"bytes"
"fmt"
ftypes "github.com/Secured-Finance/dione/rpc/filecoin/types"
oracleEmitter "github.com/Secured-Finance/dione/contracts/oracleemitter"
"github.com/Secured-Finance/dione/node"
"github.com/filecoin-project/go-state-types/crypto"
ftypes "github.com/Secured-Finance/dione/rpc/filecoin/types"
"github.com/ethereum/go-ethereum/common"
"github.com/filecoin-project/go-state-types/crypto"
types2 "github.com/Secured-Finance/dione/consensus/types"
"github.com/Secured-Finance/dione/sigs"
"github.com/Secured-Finance/dione/types"
"github.com/ethereum/go-ethereum/common"
"github.com/mitchellh/hashstructure/v2"
"github.com/sirupsen/logrus"
)
@ -95,18 +94,6 @@ func (ppp *PrePreparePool) IsValidPrePrepare(prePrepare *types2.Message) bool {
logrus.Errorf("the incoming task and cached request event don't match!")
return false
// === verify filecoin message signature ===
if consensusMsg.Task.RequestType == "GetTransaction" && consensusMsg.Task.OriginChain == 1 {
var msg ftypes.SignedMessage
if err := msg.UnmarshalCBOR(bytes.NewReader(consensusMsg.Task.Payload)); err != nil {
if err := msg.Message.UnmarshalCBOR(bytes.NewReader(consensusMsg.Task.Payload)); err != nil {
return false
}
}
if err = sigs.Verify(msg.Signature, msg.Message.From.Bytes(), msg.Message.Cid().Bytes()); err != nil {
logrus.Errorf("Couldn't verify transaction %v", err)
}
}
/////////////////////////////////
@ -178,6 +165,21 @@ func (ppp *PrePreparePool) IsValidPrePrepare(prePrepare *types2.Message) bool {
}
//////////////////////////////////////
// === verify filecoin message signature ===
if consensusMsg.Task.RequestType == "GetTransaction" && consensusMsg.Task.OriginChain == 1 {
var msg ftypes.SignedMessage
if err := msg.UnmarshalCBOR(bytes.NewReader(consensusMsg.Task.Payload)); err != nil {
if err := msg.Message.UnmarshalCBOR(bytes.NewReader(consensusMsg.Task.Payload)); err != nil {
return false
}
}
if err = sigs.Verify(msg.Signature, msg.Message.From.Bytes(), msg.Message.Cid().Bytes()); err != nil {
logrus.Errorf("Couldn't verify transaction %v", err)
}
}
/////////////////////////////////
return true
}

View File

@ -1,106 +1,107 @@
package node
import (
"context"
"fmt"
"math/rand"
"testing"
"time"
"github.com/Secured-Finance/dione/config"
"github.com/sirupsen/logrus"
)
func TestConsensus(t *testing.T) {
logrus.SetLevel(logrus.DebugLevel)
//log.SetAllLoggers(log.LevelDebug)
// boolgen := newBoolgen()
rand.Seed(time.Now().UnixNano())
port := rand.Intn(100) + 10000
cfg := &config.Config{
ListenPort: port,
ListenAddr: "0.0.0.0",
Rendezvous: "dione",
PubSub: config.PubSubConfig{
ProtocolID: "/dione/1.0",
},
ConsensusMinApprovals: 3,
}
var nodes []*Node
bNode := newNode(cfg)
t.Logf("Bootstrap ID: %s", bNode.Host.ID())
cfg.BootstrapNodes = []string{bNode.Host.Addrs()[0].String() + fmt.Sprintf("/p2p/%s", bNode.Host.ID().String())}
nodes = append(nodes, bNode)
maxNodes := 10
for i := 1; i <= maxNodes; i++ {
cfg.ListenPort += 1
node := newNode(cfg)
nodes = append(nodes, node)
}
time.Sleep(5 * time.Second)
// var wg sync.WaitGroup
// wg.Add(len(nodes))
// for _, n := range nodes {
// var testData string
// if boolgen.Bool() {
// testData = "test"
// } else {
// testData = "test1"
// }
// n.ConsensusManager.NewTestConsensus(testData, "123", func(finalData string) {
// if finalData != "test" {
// t.Errorf("Expected final data %s, not %s", "test", finalData)
// }
// wg.Done()
// })
// }
// wg.Wait()
}
func newNode(cfg *config.Config) *Node {
privKey, err := generatePrivateKey()
if err != nil {
logrus.Fatal(err)
}
ctx, ctxCancel := context.WithCancel(context.Background())
node := &Node{
OracleTopic: "dione",
Config: cfg,
GlobalCtx: ctx,
GlobalCtxCancel: ctxCancel,
}
node.setupNode(ctx, privKey, 1*time.Second)
return node
}
type boolgen struct {
src rand.Source
cache int64
remaining int
}
func newBoolgen() *boolgen {
return &boolgen{src: rand.NewSource(time.Now().UnixNano())}
}
func (b *boolgen) Bool() bool {
if b.remaining == 0 {
b.cache, b.remaining = b.src.Int63(), 63
}
result := b.cache&0x01 == 1
b.cache >>= 1
b.remaining--
return result
}
//
//import (
// "context"
// "fmt"
// "math/rand"
// "testing"
// "time"
//
// "github.com/Secured-Finance/dione/config"
// "github.com/sirupsen/logrus"
//)
//
//func TestConsensus(t *testing.T) {
// logrus.SetLevel(logrus.DebugLevel)
// //log.SetAllLoggers(log.LevelDebug)
//
// // boolgen := newBoolgen()
// rand.Seed(time.Now().UnixNano())
// port := rand.Intn(100) + 10000
//
// cfg := &config.Config{
// ListenPort: port,
// ListenAddr: "0.0.0.0",
// Rendezvous: "dione",
// PubSub: config.PubSubConfig{
// ProtocolID: "/dione/1.0",
// },
// ConsensusMinApprovals: 3,
// }
//
// var nodes []*Node
//
// bNode := newNode(cfg)
// t.Logf("Bootstrap ID: %s", bNode.Host.ID())
// cfg.BootstrapNodes = []string{bNode.Host.Addrs()[0].String() + fmt.Sprintf("/p2p/%s", bNode.Host.ID().String())}
// nodes = append(nodes, bNode)
//
// maxNodes := 10
//
// for i := 1; i <= maxNodes; i++ {
// cfg.ListenPort += 1
// node := newNode(cfg)
// nodes = append(nodes, node)
// }
//
// time.Sleep(5 * time.Second)
//
// // var wg sync.WaitGroup
//
// // wg.Add(len(nodes))
// // for _, n := range nodes {
// // var testData string
// // if boolgen.Bool() {
// // testData = "test"
// // } else {
// // testData = "test1"
// // }
// // n.ConsensusManager.NewTestConsensus(testData, "123", func(finalData string) {
// // if finalData != "test" {
// // t.Errorf("Expected final data %s, not %s", "test", finalData)
// // }
// // wg.Done()
// // })
// // }
// // wg.Wait()
//}
//
//func newNode(cfg *config.Config) *Node {
// privKey, err := generatePrivateKey()
// if err != nil {
// logrus.Fatal(err)
// }
// ctx, ctxCancel := context.WithCancel(context.Background())
//
// node := &Node{
// OracleTopic: "dione",
// Config: cfg,
// GlobalCtx: ctx,
// GlobalCtxCancel: ctxCancel,
// }
// node.setupNode(ctx, privKey, 1*time.Second)
// return node
//}
//
//type boolgen struct {
// src rand.Source
// cache int64
// remaining int
//}
//
//func newBoolgen() *boolgen {
// return &boolgen{src: rand.NewSource(time.Now().UnixNano())}
//}
//
//func (b *boolgen) Bool() bool {
// if b.remaining == 0 {
// b.cache, b.remaining = b.src.Int63(), 63
// }
//
// result := b.cache&0x01 == 1
// b.cache >>= 1
// b.remaining--
//
// return result
//}

View File

@ -100,13 +100,11 @@ func (psr *PubSubRouter) handleMessage(p *pubsub.Message) {
}
func (psr *PubSubRouter) Hook(messageType types.MessageType, handler Handler) {
handlers, ok := psr.handlers[messageType]
_, ok := psr.handlers[messageType]
if !ok {
emptyArray := []Handler{}
psr.handlers[messageType] = emptyArray
handlers = emptyArray
psr.handlers[messageType] = []Handler{}
}
psr.handlers[messageType] = append(handlers, handler)
psr.handlers[messageType] = append(psr.handlers[messageType], handler)
}
func (psr *PubSubRouter) BroadcastToServiceTopic(msg *types.Message) error {