Skip to content

Organizations ​

An organization is a contract. You deploy UmbroOrg26 once. The transaction returns an address. That address is the organization.

The contract stores the organization name, the members, and the T-RAIN balance of the contract. The standard id is UMBRO-ORG-26. standard() returns that string.

Admins and members ​

The contract has no owner role. It has an operator, admins, and members.

  • The constructor sets operator, a bytes32 identity, firstAdmin, and the name. firstAdmin is the first member and an admin.
  • operatorSetAdmin lets the operator set or clear the admin flag later.
  • A member has a status: Active, Suspended, or Removed.
  • isAdmin(account) is true only when the account is an admin and Active.
  • isEnrolled(account) is true when the membership is Active.
  • hasRole is false unless the member is Active. Admins name the roles.

Invites are on the same contract. An invite carries roles, spending limits, and a gas budget. Accepting one is bound to this contract, this chain, and the account.

The balance ​

Anyone can send T-RAIN to the contract. receive() and depositFor(member) record a deposit. balanceOf(token) is the native balance when token is the zero address.

pay is still in the interface and always reverts FeesOnly. An approve that would complete a payout reverts FeesOnly as well. Members cannot send the contract's T-RAIN to an arbitrary address. The outflow the contract does perform is reimburseGas: a registered sponsor (the relay) is repaid for a sponsored network fee, inside the member's gas budget and the organization's monthly cap.

Gas ​

setSponsor names the relay and an organization-wide monthly cap. setGasBudget sets the member's cap. That is gas sponsorship, described on Accounts. It is not a separate fee.

The full function list, the ABI, and how to read standard() on a deployment are on UMBRO-ORG. Deploying one is Create an organization.

Testnet coin T-RAIN · chain 20261003