Split
typeSplit holds a fee-splitting configuration with percentage-based shares denominated in basis points (1 bp = 0.01%, 10000 bp = 100%).
Value
fee_split.Split
MaxRecipients
untyped bigintValue
(20 <untyped> bigint)
MaxSplitsPerOwner
untyped bigintValue
(10 <untyped> bigint)
MaxRenderSplits
untyped bigintValue
(100 <untyped> bigint)
MaxFeeBps
int64Value
100
MaxRecipientListLen
untyped bigintValue
(1024 <untyped> bigint)
MaxShareListLen
untyped bigintValue
(128 <untyped> bigint)
Denom
untyped stringValue
"ugnot"
MaxDepositAmount
int64Value
922337203685477
splits
map[string]*fee_split.Split- OID
- 029269…50fe:39
splits details
splitIDs
[]string// insertion-ordered for deterministic Render
- OID
- 029269…50fe:47
ownerSplits
map[.uverse.address]int- OID
- 029269…50fe:41
ownerSplits details
nextID
intValue
2
feeBps
int64Value
100
feeAdmin
.uverse.address// deployer; can set the fee and claim accrued fees
Value
<gnolang.StringValue>
pendingFeeAdmin
.uverse.address// two-step handover, must AcceptFeeAdmin
Value
<zero>
feesAccrued
int64Value
0
feesClaimed
int64Value
500
init.18
func()- OID
- 029269…50fe:12
init.18 details
caller
func() .uverse.address- OID
- 029269…50fe:14
caller details
formatPct
func(bp int64) string- OID
- 029269…50fe:15
formatPct details
mustGetSplit
func(id string) *fee_split.Split- OID
- 029269…50fe:16
mustGetSplit details
mustGetActive
func(id string) *fee_split.Split- OID
- 029269…50fe:17
mustGetActive details
boolStr
func(v bool) string- OID
- 029269…50fe:18
boolStr details
parseBasisPoints
func(raw string) []int64- OID
- 029269…50fe:19
parseBasisPoints details
parseAddresses
func(raw string) [].uverse.address- OID
- 029269…50fe:20
parseAddresses details
validateRecipients
func(recipients [].uverse.address, shares []int64)- OID
- 029269…50fe:21
validateRecipients details
sortedBalanceAddrs
func(s *fee_split.Split) []stringsortedBalanceAddrs returns the balance-map keys in deterministic order, so panics and renders never depend on map iteration order.
- OID
- 029269…50fe:22
sortedBalanceAddrs details
rejectStraySend
func()rejectStraySend aborts when coins are attached to a call that does not accept them — the abort reverts the transfer back to the sender instead of stranding the coins on the realm address (re-audit P3). Direct bank transfers to the realm address remain unrecoverable by design.
- OID
- 029269…50fe:23
rejectStraySend details
CreateSplit
func(recipientList string, shareList string) stringCreateSplit registers a new split. The caller becomes the owner. Recipients and shares are comma-separated; shares are in basis points summing to 10000.
- OID
- 029269…50fe:24
CreateSplit details
Deposit
func(splitID string)Deposit distributes the coins sent with the call across recipients proportionally. DEPLOYMENT PRECONDITION (round-4 audit): on a network with restricted/token-locked ugnot transfers, the bank gate is SENDER-whitelist-based — a whitelisted user's Deposit succeeds but Claim sends FROM this realm's (non-whitelisted) address and reverts. Funds would flow in and not out until the restriction lifts. Deploy only to networks with unrestricted ugnot, or have governance whitelist this realm's address first. LIMITATION (round-3 audit, documented): only direct user calls can deposit. A DAO/realm treasury has NO deposit path — a realm-routed call is refused, and a bare banker send to this realm's address is an unrecoverable donation. Realm treasuries must route deposits through a user account. The deposit is the ACTUAL attached send — exactly one coin of Denom — so balances are always backed by funds this realm holds. Direct user calls only: a deposit routed through an intermediary realm would deliver its coins to that realm, not here, and must be rejected. Rounding dust goes to the highest-share recipient (deterministic, not order-dependent).
- OID
- 029269…50fe:25
Deposit details
Claim
func(splitID string) int64Claim withdraws the caller's accumulated balance and SENDS the coins to the caller's address. Balance is zeroed before the transfer. Claims remain possible on frozen splits, and by ex-recipients whose accrued balance predates a share update.
- OID
- 029269…50fe:26
Claim details
UpdateShares
func(splitID string, recipientList string, shareList string)UpdateShares replaces recipients and shares. Owner only. Not if frozen. Removed recipients keep any accrued balance and can still Claim it.
- OID
- 029269…50fe:27
UpdateShares details
TransferOwnership
func(splitID string, newOwner .uverse.address)TransferOwnership hands control to a new owner. The per-owner split slot moves with it: the old owner's count is freed and the new owner's is consumed (and must be under the limit).
- OID
- 029269…50fe:28
TransferOwnership details
Freeze
func(splitID string)Freeze permanently locks shares and stops further deposits. One-way, cannot be undone. Claims remain possible.
- OID
- 029269…50fe:29
Freeze details
Archive
func(splitID string)Archive marks a fully-claimed split as archived. Only the owner can archive, and only if EVERY balance — including balances held by ex-recipients removed in a share update — is zero, since archiving blocks all further claims. Cannot be undone.
- OID
- 029269…50fe:30
Archive details
SetFee
func(bps int64)SetFee sets the protocol fee in basis points, admin only, hard-capped at MaxFeeBps. Applies to FUTURE deposits only.
- OID
- 029269…50fe:31
SetFee details
ClaimFees
func() int64ClaimFees sends all accrued protocol fees to the fee admin.
- OID
- 029269…50fe:32
ClaimFees details
NominateFeeAdmin
func(nominee .uverse.address)NominateFeeAdmin begins a two-step admin handover; the nominee must AcceptFeeAdmin. Pass "" to clear a pending nomination. Two-step because the admin address is a funds destination: a typo'd one-step transfer would strand all future fees.
- OID
- 029269…50fe:33
NominateFeeAdmin details
AcceptFeeAdmin
func()AcceptFeeAdmin completes the handover; only the nominee can accept.
- OID
- 029269…50fe:34
AcceptFeeAdmin details
GetFeeInfo
func() stringGetFeeInfo returns the current fee configuration and accrued total.
- OID
- 029269…50fe:35
GetFeeInfo details
GetSplitInfo
func(splitID string) stringGetSplitInfo returns a human-readable summary.
- OID
- 029269…50fe:36
GetSplitInfo details
GetClaimable
func(splitID string, addr .uverse.address) int64GetClaimable returns claimable balance for an address.
- OID
- 029269…50fe:37
GetClaimable details
Render
func(path string) stringRender returns a markdown overview. Never panics.
- OID
- 029269…50fe:38