未来貨幣透明鍛造メカニズムの原理
1510 ワード
鍛造メカニズムの原理は公式で表現すると:1.hit
2.target
けっていしき
したがって、次のブロックのパッケージングでは、hitは特定のアカウントで決定され、targetのbalanceは決定され、baseTargetとtimesだけが時間とともに大きくなり、baseTargetの変化と時間は比例する.
したがって、システムはすべてのアカウントを収集し、必要な時間をそれぞれ計算することができ、時間が最も小さいのは次のパッケージング者です.従って、透明鍛造機構は、次のブロックが誰によって、いつパッケージ化されるかを予測することができる.
static BigInteger getHit(byte[] publicKey, Block block) {
MessageDigest digest = Crypto.sha256();
digest.update(block.getGenerationSignature());
byte[] generationSignatureHash = digest.digest(publicKey);
BigInteger hit = BigInteger(1, new byte[] {generationSignatureHash[7], generationSignatureHash[6], generationSignatureHash[5], generationSignatureHash[4], generationSignatureHash[3], generationSignatureHash[2], generationSignatureHash[1], generationSignatureHash[0]});
return hit;
}
2.target
static boolean getTarget(BigInteger effectiveBalance, Block previousBlock) {
elapsedTime = getElapsedTime - block.getLastTime()
BigInteger effectiveBaseTarget = BigInteger.valueOf(previousBlock.getBaseTarget()).multiply(effectiveBalance);
BigInteger prevTarget = effectiveBaseTarget.multiply(BigInteger.valueOf(elapsedTime - 1));
BigInteger target = prevTarget.add(effectiveBaseTarget);
}
けっていしき
/**
* hit
したがって、次のブロックのパッケージングでは、hitは特定のアカウントで決定され、targetのbalanceは決定され、baseTargetとtimesだけが時間とともに大きくなり、baseTargetの変化と時間は比例する.
target = balance * times * (a*times*baseTarget) = a*balance*baseTarget*times^2 ( :a )
times = sqrt{hit/(a*balance*baseTarget)};
したがって、システムはすべてのアカウントを収集し、必要な時間をそれぞれ計算することができ、時間が最も小さいのは次のパッケージング者です.従って、透明鍛造機構は、次のブロックが誰によって、いつパッケージ化されるかを予測することができる.