:IF: Autonomi Transaction Reporter

Welcome!

I have contributed a project to Impossible Futures for your consideration.

Autonomi Transaction Reporter

The goal of this project is simple, to provide the details we need to file our crypto taxes if you only use ETH/ANT (and maybe USDC). For the competition deadline I’m not focusing on any other coins.

Based on what I learned creating the community faucet, I have already created code that will download and categorize transactions into the proper buckets.

I’ve also started work on resolving how the capital gains are calculated.

The little bit of ‘stretch’ here is that I’ve primarily been a backend engineer and data specialist for decades. Headless for the win. So, I’ve started to learn Svelte at the recommendation from other Autonomi contributors so that I can generate the user interface matrix needed to handle edge cases. It’s making sense, but I probably won’t have something to show before the voting ends.

Why

Many of us live in tax jurisdictions where all of our transactions need to be reportable, yet the existing tools charge higher fees based on the total number of transactions. A simple Autonomi user can easily accumulate hundreds of transactions in a year, costing more than $100.

Goal

For the simplest users, the goal is to generate the taxable gain/loss and forms needed to file with Turbotax (other software solutions can be expanded later).

For the more complex users, generate the taxable gain/loss and data reports to make it simple for tax/accounting professionals to use the information to complete your taxes.

Deployable as a self-running or rented container app, bring your own data, I store nothing beyond the ephemeral databases needed to classify transactions and the ledger for capital gains. You must save these assets to the Autonomi network or download them locally for future use (like calculating taxes the subsequent year or checking your current taxable status).

I hope to have your support!

12 Likes

While ATR was disqualified from the top 12, it looks like those votes cast are being refunded.

I had hoped for the rewards to help pay for the accounting consulting I need to complete this project, however I’ll continue moving forward.

Backers feel welcome to contribute to the following address:
0x1aCe67Ab28Ca789d50F6a815C5c7f4aD3734cAd6

6 Likes

So, this is totally nothing and even in the wrong repo, but still…

1 Like

So, this repo is properly reporting ANT balances, but I have a trouble ticket in with Alchemy that the ETH balances are returning as 0 to me on both the ARB and ETH networks. I’ve been waiting a few days, so I thought I’d at least give an update. If I don’t get an answer from Alchemy soon, I may have to investigate alternatives.

Svelte is a strange experience. But I chock it up to learning HTML/CSS/Javascript/Typescript/Svelte all at once.

3 Likes

Yeh, it is a leap but I expect you will really like it once you’ve got the main ideas. I had done a bit of JS/CSS/HTML before, and tried learning some React which was a struggle and I didn’t like. Once I got into a bit of Svelte I loved it.

Good luck with the project!

2 Likes

I’ve run into a big snag. The numbers in crypto are too big and too small for Javascript.

I’m investigating a library called bignumber to see if it can save the project. I suppose I could break the project in two where the backend is in Python and then just a presentation layer in Javascript but I was trying to avoid that.

2 Likes

I’ve heard of this issue before and the solution was to use strings to represent them.

Ofc, arithmetic with such big numbers is another question, but maybe one you can avoid?

1 Like

So, I was able to get BigNumber to work and storing all values as strings.

This requires a bit of overhead anytime doing math, but I think that part is on track.

I can’t get out of doing math since I have to track all the transfers between multiple wallets.

My current issue is I’m getting failures without a helpful message anytime I try to read or write to the database.

Even though I’m out of the competition, I’m trying to launch something by the end of this phase.

9 Likes

ok i got the database working to write to it, but I’m not groking how to make a server side component(since it needs to read from the db) so i can render the outputs.

I’ll just point out to those who recommended svelte, there are almost no svelte 5 examples to learn from, I’m playing in the dark. lol

There are lots of Svelte examples and a massive REPL, or do you mean examples of using a database?

Their Discord we also very responsive when I was trying things out.

1 Like

I’m navigating the Discord, but yeah, I’m finding lots of resources for Svelte3 and Svelte4 (and older).

Maybe I’m missing an ‘obvious’ resource, I’m following another tutorial, working through it

Maybe there’s less for v5, I was talking about Svelte in general which I am assuming carries forward for the most part. Are the examples/REPL at the main Svelte site not good for your needs?

I’ve decided to give Claude Code a day of pair duty and I’m surprised how far I reached in a few hours. Off to work for a bit, but here is a sample.

  • Clone that repo
  • use node 20 or newer nvm use 20
  • install packages npm install
  • run app npm run dev
  • connect to http://localhost:5173

The ‘hard’ part is that you need to sign up for Alchemy to get an API key to provide to the app. https://alchemy.com

4 Likes

Any reason you require this and don’t use the token free (just a bit rate limited)

https://arb1.arbitrum.io/rpc

Endpoint?

1 Like

I’m using a bunch of higher level API methods from Alchemy to make this work in time, I had a lot of this code built in python. After the deadline I’ll see if I can get all the data I need directly from arbiscan and etherscan with a ratelimit on requests.

1 Like

Ok, it takes a long time to process all this within the browser, but it is working.
Now to package this up into a container this week.

Unfortunately Canman isn’t available, so I’ll just target a docker hub image that others can run.

6 Likes

Ok, I have released an image on DockerHub. weave/atr:latest service exposes port 5000.

There is no server side data, all data is currently stored in the browser.
This is unfortunately not sustainable for really large users but reaches the ‘launched a feature’ milestone even though I’m disqualified.

A lot of refining and extending coming. For instance, the table that classifies transactions needs refining (and pre-populating).

It was important to me to know I could have reached the deadline in case I had backers hoping to compete.

7 Likes

Since I am not actually in the running to win, I don’t feel obligated to use the same codebase going forward.

I have restarted from the ground up, putting more of the processing on the server instead of being slow and size limited in the browser. I’m also trying to get all the data I need from the arbiscan endpoint instead of alchemy.

2 Likes

Well, the RPC endpoint offers a bit of data, but not enough to categorize the transactions.

As an alternative to alchemy, I’m playing with the official Etherscan api, which will also require users to register an endpoint (giving 5tx/s rate limit for free). I’ll make the rate limit adjustable in case someone pays for a higher throughput for their hundreds of wallets.

1 Like

Well, this is a complication. Turns out it’s going to take BOTH the Etherscan API and the Alchemy API to accomplish the routing detail and pricing information. So a user will need to register for TWO free tokens to use this tool.

As far as I know, I have a user base of less than 5 people, so creating an API gateway service would have to be expensive to recover it’s cost. (and would end up being centralized).

This isn’t the end of the project, I’m just acknowledging the feedback about using public endpoints and that I might only be able to accomplish that by illegally scraping data from other services.

2 Likes