PathrockNetwork Gno Explorer
HomeBlocksTransactionsTokensRealmsPackagesValidatorsAnalytics

PathrockNetwork Gno Explorer — an independent explorer for Gno.land Mainnet (gnoland-1), operated by PathrockNetwork. Not an official Gno.land service.

gnowebarchive RPC

gno.land/r/sys/cla

Realm
Open in gnoweb ↗

Overview

Kind
Realm (renderable)
Name
cla
Namespace
sys
Files
5 (gnomod.toml)
Exported functions
4
Module
gno.land/r/sys/cla
gno
0.9

Files (5)

  • gnomod.tomltoml
  • admin.gnogno
  • cla.gnogno
  • render.gnogno
  • cla_test.gnogno
cla_test.gnogno
1package cla23import (4	"testing"56	"gno.land/p/moul/addrset/v0"7	"gno.land/p/nt/uassert/v0"8)910// cur is a zero-value realm used as a placeholder when forwarding to11// uassert/urequire dispatch helpers that gained an `rlm realm` param.12// These tests pass `func()` callbacks (no crossing inside the callback),13// so rlm is ignored — a nil realm here is safe.14var cur realm1516const (17	testHash1 = "abc123def456"18	testHash2 = "xyz789uvw012"19	testUser1 = "g1user1address1234567890"20	testUser2 = "g1user2address0987654321"21)2223func resetState() {24	signatures = addrset.Set{}25	requiredHash = ""26	claURL = ""27}2829func TestSign(cur realm, t *testing.T) {30	resetState()3132	setRequiredHash(testHash1)3334	testing.SetRealm(testing.NewUserRealm(testUser1))35	Sign(cross(cur), testHash1)3637	uassert.True(t, HasValidSignature(address(testUser1)))38}3940func TestSign_WrongHash(cur realm, t *testing.T) {41	resetState()4243	setRequiredHash(testHash1)4445	testing.SetRealm(testing.NewUserRealm(testUser1))46	uassert.AbortsWithMessage(t, cur, "hash does not match required CLA hash", func() {47		Sign(cross(cur), testHash2)48	})4950	uassert.False(t, HasValidSignature(address(testUser1)))51}5253func TestHasValidSignature_Disabled(t *testing.T) {54	resetState()5556	uassert.Equal(t, "", requiredHash)57	uassert.True(t, HasValidSignature(address(testUser1)))58	uassert.True(t, HasValidSignature(address(testUser2)))59}6061func TestHasValidSignature_Valid(cur realm, t *testing.T) {62	resetState()6364	setRequiredHash(testHash1)6566	testing.SetRealm(testing.NewUserRealm(testUser1))67	Sign(cross(cur), testHash1)6869	uassert.True(t, HasValidSignature(address(testUser1)))70}7172func TestHasValidSignature_NotSigned(t *testing.T) {73	resetState()7475	setRequiredHash(testHash1)7677	uassert.False(t, HasValidSignature(address(testUser1)))78}7980func TestSetRequiredHash_ResetsSignatures(cur realm, t *testing.T) {81	resetState()8283	setRequiredHash(testHash1)8485	testing.SetRealm(testing.NewUserRealm(testUser1))86	Sign(cross(cur), testHash1)87	uassert.True(t, HasValidSignature(address(testUser1)))88	uassert.Equal(t, 1, signatures.Size())8990	// Update hash - should reset signatures91	setRequiredHash(testHash2)9293	uassert.False(t, HasValidSignature(address(testUser1)))94	uassert.Equal(t, 0, signatures.Size())95}96

Functions

  • HasValidSignature(addr string) bool

  • ProposeNewCLA(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}, newHash string, newURL string) struct{title string; description string; executor gno.land/r/gov/dao.Executor; filter gno.land/r/gov/dao.Filter}

  • Render(path string) string

  • Sign(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}, hash string)

Signatures reconstructed verbatim from vm/qfuncs — interface params keep their inline definitions.

Rendered

RenderedRawgnoweb ↗

vm/qrender output, sanitized (docs/render-security.md) and displayed in an empty-sandbox iframe — scripts, forms and popups cannot run. Links stay inert in-preview; right-click to open.