溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Bytom礦池接入協(xié)議的方法是什么

發(fā)布時間:2021-12-20 16:45:47 來源:億速云 閱讀:131 作者:iii 欄目:互聯網科技

這篇文章主要講解了“Bytom礦池接入協(xié)議的方法是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Bytom礦池接入協(xié)議的方法是什么”吧!

礦機配置

固件升級

  • 兩個都要刷,先后順序沒關系

  • update_1000.tar.gz 升級時間較長,升級期間請勿斷電

配置節(jié)點

  • 測試時可以考慮切換到 testnet 分支降低難度使cpu挖礦也能出塊,./bytomd init --chain_id testnet./bytomd init --chain_id solonet

  • init/node 初始化/啟動時可以加上 -r "your/directory" 指定數據目錄,若目錄不存在則會自動新建該目錄

流程

1、初始化節(jié)點先建個賬戶、地址,不然就挖到空地址

2、礦地址支持自定義,包括 非本地錢包地址

3、API doc

4、礦池向節(jié)點 getwork

get-work 得到的 block_header 是動態(tài)壓縮變長的需要進行解析

  • 使用 golang 的話可以利用 "github.com/bytom/protocol/bc/types"block_header.go 中的函數 UnmarshalText

  • 使用別的語言的話參考 "github.com/bytom/protocol/bc/types"block.go 中的函數 UnmarshalText, readFrom, ReadVarintXXX. ReadVarintXXX 需要參考 go函數 binary.ReadUvarint

5、解析完后進行下發(fā)

  • 通信格式參考 https://github.com/Bytom/B3-Mimic/blob/master/docs/STRATUM-BTM.md - 收到任務有 login 和 礦池主動下發(fā), 沒走 getjob, 只走 login 和 池主動下發(fā) - 這倆都是用 submit 提交

  • 邏輯參考 https://github.com/Bytom/B3-Mimic/blob/master/main.go - Version, Height, Timestamp, Bits 要轉小端 - 關于 target + btc.com 分享了一段 antpool 的代碼 ~, 并說 target 用以對 bits 對應的 difficulty 放松難度,用來使礦機在單位時間內能夠有提交,然后礦池再驗證~

    var Diff1 = StringToBig("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF")

    func GetTargetHex(diff int64) string {
        padded := make([]byte, 32)
        diffBuff := new(big.Int).Div(Diff1, big.NewInt(diff)).Bytes()
        copy(padded[32-len(diffBuff):], diffBuff)
        buff := padded[0:4]
        targetHex := hex.EncodeToString(Reverse(buff))
        return targetHex
     }
  • 礦池下發(fā)的targethex是拿 標準難度(0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) / 一個難度值得出的

  • 這個值叫做礦池難度 一般會動態(tài)調整 保證礦機提交 share 的頻率是穩(wěn)定的 比如1分鐘提交三次 提交得快了就會增加這個值 慢了就會降低這個值

  • target 是 16 進制的難度,1, 1024, …..等等,和前導 0 的個數有關,動態(tài)調整用來保證礦機每分鐘至少提交三次,用來計算礦機算力以及防止礦機算力作弊 ffff3f00 對應 1024,c5a70000 對應 100001

6、提交完之后礦池需要做驗證

  • header_hash 使用 golang 的話可以利用 "github.com/bytom/protocol/bc/types"types.BlockHeader{}Hash() 使用別的語言的話參考 https://github.com/Bytom/B3-Mimic/blob/master/docs/blhr_hash_V3.go

  • 然后就要開始用 tensority 算 hash 結果 很遺憾現在 go 版本、cpp_openblas 版本、cpp_simd 版本都達不到理想的驗證效果, 如果想做一個可用的礦池目前有必要上 gpu, 可以考慮 n 卡 1050,或者阿里云服務器 P4

cpp 的 tensority 邏輯在這里,并指出了如何針對 gpu 進行優(yōu)化的建議,這樣矩陣乘法能夠跑進 2.5 ms, 整個 tensority 大概 6 ms

  • init matlist 有開銷,seed 其實 256 個區(qū)塊才改變一次, 遇到新的 seed 每次 gpu tensority 可能需要 100 ms,但做了 cache 的話 init matlist 可以忽略,可以認為每次 tensority 只需要不超過 6 ms

  • 用 golang 可以 cgo 調用 c 代碼,參考 https://github.com/Bytom/bytom/blob/dev-ts-simd/mining/tensority/algorithm.go

  • 改好 gpu 版本后可以參照這個進行調用

7、驗證通過后使用 submit-work 接口進行提交

提交的結果 也是 BlockHeader type 的

  • 使用 golang 的話可以利用 "github.com/bytom/protocol/bc/types"block_header.go 中的函數 MmarshalText

  • 使用別的語言的話參考 "github.com/bytom/protocol/bc/types"block.go 中的函數 MarshalText, WriteTo, WriteVarintXXX. WriteVarintXXX 需要參考 go函數 binary.PutUvarint

8、retarget

見上面,動態(tài)調整使礦機每分鐘提交三次

9、收益計算

批量轉賬

  • 主網地址 bm 開頭,長度普通地址42,多簽62

  • 每次發(fā)幣都會生成新的找零地址

  • bytom input有21個的限制

感謝各位的閱讀,以上就是“Bytom礦池接入協(xié)議的方法是什么”的內容了,經過本文的學習后,相信大家對Bytom礦池接入協(xié)議的方法是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI