Skip to content

Commit b035fab

Browse files
authored
feat: mining-subscribe-extranonce passthrough (#76)
2 parents 0896901 + 00c15e8 commit b035fab

3 files changed

Lines changed: 67 additions & 0 deletions

File tree

internal/resources/hashrate/proxy/stratumv1_message/mining.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@ func ParseStratumMessage(raw []byte) (interfaces.MiningMessageGeneric, error) {
5151
case MethodMiningSetExtranonce:
5252
return ParseMiningSetExtranonce(raw)
5353

54+
case MethodExtranonceSubscribe:
55+
return ParseMiningExtranonceSubscribe(raw)
56+
5457
default:
5558
if msg.Result != nil {
5659
return ParseMiningResult(raw)
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package stratumv1_message
2+
3+
import (
4+
"encoding/json"
5+
6+
"github.com/Lumerin-protocol/proxy-router/internal/resources/hashrate/proxy/interfaces"
7+
)
8+
9+
// Message: {"id":null,"method":"mining.extranonce.subscribe","params":[]}
10+
const MethodExtranonceSubscribe = "mining.extranonce.subscribe"
11+
12+
type MiningExtranonceSubscribe struct {
13+
ID *int `json:"id"`
14+
Method string `json:"method,omitempty"`
15+
Params *MiningExtranonceSubscribeParams `json:"params"`
16+
}
17+
18+
type MiningExtranonceSubscribeParams = []interface{}
19+
20+
func NewMiningExtranonceSubscribe(ID int) *MiningExtranonceSubscribe {
21+
return &MiningExtranonceSubscribe{
22+
ID: &ID,
23+
Method: MethodExtranonceSubscribe,
24+
Params: &MiningExtranonceSubscribeParams{},
25+
}
26+
}
27+
28+
func ParseMiningExtranonceSubscribe(b []byte) (*MiningExtranonceSubscribe, error) {
29+
m := &MiningExtranonceSubscribe{}
30+
return m, json.Unmarshal(b, m)
31+
}
32+
33+
func (m *MiningExtranonceSubscribe) Serialize() []byte {
34+
b, _ := json.Marshal(m)
35+
return b
36+
}
37+
38+
var _ interfaces.MiningMessageGeneric = new(MiningExtranonceSubscribe)
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package stratumv1_message
2+
3+
import (
4+
"testing"
5+
6+
"github.com/stretchr/testify/require"
7+
)
8+
9+
func TestMiningExtranonceSubscribe(t *testing.T) {
10+
msg := NewMiningExtranonceSubscribe(1)
11+
b := msg.Serialize()
12+
t.Logf("msg: %s", string(b))
13+
require.NotNil(t, b)
14+
require.Equal(t, MethodExtranonceSubscribe, msg.Method)
15+
require.Nil(t, msg.Params)
16+
}
17+
18+
func TestMiningExtranonceSubscribeParse(t *testing.T) {
19+
msg := NewMiningExtranonceSubscribe(1)
20+
b := msg.Serialize()
21+
parsed, err := ParseMiningExtranonceSubscribe(b)
22+
require.NoError(t, err)
23+
require.Equal(t, msg.Method, parsed.Method)
24+
require.Equal(t, msg.Params, parsed.Params)
25+
require.Equal(t, msg.ID, parsed.ID)
26+
}

0 commit comments

Comments
 (0)