bitcoin core – PHP Blockcypher error validating generated transaction: Error operating script for enter 0

0
63


Trying to make use of Blockcypher’s /txs/ship endpoint utilizing detailed right here: https://www.blockcypher.com/dev/bitcoin/#creating-transactions and I am getting the next error:

Error validating generated transaction: Error operating script for enter 0 referencing 5bf99cd9191700eb9c324a00dee0ac857b804f63c391490d9c21036e4c78ac73 at 0: Script was NOT verified efficiently.

Searched far and vast and may’t discover a cheap answer.

I generate the transaction successufully and this is a duplicate of my TX:

"tx": {
        "block_height": -1,
        "block_index": -1,
        "hash": "d64c7acf354b55c69756c4646b100245fe496633b1a5be9a7cc66f4f46cf797e",
        "addresses": [
            "n3nsT38n7k83FL5p7PPvkHgdwJAzA5QBoi",
            "tb1ql7w62elx9ucw4pj5lgw4l028hmuw80sndtntxt"
        ],
        "whole": 81172,
        "charges": 29300,
        "dimension": 223,
        "vsize": 223,
        "choice": "excessive",
        "relayed_by": "20.185.53.173",
        "obtained": "2022-04-19T11:58:00.294345726Z",
        "ver": 1,
        "double_spend": false,
        "vin_sz": 2,
        "vout_sz": 2,
        "confirmations": 0,
        "inputs": [
            {
                "prev_hash": "5bf99cd9191700eb9c324a00dee0ac857b804f63c391490d9c21036e4c78ac73",
                "output_index": 0,
                "output_value": 10000,
                "sequence": 4294967295,
                "addresses": [
                    "n3nsT38n7k83FL5p7PPvkHgdwJAzA5QBoi"
                ],
                "script_type": "pay-to-pubkey-hash",
                "age": 2196309
            },
            {
                "prev_hash": "f21f9e457d61ba4fa5858f3a4ba4c37179c12d1275a1bd799f0c0c91d3f15269",
                "output_index": 1,
                "output_value": 100472,
                "sequence": 4294967295,
                "addresses": [
                    "n3nsT38n7k83FL5p7PPvkHgdwJAzA5QBoi"
                ],
                "script_type": "pay-to-pubkey-hash",
                "age": 2196316
            }
        ],
        "outputs": [
            {
                "value": 500,
                "script": "0014ff9da567e62f30ea8654fa1d5fbd47bef8e3be13",
                "addresses": [
                    "tb1ql7w62elx9ucw4pj5lgw4l028hmuw80sndtntxt"
                ],
                "script_type": "pay-to-witness-pubkey-hash"
            },
            {
                "worth": 80672,
                "script": "76a914f45560cd98d9a84d6c568bb845db0cef81ed548288ac",
                "addresses": [
                    "n3nsT38n7k83FL5p7PPvkHgdwJAzA5QBoi"
                ],
                "script_type": "pay-to-pubkey-hash"
            }
        ]
    }

tosign:

"tosign": [
        "7a407b770128fd9cd51f95010904f05fecde80202d2fecd2340020d0994ce582",
        "1d03cbac44034426c236268684bedf169beb38210f9857a46086cdade4a9c910"
    ]

signatures:

"signatures": [
        "30450221009f04eccdc41ec135083110b1dcf2ed0edb4c68aefd627820944f9314020faa4e02202337b880a133e22c03df252cf43114158774173229efe2d2d47df6cdc70a610f",
        "3045022100de59d669e38b669b0a0d4451d7a453269da849a202cd325f4923565897d562e002202db8883506cc8f5cd87b6a61cbcfd793dd6107e3a073debf1b4d2b008fcb002e"
    ]

pubkeys:

"pubkeys": [
        "303231393839646331643236333136303662653139396564333261666531636238313362343034353565326462623232303563613962393336356134626232373330",
        "303231393839646331643236333136303662653139396564333261666531636238313362343034353565326462623232303563613962393336356134626232373330"
    ]

Deal with info (earlier than hex encoding utilizing bin2hex):

"personal": "a76b15c0b931b54141f73f127535ae946d45a52872306f7b5eaf3623290a1518",
    "public": "021989dc1d2631606be199ed32afe1cb813b40455e2dbb2205ca9b9365a4bb2730",
    "handle": "n3nsT38n7k83FL5p7PPvkHgdwJAzA5QBoi",
    "wif": "cTC98Ng4DP92Mgi34bJADkcDbc5giMMmmcTiSUHQQkEr92MsxYd2"

For context I take advantage of the next signing device offered by them to do the signing:

https://github.com/blockcypher/btcutils/tree/grasp/signer

It is a go binary which I complie and run by logging in by SSH utilizing phpseclib within the following method:

protected operate create_new_transaction()
{
    $enter = [["wallet_name" => $this->wallet_name, "wallet_token" => self::token]];
    $output = [["addresses" => ["$this->destination"], "worth" => (int)$this->worth]];

    $api_settings = $this->api_settings('/v1/btc/test3/txs/new?token=' . self::token . '&inputs=" . $enter . "&outputs=" . $output, "POST', TRUE, array('token' => self::token, 'inputs' => $enter, 'outputs' => $output));
    $outcome = GuzzleHttpjson_decode($api_settings, true);

    $to_sign = $outcome['tosign'];
    $inputs = $outcome['tx']['inputs'];


    // hex encoded arrays of values
    $public_keys_hex = $private_keys_hex = $addresses_hex = $signatures = array();

    foreach ($inputs as $worth) {
        $profile = new Profile();
        $profile->handle = $worth['addresses'][0];

        $address_lookup = $profile->single_address_lookup();

        if ($address_lookup['status']) {
            array_push($public_keys_hex, bin2hex($address_lookup['address_data'][0]['public_key']));
            array_push($private_keys_hex, bin2hex($address_lookup['address_data'][0]['private_key']));
            array_push($addresses_hex, bin2hex($address_lookup['address_data'][0]['address']));

        } else return [
            'status' => false,
            'message' => 'failed to retrieve address data'
        ];
    }


    foreach ($to_sign as $index => $signal) {
        $signature = $this->sign_payload($signal, $private_keys_hex[$index]);
        array_push($signatures, str_replace("n", "", $signature));
    }

    $outcome += ['signatures' => $signatures];
    $outcome += ['pubkeys' => $public_keys_hex];

    return empty($outcome) ? [
        'status' => false,
        'message' => "invalid response"
    ] : [
        'status' => true,
        'message' => $result
    ];
}

The precise sign_payload operate:

personal operate sign_payload($to_sign, $private_key)
{
    $ssh = new Net_SSH2('[ip_address]');
    if (!$ssh->login('root', '[password]')) {
        exit('ssh join failure');
    }

    return $ssh->exec("cd /var/www/vhosts/[domain_name]/httpdocs/btcutils/signern./signer " . $to_sign . " " . $private_key);
}

I am fully misplaced and I would respect some assist relating to this. PS: Tried reaching Blockcypher however they by no means reply emails, and there is very restricted info relating to this on-line.

On the Blockcypher docs there’s this remark:

One of the crucial frequent errors we see are customers who use uncompressed public keys when compressed public keys have been used to generate the handle; bear in mind to watch out to make use of the proper keys!

I do not know what which means, and I would love some clarification. Would additionally prefer to know if that’s inflicting my concern.

Thanks lots.

LEAVE A REPLY

Please enter your comment!
Please enter your name here