You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Jan 25, 2024. It is now read-only.
if sum of amounts of shielded outputs is greater than sum of amounts of shielded inputs then tx.valueBalance is < 0. Such tx breaks Transaction.prototype.getHash
How to reproduce:
// https://zec1.trezor.io/tx/5dc7af90852a4a99e99822c6bf6996fac081fed3c51ef5912e362868069d8dc2
const hex = '0400008085202f890274e035266a710c06c8f0c93120b0153830c3f93a307e8a5685f49bb84162f6f4000000006b483045022100e7d80c47befab2c9494d64c211f4abd104aab2b75f31443b77438c4e3be4dd07022075bf764129c4775d1df4e26eb997793ed4531c4c27ddf7ff0fd188333ac58d350121033ed695b802987fb44f4401397f051cdaa9260a638f5359f866d776abf6f1549effffffffd9641e046765e49f5d9b2c0e033fc300cad47a6175e081854cc76ae8cc9253cf1c0000006a473044022045911112e79e6e0511850b20c284a21e9089ea4d10821f1a83bac28919c4ecfa022046b027e026c98f3bd0187e797651cef21fef7c6e8f54dbd206f413ee5febb1f40121033ed695b802987fb44f4401397f051cdaa9260a638f5359f866d776abf6f1549effffffff1a8c111100000000001976a914aceb8e7313c293f15bfbcefa130eb88a4fc02f2488acaf761200000000001976a9144be18cbda2883ebbc5061da1bd471600a59a94cf88ac201d0406000000001976a914c0775a0ebd52bb9ca1a998a7a49cf4aa8b7bc9ff88ac0f54fd05000000001976a9144e305867d0f7ac7066df1b00ff4dc9cba51e787088ac52cce800000000001976a914ef0b3b48f9ffad719e2e1406d373c10330972af688acc1a29a00000000001976a914e4d41695fc7b58a1da808b5bb1b79ee05fd8bc4488ac93e49800000000001976a914ef0d489856832ff4d32eaddf50e410917de1b75e88ac3ee30100000000001976a9148ce9e94ee8d6ccf75620b9e1360b8971d170ccfc88ac67120200000000001976a914359e46eb7f9ee15cb09e14a21380a75679749ed388ac00f7da1d000000001976a9143934056b5bfa87cc2a87ebc0a36f916ded16bb2788ac4c939900000000001976a914f21781907c8cb4f494294a1149f065dfbcd618ac88ac9c490f00000000001976a914edb57b3cb63f274e099cda30cde22f50638679e688ac7a070200000000001976a914a30f3d5333580596c3af791cb4fb48236fe8c04d88acff96fc02000000001976a914633270833ce33c26c7d1b92439c71acdf884ddd088ac7c80c400000000001976a914ac800d643af27b64b8d61b3547f92b8341f9c67788acda1e9c00000000001976a914041efd2ca1ba825222a418d495023439ae51ff0288ac1e8c0f00000000001976a91463716dd958c454eb0913a358a993ab6681f3db7688ac91dc5400000000001976a914e78252b0170bd337c5db064ce747b91d3681f13d88acb2baa400000000001976a914e56934520476226a95b630f3f75e3b387c8cbc0288acb67dec02000000001976a91411844f4c56672551aeb8b73813acabd4b4506b2788ac4bb31c00000000001976a914eb6108c6cf37ee21c7d21529651390825716e79e88ac5121ec00000000001976a91446bfd8b111d1fa9e9a1d7abcda6fec27f233482d88ac6e000200000000001976a914a981dde95b9cccb76dd5e73ec79ba2b9a2947a9788ac1f549a00000000001976a914df977d93f6fe0a70dfc06517cd235e795404f3e088ac9e76c0682c0000001976a914c521cb53dc20fb20049b9ab6653775b3c37411a188ac90d00300000000001976a914d995c6ef3070f64b8f29588b4786d6d450b3eff688ac00000000c6940d001877feffffffffff0001958018cae1b8cd422b719f644ab437833a6544e68093cc844fb15be0762e5339c99af38f0805842a3d4f1a50551e9aa4858150eecc1a6c4a818df5ca7c4d3e21c0be81ac4ddcf34516a9396c8a31436d57f90fff5fe6b668bb3ed28cb0fb3aae47becec7243df9d0b3ce90e25c130632763f11d2fbc4fba9b06edb124f1b21087b4c0539660d1b2a05cec8382b4875a9025a1bac5cd56a2dfcd76e0fccb25d0503a180de8acd6abe28309eb24b87c229d5075b885884b49c10ce3f1f60fc2cefb86e8859aea91bb8b7f797c4240944ef4365ecac5427a146c8de33688f2c5343b6b0eb138254c94e99eff302104714e4cd1e14bcc897f89a1fab58a866102cbfdc7839784350bc4e3b35c26a6d77934b69abb06dcd926d66369b2f273d2c4172932ee6e39c9e67f39ed588a80c6240e2b36398673c5b1e45ae477d8edcd9c10e6389d4f54b25a9a13dca4ae89034778a23f6cbbce9572d014d35f6d3fea3868c4eea96ae0f65443df55feb8aea0ae8b28e359aeedc201e921dd900ab941b19c25dfbd29ae1090e79048a938280ca6bb86d386080072933178e589ec9b7e185b1d0ed57b08e96c19a2acfa037a82e497063651ea9df9a9704d6a0a1964df49a1ed3d421dd8a857e57b5f167f0c5934b6a74bb6321dcde1d4df869b4496864013459c9497916a0adbc4649afbcb3b5be8a1b83d6830803538443f29a16796ad6b1e01f2a3cd26d6eb4a4b936d21bf70f2d615048583656b4397532fba5c9ac8fc93d5b804020d898589db1b59a9063da268f793a71297c21fd5936f83a658db9f0bcdfbe1221ddf9586780e0fd7f1eec4f63cb7691f7bab5ce07a2e7fdfced7d07289241fee44c3b809c6a3e3d9ed473419aa1f661e2af1611c57bd3f894c45ddb4db4d0adb405a9edad5807243fdecc236710165d2df68b5f0b9c0a773c8e887d461b6a88f46557ac8d6234405668b237027c0a6835af264be29405d13050a3183fe2e2f223827ee170c1196e03712138b590cdf67cfbcf46c2cae5f7131ccbdf2270c9e332f23803e3207ee8b528d26e5447a31b93deb08fea5f8575d5e9b456ae4afe39e5d154e60bbc22e3dbbecccf1f0e37c8abb1a7e3fabeb14b192c995e2a99456fb1f6eb3834667a59856192267665589c7c1b8206413e57936a2cb379c444ffb4fa7815536a96099914557944a8c428b4191757e58969084fc5cd34b11980580494a138cb56b0106da30d7c85702ad664a2e95ac93463bc3f34d5a8ad89ae4fbe8a5229028c7dd91dfa49cb6c232dac13c95861146940c2f209aee1f46752a30491278a0171ed609e8158ceb873a3c6cb00aa723df9ed6890fde178d0ebd1a45b420c9159c0b927569f789622edbde92fef885c3dfce52b0b4d0dcda8400281a13e947a64591a9ef7226f3e72a22a5e0d08';
// using latest 1.9.1 version
var Transaction = require('./node_modules/bitgo-utxo-lib/src/transaction')
var networks = require('./node_modules/bitgo-utxo-lib/src/networks')
var tx = Transaction.fromHex(hex, networks.zcash)
// this works, but note the value balance property is negative
console.log(tx);
// setting it to non-negative value makes it work
// tx.valueBalance = 0;
// but if it stays negative, this will throw
console.log(tx.getHash())
Zcash tx with negative balanceValue
if sum of amounts of shielded outputs is greater than sum of amounts of shielded inputs then tx.valueBalance is < 0. Such tx breaks
Transaction.prototype.getHashHow to reproduce:
Problem is that unsigned int is expected here
bitgo-utxo-lib/src/transaction.js
Line 717 in 7c91a91
Which obviously throws here
bitgo-utxo-lib/src/bufferutils.js
Line 10 in 7c91a91