code reorganization
This commit is contained in:
parent
2078467db4
commit
47fda6a514
@ -44,10 +44,20 @@ func main() {
|
|||||||
|
|
||||||
go proxy.Start_server(listen_addr)
|
go proxy.Start_server(listen_addr)
|
||||||
|
|
||||||
// Wait for first miner connection to grad wallet address
|
// Wait for first miner connection to grab wallet address
|
||||||
for proxy.CountMiners() < 1 {
|
for proxy.CountMiners() < 1 {
|
||||||
time.Sleep(time.Second * 1)
|
time.Sleep(time.Second * 1)
|
||||||
}
|
}
|
||||||
proxy.Start_client(daemon_address, proxy.Address)
|
go proxy.Start_client(daemon_address, proxy.Address)
|
||||||
|
|
||||||
|
var current_time time.Time
|
||||||
|
last_time := time.Now()
|
||||||
|
//fmt.Printf("%4d miners connected\t\tBlocks:%4d\tMiniblocks:%4d\tRejected:%4d\n", proxy.CountMiners(), proxy.Blocks, proxy.Minis, proxy.Rejected)
|
||||||
|
for {
|
||||||
|
current_time = time.Now()
|
||||||
|
if current_time.Sub(last_time) >= time.Minute {
|
||||||
|
fmt.Printf("%4d miners connected\t\tBlocks:%4d\tMiniblocks:%4d\tRejected:%4d\n", proxy.CountMiners(), proxy.Blocks, proxy.Minis, proxy.Rejected)
|
||||||
|
last_time = time.Now()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
3
go.mod
3
go.mod
@ -3,6 +3,7 @@ module derohe-proxy
|
|||||||
go 1.18
|
go 1.18
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
github.com/chzyer/readline v1.5.0
|
||||||
github.com/deroproject/derohe v0.0.0-20220502125456-607af6dfdc9a
|
github.com/deroproject/derohe v0.0.0-20220502125456-607af6dfdc9a
|
||||||
github.com/deroproject/graviton v0.0.0-20220130070622-2c248a53b2e1
|
github.com/deroproject/graviton v0.0.0-20220130070622-2c248a53b2e1
|
||||||
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815
|
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815
|
||||||
@ -28,7 +29,7 @@ require (
|
|||||||
go.uber.org/zap v1.21.0 // indirect
|
go.uber.org/zap v1.21.0 // indirect
|
||||||
golang.org/x/crypto v0.0.0-20210513122933-cd7d49e622d5 // indirect
|
golang.org/x/crypto v0.0.0-20210513122933-cd7d49e622d5 // indirect
|
||||||
golang.org/x/net v0.0.0-20210510120150-4163338589ed // indirect
|
golang.org/x/net v0.0.0-20210510120150-4163338589ed // indirect
|
||||||
golang.org/x/sys v0.0.0-20210510120138-977fb7262007 // indirect
|
golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5 // indirect
|
||||||
golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f // indirect
|
golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f // indirect
|
||||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
|
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
|
||||||
)
|
)
|
||||||
|
9
go.sum
9
go.sum
@ -6,6 +6,12 @@ github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2y
|
|||||||
github.com/caarlos0/env/v6 v6.9.1 h1:zOkkjM0F6ltnQ5eBX6IPI41UP/KDGEK7rRPwGCNos8k=
|
github.com/caarlos0/env/v6 v6.9.1 h1:zOkkjM0F6ltnQ5eBX6IPI41UP/KDGEK7rRPwGCNos8k=
|
||||||
github.com/caarlos0/env/v6 v6.9.1/go.mod h1:hvp/ryKXKipEkcuYjs9mI4bBCg+UI0Yhgm5Zu0ddvwc=
|
github.com/caarlos0/env/v6 v6.9.1/go.mod h1:hvp/ryKXKipEkcuYjs9mI4bBCg+UI0Yhgm5Zu0ddvwc=
|
||||||
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
|
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
|
||||||
|
github.com/chzyer/logex v1.2.0 h1:+eqR0HfOetur4tgnC8ftU5imRnhi4te+BadWS95c5AM=
|
||||||
|
github.com/chzyer/logex v1.2.0/go.mod h1:9+9sk7u7pGNWYMkh0hdiL++6OeibzJccyQU4p4MedaY=
|
||||||
|
github.com/chzyer/readline v1.5.0 h1:lSwwFrbNviGePhkewF1az4oLmcwqCZijQ2/Wi3BGHAI=
|
||||||
|
github.com/chzyer/readline v1.5.0/go.mod h1:x22KAscuvRqlLoK9CsoYsmxoXZMMFVyOl86cAH8qUic=
|
||||||
|
github.com/chzyer/test v0.0.0-20210722231415-061457976a23 h1:dZ0/VyGgQdVGAss6Ju0dt5P0QltE0SFY5Woh6hbIfiQ=
|
||||||
|
github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
@ -82,8 +88,9 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w
|
|||||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20210510120138-977fb7262007 h1:gG67DSER+11cZvqIMb8S8bt0vZtiN6xWYARwirrOSfE=
|
|
||||||
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5 h1:y/woIyUBFbpQGKS0u1aHF/40WUDnek3fPOyD08H5Vng=
|
||||||
|
golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
|
@ -2,15 +2,20 @@ package proxy
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"net/url"
|
"net/url"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/deroproject/derohe/rpc"
|
||||||
"github.com/gorilla/websocket"
|
"github.com/gorilla/websocket"
|
||||||
)
|
)
|
||||||
|
|
||||||
var connection *websocket.Conn
|
var connection *websocket.Conn
|
||||||
|
var Blocks uint64
|
||||||
|
var Minis uint64
|
||||||
|
var Rejected uint64
|
||||||
|
|
||||||
// proxy-client
|
// proxy-client
|
||||||
func Start_client(v string, w string) {
|
func Start_client(v string, w string) {
|
||||||
@ -35,6 +40,8 @@ func Start_client(v string, w string) {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var params rpc.GetBlockTemplate_Result
|
||||||
|
|
||||||
for {
|
for {
|
||||||
msg_type, recv_data, err := connection.ReadMessage()
|
msg_type, recv_data, err := connection.ReadMessage()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -45,12 +52,19 @@ func Start_client(v string, w string) {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
go SendTemplatesToNode(recv_data)
|
if err = json.Unmarshal(recv_data, ¶ms); err != nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
Blocks = params.Blocks
|
||||||
|
Minis = params.MiniBlocks
|
||||||
|
Rejected = params.Rejected
|
||||||
|
|
||||||
|
go SendTemplateToNodes(recv_data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func SendToDaemon(buffer []byte) {
|
func SendToDaemon(buffer []byte) {
|
||||||
connection.SetWriteDeadline(time.Now().Add(100 * time.Millisecond))
|
|
||||||
connection.WriteMessage(websocket.TextMessage, buffer)
|
connection.WriteMessage(websocket.TextMessage, buffer)
|
||||||
}
|
}
|
||||||
|
@ -35,8 +35,8 @@ func edit_blob(input []byte) (output []byte) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
params.Blockhashing_blob = fmt.Sprintf("%x", mbl.Serialize())
|
params.Blockhashing_blob = fmt.Sprintf("%x", mbl.Serialize())
|
||||||
|
|
||||||
encoder := json.NewEncoder(&out)
|
encoder := json.NewEncoder(&out)
|
||||||
|
|
||||||
if err = encoder.Encode(params); err != nil {
|
if err = encoder.Encode(params); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,6 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var server *nbhttp.Server
|
var server *nbhttp.Server
|
||||||
var results uint
|
|
||||||
|
|
||||||
var memPool = sync.Pool{
|
var memPool = sync.Pool{
|
||||||
New: func() interface{} {
|
New: func() interface{} {
|
||||||
@ -95,8 +94,8 @@ func CountMiners() int {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// forward all incoming templates from daemon to all miners
|
// forward all incoming templates from daemon to all miners
|
||||||
func SendTemplatesToNode(data []byte) {
|
func SendTemplateToNodes(input []byte) {
|
||||||
var rand_nonce []byte
|
var data []byte
|
||||||
|
|
||||||
for rk, rv := range client_list {
|
for rk, rv := range client_list {
|
||||||
|
|
||||||
@ -104,13 +103,15 @@ func SendTemplatesToNode(data []byte) {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
if rand_nonce = edit_blob(data); rand_nonce != nil {
|
if nonce := edit_blob(input); nonce != nil {
|
||||||
data = rand_nonce
|
data = nonce
|
||||||
|
} else {
|
||||||
|
fmt.Println(time.Now().Format(time.Stamp), "Failed to change nonce")
|
||||||
|
data = input
|
||||||
}
|
}
|
||||||
|
|
||||||
go func(k *websocket.Conn, v *user_session) {
|
go func(k *websocket.Conn, v *user_session) {
|
||||||
defer globals.Recover(2)
|
defer globals.Recover(2)
|
||||||
fmt.Printf("%4d miners connected\r", CountMiners())
|
|
||||||
k.SetWriteDeadline(time.Now().Add(100 * time.Millisecond))
|
k.SetWriteDeadline(time.Now().Add(100 * time.Millisecond))
|
||||||
k.WriteMessage(websocket.TextMessage, data)
|
k.WriteMessage(websocket.TextMessage, data)
|
||||||
|
|
||||||
@ -151,6 +152,7 @@ func onWebsocket(w http.ResponseWriter, r *http.Request) {
|
|||||||
defer client_list_mutex.Unlock()
|
defer client_list_mutex.Unlock()
|
||||||
client_list[wsConn] = &session
|
client_list[wsConn] = &session
|
||||||
Address = address
|
Address = address
|
||||||
|
fmt.Println(time.Now().Format(time.Stamp), "Incoming connection from IP:", wsConn.RemoteAddr().String())
|
||||||
}
|
}
|
||||||
|
|
||||||
// forward results to daemon
|
// forward results to daemon
|
||||||
@ -167,16 +169,14 @@ func newUpgrader() *websocket.Upgrader {
|
|||||||
defer client_list_mutex.Unlock()
|
defer client_list_mutex.Unlock()
|
||||||
|
|
||||||
SendToDaemon(data)
|
SendToDaemon(data)
|
||||||
fmt.Println(time.Now().Format(time.Stamp), "Submitting result")
|
fmt.Println(time.Now().Format(time.Stamp), "Submitting result from miner IP:", c.RemoteAddr().String())
|
||||||
results++
|
|
||||||
fmt.Println("Submitted results:", results)
|
|
||||||
})
|
})
|
||||||
|
|
||||||
u.OnClose(func(c *websocket.Conn, err error) {
|
u.OnClose(func(c *websocket.Conn, err error) {
|
||||||
client_list_mutex.Lock()
|
client_list_mutex.Lock()
|
||||||
defer client_list_mutex.Unlock()
|
defer client_list_mutex.Unlock()
|
||||||
delete(client_list, c)
|
delete(client_list, c)
|
||||||
|
fmt.Println(time.Now().Format(time.Stamp), "Interrupted or lost connection:", c.RemoteAddr().String())
|
||||||
})
|
})
|
||||||
|
|
||||||
return u
|
return u
|
||||||
|
Loading…
Reference in New Issue
Block a user