Hi there,
The æternity middleware may be able to help you with some of this. Unfortunately the middleware does not have any insight into the effects of contract calls on balances, so these are invisible to us.
However, the middleware does have a websocket interface which can be used to subscribe to events which relate to any æternity object. It’s described in the the manual, which you can find here. An example here:
ewby@keanu:~/Documents.old$ wscat -c ws://mdw.aepps.com:3022
connected (press CTRL+C to quit)
< connected
> {"op":"subscribe", "payload":"object", "target":"ak_nv5B93FPzRHrGNmMdTDfGdd5xGZvep3MVSpJqzcQmMp59bBCv"}
< ["ak_nv5B93FPzRHrGNmMdTDfGdd5xGZvep3MVSpJqzcQmMp59bBCv"]
> {"op":"subscribe", "payload":"object", "target":"ak_dArxCkAsk1mZB1L9CX3cdz1GDN4hN84L3Q8dMLHN4v8cU85TF"}
< ["ak_nv5B93FPzRHrGNmMdTDfGdd5xGZvep3MVSpJqzcQmMp59bBCv","ak_dArxCkAsk1mZB1L9CX3cdz1GDN4hN84L3Q8dMLHN4v8cU85TF"]
< {"payload":{"beneficiary":"ak_nv5B93FPzRHrGNmMdTDfGdd5xGZvep3MVSpJqzcQmMp59bBCv","hash":"kh_2J6EPJxbg5iucZFMhfxPC9XEqri5un4HjLDy3EVj1nYbYe8j1B","height":114278,"info":"cb_AAAAAfy4hFE=","miner":"ak_2fkhBuZtFYhoFNxUck5TLZTDasKfz6RZ35gAvH4Bjrj9ZV5G6N","nonce":497952684640195701,"pow":[4091881,27332183,34728572,69171196,106642898,112171053,119878084,126311193,132323353,136906045,137471331,146462687,164235915,165041328,167773940,170578955,183872553,184976208,203131751,220483204,235116751,253492053,255830105,257216090,276345665,293030928,318027436,327252122,356944764,369955472,399748061,404573144,443659112,450379714,467982209,476222342,487010622,501904398,510090059,512973749,518739484,528025200],"prev_hash":"mh_kiZ8YTpKJ69WUp2LRKLAhomPBY4UDo97ommyHAYTMrsk8L9wh","prev_key_hash":"kh_UmmdsnhcRnKB8hs8sMLCjVCCuJbMBL7sk37Uut26UvtMYJYSw","state_hash":"bs_K639BSbjxZomubDJ1pFr5dh5YwxyR9rCHLNqeaDXEiChgfDqf","target":504338701,"time":1563973602427,"version":3},"subscription":"object"}
< {"payload":{"block_hash":"mh_2FFY8UAV2RyiTM6QqQVUkGpt1xnNCmM2FgHYTDgV46EciYpt8m","block_height":114278,"hash":"th_2pBdvXR4jzTgEdKogS2jPMAtBE2355beyrP3EVVXDCy55A6YWS","signatures":["sg_RjPoF3UWNz8rts1wCgj8AnuYCDunpzLvxecNeiik4fAX1HstYgUQTSEJ6PYbeLKLwP9D5SNGN1Zi9papguVXf2wcoMpGb"],"tx":{"amount":10036022990000000000,"fee":130000000000000,"nonce":24394,"payload":"ba_Xfbg4g==","recipient_id":"ak_2ECRbYccpvYkPBNsXycpX56cq4kuACgoaA5HeihSdo1Kiv1AuQ","sender_id":"ak_dArxCkAsk1mZB1L9CX3cdz1GDN4hN84L3Q8dMLHN4v8cU85TF","ttl":114578,"type":"SpendTx","version":1}},"subscription":"object"}
Here we subscribe to two objects, one the beneficiary account for a miner, the other the sender of a batch of SpendTx which I randomly selected. In this example I connect to the alpha version of the middleware (mdw.aepps.com:8002, or https://alpha.mdw.aepps.com/) which currently has the better websocket implementation. A release in the next day or so will correct this.
Hope this helps,
John