-
Notifications
You must be signed in to change notification settings - Fork 22
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
feat(launchpad): Add backend, service, indexer, db #1432
base: main
Are you sure you want to change the base?
Conversation
✅ Deploy Preview for teritori-dapp ready!
To edit notification comments on pull requests, go to your Netlify site configuration. |
✅ Deploy Preview for gno-dapp ready!
To edit notification comments on pull requests, go to your Netlify site configuration. |
… in proto message
…-dapp into feat-launchpad-backend
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I put some comments, feel free to answer so i can approve or request changes
string sender = 1; | ||
string network_id = 2; | ||
string project_id = 3; | ||
string proposal_id = 4; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why is there a proposal id, if you want to create a proposal to approve a project request
or maybe i don't understand the purpose of this message
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if this is about approving a project request what about: ApproveProjectRequestProposal
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's about updating the DB after creating+approving a proposal.
ProposeApproveProjectRequest
is called after the proposal has been created, it's not used to create a proposal, we create the proposal on front using DA0 contract.
The flow in front is:
- Make a proposal using DA0 DA0 (onchain)
- Get the proposal id
- Vote "yes" using DA0 DA0 (onchain)
- Trigger ProposeApproveProject to update db (indexer)
This flow is here: https://github.com/TERITORI/teritori-dapp/blob/feat/cosmwasm-launchpad/packages/hooks/launchpad/useProposeApproveProject.ts#L30
I hope it makes sense ^^"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this should be the responsibility of an indexer handler, not triggered by an api call
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this should be the responsibility of an indexer handler, not triggered by an api call
I will need some instructions to make this refacto.
Should we use that as entry point from front ? https://github.com/TERITORI/teritori-dapp/blob/feat/cosmwasm-launchpad/packages/hooks/launchpad/useProposeApproveProject.ts#L30
Which wasm action to listen ? This one ? https://github.com/TERITORI/teritori-dapp/blob/feat-launchpad-backend/go/internal/indexerhandler/handle.go#L325-L328
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it would be the execute action on the dao contract in the top handler, but it's already handled and we need to listen to the submsg here really https://github.com/TERITORI/teritori-dapp/blob/feat-launchpad-backend/go/internal/indexerhandler/dao.go#L264
I'm not sure what is the correct action on the launchpad contract though, it would be the one proposed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hm ok, but we need to handle things before "deploy_collection".
- Either we listen for "propose" (DAO) (Then trigger the indexer launchpad stuff)
- Either we trigger ProposeApproveProject (Launchpad backend) (Then trigger the DAO stuff)
No ?
So, the best should be the first proposition (DAO contract is the entry, and we just trigger sepcific stuff depending on the Proposed action).
Actually, we can listen for "propose" and actions when the proposal is executed ("update_members", "create_post", ect).
But we can"t listen for the things in between, like "propose XXX" (Not just "propose", not just waiting for execution, but "do things if a proposal for XXX is made")
This though comes here: https://github.com/TERITORI/teritori-dapp/blob/feat-launchpad-backend/go/internal/indexerhandler/handle.go#L325
Could we have something like case "propose.deploy_collection
?
What is the NFT Launchpad use case ?
We want to make a proposal + vote "yes" + update project status in DB. The vote and update DB should be placed after "propose" and before "deploy_collection".
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Update: I made a PR to fix this point ==> #1488
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
partial
} | ||
|
||
// Converts the Metadata data into one string | ||
func (m *Metadata) GetID() string { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is this for :-s I don't really remember
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we replace this by an increased number id ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, it's more complexe than just generating an ID: 6e1955c
add missing GetID to respect merkletree Content interface
See https://discord.com/channels/876922049279455274/1192401307559018569/1290091481830260797 and https://discord.com/channels/876922049279455274/1192401307559018569/1291461904698441791
Waiting for #1488
Extracted from #1024
Most work was done by @hthieu1110, thank you mate ❤️
It adds: