Skip to content

UMBRO-ORG ​

UmbroOrg26 is the organization contract. Its id is UMBRO-ORG-26. standard() returns that string. version() returns 1.

solidity
import {UmbroOrg26} from "@utn/umbro/org/UmbroOrg26.sol";

Compiler: solc 0.8.28, optimizer on, 200 runs, via IR on. The interface is IUMBROORG26. Deploy steps are on Create an organization. What an admin and a member are is on Organizations.

Constructor ​

solidity
new UmbroOrg26(operator, keccak256("my-org"), firstAdmin, "Northwind");
ArgumentTypeRole
operatoraddressMay call operatorSetAdmin and operatorSetOrgRole
identitybytes32Stored as identityHash. Must be non-zero.
firstAdminaddressFirst member, with the admin flag set
orgNamestringReturned by name()

The contract has no owner. Membership status is Active, Suspended, or Removed. isAdmin and hasRole are false unless the member is Active.

Calls you will use ​

FunctionWhat it does
standard()Returns "UMBRO-ORG-26"
name()Returns the organization name
isAdmin(address)Admin and Active
isEnrolled(address)Active member
addMember(address, bytes32[], Limit[], uint256)Admin adds a member, roles, limits, and a gas budget
createInvite(...)Admin creates an invite bound to this chain and this contract
depositFor(address)Payable. Records a native-coin deposit.
balanceOf(address token)Native balance when token is the zero address
pay(...)Always reverts FeesOnly. It does not send funds.
approve(uint256)Reverts FeesOnly if the approval would pay out
setSponsor(address, bool, uint256)Names a sponsor and the organization's monthly gas cap
setGasBudget(address, uint256)Sets one member's monthly gas budget
reimburseGas(address, uint256, bytes32)A sponsor pulls a gas refund, within both caps

The contract header states the rule: members cannot send vault funds to an address. Admin allocation stays on setLimit and setGasBudget. A newer deployment is announced with successor. An organization deployed from older bytecode can still behave differently; read standard() and try the call, and do not assume pay moves T-RAIN.

Topic 0 of an event is the event signature. Topic 1 is the member the event is about (the admin, for a settings change). Contract data is public.

ABI ​

The ABI is in the package, not on chain, until someone verifies the deploy.

js
import { abi } from "@utn/umbro";
// abi.UmbroOrg26

The JSON file in the repository is packages/umbro/abi/UmbroOrg26.json.

GET /api?module=contract&action=getabi returns result: null while the address is unverified. See Verify a contract.

Address ​

Each organization is its own deployment. /utn-config.js does not contain an UMBRO-ORG address, so this page does not print one.

packages/umbro/deployments/utn-testnet.json records an UmbroOrg26 address from an earlier deploy. On 8 Oct 2026 eth_getCode for that address on https://rpc.utn.network was 0x. Do not use it.

After you deploy, read standard() on the address Remix or Foundry printed. A live organization returns UMBRO-ORG-26. The contract list is the index Scan has. standard on those rows is null until the indexer labels them; eth_call of standard() is the check.

Testnet coin T-RAIN · chain 20261003