Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Matija's Builder Journey #95

Open
matijamarjanovic opened this issue Oct 6, 2024 · 15 comments
Open

Matija's Builder Journey #95

matijamarjanovic opened this issue Oct 6, 2024 · 15 comments
Assignees

Comments

@matijamarjanovic
Copy link

Hey everyone! I’m Matija Marjanovic, a senior computer science student from Belgrade. I’m super excited to jump into the gno.land community and see where this journey takes me!

I’ve been diving into programming languages like Java, Kotlin, and JavaScript during my studies, and I can't wait to put what I've learned into action. Joining gno.land feels like a great opportunity to learn from others while working on something that really matters—making web3 more accessible for everyone.

I’m looking forward to collaborating with all of you and helping to build a platform that can contribute to a fairer and freer world.

@matijamarjanovic
Copy link
Author

To begin developing on the gno.land blockchain as my first mini project I have made a homapage using Render() function as frontend. Through this I have gone over the basics of gno language syntax as well as some features on the chain. I have used std libraries such as banker to work with coins, html and css for the looks and some services such as gno faucet and studio connect.

In the future, I am planing to develop a small simple game with a help of couple of peers on gno's chain using our own frontend.

Here is the link to my homepage:
https://gno.land/r/mat1jamarjanov1c/home

@matijamarjanovic
Copy link
Author

matijamarjanovic commented Oct 10, 2024

Hey, remember how I mentioned earlier making a little game? Well it's finished! Please check it out. In the coming days i plan to deploy a frontend to it's own domain so players don't have to run it locally. I will include the URL here in my journey.

Edit: As promised here is the URL to the game: https://matijamarjanovic.github.io/ImageHuntGno/
(There is a requirement to saving your score - you have to have an Adena Wallet and the extension installed)

@matijamarjanovic
Copy link
Author

Hello again,
I am thrilled to announce the start of the Student Contributor Program for my friends and me. In the coming months, we will be actively exploring, learning and building on the Gno chain.

We hope that our contributions will prove worthy of such a great project, especially considering the amazing opportunity we have been given.

@matijamarjanovic
Copy link
Author

matijamarjanovic commented Dec 11, 2024

Hey, in the first couple of days in the programme I have finally become a contributor - my home realm got accepted in the examples dir, you can check it out here.
Apart from that I have been exploring the tokens on gno.land and have made a little NFT-based on-chain student registry for my university, which you can check out here. I will continue reserching tokens on gno chain in the coming days.

@matijamarjanovic
Copy link
Author

matijamarjanovic commented Dec 11, 2024

As mentioned I have continued playing with tokens on gno, this time I have made 9gno which is a wordplay on 9gag. Essentialy, it is a coin but also a meme sharing platform that works through already existing "memeland" package.

@matijamarjanovic
Copy link
Author

Hello, this is my progress after finishing the first week of Student Contributor Programme.

What I've done:

  • I did extensive research of github repos, got to know other people journeys, scanned through PRs and issues on monorepo
  • In research of the repos, thought about which information to use for this issue if anyone finds it useful
  • Spent time thinking about what could I do to contribute in the coming weeks
  • As mentioned above, played around with GRC20 and GRC721
  • Updated my homerealm to match the new markdown-only Render() and the PR got approved, so now I have my own folder on monorepo 🎉

What I plan to do:

  • Make some dApp that is going to be useful which will maybe use tokens
  • Poke through monorepo more and try to upgrade it
  • Maybe collaborate with other students in SCP on some larger project

Blockers:

  • maybe some feedback on above-mentioned issue

@matijamarjanovic
Copy link
Author

matijamarjanovic commented Dec 24, 2024

Hey, I'm back with a weekly overview of my work

What I've done:

  • I continued researching the monorepo
  • What caught my eye is the freshly made BTree which is why I've decided to make a realm that demonstrates the BTree functionalities by representing a DAO which is why I have decided to use GRC721 to mint NFTs for proof of membership
  • Brainstormied an app to be used for function reusability
  • Started making the app

