Fine,so I have an address with some unconfirmed transactions. This code return 0.0 balance when I run:
self.curWlt.getAddrDataFromDB()
self.curWlt.getBalancesAndCountFromDB()
atype,a160 = addrStr_to_hash160("1Ne9KrmTLuePACNXND29j3exxxxxxxxx")
print self.curWlt.getAddrBalance(a160,"unconf")
Try to get the address like this instead:
https://github.com/goatpig/BitcoinArmory/blob/master/armoryengine/PyBtcWallet.py#L3217You can then use all public methods of the ScrAddrObj class:
https://github.com/goatpig/BitcoinArmory/blob/master/cppForSwig/SwigClient.h#L82These are available to Python through SWIG.
also getFullUTXOList return only inputs with at least 1 confirmation from the wallet.
Armory was never meant to let you spend ZC (only your own ZC change). This is because Armory was developed as a GUI wallet. armoryd was donated by a user, ATI only maintained it because it got some traction with our more advanced users.
I do intent to change that to allow for CPFP and RBF (basically adding double spend features in the expert GUI) in the upcoming version. Under the hood, the methods will let you fetch ZC in bulk.
If you want to fetch ZC right now, you will have to go through a few hops:
1) Fetch the wallet's tx ledger (or the global ledger). These are the getHistoryPage methods.
You can fetch that stuff straight from wallet object:
https://github.com/goatpig/BitcoinArmory/blob/master/cppForSwig/SwigClient.h#L115Or you can use LedgerDelegates, which let you combine several wallets for the DB to output the sorted tx history ledger. Delegates are fairly easy to use, you can see the definition here:
https://github.com/goatpig/BitcoinArmory/blob/master/cppForSwig/SwigClient.h#L55And an example of how to instantiate them here:
https://github.com/goatpig/BitcoinArmory/blob/master/ArmoryQt.py#L6708Basically, to get the global ledger delegate (for all wallets), you call TheBDM.bdv().getLedgerDelegateForWallets() on a valid bdv object.
2) For ZC, you only ever want to fetch page 0. That page always exists so this call will never fail if the object you are calling it on is valid. All ZC are always prepended to the top of the first history page. You can tell ZC apart by their height, which is always UINT32_MAX (2^32 -1).
Keep in mind that you can also get the history ledger for a given address this way:
https://github.com/goatpig/BitcoinArmory/blob/master/cppForSwig/SwigClient.h#L301Here's an example in code:
https://github.com/goatpig/BitcoinArmory/blob/master/qtdialogs.py#L36883) If you want more data, you can get the whole tx. Ledger entries come with txhashes, you can use the txhash to fetch the whole tx with this method:
https://github.com/goatpig/BitcoinArmory/blob/master/cppForSwig/SwigClient.h#L311--------------------
All these methods I am listing are in SwigClient.h, which gets SWIG'd (ie, it is C++ code made available to Python through the use of SWIG). SWIG only parses public members/methods, so only those are made available. If you want to read some private members, usually there will be a public method to do that (instead of just accessing it at is).
SWIG doesn't modify naming, so as long as you instantiate a SWIG'd class, you can use it as a native Python class.
Let me know if you need anything else. If you have some patience (maybe a lot =O), I'm confident I can get armoryd back to a place where you can build your applications around it.