ac8665a80a4fbb0e649a056f917241b3 #hashAmatic #hash
(6/n)
挖到区块先藏着不广播 → 继续挖下一块 → 等时机再一次性广播两块
~~(因为矿工广播区块,其他矿工立刻收到,放弃当前计算?不对不对,是因为没有播报,然后区块内容是错误的,然后大家都白挖了?时机是什么时候?)~~
自私矿工偷偷挖到第101块不广播 →
其他矿工还在基于第100块挖 →
其他矿工也挖出了第101块,准备广播 →
自私矿工此时立刻广播自己的101块 + 已经挖好的102块 →
自私矿工的链:100→101→102(网络规则:选最长链,胜出)
其他矿工的链:100→101(作废,孤块没有奖励)
夺笋,但是需要巨大的算力,想了下如果有好几个自私矿工,就变成囚徒困境了:所有人都作恶 → 集体崩盘
控制了全网 >50% 算力 → 比其他人更快延伸链 → 可以重写最近的交易历史 → 先付款买东西,收到货后撤销交易
~~(为什么?)~~
正常链:...→ 100 → 101(含:我付给商家1 XMR)→ 102 → 103
攻击者:...→ 100 → 101'(不含那笔付款)→ 102' → 103' → 104'
攻击者由有超过50%的算力:链延伸更快
时间够长 → 攻击者的链更长 → 网络接受新链 → 旧链作废,覆盖成功
付款记录消失,货已经收到,所以也叫“双花攻击”
抗 ASIC 的算法,比特币用SHA256,Monero用RandomX,专门为CPU优化设计,让CPU和ASIC差距极小 → 算力极度分散在全球普通电脑上;
LWMA:使难度调整更灵敏,防止算力突然涌入薅羊毛后撤走。
(5/n)
Monero挖矿流程:
nonce:Number used Once,是 32 位整数,最大只有约 42 亿种可能,唯一作用用于让哈希值变化
hash(区块内容 + nonce=114514) = abcd... ❌
Hash(区块内容 + nonce=222222222) = jklm ...❌
Hash(区块内容 + nonce=369963369) = 0001... ✅
区块内容:
上一个区块的哈希值(固定)
所有交易的根哈希(矿工选择)
时间戳 (当前时间)
当前难度(网络自动计算,固定)
答案哈希:
哈希结果 < 目标值,由网络自动计算的当前难度决定这次目标值
然后开始计算Hash(区块内容 + nonce=XXXXX)
矿工通过修改nonce,找到一个哈希,哈希结果 < 目标值
(有可能试了42亿个nonce可能都没有符合条件的哈希结果,这时需要修改时间戳:小范围浮动,或交易列表:加一笔/删一笔,来改变区块内容,再尝试nonce)
这个矿工广播区块
→ 其他节点验证 → 链上+1
→ 其他矿工立刻收到 → 放弃当前计算 → 基于新区块重新开始
(选择nonce应该会有什么策略?我能想到的就是从中间开始算?或者划分间距,均分算力?)
矿池的做法:
矿工A:负责 0 ~ 10亿
矿工B:负责 10亿 ~ 20亿
矿工C:负责 20亿 ~ 30亿
大多数矿工:用顺序遍历而不是随机
矿工A的区块内容:
交易列表:[tx1, tx2, tx3]
时间戳:10:00:00.001
extranonce:A的任意数据
矿工B的区块内容:
交易列表:[tx1, tx2, tx4]
时间戳:10:00:00.003
extranonce:B任意数据
单独挖:很久才赢一次,收益极不稳定
加入矿池:有稳定的小额收益,按算力贡献分成
(4/n)
Monero 'Fluorine Fermi' (v0.18.4.4-release):软件版本,Monero每个版本都有元素周期表命名,Fluorine Fermi = 氟 + 费米
Height: 2140052/3630686 (58.9%):
2140052 —— 本地已同步到第 214 万块
3630686 —— 主网当前最新块高度363万块
58.9% —— 同步进度
Monero 的奖励是一条递减曲线,120秒产出一块(120s是目标,一般是120s左右波动),早期区块 ~35 XMR/块,慢慢递减...,进入尾部排放 → 固定 0.6 XMR/块
一个有趣的网站:Monero区块浏览器 https://moneroexplorer.org
not mining:表示没有在挖矿,只是在跑全节点验证区块
net hash:那个年代的算力
net hash ≈ 当前难度 ÷ 出块间隔(120秒)
2014年的区块 → 当前难度很低 → 显示 net hash 很小
2026年的区块 → 当前难度很高 → 显示 net hash 1.37 GH/s
1 GH/s = 1000 MH/s = 10亿次哈希/秒
矿工算力增加 → 出块变快 → 网络自动调高难度 → 出块速度回到2分钟(怎么这么像内卷2333)
v12 位当前区块使用的协议版本号,较新,可以看(3/n)的截图,所在的是v1v4v6 ...
12(out)+0(in) connections:12个连出去的节点、0个连进来的节点
好像有点吸血鬼了?好像是因为18080 端口没有暴露到公网,等我跑完就开
uptime 0d 1h 35m 59s:已运行1h 35m 59s