怎么样计算STEEM区块链的上线率(UpTime)和宕机时间(DownTime)


判断一个区块链是否靠谱有一个指标就是看链跑的时间久不久, 还有就是上线率/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):

1
2
3
4
5
6
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.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), 我们做一下减法, 就可以得出链的时间长度.

tex_ccb2fb0fecb299bacee9e285ba974b77 怎么样计算STEEM区块链的上线率(UpTime)和宕机时间(DownTime) STEEM 区块链 SteemIt 区块链

其中 A 就是链的长度, T是最新头步块的时间戳/Time Stamp, 而T’是创世纪块的时间戳.

通过Javascript函数来计算两个时间字符串的间隔时间/秒

我们需要计算两个时间字符串间隔时间/秒数, 日期时间的格式为 “YYYY-MM-DD HH:MM:SS”. 比如: “2016-03-24 16:05:00”, 链上的都是UTC时区.

1
2
3
4
5
6
7
8
9
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;
}
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.

tex_6f50db79f62807fbcc2d19131d6eacca 怎么样计算STEEM区块链的上线率(UpTime)和宕机时间(DownTime) STEEM 区块链 SteemIt 区块链 其中 B 是最新头部块号(Head Block).

然后通过简单的数学: tex_c6384993fcf406b83bb6a5c0ee29b608 怎么样计算STEEM区块链的上线率(UpTime)和宕机时间(DownTime) STEEM 区块链 SteemIt 区块链 就可以算出上线率/Uptime.

总宕机时间为 tex_5beb4d958df8a396c10c360e85fb833a 怎么样计算STEEM区块链的上线率(UpTime)和宕机时间(DownTime) STEEM 区块链 SteemIt 区块链 , 或者算出百分比: 宕机率 tex_a1b1331f81c9ae57e5da0a472cf309ca 怎么样计算STEEM区块链的上线率(UpTime)和宕机时间(DownTime) STEEM 区块链 SteemIt 区块链 .

我们可以用下面的JAVASCRIPT函数来计算STEEM区块链的宕机时间:

1
2
3
4
5
6
7
8
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;
}
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-blockchain-uptime-and-downtime-ch 怎么样计算STEEM区块链的上线率(UpTime)和宕机时间(DownTime) STEEM 区块链 SteemIt 区块链

STEEM区块链的上线率和宕机时间

whale-300x200 怎么样计算STEEM区块链的上线率(UpTime)和宕机时间(DownTime) STEEM 区块链 SteemIt 区块链

Steem 坐火箭🚀!

  • 您可以通过 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 区块链浏览器

英文: How to Compute the Chain Age, Uptime and Downtime for Steem Blockchain?

GD Star Rating
loading...
本文一共 762 个汉字, 你数一下对不对.
怎么样计算STEEM区块链的上线率(UpTime)和宕机时间(DownTime). (AMP 移动加速版本)
上一篇: 如何解决微博视频下载出现的403错误(Denied by Referer ACL)?
下一篇: 老大英国小学毕业了

扫描二维码,分享本文到微信朋友圈
21bc16c57b8bc6beaed700e59697c8ee 怎么样计算STEEM区块链的上线率(UpTime)和宕机时间(DownTime) STEEM 区块链 SteemIt 区块链

评论