CSGOEmpire CSGO菠菜97hash CSGO开箱网站35skins - 即开即取的CSGO皮肤开箱网站!csgo开箱网_csgo开箱盲盒-2kskins官网-首页

Provably Fair Verified By iTechLabs | HypeDrop

Our 'Provably Fair' methods have been independently verified by one of the leading accredited testing laboratories for online gaming!

Recently, we hired iTechLabs to verify the legitimacy of our 'Provably Fair' methods. An accredited laboratory for online gaming certification and quality assurance testing, iTechLabs have tested and certified almost all types of casino games on a wide range of platforms for 14 years.

With this external verification, we're proud to share that the systems we use to determine unboxings, battles and upgrades have passed independent authentication!

When you play on HypeDrop, our 'Provably Fair' system generates a random result using multiple separate elements. Together, these elements prove the randomness of each of our games.

Unlike other Mystery Box retailers on the scene, this independent verification proves that we're doing all we should to publicly determine our outcomes, so that you can be certain of our fairness.

All in all, iTechLabs's certification only resulted in a few changes, of which you can explore below.


RNG Technical Changes

— Seed Generation

Games impacted: Unboxing, PvP Case Battles

We have added a fourth value (Game Mode) to the secret seed generation for Unboxing and PvP Unboxing. This was done as a precaution to increase security against potential exploits, as it makes it impossible for RNGs across the different game modes to recycle seeds.

Seed Generation before:

function getCombinedSeed(serverSeed, clientSeed, nonce) {
  // Add main parameters
  const seedParameters = [serverSeed, clientSeed, nonce];

  // Combine parameters to get seed value
  return seedParameters.join('-')
}

Seed Generation after:

function getCombinedSeed(game, serverSeed, clientSeed, nonce) {
  // Add main parameters
  const seedParameters = [serverSeed, clientSeed, nonce];

  // Add game parameter if needed
  if (game) {
    seedParameters.unshift(game);
  }

  // Combine parameters to get seed value
  return seedParameters.join('-')
}

— Random Number Generation

Impacted games: Unboxing, Box Battles

We have tweaked our RNG in order to achieve more cryptographic strength and increased security from potential exploits.

Change 1: We moved from using a 32-bit integer (8 character length Hexadecimal hash) to a 52-bit integer (13 character length Hexadecimal hash) - this is simply to increase the cryptographic strength of the generated number.

Change 2: We have amended the method used to get from the raw integer coming from the hash value to the final random result (being a number from 0-X; where X = the max possible result). In our previous version, we used the Modulo % operation with Max possible result (e.g. 1^8 for Unboxing), which would return the final result as a remainder amount in the range of 0 - Max.

We now have tweaked this method, instead of using the Modulo operation, we divide the raw integer generated by the hash by the maximum possible integer (2^52). This gives us a floating point number from 0-0.9999999 recurring.
We then multiply this number by the Max possible result and use floor to round down, giving an integer result in the range of 0 - Max.

Change 3: RNGs for some of our game modes previously generates results in ranges of between 1 - Max, while other game modes generated results between 0 - Max. We have normalised this now, so that all of our game modes RNGs start from zero, instead of 1.

Random Number Generation before:

function getRandomInt({ max, min, seed }) {
  // Get hash from seed
  log(`Seed value: ${seed}`);
  const hash = crypto.createHmac('sha256', seed).digest('hex');

  // Get value from hash
  const subHash = hash.slice(0, 8);
  const valueFromHash = Number.parseInt(subHash, 16);

  // Get dynamic result for this roll
  const random = Math.abs(valueFromHash) % max;
  return random + min;
}

Random Number Generation after:

function getRandomInt({ max, seed }) {
  // Get hash from seed
  log(`Seed value: ${seed}`);
  const hash = crypto.createHmac('sha256', seed).digest('hex');

  // Get value from hash
  const subHash = hash.slice(0, 13);
  const valueFromHash = Number.parseInt(subHash, 16);

  // Get dynamic result for this roll
  const e = Math.pow(2, 52);
  const result = valueFromHash / e;
  return Math.floor(result * max);
}

Upgrade RNG

Impacted games: Item Upgrade

We have added a fourth value to the secret seed (Iteration) used to generate results for our Item Upgrade game mode. This ensures that results are not exploitable and eradicates the possibility for a skewed result in very rare edge cases.

RNG before:

function getDiceRoll(serverSeed, clientSeed, nonce) {
  const hash = getHash(serverSeed, clientSeed, nonce);
  let index = 0;
  let lucky = getLucky(hash, index);

  while (lucky >= Math.pow(10, 6)) {
    index++;
    lucky = getLucky(hash, index);
    // We have reached the end of the hash and they all must have been FFFFFF hex value
    if (Math.imul(index, 5) + 5 > 129) {
      return 9999;
    }
  }

  lucky %= Math.pow(10, 4);

  return lucky;
}

function getLucky(hash, index) {
  const hashLucky = hash.substr(Math.imul(index, 5), 5);
  return parseInt(hashLucky, 16);
}

function getHash(serverSeed, clientSeed, nonce) {
  const hmac = crypto.createHmac('sha512', serverSeed);
  hmac.update(`${clientSeed}-${nonce}`);
  return hmac.digest('hex');
}

