Closed nyusternie closed 4 years ago
So the UTXO selection in the SDK is not the most sophisticated, just keeps adding until it's enough, so in this case it first adds the 3066 UTXO, which is not enough, then it adds the 4271 UTXO. I understand that it is important for some contracts to have a different/better UTXO selection, so it is possible to manually provide that for a current lack of better alternative.
const coins = await contractInstance.getUtxos();
// perform your own UTXO selection here
const selectedCoins = ...;
const txid = await contractInstance.functions.xxx(...)
.from(selectedCoins)
.to(...)
.send();
Relevant docs: getUtxos()
, from()
.
I've been using getUtxos()
and from()
, but still getting weird results (read. failures) .. i need to sort out the meep
debugger to get a better view on what's happening under the hood 🧐
Hmm. If you are using from()
and you're getting unexpected inputs, then either there's a mistake in your implemented coin selection or there's a bug in the CashScript SDK. Can you provide the code that you're using to select the correct coins before passing them into from()
?
From my test script:
Recipient address : bitcoincash:qq638hdce3q0pg370hfee7f7sgxkw6j46c9cw9sqer
pk hash : 3513ddb8cc40f0a23e7dd39cf93e820d676a55d6
Funder public key : 039784caf46374d1b3b5c568e03536aaceb356174a91f93c5d3c41cc562ec21a51
pk hash : 55670d530c2feb8a7a2d0bb2d888d6db02e1a1cb
address : bitcoincash:qp2kwr2npsh7hzn6959m9kyg6mds9cdpevpnss2gu0
Oracle public key : 0344b28c3daf7c88741c483f068fa4525572587263af3344c631bccf5df6492f12
pk hash : 4dec2661eb4de14a3b8cda28fb7ca19f0e98cad0
address : bitcoincash:qpx7cfnpadx7zj3m3ndz37mu5x0saxx26qvtj6u8ds
Contract address : bitcoincash:pz6kkjuwhmpspjf6q5ta8g0rq8qqsepzvc5rqn2met
Contract opcount : 99
Contract bytesize : 240
Contract balance : 12994
Contract UTXOs : [
{
txid: '62783fbc9abb4d1e4fc364a466f42b397d2bb5aa22b74785939f2111321a46fb',
vout: 1,
amount: 0.00000546,
satoshis: 546,
height: 646784,
confirmations: 578
},
{
txid: '2371e424993281e3fcf454f84ed57229246319821dfb92a5afc60ce14d7ec563',
vout: 1,
amount: 0.00000546,
satoshis: 546,
height: 646427,
confirmations: 935
},
{
txid: '4cf245fc3ef9e4453419e36a48932c203b79054dec67e5a22d69fa80549c549e',
vout: 1,
amount: 0.00000546,
satoshis: 546,
height: 646426,
confirmations: 936
},
{
txid: '3d52ccdd2c189849955fe21da459837afdcd058e17cb6f187f96c63b7811616e',
vout: 1,
amount: 0.00000546,
satoshis: 546,
height: 646322,
confirmations: 1040
},
{
txid: '65167884c2ba527e7ad90e67e4519ea452b4d431b45982a8f5928f5fd695cf37',
vout: 1,
amount: 0.00001066,
satoshis: 1066,
height: 646289,
confirmations: 1073
},
{
txid: '2bf09d3b9bde998d19b90923ab1fcce485b62880d95449f00147851b53fb47e7',
vout: 1,
amount: 0.00001066,
satoshis: 1066,
height: 646289,
confirmations: 1073
},
{
txid: '72efb5bf8e04a730446070eb26d3095064454428ff707a6e4e9f9b3a68448a78',
vout: 1,
amount: 0.00001066,
satoshis: 1066,
height: 646289,
confirmations: 1073
},
{
txid: '2a7ab37157095ea693a62088ef3d45822d714f573e11103d3fb71adc502b423e',
vout: 1,
amount: 0.00001066,
satoshis: 1066,
height: 646286,
confirmations: 1076
},
{
txid: '2787c13b2ee92ff575c5cb957b4fb46670b49987d7a112bc268de30e7ac6e700',
vout: 0,
amount: 0.00004934,
satoshis: 4934,
height: 646281,
confirmations: 1081
},
{
txid: 'b47ea7b307e41f7b94b116b56d73ca3b3ca995f370347f973b8a46f648f06066',
vout: 1,
amount: 0.00001066,
satoshis: 1066,
height: 646280,
confirmations: 1082
},
{
txid: '01f42a76da08bbf243da30a30ea59ece4c30984a46c6dbc9b02138751be8881e',
vout: 0,
amount: 0.00000546,
satoshis: 546,
height: 646279,
confirmations: 1083
}
]
FailedRequireError: Transaction failed with reason: mandatory-script-verify-flag-failed (Script evaluated without error but finished with a false/empty top stack element) (code 16)
meep debug --tx=020000000200e7c67a0ee38d26bc12a1d78799b47066b44f7b95cbc575f52fe92e3bc1872700000000fd3b030c39dc090039050000760b000046304402205f33a7c1e25b898114770fef6b7a280accb7e17350a877150c3393b41a34f4e502207ec25fdf84428ac09622359c7e6bedb7ce77f1b696315b47d116bbde4197c5fa4184c7499c45a48d07e10c023fdb60ecc3a9542f61e5ada58e172c7a95dd0a13019a351b6d780588d833ca340da8a79ae4f031d5a28b405d9c899eaf3824bce22441210344b28c3daf7c88741c483f068fa4525572587263af3344c631bccf5df6492f124d8d01020000008e3afe9bb7e177906274645ef63f9e7b44cd4091aa9ff3be7f63654093a1ce0f7ef0ca626bbb058dd443bb78e33b888bdec8295c96e51f5545f96370870c10b900e7c67a0ee38d26bc12a1d78799b47066b44f7b95cbc575f52fe92e3bc1872700000000f00239050333d009210344b28c3daf7c88741c483f068fa4525572587263af3344c631bccf5df6492f121455670d530c2feb8a7a2d0bb2d888d6db02e1a1cb143513ddb8cc40f0a23e7dd39cf93e820d676a55d65579009c63567901697f77820134947f587f547f7701207f755b7a5b796e7c828c7f755d7aa87bbbad5a7a5b795779bb597a567a876300b2756751b275685879547f758176b175567aa2695779547f77547f7581567a9d567a587f778102d007537a8152795880041976a9147e567a7e0288ac7e7c537a947b9458800317a9147e537aa97e01877e7eaa87777767557a519d5579a97b8871ad6d6d5168461300000000000000000000e832f6bcc0970f9c1cff6d5596827f86a39ec98dbba7b7931cff100a00145635c1e0090041000000004cf00239050333d009210344b28c3daf7c88741c483f068fa4525572587263af3344c631bccf5df6492f121455670d530c2feb8a7a2d0bb2d888d6db02e1a1cb143513ddb8cc40f0a23e7dd39cf93e820d676a55d65579009c63567901697f77820134947f587f547f7701207f755b7a5b796e7c828c7f755d7aa87bbbad5a7a5b795779bb597a567a876300b2756751b275685879547f758176b175567aa2695779547f77547f7581567a9d567a587f778102d007537a8152795880041976a9147e567a7e0288ac7e7c537a947b9458800317a9147e537aa97e01877e7eaa87777767557a519d5579a97b8871ad6d6d516800000000fb461a3211219f938547b722aab52b7d392bf466a464c34f1e4dbb9abc3f786201000000fd3b030c39dc090039050000760b000046304402205f33a7c1e25b898114770fef6b7a280accb7e17350a877150c3393b41a34f4e502207ec25fdf84428ac09622359c7e6bedb7ce77f1b696315b47d116bbde4197c5fa41a586f6b1bbe0010acff7cd2fe44fa814418298e8fa62f0a31774c7969db4137a27e0e6a1f55895bc0fbf083ea40f3fc63d6d1101443691db45f01a72fdf028af41210344b28c3daf7c88741c483f068fa4525572587263af3344c631bccf5df6492f124d8d01020000008e3afe9bb7e177906274645ef63f9e7b44cd4091aa9ff3be7f63654093a1ce0f7ef0ca626bbb058dd443bb78e33b888bdec8295c96e51f5545f96370870c10b9fb461a3211219f938547b722aab52b7d392bf466a464c34f1e4dbb9abc3f786201000000f00239050333d009210344b28c3daf7c88741c483f068fa4525572587263af3344c631bccf5df6492f121455670d530c2feb8a7a2d0bb2d888d6db02e1a1cb143513ddb8cc40f0a23e7dd39cf93e820d676a55d65579009c63567901697f77820134947f587f547f7701207f755b7a5b796e7c828c7f755d7aa87bbbad5a7a5b795779bb597a567a876300b2756751b275685879547f758176b175567aa2695779547f77547f7581567a9d567a587f778102d007537a8152795880041976a9147e567a7e0288ac7e7c537a947b9458800317a9147e537aa97e01877e7eaa87777767557a519d5579a97b8871ad6d6d5168220200000000000000000000e832f6bcc0970f9c1cff6d5596827f86a39ec98dbba7b7931cff100a00145635c1e0090041000000004cf00239050333d009210344b28c3daf7c88741c483f068fa4525572587263af3344c631bccf5df6492f121455670d530c2feb8a7a2d0bb2d888d6db02e1a1cb143513ddb8cc40f0a23e7dd39cf93e820d676a55d65579009c63567901697f77820134947f587f547f7701207f755b7a5b796e7c828c7f755d7aa87bbbad5a7a5b795779bb597a567a876300b2756751b275685879547f758176b175567aa2695779547f77547f7581567a9d567a587f778102d007537a8152795880041976a9147e567a7e0288ac7e7c537a947b9458800317a9147e537aa97e01877e7eaa87777767557a519d5579a97b8871ad6d6d51680000000002760b0000000000001976a9143513ddb8cc40f0a23e7dd39cf93e820d676a55d688ac220200000000000017a914b56b4b8ebec300c93a0517d3a1e301c00864226687c1e00900 --idx=0 --amt=4934 --pkscript=a914b56b4b8ebec300c93a0517d3a1e301c00864226687
And here is the JS:
const tx = await instance.functions
.payout(oraclePk, new SignatureTemplate(oracle), oracleSig, oracleMsg)
// .payout(funderPk, new SignatureTemplate(funder), oracleSig, oracleMsg)
// .from([contractUtxos.find(utxo => utxo.satoshis === 4934), contractUtxos.find(utxo => utxo.satoshis === 1066)])
.from([contractUtxos.find(utxo => utxo.satoshis === 4934), contractUtxos.find(utxo => utxo.satoshis === 546)])
// .from([contractUtxos.find(utxo => utxo.satoshis === 6000)])
// .from([contractUtxos.find(utxo => utxo.satoshis === 5480)])
// .from([contractUtxos.find(utxo => utxo.satoshis === 4934)])
.to(recipientAddress, 2934)
.withHardcodedFee(minerFee) // fee is 2,000 sats
.withAge(0)
.send()
.catch(err => console.error(err))
fyi, my contract currently has a constraint that requires "change", so that's why I'm forced to send 546
as a 2nd output .. so this works with the 6000
UTXO and also with the 5480
UTXO (which is 546 + 4934
), but NOT with the 2 separate UTXOs 4934
and 546
; so maybe I'm just NOT using from()
correctly here??
but what I'd like is to be able to:
4934
and 546
UTXOs2000
fee2934
to the recipient then 546
back to the contractfwiw, if I run the above without from()
, I receive this:
FailedTransactionError: Transaction failed with reason: undefined
meep debug --tx=02000000086f4e7c43e5421a8d5a074f7324b64942990977c758d1f34abfe527ac78a3b64301000000fd3b030c39dc090039050000760b000046304402205f33a7c1e25b898114770fef6b7a280accb7e17350a877150c3393b41a34f4e502207ec25fdf84428ac09622359c7e6bedb7ce77f1b696315b47d116bbde4197c5fa41efcd8ba8e2c2491a473c553503e9145a12a420db87a9d4e8efd295f7a70b16e6d3883f69de1a86e370c983f5ddaba14750569e6efa846f3d3add1e5e5a37e19a41210344b28c3daf7c88741c483f068fa4525572587263af3344c631bccf5df6492f124d8d010200000071bba45feae6c895b41505447c2edd370b32409c08e2fe50de3cc0ccbe950a0c2b32db6c2c0a6235fb1397e8225ea85e0f0e6e8c7b126d0016ccbde0e667151e6f4e7c43e5421a8d5a074f7324b64942990977c758d1f34abfe527ac78a3b64301000000f00239050333d009210344b28c3daf7c88741c483f068fa4525572587263af3344c631bccf5df6492f121455670d530c2feb8a7a2d0bb2d888d6db02e1a1cb143513ddb8cc40f0a23e7dd39cf93e820d676a55d65579009c63567901697f77820134947f587f547f7701207f755b7a5b796e7c828c7f755d7aa87bbbad5a7a5b795779bb597a567a876300b2756751b275685879547f758176b175567aa2695779547f77547f7581567a9d567a587f778102d007537a8152795880041976a9147e567a7e0288ac7e7c537a947b9458800317a9147e537aa97e01877e7eaa87777767557a519d5579a97b8871ad6d6d5168220200000000000000000000757e6adabc9c607d32de72fe813a1e99d3efe78f100261efa5af22443fde96fbc2e0090041000000004cf00239050333d009210344b28c3daf7c88741c483f068fa4525572587263af3344c631bccf5df6492f121455670d530c2feb8a7a2d0bb2d888d6db02e1a1cb143513ddb8cc40f0a23e7dd39cf93e820d676a55d65579009c63567901697f77820134947f587f547f7701207f755b7a5b796e7c828c7f755d7aa87bbbad5a7a5b795779bb597a567a876300b2756751b275685879547f758176b175567aa2695779547f77547f7581567a9d567a587f778102d007537a8152795880041976a9147e567a7e0288ac7e7c537a947b9458800317a9147e537aa97e01877e7eaa87777767557a519d5579a97b8871ad6d6d516800000000fb461a3211219f938547b722aab52b7d392bf466a464c34f1e4dbb9abc3f786201000000fd3b030c39dc090039050000760b000046304402205f33a7c1e25b898114770fef6b7a280accb7e17350a877150c3393b41a34f4e502207ec25fdf84428ac09622359c7e6bedb7ce77f1b696315b47d116bbde4197c5fa41d7ed9ceb0ad2555bc037199e4dce7ff799768323478def2952f6ce930f3f5e564c606bdc5482373eddea38801e0a81709ca0695faf29f827cde80478950bacb541210344b28c3daf7c88741c483f068fa4525572587263af3344c631bccf5df6492f124d8d010200000071bba45feae6c895b41505447c2edd370b32409c08e2fe50de3cc0ccbe950a0c2b32db6c2c0a6235fb1397e8225ea85e0f0e6e8c7b126d0016ccbde0e667151efb461a3211219f938547b722aab52b7d392bf466a464c34f1e4dbb9abc3f786201000000f00239050333d009210344b28c3daf7c88741c483f068fa4525572587263af3344c631bccf5df6492f121455670d530c2feb8a7a2d0bb2d888d6db02e1a1cb143513ddb8cc40f0a23e7dd39cf93e820d676a55d65579009c63567901697f77820134947f587f547f7701207f755b7a5b796e7c828c7f755d7aa87bbbad5a7a5b795779bb597a567a876300b2756751b275685879547f758176b175567aa2695779547f77547f7581567a9d567a587f778102d007537a8152795880041976a9147e567a7e0288ac7e7c537a947b9458800317a9147e537aa97e01877e7eaa87777767557a519d5579a97b8871ad6d6d5168220200000000000000000000757e6adabc9c607d32de72fe813a1e99d3efe78f100261efa5af22443fde96fbc2e0090041000000004cf00239050333d009210344b28c3daf7c88741c483f068fa4525572587263af3344c631bccf5df6492f121455670d530c2feb8a7a2d0bb2d888d6db02e1a1cb143513ddb8cc40f0a23e7dd39cf93e820d676a55d65579009c63567901697f77820134947f587f547f7701207f755b7a5b796e7c828c7f755d7aa87bbbad5a7a5b795779bb597a567a876300b2756751b275685879547f758176b175567aa2695779547f77547f7581567a9d567a587f778102d007537a8152795880041976a9147e567a7e0288ac7e7c537a947b9458800317a9147e537aa97e01877e7eaa87777767557a519d5579a97b8871ad6d6d51680000000063c57e4de10cc6afa592fb1d821963242972d54ef854f4fce381329924e4712301000000fd3b030c39dc090039050000760b000046304402205f33a7c1e25b898114770fef6b7a280accb7e17350a877150c3393b41a34f4e502207ec25fdf84428ac09622359c7e6bedb7ce77f1b696315b47d116bbde4197c5fa41ce8094b772a6aa460ae4170a1007eedb80dfae0916f45b6ab0b46a8c93e411c844bcbd7dca23f01a391bcba5f09facf89f0bd824b01d730af584bd74df8fd6b141210344b28c3daf7c88741c483f068fa4525572587263af3344c631bccf5df6492f124d8d010200000071bba45feae6c895b41505447c2edd370b32409c08e2fe50de3cc0ccbe950a0c2b32db6c2c0a6235fb1397e8225ea85e0f0e6e8c7b126d0016ccbde0e667151e63c57e4de10cc6afa592fb1d821963242972d54ef854f4fce381329924e4712301000000f00239050333d009210344b28c3daf7c88741c483f068fa4525572587263af3344c631bccf5df6492f121455670d530c2feb8a7a2d0bb2d888d6db02e1a1cb143513ddb8cc40f0a23e7dd39cf93e820d676a55d65579009c63567901697f77820134947f587f547f7701207f755b7a5b796e7c828c7f755d7aa87bbbad5a7a5b795779bb597a567a876300b2756751b275685879547f758176b175567aa2695779547f77547f7581567a9d567a587f778102d007537a8152795880041976a9147e567a7e0288ac7e7c537a947b9458800317a9147e537aa97e01877e7eaa87777767557a519d5579a97b8871ad6d6d5168220200000000000000000000757e6adabc9c607d32de72fe813a1e99d3efe78f100261efa5af22443fde96fbc2e0090041000000004cf00239050333d009210344b28c3daf7c88741c483f068fa4525572587263af3344c631bccf5df6492f121455670d530c2feb8a7a2d0bb2d888d6db02e1a1cb143513ddb8cc40f0a23e7dd39cf93e820d676a55d65579009c63567901697f77820134947f587f547f7701207f755b7a5b796e7c828c7f755d7aa87bbbad5a7a5b795779bb597a567a876300b2756751b275685879547f758176b175567aa2695779547f77547f7581567a9d567a587f778102d007537a8152795880041976a9147e567a7e0288ac7e7c537a947b9458800317a9147e537aa97e01877e7eaa87777767557a519d5579a97b8871ad6d6d5168000000009e549c5480fa692da2e567ec4d05793b202c93486ae3193445e4f93efc45f24c01000000fd3b030c39dc090039050000760b000046304402205f33a7c1e25b898114770fef6b7a280accb7e17350a877150c3393b41a34f4e502207ec25fdf84428ac09622359c7e6bedb7ce77f1b696315b47d116bbde4197c5fa417ec214a44a5e2c9aabe07fdaa2b00b44b8e18ef52fe4afee7039a45465859ddd816869774ddee2ceaf3d20d76d85f51cbf21280798a7bd33fa49bde32f77ebb641210344b28c3daf7c88741c483f068fa4525572587263af3344c631bccf5df6492f124d8d010200000071bba45feae6c895b41505447c2edd370b32409c08e2fe50de3cc0ccbe950a0c2b32db6c2c0a6235fb1397e8225ea85e0f0e6e8c7b126d0016ccbde0e667151e9e549c5480fa692da2e567ec4d05793b202c93486ae3193445e4f93efc45f24c01000000f00239050333d009210344b28c3daf7c88741c483f068fa4525572587263af3344c631bccf5df6492f121455670d530c2feb8a7a2d0bb2d888d6db02e1a1cb143513ddb8cc40f0a23e7dd39cf93e820d676a55d65579009c63567901697f77820134947f587f547f7701207f755b7a5b796e7c828c7f755d7aa87bbbad5a7a5b795779bb597a567a876300b2756751b275685879547f758176b175567aa2695779547f77547f7581567a9d567a587f778102d007537a8152795880041976a9147e567a7e0288ac7e7c537a947b9458800317a9147e537aa97e01877e7eaa87777767557a519d5579a97b8871ad6d6d5168220200000000000000000000757e6adabc9c607d32de72fe813a1e99d3efe78f100261efa5af22443fde96fbc2e0090041000000004cf00239050333d009210344b28c3daf7c88741c483f068fa4525572587263af3344c631bccf5df6492f121455670d530c2feb8a7a2d0bb2d888d6db02e1a1cb143513ddb8cc40f0a23e7dd39cf93e820d676a55d65579009c63567901697f77820134947f587f547f7701207f755b7a5b796e7c828c7f755d7aa87bbbad5a7a5b795779bb597a567a876300b2756751b275685879547f758176b175567aa2695779547f77547f7581567a9d567a587f778102d007537a8152795880041976a9147e567a7e0288ac7e7c537a947b9458800317a9147e537aa97e01877e7eaa87777767557a519d5579a97b8871ad6d6d5168000000006e6111783bc6967f186fcb178e05cdfd7a8359a41de25f954998182cddcc523d01000000fd3b030c39dc090039050000760b000046304402205f33a7c1e25b898114770fef6b7a280accb7e17350a877150c3393b41a34f4e502207ec25fdf84428ac09622359c7e6bedb7ce77f1b696315b47d116bbde4197c5fa4145bb96b003c9d9613b69b087039a82f37aeb7ac6d191749ee3816f18d0aafac6cbbda4cbf078c0d15820502b378491a826c296b0e5b0f31908ecb89e16b8dc0441210344b28c3daf7c88741c483f068fa4525572587263af3344c631bccf5df6492f124d8d010200000071bba45feae6c895b41505447c2edd370b32409c08e2fe50de3cc0ccbe950a0c2b32db6c2c0a6235fb1397e8225ea85e0f0e6e8c7b126d0016ccbde0e667151e6e6111783bc6967f186fcb178e05cdfd7a8359a41de25f954998182cddcc523d01000000f00239050333d009210344b28c3daf7c88741c483f068fa4525572587263af3344c631bccf5df6492f121455670d530c2feb8a7a2d0bb2d888d6db02e1a1cb143513ddb8cc40f0a23e7dd39cf93e820d676a55d65579009c63567901697f77820134947f587f547f7701207f755b7a5b796e7c828c7f755d7aa87bbbad5a7a5b795779bb597a567a876300b2756751b275685879547f758176b175567aa2695779547f77547f7581567a9d567a587f778102d007537a8152795880041976a9147e567a7e0288ac7e7c537a947b9458800317a9147e537aa97e01877e7eaa87777767557a519d5579a97b8871ad6d6d5168220200000000000000000000757e6adabc9c607d32de72fe813a1e99d3efe78f100261efa5af22443fde96fbc2e0090041000000004cf00239050333d009210344b28c3daf7c88741c483f068fa4525572587263af3344c631bccf5df6492f121455670d530c2feb8a7a2d0bb2d888d6db02e1a1cb143513ddb8cc40f0a23e7dd39cf93e820d676a55d65579009c63567901697f77820134947f587f547f7701207f755b7a5b796e7c828c7f755d7aa87bbbad5a7a5b795779bb597a567a876300b2756751b275685879547f758176b175567aa2695779547f77547f7581567a9d567a587f778102d007537a8152795880041976a9147e567a7e0288ac7e7c537a947b9458800317a9147e537aa97e01877e7eaa87777767557a519d5579a97b8871ad6d6d51680000000037cf95d65f8f92f5a88259b431d4b452a49e51e4670ed97a7e52bac28478166501000000fd3b030c39dc090039050000760b000046304402205f33a7c1e25b898114770fef6b7a280accb7e17350a877150c3393b41a34f4e502207ec25fdf84428ac09622359c7e6bedb7ce77f1b696315b47d116bbde4197c5fa4181fd95f5f74382524ad6d8a1d4e97c710d04ec3d628f1a93cf6098de00d3ba10727e41a0c1b30b109c3d6c4f9b710663cd11a5b81ffd27d4d9ff44dfae90a7a641210344b28c3daf7c88741c483f068fa4525572587263af3344c631bccf5df6492f124d8d010200000071bba45feae6c895b41505447c2edd370b32409c08e2fe50de3cc0ccbe950a0c2b32db6c2c0a6235fb1397e8225ea85e0f0e6e8c7b126d0016ccbde0e667151e37cf95d65f8f92f5a88259b431d4b452a49e51e4670ed97a7e52bac28478166501000000f00239050333d009210344b28c3daf7c88741c483f068fa4525572587263af3344c631bccf5df6492f121455670d530c2feb8a7a2d0bb2d888d6db02e1a1cb143513ddb8cc40f0a23e7dd39cf93e820d676a55d65579009c63567901697f77820134947f587f547f7701207f755b7a5b796e7c828c7f755d7aa87bbbad5a7a5b795779bb597a567a876300b2756751b275685879547f758176b175567aa2695779547f77547f7581567a9d567a587f778102d007537a8152795880041976a9147e567a7e0288ac7e7c537a947b9458800317a9147e537aa97e01877e7eaa87777767557a519d5579a97b8871ad6d6d51682a0400000000000000000000757e6adabc9c607d32de72fe813a1e99d3efe78f100261efa5af22443fde96fbc2e0090041000000004cf00239050333d009210344b28c3daf7c88741c483f068fa4525572587263af3344c631bccf5df6492f121455670d530c2feb8a7a2d0bb2d888d6db02e1a1cb143513ddb8cc40f0a23e7dd39cf93e820d676a55d65579009c63567901697f77820134947f587f547f7701207f755b7a5b796e7c828c7f755d7aa87bbbad5a7a5b795779bb597a567a876300b2756751b275685879547f758176b175567aa2695779547f77547f7581567a9d567a587f778102d007537a8152795880041976a9147e567a7e0288ac7e7c537a947b9458800317a9147e537aa97e01877e7eaa87777767557a519d5579a97b8871ad6d6d516800000000e747fb531b854701f04954d98028b685e4cc1fab2309b9198d99de9b3b9df02b01000000fd3b030c39dc090039050000760b000046304402205f33a7c1e25b898114770fef6b7a280accb7e17350a877150c3393b41a34f4e502207ec25fdf84428ac09622359c7e6bedb7ce77f1b696315b47d116bbde4197c5fa418afa28021f16aec73d9ee9af7e89d7b39acd2e8d776b504ab30d144b76955a02d86046782929c9a5bfebf022f32916063ab6eb6667dd61cfd3f1df632f89e07141210344b28c3daf7c88741c483f068fa4525572587263af3344c631bccf5df6492f124d8d010200000071bba45feae6c895b41505447c2edd370b32409c08e2fe50de3cc0ccbe950a0c2b32db6c2c0a6235fb1397e8225ea85e0f0e6e8c7b126d0016ccbde0e667151ee747fb531b854701f04954d98028b685e4cc1fab2309b9198d99de9b3b9df02b01000000f00239050333d009210344b28c3daf7c88741c483f068fa4525572587263af3344c631bccf5df6492f121455670d530c2feb8a7a2d0bb2d888d6db02e1a1cb143513ddb8cc40f0a23e7dd39cf93e820d676a55d65579009c63567901697f77820134947f587f547f7701207f755b7a5b796e7c828c7f755d7aa87bbbad5a7a5b795779bb597a567a876300b2756751b275685879547f758176b175567aa2695779547f77547f7581567a9d567a587f778102d007537a8152795880041976a9147e567a7e0288ac7e7c537a947b9458800317a9147e537aa97e01877e7eaa87777767557a519d5579a97b8871ad6d6d51682a0400000000000000000000757e6adabc9c607d32de72fe813a1e99d3efe78f100261efa5af22443fde96fbc2e0090041000000004cf00239050333d009210344b28c3daf7c88741c483f068fa4525572587263af3344c631bccf5df6492f121455670d530c2feb8a7a2d0bb2d888d6db02e1a1cb143513ddb8cc40f0a23e7dd39cf93e820d676a55d65579009c63567901697f77820134947f587f547f7701207f755b7a5b796e7c828c7f755d7aa87bbbad5a7a5b795779bb597a567a876300b2756751b275685879547f758176b175567aa2695779547f77547f7581567a9d567a587f778102d007537a8152795880041976a9147e567a7e0288ac7e7c537a947b9458800317a9147e537aa97e01877e7eaa87777767557a519d5579a97b8871ad6d6d516800000000788a44683a9b9f4e6e7a70ff284445645009d326eb70604430a7048ebfb5ef7201000000fd3b030c39dc090039050000760b000046304402205f33a7c1e25b898114770fef6b7a280accb7e17350a877150c3393b41a34f4e502207ec25fdf84428ac09622359c7e6bedb7ce77f1b696315b47d116bbde4197c5fa41b7343b2caa11b3d7416840b3807623c63a136a44dd16cf7b41c5c09d07d079247fd074485f3dda7309145beb775dbf9421df84f3bd0231d0c6e7b2ab8147dc6641210344b28c3daf7c88741c483f068fa4525572587263af3344c631bccf5df6492f124d8d010200000071bba45feae6c895b41505447c2edd370b32409c08e2fe50de3cc0ccbe950a0c2b32db6c2c0a6235fb1397e8225ea85e0f0e6e8c7b126d0016ccbde0e667151e788a44683a9b9f4e6e7a70ff284445645009d326eb70604430a7048ebfb5ef7201000000f00239050333d009210344b28c3daf7c88741c483f068fa4525572587263af3344c631bccf5df6492f121455670d530c2feb8a7a2d0bb2d888d6db02e1a1cb143513ddb8cc40f0a23e7dd39cf93e820d676a55d65579009c63567901697f77820134947f587f547f7701207f755b7a5b796e7c828c7f755d7aa87bbbad5a7a5b795779bb597a567a876300b2756751b275685879547f758176b175567aa2695779547f77547f7581567a9d567a587f778102d007537a8152795880041976a9147e567a7e0288ac7e7c537a947b9458800317a9147e537aa97e01877e7eaa87777767557a519d5579a97b8871ad6d6d51682a0400000000000000000000757e6adabc9c607d32de72fe813a1e99d3efe78f100261efa5af22443fde96fbc2e0090041000000004cf00239050333d009210344b28c3daf7c88741c483f068fa4525572587263af3344c631bccf5df6492f121455670d530c2feb8a7a2d0bb2d888d6db02e1a1cb143513ddb8cc40f0a23e7dd39cf93e820d676a55d65579009c63567901697f77820134947f587f547f7701207f755b7a5b796e7c828c7f755d7aa87bbbad5a7a5b795779bb597a567a876300b2756751b275685879547f758176b175567aa2695779547f77547f7581567a9d567a587f778102d007537a8152795880041976a9147e567a7e0288ac7e7c537a947b9458800317a9147e537aa97e01877e7eaa87777767557a519d5579a97b8871ad6d6d51680000000002760b0000000000001976a9143513ddb8cc40f0a23e7dd39cf93e820d676a55d688ace20300000000000017a914b56b4b8ebec300c93a0517d3a1e301c00864226687c2e00900 --idx=0 --amt=546 --pkscript=a914b56b4b8ebec300c93a0517d3a1e301c00864226687
If I decode the transaction in your "test script" snippet, it has the correct inputs selected (4934, 546). The outputs also look correct (2934, 546), so the UTXO selection is working correctly.
But your tx.hashOutputs
check fails at the end of the contract, so there's most likely something going on with the contract implementation. Let's continue this conversation in DM (Twitter?) so we can try debugging it later. Closing the issue for now.
I haven't fully explored this issue, however, I think this is a good example of the problem I'm experiencing, so I'm just gonna place this here to relax while I continue my experimentation:
So the issue above is that I'm attempting to use a UTXO
value: 4271
in a contract where the value is sufficient AND exact; however, the SDK is still requesting an additional UTXOvalue: 3066
, only to then send the full UTXOvalue: '0.00003066'
as an output. WHY?Currently, I have contracts "randomly" failing; and the inconsistency is wearing on my patience 😒 i mean I would ❤️ to get something like Truffle Suite for Bitcoin Cash, but maybe that's a bit much to ask for right now .. or is it??? 🤔