stratumv1_message

package
v1.7.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 21, 2025 License: MIT Imports: 6 Imported by: 0

Documentation ¶

Index ¶

Constants ¶

View Source
const MethodMiningAuthorize = "mining.authorize"

Message: {"id": 2, "method": "mining.authorize", "params": ["workername", "password"]}

View Source
const MethodMiningConfigure = "mining.configure"

Message: {"method": "mining.configure","id": 1,"params": [["minimum-difficulty", "version-rolling"],{"minimum-difficulty.value": 2048, "version-rolling.mask": "1fffe000", "version-rolling.min-bit-count": 2}]} Message: {"method": "mining.configure","id": 1,"params": [["minimum-difficulty", "version-rolling", "lmr"],{"minimum-difficulty.value": 2048, "version-rolling.mask": "1fffe000", "version-rolling.min-bit-count": 2, "lmr.contract-address": "0x0"}]}

View Source
const MethodMiningMultiVersion = "mining.multi_version"

To enable multi-version needs to be >1, the number being how many bits of the version number you're allowing it to modify for ASICBOOST Message: {"id": 2510, "method": "mining.multi_version", "params": [1]}

View Source
const MethodMiningNotify = "mining.notify"

Message: {"id":null,"method":"mining.notify","params":["620e41a18","b56266ef4c94ba61562510b7656d132cacc928c50008488c0000000000000000","01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4b03795d0bfabe6d6d021f1a6edc2237ed5d6b5ce13c9b8516dcae143a5cf8a373fa0406c7ae06fb260100000000000000","181ae420062f736c7573682f00000000030f1b0a27000000001976a9147c154ed1dc59609e3d26abb2df2ea3d587cd8c4188ac00000000000000002c6a4c2952534b424c4f434b3ad6b225f8545c851f458a3f603c9a5bd63959ab646f977ff2fd8d1e2f004427dc0000000000000000266a24aa21a9ed46c37118ea57f6c2152b2f156e4df28edb997e21ea8fe5754e9a869f0287cfb800000000",["bed26bac18890c62ab48bdd913ab2b648326286607b3a159987cf36b6fe55d7e","8c39bd3ac4aeedc7b3c354008692ccb5e758a9cd9b1888a72090268365d9fbf0","00dca1b0b193f0298f155d32a9c04a79a49a2617853b787a79adc942cae74fed","fbb3b3a6bf5710f885fd377a2fde24fbb795933c9e6ceea67f91f1d90c532be2","ddd51d322b9c61621f762002dc179de1c24f4454e17943de172e24e9ad4be942","6fcffd6b0ebd01f15f57cb6ab3fabe151d757f1f71b45ef420b97b5fac0cc670","c28b6ef7c87ff5982bec0eaccb1855fff78397b2c732030dc792636a9492ba7c","afe4f418f45c78c36a848930b56323749fb7da453d557aa41c820a3170f7d20a","c61bab8479a8ada4c9761be0ce82e3183e7405b57b31925e0e411e73376fb22e","224b536c03f1379f708172970fca51160192bd8eded9cf578f7f5c3c8795eb33","fe4af4678dd3f66946738a1479627683e461bb832629a01978b4f2165490f460"],"20000004","1709a7af","62cea7e2",false]}

View Source
const MethodMiningSetDifficulty = "mining.set_difficulty"

Message: {"id":null,"method":"mining.set_difficulty","params":[8192.1234]}

View Source
const MethodMiningSetExtranonce = "mining.set_extranonce"

Message: {"id":null,"method":"mining.set_difficulty","params":[8192]}

View Source
const MethodMiningSetVersionMask = "mining.set_version_mask"

Message: {"params":["00003000"], "id":null, "method": "mining.set_version_mask"} Only used with pools that implement https://en.bitcoin.it/wiki/BIP_0310

View Source
const MethodMiningSubmit = "mining.submit"

Message: {"id": 4, "method": "mining.submit", "params": ["shev8.local", "620daf25f", "0000000000000000", "62cea7a6", "f9b40000"]}

View Source
const MethodMiningSubscribe = "mining.subscribe"

Message: {"id": 1, "method": "mining.subscribe", "params": ["cpuminer/2.5.1", "1"]}

Variables ¶

View Source
var (
	ErrStratumV1Unmarshal = errors.New("cannot unmarshal stratumv1 message")
	ErrStratumV1Unknown   = errors.New("unknown stratumv1 message")
)

Functions ¶

func ParseExtranonceSubscribeResult ¶

func ParseExtranonceSubscribeResult(m *MiningResult) (extranonce string, extranonceSize int, err error)

