0

I do

bitcoin-cli settxfee 0.00088496
true

or

$fee = '0.00088496';
if ($bitcoin->settxfee($fee)) {

and then $redeem = $b->sendtoaddress($address, 0.0001);

And I expect payment in bytes will be equal to 88.496. And fee is approximately 0.00021 BTC. But it's not. Why?

Size - 247 (bytes)
Weight - 661
Fees - 0.0001469 BTC
Fee per byte - 59.474 sat/B
Fee per weight unit - 22.224 sat/WU
2019-09-24T16:25:14Z [default wallet] Fee Calculation: Fee:14690 Bytes:166 Needed:14690 Tgt:0 (requested 0) Reason:"PayTxFee set" Decay 0.00000: Est
imation: (-1 - -1) -nan% 0.0/(0.0 0 mem 0.0 out) Fail: (-1 - -1) -nan% 0.0/(0.0 0 mem 0.0 out)

Ubuntu 16.04.3 Bitcoind 0.18.0

Previously, this problem was not. This started to happen after upgrading to version 0.18.0.

On github I was told that are not bytes, and the "virtual bytes". What's it? Where did they come from? I've never had this problem before.

Previously, I could accurately select a commission for a simple transaction by settxfee(0.0001/0.226). What about virtual bytes now?