在 kubernetes 集群中运行比特币节点

在 kubernetes 集群中运行比特币节点 前 最近在研究矿池的架构的K8s上的迁移,在尝试在集群上运行比特币节点。 通过K8s来跑节点存在的一些收益: 共用Prometheus系统来监控的比特币节点状态。 可以和其他的服务快速的集成通过Service 对比专用实例独立部署的话需要更少的资源 到目前为止,节点的pod 已经运行超过 164 天,没有遇到中断问题。下图是 bitcoind pod 状态: 资源准备 B基础镜像 使用dockerhub 的基础镜像ruimarinho/bitcoin-core 时刻保持和官网的最新版本的同步更新 磁盘大小和类型 到 2020 年初,比特币数据的大小约为 333GB [1] 。 所以节点需要分配了一个 600 GB 的 EBS 卷来作为存储。 使用sc1 EBS 类型。虽然速度不是最快。但是节点完全同步之后,IO 需求就会大大减少,后面就足够使用了 硬盘空间目前是足够使用的后面还需要进行继续的扩容。但我们需要再次扩展该卷 集群节点规格 目前所有的 k8s 节点都使用m5.xlarge节点。 所以 bitcoind pod 在m5.xlarge上运行。没有专用节点 部署 SVC bitcoind RPC服务 暴露的yaml 文件: kind: Service apiVersion: v1 metadata: name: bitcoind-mainnet spec: selector: app: bitcoind-mainnet ports: - name: rpc port: 8332 - name: zmq port: 28332 Deploy bitcoind Deployment 的 yaml文件...

四月 24, 2023 · 1 分钟 · r4y

《区块链技术与应用》公开课笔记

https://github.com/WTFAcademy/WTF-Ethers BTC部分 加密算法 SHA256 数据结构 区块内构建成 merkle tree 不需要Sorted,因为btc没有使用到存在证明。 因为BTC的记帐权是爆块节点确定的,所以这里可以不进行排序。 但是 ETH 中是有账户状态的,状态比TX 要高几个数量级。状态是不上链的,保存在节点的本地。 所以为了保持节点本地的状态一致性,eth 本地是需要sorted 的。 ETH 中使用的 是 MPT来用来保存状态 MerklePatriciaTree 也就是有压缩的 挖矿难度 比特币脚本 分叉

五月 14, 2022 · 1 分钟 · r4y

《区块链技术与应用》公开课笔记

BTC部分 加密算法 SHA256 数据结构 区块内构建成 merkle tree 不需要Sorted,因为btc没有使用到存在证明。 因为BTC的记帐权是爆块节点确定的,所以这里可以不进行排序。 但是 ETH 中是有账户状态的,状态比TX 要高几个数量级。状态是不上链的,保存在节点的本地。 所以为了保持节点本地的状态一致性,eth 本地是需要sorted 的。 ETH 中使用的 是 MPT来用来保存状态 MerklePatriciaTree 也就是有压缩的 挖矿难度 比特币脚本 分叉

五月 14, 2022 · 1 分钟 · r4y

【转/译】评估公共比特币矿机时要评估什么?

