Bad-txns-joinsplit-requirements-not-met error


#1

I've been trying to send TAZ from my private address to a transparent one.

root@kali:~/Desktop/zcash/src# ./zcash-cli z_getbalance $ZADDR
12.88462260
root@kali:~/Desktop/zcash/src# ./zcash-cli z_sendmany $ZADDR "[{\"address\": \"n4MXbgneZrJKYDQZrAqyeXsXcfgD3KcPqf\", \"amount\": 10.0}]"
opid-498fce8a-1502-4d45-9a1f-94e385aa0598
root@kali:~/Desktop/zcash/src# ./zcash-cli z_getoperationstatus [\"opid-498fce8a-1502-4d45-9a1f-94e385aa0598\"]
[
{
"id" : "opid-498fce8a-1502-4d45-9a1f-94e385aa0598",
"status" : "executing",
"creation_time" : 1473663892
}
]

Several minutes later (it takes a while "executing")...

root@kali:~/Desktop/zcash/src# ./zcash-cli z_getoperationstatus [\"opid-498fce8a-1502-4d45-9a1f-94e385aa0598\"]
[
{
"id" : "opid-498fce8a-1502-4d45-9a1f-94e385aa0598",
"status" : "failed",
"creation_time" : 1473663892,
"error" : {
"code" : -26,
"message" : "18: bad-txns-joinsplit-requirements-not-met"
}
}
]

I've tried it twice.
Does anyone know what I'm doing wrong? Hopefully it's not too obvious...

Update: I've now tried this, to see if I needed to be sending TAZ to a private address as well as a transparent one ($ZADDR2 is a new private address that I just created):

root@kali:~/Desktop/zcash/src# ./zcash-cli z_sendmany $ZADDR "[{\"address\": \"$ZADDR2\", \"amount\": 0.1}, {\"address\": \"n4MXbgneZrJKYDQZrAqyeXsXcfgD3KcPqf\", \"amount\": 10.0}]"
opid-880ad9f8-5cd0-4536-9d3e-f891879f41e1

....

root@kali:~/Desktop/zcash/src# ./zcash-cli z_getoperationstatus [\"opid-880ad9f8-5cd0-4536-9d3e-f891879f41e1\"]
[
{
"id" : "opid-880ad9f8-5cd0-4536-9d3e-f891879f41e1",
"status" : "failed",
"creation_time" : 1473669802,
"error" : {
"code" : -4,
"message" : "Could not find previous JoinSplit anchor"
}
}
]

Update 2: I think it might be because the operation involves too many individual joinsplits, since there are around 40 small notes which need to be processed to get one single note of 10 TAZ. When I tried to send all my balance of ~12 TAZ to $ZADDR2, I got the original requirements-not-met error, but when I reduced it to only 4.0 TAZ, it was successful.

Update 3: It's not working at all now (sending from one z-addr to another), I'm getting the requirements-not-met error no matter the amount I choose. I looked at the debug log (using -debug="asyncrpc") but it doesn't really help. I thought for a while it might be something to do with memory allocation, but I don't know now.


#2

Can you please copy and paste the debug log? The relevant bits start with 'opid.." as well as some lines straight after showing the pool of funds available for use in the transaction.


#3

I'm sorry, I started getting this problem and rashly deleted all of my testnet3 folder, so I don't have the log or my original coins anymore. I've mining new coins overnight, so I'll try it again very soon and let you know what happens.

Update: I'm not having this error anymore, but I also don't have as many separate notes as before (around 40 before, only around 4 now), which I think might have been related.

When I was having this error, all the coins were what I had mined, then sent to my private address. When I was sending some of the coins to my private address, I would set the amount on z_sendmany as 0.1, and because of the way newly mined coins behave (I don't know why exactly), all of the original transaction was sent to the private address (in two parts, 0.1 and the remainder). This may or may not be relevant, but it did increase the number of notes. Anyway, just a few details if you're interesting in trying to reproduce this error.

Update 2: I've since mined many more coins, and successfully completed similar transactions to those above (with more individual notes than above) on the same system without any errors, so I simply don't know what was causing this.