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" "bytes"
"fmt" "fmt"
ftypes "github.com/Secured-Finance/dione/rpc/filecoin/types"
oracleEmitter "github.com/Secured-Finance/dione/contracts/oracleemitter" oracleEmitter "github.com/Secured-Finance/dione/contracts/oracleemitter"
"github.com/Secured-Finance/dione/node" "github.com/Secured-Finance/dione/node"
"github.com/filecoin-project/go-state-types/crypto" "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" types2 "github.com/Secured-Finance/dione/consensus/types"
"github.com/Secured-Finance/dione/sigs" "github.com/Secured-Finance/dione/sigs"
"github.com/Secured-Finance/dione/types" "github.com/Secured-Finance/dione/types"
"github.com/ethereum/go-ethereum/common"
"github.com/mitchellh/hashstructure/v2" "github.com/mitchellh/hashstructure/v2"
"github.com/sirupsen/logrus" "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!") logrus.Errorf("the incoming task and cached request event don't match!")
return false 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 return true
} }

View File

@ -1,106 +1,107 @@
package node package node
import ( //
"context" //import (
"fmt" // "context"
"math/rand" // "fmt"
"testing" // "math/rand"
"time" // "testing"
// "time"
"github.com/Secured-Finance/dione/config" //
"github.com/sirupsen/logrus" // "github.com/Secured-Finance/dione/config"
) // "github.com/sirupsen/logrus"
//)
func TestConsensus(t *testing.T) { //
logrus.SetLevel(logrus.DebugLevel) //func TestConsensus(t *testing.T) {
//log.SetAllLoggers(log.LevelDebug) // logrus.SetLevel(logrus.DebugLevel)
// //log.SetAllLoggers(log.LevelDebug)
// boolgen := newBoolgen() //
rand.Seed(time.Now().UnixNano()) // // boolgen := newBoolgen()
port := rand.Intn(100) + 10000 // rand.Seed(time.Now().UnixNano())
// port := rand.Intn(100) + 10000
cfg := &config.Config{ //
ListenPort: port, // cfg := &config.Config{
ListenAddr: "0.0.0.0", // ListenPort: port,
Rendezvous: "dione", // ListenAddr: "0.0.0.0",
PubSub: config.PubSubConfig{ // Rendezvous: "dione",
ProtocolID: "/dione/1.0", // PubSub: config.PubSubConfig{
}, // ProtocolID: "/dione/1.0",
ConsensusMinApprovals: 3, // },
} // 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" { // var nodes []*Node
// t.Errorf("Expected final data %s, not %s", "test", finalData) //
// 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)
// } // }
// wg.Done() //
// }) // 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
//} //}
// 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) { func (psr *PubSubRouter) Hook(messageType types.MessageType, handler Handler) {
handlers, ok := psr.handlers[messageType] _, ok := psr.handlers[messageType]
if !ok { if !ok {
emptyArray := []Handler{} psr.handlers[messageType] = []Handler{}
psr.handlers[messageType] = emptyArray
handlers = emptyArray
} }
psr.handlers[messageType] = append(handlers, handler) psr.handlers[messageType] = append(psr.handlers[messageType], handler)
} }
func (psr *PubSubRouter) BroadcastToServiceTopic(msg *types.Message) error { func (psr *PubSubRouter) BroadcastToServiceTopic(msg *types.Message) error {