RNG after:

function getDiceRoll({ clientSeed, game, iteration = 0, nonce, serverSeed }) {
  // Prepare seed parameters
  const seedParameters = [clientSeed, nonce];
  if (game) {
      seedParameters.unshift(game);
  }

  // Get hash from seed values
  const hmac = crypto.createHmac('sha512', serverSeed);
  hmac.update(`${seedParameters.join('-')}-${iteration}`);
  const hash = hmac.digest('hex');

  // Initialize variables
  let index = 0;
  let lucky = getLucky(hash, index);

  // Process the hash until left with lucky result
  while (lucky >= Math.pow(10, 6)) {
      index++;
      lucky = getLucky(hash, index);

      // Reaching the end of the hash, run the calculations again
      if (Math.imul(index, 5) + 5 > 128) {
        return getDiceRoll({ clientSeed, game, iteration: iteration + 1, nonce, serverSeed });
      }
  }

  // Return lucky float number
  lucky %= Math.pow(10, 4);

  return lucky;
}

function getLucky(hash, index) {
  const hashLucky = hash.slice(Math.imul(index, 5), Math.imul(index, 5) + 5);
    return Number.parseInt(hashLucky, 16);
}

Got a question about our verification? Visit our dedicated ' Provably Fair ' section on HypeDrop, or get in touch .

转载请注明出处
原文链接: /provably-fair-verified-by-itechlabs-2

post featured image

nexa对degster挖苦:他的自我感觉太好,很难合作

OG的前队长在一次坦诚的采访中,批评了他的前队友,明星狙击手degster。 为什么degster还在替补席上?为什么他已经六个月没有参加过任何比赛?为什么没有关于他的转会传闻?如果你问他在OG的前队长nexa,可能有一个很好的理由:他的个性。在最近由Thorin和LEGIJA主持的一个播客中,nexa对degster发表了自己的看法,称俄罗斯狙击手既“难以合作”,又有着“非常大的自我”。他[degster]是一个很难合作的人。他肯定有技术,但他想要一切都按照他的方式来进行。他还总是占用队里其他人的资源,

post featured image

总监Twistzz告别Faze

Twistzz告别正式Faze这三年来真是太不可思议了,从我加入这个组织的那一刻起,我就感受到了FaZe的粉丝和社区的欢迎。2021年并不是一个容易的年份,但我相信当时的计划,2022年我们取得了卓越的成就,到了2023年底,我们一起完成了我们开始的事情,让这个阵容在历史上与伟大的选手们并列。在IEM Sydney开始之前,队友们就知道了我的离开,我知道这将是最后一舞,但我从未想到接下来会有这样的成功。结局变成了开始,我们连续赢得了三个锦标赛,在这些胜利中,我感受到了和以前一样的FaZe的统治力。 我们完

post featured image

基于ELO评级《CS2》的排位分布凸显了有多少玩家陷入困境

根据Leetify对CS2排名分布的回顾,超过四分之一的《反恐精英2》玩家正在努力达到有意义的Elo。该图表收录了近200万名玩家,显示约28%的《CS2》玩家的Elo为4000或更低。Leetify于11月30日发布了其排名,准确显示了CS2 Premier Elo排行榜上的位置和玩家数量。根据排名,15.5%的玩家停留在4000个Elo,约有13%的玩家排名低于这一水平。Valve最初为那些Elo排名在4000的玩家设置了安全网,并消除了任何低于5000的玩家的Elo损失。不过,这些内容很快

post featured image

2023 CS2 Elisa埃斯波大师赛开打,世界顶级队伍受邀参与

2023 CS2 Elisa埃斯波大师赛在11月29日正式开打,作为全球关注度极高的游戏项目,CS的比赛总能吸引到无数目光,特别是在今年CS2正式登场,可谓将射击游戏风潮推向顶峰。这次的Elisa埃斯波大师赛,可说是相当热烈。有不少队伍都争相出席,其中最令人注目的定是世界排名第二的ENCE与第三的MOUZ,ENCE首轮还将遇上芬兰战队HAVU。卫冕冠军fnatic首轮将对阵GL,然而缺乏两名队员的他们还未宣布正式阵容。赛事主办方Elisa公布了埃斯波大师赛的分组情况以及首轮对阵,这次比赛总奖金高达20万美

post featured image

CS2 12.1 更新:角色动画优化,subtick进一步改进

[ 游戏玩法 ] 对包括道具投掷动画和左轮手枪开火等各种系统的subtick计时器进行了改进 增加了玩家手持燃烧弹时缺少的火焰效果[ 动画 ] 减少了玩家角色的躯干与腿部方向偏离的程度 改善了受击反应 使跳跃动画有方向性 改善了玩家向上和向下瞄准时的姿势 改善了玩家奔跑时的脚步放置和姿势 减少了部署(deploying)时的动画姿势 玩家被闪光弹致盲时的姿势变化的时机现在更准确地反映了玩家的视力状况[ 声音 ] 修复了暗影匕首在循环检视动画时播放捕捉声音的问题 进一步优化了道具弹跳的衰减距离曲线和音量降低