Structs Energy Management

Decision Tree

Need more capacity?
├── Have Alpha Matter?
│   ├── Infuse into a reactor (safest, immediate, 1g ≈ 1kW minus commission)
│   │   → See "Reactor Infusion" below
│   └── Infuse into a generator (higher ratio, IRREVERSIBLE, vulnerable to raids)
│       → See "Generator Infusion" below
└── No Alpha Matter?
    └── Buy energy from a provider via agreement
        → See "Buy Energy" below

Have surplus energy?
└── Sell it by creating a provider
    → See "Sell Energy" below

Reactor Infusion (most common path)

Infusing Alpha Matter (ualpha) into a reactor immediately increases the player’s capacity. This is the safest and most common way to get more energy.

How It Works

When you infuse ualpha into a reactor, the system generates power equal to the amount infused. This power is split between you and the reactor based on the reactor’s commission rate:

The player’s capacity increases automatically — no allocation or substation setup needed.

Example

Infusing 3,000,000 ualpha into a reactor with 4% commission:

{
  "destinationType": "reactor",
  "destinationId": "3-1",
  "fuel": "3000000",
  "power": "3000000",
  "commission": "0.040000000000000000",
  "playerId": "1-33"
}

Procedure

  1. Check current capacity: structsd query structs player [id]
  2. Choose a reactor (usually your guild’s): structsd query structs reactor [id] — note the commission field
  3. Infuse:
structsd tx structs reactor-infuse [your-address] [validator-address] [amount]ualpha --from [key-name] --gas auto --gas-adjustment 1.5 -y

Important: The amount must include the denomination, e.g. 60000000ualpha (not just 60000000). Omitting the denom will cause the transaction to fail.

  1. Verify: re-query player, confirm capacity increased

Choosing a Reactor

Undoing Infusion


Generator Infusion

Generators convert Alpha Matter to energy at higher ratios than reactors, but the infusion is irreversible and the generator is vulnerable to raids.

Conversion Rates

Generator Type ID Rate Risk
Field Generator 20 1g = 2 kW High — vulnerable to raids, irreversible
Continental Power Plant 21 1g = 5 kW High — vulnerable to raids, irreversible
World Engine 22 1g = 10 kW High — vulnerable to raids, irreversible

Procedure

  1. Identify your generator struct: structsd query structs struct [id] — must be type 20, 21, or 22
  2. Infuse:
structsd tx structs struct-generator-infuse [struct-id] [amount]ualpha --from [key-name] --gas auto --gas-adjustment 1.5 -y

Important: Amount must include denomination, e.g. 5000000ualpha.

  1. Verify: query player for capacity increase

When to Use Generators

Do not infuse generators without adequate defense.


Buy Energy (Agreement Path)

If you have no Alpha Matter to infuse, you can buy energy from another player who is running a provider.

Procedure

  1. Find a provider: Query available providers:
structsd query structs provider-all

Or check your guild’s providers. Look for one with acceptable rateAmount, capacityMaximum, and durationMaximum.

  1. Open an agreement:
structsd tx structs agreement-open [provider-id] [duration-in-blocks] [capacity] --from [key-name] --gas auto --gas-adjustment 1.5 -y

The agreement automatically creates an allocation.

  1. Connect the allocation to a substation:
structsd tx structs substation-allocation-connect [substation-id] [allocation-id] --from [key-name] --gas auto --gas-adjustment 1.5 -y

Connect to your guild’s substation to benefit the guild, or create your own substation for independent energy management.

  1. Verify: Query player to confirm capacity increased.

Agreement Management


Sell Energy (Energy Commerce Pipeline)

If you have surplus capacity, you can sell energy to other players through the reactor-allocation-substation-provider pipeline. This is the core of Structs economic gameplay.

Full Pipeline (Step by Step)

  1. Accumulate Alpha – Mine ore, refine immediately. Consolidate ualpha to the account that will manage energy commerce.

  2. Infuse into reactor – Increases your player capacity. Use your guild’s reactor for simplicity:

structsd tx structs reactor-infuse [your-address] [validator-address] [amount]ualpha --from [key-name] --gas auto -y

The validator-address is structsvaloper1... (find it in structsd query structs reactor [id] under the validator field). Commission is locked at infusion time and permanent for that infusion.

  1. Create automated allocation – Routes your capacity to a substation. Use automated type so it auto-grows when you infuse more alpha:
