Skip to main content

Deploy Layer 2

The "deploy" operation deploys a new Layer 2 blockchain on Bitcoin.

Parameters

  • p: "l2o-a" (The ordinal protocol, which is "l2o-a")
  • op: "Deploy" (The operation id, which is "Deploy")
  • l2id: A unique unsigned 32bit number that identifies the layer 2 and which has not been previously registered.
    • Note: The l2id 0 is reserved for representing the Bitcoin Layer 1 blockchain
    • Note: if an incoming deploy operation specifies an l2id which has already been deployed, then the incoming deploy operation is NOOP
  • start_state_root: The start state root of the Layer 2 encoded as a 64 character hexadecimal string
  • public_key: The public key which is used to verify the first block proof's signature
    • Note: if public_key is set to the empty string "" or "0" then the first block proof's signature is ignored
  • hash_function: The hash function to be used for constructing the Deposit/Withdrawal Merkle Tree for the Layer 2, as well as selecting the Superchain Merkle Tree Variant used for Block Operations.
  • proof_type: The proving protocol to be used for verifying the Layer 2's block proofs
    • Allowed Values:
    • Editors Note: More proving backends will be added over the coming weeks
  • verifier_data: The verifier data required to verify a block proof for this L2
    • Note: This is specific to the proof type, see Supported Proving Systems

Pseudo Schema

{
"p": "l2o-a",
"op": "Deploy",
"l2id": 1,
"start_state_root": "<the start state root for your L2, 0 if it is set by the first block proof>",
"public_key": "<the schnorr public key of the first block proof, 0 if no signature is required>",
"hash_function": "<the hash function used for stateful operations for this L2>",
"proof_type": "<proof type>",
"verifier_data": {
"...": "<verifier data required to verify a block proof for this L2>"
}
}