Parses Subscribe result message

Message: {"id":1,"result":[[["mining.set_difficulty","1"],["mining.notify","1"]],"06650601bd171b",8],"error":null}

func ParseStratumMessage ¶

func ParseStratumMessage(raw []byte) (interfaces.MiningMessageGeneric, error)

Types ¶

type MiningAuthorize ¶

type MiningAuthorize struct {
	ID     int                    `json:"id"`
	Method string                 `json:"method,omitempty"`
	Params *miningAuthorizeParams `json:"params"`
}

func NewMiningAuthorize ¶

func NewMiningAuthorize(ID int, minerID string, password string) *MiningAuthorize

func ParseMiningAuthorize ¶

func ParseMiningAuthorize(b []byte) (*MiningAuthorize, error)

func (*MiningAuthorize) GetID ¶

func (m *MiningAuthorize) GetID() int

func (*MiningAuthorize) GetPassword ¶

func (m *MiningAuthorize) GetPassword() string

func (*MiningAuthorize) GetUserName ¶

func (m *MiningAuthorize) GetUserName() string

func (*MiningAuthorize) Serialize ¶

func (m *MiningAuthorize) Serialize() []byte

func (*MiningAuthorize) SetID ¶

func (m *MiningAuthorize) SetID(ID int)

func (*MiningAuthorize) SetPassword ¶

func (m *MiningAuthorize) SetPassword(pwd string)

func (*MiningAuthorize) SetUserName ¶

func (m *MiningAuthorize) SetUserName(ID string)

type MiningConfigure ¶

type MiningConfigure struct {
	ID     int                    `json:"id"`
	Method string                 `json:"method,omitempty"`
	Params *miningConfigureParams `json:"params"`
	// contains filtered or unexported fields
}

func NewMiningConfigure ¶

func NewMiningConfigure(ID int, extensions *MiningConfigureExtensionParams) *MiningConfigure

func ParseMiningConfigure ¶

func ParseMiningConfigure(b []byte) (*MiningConfigure, error)

func (*MiningConfigure) GetID ¶

func (m *MiningConfigure) GetID() int

func (*MiningConfigure) GetLMRContractAddress ¶

func (m *MiningConfigure) GetLMRContractAddress() string

func (*MiningConfigure) GetMinimumDifficulty ¶

func (m *MiningConfigure) GetMinimumDifficulty() int

func (*MiningConfigure) GetVersionRolling ¶

func (m *MiningConfigure) GetVersionRolling() (string, int)

func (*MiningConfigure) Serialize ¶

func (m *MiningConfigure) Serialize() []byte

func (*MiningConfigure) SetID ¶

func (m *MiningConfigure) SetID(ID int)

func (*MiningConfigure) SetLMRContractAddress ¶

func (m *MiningConfigure) SetLMRContractAddress(LMRContractAddress string)

func (*MiningConfigure) SetMinimumDifficulty ¶

func (m *MiningConfigure) SetMinimumDifficulty(minimumDifficulty int)

func (*MiningConfigure) SetVersionRolling ¶

func (m *MiningConfigure) SetVersionRolling(mask string, minBitCount int)

type MiningConfigureExtensionParams ¶

type MiningConfigureExtensionParams struct {
	MinimumDifficulty         int    `json:"minimum-difficulty.value,omitempty"`
	VersionRollingMask        string `json:"version-rolling.mask,omitempty"`
	VersionRollingMinBitCount int    `json:"version-rolling.min-bit-count,omitempty"`
	LMRContractAddress        string `json:"lmr.contract-address,omitempty"`
}

type MiningConfigureResult ¶

type MiningConfigureResult struct {
	ID     int                         `json:"id"`
	Result miningConfigureResultResult `json:"result"`
	Error  miningConfigureResultError  `json:"error,omitempty"`
}

func NewMiningConfigureResult ¶

func NewMiningConfigureResult(ID int, versionRolling bool, versionRollingMask string) *MiningConfigureResult

func ParseMiningConfigureResult ¶

func ParseMiningConfigureResult(b []byte) (*MiningConfigureResult, error)

func ToMiningConfigureResult ¶

func ToMiningConfigureResult(m *MiningResult) (*MiningConfigureResult, error)

func (*MiningConfigureResult) GetError ¶

func (m *MiningConfigureResult) GetError() string

Returns unparsed error field (json) TODO: parse error code and message correctly

func (*MiningConfigureResult) GetID ¶

func (m *MiningConfigureResult) GetID() int

func (*MiningConfigureResult) GetVersionRolling ¶

