for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types=1);
namespace BitWasp\Bitcoin\Script\Interpreter;
use BitWasp\Bitcoin\Script\ScriptInterface;
use BitWasp\Bitcoin\Transaction\SignatureHash\Hasher;
use BitWasp\Bitcoin\Transaction\SignatureHash\SigHash;
use BitWasp\Bitcoin\Transaction\SignatureHash\V1Hasher;
use BitWasp\Buffertools\Buffer;
use BitWasp\Buffertools\BufferInterface;
class Checker extends CheckerBase
{
/**
* @var array
*/
protected $sigHashCache = [];
* @param ScriptInterface $script
* @param int $sigHashType
* @param int $sigVersion
* @return BufferInterface
public function getSigHash(ScriptInterface $script, int $sigHashType, int $sigVersion): BufferInterface
$cacheCheck = $sigVersion . $sigHashType . $script->getBuffer()->getBinary();
if (!isset($this->sigHashCache[$cacheCheck])) {
if (SigHash::V1 === $sigVersion) {
$hasher = new V1Hasher($this->transaction, $this->amount);
} else {
$hasher = new Hasher($this->transaction);
}
$hash = $hasher->calculate($script, $this->nInput, $sigHashType);
$this->sigHashCache[$cacheCheck] = $hash->getBinary();
$hash = new Buffer($this->sigHashCache[$cacheCheck], 32);
return $hash;