Realm detail
incentives
gno.land/r/g1mv0052e7r6s09f5t9xsqf00nj3tqsgt9dg52jr/zdex/incentives/v1
Indexed deployment identity with independently loaded latest RPC source, functions, and Render.
Indexed deployment
Identity
- Package path
- gno.land/r/g1mv0052e7r6s09f5t9xsqf00nj3tqsgt9dg52jr/zdex/incentives/v1
- Block
- 239672
- Deployed (UTC)
- Transaction
- 29G60ZiCAxSSwdLbTQ3D+O/ePH+Ekpjv5zTQ29aGtps=
Latest RPC state
Source
package incentives
import (
"math/overflow"
"strconv"
"gno.land/p/nt/avl/v0"
)
const (
nativeDenom = "ugnot"
scale = int64(1_000_000_000)
minFundUgnot = int64(1_000_000)
minLiquidity = int64(1000)
dexPkg = "gno.land/r/g1mv0052e7r6s09f5t9xsqf00nj3tqsgt9dg52jr/zdex/v2"
protoVersion = "1"
)
var (
admin address
paused bool
gauges avl.Tree // poolID -> *Gauge
stakes avl.Tree // poolID/owner -> *Stake
)
type Gauge struct {
ID string
Acc int64
TotalFunded int64
On bool
}
// LastLP/LastAcc are the sidecar checkpoint. Claimable and Sync both
// use stored LastLP, not live PositionOf, so a first Sync only snapshots.
type Stake struct {
LastLP int64
LastAcc int64
}
func init(cur realm) {
admin = cur.Previous().Address()
}
func require(cond bool, msg string) {
if !cond {
panic(msg)
}
}
func mustOwner(cur realm) {
if cur.Previous().Address() != admin {
panic("zdex: admin only")
}
}
func add64(a, b int64) int64 {
s, ok := overflow.Add64(a, b)
if !ok {
panic("zdex: add overflow")
}
return s
}
func itoa(n int64) string {
return strconv.FormatInt(n, 10)
}
func btoi(v bool) int64 {
if v {
return 1
}
return 0
}
func stakeKey(poolID string, owner address) string {
return poolID + "/" + owner.String()
}
func tryGauge(poolID string) *Gauge {
v := gauges.Get(poolID)
if v == nil {
return nil
}
return v.(*Gauge)
}
func tryStake(poolID string, owner address) *Stake {
v := stakes.Get(stakeKey(poolID, owner))
if v == nil {
return nil
}
return v.(*Stake)
}
func getOrCreateStake(poolID string, owner address) *Stake {
if st := tryStake(poolID, owner); st != nil {
return st
}
st := &Stake{}
stakes.Set(stakeKey(poolID, owner), st)
return st
}
// Fund creates the gauge on=true. SetGauge may create on=false.
func ensureGauge(poolID string, onIfNew bool) *Gauge {
if g := tryGauge(poolID); g != nil {
return g
}
g := &Gauge{ID: poolID, On: onIfNew}
gauges.Set(poolID, g)
return g
}
Latest RPC state
Exported functions
- Fund(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, poolID string)
- Sync(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, poolID string) int64
- Claim(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, poolID string) int64
- SetGauge(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, poolID string, on bool)
- SetPaused(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, v bool)
- Version() string
- DexPkg() string
- Admin() string
- Paused() bool
- GaugeSnapshot(poolID string) string
- GaugeList() string
- Claimable(poolID string, owner string) int64
- Render(path string) string
Latest RPC state · Realm Render
zdex incentives v1
Sidecar gauges on DexPkg. Native ugnot via OriginSend. LP Claim uses LastLP; does not call zdex swap or LP.
- Version: 1
- Dex:
gno.land/r/g1mv0052e7r6s09f5t9xsqf00nj3tqsgt9dg52jr/zdex/v2 - Admin:
g1mv0052e7r6s09f5t9xsqf00nj3tqsgt9dg52jr
Gauges
| Pool | acc | funded | on |
|---|---:|---:|---|
| ugnot|ZDEX | 10541245 | 100000000 | on |
Fund
Attach ugnot with the tx. Any EOA can incentivize a live pool (totalLP > 0).
Claim
Settles LastLP then snapshots current PositionOf. Works when paused or gauge off.