What I plan to do:

  • Make an app that provides the above mentioned functionality
  • Depending on the scope of the work either work on it for the whole week or think of something new

Blockers:

  • most my blockers have been due to lack of creativity

Follow-up: I have found that without reflection the "function vault" doesn't have much use, so I will continue working on a similar concept with some other records to store in the vault that might prove to be more useful.

@matijamarjanovic
Copy link
Author

matijamarjanovic commented Jan 13, 2025

Hello everyone, this is another update of my work.

What I've done:

  • Initiated implementing a registry for all tokens (fungible and non fungible) until it was pointed out to me that something similar was already made recently (for GRC20 fungible tokens). However, I have decided to broaden the existing registry's functionality to GRC721 and GRC1155 - you can give it a look here
  • Updated the gno docs scraper to write all docs into separate files and connect it to OpenAI API to make table of content for those files which maps 15-20 keywords to corresponding filenames (haven't had the chance to test whether this was a success)
  • Explored the concepts of decentralized exchanges and how they work in general

What I plan to do:

  • Complete the registry and make a plan on how to potentialy use it in making a some sort of a simple smart contract wallet that would include both the registered tokens and the ugnot coins
  • Think of ways to make the ai gno assitant chatbot even smarter - we have had a new suggestion so we might migrate to a different LLM
  • Continue the research on dexes, Uniswap and of course Gnoswap

Blockers:

  • Unsure on how to handle the registration of GRC20 through my registry; this was mention at the bottom of mentioned PR

@matijamarjanovic
Copy link
Author

matijamarjanovic commented Jan 18, 2025

Back with this weeks update:

What I've done

What I plan to do:

  • Continue working on the smart contract wallet
  • Research nft standards on platforms other than ethereum, make a proposal on grc721 refactor
  • Finish migrating the ai chatbot to Khoj hopefully this week

Blockers:

  • none for now

@matijamarjanovic
Copy link
Author

Here's another update of my work:

What I've done

  • Conducted a research on nft standards on other chains with @stefann-01's help, which resulted in us creating a work plan on grc721 restructure. Now we are waiting for @leohhhn's issue regarding this topic to be opened to propose it.
  • Continued efforts on migrating the ai chatbot project to Khoj, the set up has proven to be a bit more challandging than expected, still WIP
  • Began creting a simple dex to work with the realm wallet I'm working on. For now, I have added functions that create pools and add liquidity to them, I have also created a logic to split the LP token shares. This was done with a goal of understanding existing services like Gnoswap better, to hopefully find a way to create useful additions or separate services (I see this more as a practical research than contributing)

What I plan to do

  • Continue my reserach work on the dex and on-chain wallet, to be more precise the next step should be minting the LP tokens following the share-splitting logic and the swaping functionality itself
  • Set up the docker correctly to host Khoj and train it with correct information
  • I am eager on learning how to use gno-js client so I might start working on a simple front for the feat: token hub gno#3479 or some other realm, just to get the gist of it

Blockers

  • /

@matijamarjanovic
Copy link
Author

matijamarjanovic commented Feb 4, 2025

Hello, back with another update:

What I've done

I have kept my focus on making decentralized exchange I started working on last week:

  • I have implemented 2 ways to swap assets. The first way is using pools like most swaps do - users can create pools, add and withdraw liquidity to them and use them to swap tokens for a 0.3% fee. The liquidity providers are motivated with this fee as they are minted LP tokens when adding liquidity to the pool.
  • Second way is a ticketing system (the idea to make this I have gotten from an existing realm gno.land/r/demo/atomicswap) - user can publish the token (or ugnot) and the amount he wants to swap, and what he expects in return, the realm then takes those assets and keeps them for a preset amount of time. If someone else finds the offer suiting, they would trigger a transaction to fulfill the ticket and swap will take place in atomic manner.
  • Both methods are done optimistically and all actions require user's allowance approval for all tokens he wishes to swap (or recieve)
  • Currrently this is on this PR but I will might open a separate repository for this as I plan to add frontend

What I plan to do

  • Continue working on the dex as it is not fully finished
  • Add an option to p2p swap nft for tokens/coins which would represent a decentralized nft market
  • Even though I've made gnoweb UI I'd like to make a front for this using React in typescript using gno-js client

Blockers:

0  /mnt/c/Users/matij/Projects/gno/tm2/pkg/errors/errors.go:28 - deliver transaction failed: log:recovered: interface conversion: gnolang.Stmt is *gnolang.AssignStmt, not *gnolang.bodyStmt

@matijamarjanovic
Copy link
Author

matijamarjanovic commented Feb 11, 2025

Hello, here's what I've been up lately:

What I've done

  • Added NFT market feature to the dex feat: gnoxchange - simple dex gno#3543 I've made (using the ticketing system), and even though it works, grc721 is soon to be remade so I didn't want to spend too much time on it
  • Spent some time trying to deploy it to test5 but not all packages I'm using are deployed to test5, and some of those that are have been updated in the meantime (like avl/picker for example) so I've given it up
  • Started building a frontend for gnoxchange, which can be tracked here
  • Written tests for the gnoXchange
  • Tried to dive deeper into the issue I've been having bug?(gnovm): interface conversion error when trying to burn grc20 gno#3685 to see if it's really a bug or a mistake I've made, WIP

What I plan to do

  • Continue working on the frontend
  • Try to find the root of the problem I'm having with burning tokens

Blockers

  • /

@matijamarjanovic
Copy link
Author

matijamarjanovic commented Feb 18, 2025

Weekly update:

What I've done

I have spent all my time this week focusing on gnoxchange front, gnoxchange and tokenhub.

  • I have finished making the frontend that is to be communicating with the realm on chain
  • While making the frontend I realized that there are not many ways to communicate with the realm outside of the gno language (most of getters now return structs defined in the gnoxchange realm) which is why I added some getter functions that are making a string representation of info on the chain
  • I have installed gno-js into the fronted and have connected almost all components that should list the gnoxchange data to query the chain using gno-js; as of right now almost all the information presented on the frontend is true to the chain

What I plan to do

  • Finsih the connecting the front to the chain using ABCI
  • Integrate Adena Wallet support so user can sign transactions and interact with the chain and use the dex as intended
  • Deploy the front to Vercel or Github pages

Blockers

  • I am unsure on how to implement the search for pools and p2p tickets. Should I add a function for search in the contract? Should I get all the info in a single query and filter it on the front? In that case, there is no point in implementing the pagination at all, was it in vain?

@matijamarjanovic
Copy link
Author

matijamarjanovic commented Feb 25, 2025

Hey I'm back with a unpdate of my work:

What I've done

  • Fully connected the frontend to the chain using ABCI
  • Started the integration of Adena Wallet into the app, connecting and disconnecting the wallet is done and I am now able to create tickets using /vm.m_call
  • Implemented search and other filters by querying the whole dataset from the chain and then paginated it on the front, even tough there is still functionality to paginate thorugh queries. The logic behind this is that the data set will probably never be too large to affect performance but I have still left space to revert to query based pagination
  • Made some functions that run short scripts in gno to implement the swap operations with tokens since they need approval to gnoxchange realm but I have had trouble making them work

What I plan to do

  • Continue trying to integrate running transactions (the scripts) using AdenaSDK
  • Continue making UI/UX improvements

Blockers

As mentioned above I'm having a little trouble running txs using adena sdk, to elaborate:

@matijamarjanovic
Copy link
Author

matijamarjanovic commented Mar 3, 2025

Weekly update:

What I have done

What I plan to do

  • Continue my work revolving gnoXchange and Adena in order to understand it better

Blockers

  • /

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants