This API-list should include an endpoint to query the wallet’s balance history.
Why:
The ability to verify balances and verify balance-history has been a core part of crypto and any form of banking. It is how users verify that no funds were lost, see what happened, and therefore it generates trust in the technology.
It is a mandatory feature for any form of portfolio tracking, not only for the purpose of basic accounting but also for tax-purposes.
Personally, I would never put large amounts in places that don’t offer easy way to track the history of the portfolio, most people feel the same way.
Format:
This should be a single endpoint, which when queried returns all balance-altering transactions that happened so far (all dates, all currencies).
Optional: include options to sort by currency-symbol and timestamp start/end.
Output format in JSON is mandatory, additional CSV format is optional but highly recommended for the average user.
Required data in output:
Sequence# (number identifying the transaction sequence/order: important for when multiple transactions happen at the same timestamp (second/millisecond).
Timestamp: in UTC format.
Symbol (ICP, BTC, etc)
Amount (amount of balance change of that transaction, positive or negative).
Fee (how much was paid in fees for that transaction)
Balance (resulting balance in that symbol after the transaction)
Example:
Oder#
Timestamp
Symbol
Amount
Fee
Balance
1
2022-06-01 13:24
ICP
100
1
100
2
2022-06-01 13:24
BTC
1
0.0001
1
3
2022-…
ICP
10
0.01
110
4
2022-…
BTC
10
0.001
11
5
2022-…
ICP
-5
0.01
105
Note: I am not sure if the fee should be “included” in the amount or not. In the example I used the approach of having the amount be only the account affecting balance, so the total balance can be checked easier by simply adding all values in the “amount”.
Hey @skilesare Is this bounty still open? I actually found a bug?/flaw? in the way ICP was transferred on many dapps such that if you refresh the page on any of the dapps on IC that recieve ICP, the ICP goes into the block abyss and the transaction is never recorded since the page was refreshed and you have to rescan every block to find the money transaction.
i.e. in psuedo code on a frontend interface
block = plug.sendICP()
//–>lets say you refresh here while it is waiting
dapp.check_Block_And_Mint_if_ICP_block_states_transfer_was_enough(block)
Then if you refresh in the middle, you dont get your nft or you dont trade your tokens, etc.
So I wrote a wallet canister that essentially would allow people to approve send their icp. That way, we can send icp and check states at the same time from a dapp canister. And also, it bypasses using wrapped icp in some cases where you might want an approve function. This bounty seems to expand nicely on my initial work seamlessly so I’d like to try a hand at it.
Also, I’d like to propose removing some of the multisig stuff native to the wallet and have something called a keymanager in another canister to decide what to sign.
Something similar to ERC725 ERC725 | LUKSO Tech Documentation. Regardless, that way you can have many forms of governance and all the wallet sees is the final signature
Yes it is open! I think separating out the key manager is a good idea. We are actually close to finishing the axon bounty that would let anyone set up a multisig that could call the wallet through that scheme and ask it to use call raw to call another contract. In fact the axon canister could be merged with this functionality to make it a multisig wallet…but having it work as a separate entity makes sense as well.
Ooh okay sounds good then, I will take it on this bounty with your approval. I’ll work on a custom multisig canister as well just for the sake of this bounty but I like the sound of integrating/merging the axon canister.
It is yours! If you can make it a configurable library(as much as possible with motoko) it will make integration easier. Ideally there are lots of services that might eat to issue personal canisters that need wallet like functions.