structsd tx structs allocation-create --allocation-type automated --from [key-name] --gas auto -y -- [your-player-id] [power-amount]
  1. Create substation – The distribution node for your energy:
structsd tx structs substation-create --from [key-name] --gas auto -y -- [your-player-id] [allocation-id]
  1. Create provider – Your marketplace storefront:
structsd tx structs provider-create --from [key-name] --gas auto -y -- [substation-id] [rate] [access-policy] [provider-penalty] [consumer-penalty] [cap-min] [cap-max] [dur-min] [dur-max]
Parameter Purpose Recommendation
rate Price per unit capacity per block 1uguild.0-1 (guild tokens create demand for your guild’s currency)
access-policy Who can buy open-market for maximum revenue
provider-penalty Penalty you pay if you cancel 0 initially
consumer-penalty Penalty buyer pays if they cancel 0 to lower friction
cap-min / cap-max Capacity range per agreement 1000 to 1000000000
dur-min / dur-max Duration range in blocks 100 to 1000000
  1. Monitor agreements – Buyers open agreements against your provider:
structsd query structs provider [provider-id]
  1. Withdraw earnings periodically:
structsd tx structs provider-withdraw-balance --from [key-name] --gas auto -y -- [provider-id]

How Agreements Work (Payment Flow)

When a buyer opens an agreement:

  1. Buyer pays capacity * rate * duration upfront in the rate denomination
  2. Payment goes into the provider’s collateral address (escrow)
  3. System auto-creates a provider-agreement allocation (energy flows immediately)
  4. Revenue drips from collateral to the provider’s earnings address as blocks pass
  5. Provider withdraws accumulated earnings at any time
  6. On expiry (endBlock reached), the allocation is released

Agreement lifecycle: OPEN -> ACTIVE -> EXPIRED (or CLOSED early with cancellation penalties).

The Energy Flywheel

The most powerful economic strategy in Structs is compounding energy:

  1. Mine ore from planets
  2. Refine ore into Alpha immediately
  3. Infuse Alpha into the guild reactor
  4. Automated allocation grows substation capacity
  5. Sell energy via provider, earning guild tokens
  6. Reinvest guild tokens (via guild-bank-redeem for alpha, or trade)

Each cycle compounds: more alpha = more capacity = more energy to sell = more tokens = more economic power.

Important Notes

Provider Management


Quick Reference

Situation Action
Low capacity, have Alpha Infuse into guild reactor
Need maximum kW per gram Infuse into generator (irreversible)
No Alpha, need capacity Open agreement with a provider
Surplus capacity Create provider to sell energy
Going offline (load > capacity) Deactivate structs immediately, then increase capacity
Check commission rate structsd query structs reactor [id]
Check your capacity structsd query structs player [id]

Commands Reference

Action Command
Reactor infuse structsd tx structs reactor-infuse [your-addr] [validator-addr] [amount-ualpha] (validator = structsvaloper1..., NOT reactor ID)
Reactor defuse structsd tx structs reactor-defuse [reactor-id]
Reactor migrate structsd tx structs reactor-begin-migration [player-addr] [src-validator-addr] [dest-validator-addr] [amount]
Generator infuse structsd tx structs struct-generator-infuse [struct-id] [amount-ualpha]
Open agreement structsd tx structs agreement-open [provider-id] [duration] [capacity]
Close agreement structsd tx structs agreement-close [agreement-id]
Create provider structsd tx structs provider-create [substation-id] [rate] [access] [prov-pen] [cons-pen] [cap-min] [cap-max] [dur-min] [dur-max]
Delete provider structsd tx structs provider-delete [provider-id]
Withdraw earnings structsd tx structs provider-withdraw-balance [provider-id]
Connect allocation structsd tx structs substation-allocation-connect [substation-id] [allocation-id]
Query player power structsd query structs player [id]
Query reactor structsd query structs reactor [id]
Query providers structsd query structs provider-all

Common tx flags: --from [key-name] --gas auto --gas-adjustment 1.5 -y

Important: Entity IDs containing dashes (like 3-1, 4-5) are misinterpreted as flags by the CLI parser. Always place -- between flags and positional args: structsd tx structs command --from key --gas auto -y -- [entity-id] [other-args]

Error Handling

See Also