Manage a checkpoint

As a controller or advancer, I want to inspect the evidence, state change and addressed value flow for a checkpoint operation.

Checkpoint is the funded lifecycle profile. Accepted steps return both next state and addressed value flow.

Examples below are model fixtures. Their oracle fields describe synthetic verification outcomes; they are not evidence accepted from production callers. The input shown includes common fixture context as well as the call.

flowchart LR
  Caller[Caller] -->|Supplied published evidence| Assessment[Evidence assessment]
  Assessment -->|Missing required evidence| Unknown[unknown]
  Assessment -->|Complete model inputs| Model[Model operation]
  Model -->|Predicate fails| Refused[Named refusal]
  Model -->|Predicate holds| Result[State, flow or verdict]

Close

As a caller, I want to leave while preserving the parked key-state commitment.

Operation: checkpoint.close. The corpus contains 576 observations.

Named refusals:

  • checkpoint-state-mismatch: Action has no constructor for the supplied State.
  • intent-unauthorized: intentOk returns false for the next epoch, action intent and refund option.
  • rotation-evidence-invalid: rotationTo at the recorded epoch and sequence returns false.
  • sequence-not-later: Requested sequence is less than or equal to the recorded sequence.

Accepted example

Caller supplies this model fixture:

{
  "params": {
    "B": 5,
    "D": 1000,
    "P": 2,
    "W": 10
  },
  "now": 20,
  "state": {
    "state": "present",
    "bornAt": 10,
    "epoch": 1,
    "frozen": false,
    "poisoned": false,
    "pool": 1,
    "refundTo": 1,
    "sn": 1
  },
  "action": {
    "action": "close",
    "sn": 2,
    "payee": 2,
    "refund": null
  },
  "oracle": {
    "rotations": [
      {
        "epoch": 1,
        "from": 1,
        "to": 0
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 1
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 2
      }
    ],
    "intents": [
      {
        "epoch": 2,
        "intent": {
          "kind": "keep"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": 1
      }
    ],
    "quorums": [
      {
        "epoch": 1
      }
    ],
    "duplicities": [
      {
        "epoch": 1,
        "sn": 1
      }
    ]
  }
}

Caller obtains:

{
  "status": "accepted",
  "flow": {
    "bIn": 0,
    "convictor": null,
    "dregIn": 0,
    "hunter": null,
    "poolIn": 0,
    "refund": {
      "addr": 1,
      "b": 5,
      "dreg": 1000,
      "pool": 1
    }
  },
  "state": {
    "state": "parked",
    "epoch": 2,
    "sn": 2
  }
}

Refused example

Caller supplies this model fixture:

{
  "params": {
    "B": 5,
    "D": 1000,
    "P": 2,
    "W": 10
  },
  "now": 20,
  "state": {
    "state": "absent"
  },
  "action": {
    "action": "close",
    "sn": 0,
    "payee": 2,
    "refund": null
  },
  "oracle": {
    "rotations": [
      {
        "epoch": 1,
        "from": 1,
        "to": 0
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 1
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 2
      }
    ],
    "intents": [
      {
        "epoch": 2,
        "intent": {
          "kind": "keep"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": 1
      }
    ],
    "quorums": [
      {
        "epoch": 1
      }
    ],
    "duplicities": [
      {
        "epoch": 1,
        "sn": 1
      }
    ]
  }
}

Caller obtains:

{
  "status": "refused",
  "refusals": [
    "checkpoint-state-mismatch"
  ]
}

Convict

As a caller, I want to prove duplicity and settle the held value.

Operation: checkpoint.convict. The corpus contains 32 observations.

Named refusals:

  • checkpoint-state-mismatch: Action has no constructor for the supplied State.
  • duplicity-evidence-invalid: duplicityAt at the recorded epoch and sequence returns false.

Accepted example

Caller supplies this model fixture:

{
  "params": {
    "B": 5,
    "D": 1000,
    "P": 2,
    "W": 10
  },
  "now": 20,
  "state": {
    "state": "parked",
    "epoch": 1,
    "sn": 1
  },
  "action": {
    "action": "convict",
    "payee": 3
  },
  "oracle": {
    "rotations": [
      {
        "epoch": 1,
        "from": 1,
        "to": 0
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 1
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 2
      }
    ],
    "intents": [
      {
        "epoch": 2,
        "intent": {
          "kind": "keep"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": 1
      }
    ],
    "quorums": [
      {
        "epoch": 1
      }
    ],
    "duplicities": [
      {
        "epoch": 1,
        "sn": 1
      }
    ]
  }
}

Caller obtains:

{
  "status": "accepted",
  "flow": {
    "bIn": 0,
    "convictor": null,
    "dregIn": 0,
    "hunter": null,
    "poolIn": 0,
    "refund": null
  },
  "state": {
    "state": "terminationPending",
    "epoch": 1,
    "sn": 1
  }
}

Refused example

Caller supplies this model fixture:

{
  "params": {
    "B": 5,
    "D": 1000,
    "P": 2,
    "W": 10
  },
  "now": 20,
  "state": {
    "state": "absent"
  },
  "action": {
    "action": "convict",
    "payee": 3
  },
  "oracle": {
    "rotations": [
      {
        "epoch": 1,
        "from": 1,
        "to": 0
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 1
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 2
      }
    ],
    "intents": [
      {
        "epoch": 2,
        "intent": {
          "kind": "keep"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": 1
      }
    ],
    "quorums": [
      {
        "epoch": 1
      }
    ],
    "duplicities": [
      {
        "epoch": 1,
        "sn": 1
      }
    ]
  }
}

Caller obtains:

{
  "status": "refused",
  "refusals": [
    "checkpoint-state-mismatch"
  ]
}

Freeze

As a caller, I want to report stale keys and claim the held freeze bond.

Operation: checkpoint.freeze. The corpus contains 96 observations.

Named refusals:

  • already-frozen: freeze requires a clear freeze flag.
  • checkpoint-state-mismatch: Action has no constructor for the supplied State.
  • freeze-poisoned: freeze requires a clear poison flag.
  • freeze-pool-covers-premium: freeze pool is greater than or equal to P.
  • rotation-evidence-invalid: rotationTo at the recorded epoch and sequence returns false.
  • sequence-not-later: Requested sequence is less than or equal to the recorded sequence.

Accepted example

Caller supplies this model fixture:

{
  "params": {
    "B": 5,
    "D": 1000,
    "P": 2,
    "W": 10
  },
  "now": 20,
  "state": {
    "state": "present",
    "bornAt": 10,
    "epoch": 1,
    "frozen": false,
    "poisoned": false,
    "pool": 1,
    "refundTo": 1,
    "sn": 1
  },
  "action": {
    "action": "freeze",
    "sn": 2,
    "payee": 2
  },
  "oracle": {
    "rotations": [
      {
        "epoch": 1,
        "from": 1,
        "to": 0
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 1
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 2
      }
    ],
    "intents": [
      {
        "epoch": 2,
        "intent": {
          "kind": "keep"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": 1
      }
    ],
    "quorums": [
      {
        "epoch": 1
      }
    ],
    "duplicities": [
      {
        "epoch": 1,
        "sn": 1
      }
    ]
  }
}

Caller obtains:

{
  "status": "accepted",
  "flow": {
    "bIn": 0,
    "convictor": null,
    "dregIn": 0,
    "hunter": {
      "addr": 2,
      "b": 5,
      "dreg": 0,
      "pool": 0
    },
    "poolIn": 0,
    "refund": null
  },
  "state": {
    "state": "present",
    "bornAt": 10,
    "epoch": 1,
    "frozen": true,
    "poisoned": false,
    "pool": 1,
    "refundTo": 1,
    "sn": 1
  }
}

Refused example

Caller supplies this model fixture:

{
  "params": {
    "B": 5,
    "D": 1000,
    "P": 2,
    "W": 10
  },
  "now": 20,
  "state": {
    "state": "absent"
  },
  "action": {
    "action": "freeze",
    "sn": 0,
    "payee": 2
  },
  "oracle": {
    "rotations": [
      {
        "epoch": 1,
        "from": 1,
        "to": 0
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 1
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 2
      }
    ],
    "intents": [
      {
        "epoch": 2,
        "intent": {
          "kind": "keep"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": 1
      }
    ],
    "quorums": [
      {
        "epoch": 1
      }
    ],
    "duplicities": [
      {
        "epoch": 1,
        "sn": 1
      }
    ]
  }
}

Caller obtains:

{
  "status": "refused",
  "refusals": [
    "checkpoint-state-mismatch"
  ]
}

Poison

As a caller, I want to declare the current keys unsafe.

Operation: checkpoint.poison. The corpus contains 32 observations.

Named refusals:

  • already-poisoned: poison requires a clear poison flag.
  • checkpoint-state-mismatch: Action has no constructor for the supplied State.
  • quorum-missing: poison quorum at the current epoch returns false.

Accepted example

Caller supplies this model fixture:

{
  "params": {
    "B": 5,
    "D": 1000,
    "P": 2,
    "W": 10
  },
  "now": 20,
  "state": {
    "state": "present",
    "bornAt": 10,
    "epoch": 1,
    "frozen": false,
    "poisoned": false,
    "pool": 1,
    "refundTo": 1,
    "sn": 1
  },
  "action": {
    "action": "poison"
  },
  "oracle": {
    "rotations": [
      {
        "epoch": 1,
        "from": 1,
        "to": 0
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 1
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 2
      }
    ],
    "intents": [
      {
        "epoch": 2,
        "intent": {
          "kind": "keep"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": 1
      }
    ],
    "quorums": [
      {
        "epoch": 1
      }
    ],
    "duplicities": [
      {
        "epoch": 1,
        "sn": 1
      }
    ]
  }
}

Caller obtains:

{
  "status": "accepted",
  "flow": {
    "bIn": 0,
    "convictor": null,
    "dregIn": 0,
    "hunter": null,
    "poolIn": 0,
    "refund": null
  },
  "state": {
    "state": "present",
    "bornAt": 10,
    "epoch": 1,
    "frozen": false,
    "poisoned": true,
    "pool": 1,
    "refundTo": 1,
    "sn": 1
  }
}

Refused example

Caller supplies this model fixture:

{
  "params": {
    "B": 5,
    "D": 1000,
    "P": 2,
    "W": 10
  },
  "now": 20,
  "state": {
    "state": "absent"
  },
  "action": {
    "action": "poison"
  },
  "oracle": {
    "rotations": [
      {
        "epoch": 1,
        "from": 1,
        "to": 0
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 1
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 2
      }
    ],
    "intents": [
      {
        "epoch": 2,
        "intent": {
          "kind": "keep"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": 1
      }
    ],
    "quorums": [
      {
        "epoch": 1
      }
    ],
    "duplicities": [
      {
        "epoch": 1,
        "sn": 1
      }
    ]
  }
}

Caller obtains:

{
  "status": "refused",
  "refusals": [
    "checkpoint-state-mismatch"
  ]
}

Register

As a caller, I want to sponsor a new identity checkpoint.

Operation: checkpoint.register. The corpus contains 32 observations.

Named refusals:

  • checkpoint-state-mismatch: Action has no constructor for the supplied State.

Accepted example

Caller supplies this model fixture:

{
  "params": {
    "B": 5,
    "D": 1000,
    "P": 2,
    "W": 10
  },
  "now": 20,
  "state": {
    "state": "absent"
  },
  "action": {
    "action": "register",
    "pool0": 7,
    "refund": 6
  },
  "oracle": {
    "rotations": [
      {
        "epoch": 1,
        "from": 1,
        "to": 0
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 1
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 2
      }
    ],
    "intents": [
      {
        "epoch": 2,
        "intent": {
          "kind": "keep"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": 1
      }
    ],
    "quorums": [
      {
        "epoch": 1
      }
    ],
    "duplicities": [
      {
        "epoch": 1,
        "sn": 1
      }
    ]
  }
}

Caller obtains:

{
  "status": "accepted",
  "flow": {
    "bIn": 5,
    "convictor": null,
    "dregIn": 1000,
    "hunter": null,
    "poolIn": 7,
    "refund": null
  },
  "state": {
    "state": "present",
    "bornAt": 20,
    "epoch": 0,
    "frozen": false,
    "poisoned": false,
    "pool": 7,
    "refundTo": 6,
    "sn": 0
  }
}

Refused example

Caller supplies this model fixture:

{
  "params": {
    "B": 5,
    "D": 1000,
    "P": 2,
    "W": 10
  },
  "now": 20,
  "state": {
    "state": "parked",
    "epoch": 1,
    "sn": 1
  },
  "action": {
    "action": "register",
    "pool0": 7,
    "refund": 6
  },
  "oracle": {
    "rotations": [
      {
        "epoch": 1,
        "from": 1,
        "to": 0
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 1
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 2
      }
    ],
    "intents": [
      {
        "epoch": 2,
        "intent": {
          "kind": "keep"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": 1
      }
    ],
    "quorums": [
      {
        "epoch": 1
      }
    ],
    "duplicities": [
      {
        "epoch": 1,
        "sn": 1
      }
    ]
  }
}

Caller obtains:

{
  "status": "refused",
  "refusals": [
    "checkpoint-state-mismatch"
  ]
}

Reopen

As a caller, I want to return from the parked key state with fresh funding.

Operation: checkpoint.reopen. The corpus contains 96 observations.

Named refusals:

  • checkpoint-state-mismatch: Action has no constructor for the supplied State.
  • rotation-evidence-invalid: rotationTo at the recorded epoch and sequence returns false.
  • sequence-not-later: Requested sequence is less than or equal to the recorded sequence.

Accepted example

Caller supplies this model fixture:

{
  "params": {
    "B": 5,
    "D": 1000,
    "P": 2,
    "W": 10
  },
  "now": 20,
  "state": {
    "state": "parked",
    "epoch": 1,
    "sn": 1
  },
  "action": {
    "action": "reopen",
    "sn": 2,
    "refund": 1,
    "pool0": 7
  },
  "oracle": {
    "rotations": [
      {
        "epoch": 1,
        "from": 1,
        "to": 0
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 1
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 2
      }
    ],
    "intents": [
      {
        "epoch": 2,
        "intent": {
          "kind": "keep"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": 1
      }
    ],
    "quorums": [
      {
        "epoch": 1
      }
    ],
    "duplicities": [
      {
        "epoch": 1,
        "sn": 1
      }
    ]
  }
}

Caller obtains:

{
  "status": "accepted",
  "flow": {
    "bIn": 5,
    "convictor": null,
    "dregIn": 1000,
    "hunter": null,
    "poolIn": 7,
    "refund": null
  },
  "state": {
    "state": "present",
    "bornAt": 20,
    "epoch": 2,
    "frozen": false,
    "poisoned": false,
    "pool": 7,
    "refundTo": 1,
    "sn": 2
  }
}

Refused example

Caller supplies this model fixture:

{
  "params": {
    "B": 5,
    "D": 1000,
    "P": 2,
    "W": 10
  },
  "now": 20,
  "state": {
    "state": "absent"
  },
  "action": {
    "action": "reopen",
    "sn": 0,
    "refund": 1,
    "pool0": 7
  },
  "oracle": {
    "rotations": [
      {
        "epoch": 1,
        "from": 1,
        "to": 0
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 1
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 2
      }
    ],
    "intents": [
      {
        "epoch": 2,
        "intent": {
          "kind": "keep"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": 1
      }
    ],
    "quorums": [
      {
        "epoch": 1
      }
    ],
    "duplicities": [
      {
        "epoch": 1,
        "sn": 1
      }
    ]
  }
}

Caller obtains:

{
  "status": "refused",
  "refusals": [
    "checkpoint-state-mismatch"
  ]
}

Rotate

As a caller, I want to land a later witnessed rotation and obtain its value flow.

Operation: checkpoint.rotate. The corpus contains 576 observations.

Named refusals:

  • checkpoint-state-mismatch: Action has no constructor for the supplied State.
  • intent-unauthorized: intentOk returns false for the next epoch, action intent and refund option.
  • rotation-evidence-invalid: rotationTo at the recorded epoch and sequence returns false.
  • sequence-not-later: Requested sequence is less than or equal to the recorded sequence.

Accepted example

Caller supplies this model fixture:

{
  "params": {
    "B": 5,
    "D": 1000,
    "P": 2,
    "W": 10
  },
  "now": 20,
  "state": {
    "state": "present",
    "bornAt": 10,
    "epoch": 1,
    "frozen": false,
    "poisoned": false,
    "pool": 1,
    "refundTo": 1,
    "sn": 1
  },
  "action": {
    "action": "rotate",
    "sn": 2,
    "bond": "keep",
    "payee": 2,
    "refund": null
  },
  "oracle": {
    "rotations": [
      {
        "epoch": 1,
        "from": 1,
        "to": 0
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 1
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 2
      }
    ],
    "intents": [
      {
        "epoch": 2,
        "intent": {
          "kind": "keep"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": 1
      }
    ],
    "quorums": [
      {
        "epoch": 1
      }
    ],
    "duplicities": [
      {
        "epoch": 1,
        "sn": 1
      }
    ]
  }
}

Caller obtains:

{
  "status": "accepted",
  "flow": {
    "bIn": 0,
    "convictor": null,
    "dregIn": 0,
    "hunter": null,
    "poolIn": 0,
    "refund": null
  },
  "state": {
    "state": "present",
    "bornAt": 10,
    "epoch": 2,
    "frozen": false,
    "poisoned": false,
    "pool": 1,
    "refundTo": 1,
    "sn": 2
  }
}

Refused example

Caller supplies this model fixture:

{
  "params": {
    "B": 5,
    "D": 1000,
    "P": 2,
    "W": 10
  },
  "now": 20,
  "state": {
    "state": "absent"
  },
  "action": {
    "action": "rotate",
    "sn": 0,
    "bond": "keep",
    "payee": 2,
    "refund": null
  },
  "oracle": {
    "rotations": [
      {
        "epoch": 1,
        "from": 1,
        "to": 0
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 1
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 2
      }
    ],
    "intents": [
      {
        "epoch": 2,
        "intent": {
          "kind": "keep"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": 1
      }
    ],
    "quorums": [
      {
        "epoch": 1
      }
    ],
    "duplicities": [
      {
        "epoch": 1,
        "sn": 1
      }
    ]
  }
}

Caller obtains:

{
  "status": "refused",
  "refusals": [
    "checkpoint-state-mismatch"
  ]
}

Top Up

As a caller, I want to fund future advances.

Operation: checkpoint.topUp. The corpus contains 32 observations.

Named refusals:

  • checkpoint-state-mismatch: Action has no constructor for the supplied State.

Accepted example

Caller supplies this model fixture:

{
  "params": {
    "B": 5,
    "D": 1000,
    "P": 2,
    "W": 10
  },
  "now": 20,
  "state": {
    "state": "present",
    "bornAt": 10,
    "epoch": 1,
    "frozen": false,
    "poisoned": false,
    "pool": 1,
    "refundTo": 1,
    "sn": 1
  },
  "action": {
    "action": "topUp",
    "amount": 5
  },
  "oracle": {
    "rotations": [
      {
        "epoch": 1,
        "from": 1,
        "to": 0
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 1
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 2
      }
    ],
    "intents": [
      {
        "epoch": 2,
        "intent": {
          "kind": "keep"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": 1
      }
    ],
    "quorums": [
      {
        "epoch": 1
      }
    ],
    "duplicities": [
      {
        "epoch": 1,
        "sn": 1
      }
    ]
  }
}

Caller obtains:

{
  "status": "accepted",
  "flow": {
    "bIn": 0,
    "convictor": null,
    "dregIn": 0,
    "hunter": null,
    "poolIn": 5,
    "refund": null
  },
  "state": {
    "state": "present",
    "bornAt": 10,
    "epoch": 1,
    "frozen": false,
    "poisoned": false,
    "pool": 6,
    "refundTo": 1,
    "sn": 1
  }
}

Refused example

Caller supplies this model fixture:

{
  "params": {
    "B": 5,
    "D": 1000,
    "P": 2,
    "W": 10
  },
  "now": 20,
  "state": {
    "state": "absent"
  },
  "action": {
    "action": "topUp",
    "amount": 5
  },
  "oracle": {
    "rotations": [
      {
        "epoch": 1,
        "from": 1,
        "to": 0
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 1
      },
      {
        "epoch": 1,
        "from": 1,
        "to": 2
      }
    ],
    "intents": [
      {
        "epoch": 2,
        "intent": {
          "kind": "keep"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "deposit"
        },
        "refund": 1
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": null
      },
      {
        "epoch": 2,
        "intent": {
          "kind": "close",
          "payee": 2
        },
        "refund": 1
      }
    ],
    "quorums": [
      {
        "epoch": 1
      }
    ],
    "duplicities": [
      {
        "epoch": 1,
        "sn": 1
      }
    ]
  }
}

Caller obtains:

{
  "status": "refused",
  "refusals": [
    "checkpoint-state-mismatch"
  ]
}

Download every example · Read the complete shape · Read semantics and limits