评估公共比特币矿机时要评估什么? 比特币挖矿中六种独特指标的方法论 2023 年 3 月 10 日 在经历了悲观的 2022 年之后,随着美国破产法第 11 章破产、债务重组和并购,公共比特币挖矿业务的格局发生了巨大变化。只有少数业务在没有太多债务或股权稀释的情况下成功地按计划提高了算力。 尽管公开市场投资者通常将比特币矿业股票视为比特币本身的涡轮增压代理,但比特币矿业有一些独特的指标将一项业务与其他业务区分开来。虽然常用的财务指标,如营运资本、毛利率、D/E 和市盈率仍然有用,但还不够。 本文总结了比特币挖矿的六个独特的基本原理,可以帮助评估单个挖矿业务。 已实现算力 随着比特币挖矿行业的制度化,现在越来越多的市场参与者披露每月的比特币生产结果,这为进一步分析奠定了基础。最直接的指标是 TheMinerMag 引入的已实现哈希率。 简而言之,已实现算力是由公司每月的产量、比特币网络的总区块奖励以及网络一个月的平均算力所隐含的算力。 例如,比特币在 2023 年 2 月的总区块奖励为 26,907 BTC,当月 28 天平均网络算力为 297 EH/s。这意味着,平均而言,该月每个 EH/s 应该能够开采 90.5 BTC。换句话说,如果一家公司当月开采了 90.5 BTC,那么其实现的算力就是 1 EH/s。 为什么这有关系?通过标准化每月比特币网络哈希率和区块奖励的变化,它使每个挖矿操作随着时间的推移保持相同的规模。它可以更准确地描述公司当前和未来在争夺整体奖励方面的地位,更重要的是,它是否已经超越了竞争对手。 下图总结了几乎所有上市矿业公司的已实现算力以及它们随时间的增长情况。实现的算力越高,公司在比特币挖矿奖励蛋糕中所占的份额就越大,因此收入潜力就越大。 实现率 评估公共挖矿业务的另一个有用指标是实现率,即实现的算力占已安装运营容量的份额。 例如,如果一家公司在 2 月份安装并运行了 1.2 EH/s 的设备,但当月仅开采了 90.5 BTC,实现算力为 1 EH/s,那么其有效变现率仅为 83%。 一般来说,实现率越高越好。这是因为它显示了公开上市的挖矿运营商能够在多大程度上为股东最大化其已安装的哈希能力。 下图总结了每家公司随时间的变现率。单个公司的已实现算力和实现率也可以在 TheMinerMag 数据部分的公司类别中找到。2022年初以来,HIVE、CleanSpark、Bitfarms持续取得最高变现率。 说到实现率低,可能有很多原因。例如,限电活动和意外的站点问题可能会导致停机。与此同时,如果运营商在一个月中插入更多采矿设备,它将在月底报告更高的安装算力。由于分母较高,导致实现率较低。 简而言之,单月变现率较低本身可能并不是坏消息,但如果连续几个月出现这种情况,无疑是一个不健康的信号。这也是为什么上面的实现率图表默认在任何月度值之前显示“平均”值。 价格与哈希率 就像评估公开股票时常用的市盈率 (P/E)一样,比特币挖矿中的市盈率 (P/H) 可以帮助投资者估计他们为每 TH/s 支付的费用矿业公司实现的算力。计算如下: P/H 比率 ($/TH/s) = 市值 / 已实现算力...

五月 14, 2022 · 1 分钟 · r4y

multi_claim 合约分析

前 囤了很久的一个任务,来做一个简单的代码解析。 一个用于合约批量Claim 的操作。 比如之前的$rnd,就可以使用这套代码来进行批量的Claim 的交互操作。 代码仓库 POC 正文 代码思路 对代码思路来进行一个简单梳理。先定义一个ERC20 的 interface 用于来进行合约来进行交互。之后new claim 合约来进行对token的mint操作,在完成mint之后批量的转回sender。 这里的前提是代码没有EOA(Externally Owned Accounts)机制也就是说没有,对合约账户CA还是外部账户EOA的检测。 另外这里还需要说明的是,这种mint的Token是没有验证机制的,就是有claim接口之后就可以随便领取的。 代码分析 栈 大体按照调用栈来逐步分析 call Addressto abi.encodePacked New claimer claim transfer Call 这里是这个合约的主调函数,函数体如下。这里主要是进行 循环并且自增nonce,计算出即将new 出来的合约的地址,用于后面的转账操作。之后吧nonce +1 之后进行接下来的操作。 function call(uint256 times) public { for(uint i=0;i<times;++i){ address to = addressto(address(this), nonce); new claimer(to, address(msg.sender)); nonce+=1; } } addressto 这个是比较有意思的地方,在一个合约创建之前能否知道这个的地址? 答案是可以的,这个也被用于一些LP添加前的预判,也就是说可能LP还没创建,你就可以拿到LP的地址,早早冲进去。 这里的 addressto 就是这个算法的实现。 合约地址生成 资料参考:以太坊合约地址是怎么计算出来的? 以太坊合约的地址是根据创建者(sender)的地址以及创建者发送过的交易数量(nonce)来计算确定的。 sender和nonce 进行RLP编码,然后用Keccak-256 进行hash计算。 nonce0 = address(keccak256(0xd6, 0x94, address, 0x80)) nonce1 = address(keccak256(0xd6, 0x94, address, 0x01)) 所以在这个合约里面可以看到也是按这个形式来进行了字节码的组装。这里来对组装过程进行分析。...

四月 30, 2022 · 2 分钟 · r4y

ERC721项目发行分析

