~/bend-docscommunity

src/Certificate.bend fails

raw source on the hub · import ber-core-store@0.1.2.0/src/Certificate.bend as Certificate

6 imports
import Base
import ./Reading.bend as Reading
import ./StateTree.bend as StateTree
import ./History.bend as History
import ./Merging.bend as Merging
import ./Store.bend as Store

Definitions

def decide_entry_present source · line 16 · raw

@key_matches:Bool -> @+head_value:String -> @+target_value:String -> @tail_result:Bool -> Bool

A key/value pair counts as present only when both match.

def entry_present_in source · line 24 · raw

@+target_key:String -> @+target_value:String -> @entries:List<&2, 0x785d1b078f7f99a4ee2b9c7798398bc9/src/Reading.ChainEntry> -> Bool

Scans entries for an exact key/value pair.

def decide_all_present source · line 32 · raw

@head_present:Bool -> @tail_result:Bool -> Bool

Conjunction step: a missing head fails the whole check.

def all_present_in source · line 40 · raw

@source_entries:List<&2, 0x785d1b078f7f99a4ee2b9c7798398bc9/src/Reading.ChainEntry> -> @+target_entries:List<&2, 0x785d1b078f7f99a4ee2b9c7798398bc9/src/Reading.ChainEntry> -> Bool

Every source entry must occur in the target list.

def entries_equal source · line 48 · raw

@+first_entries:List<&2, 0x785d1b078f7f99a4ee2b9c7798398bc9/src/Reading.ChainEntry> -> @+second_entries:List<&2, 0x785d1b078f7f99a4ee2b9c7798398bc9/src/Reading.ChainEntry> -> Bool

Set equality both directions; exact because lists are unique-keyed.

def decide_law_step source · line 52 · raw

@head_passed:Bool -> @tail_result:Bool -> Bool

Conjunction step over law evidence.

def all_remaining_pass source · line 60 · raw

@remaining_checks:List<&2, 0x785d1b078f7f99a4ee2b9c7798398bc9/src/Merging.LawCheck> -> Bool

Every remaining check must have passed.

def verify_laws_step source · line 68 · raw

@checked_laws:List<&2, 0x785d1b078f7f99a4ee2b9c7798398bc9/src/Merging.LawCheck> -> Bool

Non-empty evidence with every check passed; empty evidence rejects.

def verify_entries_step source · line 76 · raw

@entries_match:Bool -> @+certificate:0x785d1b078f7f99a4ee2b9c7798398bc9/src/Merging.MergeCertificate -> Bool

Matching entries unlock the law-evidence check.

def verify_recompute_step source · line 84 · raw

@recomputed_outcome:0x785d1b078f7f99a4ee2b9c7798398bc9/src/Merging.MergeOutcome -> @+merged_entries:List<&2, 0x785d1b078f7f99a4ee2b9c7798398bc9/src/Reading.ChainEntry> -> @+certificate:0x785d1b078f7f99a4ee2b9c7798398bc9/src/Merging.MergeCertificate -> Bool

A clean recomputation unlocks the entry-set check; conflicts reject.

def verify_hash_step source · line 92 · raw

@hash_matches:Bool -> @+base_entries:List<&2, 0x785d1b078f7f99a4ee2b9c7798398bc9/src/Reading.ChainEntry> -> @+first_entries:List<&2, 0x785d1b078f7f99a4ee2b9c7798398bc9/src/Reading.ChainEntry> -> @+second_entries:List<&2, 0x785d1b078f7f99a4ee2b9c7798398bc9/src/Reading.ChainEntry> -> @+merged_entries:List<&2, 0x785d1b078f7f99a4ee2b9c7798398bc9/src/Reading.ChainEntry> -> @+certificate:0x785d1b078f7f99a4ee2b9c7798398bc9/src/Merging.MergeCertificate -> Bool

A matching result hash unlocks the merge recomputation; mismatch rejects.

def decide_strategy_known source · line 100 · raw

@strategy_known:Bool -> @+base_entries:List<&2, 0x785d1b078f7f99a4ee2b9c7798398bc9/src/Reading.ChainEntry> -> @+first_entries:List<&2, 0x785d1b078f7f99a4ee2b9c7798398bc9/src/Reading.ChainEntry> -> @+second_entries:List<&2, 0x785d1b078f7f99a4ee2b9c7798398bc9/src/Reading.ChainEntry> -> @+merged_entries:List<&2, 0x785d1b078f7f99a4ee2b9c7798398bc9/src/Reading.ChainEntry> -> @+certificate:0x785d1b078f7f99a4ee2b9c7798398bc9/src/Merging.MergeCertificate -> Bool

Only the union-disjoint strategy verifies; anything else rejects.

def verify_merge_certificate_pure source · line 108 · raw

@+base_entries:List<&2, 0x785d1b078f7f99a4ee2b9c7798398bc9/src/Reading.ChainEntry> -> @+first_entries:List<&2, 0x785d1b078f7f99a4ee2b9c7798398bc9/src/Reading.ChainEntry> -> @+second_entries:List<&2, 0x785d1b078f7f99a4ee2b9c7798398bc9/src/Reading.ChainEntry> -> @+merged_entries:List<&2, 0x785d1b078f7f99a4ee2b9c7798398bc9/src/Reading.ChainEntry> -> @+certificate:0x785d1b078f7f99a4ee2b9c7798398bc9/src/Merging.MergeCertificate -> Bool

Pure verification core: re-derives strategy, hash, merge and law evidence.

def decide_verify_result source · line 112 · raw

@+certificate:0x785d1b078f7f99a4ee2b9c7798398bc9/src/Merging.MergeCertificate -> @base_tree:0x785d1b078f7f99a4ee2b9c7798398bc9/src/StateTree.StateTreeNode -> @first_tree:0x785d1b078f7f99a4ee2b9c7798398bc9/src/StateTree.StateTreeNode -> @second_tree:0x785d1b078f7f99a4ee2b9c7798398bc9/src/StateTree.StateTreeNode -> @result_maybe:Maybe<&2, 0x785d1b078f7f99a4ee2b9c7798398bc9/src/StateTree.StateTreeNode> -> Bool

A present result tree unlocks the pure core; a missing one rejects.

def decide_verify_second source · line 120 · raw

@+certificate:0x785d1b078f7f99a4ee2b9c7798398bc9/src/Merging.MergeCertificate -> @base_tree:0x785d1b078f7f99a4ee2b9c7798398bc9/src/StateTree.StateTreeNode -> @first_tree:0x785d1b078f7f99a4ee2b9c7798398bc9/src/StateTree.StateTreeNode -> @second_maybe:Maybe<&2, 0x785d1b078f7f99a4ee2b9c7798398bc9/src/StateTree.StateTreeNode> -> @result_maybe:Maybe<&2, 0x785d1b078f7f99a4ee2b9c7798398bc9/src/StateTree.StateTreeNode> -> Bool

Unpacks the second tree or rejects when missing.

def decide_verify_first source · line 128 · raw

@+certificate:0x785d1b078f7f99a4ee2b9c7798398bc9/src/Merging.MergeCertificate -> @base_tree:0x785d1b078f7f99a4ee2b9c7798398bc9/src/StateTree.StateTreeNode -> @first_maybe:Maybe<&2, 0x785d1b078f7f99a4ee2b9c7798398bc9/src/StateTree.StateTreeNode> -> @second_maybe:Maybe<&2, 0x785d1b078f7f99a4ee2b9c7798398bc9/src/StateTree.StateTreeNode> -> @result_maybe:Maybe<&2, 0x785d1b078f7f99a4ee2b9c7798398bc9/src/StateTree.StateTreeNode> -> Bool

Unpacks the first tree or rejects when missing.

def decide_verify_trees source · line 136 · raw

@+certificate:0x785d1b078f7f99a4ee2b9c7798398bc9/src/Merging.MergeCertificate -> @base_maybe:Maybe<&2, 0x785d1b078f7f99a4ee2b9c7798398bc9/src/StateTree.StateTreeNode> -> @first_maybe:Maybe<&2, 0x785d1b078f7f99a4ee2b9c7798398bc9/src/StateTree.StateTreeNode> -> @second_maybe:Maybe<&2, 0x785d1b078f7f99a4ee2b9c7798398bc9/src/StateTree.StateTreeNode> -> @result_maybe:Maybe<&2, 0x785d1b078f7f99a4ee2b9c7798398bc9/src/StateTree.StateTreeNode> -> Bool

Unpacks the base tree or rejects when missing.

def verify_certificate source · line 144 · raw

@+certificate:0x785d1b078f7f99a4ee2b9c7798398bc9/src/Merging.MergeCertificate -> 0x785d1b078f7f99a4ee2b9c7798398bc9/src/Store.Op<&2, Bool>

Shell: loads the four trees named by the certificate and runs the core.