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

feat: On-Chain Airdrop checker [WIP] #3899

Draft
wants to merge 9 commits into
base: master
Choose a base branch
from

Conversation

notJoon
Copy link
Member

@notJoon notJoon commented Mar 10, 2025

Description

Implements a basic airdrop checker functionality. The implementation follows a "Reader-only realm" pattern and provides simple APIs for checking token balances and total supply.

WIP

Key Changes

  • Add TotalSupply() method to get total supply of a specific denomination
  • Add AddressBalance() method to get balance of an address for a specific denomination

@github-actions github-actions bot added 🧾 package/realm Tag used for new Realms or Packages. 📦 ⛰️ gno.land Issues or PRs gno.land package related labels Mar 10, 2025
@Gno2D2 Gno2D2 requested a review from a team March 10, 2025 04:21
@Gno2D2
Copy link
Collaborator

Gno2D2 commented Mar 10, 2025

🛠 PR Checks Summary

All Automated Checks passed. ✅

Manual Checks (for Reviewers):
  • IGNORE the bot requirements for this PR (force green CI check)
Read More

🤖 This bot helps streamline PR reviews by verifying automated checks and providing guidance for contributors and reviewers.

✅ Automated Checks (for Contributors):

🟢 Maintainers must be able to edit this pull request (more info)
🟢 Pending initial approval by a review team member, or review from tech-staff

☑️ Contributor Actions:
  1. Fix any issues flagged by automated checks.
  2. Follow the Contributor Checklist to ensure your PR is ready for review.
    • Add new tests, or document why they are unnecessary.
    • Provide clear examples/screenshots, if necessary.
    • Update documentation, if required.
    • Ensure no breaking changes, or include BREAKING CHANGE notes.
    • Link related issues/PRs, where applicable.
☑️ Reviewer Actions:
  1. Complete manual checks for the PR, including the guidelines and additional checks if applicable.
📚 Resources:
Debug
Automated Checks
Maintainers must be able to edit this pull request (more info)

If

🟢 Condition met
└── 🟢 And
    ├── 🟢 The base branch matches this pattern: ^master$
    └── 🟢 The pull request was created from a fork (head branch repo: notJoon/gno-core)

Then

🟢 Requirement satisfied
└── 🟢 Maintainer can modify this pull request

Pending initial approval by a review team member, or review from tech-staff

If

🟢 Condition met
└── 🟢 And
    ├── 🟢 The base branch matches this pattern: ^master$
    └── 🟢 Not (🔴 Pull request author is a member of the team: tech-staff)

Then

🟢 Requirement satisfied
└── 🟢 If
    ├── 🟢 Condition
    │   └── 🟢 Or
    │       ├── 🔴 At least 1 user(s) of the organization reviewed the pull request (with state "APPROVED")
    │       ├── 🟢 At least 1 user(s) of the team tech-staff reviewed pull request
    │       └── 🟢 This pull request is a draft
    └── 🟢 Then
        └── 🟢 Not (🔴 This label is applied to pull request: review/triage-pending)

Manual Checks
**IGNORE** the bot requirements for this PR (force green CI check)

If

🟢 Condition met
└── 🟢 On every pull request

Can be checked by

  • Any user with comment edit permission

Copy link

codecov bot commented Mar 10, 2025

Codecov Report

Attention: Patch coverage is 80.00000% with 2 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
gno.land/pkg/sdk/vm/builtins.go 80.00% 1 Missing and 1 partial ⚠️

📢 Thoughts on this report? Let us know!

@github-actions github-actions bot added the 📦 🤖 gnovm Issues or PRs gnovm related label Mar 10, 2025
@leohhhn
Copy link
Contributor

leohhhn commented Mar 10, 2025

If you add TotalSupply in this PR, just linking this PR as well for the docs: #2661

@moul
Copy link
Member

moul commented Mar 10, 2025

can we stop using the term "airdrop" for this feature (PR title, and a unit test having the term in the title); this PR isn't an airdrop checker, but a balance checker.

)

// TotalSupply returns the total supply of the specified denomination
func TotalSupply(banker std.Banker, denom string) int64 {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we have this API instead, and always use a readonly banker?

Suggested change
func TotalSupply(banker std.Banker, denom string) int64 {
func TotalSupply(denom string) int64 {

}

func renderHomepage() string {
return `# Gno.land Coins
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

homepage should give some information, and provide default links so that we can try the features with just a few clicks.

## Total Supply
` + std.NewCoin(denom, totalSupply).String() + `

[Back to Home](/r/gnoland/coins:)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

back is already available in the navigation breadcrumb.

Comment on lines +109 to +110
[Back to Coin Info](/r/gnoland/coins:` + denom + `)
[Back to Home](/r/gnoland/coins:)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove this, we should use the navigation breadcrumb for this.

}

for _, tt := range tests {
banker := std.NewBanker(std.BankerTypeRealmIssue)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do we need to initialize a banker from this realm?

(if there is a good reason, why not a readonly one?)

Comment on lines +50 to +52
for _, acc := range accounts {
if acc == nil {
continue
Copy link
Member

@moul moul Mar 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not scalable. We need to find a more efficient solution, or we should refrain from offering this feature for now.

Copy link
Member

@moul moul left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

check comments.

moul

This comment was marked as duplicate.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
📦 ⛰️ gno.land Issues or PRs gno.land package related 📦 🤖 gnovm Issues or PRs gnovm related 🧾 package/realm Tag used for new Realms or Packages.
Projects
Status: In Progress
Status: In Progress
Development

Successfully merging this pull request may close these issues.

4 participants