Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
power-node
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Odysseus
power-node
Commits
dc4a4687
Commit
dc4a4687
authored
Feb 28, 2024
by
duanjinfei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update log print
parent
74d8203d
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
53 additions
and
52 deletions
+53
-52
db.go
db/db.go
+1
-3
node_manager.go
models/node_manager.go
+5
-0
model_handler.go
nm/model_handler.go
+2
-1
msg_resp.go
nm/msg_resp.go
+2
-2
start.go
nm/start.go
+17
-11
task_msg.go
nm/task_msg.go
+4
-17
client.go
operate/client.go
+2
-2
docker.go
operate/docker.go
+0
-1
util_test.go
test/util_test.go
+0
-1
util.go
utils/util.go
+7
-7
validator.go
validator/validator.go
+13
-7
No files found.
db/db.go
View file @
dc4a4687
...
@@ -2,7 +2,6 @@ package db
...
@@ -2,7 +2,6 @@ package db
import
(
import
(
"example.com/m/log"
"example.com/m/log"
"fmt"
"github.com/syndtr/goleveldb/leveldb"
"github.com/syndtr/goleveldb/leveldb"
"github.com/syndtr/goleveldb/leveldb/iterator"
"github.com/syndtr/goleveldb/leveldb/iterator"
)
)
...
@@ -62,8 +61,7 @@ func Get(key string) ([]byte, error) {
...
@@ -62,8 +61,7 @@ func Get(key string) ([]byte, error) {
log
.
Error
(
"Leveldb get data failed:"
,
err
)
log
.
Error
(
"Leveldb get data failed:"
,
err
)
return
nil
,
err
return
nil
,
err
}
}
fmt
.
Printf
(
"Value: %s
\n
"
,
data
)
log
.
WithField
(
"key"
,
key
)
.
WithField
(
"value"
,
data
)
.
Info
(
"leveldb data"
)
return
data
,
nil
return
data
,
nil
}
}
...
...
models/node_manager.go
View file @
dc4a4687
...
@@ -41,6 +41,11 @@ type ComputeResult struct {
...
@@ -41,6 +41,11 @@ type ComputeResult struct {
Data
string
`json:"data"`
Data
string
`json:"data"`
}
}
type
BenefitAddressInfo
struct
{
Address
string
`json:"address"`
Timestamp
int64
`json:"timestamp"`
}
type
NodeManagerClient
struct
{
type
NodeManagerClient
struct
{
mutex
sync
.
Mutex
mutex
sync
.
Mutex
LastHeartTime
int64
LastHeartTime
int64
...
...
nm/model_handler.go
View file @
dc4a4687
...
@@ -74,7 +74,7 @@ func monitorModelInfo(dockerOp *operate.DockerOp) {
...
@@ -74,7 +74,7 @@ func monitorModelInfo(dockerOp *operate.DockerOp) {
dockerOp
.
SignApi
[
modelInfo
.
ImageName
]
=
modelInfo
.
SignUrl
dockerOp
.
SignApi
[
modelInfo
.
ImageName
]
=
modelInfo
.
SignUrl
dockerOp
.
ModelsInfo
=
append
(
dockerOp
.
ModelsInfo
,
modelInfo
)
dockerOp
.
ModelsInfo
=
append
(
dockerOp
.
ModelsInfo
,
modelInfo
)
}
}
ticker
=
time
.
NewTicker
(
time
.
Minute
*
65
)
ticker
=
time
.
NewTicker
(
time
.
Minute
*
10
)
}
}
}
}
}
}
...
@@ -86,6 +86,7 @@ func reportModelInfo(nodeManager *models.NodeManagerClient,
...
@@ -86,6 +86,7 @@ func reportModelInfo(nodeManager *models.NodeManagerClient,
select
{
select
{
case
taskId
:=
<-
dockerOp
.
ModelTaskIdChan
:
case
taskId
:=
<-
dockerOp
.
ModelTaskIdChan
:
if
!
nodeManager
.
Status
{
if
!
nodeManager
.
Status
{
log
.
WithField
(
"endpoint"
,
nodeManager
.
Endpoint
)
.
Error
(
"Node manager is down , stop report model info"
)
return
return
}
}
params
:=
buildParams
(
taskId
)
params
:=
buildParams
(
taskId
)
...
...
nm/msg_resp.go
View file @
dc4a4687
...
@@ -35,7 +35,7 @@ func (o *RespMsgWorker) RegisterMsgResp(nodeManager *models.NodeManagerClient, w
...
@@ -35,7 +35,7 @@ func (o *RespMsgWorker) RegisterMsgResp(nodeManager *models.NodeManagerClient, w
handler
:
handler
,
handler
:
handler
,
params
:
params
,
params
:
params
,
}
}
log
.
Info
(
"----------------
-----------------------Send register msg -----------------------
-------------"
)
log
.
Info
(
"----------------
register msg
-------------"
)
}
}
func
(
o
*
RespMsgWorker
)
SendMsg
()
{
func
(
o
*
RespMsgWorker
)
SendMsg
()
{
...
@@ -46,7 +46,7 @@ func (o *RespMsgWorker) SendMsg() {
...
@@ -46,7 +46,7 @@ func (o *RespMsgWorker) SendMsg() {
workerMsg
:=
pool
.
handler
(
pool
.
params
...
)
workerMsg
:=
pool
.
handler
(
pool
.
params
...
)
err
:=
pool
.
workerClient
.
SendMsg
(
workerMsg
)
err
:=
pool
.
workerClient
.
SendMsg
(
workerMsg
)
if
err
!=
nil
{
if
err
!=
nil
{
log
.
Error
(
"Send
heartbeat msg error
:"
,
err
)
log
.
Error
(
"Send
msg to nm client failed
:"
,
err
)
return
return
}
}
log
.
Info
(
"Worker client send message successfully"
)
log
.
Info
(
"Worker client send message successfully"
)
...
...
nm/start.go
View file @
dc4a4687
...
@@ -51,17 +51,20 @@ func StartMonitor() {
...
@@ -51,17 +51,20 @@ func StartMonitor() {
for
i
:=
0
;
i
<
len
(
nodeManagerArr
);
i
++
{
for
i
:=
0
;
i
<
len
(
nodeManagerArr
);
i
++
{
// TODO: 需要对索引进行一定的规则判断,随机选择其中的nodeManager进行链接
// TODO: 需要对索引进行一定的规则判断,随机选择其中的nodeManager进行链接
if
int64
(
connectNodeManagerCount
)
==
conf
.
GetConfig
()
.
NodeManagerNum
{
if
int64
(
connectNodeManagerCount
)
==
conf
.
GetConfig
()
.
NodeManagerNum
{
log
.
Warn
(
"Nothing available node manager.................................."
)
break
break
}
}
randomNum
:=
utils
.
GenerateRandomNumber
(
conf
.
GetConfig
()
.
SignPrivateKey
,
int64
(
len
(
nodeManagerArr
)))
randomNum
:=
utils
.
GenerateRandomNumber
(
conf
.
GetConfig
()
.
SignPrivateKey
,
int64
(
len
(
nodeManagerArr
)))
manager
:=
nodeManagerArr
[
randomNum
.
Int64
()]
manager
:=
nodeManagerArr
[
randomNum
.
Int64
()]
if
!
manager
.
IsExist
{
if
!
manager
.
IsExist
{
log
.
WithField
(
"endpoint"
,
manager
.
Info
.
Endpoint
)
.
Warn
(
"node manager is not exist"
)
continue
continue
}
}
if
!
manager
.
IsUsed
{
if
!
manager
.
IsUsed
{
isSuccess
:=
inputNodeManagerChan
(
manager
,
nil
)
isSuccess
:=
inputNodeManagerChan
(
manager
,
nil
)
if
!
isSuccess
{
if
!
isSuccess
{
panic
(
"Init input node manager chan failed"
)
log
.
Warn
(
"Init input node manager chan failed"
)
continue
}
}
connectNodeManagerCount
++
connectNodeManagerCount
++
}
}
...
@@ -73,7 +76,7 @@ func StartMonitor() {
...
@@ -73,7 +76,7 @@ func StartMonitor() {
case
<-
ticker
.
C
:
case
<-
ticker
.
C
:
log
.
Info
(
"Monitoring node manager client thread start......"
)
log
.
Info
(
"Monitoring node manager client thread start......"
)
for
_
,
managerClient
:=
range
usedNodeManagerClient
{
for
_
,
managerClient
:=
range
usedNodeManagerClient
{
if
!
managerClient
.
GetStatus
()
{
if
!
managerClient
.
GetStatus
()
&&
!
managerClient
.
IsDel
{
log
.
Warn
(
"The Node manager client is failed:"
,
managerClient
.
Endpoint
)
log
.
Warn
(
"The Node manager client is failed:"
,
managerClient
.
Endpoint
)
manager
:=
getNodeManager
(
managerClient
.
Endpoint
)
manager
:=
getNodeManager
(
managerClient
.
Endpoint
)
if
manager
==
nil
{
if
manager
==
nil
{
...
@@ -100,6 +103,7 @@ func StartMonitor() {
...
@@ -100,6 +103,7 @@ func StartMonitor() {
unUsedManager
:=
unUsedNodeManagers
[
randomNum
.
Int64
()]
unUsedManager
:=
unUsedNodeManagers
[
randomNum
.
Int64
()]
isSuccess
:=
inputNodeManagerChan
(
unUsedManager
,
nil
)
isSuccess
:=
inputNodeManagerChan
(
unUsedManager
,
nil
)
if
!
isSuccess
{
if
!
isSuccess
{
log
.
Warn
(
"Connect unused node manager client error:"
,
manager
.
Info
.
Endpoint
)
break
break
}
}
}
}
...
@@ -135,6 +139,7 @@ func monitorWorker(op *operate.DockerOp) {
...
@@ -135,6 +139,7 @@ func monitorWorker(op *operate.DockerOp) {
// 上报image信息
// 上报image信息
go
reportModelInfo
(
nodeManager
,
worker
,
msgRespWorker
,
op
)
go
reportModelInfo
(
nodeManager
,
worker
,
msgRespWorker
,
op
)
log
.
Info
(
"Report model info started"
)
// 证明存储
// 证明存储
go
proofWorker
.
ProofStorage
()
go
proofWorker
.
ProofStorage
()
...
@@ -145,6 +150,7 @@ func monitorWorker(op *operate.DockerOp) {
...
@@ -145,6 +150,7 @@ func monitorWorker(op *operate.DockerOp) {
log
.
Info
(
"Proof commit worker started"
)
log
.
Info
(
"Proof commit worker started"
)
go
handlerStandardTask
(
nodeManager
,
worker
,
msgRespWorker
,
taskMsgWorker
)
go
handlerStandardTask
(
nodeManager
,
worker
,
msgRespWorker
,
taskMsgWorker
)
log
.
Info
(
"Handler standard task worker started"
)
// 处理消息
// 处理消息
for
i
:=
0
;
i
<
5
;
i
++
{
for
i
:=
0
;
i
<
5
;
i
++
{
...
@@ -265,27 +271,27 @@ func handlerMsg(nodeManager *models.NodeManagerClient,
...
@@ -265,27 +271,27 @@ func handlerMsg(nodeManager *models.NodeManagerClient,
continue
continue
}
}
nm
Sign
Msg
:=
rev
.
GetProofTaskResult
()
nm
Result
Msg
:=
rev
.
GetProofTaskResult
()
if
nm
Sign
Msg
!=
nil
{
if
nm
Result
Msg
!=
nil
{
containerSign
,
_
:=
taskMsgWorker
.
LruCache
.
Get
(
nm
Sign
Msg
.
TaskId
+
models
.
ContainerSign
)
containerSign
,
_
:=
taskMsgWorker
.
LruCache
.
Get
(
nm
Result
Msg
.
TaskId
+
models
.
ContainerSign
)
//if !ok {
//if !ok {
// log.Error("taskMsgWorker.LruCache.Get failed: ", nmSignMsg.TaskUuid+models.ContainerSign)
// log.Error("taskMsgWorker.LruCache.Get failed: ", nmSignMsg.TaskUuid+models.ContainerSign)
//}
//}
minerSign
,
_
:=
taskMsgWorker
.
LruCache
.
Get
(
nm
Sign
Msg
.
TaskId
+
models
.
MinerSign
)
minerSign
,
_
:=
taskMsgWorker
.
LruCache
.
Get
(
nm
Result
Msg
.
TaskId
+
models
.
MinerSign
)
//if !ok {
//if !ok {
// log.Error("taskMsgWorker.LruCache.Get failed: ", nmSignMsg.TaskUuid+models.MinerSign)
// log.Error("taskMsgWorker.LruCache.Get failed: ", nmSignMsg.TaskUuid+models.MinerSign)
//}
//}
reqHash
,
_
:=
taskMsgWorker
.
LruCache
.
Get
(
nm
Sign
Msg
.
TaskId
+
models
.
ReqHash
)
reqHash
,
_
:=
taskMsgWorker
.
LruCache
.
Get
(
nm
Result
Msg
.
TaskId
+
models
.
ReqHash
)
//if !ok {
//if !ok {
// log.Error("taskMsgWorker.LruCache.Get failed: ", nmSignMsg.TaskUuid+models.ReqHash)
// log.Error("taskMsgWorker.LruCache.Get failed: ", nmSignMsg.TaskUuid+models.ReqHash)
//}
//}
respHash
,
_
:=
taskMsgWorker
.
LruCache
.
Get
(
nm
Sign
Msg
.
TaskId
+
models
.
RespHash
)
respHash
,
_
:=
taskMsgWorker
.
LruCache
.
Get
(
nm
Result
Msg
.
TaskId
+
models
.
RespHash
)
//if !ok {
//if !ok {
// log.Error("taskMsgWorker.LruCache.Get failed: ", nmSignMsg.TaskUuid+models.RespHash)
// log.Error("taskMsgWorker.LruCache.Get failed: ", nmSignMsg.TaskUuid+models.RespHash)
//}
//}
taskType
,
_
:=
taskMsgWorker
.
LruCache
.
Get
(
nm
Sign
Msg
.
TaskId
+
models
.
TaskType
)
taskType
,
_
:=
taskMsgWorker
.
LruCache
.
Get
(
nm
Result
Msg
.
TaskId
+
models
.
TaskType
)
proofWorker
.
ProductProof
(
nm
SignMsg
.
TaskId
,
nmSignMsg
.
Workload
,
taskType
.
(
uint64
),
reqHash
.
([]
byte
),
respHash
.
([]
byte
),
containerSign
.
([]
byte
),
minerSign
.
([]
byte
),
nmSignMsg
.
ManagerSignature
)
proofWorker
.
ProductProof
(
nm
ResultMsg
,
taskType
.
(
uint64
),
reqHash
.
([]
byte
),
respHash
.
([]
byte
),
containerSign
.
([]
byte
),
minerSign
.
([]
byte
)
)
log
.
Info
(
nm
Sign
Msg
)
log
.
Info
(
nm
Result
Msg
)
continue
continue
}
}
...
...
nm/task_msg.go
View file @
dc4a4687
...
@@ -92,12 +92,10 @@ func (t *TaskHandler) SystemTaskHandler(taskMsg *nodeManagerV1.PushTaskMessage)
...
@@ -92,12 +92,10 @@ func (t *TaskHandler) SystemTaskHandler(taskMsg *nodeManagerV1.PushTaskMessage)
func
(
t
*
TaskHandler
)
ComputeTaskHandler
(
taskMsg
*
nodeManagerV1
.
PushTaskMessage
)
{
func
(
t
*
TaskHandler
)
ComputeTaskHandler
(
taskMsg
*
nodeManagerV1
.
PushTaskMessage
)
{
defer
t
.
Wg
.
Done
()
defer
t
.
Wg
.
Done
()
t
.
TaskRespBody
[
taskMsg
.
TaskId
]
=
nil
t
.
TaskRespBody
[
taskMsg
.
TaskId
]
=
nil
t
.
TaskRespHeader
[
taskMsg
.
TaskId
]
=
nil
t
.
TaskRespHeader
[
taskMsg
.
TaskId
]
=
nil
t
.
TaskExecTime
[
taskMsg
.
TaskId
]
=
0
t
.
TaskExecTime
[
taskMsg
.
TaskId
]
=
0
t
.
TaskIsSuccess
[
taskMsg
.
TaskId
]
=
false
t
.
TaskIsSuccess
[
taskMsg
.
TaskId
]
=
false
reader
:=
bytes
.
NewReader
(
taskMsg
.
TaskParam
)
taskCmd
:=
&
models
.
TaskCmd
{}
taskCmd
:=
&
models
.
TaskCmd
{}
err
:=
json
.
Unmarshal
(
bytes
.
NewBufferString
(
taskMsg
.
TaskCmd
)
.
Bytes
(),
taskCmd
)
err
:=
json
.
Unmarshal
(
bytes
.
NewBufferString
(
taskMsg
.
TaskCmd
)
.
Bytes
(),
taskCmd
)
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -193,9 +191,10 @@ func (t *TaskHandler) ComputeTaskHandler(taskMsg *nodeManagerV1.PushTaskMessage)
...
@@ -193,9 +191,10 @@ func (t *TaskHandler) ComputeTaskHandler(taskMsg *nodeManagerV1.PushTaskMessage)
}
}
startBeforeTaskTime
:=
time
.
Now
()
startBeforeTaskTime
:=
time
.
Now
()
post
,
err
:=
t
.
HttpClient
.
Post
(
taskCmd
.
ApiUrl
,
"application/json"
,
reader
)
reqContainerBody
:=
bytes
.
NewReader
(
taskMsg
.
TaskParam
)
post
,
err
:=
t
.
HttpClient
.
Post
(
taskCmd
.
ApiUrl
,
"application/json"
,
reqContainerBody
)
if
err
!=
nil
{
if
err
!=
nil
{
log
.
Error
(
"Http client post error: "
,
err
)
log
.
WithField
(
"error:"
,
err
)
.
Error
(
"Http client post request container failed"
)
return
return
}
}
endAfterTaskTime
:=
time
.
Since
(
startBeforeTaskTime
)
endAfterTaskTime
:=
time
.
Since
(
startBeforeTaskTime
)
...
@@ -224,23 +223,11 @@ func (t *TaskHandler) ComputeTaskHandler(taskMsg *nodeManagerV1.PushTaskMessage)
...
@@ -224,23 +223,11 @@ func (t *TaskHandler) ComputeTaskHandler(taskMsg *nodeManagerV1.PushTaskMessage)
log
.
Info
(
"received computeTask--------------------------------"
)
log
.
Info
(
"received computeTask--------------------------------"
)
}
}
func
(
t
*
TaskHandler
)
StandardTaskHandler
(
taskMsg
*
nodeManagerV1
.
PushTaskMessage
)
{
defer
t
.
Wg
.
Done
()
t
.
TaskRespBody
[
taskMsg
.
TaskId
]
=
nil
t
.
TaskRespHeader
[
taskMsg
.
TaskId
]
=
nil
t
.
TaskExecTime
[
taskMsg
.
TaskId
]
=
0
t
.
TaskIsSuccess
[
taskMsg
.
TaskId
]
=
false
//todo: 执行标准任务
t
.
IsExecStandardTask
=
false
log
.
Info
(
"received customTask--------------------------------"
)
}
func
(
t
*
TaskHandler
)
CustomTaskHandler
(
taskMsg
*
nodeManagerV1
.
PushTaskMessage
)
{
func
(
t
*
TaskHandler
)
CustomTaskHandler
(
taskMsg
*
nodeManagerV1
.
PushTaskMessage
)
{
defer
t
.
Wg
.
Done
()
defer
t
.
Wg
.
Done
()
_
,
err
:=
t
.
DockerOp
.
PsImages
()
_
,
err
:=
t
.
DockerOp
.
PsImages
()
if
err
!=
nil
{
if
err
!=
nil
{
log
.
Error
(
"custom
e
task handler docker op ps images failed: "
,
err
)
log
.
Error
(
"custom task handler docker op ps images failed: "
,
err
)
return
return
}
}
log
.
Info
(
"received customTask--------------------------------"
)
log
.
Info
(
"received customTask--------------------------------"
)
...
...
operate/client.go
View file @
dc4a4687
...
@@ -29,7 +29,7 @@ func ConnValidatorGrpc(endpoint string) witnessv1.WitnessServiceClient {
...
@@ -29,7 +29,7 @@ func ConnValidatorGrpc(endpoint string) witnessv1.WitnessServiceClient {
func
GetDockerClient
()
(
*
client
.
Client
,
error
)
{
func
GetDockerClient
()
(
*
client
.
Client
,
error
)
{
dockerClient
,
err
:=
client
.
NewClientWithOpts
(
client
.
WithAPIVersionNegotiation
(),
client
.
WithHost
(
conf
.
GetConfig
()
.
DockerServer
))
dockerClient
,
err
:=
client
.
NewClientWithOpts
(
client
.
WithAPIVersionNegotiation
(),
client
.
WithHost
(
conf
.
GetConfig
()
.
DockerServer
))
if
err
!=
nil
{
if
err
!=
nil
{
log
.
Error
(
"Error create docker client: "
,
err
)
log
.
WithField
(
"error"
,
err
)
.
Error
(
"create docker client failed"
)
return
nil
,
err
return
nil
,
err
}
}
return
dockerClient
,
nil
return
dockerClient
,
nil
...
@@ -42,7 +42,7 @@ func connGrpc(endpoint string) *grpc.ClientConn {
...
@@ -42,7 +42,7 @@ func connGrpc(endpoint string) *grpc.ClientConn {
grpc
.
MaxCallSendMsgSize
(
1024
*
1024
*
1024
)),
grpc
.
MaxCallSendMsgSize
(
1024
*
1024
*
1024
)),
)
)
if
err
!=
nil
{
if
err
!=
nil
{
log
.
Error
(
"Dial error:"
,
err
)
log
.
WithField
(
"error:"
,
err
)
.
Error
(
"Connect node manager failed"
)
return
nil
return
nil
}
}
return
dial
return
dial
...
...
operate/docker.go
View file @
dc4a4687
...
@@ -74,7 +74,6 @@ func (d *DockerOp) GetContainerSign(taskMsg *nodemanagerv1.PushTaskMessage, task
...
@@ -74,7 +74,6 @@ func (d *DockerOp) GetContainerSign(taskMsg *nodemanagerv1.PushTaskMessage, task
log
.
Errorf
(
"failed to unmarshal task cmd: %s"
,
err
.
Error
())
log
.
Errorf
(
"failed to unmarshal task cmd: %s"
,
err
.
Error
())
return
nil
return
nil
}
}
// TODO: 请求容器API
request
,
err
:=
http
.
NewRequest
(
"POST"
,
d
.
SignApi
[
taskCmd
.
ImageName
],
bytes
.
NewReader
(
body
))
request
,
err
:=
http
.
NewRequest
(
"POST"
,
d
.
SignApi
[
taskCmd
.
ImageName
],
bytes
.
NewReader
(
body
))
if
err
!=
nil
{
if
err
!=
nil
{
log
.
Error
(
"New http request failed: "
,
err
)
log
.
Error
(
"New http request failed: "
,
err
)
...
...
test/util_test.go
View file @
dc4a4687
...
@@ -19,7 +19,6 @@ func TestGenerateRandomNumber(t *testing.T) {
...
@@ -19,7 +19,6 @@ func TestGenerateRandomNumber(t *testing.T) {
args
args
args
args
want
*
big
.
Int
want
*
big
.
Int
}{
}{
// TODO: Add test cases.
{
{
"randomPrvTest"
,
"randomPrvTest"
,
args
{
args
{
...
...
utils/util.go
View file @
dc4a4687
...
@@ -13,7 +13,7 @@ import (
...
@@ -13,7 +13,7 @@ import (
"os"
"os"
)
)
const
K
EYPATH_PWD
=
"keystore"
const
K
eypadPwd
=
"keystore"
func
GenerateRandomNumber
(
privateKey
*
ecdsa
.
PrivateKey
,
length
int64
)
*
big
.
Int
{
func
GenerateRandomNumber
(
privateKey
*
ecdsa
.
PrivateKey
,
length
int64
)
*
big
.
Int
{
// 生成一个随机数
// 生成一个随机数
...
@@ -27,7 +27,7 @@ func GenerateRandomNumber(privateKey *ecdsa.PrivateKey, length int64) *big.Int {
...
@@ -27,7 +27,7 @@ func GenerateRandomNumber(privateKey *ecdsa.PrivateKey, length int64) *big.Int {
}
}
func
GetPrv
()
(
*
ecdsa
.
PrivateKey
,
error
)
{
func
GetPrv
()
(
*
ecdsa
.
PrivateKey
,
error
)
{
if
_
,
err
:=
os
.
Stat
(
K
EYPATH_PWD
);
os
.
IsNotExist
(
err
)
{
if
_
,
err
:=
os
.
Stat
(
K
eypadPwd
);
os
.
IsNotExist
(
err
)
{
//log.Info("Keystore not found. Generating a new one...")
//log.Info("Keystore not found. Generating a new one...")
// 生成私钥
// 生成私钥
privateKey
,
err
:=
generatePrivateKey
()
privateKey
,
err
:=
generatePrivateKey
()
...
@@ -61,8 +61,8 @@ func generatePrivateKey() (*ecdsa.PrivateKey, error) {
...
@@ -61,8 +61,8 @@ func generatePrivateKey() (*ecdsa.PrivateKey, error) {
}
}
func
savePrivateKey
(
privateKey
*
ecdsa
.
PrivateKey
)
error
{
func
savePrivateKey
(
privateKey
*
ecdsa
.
PrivateKey
)
error
{
ks
:=
keystore
.
NewKeyStore
(
K
EYPATH_PWD
,
keystore
.
StandardScryptN
,
keystore
.
StandardScryptP
)
ks
:=
keystore
.
NewKeyStore
(
K
eypadPwd
,
keystore
.
StandardScryptN
,
keystore
.
StandardScryptP
)
account
,
err
:=
ks
.
ImportECDSA
(
privateKey
,
K
EYPATH_PWD
)
account
,
err
:=
ks
.
ImportECDSA
(
privateKey
,
K
eypadPwd
)
if
err
!=
nil
{
if
err
!=
nil
{
log
.
Fatal
(
err
)
log
.
Fatal
(
err
)
}
}
...
@@ -71,18 +71,18 @@ func savePrivateKey(privateKey *ecdsa.PrivateKey) error {
...
@@ -71,18 +71,18 @@ func savePrivateKey(privateKey *ecdsa.PrivateKey) error {
}
}
func
readPrivateKey
()
(
*
ecdsa
.
PrivateKey
,
error
)
{
func
readPrivateKey
()
(
*
ecdsa
.
PrivateKey
,
error
)
{
file
,
err
:=
ioutil
.
ReadDir
(
K
EYPATH_PWD
)
file
,
err
:=
ioutil
.
ReadDir
(
K
eypadPwd
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
for
_
,
info
:=
range
file
{
for
_
,
info
:=
range
file
{
keystoreFile
:=
fmt
.
Sprintf
(
"%s%s%s"
,
K
EYPATH_PWD
,
"/"
,
info
.
Name
())
keystoreFile
:=
fmt
.
Sprintf
(
"%s%s%s"
,
K
eypadPwd
,
"/"
,
info
.
Name
())
jsonBytes
,
err
:=
ioutil
.
ReadFile
(
keystoreFile
)
jsonBytes
,
err
:=
ioutil
.
ReadFile
(
keystoreFile
)
if
err
!=
nil
{
if
err
!=
nil
{
log
.
Error
(
"import ecdsa keystore error: "
,
err
)
log
.
Error
(
"import ecdsa keystore error: "
,
err
)
continue
continue
}
}
key
,
err
:=
keystore
.
DecryptKey
(
jsonBytes
,
K
EYPATH_PWD
)
key
,
err
:=
keystore
.
DecryptKey
(
jsonBytes
,
K
eypadPwd
)
if
err
!=
nil
{
if
err
!=
nil
{
log
.
Error
(
"keystore decrypt key failed:"
,
err
)
log
.
Error
(
"keystore decrypt key failed:"
,
err
)
continue
continue
...
...
validator/validator.go
View file @
dc4a4687
...
@@ -7,6 +7,7 @@ import (
...
@@ -7,6 +7,7 @@ import (
"example.com/m/db"
"example.com/m/db"
"example.com/m/log"
"example.com/m/log"
"example.com/m/operate"
"example.com/m/operate"
nodemanagerv1
"github.com/odysseus/odysseus-protocol/gen/proto/go/nodemanager/v1"
witnessV1
"github.com/odysseus/odysseus-protocol/gen/proto/go/witness/v1"
witnessV1
"github.com/odysseus/odysseus-protocol/gen/proto/go/witness/v1"
"google.golang.org/grpc"
"google.golang.org/grpc"
"math/rand"
"math/rand"
...
@@ -27,17 +28,18 @@ func NewProofWorker() *ProofWorker {
...
@@ -27,17 +28,18 @@ func NewProofWorker() *ProofWorker {
}
}
}
}
func
(
p
*
ProofWorker
)
ProductProof
(
taskId
string
,
workLoad
,
taskType
uint64
,
reqHash
[]
byte
,
respHash
[]
byte
,
containerSign
,
minerSign
,
nm
Sign
[]
byte
)
{
func
(
p
*
ProofWorker
)
ProductProof
(
nmResultMsg
*
nodemanagerv1
.
ProofTaskResult
,
taskType
uint64
,
reqHash
[]
byte
,
respHash
[]
byte
,
containerSign
,
miner
Sign
[]
byte
)
{
log
.
Info
(
"ProductProof received workLoad:"
,
workL
oad
)
log
.
Info
(
"ProductProof received workLoad:"
,
nmResultMsg
.
Workl
oad
)
p
.
productProofChan
<-
&
witnessV1
.
Proof
{
p
.
productProofChan
<-
&
witnessV1
.
Proof
{
Workload
:
workLoad
,
Workload
:
nmResultMsg
.
Workload
,
TaskId
:
taskId
,
TaskId
:
nmResultMsg
.
TaskId
,
TaskType
:
taskType
,
ReqHash
:
reqHash
,
ReqHash
:
reqHash
,
RespHash
:
respHash
,
RespHash
:
respHash
,
ManagerSignature
:
nmResultMsg
.
ManagerSignature
,
ContainerSignature
:
containerSign
,
ContainerSignature
:
containerSign
,
MinerSignature
:
minerSign
,
MinerSignature
:
minerSign
,
ManagerSignature
:
nmSign
,
TaskType
:
taskType
,
Timestamp
:
nmResultMsg
.
Timestamp
,
}
}
}
}
...
@@ -68,10 +70,14 @@ func (p *ProofWorker) ProofStorage() {
...
@@ -68,10 +70,14 @@ func (p *ProofWorker) ProofStorage() {
for
{
for
{
select
{
select
{
case
<-
timer
.
C
:
case
<-
timer
.
C
:
min
:=
time
.
Now
()
.
Minute
()
nowTime
:=
time
.
Now
()
min
:=
nowTime
.
Minute
()
if
min
==
0
{
if
min
==
0
{
randomMinute
=
getRandInt
()
randomMinute
=
getRandInt
()
}
}
if
nowTime
.
Hour
()
==
23
{
randomMinute
=
59
}
// 检查是否在指定时间范围内(40-59分钟)
// 检查是否在指定时间范围内(40-59分钟)
if
min
>=
40
&&
min
<=
59
&&
min
==
randomMinute
{
if
min
>=
40
&&
min
<=
59
&&
min
==
randomMinute
{
proofs
:=
make
([]
*
witnessV1
.
Proof
,
0
)
proofs
:=
make
([]
*
witnessV1
.
Proof
,
0
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment