- No matches
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");| Argument | Type | Role |
|---|---|---|
operator | address | May call operatorSetAdmin and operatorSetOrgRole |
identity | bytes32 | Stored as identityHash. Must be non-zero. |
firstAdmin | address | First member, with the admin flag set |
orgName | string | Returned 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
| Function | What 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.UmbroOrg26The 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.