0

I want to calculate the fees of a blocktrail transaction with blocktrail SDK, before making the transaction, in order to let the recipient pay fees.

Here is what I tried:

$FEES = $wallet->coinSelection(\Blocktrail\SDK\Wallet::normalizeOutputsStruct(['66f4dec6ab29cd056ce1814c6fdfee05e1524b36' =>'100000']),false,false,\Blocktrail\SDK\Wallet::FEE_STRATEGY_LOW_PRIORITY;
echo "$FEES";
$fee = $FEES['fee'];
echo "$fee";

But this don't work, it says this: Fatal error: Uncaught Blocktrail\SDK\Exceptions\BlocktrailSDKException: Address not recognized

How can I fix this error?

meshcollider
  • 11,695
  • 4
  • 24
  • 52

3 Answers3

1

66f4dec6ab29cd056ce1814c6fdfee05e1524b36 is not a valid Bitcoin address.

Valid Bitcoin addresses on mainnet start with a 1 (P2PKH), 3 (P2SH), or bc1 (segwit).

On testnet, the addresses start with m or n (P2PKH), 2 (P2SH), or tb1 (segwit).

meshcollider
  • 11,695
  • 4
  • 24
  • 52
1

I am not sure as have not used their api system but it could be down to the format of your bitcoin address you are passing in.

66f4dec6ab29cd056ce1814c6fdfee05e1524b36 is read as a valid bitcoin address using this service

However when I search that address under a block explorer I get the following address which starts with the more common 1 1APPGSyMsPaBUAHtjEm6tPqV9U54JRzmd6

66f is not a start of a bitcoin address i recognise, though there are many out but no mention on the wiki

Thus I would suggest trying your code with the more common bitcoin address format

$FEES = $wallet->coinSelection(\Blocktrail\SDK\Wallet::normalizeOutputsStruct(['1APPGSyMsPaBUAHtjEm6tPqV9U54JRzmd6' =>'100000']),false,false,\Blocktrail\SDK\Wallet::FEE_STRATEGY_LOW_PRIORITY['fee'];
echo "$FEES";

And see if that works

Fuzzybear
  • 467
  • 1
  • 7
  • 19
  • Thanks for reply, but it still don't work, same error – user10148040 Jul 29 '18 at 12:51
  • hmm One thing I would want to verify next would be that the `coinSelection` part of your code is definitely choosing bitcoin? – Fuzzybear Jul 29 '18 at 12:56
  • Yes, it is bitcoin, the only thing is that I'm using the bitcoin testnet, that I have initialized before, $client = new BlocktrailSDK("api", "api", "BTC", true); – user10148040 Jul 29 '18 at 12:59
  • 66f4dec6ab29cd056ce1814c6fdfee05e1524b36 is a bitcoin test net address – user10148040 Jul 29 '18 at 13:04
  • might be you need to specify the testnet on the fee transaction as well... what are the `false,false` parts submitted after the address? though i would have expected that to have worked with the bitcoin address starting with the 1. So not sure, have you tried speaking directly to their support? – Fuzzybear Jul 29 '18 at 14:13
0

after init wallet

$wallet = $client->initWallet("WALLET", "PASS");

You can force a fee. I don't know if that will serve you.

$fee = 0.0001;

$wallet->pay(array("address" => BlocktrailSDK::toSatoshi(0.00200000)), null, false, false, Wallet::FEE_STRATEGY_FORCE_FEE, BlocktrailSDK::toSatoshi($fee));