inoutflow-bsc

Crates.ioinoutflow-bsc
lib.rsinoutflow-bsc
version0.2.6
sourcesrc
created_at2022-02-25 00:30:55.849167
updated_at2022-05-01 17:18:49.495681
descriptionCommand line program to calculate in/out flow of BNB for target address (either wallet or contract)
homepage
repositoryhttps://github.com/haxpor/inoutflow-bsc
max_upload_size
id539143
size33,689
Wasin Thonkaew (haxpor)

documentation

README

inoutflow-bsc

A command line program to compute and print out in/out flow of BNB of the target wallet/contract address

How it works

It will involve utilizing 3 related APIs of bscscan.com as follows

  1. Get list of normal transactions - link
  2. Get list of internal transactions - link
  3. Get address's balance - link

in order to have an understanding of BNB in/out flow, and balance respectively for each type of transaction as well as final balance for entire address.

Technical Tips

We can manually compute balance of target address ourselves without requesting to balance API by sum in/out flow of BNB from normal, and internal transactions, and subtract by fees from normal transactions.

We have no need to try to get fees from internal transactions because internal transaction is part of normal transaction, and its gasPrice and gasUsed fields are not available as part of API returned. So only fees from normal transactions are enough.

In short,

Address balance = in/out BNB flow of normal txs + in/out BNB flow of internal txs + fees of normal txs

NOTE: We have no need to involve BEP-20, and BEP-721 transactions here because they are also as part of normal transaction as they shared the same transaction hash. It just happens that for this type of transaction, it sends 0 BNBs but other tokens. So normal transactions' fees cover everything we need.

How to setup

  1. Register an account on bscscan.com
  2. Create a new API key
  3. Build project via cargo build.
  4. Define environment variable namely HX_INOUTFLOW_API_KEY to api-key that you have from step 2.
  5. Execute e.g. cargo r -- <target-address>

Usage

inoutflow-bsc <target-address>

Sample output is similar to following

Found 594 txs!
- BNB outflow: 1837.683964544 BNBs
- BNB inflow: 2.006 BNBs
- Net in/out balance: -1835.677964544 BNBs

Found 134 internal txs!
- BNB outflow: 0 BNBs
- BNB inflow: 1836.96689 BNBs
- Net in/out balance: 1836.96689 BNBs

Total 728 txs
Total balance: 0.042507285 BNBs

License

MIT, Wasin Thonkaew

Commit count: 34

cargo fmt