资讯专栏INFORMATION COLUMN

Bytom矿池接入协议指南

CoffeX / 1428人阅读

摘要:比原项目仓库地址地址矿机配置固件升级两个都要刷先后顺序没关系升级时间较长,升级期间请勿断电配置节点测试时可以考虑切换到分支降低难度使挖矿也能出块,或初始化启动时可以加上指定数据目录,若目录不存在则会自动新建该目录流程初始化节点先建

比原项目仓库:

Github地址:https://github.com/Bytom/bytom

Gitee地址:https://gitee.com/BytomBlockchain/bytom

矿机配置

https://gist.github.com/HAOYUatHZ/a47400bde4a138825faef415387b532c

固件升级

https://service.bitmain.com.cn/support

两个都要刷,先后顺序没关系

update_1000.tar.gz 升级时间较长,升级期间请勿断电

配置节点

测试时可以考虑切换到 testnet 分支降低难度使cpu挖矿也能出块,./bytomd init --chain_id testnet./bytomd init --chain_id solonet

init/node 初始化/启动时可以加上 -r "your/directory" 指定数据目录,若目录不存在则会自动新建该目录

流程

1、初始化节点先建个账户、地址,不然就挖到空地址

2、矿地址支持自定义,包括 非本地钱包地址

3、API doc

4、矿池向节点 getwork

get-work 得到的 block_header 是动态压缩变长的需要进行解析

使用 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、解析完后进行下发

通信格式参考 https://github.com/Bytom/B3-Mimic/blob/master/docs/STRATUM-BTM.md - 收到任务有 login 和 矿池主动下发, 没走 getjob, 只走 login 和 池主动下发 - 这俩都是用 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
     }

矿池下发的targethex是拿 标准难度(0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) / 一个难度值得出的

这个值叫做矿池难度 一般会动态调整 保证矿机提交 share 的频率是稳定的 比如1分钟提交三次 提交得快了就会增加这个值 慢了就会降低这个值

target 是 16 进制的难度,1, 1024, …..等等,和前导 0 的个数有关,动态调整用来保证矿机每分钟至少提交三次,用来计算矿机算力以及防止矿机算力作弊 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 进行优化的建议,这样矩阵乘法能够跑进 2.5 ms, 整个 tensority 大概 6 ms

init matlist 有开销,seed 其实 256 个区块才改变一次, 遇到新的 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

见上面,动态调整使矿机每分钟提交三次

9、收益计算

批量转账

主网地址 bm 开头,长度普通地址42,多签62 工具 https://github.com/Bytom/bytom/tree/master/tools/sendbulktx

每次发币都会生成新的找零地址

bytom input有21个的限制

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/24288.html

相关文章

  • 比原链社区项目一览(持续更新)

    摘要:钱包后端服务节点前端前端钱包前端其他合并工具工具文档类读比原剥开比原看源码系列比原管理挖矿相关文档各类文档浏览器矿池鱼池双矿池矿池矿池蚂蚁矿池蜘蛛矿池蜜蜂矿池矿池矿池第三方主网钱包比特派币派 钱包 后端服务节点:https://github.com/Bytom-Comm... Android前端:https://github.com/Bytom-Comm... iOS前端:https:...

    imccl 评论0 收藏0
  • Derek解读Bytom源码-Api Server接口服务

    摘要:首先读取请求内容,解析请求,接着匹配相应的路由项,随后调用路由项的回调函数来处理。每一个路由项由请求方法和回调函数组成将监听地址作为参数,最终执行开始服务于外部请求创建对象首先,实例化对象。我们可以看到一条项由和对应的回调函数组成。 作者:Derek 简介 Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com...

    GitCafe 评论0 收藏0
  • Bytom国密网说明和指南

    摘要:在比原链主网中,在获取交易和区块头等摘要的过程中使用的哈希算法是算法,而在国密测试网中,使用算法替代。启动的是国密测试网。可以说,比原链的项目进展伴随着国密测试网的发布更上一层楼。 比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockc... 国密算法是指国家密码管理局制...

    王岩威 评论0 收藏0
  • 比原链(Bytom)节点接入文档

    摘要:系统要求我们建议选择主要的几家云主机平台的服务,运行比原链节点对算力没有要求,但是请配置尽可能大的磁盘空间以适应区块链数据未来增长的需要。 系统要求 我们建议选择主要的几家云主机平台的VPS服务,运行比原链节点对算力没有要求,但是请配置尽可能大的磁盘空间以适应区块链数据未来增长的需要。 节点服务器最小配置: 操作系统: Windows/Linux/Docker CPU: 2核 内存: ...

    wangxinarhat 评论0 收藏0
  • Bytom猜谜合约使用指南

    摘要:结语当前猜谜合约提供了体验版本,有兴趣的朋友可以做一个口令红包,简化一下用户操作和体验。 准备工作: 1、安装全节点钱包V1.0.5以上并同步完成; 2、已经发行一种资产,发行资产的方法具体见文章《如何在Bytom上发布资产?》 3、准备好一些BTM作为手续费; 设置谜语(锁定资产): 1、打开钱包,点击Equity合约按钮; showImg(https://segmentfault....

    mzlogin 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<