func (m *MiningConfigureResult) GetVersionRolling() bool

func (*MiningConfigureResult) GetVersionRollingMask ¶

func (m *MiningConfigureResult) GetVersionRollingMask() string

func (*MiningConfigureResult) IsError ¶

func (m *MiningConfigureResult) IsError() bool

func (*MiningConfigureResult) Serialize ¶

func (m *MiningConfigureResult) Serialize() []byte

func (*MiningConfigureResult) SetID ¶

func (m *MiningConfigureResult) SetID(ID int)

type MiningGeneric ¶

type MiningGeneric struct {
	ID     *int            `json:"id"`
	Method string          `json:"method,omitempty"`
	Params json.RawMessage `json:"params,omitempty"`
	Result json.RawMessage `json:"result,omitempty"`
	Error  json.RawMessage `json:"error,omitempty"`
}

func ParseGenericMessage ¶

func ParseGenericMessage(b []byte) (*MiningGeneric, error)

func (*MiningGeneric) Serialize ¶

func (m *MiningGeneric) Serialize() []byte

type MiningMultiVersion ¶

type MiningMultiVersion struct {
	ID     int                       `json:"id"`
	Method string                    `json:"method,omitempty"`
	Params *miningMultiVersionParams `json:"params"`
}

func NewMiningMultiVersion ¶

func NewMiningMultiVersion(version int) *MiningMultiVersion

func ParseMiningMultiVersion ¶

func ParseMiningMultiVersion(b []byte) (*MiningMultiVersion, error)

func (*MiningMultiVersion) GetID ¶

func (m *MiningMultiVersion) GetID() int

func (*MiningMultiVersion) GetVersion ¶

func (m *MiningMultiVersion) GetVersion() int

func (*MiningMultiVersion) Serialize ¶

func (m *MiningMultiVersion) Serialize() []byte

func (*MiningMultiVersion) SetID ¶

func (m *MiningMultiVersion) SetID(ID int)

func (*MiningMultiVersion) SetVersion ¶

func (m *MiningMultiVersion) SetVersion(version int)

type MiningNotify ¶

type MiningNotify struct {
	ID     *int               `json:"id"` // LuxOS firmware expects it to be set to null
	Method string             `json:"method"`
	Params [9]json.RawMessage `json:"params"`
}

func ParseMiningNotify ¶

func ParseMiningNotify(b []byte) (*MiningNotify, error)

func (*MiningNotify) Copy ¶

func (m *MiningNotify) Copy() *MiningNotify

func (*MiningNotify) GetCleanJobs ¶

func (m *MiningNotify) GetCleanJobs() bool

func (*MiningNotify) GetGen1 ¶

func (m *MiningNotify) GetGen1() string

func (*MiningNotify) GetGen2 ¶

func (m *MiningNotify) GetGen2() string

func (*MiningNotify) GetJobID ¶

func (m *MiningNotify) GetJobID() string

func (*MiningNotify) GetMerkel ¶

func (m *MiningNotify) GetMerkel() []interface{}

func (*MiningNotify) GetNbits ¶

func (m *MiningNotify) GetNbits() string

func (*MiningNotify) GetNtime ¶

func (m *MiningNotify) GetNtime() string

func (*MiningNotify) GetPrevBlockHash ¶

func (m *MiningNotify) GetPrevBlockHash() string

func (*MiningNotify) GetVersion ¶

func (m *MiningNotify) GetVersion() string

func (*MiningNotify) Serialize ¶

func (m *MiningNotify) Serialize() []byte

func (*MiningNotify) SetCleanJobs ¶

func (m *MiningNotify) SetCleanJobs(shouldClean bool)

func (*MiningNotify) SetGen1 ¶

func (m *MiningNotify) SetGen1(gen1 string)

func (*MiningNotify) SetJobID ¶

func (m *MiningNotify) SetJobID(ID string)

func (*MiningNotify) SetPrevBlockHash ¶

func (m *MiningNotify) SetPrevBlockHash(hash string)

type MiningResult ¶

type MiningResult struct {
	ID     int               `json:"id"`
	Result json.RawMessage   `json:"result"`
	Error  MiningResultError `json:"error"`
}

Message: {"id":47,"result":true,"error":null} Message: {"id":1,"result":[[["mining.set_difficulty","1"],["mining.notify","1"]],"06650601bd171b",8],"error":null} Message: {"id":4,"result":null,"error":[-5,"Too low difficulty",null]}

func NewMiningResultDuplicatedShare ¶

func NewMiningResultDuplicatedShare(ID int) *MiningResult

func NewMiningResultFalse ¶

func NewMiningResultFalse(ID int) *MiningResult

func NewMiningResultJobNotFound ¶

func NewMiningResultJobNotFound(ID int) *MiningResult

TODO: verify error codes

func NewMiningResultLowDifficulty ¶

func NewMiningResultLowDifficulty(ID int) *MiningResult

func NewMiningResultSuccess ¶

func NewMiningResultSuccess(ID int) *MiningResult

func ParseMiningResult ¶

func ParseMiningResult(b []byte) (*MiningResult, error)

func (*MiningResult) Copy ¶

func (m *MiningResult) Copy() *MiningResult

func (*MiningResult) GetError ¶

func (m *MiningResult) GetError() string

Returns unparsed error field (json) TODO: parse error code and message correctly

func (*MiningResult) GetID ¶

func (m *MiningResult) GetID() int

func (*MiningResult) IsError ¶

func (m *MiningResult) IsError() bool

func (*MiningResult) Serialize ¶

func (m *MiningResult) Serialize() []byte

func (*MiningResult) SetID ¶

func (m *MiningResult) SetID(ID int)

type MiningResultError ¶

type MiningResultError = []json.RawMessage // data of different types: int and string

type MiningSetDifficulty ¶

type MiningSetDifficulty struct {
	ID     *int                       `json:"id"` // LuxOS firmware expects it to be set to null
	Method string                     `json:"method,omitempty"`
	Params *miningSetDifficultyParams `json:"params"`
}

func NewMiningSetDifficulty ¶

func NewMiningSetDifficulty(difficulty float64) *MiningSetDifficulty

func ParseMiningSetDifficulty ¶

func ParseMiningSetDifficulty(b []byte) (*MiningSetDifficulty, error)

func (*MiningSetDifficulty) Copy ¶

func (*MiningSetDifficulty) GetDifficulty ¶

func (m *MiningSetDifficulty) GetDifficulty() float64

func (*MiningSetDifficulty) Serialize ¶

func (m *MiningSetDifficulty) Serialize() []byte

func (*MiningSetDifficulty) SetDifficulty ¶

func (m *MiningSetDifficulty) SetDifficulty(difficulty float64)

type MiningSetExtranonce ¶

type MiningSetExtranonce struct {
	ID     *int                       `json:"id"` // LuxOS firmware expects it to be set to null
	Method string                     `json:"method,omitempty"`
	Params *miningSetExtranonceParams `json:"params"`
}

func NewMiningSetExtranonce ¶

func NewMiningSetExtranonce(extranonce string, size int) *MiningSetExtranonce

func ParseMiningSetExtranonce ¶

func ParseMiningSetExtranonce(b []byte) (*MiningSetExtranonce, error)

func (*MiningSetExtranonce) GetExtranonce ¶

func (m *MiningSetExtranonce) GetExtranonce() (extranonce1 string, extranonce2size int)

func (*MiningSetExtranonce) Serialize ¶

func (m *MiningSetExtranonce) Serialize() []byte

func (*MiningSetExtranonce) SetExtranonce ¶

func (m *MiningSetExtranonce) SetExtranonce(extranonce string, size int)

type MiningSetVersionMask ¶

type MiningSetVersionMask struct {
	ID     *int                        `json:"id"` // LuxOS firmware expects it to be set to null
	Method string                      `json:"method,omitempty"`
	Params *miningSetVersionMaskParams `json:"params"`
}

func NewMiningSetVersionMask ¶

func NewMiningSetVersionMask(versionMask string) *MiningSetVersionMask

func ParseMiningSetVersionMask ¶

func ParseMiningSetVersionMask(b []byte) (*MiningSetVersionMask, error)

func (*MiningSetVersionMask) GetVersionMask ¶

func (m *MiningSetVersionMask) GetVersionMask() string

func (*MiningSetVersionMask) Serialize ¶

func (m *MiningSetVersionMask) Serialize() []byte

func (*MiningSetVersionMask) SetVersionMask ¶

func (m *MiningSetVersionMask) SetVersionMask(versionMask string, size int)

type MiningSubmit ¶

type MiningSubmit struct {
	ID     int      `json:"id"`
	Method string   `json:"method,omitempty"`
	Params []string `json:"params"` // worker_name, job_id, extranonce2, ntime, nonce and optional version_bits (BIP_0310)
}

func NewMiningSubmit ¶

func NewMiningSubmit(workerName string, jobId string, extranonce2 string, ntime string, nonce string) *MiningSubmit

func ParseMiningSubmit ¶

func ParseMiningSubmit(b []byte) (*MiningSubmit, error)