前 从庖丁解牛说起,懂了刀法之后就要开了这头牛了。 从区块链浏览器来看看 项目方的动作以及用户的东西还是很有意思的一件事情 这里使用Legend Maps Adventurers (LMA) 这个项目,自己蛮喜欢的一个 NFT项目。是做的链上的像素地牢。 这篇文章就简单的把这个NFT 的生命周期来分析一下。 正文 正文顺序就是直接按照合约的交互顺序来进行分析。 deploy TX:0xc6520011946abdf7577a6224a12d663556c836dbfd71d6fa4f802b3e2f186619 内容在Data字段,对应的是合约的编译后的 EVM操作码,实际上对应的就是合约。 set Base URI TX: 0x511692fe76c4c6a325bc47edc7d464269405dd498be608e8fa0744bbf74c3c16 在这里设置 NFT 的资源的BaseURI Function: setBaseURI(string baseURI_) MethodID: 0x55f804b3 [0]: 0000000000000000000000000000000000000000000000000000000000000020 [1]: 0000000000000000000000000000000000000000000000000000000000000036 [2]: 697066733a2f2f516d5a45545459326f766541327669375a336f7038505a4c6d [3]: 614c54744d73437961623157786a5857664b78645a2f00000000000000000000 涉及到的函数是下面这部分 function setBaseURI(string memory baseURI_) external onlyOwner { _tokenBaseURI = baseURI_; } 设置的 baseURI 解码出来之后是 是一个 ipfs 的存储链接 ipfs://QmZETTY2oveA2vi7Z3op8PZLmaLTtMsCyab1WxjXWfKxdZ/ 我们可以通过ipfs 的网关来进行访问 https://ipfs.io/ipfs/QmZETTY2oveA2vi7Z3op8PZLmaLTtMsCyab1WxjXWfKxdZ 这里项目方犯了一个错误,BASE设置错误了,所以项目方里面用下面这比交易修改 TX: 0x0379fddc8c43c35a3f7dd4403003cc44424e742f7aa0b9bf514c07702c21e1e2 Reserve 交易TX: 0x7f8962455056175e720abf68e8bd89a3ba468ec3ded33567ec9a20c239d103b7 项目方调用合约来进行批量的NFT 预留。直接safemint 50个,到Owner自己的账户下。...

四月 29, 2022 · 2 分钟 · r4y

NFT合约级mint实践

简明教程 找到对应地址 可以先试用页面触发小狐狸的审批页面,之后找对应的地址。 浏览器查看合约交互 nft 项目一般都是 mint 的方法的调用。在交易详情的advance里面看到decode 之后的内容,一般是合约的方法名和参数 看合约代码 直接找到 调用的mint 函数的定义内容,检查其逻辑。 构造调用参数,进行合约交互 实践记录 以下面的合约为例子。 https://polygonscan.com/address/0x3a67c34c7dbd846108044fed38a3154b99a97cb1 看到有大量的Mint 调用,在advence查看调用内容,如下 Function: mint(uint256 amount, uint256 timeout) *** MethodID: 0x1b2ef1ca [0]: 0000000000000000000000000000000000000000000000000000000000000001 [1]: 000000000000000000000000000000000000000000000000000000000001c378 这里主要是看解码出来的 Functiin name,这里的参数不一定百分百准确,因为是使用 字典来进行解码的。 这里推荐使用 4byte来进行方法名解码。有比较强大的 DB https://www.4byte.directory/signatures/?bytes4_signature=0x1b2ef1ca 我们可以看到解码的内容是。 ID Text Signature Bytes Signature 167720 mint(uint256,uint256) 0x1b2ef1ca 在其公布的sol code的 RaremintsERC721 里面我们可以找到mint的定义: function mint(uint256 num, uint256 metadata) public payable { uint256 supply = totalSupply(); require( !_paused, "Sale paused" ); require( supply + num <= _supply - _reserved, "Exceeds maximum supply" ); require( msg....

四月 26, 2022 · 1 分钟 · r4y

浅析白名单校验原理

ETH 上的GAS 不是欢乐豆 这篇文章来在于一个群中的一次关于一个项目的大讨论。 一个NFT项目 mint 的成本异常的高。售价是 0.01 但是实际上mint 的 gas 在 0.1+@75gwei的情况下。 网络并不繁忙。 项目的合约地址在下面 https://etherscan.io/address/0x99a8e1cc829d6b33dc37851466c360e08757a0ae 在 MonkeyPoly.sol 的69~76段。可以看到一个白名单校验的函数。这里存在着一个循环结构。我们知道ETH上的计算是需要gas的,所以这里的一个对白名单列表的遍历。就是调用高gas的元凶。 function isWhitelisted(address _user) public view returns (bool) { for (uint i = 0; i < whitelistedAddresses.length; i++) { if (whitelistedAddresses[i] == _user) { return true; } } return false; } 而在另一段代码里面我们看到了写入白名单的地方 function whitelistUsers(address[] calldata _users) public onlyOwner { delete whitelistedAddresses; whitelistedAddresses = _users; } 这里项目方直接把地址列表给导入了进去,通过传参的方式。十分的生猛。 这里的gas 消耗,可以参考下文,记录了每个evm操作符消耗的 gas 情况。对上面的来进行一个估算。 以太坊的存储成本_跨链技术践行者-CSDN博客 evm-opcode-gas-costs/opcode-gas-costs_EIP-150_revision-1e18248_2017-04-12.csv at master · djrtwo/evm-opcode-gas-costs...

二月 7, 2022 · 2 分钟 · r4y

ERC20 标准再学习

ERC20 标准,是ETH上的一种合约标准。固定了事件和对应的接口 contract ERC20Interface { function totalSupply() public constant returns (uint); function balanceOf(address tokenOwner) public constant returns (uint balance); function allowance(address tokenOwner, address spender) public constant returns (uint remaining); function transfer(address to, uint tokens) public returns (bool success); function approve(address spender, uint tokens) public returns (bool success); function transferFrom(address from, address to, uint tokens) public returns (bool success); event Transfer(address indexed from, address indexed to, uint tokens); event Approval(address indexed tokenOwner, address indexed spender, uint tokens); string public constant name = "TEST Token"; string public constant symbol = "TST"; uint8 public constant decimals = 18; // 18 is the most common number of decimal places uint256 public _totalSupply; } 合约分为 函数和事件变量,三个部分,...

一月 18, 2022 · 2 分钟 · r4y

读书笔记《the-little-bitcoin-book》

2020年自一月起Bitcoi迎来了一轮又一轮的上涨,从6000到现在的10000$,自己锁了一点少量的投资到现在却有了5倍多点的收益,还是很不错的。 之前一直是从技术的角度去了解以及学习 bitcoin 的相关知识,偶然遇到了一本书,是从经济学角度出发的,是以问答的形式来深入浅出的介绍,对与没有经济学基础的读者也可以很好的理解其中的部分金融学的原理。看着内容慢慢的来了兴趣,所以想着把这本书给看完。 书的前言很有意思,这本书不是一个人写的,是一个八个人小小的团队,有来自各个层面 的不同的想法。 我们是社会活动家、教育家、创业者、企业高管、投资者和研究者。我们来自非洲、亚洲、欧洲、北美和南美。我们在许多方面有所不同,但都痴迷于比特币的一切. 我们相信它将对我们的世界和我们的生活产生至关重要的影响。 这一篇一样的是读书笔记,来记读的过程中遇到的各种的点。 为什么比特币对你的自由、财务和未来至关重要 本书地址:https://xiongxiaoer.gitbook.io/the-little-bitcoin-book/ 今天货币的问题 一个好的货币 书的这一章,列举了世界上货币出现问题的几个例子,小型国家未来锚定汇率,未来大搞生产,来疯狂的印钞票,导致本国货币产生了恶性的通货膨胀。比如委内瑞拉在2018 年产生了 400000% 的恶性通货膨胀。 通货膨胀是货币的敌人,2000年来所有的通货对美元的汇率都有了巨大的损失,货币的购买力被稀释。 20亿人无法获得银行账户,或者缺少开户的身份证明 监控资本主义(surveillance capitalism)使得隐私的价格越来越高 货币是一种社会协议,货币是交易的润滑剂,其价值是使用者的信任产生的。 货币要求人们相信他们钱包里的账单,他们银行账户里的数字以及他们礼品卡里的余额都可以在未来兑换成他们想要或需要的东西. 卖方需要同意买方的钱是有价值的。 货币有非常多种,带式最健全的货币往往是最好的必然 美元以及欧元,他后面的金融体系是十分的完整健壮。 政府对货币有控制的能力,但是一旦出现货币滥用,对货币体系是致命的打击,比如对财政利好的失控的通膨,任意财产没收,以及腐败。 然而,对货币的控制可能是一种会被滥用的诱人之物。官员经常操纵这种权力来满足他们的利益。只有保护个人权利、权力分立和法治的最民主的政府,才能有效防范货币滥用,如失控的通胀、任意没收以及腐败。 你被通货膨胀了 政府可以以极低的成本来创造更多的法定货币,美联储前主席艾伦·格林斯潘(Alan Greenspan)曾说,美国可以“偿还任何债务,因为我们总是可以通过印钞来实现这一目标“,做法是合理的但是结果必然会失去货币本身的稳定性。所以低而稳定的通货膨胀是现代央行的目标。 对与生活在专制政权的人来说,政府官员是未经选举产生,所以大多数人们无法选择自己的利益方向(选择执政者的利益主张),他们的储蓄价值会不断减少的。只有精英阶层才能的到美元,黄金或者房产这种硬通货来实现财富的保值。与此同时,在富裕民主的国家人民可以轻松的获得稳定的货币,来投资理财产品,来抵消或者超过通货膨胀。 对与新印的钱,精英们不成比例的受益,被称为 坎蒂隆效应,因为精英阶层都有用硬通货财富来实现资产的保值,但是都已普通民众大多数的资产是以储蓄形式出现,所以大规模的通货膨胀,是一种不公平的财富分配,民众手上的钱急剧贬值且没有硬通货来进行资产保值。所以普通民众是通货膨胀中的必然牺牲品 在战争阶段,使用不断的印钱来提供战时所需资金,在一战之后之后俄国和德国均停止了金本位,而且暂停了货币兑换,开始进行无黄金支撑印钞。 战败后,回来支付巨额赔款,德国只能去印更多的钱,导致马克贬值到了其战前价值的万亿分之一。 法定货币体系也是现代长期战争的推动者。政府可以为战争印更多的钱,通过通胀把成本分摊在后代身上。 货币其他的问题 现在的货币问题还有,各个国家之间的资金转移极其困难,中国,俄罗斯,阿根廷,印度尼西亚等政府都积极的限制公民的外币兑换 。在金融危机之后避免银行破产,公民被限制每天的取款额度,国际汇款的大额的手续费用以及关税。450/7000 全球的单点故障 现在世界经济使用的是美元本位的体系,书中写道这个是即使是 布雷顿森林协定 确定的,所以现在的国际贸易最终使用美元来进行结算。 随着第二次世界大战即将结束,全球大国在布雷顿森林举办了一场聚会来建立统一的货币秩序。在三周的时间里,来自44个国家的700多名代表就未来金融体系的结构进行了辩论和谈判。一些代表建议建立一种名为班科(bancor)的新国际储备货币。最后,代表们同意他们的货币将与美元挂钩。因此,今天的国际贸易主要以美元结算,每个国家都试图维持他们的美元储备。 所以虽然美元经济体看似稳定,但是如果其运行出现问题,少数银行倒闭,就有可能出现全球性的经济灾难。 总结 目前的货币体系存在问题,通膨导致的不对称财富分配以及货币体系消亡,货币自由受制于政府,目前是美国为主的全球单点体系,越来越多的数字支付系统可能会导致个人隐私的消亡。 四种全球现象——个人财富的贬值、价值转移的限制、金融中心化和隐私的丧失——代表了个人在 21 世纪货币体系中的主要风险。随着各国努力维持现状,世界各地的人们都感受到了压力 所以需要一个新的货币体系,政府没有能力牺牲公民财富了随意的贬值货币,交易不在受制于任何体系或人,货币可以被世界上任何地方使用和访问。于是就有了 标题中的 bitcoin。 为什么比特币 雷曼事件,著名投资银行,雷曼兄弟由于投资失败申请了美国历史上最大的破产案。其提供借贷,但风险远远的大于其抵押的担保证券的总价值,当有贷款违约之后,公司就无法偿还其用于借贷的债务导致破产。所以导致了信贷的信用灾难,银行不敢再将钱贷给各大公司,而公司又没有钱来继续经营,引起了金融系统的恶性循环。 所以美国财政部以及美联储,立马拨钱给银行来维持银行可贷款出去的量来避免经融危机,这次的行为花费了数千亿的美元来支撑。 比特币的出现 比特币伴随着这样一条新闻出现的: The Times 03/Jan/2009 Chancellor on brink of second bailout for banks...

二月 8, 2020 · 1 分钟 · r4y