Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error with creating a signed bitcoin transaction #916

Open
code2expert opened this issue Jan 29, 2024 · 0 comments
Open

Error with creating a signed bitcoin transaction #916

code2expert opened this issue Jan 29, 2024 · 0 comments

Comments

@code2expert
Copy link

code2expert commented Jan 29, 2024

Kindly help with this issue.

I am trying to create a bitcoin transaction but keep getting error bad request or Invalid transaction. Error: non-mandatory-script-verify-flag (Script failed an OP_EQUALVERIFY operation) . I believe I'm using the correct keys.

Below is my code:

My signed tranaction hex is:
010000000001012e1d32ebc3fa508fc740c6b589b32787e7c16132093e49008386ab59118c76f00000000000ffffffff028089000000000000160014facb445a65e273a1475b46f279a6d2bcbacf87c59a420000000000001600142865223582201a799e229c19a15ef4d7ec72097202483045022100ab0d9a9e02a8bc5907d49e4e21edbabd2a47e0eabdd97506f364bd7d9b443bd202205586775ac5ceec73a5d226c11e4076a7ca8b96a432408cc885c14af65b047ce901210353825959e0f36eff9a1257fa07ad919406a9bba4d100c6df601bc44c63d0ab1100000000

Below is my code:
$privateKey = (new BitWasp\Bitcoin\Key\Factory\PrivateKeyFactory)->fromWif('XXXXXXXXXXXXXXXXXXXXXXXXXX');

// Utxo is: outpoint.txid, outpoint.vout, txout.scriptPubKey, txout.amount
$outpoint = new OutPoint(Buffer::hex('f0768c1159ab868300493e093261c1e78727b389b5c640c78f50fac3eb321d2e'), 0);
$outputScript = ScriptFactory::scriptPubKey()->payToPubKeyHash($privateKey->getPubKeyHash());

$satoshi = 100000000; //one bitcoin in satoshi ie 100 million
$send_wallet_amount = 0.0005425 * $satoshi;
$send = 0.0003520 * $satoshi; // satoshis
$fee = 0.00002 * $satoshi; // satoshis
//calculate change
$change = $send_wallet_amount - $send - $fee;

$txOut = new TransactionOutput($send_wallet_amount, $outputScript);

$transaction = TransactionFactory::build()
    ->input('f0768c1159ab868300493e093261c1e78727b389b5c640c78f50fac3eb321d2e', 0 )
    //->spendOutPoint($outpoint)
    //address to send to
    ->payToAddress($send, (new BitWasp\Bitcoin\Address\AddressCreator)->fromString('bc1qlt95gkn9ufe6z36mgme8nfkjhjavlp79ynjrdz'))
    //change
    ->payToAddress($change, (new BitWasp\Bitcoin\Address\AddressCreator)->fromString('bc1q9pjjydvzyqd8n83znsv6zhh56lk8yztj3m7cjn'))
    ->get();

$tx_hex = $transaction->getHex();

$redeemScript = ScriptFactory::scriptPubKey()->p2wkh($privateKey->getPubKeyHash());
$p2shScript = new P2shScript($redeemScript);
$signData = new SignData();
$signData->p2sh($redeemScript);

$transactionOutputs = [];
foreach ($transaction->getInputs() as $idx => $input) {
    //$transactionOutput = new TransactionOutput(0, ScriptFactory::fromHex($input->getScript()->getBuffer()->getHex()));
    $transactionOutput = new TransactionOutput(0, ScriptFactory::fromHex($p2shScript->getBuffer()->getHex()));
    array_push($transactionOutputs, $transactionOutput);
}
$signer = new Signer($transaction, Bitcoin::getEcAdapter());
foreach ($transactionOutputs as $idx => $transactionOutput) {
    $signer->sign($idx, $privateKey, $transactionOutput, $signData);
}
$signedTx = $signer->get();
$hex = $signedTx->getHex();
@code2expert code2expert changed the title Please help - Error with creating a signed bitcoin transaction Error with creating a signed bitcoin transaction Jan 29, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant