ChainBloom Docs
Open ChainBloom

Creating a world from start to finish

Take partLast reviewed 2026-07-317 min read

Every decision that goes into opening a world, in the order you have to make them, including the four settings that can never be changed once the transaction confirms.

Creating a is the one moment where you decide the shape of something other people will live inside for weeks. This page walks the whole way through it, and marks clearly the four choices that no one, including you, can edit afterwards.

Start with the idea, not the settings#

A world is an invitation with edges. Before you touch a number, write down three sentences:

  1. What this world is for. "A record of one planting bed across the spring."
  2. What one contribution should be. "One thing you noticed on the day you looked."
  3. What the ending means. "We close on the day of the first harvest."

If you cannot write those three sentences, the settings will not save you. A world with eight paths and a year of runway and no idea what a contribution is will sit empty. A world with two paths, a month, and a clear invitation will fill.

Read The five actions before you choose. The vocabulary is small on purpose: a contribution is a bloom, an answer to an earlier moment is an echo, and two paths can share a moment without merging. What people can do shapes what you should ask for.

The four settings that are fixed forever#

These are written into the creation transaction. Once it confirms, they are what the world is. There is no edit, no admin override, and no migration.

SettingAllowed rangeWhat it decides
Paths1 to 8How many separate threads the world has
Duration144 to 52,560 blocksHow long the world stays open
Steps per path1 to 512How far any single thread can go
Titleup to 32 charactersThe name carried in the transaction itself

Paths#

One per contributor is the simplest arrangement, and it is what most first worlds should do. More paths is not more life. It is more empty threads if nobody holds them. Decide who holds each path before you create the world, because handing a path to a stranger later is harder than it sounds.

Duration#

Duration is counted in blocks, not days, because blocks are the only clock everyone shares. The range is 144 to 52,560 blocks, roughly 1 to 365 days. Blocks arrive at an average of one every ten minutes, but the average is not a promise. A quiet stretch can run long and a busy one short.

The world's last usable is the height it was created at plus the duration. At that height the world becomes EXPIRED, and every path still alive becomes EXPIRED with the reason WORLD_DURATION_ELAPSED. Nothing announces it. It simply stops being possible to add anything.

Pick a duration with slack. If your event is four weeks long, do not choose four weeks of blocks.

Steps per path#

Between 1 and 512. Each step is a signed transaction with a fee, so the limit is also a budget. A path with a limit of 20 steps and a monthly rhythm is a very different object from one with 400.

When a path reaches its limit, further steps are refused with MAX_STEPS_REACHED. Ending the path is still allowed at that point, which means a path can always be closed properly even when it is full.

Title#

At most 32 characters. Allowed characters are letters, digits, space, and the four marks . _ : -. Anything else is rejected with INVALID_TITLE; too long is rejected with INVALID_TITLE_LENGTH.

^[A-Za-z0-9 ._:-]*$

The exact pattern the code enforces, from src/codec.ts

No accents, no emoji, no punctuation beyond those four marks. The title is a handle, not a headline. Keep the poetry for the invitation.

What the transaction actually contains#

A creation transaction has a shape you can check by eye, and you should.

Output 0 is the : an OP_RETURN output with value 0 carrying at most 72 bytes. It holds the magic CBLM, the version, the network, the operation, and the settings you chose.

Then one output per path, each holding exactly 1,000 satoshis and each a Taproot output. These are the : the small outputs that hold each path in place. A world with three paths has outputs 1, 2, and 3.

Every input is a plain funding input. All of them must be native SegWit, or the transaction is refused with NON_NATIVE_SEGWIT_FEE_INPUT. A creation transaction may not spend a live path output from some other world; that is CREATE_SPENDS_CARRIER.

The marker begins with an 8-byte header: the four magic bytes 43424c4d spelling CBLM, then one byte of protocol version, one byte naming the network, one byte for the operation, and one byte giving the payload length.

For a creation the payload is 23 bytes plus the length of the title. It carries the ruleset number, the number of paths, the duration in blocks, the step limit, a 16-byte seed, and the title text. The seed is what makes two galleries draw the same world with the same arrangement rather than a random one.

Change any single byte and the marker stops being a ChainBloom marker. A wrong magic gives INVALID_MAGIC; an unknown network byte gives RESERVED_NETWORK; one extra byte on the end gives NON_MINIMAL_OP_RETURN.

Once it confirms, the transaction's becomes the world's id. Path ids are that id, a colon, and a number counting from zero, so the first path of world a1b2… is a1b2…:0.

Doing it#

The build, review, sign and broadcast flow runs today inside the ChainBloom workspace in InScribe, on its Act surface. No wallet has ChainBloom support of its own yet, so a wallet will show you a Bitcoin transaction and not a world. That is why the checks below are on you.

  • Write the invitation: what the world is for, what one contribution is, what the ending means.
  • Decide how many paths, between 1 and 8, and name the person who will hold each one.
  • Decide the duration in blocks, between 144 and 52,560, and write down the calendar date it lands on.
  • Decide the step limit per path, between 1 and 512.
  • Choose a title of at most 32 characters using only letters, digits, space, and . _ : -.
  • Check the network you selected matches the wallet you are about to sign with.
  • Fund the transaction with native SegWit inputs, none of which is a live path output.
  • On the review screen, check output 0 is the marker with value 0.
  • On the review screen, count the 1,000-satoshi outputs and check there is exactly one per path.
  • Check the miner fee and the change address.
  • Sign, broadcast, and note the txid immediately.
  • Wait for the first confirmation before telling anyone the world exists.
  • Send one path output to each participant, and tell them the world id and their path id.

Handing out the paths#

A path belongs to whoever controls its output. There is no invite list and no permission table. To give someone a path, you send them that 1,000-satoshi output to an address they control, exactly as you would send any other Bitcoin output.

Send the paths one at a time and confirm each hand-off before the next. Tell each person their path id in writing. A participant who knows only "you have a path in the garden world" cannot find it.

After it confirms#

Your job changes from designing to hosting. Three things help more than anything else:

Publish the world id and the path ids somewhere durable. People will come back in six weeks and will not remember them.

Say what you expect the rhythm to be. "One bloom a week, roughly" gives people permission to be slow.

Be clear about what belongs in the world. Everything written into a marker is public, permanent, and readable by anyone forever, including by people you did not invite. Moderation and privacy covers what you can and cannot do about that, and the honest answer is that you decide before, not after.

The last thing worth saying: a world you created is not yours. You chose its edges. What happens inside them belongs to the people holding the paths, and the ending belongs to whoever closes the last one.

Next

Know what you will pay before you decide

What a creation costs, what each path output holds while it is alive, and how long a first confirmation really takes.

Fees and confirmation