func (*MiningSubmit) GetExtraNonce2 ¶

func (m *MiningSubmit) GetExtraNonce2() string

func (*MiningSubmit) GetID ¶

func (m *MiningSubmit) GetID() int

func (*MiningSubmit) GetJobId ¶

func (m *MiningSubmit) GetJobId() string

func (*MiningSubmit) GetNonce ¶

func (m *MiningSubmit) GetNonce() string

func (*MiningSubmit) GetNtime ¶

func (m *MiningSubmit) GetNtime() string

func (*MiningSubmit) GetUserName ¶

func (m *MiningSubmit) GetUserName() string

func (*MiningSubmit) GetVmask ¶

func (m *MiningSubmit) GetVmask() string

func (*MiningSubmit) Serialize ¶

func (m *MiningSubmit) Serialize() []byte

func (*MiningSubmit) SetExtraNonce2 ¶

func (m *MiningSubmit) SetExtraNonce2(xnonce2 string)

func (*MiningSubmit) SetID ¶

func (m *MiningSubmit) SetID(ID int)

func (*MiningSubmit) SetUserName ¶

func (m *MiningSubmit) SetUserName(name string)

type MiningSubscribe ¶

type MiningSubscribe struct {
	ID     int                    `json:"id"`
	Method string                 `json:"method,omitempty"`
	Params *miningSubscribeParams `json:"params"`
}

func NewMiningSubscribe ¶

func NewMiningSubscribe(id int, name string, subscriptionId string) *MiningSubscribe

func ParseMiningSubscribe ¶

func ParseMiningSubscribe(b []byte) (*MiningSubscribe, error)

func (*MiningSubscribe) GetID ¶

func (m *MiningSubscribe) GetID() int

func (*MiningSubscribe) GetUseragent ¶

func (m *MiningSubscribe) GetUseragent() string

func (*MiningSubscribe) GetWorkerNumber ¶

func (m *MiningSubscribe) GetWorkerNumber() string

func (*MiningSubscribe) Serialize ¶

func (m *MiningSubscribe) Serialize() []byte

func (*MiningSubscribe) SetID ¶

func (m *MiningSubscribe) SetID(ID int)

func (*MiningSubscribe) SetUseragent ¶

func (m *MiningSubscribe) SetUseragent(name string)

func (*MiningSubscribe) SetWorkerNumber ¶

func (m *MiningSubscribe) SetWorkerNumber(name string)

type MiningSubscribeResult ¶

type MiningSubscribeResult struct {
	ID     int                         `json:"id"`
	Result miningSubscribeResultResult `json:"result"`
	Error  miningSubscribeResultError  `json:"error"`
}

Message: {"id":1,"result":[[["mining.set_difficulty","1"],["mining.notify","1"]],"06650601bd171b",8],"error":null}

func NewMiningSubscribeResult ¶

func NewMiningSubscribeResult(ID int, extranonce1 string, size int) *MiningSubscribeResult

func ParseMiningSubscribeResult ¶

func ParseMiningSubscribeResult(b []byte) (*MiningSubscribeResult, error)

func ToMiningSubscribeResult ¶

func ToMiningSubscribeResult(m *MiningResult) (*MiningSubscribeResult, error)

func (*MiningSubscribeResult) GetError ¶

func (m *MiningSubscribeResult) GetError() string

Returns unparsed error field (json) TODO: parse error code and message correctly

func (*MiningSubscribeResult) GetExtranonce ¶

func (m *MiningSubscribeResult) GetExtranonce() (extranonce string, size int)

func (*MiningSubscribeResult) GetID ¶

func (m *MiningSubscribeResult) GetID() int

func (*MiningSubscribeResult) IsError ¶

func (m *MiningSubscribeResult) IsError() bool

func (*MiningSubscribeResult) Serialize ¶

func (m *MiningSubscribeResult) Serialize() []byte

func (*MiningSubscribeResult) SetID ¶

func (m *MiningSubscribeResult) SetID(ID int)

type MiningUnknown ¶

type MiningUnknown struct {
	ID     *int            `json:"id"`
	Method string          `json:"method,omitempty"`
	Params json.RawMessage `json:"params"`
}

func ParseMiningUnknown ¶

func ParseMiningUnknown(b []byte) (*MiningUnknown, error)

func (*MiningUnknown) GetID ¶

func (m *MiningUnknown) GetID() *int

func (*MiningUnknown) Serialize ¶

func (m *MiningUnknown) Serialize() []byte

func (*MiningUnknown) SetID ¶

func (m *MiningUnknown) SetID(ID *int)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL