判断一个区块链是否靠谱有一个指标就是看链跑的时间久不久, 还有就是上线率/Uptime和宕机时间/Downtime, 有点类似计算服务器的上线时间.
不靠谱的链一般没几多久就停了(Halted). STEEM区块链不算新链了, 已经跑了有7年之久, 我很好奇STEEM链的上线时间和故障率, 本文就来计算一下.
STEEM在过去因为链的BUG停过几次, 我记得有一次是STEEM在硬分叉的时候引起了新的资源计算模型, 但有BUG, 导致链停了, 虽然当时Steem Inc组织程序员紧急改BUG, 再号召见证人同时重启链, 不过那几天折腾过程中停了有2-3次吧.
比特币BTC据说到现在为止历史上一共停过两次.
创世纪块和时间 Steem Genesis Block and Time
每条区块链都有一个创世纪块, 也就是第一块, STEEM上的创世纪块是在 2016-03-24 16:05:00.
产生一块所需要的时间
这个每条链不一样, STEEM是基于DPOS共识算法(Delegated Proof of Stake), 每3秒产生一个块.
最新块和时间 Head Block
我们可以通过 Steem JS 库来获得链上的最新块 (Head Block):
steem.api.getDynamicGlobalProperties(function(err, result) {
var latestBlock = result.head_block_number;
var latestBlockTime = result.time;
console.log(`STEEM区块链上的最新块/Head Block是 ${latestBlock}.`);
console.log(`STEEM区块链上的最新块/Head Block时间是 ${latestBlockTime}.`);
}
STEEM区块链的长度时间(Chain Age)
有了最新块的时间, 还有第一块的时间(创世纪块/Genesis Block), 我们做一下减法, 就可以得出链的时间长度.

其中 A 就是链的长度, T是最新头步块的时间戳/Time Stamp, 而T’是创世纪块的时间戳.
通过Javascript函数来计算两个时间字符串的间隔时间/秒
我们需要计算两个时间字符串间隔时间/秒数, 日期时间的格式为 “YYYY-MM-DD HH:MM:SS”. 比如: “2016-03-24 16:05:00”, 链上的都是UTC时区.
function secondsBetweenDates(dateStr1, dateStr2) {
const date1 = new Date(dateStr1);
const date2 = new Date(dateStr2);
// 毫秒差另
const diffMilliseconds = Math.abs(date2 - date1);
// 转成秒数
const diffSeconds = diffMilliseconds / 1000;
return diffSeconds;
}
有了秒数就可以推算出其它时间单位, 如: 分时天年.
STEEM区块链的宕机时间
利用最新的块号和每个块所需的时间(即 3 秒), 我们可以计算生成所有块所需的总时间(头块号) – 令其为 t.
其中 B 是最新头部块号(Head Block).
然后通过简单的数学:
就可以算出上线率/Uptime.
总宕机时间为
, 或者算出百分比: 宕机率
.
我们可以用下面的JAVASCRIPT函数来计算STEEM区块链的宕机时间:
function compute_down_time_for_steem_blockchain(latestBlock, latestBlockTime) {
latestBlockTime = latestBlockTime.replace("T", " ");
const genesisBlockTime = "2016-03-24 16:05:00";
const timePerBlock = 3;
const secondsBetween = secondsBetweenDates(genesisBlockTime, latestBlockTime);
const downTime = secondsBetween - (latestBlock * timePerBlock);
return downTime;
}
更新: Steem 区块链信息概况
我已经把上面的信息计算集成到了 Steem 区块链信息概况, 打开工具你就可以看到STEEM区块链实时的上线率(Uptime)/总宕机时间(Downtime)/总宕机率/链总时间(Chain Age).
Steem 坐火箭🚀!
- 您可以通过 rentsp 来租赁Steem Power!
- 您可以通过 tron2steem 交换 波场币/TRX/USDT/USDD 到 STEEM!
- 您可以通过 steem2sui 交换 STEEM/SBD 到 SUI!
- 您可以通过 steem2sol 交换 STEEM/SBD 到 SOL Solana 索拉纳!
- 您可以通过 steem2eth 交换 STEEM/SBD 到 ETH Ethereum 以太网!
- 您可以通过 steem2usdt 交换 STEEM/SBD 到 Tether USDT (波场U, TRC-20)!
- 您可以通过 steem2trx 交换 STEEM/SBD 到 波场 TRX (TRON)!
- 您可以通过 steem2bts 交换 STEEM/SBD 到 比特股 BTS (BitShares)!
- 在 SteemYY 免费注册 STEEM 帐户!
- Steem 区块链浏览器
- ChatGPT/Steem 机器人: 命令 !ask
- Steem 见证人排名/API
- 其它 Steem 工具
支持我的工作 支持我成为 见证人
我的一些贡献: SteemIt 工具, API接口, 机器人和教程Steem/Steemit区块链
- 如何构建一个具有重试机制的 Steem 区块链见证人投票检查器
- STEEM兑换ETH以太网工具上线两个月一共兑换了10个ETH!
- 怎么样计算STEEM区块链的上线率(UpTime)和宕机时间(DownTime)
- 系统设计: Steem区块链ChatGPT机器人
- 《steem 指南》- 查看踩人与被踩的记录
- STEEMIT cn区最低保障系统 上线了! Introduction to the CN Wechat Group Voting Robot @justyy
- SteemIt 好友微信群排行榜 支持显示数据统计和API了!
- 数据初步分析系列 STEEM中文微信群排行榜单 - 中位数, 平均, 和标准方差
- 大家好才是真的好, YY银行足球队, 你还有啥理由不加入银行?
- YY 银行开启互抱大腿模式 (mutually-beneficial voting scheme)
- 哇哈哈, 我已经是 utopian-io 的 moderator 团队的一员了!
- 返璞归真, 重新成为小鱼 - 祭奠逝去的1万SP
升级打怪/声誉
- Steem Blockchain Account Level (Reputation) Reaching 84 ^_^
- Steem Blockchain Account Level (Reputation) Reaching 83 ^_^
- Steem Blockchain Account Level (Reputation) Reaching 80 ^_^
- STEEM区块链上帐号等级80并且超100万SP - 终于成为了大户(大鲸鱼)
- SteemIt Finally Reputation = 70! 盼星星盼月亮, 总算盼来70级!
- SteemIt: 写在第69级, 时间管理和效率提升的重要性
英文: How to Compute the Chain Age, Uptime and Downtime for Steem Blockchain?
本文一共 762 个汉字, 你数一下对不对.上一篇: 如何解决微博视频下载出现的403错误(Denied by Referer ACL)?
下一篇: 老大英国小学毕业了
