[{"data":1,"prerenderedAt":4380},["ShallowReactive",2],{"docs-search-sections":3,"docs-last-updated":1015,"\u002Fblog\u002Fproofs":1020,"blog-surround-\u002Fblog\u002Fproofs":4377},[4,11,17,22,27,32,37,42,47,53,58,63,68,73,78,83,88,93,98,103,108,112,117,122,127,132,137,142,147,152,157,162,167,172,177,182,187,191,196,201,206,210,215,220,225,229,234,238,243,248,253,258,263,268,273,279,284,289,293,298,303,308,312,317,321,326,330,335,340,345,350,355,360,365,370,374,378,382,385,390,395,399,403,407,410,415,420,424,428,433,438,443,447,452,457,462,466,471,476,481,486,491,496,501,506,511,516,521,526,531,536,540,545,550,555,560,565,570,575,580,584,589,593,598,603,607,612,617,622,627,632,637,641,646,651,656,661,665,670,674,679,684,689,694,699,703,708,713,717,721,726,731,735,740,745,750,754,759,763,768,772,777,781,785,790,794,799,803,808,812,817,821,826,830,835,840,845,849,854,859,865,870,875,880,885,890,895,900,905,910,915,920,925,930,935,940,945,950,955,959,963,967,971,976,981,986,991,995,1000,1005,1010],{"id":5,"title":6,"titles":7,"content":8,"level":9,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Faudits-and-penalties","Validator Audits & Penalties",[],"Auditing as an obligated validator duty — random audit sampling, deterministic fraud proofs, and fact-layer penalties that feed back into diffusion policy. Optimistic diffusion claims shift heavy computation to provers, but the protocol still needs reliable verification at high volume. In mature markets, relying on a voluntary challenger ecosystem can suffer from free-riding (the “verifier’s dilemma”). Local Protocol addresses this by making auditing an obligated validator duty, enforced by standard consensus incentives (rewards + slashing). The chain checks: a protocol-chosen random subset of claims is mandatorily audited by assigned validators. The verifier’s dilemma is discussed in the Arbitrum paper (Kalodner et al., 2018). Slashing-backed enforcement is common in PoS finality designs (e.g., Casper FFG).",1,"Docs",{"id":12,"title":13,"titles":14,"content":15,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Faudits-and-penalties#audit-sampling-unpredictable-canonical","Audit sampling (unpredictable, canonical)",[6],"At epoch boundary , the protocol derives an audit set using future randomness: : all diffusion claims included during epoch : audit budget (a fixed count or fraction per epoch) Using  ensures provers cannot predict which claims will be audited when committing transcripts.",2,{"id":18,"title":19,"titles":20,"content":21,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Faudits-and-penalties#audit-assignment-obligations-not-volunteers","Audit assignment (obligations, not volunteers)",[6],"Each audited claim  is assigned to one or more validators deterministically: Assigned auditors must publish an AuditAttestation by a strict deadline, or be slashable.",{"id":23,"title":24,"titles":25,"content":26,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Faudits-and-penalties#what-auditors-verify-bounded-work","What auditors verify (bounded work)",[6],"Claims are market-relative: each claim is verified in a market context marketId = m, using the market’s committed teleport distribution  (opened via ) and market-scoped edge sampling commitments for that market. Auditors verify a bounded subset of transcript walks\u002Fsteps derived canonically, and check the opened transitions against the committed snapshot roots. The transcript format and commitment rules live in the claim protocol: Optimistic Diffusion ClaimsGraph Commitments & Epoch Snapshots Audits require authenticated snapshot data (NodeRecords, EdgeRecords, alias tables). Availability and retrieval live in the storage model. See: Performance & Storage",{"id":28,"title":29,"titles":30,"content":31,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Faudits-and-penalties#audit-outcomes-and-accountability","Audit outcomes and accountability",[6],"Auditors publish one of: VALID: with transcript fragments sufficient for anyone to reproduce the checksINVALID: a concrete fraud proof (openings + proofs showing a violation)",{"id":33,"title":34,"titles":35,"content":36,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Faudits-and-penalties#fraud-proofs-are-deterministic","Fraud proofs are deterministic",[6],"A fraud proof is valid iff any full node can deterministically replay the sampled checks and obtain a mismatch. Concretely, a fraud proof includes: claimId, txid, epoch: t, , and the claim parameter commitment (e.g., ParamsHash)the sampled walk indices (or enough data to recompute them from )the opened transcript fragments (Merkle openings from TranscriptRoot)the Merkle\u002Falias openings required to verify market-scoped transitions against  and teleport sampling against the market seed root  (opened via ) This is the standard optimistic “fraud proof” pattern (e.g., Truebit, Arbitrum), specialized to sampled Monte Carlo transcripts rather than full VM traces.",{"id":38,"title":39,"titles":40,"content":41,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Faudits-and-penalties#audit-deadline-and-claim-finality-fail-closed-for-audited-claims","Audit deadline and claim finality (fail-closed for audited claims)",[6],"Audited claims finalize under a fail-closed rule: rewards are escrowed at submission timeif a claim is in , it cannot finalize as VALID by timeout alonethe claim becomes:\nINVALID immediately upon inclusion of a valid fraud proofVALID once at least one assigned auditor posts a VALID attestation and the deadline passes without any valid fraud proofPENDING (locked) if the deadline passes with no VALID attestation (and no-show auditors are slashable) To prevent rubber-stamping: No-show: assigned auditor misses deadline → slashableFalse attestation: auditor attests VALID but a fraud proof is later posted → slashable",{"id":43,"title":44,"titles":45,"content":46,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Faudits-and-penalties#penalties-fact-layer-and-how-they-affect-future-trust","Penalties (fact-layer) and how they affect future trust",[6],"When an audited claim fails, the protocol applies objective penalties and then feeds them back into diffusion policy.",{"id":48,"title":49,"titles":50,"content":51,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Faudits-and-penalties#_1-edge-slashing","1) Edge slashing",[6,44],"For a failed edge :",3,{"id":54,"title":55,"titles":56,"content":57,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Faudits-and-penalties#_2-bond-slashing","2) Bond slashing",[6,44],"The claim bond  is slashed (policy-defined split between burn\u002Fsecurity pool\u002Fauditor rewards).",{"id":59,"title":60,"titles":61,"content":62,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Faudits-and-penalties#_3-penalty-vector-ledger-fact","3) Penalty vector  (ledger fact)",[6,44],"Maintain a per-node penalty score , updated only by finalized audits: Penalty injection is a distrust \u002F negative-evidence propagation pattern in link analysis and trust systems. A representative example is distrust propagation in PageRank-style rankings (e.g., Wu et al., 2006). See also distrust demotion variants like Anti-TrustRank and early trust\u002Fdistrust graph models such as Guha et al., 2004. Optional bounded neighbor spillover:",{"id":64,"title":65,"titles":66,"content":67,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Faudits-and-penalties#_4-how-penalties-modify-policy-inputs","4) How penalties modify policy inputs",[6,44],"Penalty-adjusted seed weights (before normalization): Risk-based claim constraints (examples):",{"id":69,"title":70,"titles":71,"content":72,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Faudits-and-penalties#related","Related",[6],"Optimistic Diffusion ClaimsConsensusSampling & Slashing mjx-container[jax=\"SVG\"] {\n  direction: ltr;\n}\n\nmjx-container[jax=\"SVG\"] > svg {\n  overflow: visible;\n  min-height: 1px;\n  min-width: 1px;\n}\n\nmjx-container[jax=\"SVG\"] > svg a {\n  fill: blue;\n  stroke: blue;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"] {\n  display: block;\n  text-align: center;\n  margin: 1em 0;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"][width=\"full\"] {\n  display: flex;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"left\"] {\n  text-align: left;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"right\"] {\n  text-align: right;\n}\n\ng[data-mml-node=\"merror\"] > g {\n  fill: red;\n  stroke: red;\n}\n\ng[data-mml-node=\"merror\"] > rect[data-background] {\n  fill: yellow;\n  stroke: none;\n}\n\ng[data-mml-node=\"mtable\"] > line[data-line], svg[data-table] > g > line[data-line] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > rect[data-frame], svg[data-table] > g > rect[data-frame] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dashed, svg[data-table] > g > .mjx-dashed {\n  stroke-dasharray: 140;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dotted, svg[data-table] > g > .mjx-dotted {\n  stroke-linecap: round;\n  stroke-dasharray: 0,140;\n}\n\ng[data-mml-node=\"mtable\"] > g > svg {\n  overflow: visible;\n}\n\n[jax=\"SVG\"] mjx-tool {\n  display: inline-block;\n  position: relative;\n  width: 0;\n  height: 0;\n}\n\n[jax=\"SVG\"] mjx-tool > mjx-tip {\n  position: absolute;\n  top: 0;\n  left: 0;\n}\n\nmjx-tool > mjx-tip {\n  display: inline-block;\n  padding: .2em;\n  border: 1px solid #888;\n  font-size: 70%;\n  background-color: #F8F8F8;\n  color: black;\n  box-shadow: 2px 2px 5px #AAAAAA;\n}\n\ng[data-mml-node=\"maction\"][data-toggle] {\n  cursor: pointer;\n}\n\nmjx-status {\n  display: block;\n  position: fixed;\n  left: 1em;\n  bottom: 1em;\n  min-width: 25%;\n  padding: .2em .4em;\n  border: 1px solid #888;\n  font-size: 90%;\n  background-color: #F8F8F8;\n  color: black;\n}\n\nforeignObject[data-mjx-xml] {\n  font-family: initial;\n  line-height: normal;\n  overflow: visible;\n}\n\nmjx-container[jax=\"SVG\"] path[data-c], mjx-container[jax=\"SVG\"] use[data-c] {\n  stroke-width: 3;\n}",{"id":74,"title":75,"titles":76,"content":77,"level":9,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fdiffusion","Snapshot-Relative Diffusion (PageRank \u002F PPR)",[],"Influence defined as a PageRank\u002FPPR fixed point evaluated relative to a committed epoch snapshot, with protocol-defined market-relative teleport. Local Protocol defines influence using a diffusion score that is a fixed point over a committed epoch snapshot. Practically, this is PageRank \u002F Personalized PageRank (PPR) semantics, evaluated relative to the snapshot, not continuously recomputed as a global “ledger fact”.",{"id":79,"title":80,"titles":81,"content":82,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fdiffusion#_1-transition-operator","1) Transition operator",[75],"Let the global transaction graph at epoch  be a weighted, directed graph: Define a row-stochastic transition matrix  derived from outgoing weights: For dangling nodes (no outgoing edges), the protocol redirects mass according to the teleport distribution (standard PageRank handling). You can read  as a “next hop” rule: if you are at , then  is the chance you move to  next. Rows sum to 1 because this is a Markov chain. Markov chains and stationary distributions are the standard lens for PageRank-style scores; see e.g. Levin–Peres–Wilmer.",{"id":84,"title":85,"titles":86,"content":87,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fdiffusion#_2-teleport-distribution-protocol-defined","2) Teleport distribution (protocol-defined)",[75],"Local Protocol uses Personalized PageRank (PPR) to anchor diffusion to a protocol-defined set of trusted starting points (users do not get to choose personalization; that would be instantly gameable).",{"id":89,"title":90,"titles":91,"content":92,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fdiffusion#why-market-relative-teleport","Why market-relative teleport?",[75,85],"In real marketplaces, trust is often local to a market context (a naturally fragmented city \u002F vertical can be real yet weakly connected to global anchors). A single global seed set can accidentally treat a legitimate, fragmented market as “low influence” simply because diffusion cannot reach it. Market-relative teleport addresses this: diffusion (and claims derived from it) are evaluated in a market context marketId = m. Formally: teleport distribution per market: market-relative diffusion score: The protocol commits to  each epoch (users do not choose it). Teleport is the protocol’s “source of ground truth”: where trust starts. Market-relative teleport keeps that rule intact while preventing “fragmented-but-real” markets from being unfairly treated as low influence. Personalization vectors in Personalized PageRank, topic\u002Fcontext-sensitive ranking variants, and seed-set anchoring like TrustRank.",{"id":94,"title":95,"titles":96,"content":97,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fdiffusion#_3-fixed-point-definition","3) Fixed point definition",[75],"For a given market context , the protocol defines a market-scoped transition operator  (outgoing edges filtered to marketId = m, plus any explicitly-global edges the protocol defines), and a market-relative teleport distribution . Claims are verified against market-scoped walks: the walk uses the market-scoped operator  and teleports according to the market’s committed seed table . This prevents reinterpreting the same transcript under a different market context. marketId is derived from execution: it must match the registered MarketContext that emitted the interaction record, and the market must be ACTIVE. See: Market Registry. The market-relative diffusion score  is defined as: Where  is the restart probability (teleport rate). This fixed point exists and is unique for .",{"id":99,"title":100,"titles":101,"content":102,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fdiffusion#_4-random-walk-interpretation","4) Random-walk interpretation",[75],"Sample a random walk: start from a teleport sample at each step: with probability  restart from , otherwise follow a market-scoped outgoing edge proportional to weights Then  is the stationary probability of being at node  (in market context ).",{"id":104,"title":105,"titles":106,"content":107,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fdiffusion#_5-why-snapshot-relative","5) Why snapshot-relative?",[75],"Diffusion is defined relative to a committed snapshot: the ledger commits to  via claims derived from diffusion must specify which snapshot they referenceeconomic outputs are computed with respect to that snapshot Diffusion is a global fixed point and is not composable by one-way merging of independently computed partition-local vectors.",{"id":109,"title":70,"titles":110,"content":111,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fdiffusion#related",[75],"Graph Commitments & Epoch SnapshotsMarketsOptimistic Diffusion Claims mjx-container[jax=\"SVG\"] {\n  direction: ltr;\n}\n\nmjx-container[jax=\"SVG\"] > svg {\n  overflow: visible;\n  min-height: 1px;\n  min-width: 1px;\n}\n\nmjx-container[jax=\"SVG\"] > svg a {\n  fill: blue;\n  stroke: blue;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"] {\n  display: block;\n  text-align: center;\n  margin: 1em 0;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"][width=\"full\"] {\n  display: flex;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"left\"] {\n  text-align: left;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"right\"] {\n  text-align: right;\n}\n\ng[data-mml-node=\"merror\"] > g {\n  fill: red;\n  stroke: red;\n}\n\ng[data-mml-node=\"merror\"] > rect[data-background] {\n  fill: yellow;\n  stroke: none;\n}\n\ng[data-mml-node=\"mtable\"] > line[data-line], svg[data-table] > g > line[data-line] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > rect[data-frame], svg[data-table] > g > rect[data-frame] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dashed, svg[data-table] > g > .mjx-dashed {\n  stroke-dasharray: 140;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dotted, svg[data-table] > g > .mjx-dotted {\n  stroke-linecap: round;\n  stroke-dasharray: 0,140;\n}\n\ng[data-mml-node=\"mtable\"] > g > svg {\n  overflow: visible;\n}\n\n[jax=\"SVG\"] mjx-tool {\n  display: inline-block;\n  position: relative;\n  width: 0;\n  height: 0;\n}\n\n[jax=\"SVG\"] mjx-tool > mjx-tip {\n  position: absolute;\n  top: 0;\n  left: 0;\n}\n\nmjx-tool > mjx-tip {\n  display: inline-block;\n  padding: .2em;\n  border: 1px solid #888;\n  font-size: 70%;\n  background-color: #F8F8F8;\n  color: black;\n  box-shadow: 2px 2px 5px #AAAAAA;\n}\n\ng[data-mml-node=\"maction\"][data-toggle] {\n  cursor: pointer;\n}\n\nmjx-status {\n  display: block;\n  position: fixed;\n  left: 1em;\n  bottom: 1em;\n  min-width: 25%;\n  padding: .2em .4em;\n  border: 1px solid #888;\n  font-size: 90%;\n  background-color: #F8F8F8;\n  color: black;\n}\n\nforeignObject[data-mjx-xml] {\n  font-family: initial;\n  line-height: normal;\n  overflow: visible;\n}\n\nmjx-container[jax=\"SVG\"] path[data-c], mjx-container[jax=\"SVG\"] use[data-c] {\n  stroke-width: 3;\n}",{"id":113,"title":114,"titles":115,"content":116,"level":9,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fexample","Basic Example Graph",[],"A tiny five-participant graph that builds intuition for snapshot-relative diffusion (PageRank \u002F PPR) and how claims reference it. This page builds intuition for snapshot-relative diffusion (PageRank \u002F PPR) and how it can be referenced by claims.",{"id":118,"title":119,"titles":120,"content":121,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fexample#a-tiny-transaction-graph","A tiny transaction graph",[114],"Consider five participants: producers: P1, P2buyers: B1, B2, B3 Model interactions as a directed graph, where an edge buyer → producer has weight equal to completed transaction value (after any quality\u002Fproof factors).",{"id":123,"title":124,"titles":125,"content":126,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fexample#personalized-pagerank-ppr-intuition","Personalized PageRank (PPR) intuition",[114],"In PPR, influence originates from a teleport distribution and diffuses through the graph. In Local Protocol, teleport is market-relative: for market marketId = m, influence originates from . If the protocol’s verified seed set for market  includes B1 and B2, a toy teleport distribution might be: The diffusion fixed point is: So nodes that are reachable via high-weight paths from the verified seed set accumulate more influence.",{"id":128,"title":129,"titles":130,"content":131,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fexample#offchain-computation-demo-networkx","Offchain computation demo (NetworkX)",[114],"This is not a protocol algorithm; it’s just a quick way to visualize the fixed point on a small graph. import networkx as nx\n\n# Directed graph with edge weights (buyer -> producer)\nG = nx.DiGraph()\nG.add_edge(\"B1\", \"P1\", weight=2.0)\nG.add_edge(\"B2\", \"P2\", weight=3.0)\nG.add_edge(\"B3\", \"P2\", weight=1.0)\n\n# Teleport distribution (protocol-defined in production)\npersonalization = {\"B1\": 0.5, \"B2\": 0.5, \"B3\": 0.0, \"P1\": 0.0, \"P2\": 0.0}\n\n# alpha here is the restart probability (teleport rate)\nr = nx.pagerank(G, alpha=0.85, personalization=personalization, weight=\"weight\")\nprint(r)",{"id":133,"title":134,"titles":135,"content":136,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fexample#how-this-maps-to-the-protocol","How this maps to the protocol",[114],"Diffusion  is defined on a committed snapshot  and a market-relative seed commitment:  is a root-of-roots that binds per-market seed tables.The protocol does not store  as a global vector.Instead, diffusion enters the system through bounded, challengeable claims with transcripts and slashing.",{"id":138,"title":139,"titles":140,"content":141,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fexample#next-steps","Next steps",[114],"Snapshot-Relative DiffusionOptimistic Diffusion Claims mjx-container[jax=\"SVG\"] {\n  direction: ltr;\n}\n\nmjx-container[jax=\"SVG\"] > svg {\n  overflow: visible;\n  min-height: 1px;\n  min-width: 1px;\n}\n\nmjx-container[jax=\"SVG\"] > svg a {\n  fill: blue;\n  stroke: blue;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"] {\n  display: block;\n  text-align: center;\n  margin: 1em 0;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"][width=\"full\"] {\n  display: flex;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"left\"] {\n  text-align: left;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"right\"] {\n  text-align: right;\n}\n\ng[data-mml-node=\"merror\"] > g {\n  fill: red;\n  stroke: red;\n}\n\ng[data-mml-node=\"merror\"] > rect[data-background] {\n  fill: yellow;\n  stroke: none;\n}\n\ng[data-mml-node=\"mtable\"] > line[data-line], svg[data-table] > g > line[data-line] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > rect[data-frame], svg[data-table] > g > rect[data-frame] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dashed, svg[data-table] > g > .mjx-dashed {\n  stroke-dasharray: 140;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dotted, svg[data-table] > g > .mjx-dotted {\n  stroke-linecap: round;\n  stroke-dasharray: 0,140;\n}\n\ng[data-mml-node=\"mtable\"] > g > svg {\n  overflow: visible;\n}\n\n[jax=\"SVG\"] mjx-tool {\n  display: inline-block;\n  position: relative;\n  width: 0;\n  height: 0;\n}\n\n[jax=\"SVG\"] mjx-tool > mjx-tip {\n  position: absolute;\n  top: 0;\n  left: 0;\n}\n\nmjx-tool > mjx-tip {\n  display: inline-block;\n  padding: .2em;\n  border: 1px solid #888;\n  font-size: 70%;\n  background-color: #F8F8F8;\n  color: black;\n  box-shadow: 2px 2px 5px #AAAAAA;\n}\n\ng[data-mml-node=\"maction\"][data-toggle] {\n  cursor: pointer;\n}\n\nmjx-status {\n  display: block;\n  position: fixed;\n  left: 1em;\n  bottom: 1em;\n  min-width: 25%;\n  padding: .2em .4em;\n  border: 1px solid #888;\n  font-size: 90%;\n  background-color: #F8F8F8;\n  color: black;\n}\n\nforeignObject[data-mjx-xml] {\n  font-family: initial;\n  line-height: normal;\n  overflow: visible;\n}\n\nmjx-container[jax=\"SVG\"] path[data-c], mjx-container[jax=\"SVG\"] use[data-c] {\n  stroke-width: 3;\n} html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}",{"id":143,"title":144,"titles":145,"content":146,"level":9,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fgraph","The Transaction Graph",[],"A weighted, directed graph capturing economic relationships, used via snapshot-relative diffusion to allocate incentives and resist Sybil attacks. The transaction graph is a weighted, directed graph that captures economic relationships between participants. Each completed interaction adds or updates an edge, and the protocol uses the resulting connectivity (via snapshot-relative diffusion) to allocate incentives and resist Sybil manipulation.",{"id":148,"title":149,"titles":150,"content":151,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fgraph#graph-structure","Graph Structure",[144],"Let the global transaction graph at epoch  be: : participants (buyers, producers, agents, domains, etc.): directed edges representing completed interactions: nonnegative edge weights In a marketplace setting: buyer  purchasing from producer  adds edge an optional reverse edge  can represent fulfillment confirmation, dispute outcomes, or service-proof acknowledgements Commerce edges are market-tagged. The market tag is not user-provided: it is derived from the MarketContext that emitted the interaction record and must match the canonical registry state. See: Market Registry. The graph is a ledger-friendly data structure: edges are “who paid whom for what,” and weights are “how much that interaction counts.” These are facts derived from transactions and dispute outcomes. Interaction graphs and reputation-as-edges, e.g. EigenTrust. Separating facts (edges\u002Fweights\u002Fproofs\u002Fdisputes) from interpretations (diffusion scores computed on snapshots) is what makes the protocol scalable and verifiable.",{"id":153,"title":154,"titles":155,"content":156,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fgraph#edge-weights","Edge weights",[144,149],"Each completed transaction produces an edge weight: Where: amount is the economic value (price, fee base, etc.)quality accounts for dispute outcomes, refunds, chargebacks, delivery SLAs, etc.proof_factor is derived from attached service proofs and identity proofs The protocol constrains weights to prevent pathological abuse (per-edge min\u002Fmax, per-transaction caps, epoch caps, and\u002For decay).",{"id":158,"title":159,"titles":160,"content":161,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fgraph#key-features","Key Features",[144],"",{"id":163,"title":164,"titles":165,"content":166,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fgraph#_1-dynamic-adjustments","1. Dynamic Adjustments",[144,159],"The transaction graph dynamically adjusts based on participant interactions. As transactions occur, edge weights are updated, causing changes in connectivity and node influence. This creates a self-optimizing system where token distributions reflect the evolving state of the network.",{"id":168,"title":169,"titles":170,"content":171,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fgraph#_2-connectivity-as-a-measure-of-value","2. Connectivity as a Measure of Value",[144,159],"The graph not only captures transaction volume but also connectivity: Nodes with more connections to well-connected nodes are considered more influential.This approach ensures that participants contributing to network growth through broad connectivity earn higher rewards, not just participants with high transaction volumes with a single counterparty.",{"id":173,"title":174,"titles":175,"content":176,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fgraph#_3-sybil-resistance","3. Sybil Resistance",[144,159],"The graph’s structure inherently resists manipulation through Sybil attacks: Sybil nodes (fake users) typically form isolated clusters without strong connections to real nodes.The graph's weighting system prioritizes connections that enhance network-wide connectivity, making it difficult for isolated Sybil nodes to earn high rewards.",{"id":178,"title":179,"titles":180,"content":181,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fgraph#next-steps","Next Steps",[144],"The transaction graph sets the foundation for diffusion and verification: Snapshot-Relative DiffusionGraph Commitments & Epoch Snapshots mjx-container[jax=\"SVG\"] {\n  direction: ltr;\n}\n\nmjx-container[jax=\"SVG\"] > svg {\n  overflow: visible;\n  min-height: 1px;\n  min-width: 1px;\n}\n\nmjx-container[jax=\"SVG\"] > svg a {\n  fill: blue;\n  stroke: blue;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"] {\n  display: block;\n  text-align: center;\n  margin: 1em 0;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"][width=\"full\"] {\n  display: flex;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"left\"] {\n  text-align: left;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"right\"] {\n  text-align: right;\n}\n\ng[data-mml-node=\"merror\"] > g {\n  fill: red;\n  stroke: red;\n}\n\ng[data-mml-node=\"merror\"] > rect[data-background] {\n  fill: yellow;\n  stroke: none;\n}\n\ng[data-mml-node=\"mtable\"] > line[data-line], svg[data-table] > g > line[data-line] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > rect[data-frame], svg[data-table] > g > rect[data-frame] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dashed, svg[data-table] > g > .mjx-dashed {\n  stroke-dasharray: 140;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dotted, svg[data-table] > g > .mjx-dotted {\n  stroke-linecap: round;\n  stroke-dasharray: 0,140;\n}\n\ng[data-mml-node=\"mtable\"] > g > svg {\n  overflow: visible;\n}\n\n[jax=\"SVG\"] mjx-tool {\n  display: inline-block;\n  position: relative;\n  width: 0;\n  height: 0;\n}\n\n[jax=\"SVG\"] mjx-tool > mjx-tip {\n  position: absolute;\n  top: 0;\n  left: 0;\n}\n\nmjx-tool > mjx-tip {\n  display: inline-block;\n  padding: .2em;\n  border: 1px solid #888;\n  font-size: 70%;\n  background-color: #F8F8F8;\n  color: black;\n  box-shadow: 2px 2px 5px #AAAAAA;\n}\n\ng[data-mml-node=\"maction\"][data-toggle] {\n  cursor: pointer;\n}\n\nmjx-status {\n  display: block;\n  position: fixed;\n  left: 1em;\n  bottom: 1em;\n  min-width: 25%;\n  padding: .2em .4em;\n  border: 1px solid #888;\n  font-size: 90%;\n  background-color: #F8F8F8;\n  color: black;\n}\n\nforeignObject[data-mjx-xml] {\n  font-family: initial;\n  line-height: normal;\n  overflow: visible;\n}\n\nmjx-container[jax=\"SVG\"] path[data-c], mjx-container[jax=\"SVG\"] use[data-c] {\n  stroke-width: 3;\n}",{"id":183,"title":184,"titles":185,"content":186,"level":9,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs","Games & Graphs",[],"The protocol's graph-based mechanism stack — a transaction graph, snapshot-relative diffusion, and optimistic bounded claims. This chapter describes the protocol’s graph-based mechanism stack: ledger facts as a transaction graph,snapshot-relative diffusion (PPR) defined on committed epoch snapshots,optimistic, bounded claims verified by sampling and slashing. For markets (registry, commitments, and bootstrapping), see: Markets.",{"id":188,"title":179,"titles":189,"content":190,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs#next-steps",[184],"Start here: Transaction Graph ModelSnapshot-Relative Diffusion (PageRank \u002F PPR)MarketsGraph Commitments & Epoch SnapshotsOptimistic Diffusion Claims",{"id":192,"title":193,"titles":194,"content":195,"level":9,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Foptimistic-claims","Optimistic Diffusion Claims",[],"Participants include diffusion-derived rewards as bounded, challengeable claims verified by sampling, caps, bonds, and slashing instead of global computation. Local Protocol allows participants to include diffusion-derived reward outputs inside their transaction SDLs without requiring validators to compute  as a global vector. This uses optimistic verification: claims are accepted subject to a challenge window; incorrect claims are deterred with bonds + slashing and are verifiable via sampling. A user can attach a “this is my bounded reward, relative to the last committed snapshot” claim. Validators don’t compute global diffusion; they enforce caps\u002Fbonds and audit a bounded subset. Optimistic verification and fraud-proof patterns: Truebit and verifier-incentive discussions like the Arbitrum paper (Kalodner et al., 2018). Diffusion is expensive globally, but individual claims can be checked with bounded audits. This keeps validator work predictable while shifting compute to provers.",{"id":197,"title":198,"titles":199,"content":200,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Foptimistic-claims#what-a-user-is-allowed-to-claim","What a user is allowed to claim",[193],"A user submitting a transaction SDL may include a reward claim: The claim is a function of: committed snapshot roots the canonical snapshot artifact identifier  (to fetch authenticated snapshot data needed for audits, including MarketRegistry; see Graph Commitments & Epoch Snapshots and Performance & Storage)protocol parameters transaction contents (counterparty, amount, and market context)a protocol-defined estimator (random-walk \u002F Monte Carlo diffusion) Safety is achieved by combining: strict caps (deterministic safety rails):\nper-transaction: per-user per-epoch: per-market per-epoch: optional global backstop: canonical randomness (no grinding)priced verification (bounded work)bonds and slashing (negative EV for cheating)delayed sampling (prevents adaptive transcripts) Audits are probabilistic, but caps are deterministic. Even if audits miss something temporarily, total extractable value is bounded per user and per market. Claims are structured so audits have deterministic worst-case cost: protocol parameters bound maximum walk length, the number of sampled walks opened per audited claim, and the size of each opening (Merkle proofs + alias-table proofs). These bounds prevent “audit griefing” via oversized transcripts or huge openings.",{"id":202,"title":203,"titles":204,"content":205,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Foptimistic-claims#canonical-randomness-kills-grinding","Canonical randomness (kills grinding)",[193],"Each epoch has a randomness beacon . For each transaction id txid, walk seeds are derived deterministically: This removes user choice and prevents seed grinding \u002F “variance extraction”. The prover doesn’t get to pick the dice rolls: walk randomness is derived from an epoch beacon, so users can’t retry until they get a lucky estimator outcome. Verifiable Random Functions: RFC 9381. Audit selection and transcript determinism rely on  being unpredictable at commit time and bias-resistant with respect to block proposers\u002Fvalidators. A common appchain design is a threshold BLS beacon in the style of drand (see also Cloudflare’s beacon background: Randomness Beacon).",{"id":207,"title":208,"titles":209,"content":161,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Foptimistic-claims#transcript-commitment-delayed-sampling-prevents-adaptive-cheating","Transcript commitment + delayed sampling (prevents adaptive cheating)",[193],{"id":211,"title":212,"titles":213,"content":214,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Foptimistic-claims#commit-now-sample-later","Commit now, sample later",[193,208],"The prover: computes the claim and a transcript for  Monte Carlo walkscommits to a transcript root posts a commitment hash: Binding , , plus the market context  makes the transcript commitment deterministic: every verifier replays the same market-relative random-walk process on the same snapshot using the market’s committed teleport distribution .  ensures the replay also uses the same estimator settings (walk count, max steps, etc.). Binding  and  prevents replaying a valid transcript under a different snapshot. Binding  prevents reusing the transcript under a different market seed table. Users don’t get to pick a favorable marketId. In the fact layer, the transaction executes a MarketContext that emits an InteractionRecord, and the record’s marketId = m must match MarketRegistry[marketContext].marketId at that height.\nBecause MarketRegistry is included in SnapshotBlob_t and bound by , auditors can deterministically verify the market derivation while verifying the same claim’s transcript steps against  \u002F . Then sampling indices are derived from future randomness (e.g., ): Because  is unknown at commit time, the prover cannot craft a transcript that is only valid on the checked parts. First you lock in the transcript; later the protocol decides which parts must be opened. If you lied anywhere, there’s a good chance the opened part exposes it. Merkle commitments and delayed random challenges are standard in fraud-proof protocols.",{"id":216,"title":217,"titles":218,"content":219,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Foptimistic-claims#transcript-contents-minimal-sketch","Transcript contents (minimal sketch)",[193],"For walk  (length ): starting node  (sampled from the market-relative teleport , with teleport sampling proofs against  and optionally a per-market seed alias commitment )visited nodes for each step :\nrestart decision correctnessmarket-scoped edge sampling proof:\nopen OutIndex(m) for the current node via Merkle proof from marketOutIndexRootprove the sampled outgoing edge index using a Merkle opening against the aliasRoot from OutIndex(m)open the selected edge entry via Merkle proof against the adjacencyRoot from OutIndex(m)final contribution to the estimator (e.g., terminal node count, hit counts, discounted hits)",{"id":221,"title":222,"titles":223,"content":224,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Foptimistic-claims#verification-and-penalties-validator-audits","Verification and penalties (validator audits)",[193],"In high-volume markets, a protocol-chosen subset of claims is mandatorily audited by assigned validators, and failed audits finalize as fact-layer penalties. See: Validator Audits & Penalties",{"id":226,"title":70,"titles":227,"content":228,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Foptimistic-claims#related",[193],"Snapshot-Relative DiffusionGraph Commitments & Epoch SnapshotsValidator Audits & PenaltiesState Model (SDLs) mjx-container[jax=\"SVG\"] {\n  direction: ltr;\n}\n\nmjx-container[jax=\"SVG\"] > svg {\n  overflow: visible;\n  min-height: 1px;\n  min-width: 1px;\n}\n\nmjx-container[jax=\"SVG\"] > svg a {\n  fill: blue;\n  stroke: blue;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"] {\n  display: block;\n  text-align: center;\n  margin: 1em 0;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"][width=\"full\"] {\n  display: flex;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"left\"] {\n  text-align: left;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"right\"] {\n  text-align: right;\n}\n\ng[data-mml-node=\"merror\"] > g {\n  fill: red;\n  stroke: red;\n}\n\ng[data-mml-node=\"merror\"] > rect[data-background] {\n  fill: yellow;\n  stroke: none;\n}\n\ng[data-mml-node=\"mtable\"] > line[data-line], svg[data-table] > g > line[data-line] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > rect[data-frame], svg[data-table] > g > rect[data-frame] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dashed, svg[data-table] > g > .mjx-dashed {\n  stroke-dasharray: 140;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dotted, svg[data-table] > g > .mjx-dotted {\n  stroke-linecap: round;\n  stroke-dasharray: 0,140;\n}\n\ng[data-mml-node=\"mtable\"] > g > svg {\n  overflow: visible;\n}\n\n[jax=\"SVG\"] mjx-tool {\n  display: inline-block;\n  position: relative;\n  width: 0;\n  height: 0;\n}\n\n[jax=\"SVG\"] mjx-tool > mjx-tip {\n  position: absolute;\n  top: 0;\n  left: 0;\n}\n\nmjx-tool > mjx-tip {\n  display: inline-block;\n  padding: .2em;\n  border: 1px solid #888;\n  font-size: 70%;\n  background-color: #F8F8F8;\n  color: black;\n  box-shadow: 2px 2px 5px #AAAAAA;\n}\n\ng[data-mml-node=\"maction\"][data-toggle] {\n  cursor: pointer;\n}\n\nmjx-status {\n  display: block;\n  position: fixed;\n  left: 1em;\n  bottom: 1em;\n  min-width: 25%;\n  padding: .2em .4em;\n  border: 1px solid #888;\n  font-size: 90%;\n  background-color: #F8F8F8;\n  color: black;\n}\n\nforeignObject[data-mjx-xml] {\n  font-family: initial;\n  line-height: normal;\n  overflow: visible;\n}\n\nmjx-container[jax=\"SVG\"] path[data-c], mjx-container[jax=\"SVG\"] use[data-c] {\n  stroke-width: 3;\n}",{"id":230,"title":231,"titles":232,"content":233,"level":9,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Foverview","Incentives in Local Protocol",[],"Snapshot-relative diffusion on the transaction graph dynamically adjusts incentives while keeping validator work bounded and Sybil resistance strong. Local Protocol leverages snapshot-relative diffusion on the transaction graph to dynamically adjust incentives while maintaining strong Sybil resistance. Diffusion-derived outputs enter the system through bounded, challengeable claims, keeping validator work bounded and predictable. Diffusion answers: “if we start from verified activity and let trust spread, where does it end up?” Those scores then feed reward multipliers, risk limits, and market policy knobs. Graph diffusion for ranking\u002Ftrust: PageRank, Personalized PageRank, and seed-set anchoring like TrustRank. The protocol wants local actions (a completed delivery) to have non-local effects (your neighborhood becomes more trusted). Diffusion provides that spillover with clear semantics.",{"id":235,"title":179,"titles":236,"content":237,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Foverview#next-steps",[231],"In the following sections, we’ll build up the full model: The Transaction GraphSnapshot-Relative Diffusion (PageRank \u002F PPR)MarketsGraph Commitments & Epoch SnapshotsOptimistic Diffusion ClaimsBasic Example (PPR intuition)Insurance & Dispute Resolution After you’re comfortable with the transaction graph, you can dive into the other core protocol layers: SecurityProofsTrustArchitecture",{"id":239,"title":240,"titles":241,"content":242,"level":9,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fsnapshot-commitments","Graph Commitments & Epoch Snapshots",[],"One canonical epoch snapshot commitment per epoch — graph, seed, and artifact roots that serve as the reference for diffusion-derived claims. Local Protocol finalizes one canonical epoch snapshot commitment per epoch. The ledger commits to snapshot roots and uses them as the canonical reference for any diffusion-derived claims.",{"id":244,"title":245,"titles":246,"content":247,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fsnapshot-commitments#epochs","Epochs",[240],"Time is divided into epochs . Each epoch defines: a committed graph snapshot root a committed teleport\u002Fseed root a canonical randomness beacon protocol parameters The epoch cap  is not a single number. It’s a cap vector:: max claimable output per user\u002Fidentity per epoch: max claimable output per market\u002Fdomain per epoch: optional protocol-wide backstop (“fuse”)These caps are deterministic safety rails: even if audits miss something briefly, total extractable value is bounded per user and per market. A snapshot is like taking a photo of the graph once per epoch and publishing a hash of it. Later, anyone can prove facts about that “photo” (this edge existed, this node’s out-weight sum was X) using short inclusion proofs. Commitment trees \u002F authenticated datasets via Merkle trees.",{"id":249,"title":250,"titles":251,"content":252,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fsnapshot-commitments#commitment-structure","Commitment structure",[240],"Partition nodes into shards . Each shard publishes: The global graph root is:",{"id":254,"title":255,"titles":256,"content":257,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fsnapshot-commitments#seed-commitments-market-relative-teleport","Seed commitments (market-relative teleport)",[240,250],"Teleport is market-relative: each market marketId = m has its own protocol-committed teleport distribution . To keep the fact layer compact while supporting many markets, the snapshot commits a root of roots: Each per-market seed root commits to the seed-weight table for that market: For O(1) verifiable teleport sampling in transcripts, the snapshot artifact can also include a per-market alias table commitment (e.g., ) for sampling from .",{"id":259,"title":260,"titles":261,"content":262,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fsnapshot-commitments#snapshot-artifact-identifier-snapshotid","Snapshot artifact identifier (SnapshotId)",[240],"Audits require authenticated access to snapshot data (NodeRecords \u002F EdgeRecords \u002F alias tables). Each epoch therefore finalizes a Snapshot Artifact that is content-addressed and publicly retrievable. To make market membership auditable, SnapshotBlob_t must include the canonical MarketRegistry table for epoch :\nmarketContext → (marketId, vault, feeRouter, flags).\nBecause  binds SnapshotBlobHash_t, auditors can verify MarketRegistry lookups against the same snapshot commitments used for graph and seed verification. At epoch , let SnapshotBlobHash_t be the content hash of the snapshot artifact bytes in the data layer (see Performance & Storage). The chain commits:",{"id":264,"title":265,"titles":266,"content":267,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fsnapshot-commitments#proof-friendly-snapshot-packaging","Proof-friendly snapshot packaging",[240],"To support efficient verification (including random-walk transcript checks), the snapshot is packaged in structures that are easy to open with Merkle proofs. These records are the index that makes audits cheap: a verifier doesn’t need the whole graph—just a few Merkle openings for the edges touched by a sampled walk. Authenticated data structures (Merkleized key–value stores and adjacency lists) used in light-client verification.",{"id":269,"title":270,"titles":271,"content":272,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fsnapshot-commitments#noderecord","NodeRecord",[240,265],"For node : nodeId: AddressmarketOutIndexRoot: bytes32 — Merkle root of per-market outgoing-index entries keyed by marketIdnodeAttrRoot: bytes32 — root of node attributes (identity proofs, reputation flags, maturity gates) Each per-market outgoing-index entry (opened by a Merkle proof from marketOutIndexRoot) is:",{"id":274,"title":275,"titles":276,"content":277,"level":278,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fsnapshot-commitments#outindexm","OutIndex(m)",[240,265,270],"marketId: uint32outWeightSum: uint128 —  for this marketadjacencyRoot: bytes32 — Merkle root of outgoing edges in this marketaliasRoot: bytes32 — Merkle root of alias table for O(1) sampling of outgoing edges in this marketdegree: uint32 — number of outgoing edges in this market A node’s outgoing edges are partitioned by market. When verifying a walk step for market , a verifier opens OutIndex(m) and then verifies the sampled neighbor using that market’s aliasRoot + adjacencyRoot.",4,{"id":280,"title":281,"titles":282,"content":283,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fsnapshot-commitments#edgerecord","EdgeRecord",[240,265],"For an outgoing edge : dst: Addressweight: uint128edgeAttrRoot: bytes32 — service proof \u002F dispute state commitmentsmarketId: uint32 — required market tag for commerce edges (“this edge belongs to market ”). marketId MUST match the registry-assigned marketId of the producing MarketContext at that block height.flags: uint32 — dispute outcomes, maturity gating, etc.",{"id":285,"title":286,"titles":287,"content":288,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fsnapshot-commitments#alias-tables-recommended","Alias tables (recommended)",[240,265],"For efficient verifiable sampling from , the protocol supports per-node, per-market alias tables (via OutIndex(m).aliasRoot): alias entries deterministically derived from the market-scoped adjacency listthe table commits to sampling structure enabling O(1) verification of a sampled neighbor within the market context A random walk repeatedly asks: “from , which neighbor  do I jump to next?” Alias tables are a standard trick to sample from a discrete distribution in O(1) time. The alias method: Walker (1977) and Vose (1991).",{"id":290,"title":70,"titles":291,"content":292,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fsnapshot-commitments#related",[240],"Snapshot-Relative DiffusionMarketsOptimistic Diffusion Claims",{"id":294,"title":295,"titles":296,"content":297,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fgames-and-graphs\u002Fsnapshot-commitments#snapshot-artifacts-and-data-availability","Snapshot artifacts and data availability",[240],"Nodes can check availability via probabilistic sampling (DAS-style checks), as in LazyLedger and common DAS primers (e.g., Celestia’s Data Availability Sampling). See: Performance & Storage mjx-container[jax=\"SVG\"] {\n  direction: ltr;\n}\n\nmjx-container[jax=\"SVG\"] > svg {\n  overflow: visible;\n  min-height: 1px;\n  min-width: 1px;\n}\n\nmjx-container[jax=\"SVG\"] > svg a {\n  fill: blue;\n  stroke: blue;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"] {\n  display: block;\n  text-align: center;\n  margin: 1em 0;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"][width=\"full\"] {\n  display: flex;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"left\"] {\n  text-align: left;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"right\"] {\n  text-align: right;\n}\n\ng[data-mml-node=\"merror\"] > g {\n  fill: red;\n  stroke: red;\n}\n\ng[data-mml-node=\"merror\"] > rect[data-background] {\n  fill: yellow;\n  stroke: none;\n}\n\ng[data-mml-node=\"mtable\"] > line[data-line], svg[data-table] > g > line[data-line] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > rect[data-frame], svg[data-table] > g > rect[data-frame] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dashed, svg[data-table] > g > .mjx-dashed {\n  stroke-dasharray: 140;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dotted, svg[data-table] > g > .mjx-dotted {\n  stroke-linecap: round;\n  stroke-dasharray: 0,140;\n}\n\ng[data-mml-node=\"mtable\"] > g > svg {\n  overflow: visible;\n}\n\n[jax=\"SVG\"] mjx-tool {\n  display: inline-block;\n  position: relative;\n  width: 0;\n  height: 0;\n}\n\n[jax=\"SVG\"] mjx-tool > mjx-tip {\n  position: absolute;\n  top: 0;\n  left: 0;\n}\n\nmjx-tool > mjx-tip {\n  display: inline-block;\n  padding: .2em;\n  border: 1px solid #888;\n  font-size: 70%;\n  background-color: #F8F8F8;\n  color: black;\n  box-shadow: 2px 2px 5px #AAAAAA;\n}\n\ng[data-mml-node=\"maction\"][data-toggle] {\n  cursor: pointer;\n}\n\nmjx-status {\n  display: block;\n  position: fixed;\n  left: 1em;\n  bottom: 1em;\n  min-width: 25%;\n  padding: .2em .4em;\n  border: 1px solid #888;\n  font-size: 90%;\n  background-color: #F8F8F8;\n  color: black;\n}\n\nforeignObject[data-mjx-xml] {\n  font-family: initial;\n  line-height: normal;\n  overflow: visible;\n}\n\nmjx-container[jax=\"SVG\"] path[data-c], mjx-container[jax=\"SVG\"] use[data-c] {\n  stroke-width: 3;\n}",{"id":299,"title":300,"titles":301,"content":302,"level":9,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity","Identity",[],"Local Account contracts provide an ERC-4337 account abstraction using P256 and WebAuthn for secure, user-friendly identity management. The Local Account contracts provide an ERC-4337 compliant account abstraction for managing user identities within the Local network. These contracts leverage P256 elliptic curve cryptography and WebAuthn standards to offer secure, user-friendly authentication mechanisms. The primary goals of these contracts are to: Account Abstraction: Implement ERC-4337 account abstraction to enable advanced functionalities like batching transactions and key rotation.Key Management: Support multiple signing keys (1-of-n multisig) with the ability to add or remove keys.Usability: Provide a seamless user experience without compromising on security by using p256 keys compatible with WebAuthn, compatible with passkeys.Security: Ensure all cryptographic operations are secure.Compatibility: Align with existing and proposed standards like EIP-7212 for future-proofing.",{"id":304,"title":305,"titles":306,"content":307,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#components","Components",[300],"The Local Account system comprises the following on-chain elements: LocalAccount: The main contract representing a user's account.LocalAccountFactory: A factory contract for deploying LocalAccount instances using CREATE2 for deterministic addresses.LocalVerifier: A contract for verifying signatures using P256 elliptic curve operations.",{"id":309,"title":310,"titles":311,"content":161,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#localaccount-contract","LocalAccount Contract",[300],{"id":313,"title":314,"titles":315,"content":316,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#overview","Overview",[300,310],"The LocalAccount contract implements an ERC-4337 compatible account abstraction. It allows users to: Execute multiple transactions atomically.Validate user operations via P256 signatures.Manage multiple signing keys with 1-of-n multisig support.Rotate keys securely.",{"id":318,"title":159,"titles":319,"content":320,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#key-features",[300,310],"ERC-4337 Compliance: Implements the IAccount interface for compatibility with account abstraction entry points.Multisig Support: Allows up to 20 active signing keys, enabling 1-of-n multisig functionality.Key Rotation: Supports adding and removing signing keys, enhancing security and flexibility.WebAuthn Integration: Uses P256 keys compatible with WebAuthn, facilitating passwordless authentication.Upgradeable: Utilizes the UUPS upgrade pattern for future enhancements.",{"id":322,"title":323,"titles":324,"content":325,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#state-variables","State Variables",[300,310],"numActiveKeys: Number of active signing keys.keys: Mapping from key slots to public keys.entryPoint: Reference to the ERC-4337 entry point contract.verifier: Instance of the LocalVerifier contract.maxKeys: Maximum number of signing keys (constant value of 20).",{"id":327,"title":328,"titles":329,"content":161,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#methods","Methods",[300,310],{"id":331,"title":332,"titles":333,"content":334,"level":278,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#initialization","Initialization",[300,310,328],"function initialize(\n    uint8 slot,\n    bytes32[2] calldata key,\n    Call[] calldata initCalls\n) public virtual initializer Purpose: Initializes the account with an initial signing key and optional contract calls.Parameters:\nslot: Key slot to store the initial key.key: The P256 public key.initCalls: Array of contract calls to execute during initialization.",{"id":336,"title":337,"titles":338,"content":339,"level":278,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#transaction-execution","Transaction Execution",[300,310,328],"function executeBatch(Call[] calldata calls) external onlyEntryPoint Purpose: Executes multiple transactions atomically.Parameters:\ncalls: An array of Call structs containing destination, value, and data.",{"id":341,"title":342,"titles":343,"content":344,"level":278,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#user-operation-validation","User Operation Validation",[300,310,328],"function validateUserOp(\n    UserOperation calldata userOp,\n    bytes32 userOpHash,\n    uint256 missingAccountFunds\n) external override returns (uint256 validationData) Purpose: Validates a user operation by verifying a P256 signature.Parameters:\nuserOp: The user operation to validate.userOpHash: Hash of the user operation.missingAccountFunds: Amount of funds the account needs to cover transaction costs.",{"id":346,"title":347,"titles":348,"content":349,"level":278,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#signature-validation","Signature Validation",[300,310,328],"function isValidSignature(\n    bytes32 message,\n    bytes calldata signature\n) external view override returns (bytes4 magicValue) Purpose: Validates signatures for ERC-1271 compliance.Parameters:\nmessage: The message hash that was signed.signature: The signature data.",{"id":351,"title":352,"titles":353,"content":354,"level":278,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#key-management","Key Management",[300,310,328],"Add Signing Keyfunction addSigningKey(uint8 slot, bytes32[2] memory key) public onlySelf\nPurpose: Adds a new signing key to the account.Parameters:\nslot: The key slot to store the new key.key: The P256 public key.Remove Signing Keyfunction removeSigningKey(uint8 slot) public onlySelf\nPurpose: Removes an existing signing key from the account.Parameters:\nslot: The key slot of the key to remove.",{"id":356,"title":357,"titles":358,"content":359,"level":278,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#utility-methods","Utility Methods",[300,310,328],"Get Active Signing Keysfunction getActiveSigningKeys()\n    public\n    view\n    returns (\n        bytes32[2][] memory activeSigningKeys,\n        uint8[] memory activeSigningKeySlots\n    )\nPurpose: Retrieves all active signing keys and their slots.",{"id":361,"title":362,"titles":363,"content":364,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#access-control","Access Control",[300,310],"onlySelf: Modifier to restrict functions to be called only by the contract itself.onlyEntryPoint: Modifier to restrict functions to be called only by the designated entry point.",{"id":366,"title":367,"titles":368,"content":369,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#events","Events",[300,310],"AccountInitialized: Emitted during initialization.SigningKeyAdded: Emitted when a new signing key is added.SigningKeyRemoved: Emitted when a signing key is removed.",{"id":371,"title":372,"titles":373,"content":161,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#localaccountfactory-contract","LocalAccountFactory Contract",[300],{"id":375,"title":314,"titles":376,"content":377,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#overview-1",[300,372],"The LocalAccountFactory contract is responsible for deploying new LocalAccount instances using the CREATE2 opcode, allowing for deterministic contract addresses.",{"id":379,"title":159,"titles":380,"content":381,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#key-features-1",[300,372],"Deterministic Deployment: Uses CREATE2 for predictable account addresses.Prefunding: Allows prefunding of the account during creation.Singleton Implementation: Reuses a single LocalAccount implementation for all instances.",{"id":383,"title":328,"titles":384,"content":161,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#methods-1",[300,372],{"id":386,"title":387,"titles":388,"content":389,"level":278,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#create-account","Create Account",[300,372,328],"function createAccount(\n    uint8 keySlot,\n    bytes32[2] memory key,\n    LocalAccount.Call[] calldata initCalls,\n    uint256 salt\n) public payable returns (LocalAccount ret) Purpose: Deploys a new LocalAccount contract or returns the address if it already exists.Parameters:\nkeySlot: Key slot for the initial key.key: The P256 public key.initCalls: Array of initialization calls.salt: Salt value for CREATE2.",{"id":391,"title":392,"titles":393,"content":394,"level":278,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#get-address","Get Address",[300,372,328],"function getAddress(\n    uint8 keySlot,\n    bytes32[2] memory key,\n    LocalAccount.Call[] calldata initCalls,\n    uint256 salt\n) public view returns (address) Purpose: Computes the deterministic address of a LocalAccount contract based on input parameters.",{"id":396,"title":397,"titles":398,"content":161,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#localverifier-contract","LocalVerifier Contract",[300],{"id":400,"title":314,"titles":401,"content":402,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#overview-2",[300,397],"The LocalVerifier contract provides signature verification functionality for P256 signatures, compatible with WebAuthn standards.",{"id":404,"title":159,"titles":405,"content":406,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#key-features-2",[300,397],"Signature Verification: Verifies P256 signatures for both user operations and ERC-1271 compliance.Upgradeable: Implements the UUPS upgrade pattern for future enhancements.Auditability: Designed with security and auditability in mind.",{"id":408,"title":328,"titles":409,"content":161,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#methods-2",[300,397],{"id":411,"title":412,"titles":413,"content":414,"level":278,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#verify-signature","Verify Signature",[300,397,328],"function verifySignature(\n    bytes memory message,\n    bytes calldata signature,\n    uint256 x,\n    uint256 y\n) public view returns (bool) Purpose: Verifies a P256 signature given the message, signature data, and public key coordinates.Parameters:\nmessage: The original message that was signed.signature: The signature data, including WebAuthn-related fields.x, y: Coordinates of the public key on the P256 curve.",{"id":416,"title":417,"titles":418,"content":419,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#signature-structure","Signature Structure",[300,397],"The signature used in the LocalAccount contract follows a specific structure: Signature Format:struct Signature {\n    bytes authenticatorData;\n    string clientDataJSON;\n    uint256 challengeLocation;\n    uint256 responseTypeLocation;\n    uint256 r;\n    uint256 s;\n}\nComponents:authenticatorData: Data from the authenticator device.clientDataJSON: JSON-encoded client data.challengeLocation: Offset of the challenge in clientDataJSON.responseTypeLocation: Offset of the response type in clientDataJSON.r, s: Signature components.",{"id":421,"title":362,"titles":422,"content":423,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#access-control-1",[300,397],"onlyOwner: Modifier restricting functions to the contract owner.Ownership Transfer: Ownership can be transferred to enable upgrades or burned to make the contract immutable.",{"id":425,"title":426,"titles":427,"content":161,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#key-concepts","Key Concepts",[300],{"id":429,"title":430,"titles":431,"content":432,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#erc-4337-account-abstraction","ERC-4337 Account Abstraction",[300,426],"ERC-4337 introduces account abstraction, allowing smart contract accounts to manage their own authentication and transaction validation logic. The LocalAccount leverages this standard to provide flexible and secure account management.",{"id":434,"title":435,"titles":436,"content":437,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#p256-elliptic-curve-cryptography","P256 Elliptic Curve Cryptography",[300,426],"The contracts utilize the P256 elliptic curve for cryptographic operations, ensuring strong security guarantees. P256 is widely used in WebAuthn implementations, facilitating compatibility with modern authentication standards.",{"id":439,"title":440,"titles":441,"content":442,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#webauthn-integration","WebAuthn Integration",[300,426],"By integrating with WebAuthn, users can authenticate using hardware security modules, biometric sensors, or other secure methods without relying on traditional private keys or seed phrases.",{"id":444,"title":445,"titles":446,"content":161,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#additional-context","Additional Context",[300],{"id":448,"title":449,"titles":450,"content":451,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#gas-optimization","Gas Optimization",[300,445],"While smart contract-based signature verification is more gas-intensive than native precompiles, the LocalVerifier is optimized for efficiency: Strauss-Shamir Trick: Optimizes scalar multiplication in elliptic curve operations.Extended Jacobian Coordinates: Enhances efficiency in point addition and doubling.Progressive Precompiles: The design anticipates future EVM improvements, such as the proposed EIP-7212 precompile, which would significantly reduce gas costs.",{"id":453,"title":454,"titles":455,"content":456,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#future-enhancements","Future Enhancements",[300,445],"EIP-7212 Compatibility: The contracts are designed to be compatible with the proposed EIP-7212, allowing for potential gas cost reductions if the precompile is adopted.Key Rotation Replay Protection: Future versions may include cross-chain replay protection for key rotations.",{"id":458,"title":459,"titles":460,"content":461,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#references","References",[300],"EIP-4337: Account AbstractionEIP-7212: P256 Precompile ProposalWebAuthn SpecificationP256 Elliptic Curve DetailsWycheproof Test VectorsStrauss-Shamir TrickExtended Jacobian Coordinates",{"id":463,"title":179,"titles":464,"content":465,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fidentity#next-steps",[300],"That is all for identity. Next up, creating apps. html pre.shiki code .s5BVO, html code.shiki .s5BVO{--shiki-default:#F97583;--shiki-light:#CF222E}html pre.shiki code .sYIwp, html code.shiki .sYIwp{--shiki-default:#B392F0;--shiki-light:#8250DF}html pre.shiki code .sssk8, html code.shiki .sssk8{--shiki-default:#E1E4E8;--shiki-light:#1F2328}html pre.shiki code .sE5zC, html code.shiki .sE5zC{--shiki-default:#79B8FF;--shiki-light:#0550AE}html pre.shiki code .sdMFD, html code.shiki .sdMFD{--shiki-default:#FFAB70;--shiki-light:#953800}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html pre.shiki code .sPwVg, html code.shiki .sPwVg{--shiki-default:#B392F0;--shiki-light:#953800}",{"id":467,"title":468,"titles":469,"content":470,"level":9,"kind":10,"priority":9},"\u002Fdocs","Introduction",[],"Local Protocol unlocks decentralized applications that operate in uncertain, physical environments where service-proofs range from soft to hard. Blockchains use consensus algorithms and validity proofs to come to agreements on the state of digital transactions. However, most commercial transactions are not verifiable and still depend on trusted intermediaries. It is impossible, for example, for blockchains to reach consensus on the physical state of the world: the location of an entitythe completion of a servicethe condition of an asset The Local Blockchain is designed to unlock a new class of decentralized applications that can operate in these uncertain environments. Local introduces a graph-theoretic game that views proofs as probabilistic.",{"id":472,"title":473,"titles":474,"content":475,"level":16,"kind":10,"priority":9},"\u002Fdocs#who-should-use-local-protocol","Who should use Local Protocol",[468],"Local Protocol is for developers, businesses, and institutions seeking to build decentralized networks and is suitable for early-stage projects to large-scale networks. Local is uniquely suited to capture markets where strict, deterministic service-proofs are either not available, or are too expensive to produce. We view verifiability as a spectrum between soft proofs (probabilistic) and hard proofs (deterministic and cryptographically verifiable) and provide a path forward for applications along this spectrum to exist in a p2p and token-incentivized network. Below are some use cases that illustrate Local Protocol’s potential:",{"id":477,"title":478,"titles":479,"content":480,"level":16,"kind":10,"priority":9},"\u002Fdocs#who-is-this-documentation-for","Who is this documentation for",[468],"This documentation is for developers who wish to build services within the Local Proto ecosystem. It is structured to guide readers from basic to advanced concepts, providing practical examples and detailed explanations of how to use Local Protocol's features to build decentralized marketplace applications.",{"id":482,"title":483,"titles":484,"content":485,"level":9,"kind":10,"priority":9},"\u002Fdocs\u002Fmarkets\u002Fbootstrapping","Market Bootstrapping",[],"Market-relative teleport, endogenous and exogenous seeds, and per-market credit-line vaults that fund early rewards and repay from market fees. Market-relative diffusion avoids a core failure mode of “one global seed set”: fragmented-but-real markets. Early markets can also be sparse, so the protocol supports capital-backed bootstrapping without discretionary grants. This page defines: Market-relative teleport: a per-market, protocol-committed teleport distribution Endogenous market seeds: hard-to-fake “earned” anchors inside a marketMarket Anchors: capital-backed exogenous anchors that can seed markets earlyMarket Vaults: a per-market credit-line primitive that funds early rewards and gets repaid from future fees Think of diffusion as “trust spreading” through a market’s transaction history, but it needs a place to start. Seeds define that starting point. Market Vaults fund a market’s early incentive budget and are repaid from that market’s future fees if the market becomes real and active.",{"id":487,"title":488,"titles":489,"content":490,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fmarkets\u002Fbootstrapping#why-market-relative-teleport-exists","Why market-relative teleport exists",[483],"In marketplace networks, trust is often local to a market context: a courier can be highly trusted in one city\u002Fvertical even if the global network is fragmenteda new market can be economically real even if it’s weakly connected to global anchors If the protocol used one global seed set, naturally isolated markets would look “low influence” even when they are honest. To avoid that, diffusion (and claims derived from it) are evaluated relative to a market marketId = m, using the market’s committed teleport distribution . Teleport is the restart step in Personalized PageRank (PPR): with some probability, the walk jumps back to a protocol-defined distribution instead of following an edge. That restart distribution is what the protocol treats as its “trusted starting points”.See: Snapshot-Relative Diffusion. Personalized PageRank: Jeh & Widom, 2003Seed anchoring \u002F spam demotion (adjacent framing): TrustRank",{"id":492,"title":493,"titles":494,"content":495,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fmarkets\u002Fbootstrapping#per-market-seed-commitments-root-of-roots","Per-market seed commitments (root of roots)",[483],"Seeds are not user-chosen. The protocol commits to them each epoch so that claims and audits can be verified against a fixed reference. The chain commits to per-market seed tables via a root-of-roots: When verifying a claim in market , a verifier opens  from  and checks teleport sampling proofs against that market’s table. Without a commitment, a claimant could “move the goalposts” by choosing a convenient seed set that inflates their score. Committing seed tables makes market-relative diffusion reproducible: anyone can replay the same walk distribution for the same snapshot.",{"id":497,"title":498,"titles":499,"content":500,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fmarkets\u002Fbootstrapping#a-safety-tether-market-seeds-mixed-with-a-tiny-global-baseline","A safety tether: market seeds mixed with a tiny global baseline",[483],"Market-relative seeding fixes fragmented real clusters, but it introduces a risk: market capture (a cartel tries to become the market’s only “truth source”). To reduce capture risk without creating per-market governance, the teleport distribution can be defined as a fixed mixture:",{"id":502,"title":503,"titles":504,"content":505,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fmarkets\u002Fbootstrapping#recommended-seed-construction-rule-deterministic-low-governance","Recommended seed construction rule (deterministic, low-governance)",[483],"The protocol builds the market-local teleport mass  from a union of endogenous and exogenous anchors, then normalizes and clips.",{"id":507,"title":508,"titles":509,"content":510,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fmarkets\u002Fbootstrapping#_1-endogenous-anchors-earned-seeds-diversity-time-not-volume","1) Endogenous anchors (earned seeds): diversity + time, not volume",[483,503],"Let Window_t be the last  epochs (a global constant). A participant  is endo-eligible in market  iff: Verified(v)",{"id":512,"title":513,"titles":514,"content":515,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fmarkets\u002Fbootstrapping#_2-exogenous-anchors-market-anchors-concave-weight-from-locked-capital","2) Exogenous anchors (Market Anchors): concave weight from locked capital",[483,503],"Market Anchors are addresses that lock capital into the MarketVault for market  and opt into anchor status. Exogenous anchor weight is deliberately concave in capital:",{"id":517,"title":518,"titles":519,"content":520,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fmarkets\u002Fbootstrapping#_3-mixture-clipping","3) Mixture + clipping",[483,503],"Then apply a per-address cap (e.g., ) and renormalize.",{"id":522,"title":523,"titles":524,"content":525,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fmarkets\u002Fbootstrapping#market-vaults-a-startup-credit-line-primitive-for-a-market","Market Vaults: a “startup credit line” primitive for a market",[483],"Market Vaults are a mechanism for funding early incentives without ad-hoc grants. They work like a credit facility: capital is supplied up-front, and the market repays it with future fees if the market succeeds. Each market  can have a MarketVault contract that supports: Deposits (credit supply): anchors deposit capital into the vaultDraws (protocol borrows): the protocol can draw from the vault to fund early reward budgets under policy limitsRepayment (fees repay): as the market generates fees, a fixed share routes back to the vault until draws are repaid (plus a policy-defined yield to depositors) Credit delegation framing: Aave V3 Credit Delegation guidePolicy-driven liquidity facility (adjacent): Maker’s MIPs index (see D3M-style facilities): Maker MIPsBribing \u002F rent-to-control dynamics (adjacent risk surface): “Blockchain Bribing Attacks and Mitigations” (paper)",{"id":527,"title":528,"titles":529,"content":530,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fmarkets\u002Fbootstrapping#fee-attribution-is-ledger-defined","Fee attribution is ledger-defined",[483,523],"For a market  in epoch , define  as the realized protocol fee total attributed to market  during epoch . Mechanically,  is derived from finalized execution output: sum of fee over finalized InteractionRecords with marketId = m during epoch See: Market Registry",{"id":532,"title":533,"titles":534,"content":535,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fmarkets\u002Fbootstrapping#vault-invariants-mechanical-constraints","Vault invariants (mechanical constraints)",[483,523],"To avoid emissions-farming and rent-to-control dynamics, vault rules are mechanical and bounded. Common invariants include: Fee-first yield: yield is paid primarily from realized market fees.Draw limit: outstanding draws capped as a fraction of deposits: Risk haircut \u002F clawback: if dispute\u002Ffraud losses exceed thresholds, repayment\u002Fyield is haircutted under policy.Lockup for anchors: deposits that confer seed weight require a minimum lock duration.",{"id":537,"title":70,"titles":538,"content":539,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fmarkets\u002Fbootstrapping#related",[483],"Market RegistrySnapshot-Relative DiffusionGraph Commitments & Epoch SnapshotsOptimistic Diffusion Claims mjx-container[jax=\"SVG\"] {\n  direction: ltr;\n}\n\nmjx-container[jax=\"SVG\"] > svg {\n  overflow: visible;\n  min-height: 1px;\n  min-width: 1px;\n}\n\nmjx-container[jax=\"SVG\"] > svg a {\n  fill: blue;\n  stroke: blue;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"] {\n  display: block;\n  text-align: center;\n  margin: 1em 0;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"][width=\"full\"] {\n  display: flex;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"left\"] {\n  text-align: left;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"right\"] {\n  text-align: right;\n}\n\ng[data-mml-node=\"merror\"] > g {\n  fill: red;\n  stroke: red;\n}\n\ng[data-mml-node=\"merror\"] > rect[data-background] {\n  fill: yellow;\n  stroke: none;\n}\n\ng[data-mml-node=\"mtable\"] > line[data-line], svg[data-table] > g > line[data-line] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > rect[data-frame], svg[data-table] > g > rect[data-frame] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dashed, svg[data-table] > g > .mjx-dashed {\n  stroke-dasharray: 140;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dotted, svg[data-table] > g > .mjx-dotted {\n  stroke-linecap: round;\n  stroke-dasharray: 0,140;\n}\n\ng[data-mml-node=\"mtable\"] > g > svg {\n  overflow: visible;\n}\n\n[jax=\"SVG\"] mjx-tool {\n  display: inline-block;\n  position: relative;\n  width: 0;\n  height: 0;\n}\n\n[jax=\"SVG\"] mjx-tool > mjx-tip {\n  position: absolute;\n  top: 0;\n  left: 0;\n}\n\nmjx-tool > mjx-tip {\n  display: inline-block;\n  padding: .2em;\n  border: 1px solid #888;\n  font-size: 70%;\n  background-color: #F8F8F8;\n  color: black;\n  box-shadow: 2px 2px 5px #AAAAAA;\n}\n\ng[data-mml-node=\"maction\"][data-toggle] {\n  cursor: pointer;\n}\n\nmjx-status {\n  display: block;\n  position: fixed;\n  left: 1em;\n  bottom: 1em;\n  min-width: 25%;\n  padding: .2em .4em;\n  border: 1px solid #888;\n  font-size: 90%;\n  background-color: #F8F8F8;\n  color: black;\n}\n\nforeignObject[data-mjx-xml] {\n  font-family: initial;\n  line-height: normal;\n  overflow: visible;\n}\n\nmjx-container[jax=\"SVG\"] path[data-c], mjx-container[jax=\"SVG\"] use[data-c] {\n  stroke-width: 3;\n}",{"id":541,"title":542,"titles":543,"content":544,"level":9,"kind":10,"priority":9},"\u002Fdocs\u002Fmarkets","Markets",[],"Protocol-defined execution contexts with their own policy and accounting, derived from execution and verified against canonical registry state. Markets are protocol-defined execution contexts with their own policy and accounting. A market is not a user-chosen label; it is derived from what a transaction executed, and it is verified against canonical registry state. Markets also provide the protocol surface for bootstrapping: new markets can start sparse and fragmented yet still be scored and incentivized safely via market-relative teleport (seeds) and credit-like reward funding (MarketVaults) with repayment sourced from market fees.",{"id":546,"title":547,"titles":548,"content":549,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fmarkets#what-lives-here","What lives here",[542],"Market identity and enforcement: how a transaction’s market is derived from execution and verified against canonical registry state.Commitment hooks: how market tables and fee attribution are bound into epoch commitments.Bootstrapping and credit: how early markets can be seeded and funded, with repayment sourced from market fee cashflows.",{"id":551,"title":552,"titles":553,"content":554,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fmarkets#start-here","Start here",[542],"Market RegistryMarket Bootstrapping (Seeds + Vaults) Personalized PageRank (PPR): market-relative teleport is a protocol-fixed personalization distribution (Jeh & Widom, 2003).Seed-anchored filtering: anchoring trust to protocol-defined seeds is adjacent to ideas like TrustRank.Authenticated data \u002F commitments: MarketRegistry is made auditable by including it in snapshot artifacts bound by hash commitments (Merkle trees: Merkle, 1987).",{"id":556,"title":557,"titles":558,"content":559,"level":9,"kind":10,"priority":9},"\u002Fdocs\u002Fmarkets\u002Fregistry","Market Registry",[],"How a transaction’s market is derived from the executing MarketContext and canonicalized against the protocol MarketRegistry. Markets are defined as execution contexts. A transaction’s market is derived from the MarketContext contract\u002Frouter that emitted an InteractionRecord, not from user-provided metadata.",{"id":561,"title":562,"titles":563,"content":564,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fmarkets\u002Fregistry#markets-are-derived-from-execution","Markets are derived from execution",[557],"MarketContext: an on-chain contract (or router) that emits canonical InteractionRecords for a commercial context.Market (m): a policy + accounting container bound to one MarketContext.marketId: a registry-assigned identifier derived from the executed MarketContext.",{"id":566,"title":567,"titles":568,"content":569,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fmarkets\u002Fregistry#marketregistry-canonicalization","MarketRegistry (canonicalization)",[557],"The protocol maintains a canonical MarketRegistry: marketContext → (marketId, vault, feeRouter, flags) where: marketId: uint32: registry-assigned market identifier (unique; not user-chosen)vault: Address: MarketVault for this market (MAY be 0x0 if unused)feeRouter: Address: where protocol fees for this market are routedflags: uint32: e.g. ACTIVE \u002F DEPRECATED",{"id":571,"title":572,"titles":573,"content":574,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fmarkets\u002Fregistry#interactionrecords","InteractionRecords",[557],"An InteractionRecord is emitted by a registered MarketContext during execution and is included in an SDL. Minimal sketch: marketId: uint32marketContext: Addressbuyer: Addressprovider: Addressamount: uint128fee: uint128edgeDelta and\u002For other protocol-defined graph\u002Fattribute deltasproofRefs: bytes32[]disputeRefs: bytes32[] (if applicable)",{"id":576,"title":577,"titles":578,"content":579,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fmarkets\u002Fregistry#validity-rule-critical","Validity rule (critical)",[557,572],"An interaction record (and any resulting commerce edges) is valid only if: MarketRegistry[marketContext].marketId == marketId at that block heightthe market is ACTIVE The security-critical requirement is that users cannot choose a favorable market label. By deriving marketId from the executed marketContext via a canonical registry mapping, market-scoped caps, seeds, and accounting can be enforced deterministically. Authenticated commitments: binding MarketRegistry into a snapshot artifact so verifiers can check market attribution via short openings is a standard authenticated-data pattern (Merkle trees: Merkle, 1987).",{"id":581,"title":70,"titles":582,"content":583,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fmarkets\u002Fregistry#related",[557],"Market BootstrappingGraph Commitments & Epoch Snapshots html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}",{"id":585,"title":586,"titles":587,"content":588,"level":9,"kind":10,"priority":9},"\u002Fdocs\u002Fmore-resources","More Resources",[],"Lightweight supporting material for the Local Protocol documentation, including quick-reference pages and navigation aids. This section contains lightweight supporting material for the Local Protocol documentation, such as quick-reference pages and navigation aids.",{"id":590,"title":179,"titles":591,"content":592,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fmore-resources#next-steps",[586],"Read the whitepaper — the original Local Protocol whitepaper.Browse the code on GitHub — protocol implementations and tooling.",{"id":594,"title":595,"titles":596,"content":597,"level":9,"kind":10,"priority":9},"\u002Fdocs\u002Fproofs\u002Fidentity-proofs","Identity Proofs as Node Attributes",[],"How identity proofs are committed as node attributes to boost trustworthiness, Sybil resistance, and incentives. Examples of identity proofs include: World IDzkPassportOpacity Network, or other zkTLS authentication with a relevant Web2 provider These proofs increase a node’s trustworthiness, which can translate into higher rewards and better economic terms. They enhance Sybil resistance by allowing the protocol to anchor diffusion in verified participants. See: Sybil Resistance and Snapshot-Relative Diffusion. These proofs can be assigned a score that unlocks a larger block rewards for both this node and any transacting counterparties. Specifically, we boost nodes that have evidence of realness because it provides the network with stronger sybil resistance.",{"id":599,"title":600,"titles":601,"content":602,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fproofs\u002Fidentity-proofs#how-identity-proofs-affect-diffusion-and-incentives","How identity proofs affect diffusion and incentives",[595],"In Local Protocol, identity proofs are committed as node attributes (via snapshot commitments) and can influence the system in protocol-defined ways: See: Graph Commitments & Epoch Snapshots. Teleport \u002F seed mass: identity-verified nodes can be included in the protocol-defined, market-relative teleport distribution , or receive higher  weights.Policy gating: identity attributes can raise per-tx caps, lower required bonds, or relax verification requirements (or the opposite), depending on market maturity and fraud risk. This framing keeps diffusion snapshot-relative (defined on committed roots) while allowing markets to bootstrap trust without hard proofs on every transaction.",{"id":604,"title":179,"titles":605,"content":606,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fproofs\u002Fidentity-proofs#next-steps",[595],"Next: Service Proofs, which strengthen the reliability of individual transactions in the network. mjx-container[jax=\"SVG\"] {\n  direction: ltr;\n}\n\nmjx-container[jax=\"SVG\"] > svg {\n  overflow: visible;\n  min-height: 1px;\n  min-width: 1px;\n}\n\nmjx-container[jax=\"SVG\"] > svg a {\n  fill: blue;\n  stroke: blue;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"] {\n  display: block;\n  text-align: center;\n  margin: 1em 0;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"][width=\"full\"] {\n  display: flex;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"left\"] {\n  text-align: left;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"right\"] {\n  text-align: right;\n}\n\ng[data-mml-node=\"merror\"] > g {\n  fill: red;\n  stroke: red;\n}\n\ng[data-mml-node=\"merror\"] > rect[data-background] {\n  fill: yellow;\n  stroke: none;\n}\n\ng[data-mml-node=\"mtable\"] > line[data-line], svg[data-table] > g > line[data-line] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > rect[data-frame], svg[data-table] > g > rect[data-frame] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dashed, svg[data-table] > g > .mjx-dashed {\n  stroke-dasharray: 140;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dotted, svg[data-table] > g > .mjx-dotted {\n  stroke-linecap: round;\n  stroke-dasharray: 0,140;\n}\n\ng[data-mml-node=\"mtable\"] > g > svg {\n  overflow: visible;\n}\n\n[jax=\"SVG\"] mjx-tool {\n  display: inline-block;\n  position: relative;\n  width: 0;\n  height: 0;\n}\n\n[jax=\"SVG\"] mjx-tool > mjx-tip {\n  position: absolute;\n  top: 0;\n  left: 0;\n}\n\nmjx-tool > mjx-tip {\n  display: inline-block;\n  padding: .2em;\n  border: 1px solid #888;\n  font-size: 70%;\n  background-color: #F8F8F8;\n  color: black;\n  box-shadow: 2px 2px 5px #AAAAAA;\n}\n\ng[data-mml-node=\"maction\"][data-toggle] {\n  cursor: pointer;\n}\n\nmjx-status {\n  display: block;\n  position: fixed;\n  left: 1em;\n  bottom: 1em;\n  min-width: 25%;\n  padding: .2em .4em;\n  border: 1px solid #888;\n  font-size: 90%;\n  background-color: #F8F8F8;\n  color: black;\n}\n\nforeignObject[data-mjx-xml] {\n  font-family: initial;\n  line-height: normal;\n  overflow: visible;\n}\n\nmjx-container[jax=\"SVG\"] path[data-c], mjx-container[jax=\"SVG\"] use[data-c] {\n  stroke-width: 3;\n}",{"id":608,"title":609,"titles":610,"content":611,"level":9,"kind":10,"priority":9},"\u002Fdocs\u002Fproofs","Proofs in Local Protocol",[],"How Local Protocol treats verifiability as a spectrum and uses identity and service proofs as graph attributes to bootstrap trust. Local Protocol targets decentralized physical infrastructure networks (DePINs) where many valuable services lack cheap, deterministic proofs. The protocol treats verifiability as a spectrum and provides mechanisms that remain secure even when only probabilistic evidence is available. Our approach acknowledges a spectrum of verifiability and provides a path forward for networks that may not have access to hard or cost-effective service proofs. Local Protocol is an expressive architecture whose approach to verifiability is adaptable to a wide range of DePIN projects. In the root case, the protocol assumes that services do not have access to robust service-proofs.",{"id":613,"title":614,"titles":615,"content":616,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fproofs#spectrum-of-verifiability","Spectrum of Verifiability",[609],"Verifiability is a spectrum between: Hard proofs: deterministic, cryptographically verifiable evidence (e.g., cryptographic attestations, signatures tied to objective system events).Soft proofs: probabilistic evidence (e.g., location signals, sensor readings, human attestations, reputation signals) that can be informative but not perfectly binding. Local Protocol is designed so soft proofs can still be useful without becoming a free attack surface: they feed into bounded weights, market-relative seeds, and claim verification (caps + audits + slashing).",{"id":618,"title":619,"titles":620,"content":621,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fproofs#proofs-as-graph-attributes","Proofs as Graph Attributes",[609],"In graph theory, a node is a point representing an entity (buyer, seller), and an edge is a connection between two nodes (transactions). In Local protocol, we model identity-proofs (and other trust attributes for users) as node attributes and service-proofs as edge attributes. See: The Transaction Graph and Graph Commitments & Epoch Snapshots. Proofs are ledger facts attached to nodes\u002Fedges. The protocol consumes them in a few specific places (seed construction, edge-weight adjustment, risk\u002Fcap policy), and their effect propagates through the graph via snapshot-relative diffusion. You can think of both identity and service proofs as injecting trust into the network. As the network becomes more trustworthy, the protocol becomes more confident in distributing rewards that are greater than the fees collected for each transaction. This unlocks a rich surface area for capital formation to bootstrap new markets. New markets can inherit the security from existing markets providing the network with a strong cross-market network effect. For immature markets that want to prioritize bootstrapping trust, proofs can concentrate influence through the protocol-defined, market-relative teleport distribution  and through edge-weight adjustments (see Snapshot-Relative Diffusion and Market Bootstrapping). As the market matures, reliance on expensive proofs can be reduced via policy caps, decay schedules, and lower proof multipliers.",{"id":623,"title":624,"titles":625,"content":626,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fproofs#trust-propagation-under-diffusion","Trust propagation under diffusion",[609,619],"Under snapshot-relative diffusion, proofs influence the walk in two protocol-defined ways: Seed mass (teleport) updates: stronger proofs can increase  (in market context ) or seed eligibility.Edge weight adjustments: service proofs\u002Fdisputes change proof_factor and quality in edge weights. See: Service Proofs and Dispute Resolution & Collateral. The effect naturally diminishes over distance: in a restarted random walk, influence along length- paths is damped by roughly .",{"id":628,"title":629,"titles":630,"content":631,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fproofs#probabilistic-evidence-and-confidence","Probabilistic evidence and confidence",[609],"Many proofs are not binary. Local Protocol treats these as confidence-weighted signals and uses them only through protocol-defined, bounded interfaces. See: Proofs as Probabilities",{"id":633,"title":634,"titles":635,"content":636,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fproofs#proof-attachments-in-state-diff-lists-sdls","Proof attachments in State Diff Lists (SDLs)",[609],"Proofs are committed to the canonical ledger as part of execution outputs. Concretely, proofs can be included as proof attachments inside a State Diff List (SDL)—the compact, verifiable bundle of ledger mutations that is produced by execution and finalized by the protocol. See State Model for the definition of SDLs and how they compose into a single canonical state.",{"id":638,"title":179,"titles":639,"content":640,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fproofs#next-steps",[609],"Proofs OverviewIdentity ProofsService ProofsProofs as ProbabilitiesLocation Proofs mjx-container[jax=\"SVG\"] {\n  direction: ltr;\n}\n\nmjx-container[jax=\"SVG\"] > svg {\n  overflow: visible;\n  min-height: 1px;\n  min-width: 1px;\n}\n\nmjx-container[jax=\"SVG\"] > svg a {\n  fill: blue;\n  stroke: blue;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"] {\n  display: block;\n  text-align: center;\n  margin: 1em 0;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"][width=\"full\"] {\n  display: flex;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"left\"] {\n  text-align: left;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"right\"] {\n  text-align: right;\n}\n\ng[data-mml-node=\"merror\"] > g {\n  fill: red;\n  stroke: red;\n}\n\ng[data-mml-node=\"merror\"] > rect[data-background] {\n  fill: yellow;\n  stroke: none;\n}\n\ng[data-mml-node=\"mtable\"] > line[data-line], svg[data-table] > g > line[data-line] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > rect[data-frame], svg[data-table] > g > rect[data-frame] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dashed, svg[data-table] > g > .mjx-dashed {\n  stroke-dasharray: 140;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dotted, svg[data-table] > g > .mjx-dotted {\n  stroke-linecap: round;\n  stroke-dasharray: 0,140;\n}\n\ng[data-mml-node=\"mtable\"] > g > svg {\n  overflow: visible;\n}\n\n[jax=\"SVG\"] mjx-tool {\n  display: inline-block;\n  position: relative;\n  width: 0;\n  height: 0;\n}\n\n[jax=\"SVG\"] mjx-tool > mjx-tip {\n  position: absolute;\n  top: 0;\n  left: 0;\n}\n\nmjx-tool > mjx-tip {\n  display: inline-block;\n  padding: .2em;\n  border: 1px solid #888;\n  font-size: 70%;\n  background-color: #F8F8F8;\n  color: black;\n  box-shadow: 2px 2px 5px #AAAAAA;\n}\n\ng[data-mml-node=\"maction\"][data-toggle] {\n  cursor: pointer;\n}\n\nmjx-status {\n  display: block;\n  position: fixed;\n  left: 1em;\n  bottom: 1em;\n  min-width: 25%;\n  padding: .2em .4em;\n  border: 1px solid #888;\n  font-size: 90%;\n  background-color: #F8F8F8;\n  color: black;\n}\n\nforeignObject[data-mjx-xml] {\n  font-family: initial;\n  line-height: normal;\n  overflow: visible;\n}\n\nmjx-container[jax=\"SVG\"] path[data-c], mjx-container[jax=\"SVG\"] use[data-c] {\n  stroke-width: 3;\n}",{"id":642,"title":643,"titles":644,"content":645,"level":9,"kind":10,"priority":9},"\u002Fdocs\u002Fproofs\u002Flocation-proofs","Location Proofs",[],"How probabilistic location signals are modeled as soft service proofs and combined with caps and slashing to bootstrap markets.",{"id":647,"title":648,"titles":649,"content":650,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fproofs\u002Flocation-proofs#the-problem","The problem",[643],"Many physical services don’t have cheap, deterministic proofs. For example, “a driver arrived at the right doorstep” is hard to prove cryptographically at low cost. If every transaction required high-quality proofs, proof generation could break the unit economics of the underlying service.",{"id":652,"title":653,"titles":654,"content":655,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fproofs\u002Flocation-proofs#proof-of-location-as-a-soft-proof","Proof-of-location as a soft proof",[643],"Location signals (GPS, cell triangulation, Wi-Fi, attestations) are often probabilistic. In Local Protocol, these are modeled as edge attributes (service proofs) that affect the transaction graph through: : higher confidence → higher effective edge weight: disputes\u002Fchargebacks → lower effective edge weight These adjustments feed into snapshot-relative diffusion on the committed graph snapshot.",{"id":657,"title":658,"titles":659,"content":660,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fproofs\u002Flocation-proofs#why-this-helps-immature-markets","Why this helps immature markets",[643],"In small markets, collusion remains possible even with strong evidence. The protocol therefore combines proofs with: anchored diffusion (teleport mass from verified seeds)strict caps on claimable rewardschallengeable claims with bonds + slashing This allows bootstrapping while keeping dishonest inflation negative expected value.",{"id":662,"title":70,"titles":663,"content":664,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fproofs\u002Flocation-proofs#related",[643],"Service ProofsSnapshot-Relative DiffusionOptimistic Diffusion Claims mjx-container[jax=\"SVG\"] {\n  direction: ltr;\n}\n\nmjx-container[jax=\"SVG\"] > svg {\n  overflow: visible;\n  min-height: 1px;\n  min-width: 1px;\n}\n\nmjx-container[jax=\"SVG\"] > svg a {\n  fill: blue;\n  stroke: blue;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"] {\n  display: block;\n  text-align: center;\n  margin: 1em 0;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"][width=\"full\"] {\n  display: flex;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"left\"] {\n  text-align: left;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"right\"] {\n  text-align: right;\n}\n\ng[data-mml-node=\"merror\"] > g {\n  fill: red;\n  stroke: red;\n}\n\ng[data-mml-node=\"merror\"] > rect[data-background] {\n  fill: yellow;\n  stroke: none;\n}\n\ng[data-mml-node=\"mtable\"] > line[data-line], svg[data-table] > g > line[data-line] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > rect[data-frame], svg[data-table] > g > rect[data-frame] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dashed, svg[data-table] > g > .mjx-dashed {\n  stroke-dasharray: 140;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dotted, svg[data-table] > g > .mjx-dotted {\n  stroke-linecap: round;\n  stroke-dasharray: 0,140;\n}\n\ng[data-mml-node=\"mtable\"] > g > svg {\n  overflow: visible;\n}\n\n[jax=\"SVG\"] mjx-tool {\n  display: inline-block;\n  position: relative;\n  width: 0;\n  height: 0;\n}\n\n[jax=\"SVG\"] mjx-tool > mjx-tip {\n  position: absolute;\n  top: 0;\n  left: 0;\n}\n\nmjx-tool > mjx-tip {\n  display: inline-block;\n  padding: .2em;\n  border: 1px solid #888;\n  font-size: 70%;\n  background-color: #F8F8F8;\n  color: black;\n  box-shadow: 2px 2px 5px #AAAAAA;\n}\n\ng[data-mml-node=\"maction\"][data-toggle] {\n  cursor: pointer;\n}\n\nmjx-status {\n  display: block;\n  position: fixed;\n  left: 1em;\n  bottom: 1em;\n  min-width: 25%;\n  padding: .2em .4em;\n  border: 1px solid #888;\n  font-size: 90%;\n  background-color: #F8F8F8;\n  color: black;\n}\n\nforeignObject[data-mjx-xml] {\n  font-family: initial;\n  line-height: normal;\n  overflow: visible;\n}\n\nmjx-container[jax=\"SVG\"] path[data-c], mjx-container[jax=\"SVG\"] use[data-c] {\n  stroke-width: 3;\n}",{"id":666,"title":667,"titles":668,"content":669,"level":9,"kind":10,"priority":9},"\u002Fdocs\u002Fproofs\u002Foverview","Proofs Overview",[],"Proofs are committed as ledger facts and consumed as graph attributes for identity and service outcomes. Proofs are committed as ledger facts and consumed as graph attributes (node attributes for identity, edge attributes for service outcomes). See: Proofs in Local Protocol",{"id":671,"title":179,"titles":672,"content":673,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fproofs\u002Foverview#next-steps",[667],"Identity ProofsService ProofsProofs as ProbabilitiesLocation Proofs",{"id":675,"title":676,"titles":677,"content":678,"level":9,"kind":10,"priority":9},"\u002Fdocs\u002Fproofs\u002Fprobabilities","Proofs as Probabilities",[],"How Local Protocol models non-deterministic proofs as confidence-weighted evidence consumed through bounded interfaces. Many proofs are not deterministic. Location signals, sensor readings, and human attestations are often best modeled as probabilistic evidence with a confidence score. Local Protocol uses these signals only through protocol-defined, bounded interfaces so they can improve incentives without becoming an unbounded attack surface. See: Proofs in Local Protocol",{"id":680,"title":681,"titles":682,"content":683,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fproofs\u002Fprobabilities#confidence-weighted-evidence","Confidence-weighted evidence",[676],"Model a proof attachment as evidence with confidence , where  means “strong evidence” and  means “no evidence”. The protocol does not need to agree on a universal meaning of . It only requires: a deterministic rule for how  affects ledger-level policy inputs (weights, seed eligibility\u002Fweight, caps\u002Fbonds),and objective verification hooks where possible (e.g., by sampling proofs in audits or requiring stronger bonds for high-impact claims).",{"id":685,"title":686,"titles":687,"content":688,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fproofs\u002Fprobabilities#how-probabilistic-proofs-affect-the-graph","How probabilistic proofs affect the graph",[676],"Probabilistic proofs are consumed in two primary places: Edge weights (service proofs): adjust proof_factor (and sometimes quality) in: Seed mass (identity\u002Fservice baselines): affect seed eligibility and\u002For seed weight in the market-relative teleport distribution  used by diffusion. Because diffusion follows outgoing edges proportional to weights and restarts from , confidence-weighted evidence influences incentives by changing where influence can flow.",{"id":690,"title":691,"titles":692,"content":693,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fproofs\u002Fprobabilities#dampening-over-distance-and-time","Dampening over distance and time",[676],"Even strong evidence should not create permanent or global privilege. Distance dampening: in a restarted random walk, influence along length- paths is damped by roughly .Time decay: implementations can apply deterministic decay schedules to proof-derived boosts (edge-weight multipliers and\u002For seed weights) so old evidence fades unless refreshed.",{"id":695,"title":696,"titles":697,"content":698,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fproofs\u002Fprobabilities#practical-guidance-protocol-level","Practical guidance (protocol-level)",[676],"Bounded impact: clamp proof-derived multipliers and seed weights (caps prevent “proof = unlimited reward”).Risk coupling: require stronger bonds for claims that rely heavily on proof multipliers, and reduce future capacity via penalties when audits fail.Market-relative context: evaluate proof effects within a market context; bootstrapping mechanisms (seeds + vaults) can vary across markets while keeping the algorithm fixed. See: Market Bootstrapping",{"id":700,"title":179,"titles":701,"content":702,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fproofs\u002Fprobabilities#next-steps",[676],"Next, see an example of probabilistic evidence in action: Location Proofs mjx-container[jax=\"SVG\"] {\n  direction: ltr;\n}\n\nmjx-container[jax=\"SVG\"] > svg {\n  overflow: visible;\n  min-height: 1px;\n  min-width: 1px;\n}\n\nmjx-container[jax=\"SVG\"] > svg a {\n  fill: blue;\n  stroke: blue;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"] {\n  display: block;\n  text-align: center;\n  margin: 1em 0;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"][width=\"full\"] {\n  display: flex;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"left\"] {\n  text-align: left;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"right\"] {\n  text-align: right;\n}\n\ng[data-mml-node=\"merror\"] > g {\n  fill: red;\n  stroke: red;\n}\n\ng[data-mml-node=\"merror\"] > rect[data-background] {\n  fill: yellow;\n  stroke: none;\n}\n\ng[data-mml-node=\"mtable\"] > line[data-line], svg[data-table] > g > line[data-line] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > rect[data-frame], svg[data-table] > g > rect[data-frame] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dashed, svg[data-table] > g > .mjx-dashed {\n  stroke-dasharray: 140;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dotted, svg[data-table] > g > .mjx-dotted {\n  stroke-linecap: round;\n  stroke-dasharray: 0,140;\n}\n\ng[data-mml-node=\"mtable\"] > g > svg {\n  overflow: visible;\n}\n\n[jax=\"SVG\"] mjx-tool {\n  display: inline-block;\n  position: relative;\n  width: 0;\n  height: 0;\n}\n\n[jax=\"SVG\"] mjx-tool > mjx-tip {\n  position: absolute;\n  top: 0;\n  left: 0;\n}\n\nmjx-tool > mjx-tip {\n  display: inline-block;\n  padding: .2em;\n  border: 1px solid #888;\n  font-size: 70%;\n  background-color: #F8F8F8;\n  color: black;\n  box-shadow: 2px 2px 5px #AAAAAA;\n}\n\ng[data-mml-node=\"maction\"][data-toggle] {\n  cursor: pointer;\n}\n\nmjx-status {\n  display: block;\n  position: fixed;\n  left: 1em;\n  bottom: 1em;\n  min-width: 25%;\n  padding: .2em .4em;\n  border: 1px solid #888;\n  font-size: 90%;\n  background-color: #F8F8F8;\n  color: black;\n}\n\nforeignObject[data-mjx-xml] {\n  font-family: initial;\n  line-height: normal;\n  overflow: visible;\n}\n\nmjx-container[jax=\"SVG\"] path[data-c], mjx-container[jax=\"SVG\"] use[data-c] {\n  stroke-width: 3;\n}",{"id":704,"title":705,"titles":706,"content":707,"level":9,"kind":10,"priority":9},"\u002Fdocs\u002Fproofs\u002Fservice-proofs","Service Proofs as Edge Attributes",[],"How service proofs verify completed transactions and feed into edge weights through proof_factor and quality. Service proofs verify that a transaction has been successfully completed between a buyer and a provider. In the Local Protocol, these proofs can take the form of pin exchanges, location proofs, or other evidence of service completion. Service proofs enhance the reliability of the transaction graph, ensuring that rewards are allocated for users performing real transactions and not fake transactions. When available, service proofs can be integrated into the graph value calculation, increasing the weight of the corresponding edge for the transaction, making it more valuable to the network.",{"id":709,"title":710,"titles":711,"content":712,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fproofs\u002Fservice-proofs#how-service-proofs-affect-diffusion-and-incentives","How service proofs affect diffusion and incentives",[705],"Each directed edge  can have a weight: Service proofs primarily affect: : stronger evidence of completion increases the effective edge weight.: dispute outcomes, refunds, or chargebacks can decrease the effective weight. Because diffusion follows outgoing edges proportional to weights, increasing  (or ) increases how much trust\u002Finfluence can flow through that interaction in snapshot-relative diffusion.",{"id":714,"title":426,"titles":715,"content":716,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fproofs\u002Fservice-proofs#key-concepts",[705],"Transaction Verification: Confirms that services have been provided as agreed.Graph Integration: Boosts graph value, aligning rewards with verifiable transactions.",{"id":718,"title":179,"titles":719,"content":720,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fproofs\u002Fservice-proofs#next-steps",[705],"Next, see how the protocol models confidence-weighted evidence: Proofs as Probabilities mjx-container[jax=\"SVG\"] {\n  direction: ltr;\n}\n\nmjx-container[jax=\"SVG\"] > svg {\n  overflow: visible;\n  min-height: 1px;\n  min-width: 1px;\n}\n\nmjx-container[jax=\"SVG\"] > svg a {\n  fill: blue;\n  stroke: blue;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"] {\n  display: block;\n  text-align: center;\n  margin: 1em 0;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"][width=\"full\"] {\n  display: flex;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"left\"] {\n  text-align: left;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"right\"] {\n  text-align: right;\n}\n\ng[data-mml-node=\"merror\"] > g {\n  fill: red;\n  stroke: red;\n}\n\ng[data-mml-node=\"merror\"] > rect[data-background] {\n  fill: yellow;\n  stroke: none;\n}\n\ng[data-mml-node=\"mtable\"] > line[data-line], svg[data-table] > g > line[data-line] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > rect[data-frame], svg[data-table] > g > rect[data-frame] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dashed, svg[data-table] > g > .mjx-dashed {\n  stroke-dasharray: 140;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dotted, svg[data-table] > g > .mjx-dotted {\n  stroke-linecap: round;\n  stroke-dasharray: 0,140;\n}\n\ng[data-mml-node=\"mtable\"] > g > svg {\n  overflow: visible;\n}\n\n[jax=\"SVG\"] mjx-tool {\n  display: inline-block;\n  position: relative;\n  width: 0;\n  height: 0;\n}\n\n[jax=\"SVG\"] mjx-tool > mjx-tip {\n  position: absolute;\n  top: 0;\n  left: 0;\n}\n\nmjx-tool > mjx-tip {\n  display: inline-block;\n  padding: .2em;\n  border: 1px solid #888;\n  font-size: 70%;\n  background-color: #F8F8F8;\n  color: black;\n  box-shadow: 2px 2px 5px #AAAAAA;\n}\n\ng[data-mml-node=\"maction\"][data-toggle] {\n  cursor: pointer;\n}\n\nmjx-status {\n  display: block;\n  position: fixed;\n  left: 1em;\n  bottom: 1em;\n  min-width: 25%;\n  padding: .2em .4em;\n  border: 1px solid #888;\n  font-size: 90%;\n  background-color: #F8F8F8;\n  color: black;\n}\n\nforeignObject[data-mjx-xml] {\n  font-family: initial;\n  line-height: normal;\n  overflow: visible;\n}\n\nmjx-container[jax=\"SVG\"] path[data-c], mjx-container[jax=\"SVG\"] use[data-c] {\n  stroke-width: 3;\n}",{"id":722,"title":723,"titles":724,"content":725,"level":9,"kind":10,"priority":9},"\u002Fdocs\u002Fsecurity\u002Fgraph-value","Graph Value",[],"The protocol's epoch-based economic evaluation surface aggregating ledger facts and diffusion influence to drive incentives. Graph Value is the protocol’s epoch-based “economic evaluation surface.” It aggregates ledger facts (executed activity) and snapshot-relative interpretations (diffusion influence) to drive incentives.",{"id":727,"title":728,"titles":729,"content":730,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fsecurity\u002Fgraph-value#introduction-to-graph-value","Introduction to Graph Value",[723],"In Local Protocol, Graph Value measures both economic activity and network influence for each participant, but it updates once per epoch (not continuously per transaction). Diffusion influence is defined over the committed snapshot for that epoch and can be consumed through bounded claims.",{"id":732,"title":305,"titles":733,"content":734,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fsecurity\u002Fgraph-value#components",[723],"For participant  during epoch : : transaction volume (ledger fact; aggregated from executed edges): diffusion influence on snapshot  in market context  (snapshot-relative; not a ledger fact): reputation score (disputes, proofs, completion history)",{"id":736,"title":737,"titles":738,"content":739,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fsecurity\u002Fgraph-value#epoch-update-rule","Epoch update rule",[723],"Graph Value is updated once per epoch: Where: is a smoothing factor are policy weightsnorm denotes protocol-defined normalization and clipping",{"id":741,"title":742,"titles":743,"content":744,"level":52,"kind":10,"priority":9},"\u002Fdocs\u002Fsecurity\u002Fgraph-value#how-is-consumed","How  is consumed",[723,737],"The protocol consumes diffusion through accepted optimistic claims and bounded epoch-level accounting: diffusion appears in the system through accepted optimistic claims and bounded epoch-level accountinglarge or high-impact claims can be subjected to stronger sampling and higher bonds",{"id":746,"title":747,"titles":748,"content":749,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fsecurity\u002Fgraph-value#per-transaction-reward-claim-sketch","Per-transaction reward claim (sketch)",[723],"For a transaction  with amount , define a base reward: and a diffusion-based multiplier: Then the user-claimed reward is: Where  and  are Monte Carlo estimators of market-relative diffusion scores on the committed snapshot. The estimator is protocol-defined and must be transcript-verifiable.",{"id":751,"title":70,"titles":752,"content":753,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fsecurity\u002Fgraph-value#related",[723],"Snapshot-Relative DiffusionOptimistic Diffusion Claims mjx-container[jax=\"SVG\"] {\n  direction: ltr;\n}\n\nmjx-container[jax=\"SVG\"] > svg {\n  overflow: visible;\n  min-height: 1px;\n  min-width: 1px;\n}\n\nmjx-container[jax=\"SVG\"] > svg a {\n  fill: blue;\n  stroke: blue;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"] {\n  display: block;\n  text-align: center;\n  margin: 1em 0;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"][width=\"full\"] {\n  display: flex;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"left\"] {\n  text-align: left;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"right\"] {\n  text-align: right;\n}\n\ng[data-mml-node=\"merror\"] > g {\n  fill: red;\n  stroke: red;\n}\n\ng[data-mml-node=\"merror\"] > rect[data-background] {\n  fill: yellow;\n  stroke: none;\n}\n\ng[data-mml-node=\"mtable\"] > line[data-line], svg[data-table] > g > line[data-line] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > rect[data-frame], svg[data-table] > g > rect[data-frame] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dashed, svg[data-table] > g > .mjx-dashed {\n  stroke-dasharray: 140;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dotted, svg[data-table] > g > .mjx-dotted {\n  stroke-linecap: round;\n  stroke-dasharray: 0,140;\n}\n\ng[data-mml-node=\"mtable\"] > g > svg {\n  overflow: visible;\n}\n\n[jax=\"SVG\"] mjx-tool {\n  display: inline-block;\n  position: relative;\n  width: 0;\n  height: 0;\n}\n\n[jax=\"SVG\"] mjx-tool > mjx-tip {\n  position: absolute;\n  top: 0;\n  left: 0;\n}\n\nmjx-tool > mjx-tip {\n  display: inline-block;\n  padding: .2em;\n  border: 1px solid #888;\n  font-size: 70%;\n  background-color: #F8F8F8;\n  color: black;\n  box-shadow: 2px 2px 5px #AAAAAA;\n}\n\ng[data-mml-node=\"maction\"][data-toggle] {\n  cursor: pointer;\n}\n\nmjx-status {\n  display: block;\n  position: fixed;\n  left: 1em;\n  bottom: 1em;\n  min-width: 25%;\n  padding: .2em .4em;\n  border: 1px solid #888;\n  font-size: 90%;\n  background-color: #F8F8F8;\n  color: black;\n}\n\nforeignObject[data-mjx-xml] {\n  font-family: initial;\n  line-height: normal;\n  overflow: visible;\n}\n\nmjx-container[jax=\"SVG\"] path[data-c], mjx-container[jax=\"SVG\"] use[data-c] {\n  stroke-width: 3;\n}",{"id":755,"title":756,"titles":757,"content":758,"level":9,"kind":10,"priority":9},"\u002Fdocs\u002Fsecurity","Security in Local Protocol",[],"How Local Protocol achieves security through graph structure and cryptoeconomic incentives. Security within Local Protocol is achieved through a combination of graph structure and cryptoeconomic incentives: diffusion influence is anchored in protocol-defined verified seeds (Sybil isolation),diffusion-derived outputs are bounded and fraud-proofable (optimistic verification),dishonesty is deterred with bonds + slashing under canonical randomness. Local Protocol also accounts for incentive-system manipulation surfaces: rent-to-control market relevance: if influence or market budgets can be cheaply rented (via bribery\u002Fvote-buying or short-lived capital), actors may rationally purchase control rather than build real commerce. Mitigations include market caps, per-address seed caps, concave capital weighting, anchor lockups, delayed sampling, and mandatory audits with slashable attestations. See: Markets.",{"id":760,"title":179,"titles":761,"content":762,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fsecurity#next-steps",[756],"If you haven’t read the core model yet: Snapshot-Relative DiffusionGraph Commitments & Epoch SnapshotsOptimistic Diffusion Claims Then continue here: Graph ValueSybil Resistance",{"id":764,"title":765,"titles":766,"content":767,"level":9,"kind":10,"priority":9},"\u002Fdocs\u002Fsecurity\u002Foverview","Security Overview",[],"Introduction to Local Protocol's security model, rooted in graph structure and cryptoeconomic incentives. Local Protocol’s security model is rooted in graph structure and cryptoeconomic incentives. This section introduces the core mechanisms and how they fit together.",{"id":769,"title":179,"titles":770,"content":771,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fsecurity\u002Foverview#next-steps",[765],"Graph ValueSybil Resistance",{"id":773,"title":774,"titles":775,"content":776,"level":9,"kind":10,"priority":9},"\u002Fdocs\u002Fsecurity\u002Fsybil-resistance","Sybil Resistance",[],"How Local Protocol prevents fake-identity manipulation via snapshot-relative diffusion anchored in a verified teleport set. Sybil resistance is a core security goal: prevent an attacker from creating many fake identities to manipulate incentives. Local Protocol achieves this primarily through snapshot-relative diffusion anchored in a protocol-defined verified teleport set, and by constraining diffusion-derived rewards through bounded, challengeable claims.",{"id":778,"title":426,"titles":779,"content":780,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fsecurity\u002Fsybil-resistance#key-concepts",[774],"Anchored influence (market-relative): diffusion restarts from a protocol-defined, per-market teleport distribution  supported on verified anchors for market . Weakly connected Sybil regions receive little mass within that market context.Connectivity over volume: fake transactions tend to remain within the attacker’s region; without strong attachment to verified anchors, they don’t buy meaningful influence.Economic deterrence: diffusion-derived rewards are claimed under caps and can be challenged; dishonest inflation is deterred via bonds and slashing.",{"id":782,"title":179,"titles":783,"content":784,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Fsecurity\u002Fsybil-resistance#next-steps",[774],"Snapshot-Relative DiffusionOptimistic Diffusion ClaimsArchitecture Overview mjx-container[jax=\"SVG\"] {\n  direction: ltr;\n}\n\nmjx-container[jax=\"SVG\"] > svg {\n  overflow: visible;\n  min-height: 1px;\n  min-width: 1px;\n}\n\nmjx-container[jax=\"SVG\"] > svg a {\n  fill: blue;\n  stroke: blue;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"] {\n  display: block;\n  text-align: center;\n  margin: 1em 0;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"][width=\"full\"] {\n  display: flex;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"left\"] {\n  text-align: left;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"right\"] {\n  text-align: right;\n}\n\ng[data-mml-node=\"merror\"] > g {\n  fill: red;\n  stroke: red;\n}\n\ng[data-mml-node=\"merror\"] > rect[data-background] {\n  fill: yellow;\n  stroke: none;\n}\n\ng[data-mml-node=\"mtable\"] > line[data-line], svg[data-table] > g > line[data-line] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > rect[data-frame], svg[data-table] > g > rect[data-frame] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dashed, svg[data-table] > g > .mjx-dashed {\n  stroke-dasharray: 140;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dotted, svg[data-table] > g > .mjx-dotted {\n  stroke-linecap: round;\n  stroke-dasharray: 0,140;\n}\n\ng[data-mml-node=\"mtable\"] > g > svg {\n  overflow: visible;\n}\n\n[jax=\"SVG\"] mjx-tool {\n  display: inline-block;\n  position: relative;\n  width: 0;\n  height: 0;\n}\n\n[jax=\"SVG\"] mjx-tool > mjx-tip {\n  position: absolute;\n  top: 0;\n  left: 0;\n}\n\nmjx-tool > mjx-tip {\n  display: inline-block;\n  padding: .2em;\n  border: 1px solid #888;\n  font-size: 70%;\n  background-color: #F8F8F8;\n  color: black;\n  box-shadow: 2px 2px 5px #AAAAAA;\n}\n\ng[data-mml-node=\"maction\"][data-toggle] {\n  cursor: pointer;\n}\n\nmjx-status {\n  display: block;\n  position: fixed;\n  left: 1em;\n  bottom: 1em;\n  min-width: 25%;\n  padding: .2em .4em;\n  border: 1px solid #888;\n  font-size: 90%;\n  background-color: #F8F8F8;\n  color: black;\n}\n\nforeignObject[data-mjx-xml] {\n  font-family: initial;\n  line-height: normal;\n  overflow: visible;\n}\n\nmjx-container[jax=\"SVG\"] path[data-c], mjx-container[jax=\"SVG\"] use[data-c] {\n  stroke-width: 3;\n}",{"id":786,"title":787,"titles":788,"content":789,"level":9,"kind":10,"priority":9},"\u002Fdocs\u002Ftrust","Trust in Local Protocol",[],"An overview of how Local Protocol replaces intermediary trust with a crypto-economic game that propagates trust through local graphs. Local Protocol unlocks a new design space where peers across a variety of commercial settings can transact without the need to pay an intermediary. The network uses a crypto-economic game that replaces the trust one would otherwise place in an intermediary. Users are incentivized to complete transactions with a large number of counter-parties to maximize their block reward in their next transaction. The protocol propagates trust assumptions through local graphs where the strength of the trust assumptions diminish over longer paths from trusted centers. This mechanism creates a scalable network where self-interested actors participate in a complex multi-agent process to create the network's security guarantee.",{"id":791,"title":179,"titles":792,"content":793,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Ftrust#next-steps",[787],"In the following sections, we will explore how trust assumptions work, how trust propagates through networks, and how malicious actors can be slashed for failing to provide proofs in networks where proofs are expected.",{"id":795,"title":796,"titles":797,"content":798,"level":9,"kind":10,"priority":9},"\u002Fdocs\u002Ftrust\u002Foverview","Trust Overview",[],"Trust in Local Protocol is derived from transaction history and graph connectivity, with mechanisms to propagate and penalize trust assumptions over time. Trust in Local Protocol is derived from transaction history and graph connectivity, with mechanisms to propagate (and penalize) trust assumptions over time.",{"id":800,"title":179,"titles":801,"content":802,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Ftrust\u002Foverview#next-steps",[796],"Trust PropagationSampling & SlashingSelf-Policing",{"id":804,"title":805,"titles":806,"content":807,"level":9,"kind":10,"priority":9},"\u002Fdocs\u002Ftrust\u002Fpropagation","Trust Propagation",[],"How trust spreads across the Local Protocol network based on transaction history and graph connectivity, diminishing over longer paths from trusted sources. Trust propagation in the Local Protocol allows trust to spread across the network based on transaction history and graph connectivity. The concept ensures that trust diminishes gradually as it travels further from a trusted source node, enabling the protocol to assess participant reliability over time. This mechanism helps the network establish broader trust networks, making it harder for malicious actors to gain undue influence without genuine connectivity. See: The Transaction Graph and Snapshot-Relative Diffusion.",{"id":809,"title":426,"titles":810,"content":811,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Ftrust\u002Fpropagation#key-concepts",[805],"Decaying Trust: Trust assumptions weaken over longer paths from the source.Network-Wide Impact: Trust spreads through the transaction graph, enhancing overall reliability.",{"id":813,"title":814,"titles":815,"content":816,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Ftrust\u002Fpropagation#trust-under-snapshot-relative-diffusion","Trust under snapshot-relative diffusion",[805],"Under diffusion, proofs inject trust in protocol-defined ways: Seed mass (teleport) updates: proofs can increase  (or inclusion in the seed set) for verified identities\u002Fdomains, in market context .Edge weight adjustments: service proofs and dispute outcomes modify edge weights via proof_factor and quality. See: Service Proofs and Dispute Resolution & Collateral. The effect of a proof naturally diminishes with path length: in a restarted random walk, influence along length- paths is damped by roughly . You can visualize the network as a series of concentric circles centered around the node or edge that incorporated a proof. The nodes directly connected form the first circle; these are the immediate neighbors who have direct interactions with the proof-bearing node or transaction. The second circle consists of nodes connected to those immediate neighbors, which are two steps away, and so on. The influence of the proof is strongest at the center and decreases as you move outward. Nodes that transact with those who submit strong proofs benefit more than they would have otherwise. This produces positive security externalities: when self-interested actors invest in verifiability, the network becomes more trustworthy and rewards become more robust.",{"id":818,"title":179,"titles":819,"content":820,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Ftrust\u002Fpropagation#next-steps",[805],"In the next section, we will examine Sampling & Slashing, the mechanism used to verify bounded claims and penalize dishonest behavior. mjx-container[jax=\"SVG\"] {\n  direction: ltr;\n}\n\nmjx-container[jax=\"SVG\"] > svg {\n  overflow: visible;\n  min-height: 1px;\n  min-width: 1px;\n}\n\nmjx-container[jax=\"SVG\"] > svg a {\n  fill: blue;\n  stroke: blue;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"] {\n  display: block;\n  text-align: center;\n  margin: 1em 0;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"][width=\"full\"] {\n  display: flex;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"left\"] {\n  text-align: left;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"right\"] {\n  text-align: right;\n}\n\ng[data-mml-node=\"merror\"] > g {\n  fill: red;\n  stroke: red;\n}\n\ng[data-mml-node=\"merror\"] > rect[data-background] {\n  fill: yellow;\n  stroke: none;\n}\n\ng[data-mml-node=\"mtable\"] > line[data-line], svg[data-table] > g > line[data-line] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > rect[data-frame], svg[data-table] > g > rect[data-frame] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dashed, svg[data-table] > g > .mjx-dashed {\n  stroke-dasharray: 140;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dotted, svg[data-table] > g > .mjx-dotted {\n  stroke-linecap: round;\n  stroke-dasharray: 0,140;\n}\n\ng[data-mml-node=\"mtable\"] > g > svg {\n  overflow: visible;\n}\n\n[jax=\"SVG\"] mjx-tool {\n  display: inline-block;\n  position: relative;\n  width: 0;\n  height: 0;\n}\n\n[jax=\"SVG\"] mjx-tool > mjx-tip {\n  position: absolute;\n  top: 0;\n  left: 0;\n}\n\nmjx-tool > mjx-tip {\n  display: inline-block;\n  padding: .2em;\n  border: 1px solid #888;\n  font-size: 70%;\n  background-color: #F8F8F8;\n  color: black;\n  box-shadow: 2px 2px 5px #AAAAAA;\n}\n\ng[data-mml-node=\"maction\"][data-toggle] {\n  cursor: pointer;\n}\n\nmjx-status {\n  display: block;\n  position: fixed;\n  left: 1em;\n  bottom: 1em;\n  min-width: 25%;\n  padding: .2em .4em;\n  border: 1px solid #888;\n  font-size: 90%;\n  background-color: #F8F8F8;\n  color: black;\n}\n\nforeignObject[data-mjx-xml] {\n  font-family: initial;\n  line-height: normal;\n  overflow: visible;\n}\n\nmjx-container[jax=\"SVG\"] path[data-c], mjx-container[jax=\"SVG\"] use[data-c] {\n  stroke-width: 3;\n}",{"id":822,"title":823,"titles":824,"content":825,"level":9,"kind":10,"priority":9},"\u002Fdocs\u002Ftrust\u002Fsampling-slashing","Sampling & Slashing",[],"How Local Protocol verifies diffusion-derived economic outputs through sampling and deters dishonesty through bond slashing. Local Protocol verifies diffusion-derived economic outputs through sampling and deters dishonesty through slashing. Participants submit bounded, optimistic claims with transcripts; verifiers check sampled openings against committed snapshot roots.",{"id":827,"title":426,"titles":828,"content":829,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Ftrust\u002Fsampling-slashing#key-concepts",[823],"Probabilistic verification: only a bounded number of transcript walks are checked.Canonical randomness: removes prover choice (prevents grinding).Penalization: invalid openings cause bond slashing and claim rejection. In high-volume markets, audits are treated as an obligated validator duty (not a volunteer challenger market) to avoid audit starvation and free-riding.See: Validator Audits & Penalties",{"id":831,"title":832,"titles":833,"content":834,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Ftrust\u002Fsampling-slashing#canonical-randomness-and-delayed-sampling","Canonical randomness and delayed sampling",[823],"For a transaction id txid in epoch , the prover’s transcript randomness is derived from . Sampling indices used for challenges are derived from future randomness (e.g., ) so the prover cannot adaptively craft transcripts that only satisfy the checked parts.",{"id":836,"title":837,"titles":838,"content":839,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Ftrust\u002Fsampling-slashing#what-gets-slashed","What gets slashed",[823],"Claims include a bond . If any sampled transcript opening fails verification, the protocol: rejects or reverts the claim outputslashes the bond  (and any additional penalties defined by policy) This makes dishonest inflation negative expected value under appropriate parameter selection.",{"id":841,"title":842,"titles":843,"content":844,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Ftrust\u002Fsampling-slashing#where-the-details-live","Where the details live",[823],"The precise transcript format and verifier checks are defined by the claim protocol: Optimistic Diffusion ClaimsGraph Commitments & Epoch Snapshots",{"id":846,"title":179,"titles":847,"content":848,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Ftrust\u002Fsampling-slashing#next-steps",[823],"The next topic, Self-Policing, will explore how these incentives shape counterparty selection and discourage transacting with dishonest regions. mjx-container[jax=\"SVG\"] {\n  direction: ltr;\n}\n\nmjx-container[jax=\"SVG\"] > svg {\n  overflow: visible;\n  min-height: 1px;\n  min-width: 1px;\n}\n\nmjx-container[jax=\"SVG\"] > svg a {\n  fill: blue;\n  stroke: blue;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"] {\n  display: block;\n  text-align: center;\n  margin: 1em 0;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"][width=\"full\"] {\n  display: flex;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"left\"] {\n  text-align: left;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"right\"] {\n  text-align: right;\n}\n\ng[data-mml-node=\"merror\"] > g {\n  fill: red;\n  stroke: red;\n}\n\ng[data-mml-node=\"merror\"] > rect[data-background] {\n  fill: yellow;\n  stroke: none;\n}\n\ng[data-mml-node=\"mtable\"] > line[data-line], svg[data-table] > g > line[data-line] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > rect[data-frame], svg[data-table] > g > rect[data-frame] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dashed, svg[data-table] > g > .mjx-dashed {\n  stroke-dasharray: 140;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dotted, svg[data-table] > g > .mjx-dotted {\n  stroke-linecap: round;\n  stroke-dasharray: 0,140;\n}\n\ng[data-mml-node=\"mtable\"] > g > svg {\n  overflow: visible;\n}\n\n[jax=\"SVG\"] mjx-tool {\n  display: inline-block;\n  position: relative;\n  width: 0;\n  height: 0;\n}\n\n[jax=\"SVG\"] mjx-tool > mjx-tip {\n  position: absolute;\n  top: 0;\n  left: 0;\n}\n\nmjx-tool > mjx-tip {\n  display: inline-block;\n  padding: .2em;\n  border: 1px solid #888;\n  font-size: 70%;\n  background-color: #F8F8F8;\n  color: black;\n  box-shadow: 2px 2px 5px #AAAAAA;\n}\n\ng[data-mml-node=\"maction\"][data-toggle] {\n  cursor: pointer;\n}\n\nmjx-status {\n  display: block;\n  position: fixed;\n  left: 1em;\n  bottom: 1em;\n  min-width: 25%;\n  padding: .2em .4em;\n  border: 1px solid #888;\n  font-size: 90%;\n  background-color: #F8F8F8;\n  color: black;\n}\n\nforeignObject[data-mjx-xml] {\n  font-family: initial;\n  line-height: normal;\n  overflow: visible;\n}\n\nmjx-container[jax=\"SVG\"] path[data-c], mjx-container[jax=\"SVG\"] use[data-c] {\n  stroke-width: 3;\n}",{"id":850,"title":851,"titles":852,"content":853,"level":9,"kind":10,"priority":9},"\u002Fdocs\u002Ftrust\u002Fself-policing","A Self-Policing Network",[],"How incentive alignment leads participants to avoid dishonest regions of the graph, creating a self-policing network. Participants prefer to transact with counterparties that are well connected to verified regions of the graph, because doing so increases their expected future rewards and reduces the risk of interacting with dishonest claimants. The crucial point is incentive alignment: transacting with dishonest regions tends to reduce your expected payouts (via reputation, dispute outcomes, and heightened verification\u002Fbond requirements), creating a self-policing network.",{"id":855,"title":856,"titles":857,"content":858,"level":16,"kind":10,"priority":9},"\u002Fdocs\u002Ftrust\u002Fself-policing#why-this-emerges-under-optimistic-claims","Why this emerges under optimistic claims",[851],"Under optimistic diffusion claims: dishonest inflation can be challenged and punished via bond slashingdisputed or low-quality interactions reduce edge weights () and future eligibilitypolicies can require higher bonds or stricter sampling for higher-risk regions As a consequence, honest users learn to avoid transacting with nodes that are weakly connected to verified anchors or that frequently trigger disputes\u002Fchallenges. This creates a self-reinforcing dynamic where honest regions deepen connectivity, while dishonest regions remain isolated and unprofitable. The self-policing nature of the network not only maintains security but also reduces the costs associated with identifying malicious actors. The possibility of being challenged (and losing a bond) discourages dishonest behavior, while honest behavior compounds through connectivity and reputation. mjx-container[jax=\"SVG\"] {\n  direction: ltr;\n}\n\nmjx-container[jax=\"SVG\"] > svg {\n  overflow: visible;\n  min-height: 1px;\n  min-width: 1px;\n}\n\nmjx-container[jax=\"SVG\"] > svg a {\n  fill: blue;\n  stroke: blue;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"] {\n  display: block;\n  text-align: center;\n  margin: 1em 0;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"][width=\"full\"] {\n  display: flex;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"left\"] {\n  text-align: left;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"right\"] {\n  text-align: right;\n}\n\ng[data-mml-node=\"merror\"] > g {\n  fill: red;\n  stroke: red;\n}\n\ng[data-mml-node=\"merror\"] > rect[data-background] {\n  fill: yellow;\n  stroke: none;\n}\n\ng[data-mml-node=\"mtable\"] > line[data-line], svg[data-table] > g > line[data-line] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > rect[data-frame], svg[data-table] > g > rect[data-frame] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dashed, svg[data-table] > g > .mjx-dashed {\n  stroke-dasharray: 140;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dotted, svg[data-table] > g > .mjx-dotted {\n  stroke-linecap: round;\n  stroke-dasharray: 0,140;\n}\n\ng[data-mml-node=\"mtable\"] > g > svg {\n  overflow: visible;\n}\n\n[jax=\"SVG\"] mjx-tool {\n  display: inline-block;\n  position: relative;\n  width: 0;\n  height: 0;\n}\n\n[jax=\"SVG\"] mjx-tool > mjx-tip {\n  position: absolute;\n  top: 0;\n  left: 0;\n}\n\nmjx-tool > mjx-tip {\n  display: inline-block;\n  padding: .2em;\n  border: 1px solid #888;\n  font-size: 70%;\n  background-color: #F8F8F8;\n  color: black;\n  box-shadow: 2px 2px 5px #AAAAAA;\n}\n\ng[data-mml-node=\"maction\"][data-toggle] {\n  cursor: pointer;\n}\n\nmjx-status {\n  display: block;\n  position: fixed;\n  left: 1em;\n  bottom: 1em;\n  min-width: 25%;\n  padding: .2em .4em;\n  border: 1px solid #888;\n  font-size: 90%;\n  background-color: #F8F8F8;\n  color: black;\n}\n\nforeignObject[data-mjx-xml] {\n  font-family: initial;\n  line-height: normal;\n  overflow: visible;\n}\n\nmjx-container[jax=\"SVG\"] path[data-c], mjx-container[jax=\"SVG\"] use[data-c] {\n  stroke-width: 3;\n}",{"id":860,"title":861,"titles":862,"content":863,"level":9,"kind":864,"priority":9},"\u002Fblog\u002Fpage-rank","PageRank and Token Design",[],"Applying PageRank's eigenvector-centrality principles to token distribution — modeling commercial networks as bipartite graphs that align incentives with network growth. In this post, I propose a novel token design strategy that draws inspiration from one of the most successful algorithms in the history of the internet: PageRank. PageRank is an Eigenvector-based algorithm that focuses on centrality which is a fundamental measure in network theory that quantifies the importance or influence of a node within a network. Eigenvector-based algorithms are well-suited to capture the quality and impact of a node's position in a network's topology, and are therefore a great method to distribute tokens in complex networks.","Blog",{"id":866,"title":867,"titles":868,"content":869,"level":16,"kind":864,"priority":9},"\u002Fblog\u002Fpage-rank#intro-to-pagerank","Intro to PageRank",[861],"At its core, PageRank revolutionized the way we navigate the web by recognizing that not all links are created equal. A link from a highly influential page carries more weight than one from an obscure corner of the internet. This insight led to a recursive evaluation of importance, creating a robust ranking system that serves as the engine to perhaps the best business model in the last half-century. This same principle – the notion of recursive influence – holds the key to designing optimal token distributions in complex cryptonetworks. By using centrality ranks as a foundation for token allocations, we can create a dynamical, self-optimizing network that: Naturally aligns incentives with network growthResists manipulation and Sybil attacksDynamically adapts to evolving market conditionsImplicitly reward behaviors that strengthen network effects",{"id":871,"title":872,"titles":873,"content":874,"level":16,"kind":864,"priority":9},"\u002Fblog\u002Fpage-rank#the-basic-idea","The Basic Idea",[861],"Any commercial network can be modeled as a bipartite graph that captures the economic relationships between producers and buyers, with edge weights signifying the historical transactions between the two nodes. By modeling the network as a graph, we can design an economic system that dynamically adjusts token incentives based on the revealed preferences and pricing power of the participants. The token rewards can be determined using a modified eigenvector centrality measure, which takes into account both the revenue generated by each node and its centrality in the network. This technique quantifies an individual node's contribution to the current state of the network, considering its economic impact and its role in facilitating transactions between other nodes. The network can leverage the graph's structural properties to implement a token allocation mechanism that optimizes the distribution of rewards based on the temporal and economic characteristics of the transacting agents in the multi-sided market. A simple definition of the graph can be  representing producers  and buyers  as nodes, with weighted edges  capturing transactions between them. Edge weights  track the producer's  transactions with the buyer . With this graph we can optimize against a universal objective function: maximizing total number of transactionsmaximizing total fees transactedmaximizing connectivity of the entire network This single model contains the following properties: The network naturally evolves towards optimal structures for value creationEarly adopters and key contributors are rewarded proportional to their influence in sub-networksThe system becomes increasingly resistant to manipulation as it growsProvides the ability to propagate trust and reputationThe network can naturally adapt to optimize rewards across various stages of network maturityThe split between supply and demand can self-optimize as the network learns the pricing power of the transacting parties",{"id":876,"title":877,"titles":878,"content":879,"level":16,"kind":864,"priority":9},"\u002Fblog\u002Fpage-rank#beyond-simple-incentives","Beyond Simple Incentives",[861],"Traditional approaches to token design might allocate tokens based on transaction volume, geography, predefined roles within a network, referrals etc. While these methods do drive certain behaviors, they fall short in maximally aligning incentives within a complex, interconnected network. Centrality-based designs unlock a more nuanced, precise, and adaptive approach - recognizing that value in a network is not about individual actions, but a web of relationships and influence.",{"id":881,"title":882,"titles":883,"content":884,"level":52,"kind":864,"priority":9},"\u002Fblog\u002Fpage-rank#network-maturity-and-early-adopter-rewards","Network Maturity and Early Adopter Rewards",[861,877],"Many DePINs mint tokens based on a simple exponential decay model. Mining block rewards generates a large number of tokens per unit of work early as a bootstrapping incentive. Over time, rewards rapidly decrease. This design has been successful at bootstrapping supply but today's DePIN's have a huge demand problem, leading to imbalanced services, potential token supply issues, and ultimately supply-side churn due to diminishing returns as the network matures. By modeling a network as a graph, we can design incentives that are adaptive and dynamical such that we maximize the overall utility to all users across the network's adoption lifecycle. Token rewards can scale gracefully based on the state of the graph and can be recursively re-balanced with consumer demand, creating a system that successfully bootstraps the network without creating undue harm to the treasury or future earning potential of suppliers. By optimizing for connectivity in immature markets, EC maintains a healthy balance between growing supply and demand. A distribution mechanism can look like this: where the value created from a net new transaction creates a block reward that can be redistributed to any number of currently active nodes on either the demand or supply side of the network, depending on the economic properties of this graph.",{"id":886,"title":887,"titles":888,"content":889,"level":52,"kind":864,"priority":9},"\u002Fblog\u002Fpage-rank#sybil-resistance-verifiability-and-security","Sybil Resistance, Verifiability, and Security",[861,877],"As a network matures, connectivity becomes increasingly difficult and expensive to manufacture, making eigenvector-centrality an effective sybil resistance mechanism. Producers aiming to increase their influence must generate real transactions with genuine buyers who also interact with other producers. If PageRank views centrality as a measure of recursive influence, we can view it as a measure of recursive trust.",{"id":891,"title":892,"titles":893,"content":894,"level":278,"kind":864,"priority":9},"\u002Fblog\u002Fpage-rank#the-island-effect","The Island Effect",[861,877,887],"When a malicious actor attempts to create fake transactions, they form isolated clusters or \"islands\" within the network. \"Islands\" have limited connectivity to the rest of the network and are expensive to create. Legitimate users are unlikely to engage with them. Consequently, malicious nodes exhibit low EC scores, as they lack the strong, organic connections to the rest of the network. This island effect makes it difficult for attackers to artificially inflate their influence or rewards, as EC inherently favors nodes with high-quality, real connections.",{"id":896,"title":897,"titles":898,"content":899,"level":278,"kind":864,"priority":9},"\u002Fblog\u002Fpage-rank#propagation-of-trust","Propagation of Trust",[861,877,887],"In the absence of robust service-proofs to verify the legitimacy of transactions, a network becomes vulnerable to various game-theoretic challenges, including self-dealing and collusion risks. As we explored the design space for real-world service-proofs, we identified a number of possible verification strategies for last-mile delivery networks. Specifically, a combination of location-proofs, randomized pin exchanges with drivers, and random driver assignment together provide a robust proof-of-delivery mechanism for the current state of delivery networks. This double-blind system ensures that neither the provider nor the customer can confidently predict or influence the matching process. If the provider and customer are known to be unique, cannot systematically predict the assignment of the third colluding party, and all three parties require cooperation to submit a valid service-proof then there is extremely low collusion risk in mature markets. However, even in the case of mobile food ordering, the majority of all orders are still pick up orders. Pick-up orders and in-store dining are much more difficult to verify. Because restaurants do not sell a commodity, provider assignment cannot be randomized. This makes it easy for a set of two cooperating attackers to collude and earn a block reward without doing the work required to justify the reward (in this case producing the food for the buyer). We could use a similar location-proof to verify that both parties are in the same location at the time of the transaction, but even if the customer is in the store of the restaurant, it is impossible to have a robust proof-of-work mechanism that verifies (with high confidence) that the service was performed.",{"id":901,"title":902,"titles":903,"content":904,"level":278,"kind":864,"priority":9},"\u002Fblog\u002Fpage-rank#a-spectrum-of-verifiability","A Spectrum of Verifiability",[861,877,887],"As described above, in the context of a peer-to-peer restaurant food delivery network, there are varying levels of verifiability across the two primary supported transaction types (pickup and delivery). This spectrum of verifiability presents a significant hurdle for the mass adoption of decentralized physical infrastructure services. Typical work-arounds either require a trusted third-party, expensive service proofs, or strict permissions \u002F registration to participate. These restrictions are all limitations that limit the design space available to build truly robust, sustainable, and decentralized networks at a global scale. Quadrant I: Easy to Create (weak-guarantee) and Cheap\nSimple randomized pin exchanges: Users and drivers exchange simple PINs to verify or mutually attest to service completion. Quadrant II: Easy to Create (weak-guarantee) and Expensive\nBasic location sharing: Sharing the user's location through GPS, which can be easily manipulated but is straightforward to implement. Quadrant III: Hard to Create (strong-guarantee) and Cheap\nOn-chain Reputation-based systems: take a long time to develop but can be cheap and robust at scale. Quadrant IV: Hard to Create (strong-guarantee) and Expensive\nAdvanced location proofs: ZkTLS with cell tower or trusted hardware. Either computationally expensive or requires hardware. Networks trying to bootstrap adoption often face challenges when relying on verification methods that fall into Quadrant IV (Hard to Create and Expensive). These methods, while robust, can hinder growth due to their complexity and cost. Conversely, using methods from Quadrant I (Easy to Create and Cheap) may lead to increased vulnerability to attacks such as self-dealing and collusion. Eigenvector Centrality (EC) rankings can help mitigate issues in each of these networks by propagating trust assumptions through the graph. In networks with weak or expensive service proofs, EC rankings become particularly valuable. The underlying assumption is that collusion becomes increasingly difficult as the number of colluding nodes increases. For networks bootstrapping trust, EC rankings can help establish trust vectors for nodes through a combination of service proofs and identity sampling. As the network grows and trust is established, the reliance on expensive service-proofs can be gradually reduced with a dampening factor over time. By leveraging EC rankings, networks can strike a balance between security and costs depending on their needs. As trust propagates through the network, the need for expensive and complex verification methods decreases, enabling the network to scale more efficiently without compromising security.",{"id":906,"title":907,"titles":908,"content":909,"level":278,"kind":864,"priority":9},"\u002Fblog\u002Fpage-rank#sampling-trust","Sampling Trust",[861,877,887],"To ensure that the graph doesn't lose its security guarantees as new nodes enter the game, the network can randomly sample for service-proofs or service-approximations if proofs aren't available. If a node fails to provide their proofs, the network can slash the edge weights (tokens staked in the graph), along with those of their neighboring nodes. This localized penalty system encourages self-policing and reinforces the importance of maintaining genuine connections with real users. By creating a verification system that can adapt to the specific requirements and constraints of different DePIN projects, network designers can expand the range of services that can be decentralized. This approach acknowledges a spectrum of verifiability and provides a path forward for networks that may not have access to hard or cost-effective service proofs.",{"id":911,"title":912,"titles":913,"content":914,"level":278,"kind":864,"priority":9},"\u002Fblog\u002Fpage-rank#difficulty-in-manufacturing-connectivity","Difficulty in Manufacturing Connectivity",[861,877,887],"Achieving a high EC score requires not only a large number of connections but also connections to other well-connected nodes. This property makes it challenging for malicious actors to manufacture high connectivity rankings, as they would need to establish links with reputable, central nodes in the network. Legitimate, highly-connected nodes are more likely to scrutinize and avoid suspicious or low-quality nodes. As a result, attackers face significant hurdles to manipulate their EC scores. In this example, the block rewards produced from legitimate actors are reinforcing. Malicious actors are losing fees per transaction and shuffling around rewards to themselves, making self-dealing unprofitable. As the network expands, the computational cost and effort required to manipulate EC scores increases. Attackers would need to establish an ever-growing number of connections to keep pace with the network's organic growth, making it impractical and resource-intensive to maintain a significant influence to earn large rewards - making the entire network increasingly robust to attacks over time.",{"id":916,"title":917,"titles":918,"content":919,"level":52,"kind":864,"priority":9},"\u002Fblog\u002Fpage-rank#generalizing-to-various-networks","Generalizing to Various Networks",[861,877],"Adjustable fees allow markets to self-optimize token distributions across various commercial contexts. Nodes in the network can fine-tune to dynamically align incentives, eliminating the need for network designers to make naive assumptions about the unpredictable behavior of participants in different economic settings. Optimal token distributions are \"discovered\" based on the pricing power of producers in different sub-networks. This adaptive mechanism ensures that tokens are allocated in a way that reflects the true value of services provided, fostering a competitive and balanced network that reaches a comfortable equilibrium as the network matures. In markets with unique, high-demand producers, most of the reward for a given transaction is likely to accrue to the producer. Conversely, in markets where producers sell goods with many substitutes, the reward will be distributed in favor of the buyer (the producer will use their rewards as marketing capital). This adaptive incentive system ensures that the token economy remains responsive to changes in dynamic markets, and different networks automatically adapt without manual recalibration.",{"id":921,"title":922,"titles":923,"content":924,"level":52,"kind":864,"priority":9},"\u002Fblog\u002Fpage-rank#centrality-as-an-implicit-referral-mechanism","Centrality as an Implicit Referral Mechanism",[861,877],"Centrality rankings implicitly capture what other networks attempt to achieve through imprecise mechanisms like referral rewards or marketing incentives. For example, Braintrust's connector program. In a graph, \"referrals\" are not enshrined as a concept; they are just the optimal strategy to maximize personal rewards. Users are therefore unknowingly participating in a complex, multi-agent optimization process where the optimal strategy is: Contribute as much revenue as possibleRecruit your neighbors to contribute as much revenue as possible Connectivity allows us to align the incentives of the individual agents in the network with those of the network's objective function. In practice, this results in a more mathematically precise referral mechanism. The aggregated behavior of countless self-interested actions drives behaviors that tend towards maximizing total network value. We hypothesize that the collective action of self-interested agents, each seeking to maximize their individual utility, will develop more effective solution concepts to maximize network value compared to a single centralized actor. Through the alignment of incentives, we aim to create a system that encourages fast, self-reinforcing network growth. You can think of EC based networks as \"outsourcing acquisition and retention\".",{"id":926,"title":927,"titles":928,"content":929,"level":16,"kind":864,"priority":9},"\u002Fblog\u002Fpage-rank#what-are-the-risks","What are the Risks?",[861],"While centrality-based token economies offer an exciting new possibility for DePIN projects and cryptonetworks alike, there are a couple of risks to consider.",{"id":931,"title":932,"titles":933,"content":934,"level":52,"kind":864,"priority":9},"\u002Fblog\u002Fpage-rank#potential-for-centralization","Potential for Centralization",[861,927],"If the distribution mechanism heavily favors highly connected nodes, it could lead to a disproportionate accumulation of tokens in the hands of a few influential actors. This centralization of power could make the system vulnerable to manipulation by these entities. To mitigate this risk, it's crucial to carefully design the network's monetary policy, taking into account potential tradeoffs. If we over-emphasize connectivity, highly connected nodes can earn disproportionate rewards, which can lead to a concentration of power. One approach to address this issue is implementing an inflationary monetary policy. By gradually increasing the token supply over time, the relative influence of today's powerful nodes can be diluted. This allows new entrants to compete more effectively and helps prevent the entrenchment of dominant players. However, it's important to strike a balance, as excessive inflation can also devalue token holdings and disincentivize participation.",{"id":936,"title":937,"titles":938,"content":939,"level":52,"kind":864,"priority":9},"\u002Fblog\u002Fpage-rank#computational-complexity","Computational Complexity",[861,927],"Calculating eigenvector centrality involves diagonalizing a large matrix, which can become computationally demanding as the network grows and transaction volumes increase. The computational resources required to process these calculations may strain the network's capacity, potentially leading to slower transaction times and reduced efficiency. To address this challenge, we are exploring various optimization techniques. We are also exploring various sharding techniques, which involve partitioning the network into smaller, more manageable subgraphs. By dividing the computational workload across these shards, the network can process centrality calculations more efficiently, allowing for faster transaction processing and improved scalability. Luckily there is a tremendous amount of research in the literature about PageRank given it's importance in web2 contexts. As we make progress here, we will continue to share more here.",{"id":941,"title":942,"titles":943,"content":944,"level":16,"kind":864,"priority":9},"\u002Fblog\u002Fpage-rank#wrapping-up","Wrapping Up",[861],"Eigenvector-based cryptonetworks offer a unique set of generalizable properties that can be tuned to support a wide range of commercial networks. We think that this strategy captures the nuances of unpredictable economic behavior and could unlock a bunch of new cryptonetworks that either don't have verifiable service-proofs or have weak service-proofs. The set of techniques discussed in this article provide a rich set of new primitives that can overcome these restrictions across a spectrum of verifiability which can help unlock a tremendous number of new use cases and catalyze mass adoption for the next generation of the internet. Although there are some risks and serious research problems ahead, we think this proposal unlocks a rich new design space for DePIN and other applications. This research originated from the work of Matheus Venturyne Xavier Ferreira, with support from our friends at the CryptoEconLab. mjx-container[jax=\"SVG\"] {\n  direction: ltr;\n}\n\nmjx-container[jax=\"SVG\"] > svg {\n  overflow: visible;\n  min-height: 1px;\n  min-width: 1px;\n}\n\nmjx-container[jax=\"SVG\"] > svg a {\n  fill: blue;\n  stroke: blue;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"] {\n  display: block;\n  text-align: center;\n  margin: 1em 0;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"][width=\"full\"] {\n  display: flex;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"left\"] {\n  text-align: left;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"right\"] {\n  text-align: right;\n}\n\ng[data-mml-node=\"merror\"] > g {\n  fill: red;\n  stroke: red;\n}\n\ng[data-mml-node=\"merror\"] > rect[data-background] {\n  fill: yellow;\n  stroke: none;\n}\n\ng[data-mml-node=\"mtable\"] > line[data-line], svg[data-table] > g > line[data-line] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > rect[data-frame], svg[data-table] > g > rect[data-frame] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dashed, svg[data-table] > g > .mjx-dashed {\n  stroke-dasharray: 140;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dotted, svg[data-table] > g > .mjx-dotted {\n  stroke-linecap: round;\n  stroke-dasharray: 0,140;\n}\n\ng[data-mml-node=\"mtable\"] > g > svg {\n  overflow: visible;\n}\n\n[jax=\"SVG\"] mjx-tool {\n  display: inline-block;\n  position: relative;\n  width: 0;\n  height: 0;\n}\n\n[jax=\"SVG\"] mjx-tool > mjx-tip {\n  position: absolute;\n  top: 0;\n  left: 0;\n}\n\nmjx-tool > mjx-tip {\n  display: inline-block;\n  padding: .2em;\n  border: 1px solid #888;\n  font-size: 70%;\n  background-color: #F8F8F8;\n  color: black;\n  box-shadow: 2px 2px 5px #AAAAAA;\n}\n\ng[data-mml-node=\"maction\"][data-toggle] {\n  cursor: pointer;\n}\n\nmjx-status {\n  display: block;\n  position: fixed;\n  left: 1em;\n  bottom: 1em;\n  min-width: 25%;\n  padding: .2em .4em;\n  border: 1px solid #888;\n  font-size: 90%;\n  background-color: #F8F8F8;\n  color: black;\n}\n\nforeignObject[data-mjx-xml] {\n  font-family: initial;\n  line-height: normal;\n  overflow: visible;\n}\n\nmjx-container[jax=\"SVG\"] path[data-c], mjx-container[jax=\"SVG\"] use[data-c] {\n  stroke-width: 3;\n}",{"id":946,"title":947,"titles":948,"content":949,"level":9,"kind":864,"priority":9},"\u002Fblog\u002Fproofs","Probabilistic Proofs in DePIN",[],"Modeling identity and service proofs as probabilistic graph attributes in Local Protocol, so trust propagates through the network without hard cryptographic proofs for every transaction. In my last post, I introduced the economic concepts underlying Local Protocol, a general decentralized marketplace protocol. Local protocol aims to address key challenges for decentralized physical infrastructure networks (DePINs) where services are limited by the availability or cost of proofs. We argue that the number of services that have hard cryptographic service-proofs is especially limited in physical networks, which has reduced the surface area and design space for DePIN in general. Local aims to expand this surface area for physical services that can be both peer-to-peer and token-incentivized. Our approach acknowledges a spectrum of verifiability and provides a path forward for networks that may not have access to hard or cost-effective service proofs. Local Protocol is an expressive architecture whose approach to verifiability is adaptable to a wide range of DePIN projects. In the root case, the protocol assumes that services do not have access to robust service-proofs. In this post, I discuss incorporating service-proofs and identity-proofs for network's that have access to such things. I'll share why modeling proofs in Local Protocol is more cost effective than opinionated or narrow DePIN architectures, and argue that DePIN requires Local Protocol to unlock new use cases that are limited by the availability or cost of proofs.",{"id":951,"title":952,"titles":953,"content":954,"level":16,"kind":864,"priority":9},"\u002Fblog\u002Fproofs#local-protocol-design-recap","Local Protocol Design Recap",[947],"Local Protocol is a cryptoeconomic game where buyers and sellers develop connectivity by fulfilling transactions. As users complete transactions, the protocol creates a trustless transaction graph. The block reward for the subsequent transaction is dictated by a relative connectivity ranking (more specifically, their eigenvector centrality (EC)). Self-interested actors aim to enhance their connectivity ranking which requires cooperation with transacting parties that are transacting with similar cohorts of the network. The network incentivizes users with a large reward for developing connectivity, providing the network with a strong bootstrapping and referral mechanism that doubles as the network's security guarantee.",{"id":956,"title":912,"titles":957,"content":958,"level":52,"kind":864,"priority":9},"\u002Fblog\u002Fproofs#difficulty-in-manufacturing-connectivity",[947,952],"Achieving a high EC score requires not only a large number of connections but also connections to other well-connected nodes. This property makes it challenging for malicious actors to manufacture high connectivity rankings, as they would need to establish links with reputable, central nodes in the network. Legitimate, highly-connected nodes are more likely to scrutinize and avoid suspicious or low-quality nodes. As a result, attackers face significant hurdles to manipulate their EC scores.",{"id":960,"title":619,"titles":961,"content":962,"level":16,"kind":864,"priority":9},"\u002Fblog\u002Fproofs#proofs-as-graph-attributes",[947],"In graph theory, a node is a point representing an entity (buyer, seller), and an edge is a connection between two nodes (transactions). In Local protocol, we model identity-proofs (and other trust attributes for users) as node attributes and service-proofs as edge attributes. We can assign a degree of confidence to such proofs and propagate the trust assumptions that we derive from each proof through the graph to neighboring nodes with a dampening factor over longer path lengths from the trusted node. This allows us to reduce the requirement of capturing potentially cost-prohibitive proofs for every transaction without sacrificing the security guarantee for the network. You can think of both identity and service proofs as injecting trust into the network. As the network becomes more trustworthy, the protocol becomes more confident in distributing rewards that are greater than the fees collected for each transaction. This unlocks a rich surface area for capital formation to bootstrap new markets. New markets can inherit the security from existing markets providing the network with a strong cross-market network effect. For immature local networks that want to prioritize bootstrapping trust, EC rankings can help establish trust vectors through a combination of service proofs and identity proofs. As the network grows and trust is established, the reliance on expensive service-proofs can be gradually reduced with a dampening factor over time.",{"id":964,"title":805,"titles":965,"content":966,"level":52,"kind":864,"priority":9},"\u002Fblog\u002Fproofs#trust-propagation",[947,619],"The boost in eigenvector centrality (EC) resulting from any proof—be it an identity proof or a service proof—doesn't just affect the individual node or transaction; it propagates through the network due to the recursive nature of the EC calculation. Nodes directly connected to the node or edge associated with the proof will also see an increase in their EC because their centrality depends on the centrality of their neighbors. The effect of any proof diminishes exponentially over longer paths in the graph. The modified EC calculation naturally captures this phenomenon, as the solution to the inhomogeneous eigenvalue problem (more on this later) accounts for the additional trust introduced by the proofs (the doping vector for nodes or adjusted weights for edges). You can visualize the network as a series of concentric circles centered around the node or edge that has incorporated a proof. The nodes directly connected form the first circle; these are the immediate neighbors who have direct interactions with the proof-bearing node or transaction. The second circle consists of nodes connected to those immediate neighbors, which are two steps away, and so on for subsequent circles. The influence of the proof's boost in eigenvector centrality is strongest at the center and decreases exponentially as you move outward. Nodes that transact with those who have submitted proofs benefit more than they would have without the proofs. This results in higher rewards for both parties and increases their attractiveness as transaction partners in the network. In this way, nodes in the network might view the submission of proofs, and thus the increase in security for the network, as an investment in their EC. When self-interested actors perform actions that have positive security externalities, we achieve strong design properties.",{"id":968,"title":595,"titles":969,"content":970,"level":16,"kind":864,"priority":9},"\u002Fblog\u002Fproofs#identity-proofs-as-node-attributes",[947],"Examples of identity proofs include World ID, zkPassport, or a zkTLS authentication with a relevant Web2 provider using Opacity Network. These proofs can be assigned a score that unlocks a larger block rewards for both this node and any transacting counterparties. Specifically, we boost nodes that have evidence of realness because it provides the network with stronger sybil resistance.",{"id":972,"title":973,"titles":974,"content":975,"level":52,"kind":864,"priority":9},"\u002Fblog\u002Fproofs#incorporating-identity-proofs-into-eigenvector-centrality","Incorporating Identity Proofs into Eigenvector Centrality",[947,595],"We represent the network as a bipartite graph , where  and  are disjoint sets of nodes representing producers (sellers) and buyers, respectively, and  is the set of edges representing transactions between them. The eigenvector centrality (EC)  of the nodes in the graph is calculated by solving the eigenvalue problem: where  is the adjacency matrix of the graph, and  is the largest eigenvalue. When a user provides an identity proof, we model this as adding a doping vector  to the eigenvalue equation. This can be captured by modifying the EC formula to become an inhomogeneous eigenvalue problem. Suppose user  submits an identity proof that translates into a boost of  in eigenvector centrality. We then define a \"doping vector\" , where the nonzero element  appears in the -th position. The inhomogeneous eigenvalue problem to solve is then:",{"id":977,"title":978,"titles":979,"content":980,"level":16,"kind":864,"priority":9},"\u002Fblog\u002Fproofs#service-proofs","Service Proofs",[947],"While identity proofs enhance trust in individual nodes, service proofs strengthen the reliability of specific transactions (edges) between nodes. Some existing examples in the wild: Wireless NetworksProof of Coverage (PoC)Mobility and LogisticsProof of Route ComplianceEnergyProof of Green Energy Generation (PoGG)Compute and StorageProof of SpacetimeProof of ReplicationProof of Useful WorkDomain AgnosticProof of LocationProof of PresenceProof of Time",{"id":982,"title":983,"titles":984,"content":985,"level":52,"kind":864,"priority":9},"\u002Fblog\u002Fproofs#service-proofs-in-the-adjacency-matrix","Service Proofs in the Adjacency Matrix",[947,978],"Each edge  in the graph has a weight  representing the cumulative fees or value from transactions between producer  and buyer . When a service proof is available, we adjust the edge weight to reflect the increased confidence in that transaction: where  is the boost provided by the service proof. Alternatively, in terms of the adjacency matrix , we update the entry: This adjustment increases the significance of the edge  in the calculation of EC.",{"id":987,"title":988,"titles":989,"content":990,"level":278,"kind":864,"priority":9},"\u002Fblog\u002Fproofs#impact-on-eigenvector-centrality-and-rewards","Impact on Eigenvector Centrality and Rewards",[947,978,983],"By increasing the weight of the edge , both nodes  and  receive a higher EC score due to their strengthened connection. This boost is again propagated through the network. Higher EC scores translate into increased graph values  and , which are used to calculate block rewards. Therefore, providing service proofs directly benefits the involved parties and indirectly enhances the trustworthiness of their neighbors. In the next EC calculation, both  and  will increase more than they would have without the proof. This results in higher rewards for both parties and increases their attractiveness as transaction partners in the network; transacting with high EC nodes boosts ones own EC.",{"id":992,"title":676,"titles":993,"content":994,"level":278,"kind":864,"priority":9},"\u002Fblog\u002Fproofs#proofs-as-probabilities",[947,978,983],"Modeling proofs as increments in edge weights allows us to treat proofs as probabilistic assessments, rather than binary evidence of service. This approach acknowledges that proofs for physical services can vary in strength and reliability which is particularly useful for networks that lack hard cryptographic proofs-of-service. By quantifying the confidence level , we can proportionally adjust the influence of each proof in the network, unlocking a wider range of evidence and increasing the applicability for networks that do not have deterministic proofs or where capturing \u002F computing proofs is cost-prohibitive (which could break the unit economics of the service in question). Said another way, physical networks have a spectrum of proofs. Local Protocol reduces the reliance on absolute measures of trust, which may be impractical or costly, and instead uses the aggregate trust derived from various proofs and interactions within the network. Example: RidesharingFor example, in a mobility network, a ridesharing application may contain two nodes who submit evidence of their service using a location-proof and time-proof. However, we may not have assurances that these nodes are discrete individuals; it could be a single person acting as both the driver and the rider. In such a case, these rideshare \"proofs\" are not robust like validity proofs are in other blockchain networks.The graph is robust to such attacks because colluding nodes will form isolated subgraphs, disconnected from the broader network of honest participants. Nodes with low connectivity will inherently have low Eigenvector Centrality (EC). This ensures that the weight boost for a given transaction is contained to the colluding actor, is unprofitable, and a self-destructive strategy. As edge weights update dynamically, nodes that are disconnected from the main graph (or have limited interactions with genuinely trusted nodes) will find it increasingly costly to maintain their position.",{"id":996,"title":997,"titles":998,"content":999,"level":16,"kind":864,"priority":9},"\u002Fblog\u002Fproofs#random-sampling-and-slashing","Random Sampling and Slashing",[947],"To ensure that the graph doesn't lose its security guarantees as new nodes enter the game, the network can randomly sample for service-proofs or service-approximations if proofs aren't available. If a node fails to provide their proofs, the network can slash the edge weights (tokens staked in the graph), and add a inverse doping vector to the nodes that fail to provide their proofs. This localized penalty system encourages self-policing and allows the network to remain secure without necessitating costly proofs for every transaction.",{"id":1001,"title":1002,"titles":1003,"content":1004,"level":52,"kind":864,"priority":9},"\u002Fblog\u002Fproofs#inverse-doping-vector","Inverse Doping Vector",[947,997],"When the network randomly samples a transaction and requests a service proof, the involved nodes must submit the required proof. If they fail to do so, we model this as an inverse doping vector in the eigenvector centrality (EC) calculation. Specifically, we decrease the EC scores of the nodes in question and remove the edge representing the fake transaction. This slashing not only impacts the penalized nodes but also affects their neighboring nodes, with the effect diminishing exponentially over longer paths in the graph. where  is a vector with positive entries corresponding to the penalized nodes, effectively reducing their EC scores. For example, if node  fails to submit a proof, the inverse doping vector  has a positive value  at position  and zeros elsewhere: The impact of this penalty propagates through the network due to the nature of the EC calculation and the edge weights  associated with the failed transaction are also decreased or set to zero:",{"id":1006,"title":1007,"titles":1008,"content":1009,"level":52,"kind":864,"priority":9},"\u002Fblog\u002Fproofs#slashing-neighbors","Slashing Neighbors",[947,997],"To further encourage self-policing, we can extend the penalty to nodes directly connected to the penalized node. This is modeled by adjusting the inverse doping vector to include these neighboring nodes with scaled penalties. Let  denote the set of nodes directly connected to node . We define the inverse doping vector  as: where  is the decay factor representing the reduced penalty on neighboring nodes. For each node , we can adjust the edge weights  associated with the neighboring node where  is a smaller slashing factor for the connected edges. The effect of the penalty diminishes exponentially over longer paths in the network. Mathematically, this is inherent in the properties of the EC calculation. The further a node is from the penalized node, the less impact the inverse doping vector has on its EC score. This decay can be adjusted through the choice of decay factor  and slashing factors  and , allowing network designers to balance between strictness and leniency based on the desired security level. This slashing mechanism encourages nodes to maintain genuine connections and discourages malicious behavior.",{"id":1011,"title":1012,"titles":1013,"content":1014,"level":16,"kind":864,"priority":9},"\u002Fblog\u002Fproofs#conclusion","Conclusion",[947],"Incorporating identity proofs and service proofs into the Local Protocol graph enhances the network's ability to verify users and transactions without relying solely on network connectivity. By modeling proofs as probabilistic boosts in eigenvector centrality (EC), we allow trust to propagate organically through the network. This approach balances the need for security with the practical limitations of obtaining proofs in various markets. By integrating proofs into the mathematical framework of the graph, we create a system where security (trust) is directly linked to economic rewards. Nodes are incentivized to provide proofs, not just for their own benefit, but also to enhance the trustworthiness of transacting partners in their Local network. Local Protocol supports a wide range of decentralized services, even those without hard cryptographic proofs, expanding the design space for DePIN projects. This enables more services to be both peer-to-peer and token-incentivized. mjx-container[jax=\"SVG\"] {\n  direction: ltr;\n}\n\nmjx-container[jax=\"SVG\"] > svg {\n  overflow: visible;\n  min-height: 1px;\n  min-width: 1px;\n}\n\nmjx-container[jax=\"SVG\"] > svg a {\n  fill: blue;\n  stroke: blue;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"] {\n  display: block;\n  text-align: center;\n  margin: 1em 0;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"][width=\"full\"] {\n  display: flex;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"left\"] {\n  text-align: left;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"right\"] {\n  text-align: right;\n}\n\ng[data-mml-node=\"merror\"] > g {\n  fill: red;\n  stroke: red;\n}\n\ng[data-mml-node=\"merror\"] > rect[data-background] {\n  fill: yellow;\n  stroke: none;\n}\n\ng[data-mml-node=\"mtable\"] > line[data-line], svg[data-table] > g > line[data-line] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > rect[data-frame], svg[data-table] > g > rect[data-frame] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dashed, svg[data-table] > g > .mjx-dashed {\n  stroke-dasharray: 140;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dotted, svg[data-table] > g > .mjx-dotted {\n  stroke-linecap: round;\n  stroke-dasharray: 0,140;\n}\n\ng[data-mml-node=\"mtable\"] > g > svg {\n  overflow: visible;\n}\n\n[jax=\"SVG\"] mjx-tool {\n  display: inline-block;\n  position: relative;\n  width: 0;\n  height: 0;\n}\n\n[jax=\"SVG\"] mjx-tool > mjx-tip {\n  position: absolute;\n  top: 0;\n  left: 0;\n}\n\nmjx-tool > mjx-tip {\n  display: inline-block;\n  padding: .2em;\n  border: 1px solid #888;\n  font-size: 70%;\n  background-color: #F8F8F8;\n  color: black;\n  box-shadow: 2px 2px 5px #AAAAAA;\n}\n\ng[data-mml-node=\"maction\"][data-toggle] {\n  cursor: pointer;\n}\n\nmjx-status {\n  display: block;\n  position: fixed;\n  left: 1em;\n  bottom: 1em;\n  min-width: 25%;\n  padding: .2em .4em;\n  border: 1px solid #888;\n  font-size: 90%;\n  background-color: #F8F8F8;\n  color: black;\n}\n\nforeignObject[data-mjx-xml] {\n  font-family: initial;\n  line-height: normal;\n  overflow: visible;\n}\n\nmjx-container[jax=\"SVG\"] path[data-c], mjx-container[jax=\"SVG\"] use[data-c] {\n  stroke-width: 3;\n}",{"\u002Fdocs\u002Farchitecture\u002Fconsensus":1016,"\u002Fdocs\u002Farchitecture":1016,"\u002Fdocs\u002Farchitecture\u002Foverview":1016,"\u002Fdocs\u002Farchitecture\u002Fperformance-storage":1016,"\u002Fdocs\u002Farchitecture\u002Fsettlement":1016,"\u002Fdocs\u002Farchitecture\u002Fsharding":1016,"\u002Fdocs\u002Farchitecture\u002Fstate-model":1016,"\u002Fdocs\u002Fgames-and-graphs\u002Faudits-and-penalties":1017,"\u002Fdocs\u002Fgames-and-graphs\u002Fdiffusion":1017,"\u002Fdocs\u002Fgames-and-graphs\u002Fexample":1017,"\u002Fdocs\u002Fgames-and-graphs\u002Fgraph":1017,"\u002Fdocs\u002Fgames-and-graphs":1017,"\u002Fdocs\u002Fgames-and-graphs\u002Foptimistic-claims":1017,"\u002Fdocs\u002Fgames-and-graphs\u002Foverview":1017,"\u002Fdocs\u002Fgames-and-graphs\u002Fsnapshot-commitments":1017,"\u002Fdocs\u002Fidentity":1017,"\u002Fdocs":1018,"\u002Fdocs\u002Finsurance\u002Fdispute-resolution":1016,"\u002Fdocs\u002Finsurance":1016,"\u002Fdocs\u002Finsurance\u002Finsurance-amm":1016,"\u002Fdocs\u002Fmarkets\u002Fbootstrapping":1018,"\u002Fdocs\u002Fmarkets":1017,"\u002Fdocs\u002Fmarkets\u002Fregistry":1017,"\u002Fdocs\u002Fmore-resources":1016,"\u002Fdocs\u002Fproofs\u002Fidentity-proofs":1017,"\u002Fdocs\u002Fproofs":1017,"\u002Fdocs\u002Fproofs\u002Flocation-proofs":1017,"\u002Fdocs\u002Fproofs\u002Foverview":1017,"\u002Fdocs\u002Fproofs\u002Fprobabilities":1017,"\u002Fdocs\u002Fproofs\u002Fservice-proofs":1017,"\u002Fdocs\u002Fsecurity\u002Fgraph-value":1017,"\u002Fdocs\u002Fsecurity":1017,"\u002Fdocs\u002Fsecurity\u002Foverview":1017,"\u002Fdocs\u002Fsecurity\u002Fsybil-resistance":1017,"\u002Fdocs\u002Ftrust":1017,"\u002Fdocs\u002Ftrust\u002Foverview":1017,"\u002Fdocs\u002Ftrust\u002Fpropagation":1017,"\u002Fdocs\u002Ftrust\u002Fsampling-slashing":1017,"\u002Fdocs\u002Ftrust\u002Fself-policing":1017,"\u002Fblog\u002Fpage-rank":1019,"\u002Fblog\u002Fproofs":1019},"2026-07-10T17:57:56-04:00","2026-06-27T10:18:06-04:00","2026-07-10T15:52:15-04:00","2026-07-10T17:07:49-04:00",{"id":1021,"title":947,"author":1022,"body":1023,"date":4363,"description":4364,"extension":4365,"image":4366,"meta":4367,"navigation":4368,"path":946,"searchPriority":4366,"seo":4369,"stem":4370,"tags":4371,"__hash__":4376},"blog\u002Fblog\u002Fproofs.md","mike",{"type":1024,"value":1025,"toc":4344},"minimark",[1026,1039,1046,1053,1056,1059,1063,1065,1069,1072,1075,1078,1081,1084,1087,1090,1093,1101,1104,1107,1110,1113,1135,1138,1337,1366,1472,1547,1833,1972,1975,1982,2084,2087,2260,2349,2371,2399,2488,2545,2549,2643,2711,2779,2782,2789,2812,2820,2834,2837,2839,2842,2849,2981,3019,3127,3282,3325,3448,3451,3454,3560,3904,4129,4251,4254,4325,4328,4331,4334,4337,4340],[1027,1028,1029,1030,1034,1035,1038],"p",{},"In my ",[1031,1032,1033],"a",{"href":860},"last post",", I introduced the economic concepts underlying ",[1031,1036,1037],{"href":467},"Local Protocol",", a general decentralized marketplace protocol.",[1027,1040,1041,1042,1045],{},"Local protocol aims to address key challenges for decentralized physical infrastructure networks (DePINs) where services are ",[1031,1043,1044],{"href":901},"limited by the availability or cost of proofs",". We argue that the number of services that have hard cryptographic service-proofs is especially limited in physical networks, which has reduced the surface area and design space for DePIN in general. Local aims to expand this surface area for physical services that can be both peer-to-peer and token-incentivized.",[1027,1047,1048,1049,1052],{},"Our approach acknowledges ",[1031,1050,1051],{"href":901},"a spectrum of verifiability"," and provides a path forward for networks that may not have access to hard or cost-effective service proofs.",[1027,1054,1055],{},"Local Protocol is an expressive architecture whose approach to verifiability is adaptable to a wide range of DePIN projects. In the root case, the protocol assumes that services do not have access to robust service-proofs.",[1027,1057,1058],{},"In this post, I discuss incorporating service-proofs and identity-proofs for network's that have access to such things. I'll share why modeling proofs in Local Protocol is more cost effective than opinionated or narrow DePIN architectures, and argue that DePIN requires Local Protocol to unlock new use cases that are limited by the availability or cost of proofs.",[1060,1061,952],"h2",{"id":1062},"local-protocol-design-recap",[1027,1064,954],{},[1066,1067,912],"h3",{"id":1068},"difficulty-in-manufacturing-connectivity",[1027,1070,1071],{},"Achieving a high EC score requires not only a large number of connections but also connections to other well-connected nodes. This property makes it challenging for malicious actors to manufacture high connectivity rankings, as they would need to establish links with reputable, central nodes in the network.",[1027,1073,1074],{},"Legitimate, highly-connected nodes are more likely to scrutinize and avoid suspicious or low-quality nodes. As a result, attackers face significant hurdles to manipulate their EC scores.",[1060,1076,619],{"id":1077},"proofs-as-graph-attributes",[1027,1079,1080],{},"In graph theory, a node is a point representing an entity (buyer, seller), and an edge is a connection between two nodes (transactions). In Local protocol, we model identity-proofs (and other trust attributes for users) as node attributes and service-proofs as edge attributes.",[1027,1082,1083],{},"We can assign a degree of confidence to such proofs and propagate the trust assumptions that we derive from each proof through the graph to neighboring nodes with a dampening factor over longer path lengths from the trusted node. This allows us to reduce the requirement of capturing potentially cost-prohibitive proofs for every transaction without sacrificing the security guarantee for the network.",[1027,1085,1086],{},"You can think of both identity and service proofs as injecting trust into the network. As the network becomes more trustworthy, the protocol becomes more confident in distributing rewards that are greater than the fees collected for each transaction. This unlocks a rich surface area for capital formation to bootstrap new markets. New markets can inherit the security from existing markets providing the network with a strong cross-market network effect.",[1027,1088,1089],{},"For immature local networks that want to prioritize bootstrapping trust, EC rankings can help establish trust vectors through a combination of service proofs and identity proofs. As the network grows and trust is established, the reliance on expensive service-proofs can be gradually reduced with a dampening factor over time.",[1066,1091,805],{"id":1092},"trust-propagation",[1027,1094,1095,1096,1100],{},"The boost in eigenvector centrality (EC) resulting from any proof—be it an identity proof or a service proof—doesn't just affect the individual node or transaction; it ",[1097,1098,1099],"strong",{},"propagates through the network"," due to the recursive nature of the EC calculation. Nodes directly connected to the node or edge associated with the proof will also see an increase in their EC because their centrality depends on the centrality of their neighbors.",[1027,1102,1103],{},"The effect of any proof diminishes exponentially over longer paths in the graph. The modified EC calculation naturally captures this phenomenon, as the solution to the inhomogeneous eigenvalue problem (more on this later) accounts for the additional trust introduced by the proofs (the doping vector for nodes or adjusted weights for edges).",[1027,1105,1106],{},"You can visualize the network as a series of concentric circles centered around the node or edge that has incorporated a proof. The nodes directly connected form the first circle; these are the immediate neighbors who have direct interactions with the proof-bearing node or transaction. The second circle consists of nodes connected to those immediate neighbors, which are two steps away, and so on for subsequent circles. The influence of the proof's boost in eigenvector centrality is strongest at the center and decreases exponentially as you move outward.",[1027,1108,1109],{},"Nodes that transact with those who have submitted proofs benefit more than they would have without the proofs. This results in higher rewards for both parties and increases their attractiveness as transaction partners in the network. In this way, nodes in the network might view the submission of proofs, and thus the increase in security for the network, as an investment in their EC. When self-interested actors perform actions that have positive security externalities, we achieve strong design properties.",[1060,1111,595],{"id":1112},"identity-proofs-as-node-attributes",[1027,1114,1115,1116,1122,1123,1128,1129,1134],{},"Examples of identity proofs include ",[1031,1117,1121],{"href":1118,"rel":1119},"https:\u002F\u002Fworldcoin.org\u002Fworld-id",[1120],"nofollow","World ID",", ",[1031,1124,1127],{"href":1125,"rel":1126},"https:\u002F\u002Fzkpassport.app\u002F",[1120],"zkPassport",", or a zkTLS authentication with a relevant Web2 provider using ",[1031,1130,1133],{"href":1131,"rel":1132},"https:\u002F\u002Fwww.opacity.network\u002F#how-it-works",[1120],"Opacity Network",". These proofs can be assigned a score that unlocks a larger block rewards for both this node and any transacting counterparties. Specifically, we boost nodes that have evidence of realness because it provides the network with stronger sybil resistance.",[1066,1136,973],{"id":1137},"incorporating-identity-proofs-into-eigenvector-centrality",[1027,1139,1140,1141,1266,1267,1290,1291,1312,1313,1336],{},"We represent the network as a bipartite graph ",[1142,1143,1147],"mjx-container",{"className":1144,"jax":1146},[1145],"MathJax","SVG",[1148,1149,1158,1194],"svg",{"style":1150,"xmlns":1151,"width":1152,"height":1153,"role":1154,"focusable":1155,"viewBox":1156,"xmlnsXLink":1157},"vertical-align: -0.566ex;","http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg","13.771ex","2.262ex","img","false","0 -750 6086.9 1000","http:\u002F\u002Fwww.w3.org\u002F1999\u002Fxlink",[1159,1160,1161,1166,1170,1174,1178,1182,1186,1190],"defs",{},[1162,1163],"path",{"id":1164,"d":1165},"MJX-1-TEX-I-1D43A","M50 252Q50 367 117 473T286 641T490 704Q580 704 633 653Q642 643 648 636T656 626L657 623Q660 623 684 649Q691 655 699 663T715 679T725 690L740 705H746Q760 705 760 698Q760 694 728 561Q692 422 692 421Q690 416 687 415T669 413H653Q647 419 647 422Q647 423 648 429T650 449T651 481Q651 552 619 605T510 659Q492 659 471 656T418 643T357 615T294 567T236 496T189 394T158 260Q156 242 156 221Q156 173 170 136T206 79T256 45T308 28T353 24Q407 24 452 47T514 106Q517 114 529 161T541 214Q541 222 528 224T468 227H431Q425 233 425 235T427 254Q431 267 437 273H454Q494 271 594 271Q634 271 659 271T695 272T707 272Q721 272 721 263Q721 261 719 249Q714 230 709 228Q706 227 694 227Q674 227 653 224Q646 221 643 215T629 164Q620 131 614 108Q589 6 586 3Q584 1 581 1Q571 1 553 21T530 52Q530 53 528 52T522 47Q448 -22 322 -22Q201 -22 126 55T50 252Z",[1162,1167],{"id":1168,"d":1169},"MJX-1-TEX-N-3D","M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z",[1162,1171],{"id":1172,"d":1173},"MJX-1-TEX-N-28","M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z",[1162,1175],{"id":1176,"d":1177},"MJX-1-TEX-I-1D448","M107 637Q73 637 71 641Q70 643 70 649Q70 673 81 682Q83 683 98 683Q139 681 234 681Q268 681 297 681T342 682T362 682Q378 682 378 672Q378 670 376 658Q371 641 366 638H364Q362 638 359 638T352 638T343 637T334 637Q295 636 284 634T266 623Q265 621 238 518T184 302T154 169Q152 155 152 140Q152 86 183 55T269 24Q336 24 403 69T501 205L552 406Q599 598 599 606Q599 633 535 637Q511 637 511 648Q511 650 513 660Q517 676 519 679T529 683Q532 683 561 682T645 680Q696 680 723 681T752 682Q767 682 767 672Q767 650 759 642Q756 637 737 637Q666 633 648 597Q646 592 598 404Q557 235 548 205Q515 105 433 42T263 -22Q171 -22 116 34T60 167V183Q60 201 115 421Q164 622 164 628Q164 635 107 637Z",[1162,1179],{"id":1180,"d":1181},"MJX-1-TEX-N-2C","M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z",[1162,1183],{"id":1184,"d":1185},"MJX-1-TEX-I-1D449","M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z",[1162,1187],{"id":1188,"d":1189},"MJX-1-TEX-I-1D438","M492 213Q472 213 472 226Q472 230 477 250T482 285Q482 316 461 323T364 330H312Q311 328 277 192T243 52Q243 48 254 48T334 46Q428 46 458 48T518 61Q567 77 599 117T670 248Q680 270 683 272Q690 274 698 274Q718 274 718 261Q613 7 608 2Q605 0 322 0H133Q31 0 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 659Q197 676 203 680H757Q764 676 764 669Q764 664 751 557T737 447Q735 440 717 440H705Q698 445 698 453L701 476Q704 500 704 528Q704 558 697 578T678 609T643 625T596 632T532 634H485Q397 633 392 631Q388 629 386 622Q385 619 355 499T324 377Q347 376 372 376H398Q464 376 489 391T534 472Q538 488 540 490T557 493Q562 493 565 493T570 492T572 491T574 487T577 483L544 351Q511 218 508 216Q505 213 492 213Z",[1162,1191],{"id":1192,"d":1193},"MJX-1-TEX-N-29","M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z",[1195,1196,1200],"g",{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},"currentColor","0","scale(1,-1)",[1195,1201,1203,1211,1219,1226,1233,1240,1247,1252,1259],{"dataMmlNode":1202},"math",[1195,1204,1206],{"dataMmlNode":1205},"mi",[1207,1208],"use",{"dataC":1209,"xLinkHref":1210},"1D43A","#MJX-1-TEX-I-1D43A",[1195,1212,1215],{"dataMmlNode":1213,"transform":1214},"mo","translate(1063.8,0)",[1207,1216],{"dataC":1217,"xLinkHref":1218},"3D","#MJX-1-TEX-N-3D",[1195,1220,1222],{"dataMmlNode":1213,"transform":1221},"translate(2119.6,0)",[1207,1223],{"dataC":1224,"xLinkHref":1225},"28","#MJX-1-TEX-N-28",[1195,1227,1229],{"dataMmlNode":1205,"transform":1228},"translate(2508.6,0)",[1207,1230],{"dataC":1231,"xLinkHref":1232},"1D448","#MJX-1-TEX-I-1D448",[1195,1234,1236],{"dataMmlNode":1213,"transform":1235},"translate(3275.6,0)",[1207,1237],{"dataC":1238,"xLinkHref":1239},"2C","#MJX-1-TEX-N-2C",[1195,1241,1243],{"dataMmlNode":1205,"transform":1242},"translate(3720.2,0)",[1207,1244],{"dataC":1245,"xLinkHref":1246},"1D449","#MJX-1-TEX-I-1D449",[1195,1248,1250],{"dataMmlNode":1213,"transform":1249},"translate(4489.2,0)",[1207,1251],{"dataC":1238,"xLinkHref":1239},[1195,1253,1255],{"dataMmlNode":1205,"transform":1254},"translate(4933.9,0)",[1207,1256],{"dataC":1257,"xLinkHref":1258},"1D438","#MJX-1-TEX-I-1D438",[1195,1260,1262],{"dataMmlNode":1213,"transform":1261},"translate(5697.9,0)",[1207,1263],{"dataC":1264,"xLinkHref":1265},"29","#MJX-1-TEX-N-29",", where ",[1142,1268,1270],{"className":1269,"jax":1146},[1145],[1148,1271,1276,1281],{"style":1272,"xmlns":1151,"width":1273,"height":1274,"role":1154,"focusable":1155,"viewBox":1275,"xmlnsXLink":1157},"vertical-align: -0.05ex;","1.735ex","1.595ex","0 -683 767 705",[1159,1277,1278],{},[1162,1279],{"id":1280,"d":1177},"MJX-2-TEX-I-1D448",[1195,1282,1283],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,1284,1285],{"dataMmlNode":1202},[1195,1286,1287],{"dataMmlNode":1205},[1207,1288],{"dataC":1231,"xLinkHref":1289},"#MJX-2-TEX-I-1D448"," and ",[1142,1292,1294],{"className":1293,"jax":1146},[1145],[1148,1295,1298,1303],{"style":1272,"xmlns":1151,"width":1296,"height":1274,"role":1154,"focusable":1155,"viewBox":1297,"xmlnsXLink":1157},"1.74ex","0 -683 769 705",[1159,1299,1300],{},[1162,1301],{"id":1302,"d":1185},"MJX-3-TEX-I-1D449",[1195,1304,1305],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,1306,1307],{"dataMmlNode":1202},[1195,1308,1309],{"dataMmlNode":1205},[1207,1310],{"dataC":1245,"xLinkHref":1311},"#MJX-3-TEX-I-1D449"," are disjoint sets of nodes representing producers (sellers) and buyers, respectively, and ",[1142,1314,1316],{"className":1315,"jax":1146},[1145],[1148,1317,1322,1327],{"style":1318,"xmlns":1151,"width":1319,"height":1320,"role":1154,"focusable":1155,"viewBox":1321,"xmlnsXLink":1157},"vertical-align: 0;","1.729ex","1.538ex","0 -680 764 680",[1159,1323,1324],{},[1162,1325],{"id":1326,"d":1189},"MJX-4-TEX-I-1D438",[1195,1328,1329],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,1330,1331],{"dataMmlNode":1202},[1195,1332,1333],{"dataMmlNode":1205},[1207,1334],{"dataC":1257,"xLinkHref":1335},"#MJX-4-TEX-I-1D438"," is the set of edges representing transactions between them.",[1027,1338,1339,1340,1365],{},"The eigenvector centrality (EC) ",[1142,1341,1343],{"className":1342,"jax":1146},[1145],[1148,1344,1349,1355],{"style":1345,"xmlns":1151,"width":1346,"height":1347,"role":1154,"focusable":1155,"viewBox":1348,"xmlnsXLink":1157},"vertical-align: -0.025ex;","1.294ex","1.025ex","0 -442 572 453",[1159,1350,1351],{},[1162,1352],{"id":1353,"d":1354},"MJX-5-TEX-I-1D465","M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z",[1195,1356,1357],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,1358,1359],{"dataMmlNode":1202},[1195,1360,1361],{"dataMmlNode":1205},[1207,1362],{"dataC":1363,"xLinkHref":1364},"1D465","#MJX-5-TEX-I-1D465"," of the nodes in the graph is calculated by solving the eigenvalue problem:",[1027,1367,1368],{},[1142,1369,1371],{"className":1370,"jax":1146},[1145],[1148,1372,1377,1406],{"style":1373,"xmlns":1151,"width":1374,"height":1375,"role":1154,"focusable":1155,"viewBox":1376,"xmlnsXLink":1157},"vertical-align: -0.357ex;","12.214ex","1.936ex","0 -698 5398.5 855.8",[1159,1378,1379,1383,1387,1391,1395,1399,1402],{},[1162,1380],{"id":1381,"d":1382},"MJX-6-TEX-I-1D706","M166 673Q166 685 183 694H202Q292 691 316 644Q322 629 373 486T474 207T524 67Q531 47 537 34T546 15T551 6T555 2T556 -2T550 -11H482Q457 3 450 18T399 152L354 277L340 262Q327 246 293 207T236 141Q211 112 174 69Q123 9 111 -1T83 -12Q47 -12 47 20Q47 37 61 52T199 187Q229 216 266 252T321 306L338 322Q338 323 288 462T234 612Q214 657 183 657Q166 657 166 673Z",[1162,1384],{"id":1385,"d":1386},"MJX-6-TEX-N-6D","M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q351 442 364 440T387 434T406 426T421 417T432 406T441 395T448 384T452 374T455 366L457 361L460 365Q463 369 466 373T475 384T488 397T503 410T523 422T546 432T572 439T603 442Q729 442 740 329Q741 322 741 190V104Q741 66 743 59T754 49Q775 46 803 46H819V0H811L788 1Q764 2 737 2T699 3Q596 3 587 0H579V46H595Q656 46 656 62Q657 64 657 200Q656 335 655 343Q649 371 635 385T611 402T585 404Q540 404 506 370Q479 343 472 315T464 232V168V108Q464 78 465 68T468 55T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z",[1162,1388],{"id":1389,"d":1390},"MJX-6-TEX-N-61","M137 305T115 305T78 320T63 359Q63 394 97 421T218 448Q291 448 336 416T396 340Q401 326 401 309T402 194V124Q402 76 407 58T428 40Q443 40 448 56T453 109V145H493V106Q492 66 490 59Q481 29 455 12T400 -6T353 12T329 54V58L327 55Q325 52 322 49T314 40T302 29T287 17T269 6T247 -2T221 -8T190 -11Q130 -11 82 20T34 107Q34 128 41 147T68 188T116 225T194 253T304 268H318V290Q318 324 312 340Q290 411 215 411Q197 411 181 410T156 406T148 403Q170 388 170 359Q170 334 154 320ZM126 106Q126 75 150 51T209 26Q247 26 276 49T315 109Q317 116 318 175Q318 233 317 233Q309 233 296 232T251 223T193 203T147 166T126 106Z",[1162,1392],{"id":1393,"d":1394},"MJX-6-TEX-N-78","M201 0Q189 3 102 3Q26 3 17 0H11V46H25Q48 47 67 52T96 61T121 78T139 96T160 122T180 150L226 210L168 288Q159 301 149 315T133 336T122 351T113 363T107 370T100 376T94 379T88 381T80 383Q74 383 44 385H16V431H23Q59 429 126 429Q219 429 229 431H237V385Q201 381 201 369Q201 367 211 353T239 315T268 274L272 270L297 304Q329 345 329 358Q329 364 327 369T322 376T317 380T310 384L307 385H302V431H309Q324 428 408 428Q487 428 493 431H499V385H492Q443 385 411 368Q394 360 377 341T312 257L296 236L358 151Q424 61 429 57T446 50Q464 46 499 46H516V0H510H502Q494 1 482 1T457 2T432 2T414 3Q403 3 377 3T327 1L304 0H295V46H298Q309 46 320 51T331 63Q331 65 291 120L250 175Q249 174 219 133T185 88Q181 83 181 74Q181 63 188 55T206 46Q208 46 208 23V0H201Z",[1162,1396],{"id":1397,"d":1398},"MJX-6-TEX-B-1D431","M227 0Q212 3 121 3Q40 3 28 0H21V62H117L245 213L109 382H26V444H34Q49 441 143 441Q247 441 265 444H274V382H246L281 339Q315 297 316 297Q320 297 354 341L389 382H352V444H360Q375 441 466 441Q547 441 559 444H566V382H471L355 246L504 63L545 62H586V0H578Q563 3 469 3Q365 3 347 0H338V62H366Q366 63 326 112T285 163L198 63L217 62H235V0H227Z",[1162,1400],{"id":1401,"d":1169},"MJX-6-TEX-N-3D",[1162,1403],{"id":1404,"d":1405},"MJX-6-TEX-B-1D400","M296 0Q278 3 164 3Q58 3 49 0H40V62H92Q144 62 144 64Q388 682 397 689Q403 698 434 698Q463 698 471 689Q475 686 538 530T663 218L724 64Q724 62 776 62H828V0H817Q796 3 658 3Q509 3 485 0H472V62H517Q561 62 561 63L517 175H262L240 120Q218 65 217 64Q217 62 261 62H306V0H296ZM390 237L492 238L440 365Q390 491 388 491Q287 239 287 237H390Z",[1195,1407,1408],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,1409,1410,1441,1450,1456,1465],{"dataMmlNode":1202},[1195,1411,1413,1419],{"dataMmlNode":1412},"msub",[1195,1414,1415],{"dataMmlNode":1205},[1207,1416],{"dataC":1417,"xLinkHref":1418},"1D706","#MJX-6-TEX-I-1D706",[1195,1420,1424],{"dataMmlNode":1421,"transform":1422,"dataMjxTexclass":1423},"TeXAtom","translate(616,-150) scale(0.707)","ORD",[1195,1425,1427,1431,1436],{"dataMmlNode":1426},"mtext",[1207,1428],{"dataC":1429,"xLinkHref":1430},"6D","#MJX-6-TEX-N-6D",[1207,1432],{"dataC":1433,"xLinkHref":1434,"transform":1435},"61","#MJX-6-TEX-N-61","translate(833,0)",[1207,1437],{"dataC":1438,"xLinkHref":1439,"transform":1440},"78","#MJX-6-TEX-N-78","translate(1333,0)",[1195,1442,1444],{"dataMmlNode":1421,"dataMjxTexclass":1423,"transform":1443},"translate(1981.9,0)",[1195,1445,1446],{"dataMmlNode":1205},[1207,1447],{"dataC":1448,"xLinkHref":1449},"1D431","#MJX-6-TEX-B-1D431",[1195,1451,1453],{"dataMmlNode":1213,"transform":1452},"translate(2866.7,0)",[1207,1454],{"dataC":1217,"xLinkHref":1455},"#MJX-6-TEX-N-3D",[1195,1457,1459],{"dataMmlNode":1421,"dataMjxTexclass":1423,"transform":1458},"translate(3922.5,0)",[1195,1460,1461],{"dataMmlNode":1205},[1207,1462],{"dataC":1463,"xLinkHref":1464},"1D400","#MJX-6-TEX-B-1D400",[1195,1466,1468],{"dataMmlNode":1421,"dataMjxTexclass":1423,"transform":1467},"translate(4791.5,0)",[1195,1469,1470],{"dataMmlNode":1205},[1207,1471],{"dataC":1448,"xLinkHref":1449},[1027,1473,1474,1475,1499,1500,1546],{},"where ",[1142,1476,1478],{"className":1477,"jax":1146},[1145],[1148,1479,1483,1489],{"style":1318,"xmlns":1151,"width":1480,"height":1481,"role":1154,"focusable":1155,"viewBox":1482,"xmlnsXLink":1157},"1.697ex","1.62ex","0 -716 750 716",[1159,1484,1485],{},[1162,1486],{"id":1487,"d":1488},"MJX-7-TEX-I-1D434","M208 74Q208 50 254 46Q272 46 272 35Q272 34 270 22Q267 8 264 4T251 0Q249 0 239 0T205 1T141 2Q70 2 50 0H42Q35 7 35 11Q37 38 48 46H62Q132 49 164 96Q170 102 345 401T523 704Q530 716 547 716H555H572Q578 707 578 706L606 383Q634 60 636 57Q641 46 701 46Q726 46 726 36Q726 34 723 22Q720 7 718 4T704 0Q701 0 690 0T651 1T578 2Q484 2 455 0H443Q437 6 437 9T439 27Q443 40 445 43L449 46H469Q523 49 533 63L521 213H283L249 155Q208 86 208 74ZM516 260Q516 271 504 416T490 562L463 519Q447 492 400 412L310 260L413 259Q516 259 516 260Z",[1195,1490,1491],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,1492,1493],{"dataMmlNode":1202},[1195,1494,1495],{"dataMmlNode":1205},[1207,1496],{"dataC":1497,"xLinkHref":1498},"1D434","#MJX-7-TEX-I-1D434"," is the adjacency matrix of the graph, and ",[1142,1501,1503],{"className":1502,"jax":1146},[1145],[1148,1504,1508,1522],{"style":1373,"xmlns":1151,"width":1505,"height":1506,"role":1154,"focusable":1155,"viewBox":1507,"xmlnsXLink":1157},"4.484ex","1.927ex","0 -694 1981.9 851.8",[1159,1509,1510,1513,1516,1519],{},[1162,1511],{"id":1512,"d":1382},"MJX-8-TEX-I-1D706",[1162,1514],{"id":1515,"d":1386},"MJX-8-TEX-N-6D",[1162,1517],{"id":1518,"d":1390},"MJX-8-TEX-N-61",[1162,1520],{"id":1521,"d":1394},"MJX-8-TEX-N-78",[1195,1523,1524],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,1525,1526],{"dataMmlNode":1202},[1195,1527,1528,1533],{"dataMmlNode":1412},[1195,1529,1530],{"dataMmlNode":1205},[1207,1531],{"dataC":1417,"xLinkHref":1532},"#MJX-8-TEX-I-1D706",[1195,1534,1535],{"dataMmlNode":1421,"transform":1422,"dataMjxTexclass":1423},[1195,1536,1537,1540,1543],{"dataMmlNode":1426},[1207,1538],{"dataC":1429,"xLinkHref":1539},"#MJX-8-TEX-N-6D",[1207,1541],{"dataC":1433,"xLinkHref":1542,"transform":1435},"#MJX-8-TEX-N-61",[1207,1544],{"dataC":1438,"xLinkHref":1545,"transform":1440},"#MJX-8-TEX-N-78"," is the largest eigenvalue.",[1027,1548,1549,1550,1553,1554,1557,1558,1581,1582,1603,1604,1623,1624,1792,1793,1812,1813,1832],{},"When a user provides an ",[1097,1551,1552],{},"identity proof",", we model this as adding a ",[1097,1555,1556],{},"doping vector"," ",[1142,1559,1561],{"className":1560,"jax":1146},[1145],[1148,1562,1565,1571],{"style":1345,"xmlns":1151,"width":1563,"height":1274,"role":1154,"focusable":1155,"viewBox":1564,"xmlnsXLink":1157},"0.971ex","0 -694 429 705",[1159,1566,1567],{},[1162,1568],{"id":1569,"d":1570},"MJX-9-TEX-I-1D44F","M73 647Q73 657 77 670T89 683Q90 683 161 688T234 694Q246 694 246 685T212 542Q204 508 195 472T180 418L176 399Q176 396 182 402Q231 442 283 442Q345 442 383 396T422 280Q422 169 343 79T173 -11Q123 -11 82 27T40 150V159Q40 180 48 217T97 414Q147 611 147 623T109 637Q104 637 101 637H96Q86 637 83 637T76 640T73 647ZM336 325V331Q336 405 275 405Q258 405 240 397T207 376T181 352T163 330L157 322L136 236Q114 150 114 114Q114 66 138 42Q154 26 178 26Q211 26 245 58Q270 81 285 114T318 219Q336 291 336 325Z",[1195,1572,1573],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,1574,1575],{"dataMmlNode":1202},[1195,1576,1577],{"dataMmlNode":1205},[1207,1578],{"dataC":1579,"xLinkHref":1580},"1D44F","#MJX-9-TEX-I-1D44F"," to the eigenvalue equation. This can be captured by modifying the EC formula to become an inhomogeneous eigenvalue problem. Suppose user ",[1142,1583,1585],{"className":1584,"jax":1146},[1145],[1148,1586,1587,1593],{"style":1345,"xmlns":1151,"width":1346,"height":1347,"role":1154,"focusable":1155,"viewBox":1348,"xmlnsXLink":1157},[1159,1588,1589],{},[1162,1590],{"id":1591,"d":1592},"MJX-10-TEX-I-1D462","M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",[1195,1594,1595],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,1596,1597],{"dataMmlNode":1202},[1195,1598,1599],{"dataMmlNode":1205},[1207,1600],{"dataC":1601,"xLinkHref":1602},"1D462","#MJX-10-TEX-I-1D462"," submits an identity proof that translates into a boost of ",[1142,1605,1607],{"className":1606,"jax":1146},[1145],[1148,1608,1609,1614],{"style":1345,"xmlns":1151,"width":1563,"height":1274,"role":1154,"focusable":1155,"viewBox":1564,"xmlnsXLink":1157},[1159,1610,1611],{},[1162,1612],{"id":1613,"d":1570},"MJX-11-TEX-I-1D44F",[1195,1615,1616],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,1617,1618],{"dataMmlNode":1202},[1195,1619,1620],{"dataMmlNode":1205},[1207,1621],{"dataC":1579,"xLinkHref":1622},"#MJX-11-TEX-I-1D44F"," in eigenvector centrality. We then define a \"doping vector\" ",[1142,1625,1627],{"className":1626,"jax":1146},[1145],[1148,1628,1632,1664],{"style":1150,"xmlns":1151,"width":1629,"height":1630,"role":1154,"focusable":1155,"viewBox":1631,"xmlnsXLink":1157},"26.577ex","3.048ex","0 -1097 11747 1347",[1159,1633,1634,1637,1641,1644,1647,1650,1654,1657,1661],{},[1162,1635],{"id":1636,"d":1570},"MJX-12-TEX-I-1D44F",[1162,1638],{"id":1639,"d":1640},"MJX-12-TEX-N-20D7","M377 694Q377 702 382 708T397 714Q404 714 409 709Q414 705 419 690Q429 653 460 633Q471 626 471 615Q471 606 468 603T454 594Q411 572 379 531Q377 529 374 525T369 519T364 517T357 516Q350 516 344 521T337 536Q337 555 384 595H213L42 596Q29 605 29 615Q29 622 42 635H401Q377 673 377 694Z",[1162,1642],{"id":1643,"d":1592},"MJX-12-TEX-I-1D462",[1162,1645],{"id":1646,"d":1169},"MJX-12-TEX-N-3D",[1162,1648],{"id":1649,"d":1173},"MJX-12-TEX-N-28",[1162,1651],{"id":1652,"d":1653},"MJX-12-TEX-N-30","M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z",[1162,1655],{"id":1656,"d":1181},"MJX-12-TEX-N-2C",[1162,1658],{"id":1659,"d":1660},"MJX-12-TEX-N-2026","M78 60Q78 84 95 102T138 120Q162 120 180 104T199 61Q199 36 182 18T139 0T96 17T78 60ZM525 60Q525 84 542 102T585 120Q609 120 627 104T646 61Q646 36 629 18T586 0T543 17T525 60ZM972 60Q972 84 989 102T1032 120Q1056 120 1074 104T1093 61Q1093 36 1076 18T1033 0T990 17T972 60Z",[1162,1662],{"id":1663,"d":1193},"MJX-12-TEX-N-29",[1195,1665,1666],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,1667,1668,1693,1699,1705,1713,1719,1724,1729,1736,1741,1746,1751,1756,1761,1766,1771,1776,1781,1786],{"dataMmlNode":1202},[1195,1669,1670,1687],{"dataMmlNode":1412},[1195,1671,1672],{"dataMmlNode":1421,"dataMjxTexclass":1423},[1195,1673,1675,1680],{"dataMmlNode":1674},"mover",[1195,1676,1677],{"dataMmlNode":1205},[1207,1678],{"dataC":1579,"xLinkHref":1679},"#MJX-12-TEX-I-1D44F",[1195,1681,1683],{"dataMmlNode":1213,"transform":1682},"translate(214.5,283) translate(-250 0)",[1207,1684],{"dataC":1685,"xLinkHref":1686},"20D7","#MJX-12-TEX-N-20D7",[1195,1688,1690],{"dataMmlNode":1205,"transform":1689},"translate(462,-150) scale(0.707)",[1207,1691],{"dataC":1601,"xLinkHref":1692},"#MJX-12-TEX-I-1D462",[1195,1694,1696],{"dataMmlNode":1213,"transform":1695},"translate(1194.2,0)",[1207,1697],{"dataC":1217,"xLinkHref":1698},"#MJX-12-TEX-N-3D",[1195,1700,1702],{"dataMmlNode":1213,"transform":1701},"translate(2250,0)",[1207,1703],{"dataC":1224,"xLinkHref":1704},"#MJX-12-TEX-N-28",[1195,1706,1709],{"dataMmlNode":1707,"transform":1708},"mn","translate(2639,0)",[1207,1710],{"dataC":1711,"xLinkHref":1712},"30","#MJX-12-TEX-N-30",[1195,1714,1716],{"dataMmlNode":1213,"transform":1715},"translate(3139,0)",[1207,1717],{"dataC":1238,"xLinkHref":1718},"#MJX-12-TEX-N-2C",[1195,1720,1722],{"dataMmlNode":1707,"transform":1721},"translate(3583.7,0)",[1207,1723],{"dataC":1711,"xLinkHref":1712},[1195,1725,1727],{"dataMmlNode":1213,"transform":1726},"translate(4083.7,0)",[1207,1728],{"dataC":1238,"xLinkHref":1718},[1195,1730,1732],{"dataMmlNode":1213,"transform":1731},"translate(4528.4,0)",[1207,1733],{"dataC":1734,"xLinkHref":1735},"2026","#MJX-12-TEX-N-2026",[1195,1737,1739],{"dataMmlNode":1213,"transform":1738},"translate(5867,0)",[1207,1740],{"dataC":1238,"xLinkHref":1718},[1195,1742,1744],{"dataMmlNode":1707,"transform":1743},"translate(6311.7,0)",[1207,1745],{"dataC":1711,"xLinkHref":1712},[1195,1747,1749],{"dataMmlNode":1213,"transform":1748},"translate(6811.7,0)",[1207,1750],{"dataC":1238,"xLinkHref":1718},[1195,1752,1754],{"dataMmlNode":1205,"transform":1753},"translate(7256.4,0)",[1207,1755],{"dataC":1579,"xLinkHref":1679},[1195,1757,1759],{"dataMmlNode":1213,"transform":1758},"translate(7685.4,0)",[1207,1760],{"dataC":1238,"xLinkHref":1718},[1195,1762,1764],{"dataMmlNode":1707,"transform":1763},"translate(8130,0)",[1207,1765],{"dataC":1711,"xLinkHref":1712},[1195,1767,1769],{"dataMmlNode":1213,"transform":1768},"translate(8630,0)",[1207,1770],{"dataC":1238,"xLinkHref":1718},[1195,1772,1774],{"dataMmlNode":1213,"transform":1773},"translate(9074.7,0)",[1207,1775],{"dataC":1734,"xLinkHref":1735},[1195,1777,1779],{"dataMmlNode":1213,"transform":1778},"translate(10413.4,0)",[1207,1780],{"dataC":1238,"xLinkHref":1718},[1195,1782,1784],{"dataMmlNode":1707,"transform":1783},"translate(10858,0)",[1207,1785],{"dataC":1711,"xLinkHref":1712},[1195,1787,1789],{"dataMmlNode":1213,"transform":1788},"translate(11358,0)",[1207,1790],{"dataC":1264,"xLinkHref":1791},"#MJX-12-TEX-N-29",", where the nonzero element ",[1142,1794,1796],{"className":1795,"jax":1146},[1145],[1148,1797,1798,1803],{"style":1345,"xmlns":1151,"width":1563,"height":1274,"role":1154,"focusable":1155,"viewBox":1564,"xmlnsXLink":1157},[1159,1799,1800],{},[1162,1801],{"id":1802,"d":1570},"MJX-13-TEX-I-1D44F",[1195,1804,1805],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,1806,1807],{"dataMmlNode":1202},[1195,1808,1809],{"dataMmlNode":1205},[1207,1810],{"dataC":1579,"xLinkHref":1811},"#MJX-13-TEX-I-1D44F"," appears in the ",[1142,1814,1816],{"className":1815,"jax":1146},[1145],[1148,1817,1818,1823],{"style":1345,"xmlns":1151,"width":1346,"height":1347,"role":1154,"focusable":1155,"viewBox":1348,"xmlnsXLink":1157},[1159,1819,1820],{},[1162,1821],{"id":1822,"d":1592},"MJX-14-TEX-I-1D462",[1195,1824,1825],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,1826,1827],{"dataMmlNode":1202},[1195,1828,1829],{"dataMmlNode":1205},[1207,1830],{"dataC":1601,"xLinkHref":1831},"#MJX-14-TEX-I-1D462","-th position. The inhomogeneous eigenvalue problem to solve is then:",[1027,1834,1835],{},[1142,1836,1838],{"className":1837,"jax":1146},[1145],[1148,1839,1844,1881],{"style":1840,"xmlns":1151,"width":1841,"height":1842,"role":1154,"focusable":1155,"viewBox":1843,"xmlnsXLink":1157},"vertical-align: -1.033ex;","15.205ex","3.515ex","0 -1097 6720.4 1553.6",[1159,1845,1846,1849,1852,1856,1859,1862,1865,1868,1871,1875,1878],{},[1162,1847],{"id":1848,"d":1354},"MJX-15-TEX-I-1D465",[1162,1850],{"id":1851,"d":1169},"MJX-15-TEX-N-3D",[1162,1853],{"id":1854,"d":1855},"MJX-15-TEX-N-31","M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z",[1162,1857],{"id":1858,"d":1382},"MJX-15-TEX-I-1D706",[1162,1860],{"id":1861,"d":1386},"MJX-15-TEX-N-6D",[1162,1863],{"id":1864,"d":1390},"MJX-15-TEX-N-61",[1162,1866],{"id":1867,"d":1394},"MJX-15-TEX-N-78",[1162,1869],{"id":1870,"d":1488},"MJX-15-TEX-I-1D434",[1162,1872],{"id":1873,"d":1874},"MJX-15-TEX-N-2B","M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z",[1162,1876],{"id":1877,"d":1570},"MJX-15-TEX-I-1D44F",[1162,1879],{"id":1880,"d":1640},"MJX-15-TEX-N-20D7",[1195,1882,1883],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,1884,1885,1890,1896,1939,1945,1950,1957],{"dataMmlNode":1202},[1195,1886,1887],{"dataMmlNode":1205},[1207,1888],{"dataC":1363,"xLinkHref":1889},"#MJX-15-TEX-I-1D465",[1195,1891,1893],{"dataMmlNode":1213,"transform":1892},"translate(849.8,0)",[1207,1894],{"dataC":1217,"xLinkHref":1895},"#MJX-15-TEX-N-3D",[1195,1897,1900,1907,1932],{"dataMmlNode":1898,"transform":1899},"mfrac","translate(1905.6,0)",[1195,1901,1903],{"dataMmlNode":1707,"transform":1902},"translate(743.9,394) scale(0.707)",[1207,1904],{"dataC":1905,"xLinkHref":1906},"31","#MJX-15-TEX-N-31",[1195,1908,1910,1915],{"dataMmlNode":1412,"transform":1909},"translate(220,-345) scale(0.707)",[1195,1911,1912],{"dataMmlNode":1205},[1207,1913],{"dataC":1417,"xLinkHref":1914},"#MJX-15-TEX-I-1D706",[1195,1916,1917,1922,1927],{"dataMmlNode":1421,"transform":1422,"dataMjxTexclass":1423},[1195,1918,1919],{"dataMmlNode":1205},[1207,1920],{"dataC":1429,"xLinkHref":1921},"#MJX-15-TEX-N-6D",[1195,1923,1924],{"dataMmlNode":1205,"transform":1435},[1207,1925],{"dataC":1433,"xLinkHref":1926},"#MJX-15-TEX-N-61",[1195,1928,1929],{"dataMmlNode":1205,"transform":1440},[1207,1930],{"dataC":1438,"xLinkHref":1931},"#MJX-15-TEX-N-78",[1933,1934],"rect",{"width":1935,"height":1936,"x":1937,"y":1938},1601.4,60,"120","220",[1195,1940,1942],{"dataMmlNode":1205,"transform":1941},"translate(3747,0)",[1207,1943],{"dataC":1497,"xLinkHref":1944},"#MJX-15-TEX-I-1D434",[1195,1946,1948],{"dataMmlNode":1205,"transform":1947},"translate(4497,0)",[1207,1949],{"dataC":1363,"xLinkHref":1889},[1195,1951,1953],{"dataMmlNode":1213,"transform":1952},"translate(5291.2,0)",[1207,1954],{"dataC":1955,"xLinkHref":1956},"2B","#MJX-15-TEX-N-2B",[1195,1958,1960],{"dataMmlNode":1421,"dataMjxTexclass":1423,"transform":1959},"translate(6291.4,0)",[1195,1961,1962,1967],{"dataMmlNode":1674},[1195,1963,1964],{"dataMmlNode":1205},[1207,1965],{"dataC":1579,"xLinkHref":1966},"#MJX-15-TEX-I-1D44F",[1195,1968,1969],{"dataMmlNode":1213,"transform":1682},[1207,1970],{"dataC":1685,"xLinkHref":1971},"#MJX-15-TEX-N-20D7",[1060,1973,978],{"id":1974},"service-proofs",[1027,1976,1977,1978,1981],{},"While identity proofs enhance trust in individual nodes, ",[1097,1979,1980],{},"service proofs"," strengthen the reliability of specific transactions (edges) between nodes. Some existing examples in the wild:",[1983,1984,1985,2000,2014,2028,2056],"ul",{},[1986,1987,1988,1991],"li",{},[1097,1989,1990],{},"Wireless Networks",[1983,1992,1993],{},[1986,1994,1995],{},[1031,1996,1999],{"href":1997,"rel":1998},"https:\u002F\u002Fdocs.helium.com\u002Fblockchain\u002Fproof-of-coverage\u002F",[1120],"Proof of Coverage (PoC)",[1986,2001,2002,2005],{},[1097,2003,2004],{},"Mobility and Logistics",[1983,2006,2007],{},[1986,2008,2009],{},[1031,2010,2013],{"href":2011,"rel":2012},"https:\u002F\u002Fdimo.org\u002Fnews\u002Fdrive-to-earn-proof-of-movement",[1120],"Proof of Route Compliance",[1986,2015,2016,2019],{},[1097,2017,2018],{},"Energy",[1983,2020,2021],{},[1986,2022,2023],{},[1031,2024,2027],{"href":2025,"rel":2026},"https:\u002F\u002Fdocs.arkreen.com\u002Ftechnical-details\u002Fproof-of-green-data\u002Foverview\u002F",[1120],"Proof of Green Energy Generation (PoGG)",[1986,2029,2030,2033],{},[1097,2031,2032],{},"Compute and Storage",[1983,2034,2035,2042,2049],{},[1986,2036,2037],{},[1031,2038,2041],{"href":2039,"rel":2040},"https:\u002F\u002Fdocs.filecoin.io\u002Freference\u002Fgeneral\u002Fglossary\u002F#proof-of-spacetime-post",[1120],"Proof of Spacetime",[1986,2043,2044],{},[1031,2045,2048],{"href":2046,"rel":2047},"https:\u002F\u002Fdocs.filecoin.io\u002Freference\u002Fgeneral\u002Fglossary\u002F#proof-of-replication-porep",[1120],"Proof of Replication",[1986,2050,2051],{},[1031,2052,2055],{"href":2053,"rel":2054},"https:\u002F\u002Fdocs.akash.network\u002Fother-resources\u002Fakash-network-glossary#proof-of-useful-work",[1120],"Proof of Useful Work",[1986,2057,2058,2061],{},[1097,2059,2060],{},"Domain Agnostic",[1983,2062,2063,2070,2077],{},[1986,2064,2065],{},[1031,2066,2069],{"href":2067,"rel":2068},"https:\u002F\u002Fdocs.witnesschain.com\u002Fdepin-coordination-layer\u002Fproof-of-location",[1120],"Proof of Location",[1986,2071,2072],{},[1031,2073,2076],{"href":2074,"rel":2075},"https:\u002F\u002Fcdn.prod.website-files.com\u002F65bb4a468049d4f4ebf2c321\u002F66061fd2b796461e9260b006_whitepaper-4.3.pdf",[1120],"Proof of Presence",[1986,2078,2079],{},[1031,2080,2083],{"href":2081,"rel":2082},"https:\u002F\u002Fdocs.presearch.io\u002Fnodes\u002Fproof-of-time",[1120],"Proof of Time",[1066,2085,983],{"id":2086},"service-proofs-in-the-adjacency-matrix",[1027,2088,2089,2090,2169,2170,2216,2217,2236,2237,2259],{},"Each edge ",[1142,2091,2093],{"className":2092,"jax":1146},[1145],[1148,2094,2097,2122],{"style":1150,"xmlns":1151,"width":2095,"height":1153,"role":1154,"focusable":1155,"viewBox":2096,"xmlnsXLink":1157},"9.652ex","0 -750 4266.2 1000",[1159,2098,2099,2102,2105,2108,2112,2115,2119],{},[1162,2100],{"id":2101,"d":1173},"MJX-16-TEX-N-28",[1162,2103],{"id":2104,"d":1592},"MJX-16-TEX-I-1D462",[1162,2106],{"id":2107,"d":1181},"MJX-16-TEX-N-2C",[1162,2109],{"id":2110,"d":2111},"MJX-16-TEX-I-1D463","M173 380Q173 405 154 405Q130 405 104 376T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Q21 294 29 316T53 368T97 419T160 441Q202 441 225 417T249 361Q249 344 246 335Q246 329 231 291T200 202T182 113Q182 86 187 69Q200 26 250 26Q287 26 319 60T369 139T398 222T409 277Q409 300 401 317T383 343T365 361T357 383Q357 405 376 424T417 443Q436 443 451 425T467 367Q467 340 455 284T418 159T347 40T241 -11Q177 -11 139 22Q102 54 102 117Q102 148 110 181T151 298Q173 362 173 380Z",[1162,2113],{"id":2114,"d":1193},"MJX-16-TEX-N-29",[1162,2116],{"id":2117,"d":2118},"MJX-16-TEX-N-2208","M84 250Q84 372 166 450T360 539Q361 539 377 539T419 540T469 540H568Q583 532 583 520Q583 511 570 501L466 500Q355 499 329 494Q280 482 242 458T183 409T147 354T129 306T124 272V270H568Q583 262 583 250T568 230H124V228Q124 207 134 177T167 112T231 48T328 7Q355 1 466 0H570Q583 -10 583 -20Q583 -32 568 -40H471Q464 -40 446 -40T417 -41Q262 -41 172 45Q84 127 84 250Z",[1162,2120],{"id":2121,"d":1189},"MJX-16-TEX-I-1D438",[1195,2123,2124],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,2125,2126,2131,2137,2143,2150,2156,2163],{"dataMmlNode":1202},[1195,2127,2128],{"dataMmlNode":1213},[1207,2129],{"dataC":1224,"xLinkHref":2130},"#MJX-16-TEX-N-28",[1195,2132,2134],{"dataMmlNode":1205,"transform":2133},"translate(389,0)",[1207,2135],{"dataC":1601,"xLinkHref":2136},"#MJX-16-TEX-I-1D462",[1195,2138,2140],{"dataMmlNode":1213,"transform":2139},"translate(961,0)",[1207,2141],{"dataC":1238,"xLinkHref":2142},"#MJX-16-TEX-N-2C",[1195,2144,2146],{"dataMmlNode":1205,"transform":2145},"translate(1405.7,0)",[1207,2147],{"dataC":2148,"xLinkHref":2149},"1D463","#MJX-16-TEX-I-1D463",[1195,2151,2153],{"dataMmlNode":1213,"transform":2152},"translate(1890.7,0)",[1207,2154],{"dataC":1264,"xLinkHref":2155},"#MJX-16-TEX-N-29",[1195,2157,2159],{"dataMmlNode":1213,"transform":2158},"translate(2557.4,0)",[1207,2160],{"dataC":2161,"xLinkHref":2162},"2208","#MJX-16-TEX-N-2208",[1195,2164,2166],{"dataMmlNode":1205,"transform":2165},"translate(3502.2,0)",[1207,2167],{"dataC":1257,"xLinkHref":2168},"#MJX-16-TEX-I-1D438"," in the graph has a weight ",[1142,2171,2173],{"className":2172,"jax":1146},[1145],[1148,2174,2178,2190],{"style":1373,"xmlns":1151,"width":2175,"height":2176,"role":1154,"focusable":1155,"viewBox":2177,"xmlnsXLink":1157},"3.499ex","1.359ex","0 -443 1546.4 600.8",[1159,2179,2180,2184,2187],{},[1162,2181],{"id":2182,"d":2183},"MJX-17-TEX-I-1D464","M580 385Q580 406 599 424T641 443Q659 443 674 425T690 368Q690 339 671 253Q656 197 644 161T609 80T554 12T482 -11Q438 -11 404 5T355 48Q354 47 352 44Q311 -11 252 -11Q226 -11 202 -5T155 14T118 53T104 116Q104 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Q21 293 29 315T52 366T96 418T161 441Q204 441 227 416T250 358Q250 340 217 250T184 111Q184 65 205 46T258 26Q301 26 334 87L339 96V119Q339 122 339 128T340 136T341 143T342 152T345 165T348 182T354 206T362 238T373 281Q402 395 406 404Q419 431 449 431Q468 431 475 421T483 402Q483 389 454 274T422 142Q420 131 420 107V100Q420 85 423 71T442 42T487 26Q558 26 600 148Q609 171 620 213T632 273Q632 306 619 325T593 357T580 385Z",[1162,2185],{"id":2186,"d":1592},"MJX-17-TEX-I-1D462",[1162,2188],{"id":2189,"d":2111},"MJX-17-TEX-I-1D463",[1195,2191,2192],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,2193,2194],{"dataMmlNode":1202},[1195,2195,2196,2202],{"dataMmlNode":1412},[1195,2197,2198],{"dataMmlNode":1205},[1207,2199],{"dataC":2200,"xLinkHref":2201},"1D464","#MJX-17-TEX-I-1D464",[1195,2203,2205,2210],{"dataMmlNode":1421,"transform":2204,"dataMjxTexclass":1423},"translate(749,-150) scale(0.707)",[1195,2206,2207],{"dataMmlNode":1205},[1207,2208],{"dataC":1601,"xLinkHref":2209},"#MJX-17-TEX-I-1D462",[1195,2211,2213],{"dataMmlNode":1205,"transform":2212},"translate(572,0)",[1207,2214],{"dataC":2148,"xLinkHref":2215},"#MJX-17-TEX-I-1D463"," representing the cumulative fees or value from transactions between producer ",[1142,2218,2220],{"className":2219,"jax":1146},[1145],[1148,2221,2222,2227],{"style":1345,"xmlns":1151,"width":1346,"height":1347,"role":1154,"focusable":1155,"viewBox":1348,"xmlnsXLink":1157},[1159,2223,2224],{},[1162,2225],{"id":2226,"d":1592},"MJX-18-TEX-I-1D462",[1195,2228,2229],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,2230,2231],{"dataMmlNode":1202},[1195,2232,2233],{"dataMmlNode":1205},[1207,2234],{"dataC":1601,"xLinkHref":2235},"#MJX-18-TEX-I-1D462"," and buyer ",[1142,2238,2240],{"className":2239,"jax":1146},[1145],[1148,2241,2245,2250],{"style":1345,"xmlns":1151,"width":2242,"height":2243,"role":1154,"focusable":1155,"viewBox":2244,"xmlnsXLink":1157},"1.097ex","1.027ex","0 -443 485 454",[1159,2246,2247],{},[1162,2248],{"id":2249,"d":2111},"MJX-19-TEX-I-1D463",[1195,2251,2252],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,2253,2254],{"dataMmlNode":1202},[1195,2255,2256],{"dataMmlNode":1205},[1207,2257],{"dataC":2148,"xLinkHref":2258},"#MJX-19-TEX-I-1D463",". When a service proof is available, we adjust the edge weight to reflect the increased confidence in that transaction:",[1027,2261,2262],{},[1142,2263,2265],{"className":2264,"jax":1146},[1145],[1148,2266,2269,2290],{"style":1373,"xmlns":1151,"width":2267,"height":1506,"role":1154,"focusable":1155,"viewBox":2268,"xmlnsXLink":1157},"14.253ex","0 -694 6299.8 851.8",[1159,2270,2271,2274,2277,2280,2284,2287],{},[1162,2272],{"id":2273,"d":2183},"MJX-20-TEX-I-1D464",[1162,2275],{"id":2276,"d":1592},"MJX-20-TEX-I-1D462",[1162,2278],{"id":2279,"d":2111},"MJX-20-TEX-I-1D463",[1162,2281],{"id":2282,"d":2283},"MJX-20-TEX-N-2190","M944 261T944 250T929 230H165Q167 228 182 216T211 189T244 152T277 96T303 25Q308 7 308 0Q308 -11 288 -11Q281 -11 278 -11T272 -7T267 2T263 21Q245 94 195 151T73 236Q58 242 55 247Q55 254 59 257T73 264Q121 283 158 314T215 375T247 434T264 480L267 497Q269 503 270 505T275 509T288 511Q308 511 308 500Q308 493 303 475Q293 438 278 406T246 352T215 315T185 287T165 270H929Q944 261 944 250Z",[1162,2285],{"id":2286,"d":1874},"MJX-20-TEX-N-2B",[1162,2288],{"id":2289,"d":1570},"MJX-20-TEX-I-1D44F",[1195,2291,2292],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,2293,2294,2313,2320,2337,2343],{"dataMmlNode":1202},[1195,2295,2296,2301],{"dataMmlNode":1412},[1195,2297,2298],{"dataMmlNode":1205},[1207,2299],{"dataC":2200,"xLinkHref":2300},"#MJX-20-TEX-I-1D464",[1195,2302,2303,2308],{"dataMmlNode":1421,"transform":2204,"dataMjxTexclass":1423},[1195,2304,2305],{"dataMmlNode":1205},[1207,2306],{"dataC":1601,"xLinkHref":2307},"#MJX-20-TEX-I-1D462",[1195,2309,2310],{"dataMmlNode":1205,"transform":2212},[1207,2311],{"dataC":2148,"xLinkHref":2312},"#MJX-20-TEX-I-1D463",[1195,2314,2316],{"dataMmlNode":1213,"transform":2315},"translate(1824.2,0)",[1207,2317],{"dataC":2318,"xLinkHref":2319},"2190","#MJX-20-TEX-N-2190",[1195,2321,2323,2327],{"dataMmlNode":1412,"transform":2322},"translate(3102,0)",[1195,2324,2325],{"dataMmlNode":1205},[1207,2326],{"dataC":2200,"xLinkHref":2300},[1195,2328,2329,2333],{"dataMmlNode":1421,"transform":2204,"dataMjxTexclass":1423},[1195,2330,2331],{"dataMmlNode":1205},[1207,2332],{"dataC":1601,"xLinkHref":2307},[1195,2334,2335],{"dataMmlNode":1205,"transform":2212},[1207,2336],{"dataC":2148,"xLinkHref":2312},[1195,2338,2340],{"dataMmlNode":1213,"transform":2339},"translate(4870.6,0)",[1207,2341],{"dataC":1955,"xLinkHref":2342},"#MJX-20-TEX-N-2B",[1195,2344,2346],{"dataMmlNode":1205,"transform":2345},"translate(5870.8,0)",[1207,2347],{"dataC":1579,"xLinkHref":2348},"#MJX-20-TEX-I-1D44F",[1027,2350,1474,2351,2370],{},[1142,2352,2354],{"className":2353,"jax":1146},[1145],[1148,2355,2356,2361],{"style":1345,"xmlns":1151,"width":1563,"height":1274,"role":1154,"focusable":1155,"viewBox":1564,"xmlnsXLink":1157},[1159,2357,2358],{},[1162,2359],{"id":2360,"d":1570},"MJX-21-TEX-I-1D44F",[1195,2362,2363],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,2364,2365],{"dataMmlNode":1202},[1195,2366,2367],{"dataMmlNode":1205},[1207,2368],{"dataC":1579,"xLinkHref":2369},"#MJX-21-TEX-I-1D44F"," is the boost provided by the service proof.",[1027,2372,2373,2374,2398],{},"Alternatively, in terms of the adjacency matrix ",[1142,2375,2377],{"className":2376,"jax":1146},[1145],[1148,2378,2382,2387],{"style":1318,"xmlns":1151,"width":2379,"height":2380,"role":1154,"focusable":1155,"viewBox":2381,"xmlnsXLink":1157},"1.966ex","1.579ex","0 -698 869 698",[1159,2383,2384],{},[1162,2385],{"id":2386,"d":1405},"MJX-22-TEX-B-1D400",[1195,2388,2389],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,2390,2391],{"dataMmlNode":1202},[1195,2392,2393],{"dataMmlNode":1421,"dataMjxTexclass":1423},[1195,2394,2395],{"dataMmlNode":1205},[1207,2396],{"dataC":1463,"xLinkHref":2397},"#MJX-22-TEX-B-1D400",", we update the entry:",[1027,2400,2401],{},[1142,2402,2404],{"className":2403,"jax":1146},[1145],[1148,2405,2409,2429],{"style":1373,"xmlns":1151,"width":2406,"height":2407,"role":1154,"focusable":1155,"viewBox":2408,"xmlnsXLink":1157},"14.407ex","1.977ex","0 -716 6367.8 873.8",[1159,2410,2411,2414,2417,2420,2423,2426],{},[1162,2412],{"id":2413,"d":1488},"MJX-23-TEX-I-1D434",[1162,2415],{"id":2416,"d":1592},"MJX-23-TEX-I-1D462",[1162,2418],{"id":2419,"d":2111},"MJX-23-TEX-I-1D463",[1162,2421],{"id":2422,"d":2283},"MJX-23-TEX-N-2190",[1162,2424],{"id":2425,"d":1874},"MJX-23-TEX-N-2B",[1162,2427],{"id":2428,"d":1570},"MJX-23-TEX-I-1D44F",[1195,2430,2431],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,2432,2433,2453,2459,2476,2482],{"dataMmlNode":1202},[1195,2434,2435,2440],{"dataMmlNode":1412},[1195,2436,2437],{"dataMmlNode":1205},[1207,2438],{"dataC":1497,"xLinkHref":2439},"#MJX-23-TEX-I-1D434",[1195,2441,2443,2448],{"dataMmlNode":1421,"transform":2442,"dataMjxTexclass":1423},"translate(783,-150) scale(0.707)",[1195,2444,2445],{"dataMmlNode":1205},[1207,2446],{"dataC":1601,"xLinkHref":2447},"#MJX-23-TEX-I-1D462",[1195,2449,2450],{"dataMmlNode":1205,"transform":2212},[1207,2451],{"dataC":2148,"xLinkHref":2452},"#MJX-23-TEX-I-1D463",[1195,2454,2456],{"dataMmlNode":1213,"transform":2455},"translate(1858.2,0)",[1207,2457],{"dataC":2318,"xLinkHref":2458},"#MJX-23-TEX-N-2190",[1195,2460,2462,2466],{"dataMmlNode":1412,"transform":2461},"translate(3136,0)",[1195,2463,2464],{"dataMmlNode":1205},[1207,2465],{"dataC":1497,"xLinkHref":2439},[1195,2467,2468,2472],{"dataMmlNode":1421,"transform":2442,"dataMjxTexclass":1423},[1195,2469,2470],{"dataMmlNode":1205},[1207,2471],{"dataC":1601,"xLinkHref":2447},[1195,2473,2474],{"dataMmlNode":1205,"transform":2212},[1207,2475],{"dataC":2148,"xLinkHref":2452},[1195,2477,2479],{"dataMmlNode":1213,"transform":2478},"translate(4938.6,0)",[1207,2480],{"dataC":1955,"xLinkHref":2481},"#MJX-23-TEX-N-2B",[1195,2483,2485],{"dataMmlNode":1205,"transform":2484},"translate(5938.8,0)",[1207,2486],{"dataC":1579,"xLinkHref":2487},"#MJX-23-TEX-I-1D44F",[1027,2489,2490,2491,2544],{},"This adjustment increases the significance of the edge ",[1142,2492,2494],{"className":2493,"jax":1146},[1145],[1148,2495,2498,2515],{"style":1150,"xmlns":1151,"width":2496,"height":1153,"role":1154,"focusable":1155,"viewBox":2497,"xmlnsXLink":1157},"5.158ex","0 -750 2279.7 1000",[1159,2499,2500,2503,2506,2509,2512],{},[1162,2501],{"id":2502,"d":1173},"MJX-24-TEX-N-28",[1162,2504],{"id":2505,"d":1592},"MJX-24-TEX-I-1D462",[1162,2507],{"id":2508,"d":1181},"MJX-24-TEX-N-2C",[1162,2510],{"id":2511,"d":2111},"MJX-24-TEX-I-1D463",[1162,2513],{"id":2514,"d":1193},"MJX-24-TEX-N-29",[1195,2516,2517],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,2518,2519,2524,2529,2534,2539],{"dataMmlNode":1202},[1195,2520,2521],{"dataMmlNode":1213},[1207,2522],{"dataC":1224,"xLinkHref":2523},"#MJX-24-TEX-N-28",[1195,2525,2526],{"dataMmlNode":1205,"transform":2133},[1207,2527],{"dataC":1601,"xLinkHref":2528},"#MJX-24-TEX-I-1D462",[1195,2530,2531],{"dataMmlNode":1213,"transform":2139},[1207,2532],{"dataC":1238,"xLinkHref":2533},"#MJX-24-TEX-N-2C",[1195,2535,2536],{"dataMmlNode":1205,"transform":2145},[1207,2537],{"dataC":2148,"xLinkHref":2538},"#MJX-24-TEX-I-1D463",[1195,2540,2541],{"dataMmlNode":1213,"transform":2152},[1207,2542],{"dataC":1264,"xLinkHref":2543},"#MJX-24-TEX-N-29"," in the calculation of EC.",[2546,2547,988],"h4",{"id":2548},"impact-on-eigenvector-centrality-and-rewards",[1027,2550,2551,2552,2603,2604,1290,2623,2642],{},"By increasing the weight of the edge ",[1142,2553,2555],{"className":2554,"jax":1146},[1145],[1148,2556,2557,2574],{"style":1150,"xmlns":1151,"width":2496,"height":1153,"role":1154,"focusable":1155,"viewBox":2497,"xmlnsXLink":1157},[1159,2558,2559,2562,2565,2568,2571],{},[1162,2560],{"id":2561,"d":1173},"MJX-25-TEX-N-28",[1162,2563],{"id":2564,"d":1592},"MJX-25-TEX-I-1D462",[1162,2566],{"id":2567,"d":1181},"MJX-25-TEX-N-2C",[1162,2569],{"id":2570,"d":2111},"MJX-25-TEX-I-1D463",[1162,2572],{"id":2573,"d":1193},"MJX-25-TEX-N-29",[1195,2575,2576],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,2577,2578,2583,2588,2593,2598],{"dataMmlNode":1202},[1195,2579,2580],{"dataMmlNode":1213},[1207,2581],{"dataC":1224,"xLinkHref":2582},"#MJX-25-TEX-N-28",[1195,2584,2585],{"dataMmlNode":1205,"transform":2133},[1207,2586],{"dataC":1601,"xLinkHref":2587},"#MJX-25-TEX-I-1D462",[1195,2589,2590],{"dataMmlNode":1213,"transform":2139},[1207,2591],{"dataC":1238,"xLinkHref":2592},"#MJX-25-TEX-N-2C",[1195,2594,2595],{"dataMmlNode":1205,"transform":2145},[1207,2596],{"dataC":2148,"xLinkHref":2597},"#MJX-25-TEX-I-1D463",[1195,2599,2600],{"dataMmlNode":1213,"transform":2152},[1207,2601],{"dataC":1264,"xLinkHref":2602},"#MJX-25-TEX-N-29",", both nodes ",[1142,2605,2607],{"className":2606,"jax":1146},[1145],[1148,2608,2609,2614],{"style":1345,"xmlns":1151,"width":1346,"height":1347,"role":1154,"focusable":1155,"viewBox":1348,"xmlnsXLink":1157},[1159,2610,2611],{},[1162,2612],{"id":2613,"d":1592},"MJX-26-TEX-I-1D462",[1195,2615,2616],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,2617,2618],{"dataMmlNode":1202},[1195,2619,2620],{"dataMmlNode":1205},[1207,2621],{"dataC":1601,"xLinkHref":2622},"#MJX-26-TEX-I-1D462",[1142,2624,2626],{"className":2625,"jax":1146},[1145],[1148,2627,2628,2633],{"style":1345,"xmlns":1151,"width":2242,"height":2243,"role":1154,"focusable":1155,"viewBox":2244,"xmlnsXLink":1157},[1159,2629,2630],{},[1162,2631],{"id":2632,"d":2111},"MJX-27-TEX-I-1D463",[1195,2634,2635],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,2636,2637],{"dataMmlNode":1202},[1195,2638,2639],{"dataMmlNode":1205},[1207,2640],{"dataC":2148,"xLinkHref":2641},"#MJX-27-TEX-I-1D463"," receive a higher EC score due to their strengthened connection. This boost is again propagated through the network.",[1027,2644,2645,2646,1290,2679,2710],{},"Higher EC scores translate into increased graph values ",[1142,2647,2649],{"className":2648,"jax":1146},[1145],[1148,2650,2654,2662],{"style":1373,"xmlns":1151,"width":2651,"height":2652,"role":1154,"focusable":1155,"viewBox":2653,"xmlnsXLink":1157},"2.881ex","1.952ex","0 -705 1273.5 862.8",[1159,2655,2656,2659],{},[1162,2657],{"id":2658,"d":1165},"MJX-28-TEX-I-1D43A",[1162,2660],{"id":2661,"d":1592},"MJX-28-TEX-I-1D462",[1195,2663,2664],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,2665,2666],{"dataMmlNode":1202},[1195,2667,2668,2673],{"dataMmlNode":1412},[1195,2669,2670],{"dataMmlNode":1205},[1207,2671],{"dataC":1209,"xLinkHref":2672},"#MJX-28-TEX-I-1D43A",[1195,2674,2676],{"dataMmlNode":1205,"transform":2675},"translate(819,-150) scale(0.707)",[1207,2677],{"dataC":1601,"xLinkHref":2678},"#MJX-28-TEX-I-1D462",[1142,2680,2682],{"className":2681,"jax":1146},[1145],[1148,2683,2686,2694],{"style":1373,"xmlns":1151,"width":2684,"height":2652,"role":1154,"focusable":1155,"viewBox":2685,"xmlnsXLink":1157},"2.742ex","0 -705 1211.9 862.8",[1159,2687,2688,2691],{},[1162,2689],{"id":2690,"d":1165},"MJX-29-TEX-I-1D43A",[1162,2692],{"id":2693,"d":2111},"MJX-29-TEX-I-1D463",[1195,2695,2696],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,2697,2698],{"dataMmlNode":1202},[1195,2699,2700,2705],{"dataMmlNode":1412},[1195,2701,2702],{"dataMmlNode":1205},[1207,2703],{"dataC":1209,"xLinkHref":2704},"#MJX-29-TEX-I-1D43A",[1195,2706,2707],{"dataMmlNode":1205,"transform":2675},[1207,2708],{"dataC":2148,"xLinkHref":2709},"#MJX-29-TEX-I-1D463",", which are used to calculate block rewards. Therefore, providing service proofs directly benefits the involved parties and indirectly enhances the trustworthiness of their neighbors.",[1027,2712,2713,2714,1290,2747,2778],{},"In the next EC calculation, both ",[1142,2715,2717],{"className":2716,"jax":1146},[1145],[1148,2718,2722,2730],{"style":1373,"xmlns":1151,"width":2719,"height":2720,"role":1154,"focusable":1155,"viewBox":2721,"xmlnsXLink":1157},"2.397ex","1.357ex","0 -442 1059.5 599.8",[1159,2723,2724,2727],{},[1162,2725],{"id":2726,"d":1354},"MJX-30-TEX-I-1D465",[1162,2728],{"id":2729,"d":1592},"MJX-30-TEX-I-1D462",[1195,2731,2732],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,2733,2734],{"dataMmlNode":1202},[1195,2735,2736,2741],{"dataMmlNode":1412},[1195,2737,2738],{"dataMmlNode":1205},[1207,2739],{"dataC":1363,"xLinkHref":2740},"#MJX-30-TEX-I-1D465",[1195,2742,2744],{"dataMmlNode":1205,"transform":2743},"translate(605,-150) scale(0.707)",[1207,2745],{"dataC":1601,"xLinkHref":2746},"#MJX-30-TEX-I-1D462",[1142,2748,2750],{"className":2749,"jax":1146},[1145],[1148,2751,2754,2762],{"style":1373,"xmlns":1151,"width":2752,"height":2720,"role":1154,"focusable":1155,"viewBox":2753,"xmlnsXLink":1157},"2.258ex","0 -442 997.9 599.8",[1159,2755,2756,2759],{},[1162,2757],{"id":2758,"d":1354},"MJX-31-TEX-I-1D465",[1162,2760],{"id":2761,"d":2111},"MJX-31-TEX-I-1D463",[1195,2763,2764],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,2765,2766],{"dataMmlNode":1202},[1195,2767,2768,2773],{"dataMmlNode":1412},[1195,2769,2770],{"dataMmlNode":1205},[1207,2771],{"dataC":1363,"xLinkHref":2772},"#MJX-31-TEX-I-1D465",[1195,2774,2775],{"dataMmlNode":1205,"transform":2743},[1207,2776],{"dataC":2148,"xLinkHref":2777},"#MJX-31-TEX-I-1D463"," will increase more than they would have without the proof. This results in higher rewards for both parties and increases their attractiveness as transaction partners in the network; transacting with high EC nodes boosts ones own EC.",[2546,2780,676],{"id":2781},"proofs-as-probabilities",[1027,2783,2784,2785,2788],{},"Modeling proofs as increments in edge weights allows us to treat proofs as ",[1097,2786,2787],{},"probabilistic assessments",", rather than binary evidence of service. This approach acknowledges that proofs for physical services can vary in strength and reliability which is particularly useful for networks that lack hard cryptographic proofs-of-service.",[1027,2790,2791,2792,2811],{},"By quantifying the confidence level ",[1142,2793,2795],{"className":2794,"jax":1146},[1145],[1148,2796,2797,2802],{"style":1345,"xmlns":1151,"width":1563,"height":1274,"role":1154,"focusable":1155,"viewBox":1564,"xmlnsXLink":1157},[1159,2798,2799],{},[1162,2800],{"id":2801,"d":1570},"MJX-32-TEX-I-1D44F",[1195,2803,2804],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,2805,2806],{"dataMmlNode":1202},[1195,2807,2808],{"dataMmlNode":1205},[1207,2809],{"dataC":1579,"xLinkHref":2810},"#MJX-32-TEX-I-1D44F",", we can proportionally adjust the influence of each proof in the network, unlocking a wider range of evidence and increasing the applicability for networks that do not have deterministic proofs or where capturing \u002F computing proofs is cost-prohibitive (which could break the unit economics of the service in question).",[1027,2813,2814,2815,2819],{},"Said another way, physical networks have a ",[2816,2817,2818],"em",{},"spectrum of proofs",". Local Protocol reduces the reliance on absolute measures of trust, which may be impractical or costly, and instead uses the aggregate trust derived from various proofs and interactions within the network.",[2821,2822,2823,2828,2831],"blockquote",{},[1027,2824,2825],{},[1097,2826,2827],{},"Example: Ridesharing",[1027,2829,2830],{},"For example, in a mobility network, a ridesharing application may contain two nodes who submit evidence of their service using a location-proof and time-proof. However, we may not have assurances that these nodes are discrete individuals; it could be a single person acting as both the driver and the rider. In such a case, these rideshare \"proofs\" are not robust like validity proofs are in other blockchain networks.",[1027,2832,2833],{},"The graph is robust to such attacks because colluding nodes will form isolated subgraphs, disconnected from the broader network of honest participants. Nodes with low connectivity will inherently have low Eigenvector Centrality (EC). This ensures that the weight boost for a given transaction is contained to the colluding actor, is unprofitable, and a self-destructive strategy. As edge weights update dynamically, nodes that are disconnected from the main graph (or have limited interactions with genuinely trusted nodes) will find it increasingly costly to maintain their position.",[1060,2835,997],{"id":2836},"random-sampling-and-slashing",[1027,2838,999],{},[1066,2840,1002],{"id":2841},"inverse-doping-vector",[1027,2843,2844,2845,2848],{},"When the network randomly samples a transaction and requests a service proof, the involved nodes must submit the required proof. If they fail to do so, we model this as an ",[1097,2846,2847],{},"inverse doping vector"," in the eigenvector centrality (EC) calculation. Specifically, we decrease the EC scores of the nodes in question and remove the edge representing the fake transaction. This slashing not only impacts the penalized nodes but also affects their neighboring nodes, with the effect diminishing exponentially over longer paths in the graph.",[1027,2850,2851],{},[1142,2852,2854],{"className":2853,"jax":1146},[1145],[1148,2855,2858,2895],{"style":1840,"xmlns":1151,"width":2856,"height":1842,"role":1154,"focusable":1155,"viewBox":2857,"xmlnsXLink":1157},"15.838ex","0 -1097 7000.4 1553.6",[1159,2859,2860,2863,2866,2869,2872,2875,2878,2881,2884,2888,2892],{},[1162,2861],{"id":2862,"d":1398},"MJX-33-TEX-B-1D431",[1162,2864],{"id":2865,"d":1169},"MJX-33-TEX-N-3D",[1162,2867],{"id":2868,"d":1855},"MJX-33-TEX-N-31",[1162,2870],{"id":2871,"d":1382},"MJX-33-TEX-I-1D706",[1162,2873],{"id":2874,"d":1386},"MJX-33-TEX-N-6D",[1162,2876],{"id":2877,"d":1390},"MJX-33-TEX-N-61",[1162,2879],{"id":2880,"d":1394},"MJX-33-TEX-N-78",[1162,2882],{"id":2883,"d":1405},"MJX-33-TEX-B-1D400",[1162,2885],{"id":2886,"d":2887},"MJX-33-TEX-N-2212","M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z",[1162,2889],{"id":2890,"d":2891},"MJX-33-TEX-I-1D451","M366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326Z",[1162,2893],{"id":2894,"d":1640},"MJX-33-TEX-N-20D7",[1195,2896,2897],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,2898,2899,2906,2912,2942,2950,2957,2964],{"dataMmlNode":1202},[1195,2900,2901],{"dataMmlNode":1421,"dataMjxTexclass":1423},[1195,2902,2903],{"dataMmlNode":1205},[1207,2904],{"dataC":1448,"xLinkHref":2905},"#MJX-33-TEX-B-1D431",[1195,2907,2909],{"dataMmlNode":1213,"transform":2908},"translate(884.8,0)",[1207,2910],{"dataC":1217,"xLinkHref":2911},"#MJX-33-TEX-N-3D",[1195,2913,2915,2920,2940],{"dataMmlNode":1898,"transform":2914},"translate(1940.6,0)",[1195,2916,2917],{"dataMmlNode":1707,"transform":1902},[1207,2918],{"dataC":1905,"xLinkHref":2919},"#MJX-33-TEX-N-31",[1195,2921,2922,2927],{"dataMmlNode":1412,"transform":1909},[1195,2923,2924],{"dataMmlNode":1205},[1207,2925],{"dataC":1417,"xLinkHref":2926},"#MJX-33-TEX-I-1D706",[1195,2928,2929],{"dataMmlNode":1421,"transform":1422,"dataMjxTexclass":1423},[1195,2930,2931,2934,2937],{"dataMmlNode":1426},[1207,2932],{"dataC":1429,"xLinkHref":2933},"#MJX-33-TEX-N-6D",[1207,2935],{"dataC":1433,"xLinkHref":2936,"transform":1435},"#MJX-33-TEX-N-61",[1207,2938],{"dataC":1438,"xLinkHref":2939,"transform":1440},"#MJX-33-TEX-N-78",[1933,2941],{"width":1935,"height":1936,"x":1937,"y":1938},[1195,2943,2945],{"dataMmlNode":1421,"dataMjxTexclass":1423,"transform":2944},"translate(3782,0)",[1195,2946,2947],{"dataMmlNode":1205},[1207,2948],{"dataC":1463,"xLinkHref":2949},"#MJX-33-TEX-B-1D400",[1195,2951,2953],{"dataMmlNode":1421,"dataMjxTexclass":1423,"transform":2952},"translate(4651,0)",[1195,2954,2955],{"dataMmlNode":1205},[1207,2956],{"dataC":1448,"xLinkHref":2905},[1195,2958,2960],{"dataMmlNode":1213,"transform":2959},"translate(5480.2,0)",[1207,2961],{"dataC":2962,"xLinkHref":2963},"2212","#MJX-33-TEX-N-2212",[1195,2965,2967],{"dataMmlNode":1421,"dataMjxTexclass":1423,"transform":2966},"translate(6480.4,0)",[1195,2968,2969,2975],{"dataMmlNode":1674},[1195,2970,2971],{"dataMmlNode":1205},[1207,2972],{"dataC":2973,"xLinkHref":2974},"1D451","#MJX-33-TEX-I-1D451",[1195,2976,2978],{"dataMmlNode":1213,"transform":2977},"translate(427,283) translate(-250 0)",[1207,2979],{"dataC":1685,"xLinkHref":2980},"#MJX-33-TEX-N-20D7",[1027,2982,1474,2983,3018],{},[1142,2984,2986],{"className":2985,"jax":1146},[1145],[1148,2987,2992,3000],{"style":2988,"xmlns":1151,"width":2989,"height":2990,"role":1154,"focusable":1155,"viewBox":2991,"xmlnsXLink":1157},"vertical-align: -0.023ex;","1.176ex","2.505ex","0 -1097 520 1107",[1159,2993,2994,2997],{},[1162,2995],{"id":2996,"d":2891},"MJX-34-TEX-I-1D451",[1162,2998],{"id":2999,"d":1640},"MJX-34-TEX-N-20D7",[1195,3001,3002],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,3003,3004],{"dataMmlNode":1202},[1195,3005,3006],{"dataMmlNode":1421,"dataMjxTexclass":1423},[1195,3007,3008,3013],{"dataMmlNode":1674},[1195,3009,3010],{"dataMmlNode":1205},[1207,3011],{"dataC":2973,"xLinkHref":3012},"#MJX-34-TEX-I-1D451",[1195,3014,3015],{"dataMmlNode":1213,"transform":2977},[1207,3016],{"dataC":1685,"xLinkHref":3017},"#MJX-34-TEX-N-20D7"," is a vector with positive entries corresponding to the penalized nodes, effectively reducing their EC scores.",[1027,3020,3021,3022,3041,3042,3073,3074,3106,3107,3126],{},"For example, if node ",[1142,3023,3025],{"className":3024,"jax":1146},[1145],[1148,3026,3027,3032],{"style":1345,"xmlns":1151,"width":1346,"height":1347,"role":1154,"focusable":1155,"viewBox":1348,"xmlnsXLink":1157},[1159,3028,3029],{},[1162,3030],{"id":3031,"d":1592},"MJX-35-TEX-I-1D462",[1195,3033,3034],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,3035,3036],{"dataMmlNode":1202},[1195,3037,3038],{"dataMmlNode":1205},[1207,3039],{"dataC":1601,"xLinkHref":3040},"#MJX-35-TEX-I-1D462"," fails to submit a proof, the inverse doping vector ",[1142,3043,3045],{"className":3044,"jax":1146},[1145],[1148,3046,3047,3055],{"style":2988,"xmlns":1151,"width":2989,"height":2990,"role":1154,"focusable":1155,"viewBox":2991,"xmlnsXLink":1157},[1159,3048,3049,3052],{},[1162,3050],{"id":3051,"d":2891},"MJX-36-TEX-I-1D451",[1162,3053],{"id":3054,"d":1640},"MJX-36-TEX-N-20D7",[1195,3056,3057],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,3058,3059],{"dataMmlNode":1202},[1195,3060,3061],{"dataMmlNode":1421,"dataMjxTexclass":1423},[1195,3062,3063,3068],{"dataMmlNode":1674},[1195,3064,3065],{"dataMmlNode":1205},[1207,3066],{"dataC":2973,"xLinkHref":3067},"#MJX-36-TEX-I-1D451",[1195,3069,3070],{"dataMmlNode":1213,"transform":2977},[1207,3071],{"dataC":1685,"xLinkHref":3072},"#MJX-36-TEX-N-20D7"," has a positive value ",[1142,3075,3077],{"className":3076,"jax":1146},[1145],[1148,3078,3081,3089],{"style":1373,"xmlns":1151,"width":3079,"height":1506,"role":1154,"focusable":1155,"viewBox":3080,"xmlnsXLink":1157},"2.279ex","0 -694 1007.5 851.8",[1159,3082,3083,3086],{},[1162,3084],{"id":3085,"d":2891},"MJX-37-TEX-I-1D451",[1162,3087],{"id":3088,"d":1592},"MJX-37-TEX-I-1D462",[1195,3090,3091],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,3092,3093],{"dataMmlNode":1202},[1195,3094,3095,3100],{"dataMmlNode":1412},[1195,3096,3097],{"dataMmlNode":1205},[1207,3098],{"dataC":2973,"xLinkHref":3099},"#MJX-37-TEX-I-1D451",[1195,3101,3103],{"dataMmlNode":1205,"transform":3102},"translate(553,-150) scale(0.707)",[1207,3104],{"dataC":1601,"xLinkHref":3105},"#MJX-37-TEX-I-1D462"," at position ",[1142,3108,3110],{"className":3109,"jax":1146},[1145],[1148,3111,3112,3117],{"style":1345,"xmlns":1151,"width":1346,"height":1347,"role":1154,"focusable":1155,"viewBox":1348,"xmlnsXLink":1157},[1159,3113,3114],{},[1162,3115],{"id":3116,"d":1592},"MJX-38-TEX-I-1D462",[1195,3118,3119],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,3120,3121],{"dataMmlNode":1202},[1195,3122,3123],{"dataMmlNode":1205},[1207,3124],{"dataC":1601,"xLinkHref":3125},"#MJX-38-TEX-I-1D462"," and zeros elsewhere:",[1027,3128,3129],{},[1142,3130,3132],{"className":3131,"jax":1146},[1145],[1148,3133,3136,3169],{"style":1150,"xmlns":1151,"width":3134,"height":1630,"role":1154,"focusable":1155,"viewBox":3135,"xmlnsXLink":1157},"24.147ex","0 -1097 10672.8 1347",[1159,3137,3138,3141,3144,3147,3150,3153,3156,3159,3162,3165],{},[1162,3139],{"id":3140,"d":2891},"MJX-39-TEX-I-1D451",[1162,3142],{"id":3143,"d":1640},"MJX-39-TEX-N-20D7",[1162,3145],{"id":3146,"d":1169},"MJX-39-TEX-N-3D",[1162,3148],{"id":3149,"d":1173},"MJX-39-TEX-N-28",[1162,3151],{"id":3152,"d":1653},"MJX-39-TEX-N-30",[1162,3154],{"id":3155,"d":1181},"MJX-39-TEX-N-2C",[1162,3157],{"id":3158,"d":1660},"MJX-39-TEX-N-2026",[1162,3160],{"id":3161,"d":1592},"MJX-39-TEX-I-1D462",[1162,3163],{"id":3164,"d":1193},"MJX-39-TEX-N-29",[1162,3166],{"id":3167,"d":3168},"MJX-39-TEX-N-22A4","M55 642T55 648T59 659T66 666T71 668H708Q723 660 723 648T708 628H409V15Q402 2 391 0Q387 0 384 1T379 3T375 6T373 9T371 13T369 16V628H71Q70 628 67 630T59 637Z",[1195,3170,3171],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,3172,3173,3187,3193,3199,3205,3211,3216,3221,3227,3232,3244,3249,3254,3259,3264],{"dataMmlNode":1202},[1195,3174,3175],{"dataMmlNode":1421,"dataMjxTexclass":1423},[1195,3176,3177,3182],{"dataMmlNode":1674},[1195,3178,3179],{"dataMmlNode":1205},[1207,3180],{"dataC":2973,"xLinkHref":3181},"#MJX-39-TEX-I-1D451",[1195,3183,3184],{"dataMmlNode":1213,"transform":2977},[1207,3185],{"dataC":1685,"xLinkHref":3186},"#MJX-39-TEX-N-20D7",[1195,3188,3190],{"dataMmlNode":1213,"transform":3189},"translate(797.8,0)",[1207,3191],{"dataC":1217,"xLinkHref":3192},"#MJX-39-TEX-N-3D",[1195,3194,3196],{"dataMmlNode":1213,"transform":3195},"translate(1853.6,0)",[1207,3197],{"dataC":1224,"xLinkHref":3198},"#MJX-39-TEX-N-28",[1195,3200,3202],{"dataMmlNode":1707,"transform":3201},"translate(2242.6,0)",[1207,3203],{"dataC":1711,"xLinkHref":3204},"#MJX-39-TEX-N-30",[1195,3206,3208],{"dataMmlNode":1213,"transform":3207},"translate(2742.6,0)",[1207,3209],{"dataC":1238,"xLinkHref":3210},"#MJX-39-TEX-N-2C",[1195,3212,3214],{"dataMmlNode":1707,"transform":3213},"translate(3187.2,0)",[1207,3215],{"dataC":1711,"xLinkHref":3204},[1195,3217,3219],{"dataMmlNode":1213,"transform":3218},"translate(3687.2,0)",[1207,3220],{"dataC":1238,"xLinkHref":3210},[1195,3222,3224],{"dataMmlNode":1213,"transform":3223},"translate(4131.9,0)",[1207,3225],{"dataC":1734,"xLinkHref":3226},"#MJX-39-TEX-N-2026",[1195,3228,3230],{"dataMmlNode":1213,"transform":3229},"translate(5470.6,0)",[1207,3231],{"dataC":1238,"xLinkHref":3210},[1195,3233,3235,3239],{"dataMmlNode":1412,"transform":3234},"translate(5915.2,0)",[1195,3236,3237],{"dataMmlNode":1205},[1207,3238],{"dataC":2973,"xLinkHref":3181},[1195,3240,3241],{"dataMmlNode":1205,"transform":3102},[1207,3242],{"dataC":1601,"xLinkHref":3243},"#MJX-39-TEX-I-1D462",[1195,3245,3247],{"dataMmlNode":1213,"transform":3246},"translate(6922.7,0)",[1207,3248],{"dataC":1238,"xLinkHref":3210},[1195,3250,3252],{"dataMmlNode":1213,"transform":3251},"translate(7367.4,0)",[1207,3253],{"dataC":1734,"xLinkHref":3226},[1195,3255,3257],{"dataMmlNode":1213,"transform":3256},"translate(8706,0)",[1207,3258],{"dataC":1238,"xLinkHref":3210},[1195,3260,3262],{"dataMmlNode":1707,"transform":3261},"translate(9150.7,0)",[1207,3263],{"dataC":1711,"xLinkHref":3204},[1195,3265,3268,3273],{"dataMmlNode":3266,"transform":3267},"msup","translate(9650.7,0)",[1195,3269,3270],{"dataMmlNode":1213},[1207,3271],{"dataC":1264,"xLinkHref":3272},"#MJX-39-TEX-N-29",[1195,3274,3276],{"dataMmlNode":1421,"transform":3275,"dataMjxTexclass":1423},"translate(422,363) scale(0.707)",[1195,3277,3278],{"dataMmlNode":1205},[1207,3279],{"dataC":3280,"xLinkHref":3281},"22A4","#MJX-39-TEX-N-22A4",[1027,3283,3284,3285,3324],{},"The impact of this penalty propagates through the network due to the nature of the EC calculation and the edge weights ",[1142,3286,3288],{"className":3287,"jax":1146},[1145],[1148,3289,3290,3301],{"style":1373,"xmlns":1151,"width":2175,"height":2176,"role":1154,"focusable":1155,"viewBox":2177,"xmlnsXLink":1157},[1159,3291,3292,3295,3298],{},[1162,3293],{"id":3294,"d":2183},"MJX-40-TEX-I-1D464",[1162,3296],{"id":3297,"d":1592},"MJX-40-TEX-I-1D462",[1162,3299],{"id":3300,"d":2111},"MJX-40-TEX-I-1D463",[1195,3302,3303],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,3304,3305],{"dataMmlNode":1202},[1195,3306,3307,3312],{"dataMmlNode":1412},[1195,3308,3309],{"dataMmlNode":1205},[1207,3310],{"dataC":2200,"xLinkHref":3311},"#MJX-40-TEX-I-1D464",[1195,3313,3314,3319],{"dataMmlNode":1421,"transform":2204,"dataMjxTexclass":1423},[1195,3315,3316],{"dataMmlNode":1205},[1207,3317],{"dataC":1601,"xLinkHref":3318},"#MJX-40-TEX-I-1D462",[1195,3320,3321],{"dataMmlNode":1205,"transform":2212},[1207,3322],{"dataC":2148,"xLinkHref":3323},"#MJX-40-TEX-I-1D463"," associated with the failed transaction are also decreased or set to zero:",[1027,3326,3327],{},[1142,3328,3330],{"className":3329,"jax":1146},[1145],[1148,3331,3334,3368],{"style":1150,"xmlns":1151,"width":3332,"height":1153,"role":1154,"focusable":1155,"viewBox":3333,"xmlnsXLink":1157},"20.168ex","0 -750 8914.3 1000",[1159,3335,3336,3339,3342,3345,3348,3352,3355,3358,3361,3365],{},[1162,3337],{"id":3338,"d":2183},"MJX-41-TEX-I-1D464",[1162,3340],{"id":3341,"d":1592},"MJX-41-TEX-I-1D462",[1162,3343],{"id":3344,"d":2111},"MJX-41-TEX-I-1D463",[1162,3346],{"id":3347,"d":2283},"MJX-41-TEX-N-2190",[1162,3349],{"id":3350,"d":3351},"MJX-41-TEX-N-D7","M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z",[1162,3353],{"id":3354,"d":1173},"MJX-41-TEX-N-28",[1162,3356],{"id":3357,"d":1855},"MJX-41-TEX-N-31",[1162,3359],{"id":3360,"d":2887},"MJX-41-TEX-N-2212",[1162,3362],{"id":3363,"d":3364},"MJX-41-TEX-I-1D6FE","M31 249Q11 249 11 258Q11 275 26 304T66 365T129 418T206 441Q233 441 239 440Q287 429 318 386T371 255Q385 195 385 170Q385 166 386 166L398 193Q418 244 443 300T486 391T508 430Q510 431 524 431H537Q543 425 543 422Q543 418 522 378T463 251T391 71Q385 55 378 6T357 -100Q341 -165 330 -190T303 -216Q286 -216 286 -188Q286 -138 340 32L346 51L347 69Q348 79 348 100Q348 257 291 317Q251 355 196 355Q148 355 108 329T51 260Q49 251 47 251Q45 249 31 249Z",[1162,3366],{"id":3367,"d":1193},"MJX-41-TEX-N-29",[1195,3369,3370],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,3371,3372,3391,3396,3412,3418,3423,3429,3435,3442],{"dataMmlNode":1202},[1195,3373,3374,3379],{"dataMmlNode":1412},[1195,3375,3376],{"dataMmlNode":1205},[1207,3377],{"dataC":2200,"xLinkHref":3378},"#MJX-41-TEX-I-1D464",[1195,3380,3381,3386],{"dataMmlNode":1421,"transform":2204,"dataMjxTexclass":1423},[1195,3382,3383],{"dataMmlNode":1205},[1207,3384],{"dataC":1601,"xLinkHref":3385},"#MJX-41-TEX-I-1D462",[1195,3387,3388],{"dataMmlNode":1205,"transform":2212},[1207,3389],{"dataC":2148,"xLinkHref":3390},"#MJX-41-TEX-I-1D463",[1195,3392,3393],{"dataMmlNode":1213,"transform":2315},[1207,3394],{"dataC":2318,"xLinkHref":3395},"#MJX-41-TEX-N-2190",[1195,3397,3398,3402],{"dataMmlNode":1412,"transform":2322},[1195,3399,3400],{"dataMmlNode":1205},[1207,3401],{"dataC":2200,"xLinkHref":3378},[1195,3403,3404,3408],{"dataMmlNode":1421,"transform":2204,"dataMjxTexclass":1423},[1195,3405,3406],{"dataMmlNode":1205},[1207,3407],{"dataC":1601,"xLinkHref":3385},[1195,3409,3410],{"dataMmlNode":1205,"transform":2212},[1207,3411],{"dataC":2148,"xLinkHref":3390},[1195,3413,3414],{"dataMmlNode":1213,"transform":2339},[1207,3415],{"dataC":3416,"xLinkHref":3417},"D7","#MJX-41-TEX-N-D7",[1195,3419,3420],{"dataMmlNode":1213,"transform":2345},[1207,3421],{"dataC":1224,"xLinkHref":3422},"#MJX-41-TEX-N-28",[1195,3424,3426],{"dataMmlNode":1707,"transform":3425},"translate(6259.8,0)",[1207,3427],{"dataC":1905,"xLinkHref":3428},"#MJX-41-TEX-N-31",[1195,3430,3432],{"dataMmlNode":1213,"transform":3431},"translate(6982,0)",[1207,3433],{"dataC":2962,"xLinkHref":3434},"#MJX-41-TEX-N-2212",[1195,3436,3438],{"dataMmlNode":1205,"transform":3437},"translate(7982.3,0)",[1207,3439],{"dataC":3440,"xLinkHref":3441},"1D6FE","#MJX-41-TEX-I-1D6FE",[1195,3443,3445],{"dataMmlNode":1213,"transform":3444},"translate(8525.3,0)",[1207,3446],{"dataC":1264,"xLinkHref":3447},"#MJX-41-TEX-N-29",[1066,3449,1007],{"id":3450},"slashing-neighbors",[1027,3452,3453],{},"To further encourage self-policing, we can extend the penalty to nodes directly connected to the penalized node. This is modeled by adjusting the inverse doping vector to include these neighboring nodes with scaled penalties.",[1027,3455,3456,3457,3507,3508,3527,3528,3559],{},"Let ",[1142,3458,3460],{"className":3459,"jax":1146},[1145],[1148,3461,3464,3479],{"style":1150,"xmlns":1151,"width":3462,"height":1153,"role":1154,"focusable":1155,"viewBox":3463,"xmlnsXLink":1157},"5.063ex","0 -750 2238 1000",[1159,3465,3466,3470,3473,3476],{},[1162,3467],{"id":3468,"d":3469},"MJX-42-TEX-I-1D441","M234 637Q231 637 226 637Q201 637 196 638T191 649Q191 676 202 682Q204 683 299 683Q376 683 387 683T401 677Q612 181 616 168L670 381Q723 592 723 606Q723 633 659 637Q635 637 635 648Q635 650 637 660Q641 676 643 679T653 683Q656 683 684 682T767 680Q817 680 843 681T873 682Q888 682 888 672Q888 650 880 642Q878 637 858 637Q787 633 769 597L620 7Q618 0 599 0Q585 0 582 2Q579 5 453 305L326 604L261 344Q196 88 196 79Q201 46 268 46H278Q284 41 284 38T282 19Q278 6 272 0H259Q228 2 151 2Q123 2 100 2T63 2T46 1Q31 1 31 10Q31 14 34 26T39 40Q41 46 62 46Q130 49 150 85Q154 91 221 362L289 634Q287 635 234 637Z",[1162,3471],{"id":3472,"d":1173},"MJX-42-TEX-N-28",[1162,3474],{"id":3475,"d":1592},"MJX-42-TEX-I-1D462",[1162,3477],{"id":3478,"d":1193},"MJX-42-TEX-N-29",[1195,3480,3481],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,3482,3483,3489,3495,3501],{"dataMmlNode":1202},[1195,3484,3485],{"dataMmlNode":1205},[1207,3486],{"dataC":3487,"xLinkHref":3488},"1D441","#MJX-42-TEX-I-1D441",[1195,3490,3492],{"dataMmlNode":1213,"transform":3491},"translate(888,0)",[1207,3493],{"dataC":1224,"xLinkHref":3494},"#MJX-42-TEX-N-28",[1195,3496,3498],{"dataMmlNode":1205,"transform":3497},"translate(1277,0)",[1207,3499],{"dataC":1601,"xLinkHref":3500},"#MJX-42-TEX-I-1D462",[1195,3502,3504],{"dataMmlNode":1213,"transform":3503},"translate(1849,0)",[1207,3505],{"dataC":1264,"xLinkHref":3506},"#MJX-42-TEX-N-29"," denote the set of nodes directly connected to node ",[1142,3509,3511],{"className":3510,"jax":1146},[1145],[1148,3512,3513,3518],{"style":1345,"xmlns":1151,"width":1346,"height":1347,"role":1154,"focusable":1155,"viewBox":1348,"xmlnsXLink":1157},[1159,3514,3515],{},[1162,3516],{"id":3517,"d":1592},"MJX-43-TEX-I-1D462",[1195,3519,3520],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,3521,3522],{"dataMmlNode":1202},[1195,3523,3524],{"dataMmlNode":1205},[1207,3525],{"dataC":1601,"xLinkHref":3526},"#MJX-43-TEX-I-1D462",". We define the inverse doping vector ",[1142,3529,3531],{"className":3530,"jax":1146},[1145],[1148,3532,3533,3541],{"style":2988,"xmlns":1151,"width":2989,"height":2990,"role":1154,"focusable":1155,"viewBox":2991,"xmlnsXLink":1157},[1159,3534,3535,3538],{},[1162,3536],{"id":3537,"d":2891},"MJX-44-TEX-I-1D451",[1162,3539],{"id":3540,"d":1640},"MJX-44-TEX-N-20D7",[1195,3542,3543],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,3544,3545],{"dataMmlNode":1202},[1195,3546,3547],{"dataMmlNode":1421,"dataMjxTexclass":1423},[1195,3548,3549,3554],{"dataMmlNode":1674},[1195,3550,3551],{"dataMmlNode":1205},[1207,3552],{"dataC":2973,"xLinkHref":3553},"#MJX-44-TEX-I-1D451",[1195,3555,3556],{"dataMmlNode":1213,"transform":2977},[1207,3557],{"dataC":1685,"xLinkHref":3558},"#MJX-44-TEX-N-20D7"," as:",[1027,3561,3562],{},[1142,3563,3565],{"className":3564,"jax":1146},[1145],[1148,3566,3571,3663],{"style":3567,"xmlns":1151,"width":3568,"height":3569,"role":1154,"focusable":1155,"viewBox":3570,"xmlnsXLink":1157},"vertical-align: -3.281ex;","26.197ex","7.692ex","0 -1950 11579 3400",[1159,3572,3573,3576,3580,3583,3587,3591,3595,3599,3602,3606,3610,3613,3617,3620,3623,3626,3629,3632,3635,3639,3643,3647,3651,3655,3659],{},[1162,3574],{"id":3575,"d":2891},"MJX-45-TEX-I-1D451",[1162,3577],{"id":3578,"d":3579},"MJX-45-TEX-I-1D456","M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z",[1162,3581],{"id":3582,"d":1169},"MJX-45-TEX-N-3D",[1162,3584],{"id":3585,"d":3586},"MJX-45-TEX-S4-23A7","M712 899L718 893V876V865Q718 854 704 846Q627 793 577 710T510 525Q510 524 509 521Q505 493 504 349Q504 345 504 334Q504 277 504 240Q504 -2 503 -4Q502 -8 494 -9T444 -10Q392 -10 390 -9Q387 -8 386 -5Q384 5 384 230Q384 262 384 312T383 382Q383 481 392 535T434 656Q510 806 664 892L677 899H712Z",[1162,3588],{"id":3589,"d":3590},"MJX-45-TEX-S4-23A9","M718 -893L712 -899H677L666 -893Q542 -825 468 -714T385 -476Q384 -466 384 -282Q384 3 385 5L389 9Q392 10 444 10Q486 10 494 9T503 4Q504 2 504 -239V-310V-366Q504 -470 508 -513T530 -609Q546 -657 569 -698T617 -767T661 -812T699 -843T717 -856T718 -876V-893Z",[1162,3592],{"id":3593,"d":3594},"MJX-45-TEX-S4-23A8","M389 1159Q391 1160 455 1160Q496 1160 498 1159Q501 1158 502 1155Q504 1145 504 924Q504 691 503 682Q494 549 425 439T243 259L229 250L243 241Q349 175 421 66T503 -182Q504 -191 504 -424Q504 -600 504 -629T499 -659H498Q496 -660 444 -660T390 -659Q387 -658 386 -655Q384 -645 384 -425V-282Q384 -176 377 -116T342 10Q325 54 301 92T255 155T214 196T183 222T171 232Q170 233 170 250T171 268Q171 269 191 284T240 331T300 407T354 524T383 679Q384 691 384 925Q384 1152 385 1155L389 1159Z",[1162,3596],{"id":3597,"d":3598},"MJX-45-TEX-S4-23AA","M384 150V266Q384 304 389 309Q391 310 455 310Q496 310 498 309Q502 308 503 298Q504 283 504 150Q504 32 504 12T499 -9H498Q496 -10 444 -10T390 -9Q386 -8 385 2Q384 17 384 150Z",[1162,3600],{"id":3601,"d":1592},"MJX-45-TEX-I-1D462",[1162,3603],{"id":3604,"d":3605},"MJX-45-TEX-N-69","M69 609Q69 637 87 653T131 669Q154 667 171 652T188 609Q188 579 171 564T129 549Q104 549 87 564T69 609ZM247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247Z",[1162,3607],{"id":3608,"d":3609},"MJX-45-TEX-N-66","M273 0Q255 3 146 3Q43 3 34 0H26V46H42Q70 46 91 49Q99 52 103 60Q104 62 104 224V385H33V431H104V497L105 564L107 574Q126 639 171 668T266 704Q267 704 275 704T289 705Q330 702 351 679T372 627Q372 604 358 590T321 576T284 590T270 627Q270 647 288 667H284Q280 668 273 668Q245 668 223 647T189 592Q183 572 182 497V431H293V385H185V225Q185 63 186 61T189 57T194 54T199 51T206 49T213 48T222 47T231 47T241 46T251 46H282V0H273Z",[1162,3611],{"id":3612,"d":161},"MJX-45-TEX-N-A0",[1162,3614],{"id":3615,"d":3616},"MJX-45-TEX-I-1D6FC","M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z",[1162,3618],{"id":3619,"d":3351},"MJX-45-TEX-N-D7",[1162,3621],{"id":3622,"d":2118},"MJX-45-TEX-N-2208",[1162,3624],{"id":3625,"d":3469},"MJX-45-TEX-I-1D441",[1162,3627],{"id":3628,"d":1173},"MJX-45-TEX-N-28",[1162,3630],{"id":3631,"d":1193},"MJX-45-TEX-N-29",[1162,3633],{"id":3634,"d":1653},"MJX-45-TEX-N-30",[1162,3636],{"id":3637,"d":3638},"MJX-45-TEX-N-6F","M28 214Q28 309 93 378T250 448Q340 448 405 380T471 215Q471 120 407 55T250 -10Q153 -10 91 57T28 214ZM250 30Q372 30 372 193V225V250Q372 272 371 288T364 326T348 362T317 390T268 410Q263 411 252 411Q222 411 195 399Q152 377 139 338T126 246V226Q126 130 145 91Q177 30 250 30Z",[1162,3640],{"id":3641,"d":3642},"MJX-45-TEX-N-74","M27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27Z",[1162,3644],{"id":3645,"d":3646},"MJX-45-TEX-N-68","M41 46H55Q94 46 102 60V68Q102 77 102 91T102 124T102 167T103 217T103 272T103 329Q103 366 103 407T103 482T102 542T102 586T102 603Q99 622 88 628T43 637H25V660Q25 683 27 683L37 684Q47 685 66 686T103 688Q120 689 140 690T170 693T181 694H184V367Q244 442 328 442Q451 442 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z",[1162,3648],{"id":3649,"d":3650},"MJX-45-TEX-N-65","M28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275Z",[1162,3652],{"id":3653,"d":3654},"MJX-45-TEX-N-72","M36 46H50Q89 46 97 60V68Q97 77 97 91T98 122T98 161T98 203Q98 234 98 269T98 328L97 351Q94 370 83 376T38 385H20V408Q20 431 22 431L32 432Q42 433 60 434T96 436Q112 437 131 438T160 441T171 442H174V373Q213 441 271 441H277Q322 441 343 419T364 373Q364 352 351 337T313 322Q288 322 276 338T263 372Q263 381 265 388T270 400T273 405Q271 407 250 401Q234 393 226 386Q179 341 179 207V154Q179 141 179 127T179 101T180 81T180 66V61Q181 59 183 57T188 54T193 51T200 49T207 48T216 47T225 47T235 46T245 46H276V0H267Q249 3 140 3Q37 3 28 0H20V46H36Z",[1162,3656],{"id":3657,"d":3658},"MJX-45-TEX-N-77","M90 368Q84 378 76 380T40 385H18V431H24L43 430Q62 430 84 429T116 428Q206 428 221 431H229V385H215Q177 383 177 368Q177 367 221 239L265 113L339 328L333 345Q323 374 316 379Q308 384 278 385H258V431H264Q270 428 348 428Q439 428 454 431H461V385H452Q404 385 404 369Q404 366 418 324T449 234T481 143L496 100L537 219Q579 341 579 347Q579 363 564 373T530 385H522V431H529Q541 428 624 428Q692 428 698 431H703V385H697Q696 385 691 385T682 384Q635 377 619 334L559 161Q546 124 528 71Q508 12 503 1T487 -11H479Q460 -11 456 -4Q455 -3 407 133L361 267Q359 263 266 -4Q261 -11 243 -11H238Q225 -11 220 -3L90 368Z",[1162,3660],{"id":3661,"d":3662},"MJX-45-TEX-N-73","M295 316Q295 356 268 385T190 414Q154 414 128 401Q98 382 98 349Q97 344 98 336T114 312T157 287Q175 282 201 278T245 269T277 256Q294 248 310 236T342 195T359 133Q359 71 321 31T198 -10H190Q138 -10 94 26L86 19L77 10Q71 4 65 -1L54 -11H46H42Q39 -11 33 -5V74V132Q33 153 35 157T45 162H54Q66 162 70 158T75 146T82 119T101 77Q136 26 198 26Q295 26 295 104Q295 133 277 151Q257 175 194 187T111 210Q75 227 54 256T33 318Q33 357 50 384T93 424T143 442T187 447H198Q238 447 268 432L283 424L292 431Q302 440 314 448H322H326Q329 448 335 442V310L329 304H301Q295 310 295 316Z",[1195,3664,3665],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,3666,3667,3680,3686],{"dataMmlNode":1202},[1195,3668,3669,3674],{"dataMmlNode":1412},[1195,3670,3671],{"dataMmlNode":1205},[1207,3672],{"dataC":2973,"xLinkHref":3673},"#MJX-45-TEX-I-1D451",[1195,3675,3676],{"dataMmlNode":1205,"transform":3102},[1207,3677],{"dataC":3678,"xLinkHref":3679},"1D456","#MJX-45-TEX-I-1D456",[1195,3681,3683],{"dataMmlNode":1213,"transform":3682},"translate(1124.7,0)",[1207,3684],{"dataC":1217,"xLinkHref":3685},"#MJX-45-TEX-N-3D",[1195,3687,3690,3723,3901],{"dataMmlNode":3688,"transform":3689},"mrow","translate(2180.5,0)",[1195,3691,3692,3697,3702,3707,3718],{"dataMmlNode":1213},[1207,3693],{"dataC":3694,"xLinkHref":3695,"transform":3696},"23A7","#MJX-45-TEX-S4-23A7","translate(0,1051)",[1207,3698],{"dataC":3699,"xLinkHref":3700,"transform":3701},"23A9","#MJX-45-TEX-S4-23A9","translate(0,-551)",[1207,3703],{"dataC":3704,"xLinkHref":3705,"transform":3706},"23A8","#MJX-45-TEX-S4-23A8","translate(0,0)",[1148,3708,3713],{"width":3709,"height":3710,"y":3711,"x":1198,"viewBox":3712},889,81,"1060","0 14.3 889 81",[1207,3714],{"dataC":3715,"xLinkHref":3716,"transform":3717},"23AA","#MJX-45-TEX-S4-23AA","scale(1,0.398)",[1148,3719,3721],{"width":3709,"height":3710,"y":3720,"x":1198,"viewBox":3712},"-641",[1207,3722],{"dataC":3715,"xLinkHref":3716,"transform":3717},[1195,3724,3727,3779,3848],{"dataMmlNode":3725,"transform":3726},"mtable","translate(889,0)",[1195,3728,3731,3745],{"dataMmlNode":3729,"transform":3730},"mtr","translate(0,1200)",[1195,3732,3734],{"dataMmlNode":3733},"mtd",[1195,3735,3736,3740],{"dataMmlNode":1412},[1195,3737,3738],{"dataMmlNode":1205},[1207,3739],{"dataC":2973,"xLinkHref":3673},[1195,3741,3742],{"dataMmlNode":1205,"transform":3102},[1207,3743],{"dataC":1601,"xLinkHref":3744},"#MJX-45-TEX-I-1D462",[1195,3746,3748,3764,3769,3774],{"dataMmlNode":3733,"transform":3747},"translate(3869.9,0)",[1195,3749,3750,3754,3759],{"dataMmlNode":1426},[1207,3751],{"dataC":3752,"xLinkHref":3753},"69","#MJX-45-TEX-N-69",[1207,3755],{"dataC":3756,"xLinkHref":3757,"transform":3758},"66","#MJX-45-TEX-N-66","translate(278,0)",[1207,3760],{"dataC":3761,"xLinkHref":3762,"transform":3763},"A0","#MJX-45-TEX-N-A0","translate(584,0)",[1195,3765,3767],{"dataMmlNode":1205,"transform":3766},"translate(834,0)",[1207,3768],{"dataC":3678,"xLinkHref":3679},[1195,3770,3772],{"dataMmlNode":1213,"transform":3771},"translate(1456.8,0)",[1207,3773],{"dataC":1217,"xLinkHref":3685},[1195,3775,3777],{"dataMmlNode":1205,"transform":3776},"translate(2512.6,0)",[1207,3778],{"dataC":1601,"xLinkHref":3744},[1195,3780,3781,3806],{"dataMmlNode":3729,"transform":3706},[1195,3782,3783,3789,3795],{"dataMmlNode":3733},[1195,3784,3785],{"dataMmlNode":1205},[1207,3786],{"dataC":3787,"xLinkHref":3788},"1D6FC","#MJX-45-TEX-I-1D6FC",[1195,3790,3792],{"dataMmlNode":1213,"transform":3791},"translate(862.2,0)",[1207,3793],{"dataC":3416,"xLinkHref":3794},"#MJX-45-TEX-N-D7",[1195,3796,3798,3802],{"dataMmlNode":1412,"transform":3797},"translate(1862.4,0)",[1195,3799,3800],{"dataMmlNode":1205},[1207,3801],{"dataC":2973,"xLinkHref":3673},[1195,3803,3804],{"dataMmlNode":1205,"transform":3102},[1207,3805],{"dataC":1601,"xLinkHref":3744},[1195,3807,3808,3816,3820,3825,3831,3837,3842],{"dataMmlNode":3733,"transform":3747},[1195,3809,3810,3812,3814],{"dataMmlNode":1426},[1207,3811],{"dataC":3752,"xLinkHref":3753},[1207,3813],{"dataC":3756,"xLinkHref":3757,"transform":3758},[1207,3815],{"dataC":3761,"xLinkHref":3762,"transform":3763},[1195,3817,3818],{"dataMmlNode":1205,"transform":3766},[1207,3819],{"dataC":3678,"xLinkHref":3679},[1195,3821,3822],{"dataMmlNode":1213,"transform":3771},[1207,3823],{"dataC":2161,"xLinkHref":3824},"#MJX-45-TEX-N-2208",[1195,3826,3828],{"dataMmlNode":1205,"transform":3827},"translate(2401.6,0)",[1207,3829],{"dataC":3487,"xLinkHref":3830},"#MJX-45-TEX-I-1D441",[1195,3832,3834],{"dataMmlNode":1213,"transform":3833},"translate(3289.6,0)",[1207,3835],{"dataC":1224,"xLinkHref":3836},"#MJX-45-TEX-N-28",[1195,3838,3840],{"dataMmlNode":1205,"transform":3839},"translate(3678.6,0)",[1207,3841],{"dataC":1601,"xLinkHref":3744},[1195,3843,3845],{"dataMmlNode":1213,"transform":3844},"translate(4250.6,0)",[1207,3846],{"dataC":1264,"xLinkHref":3847},"#MJX-45-TEX-N-29",[1195,3849,3851,3858],{"dataMmlNode":3729,"transform":3850},"translate(0,-1200)",[1195,3852,3853],{"dataMmlNode":3733},[1195,3854,3855],{"dataMmlNode":1707},[1207,3856],{"dataC":1711,"xLinkHref":3857},"#MJX-45-TEX-N-30",[1195,3859,3860],{"dataMmlNode":3733,"transform":3747},[1195,3861,3862,3866,3871,3875,3880,3885,3890,3893,3898],{"dataMmlNode":1426},[1207,3863],{"dataC":3864,"xLinkHref":3865},"6F","#MJX-45-TEX-N-6F",[1207,3867],{"dataC":3868,"xLinkHref":3869,"transform":3870},"74","#MJX-45-TEX-N-74","translate(500,0)",[1207,3872],{"dataC":3873,"xLinkHref":3874,"transform":3726},"68","#MJX-45-TEX-N-68",[1207,3876],{"dataC":3877,"xLinkHref":3878,"transform":3879},"65","#MJX-45-TEX-N-65","translate(1445,0)",[1207,3881],{"dataC":3882,"xLinkHref":3883,"transform":3884},"72","#MJX-45-TEX-N-72","translate(1889,0)",[1207,3886],{"dataC":3887,"xLinkHref":3888,"transform":3889},"77","#MJX-45-TEX-N-77","translate(2281,0)",[1207,3891],{"dataC":3752,"xLinkHref":3753,"transform":3892},"translate(3003,0)",[1207,3894],{"dataC":3895,"xLinkHref":3896,"transform":3897},"73","#MJX-45-TEX-N-73","translate(3281,0)",[1207,3899],{"dataC":3877,"xLinkHref":3878,"transform":3900},"translate(3675,0)",[1195,3902],{"dataMmlNode":1213,"transform":3903},"translate(9398.5,0) translate(0 250)",[1027,3905,1474,3906,3963,3964,4030,4031,4072,4073,4128],{},[1142,3907,3909],{"className":3908,"jax":1146},[1145],[1148,3910,3915,3930],{"style":3911,"xmlns":1151,"width":3912,"height":3913,"role":1154,"focusable":1155,"viewBox":3914,"xmlnsXLink":1157},"vertical-align: -0.09ex;","9.745ex","1.597ex","0 -666 4307.1 706",[1159,3916,3917,3920,3924,3927],{},[1162,3918],{"id":3919,"d":1653},"MJX-46-TEX-N-30",[1162,3921],{"id":3922,"d":3923},"MJX-46-TEX-N-3C","M694 -11T694 -19T688 -33T678 -40Q671 -40 524 29T234 166L90 235Q83 240 83 250Q83 261 91 266Q664 540 678 540Q681 540 687 534T694 519T687 505Q686 504 417 376L151 250L417 124Q686 -4 687 -5Q694 -11 694 -19Z",[1162,3925],{"id":3926,"d":3616},"MJX-46-TEX-I-1D6FC",[1162,3928],{"id":3929,"d":1855},"MJX-46-TEX-N-31",[1195,3931,3932],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,3933,3934,3939,3946,3952,3957],{"dataMmlNode":1202},[1195,3935,3936],{"dataMmlNode":1707},[1207,3937],{"dataC":1711,"xLinkHref":3938},"#MJX-46-TEX-N-30",[1195,3940,3942],{"dataMmlNode":1213,"transform":3941},"translate(777.8,0)",[1207,3943],{"dataC":3944,"xLinkHref":3945},"3C","#MJX-46-TEX-N-3C",[1195,3947,3949],{"dataMmlNode":1205,"transform":3948},"translate(1833.6,0)",[1207,3950],{"dataC":3787,"xLinkHref":3951},"#MJX-46-TEX-I-1D6FC",[1195,3953,3955],{"dataMmlNode":1213,"transform":3954},"translate(2751.3,0)",[1207,3956],{"dataC":3944,"xLinkHref":3945},[1195,3958,3960],{"dataMmlNode":1707,"transform":3959},"translate(3807.1,0)",[1207,3961],{"dataC":1905,"xLinkHref":3962},"#MJX-46-TEX-N-31"," is the decay factor representing the reduced penalty on neighboring nodes. For each node ",[1142,3965,3967],{"className":3966,"jax":1146},[1145],[1148,3968,3971,3991],{"style":1150,"xmlns":1151,"width":3969,"height":1153,"role":1154,"focusable":1155,"viewBox":3970,"xmlnsXLink":1157},"8.61ex","0 -750 3805.6 1000",[1159,3972,3973,3976,3979,3982,3985,3988],{},[1162,3974],{"id":3975,"d":3579},"MJX-47-TEX-I-1D456",[1162,3977],{"id":3978,"d":2118},"MJX-47-TEX-N-2208",[1162,3980],{"id":3981,"d":3469},"MJX-47-TEX-I-1D441",[1162,3983],{"id":3984,"d":1173},"MJX-47-TEX-N-28",[1162,3986],{"id":3987,"d":1592},"MJX-47-TEX-I-1D462",[1162,3989],{"id":3990,"d":1193},"MJX-47-TEX-N-29",[1195,3992,3993],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,3994,3995,4000,4006,4012,4018,4024],{"dataMmlNode":1202},[1195,3996,3997],{"dataMmlNode":1205},[1207,3998],{"dataC":3678,"xLinkHref":3999},"#MJX-47-TEX-I-1D456",[1195,4001,4003],{"dataMmlNode":1213,"transform":4002},"translate(622.8,0)",[1207,4004],{"dataC":2161,"xLinkHref":4005},"#MJX-47-TEX-N-2208",[1195,4007,4009],{"dataMmlNode":1205,"transform":4008},"translate(1567.6,0)",[1207,4010],{"dataC":3487,"xLinkHref":4011},"#MJX-47-TEX-I-1D441",[1195,4013,4015],{"dataMmlNode":1213,"transform":4014},"translate(2455.6,0)",[1207,4016],{"dataC":1224,"xLinkHref":4017},"#MJX-47-TEX-N-28",[1195,4019,4021],{"dataMmlNode":1205,"transform":4020},"translate(2844.6,0)",[1207,4022],{"dataC":1601,"xLinkHref":4023},"#MJX-47-TEX-I-1D462",[1195,4025,4027],{"dataMmlNode":1213,"transform":4026},"translate(3416.6,0)",[1207,4028],{"dataC":1264,"xLinkHref":4029},"#MJX-47-TEX-N-29",", we can adjust the edge weights ",[1142,4032,4034],{"className":4033,"jax":1146},[1145],[1148,4035,4038,4049],{"style":1373,"xmlns":1151,"width":4036,"height":2176,"role":1154,"focusable":1155,"viewBox":4037,"xmlnsXLink":1157},"3.275ex","0 -443 1447.4 600.8",[1159,4039,4040,4043,4046],{},[1162,4041],{"id":4042,"d":2183},"MJX-48-TEX-I-1D464",[1162,4044],{"id":4045,"d":1592},"MJX-48-TEX-I-1D462",[1162,4047],{"id":4048,"d":3579},"MJX-48-TEX-I-1D456",[1195,4050,4051],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,4052,4053],{"dataMmlNode":1202},[1195,4054,4055,4060],{"dataMmlNode":1412},[1195,4056,4057],{"dataMmlNode":1205},[1207,4058],{"dataC":2200,"xLinkHref":4059},"#MJX-48-TEX-I-1D464",[1195,4061,4062,4067],{"dataMmlNode":1421,"transform":2204,"dataMjxTexclass":1423},[1195,4063,4064],{"dataMmlNode":1205},[1207,4065],{"dataC":1601,"xLinkHref":4066},"#MJX-48-TEX-I-1D462",[1195,4068,4069],{"dataMmlNode":1205,"transform":2212},[1207,4070],{"dataC":3678,"xLinkHref":4071},"#MJX-48-TEX-I-1D456"," associated with the neighboring node where ",[1142,4074,4076],{"className":4075,"jax":1146},[1145],[1148,4077,4082,4097],{"style":4078,"xmlns":1151,"width":4079,"height":4080,"role":1154,"focusable":1155,"viewBox":4081,"xmlnsXLink":1157},"vertical-align: -0.489ex;","9.674ex","2.084ex","0 -705 4276.1 921",[1159,4083,4084,4087,4090,4094],{},[1162,4085],{"id":4086,"d":1653},"MJX-49-TEX-N-30",[1162,4088],{"id":4089,"d":3923},"MJX-49-TEX-N-3C",[1162,4091],{"id":4092,"d":4093},"MJX-49-TEX-I-1D6FD","M29 -194Q23 -188 23 -186Q23 -183 102 134T186 465Q208 533 243 584T309 658Q365 705 429 705H431Q493 705 533 667T573 570Q573 465 469 396L482 383Q533 332 533 252Q533 139 448 65T257 -10Q227 -10 203 -2T165 17T143 40T131 59T126 65L62 -188Q60 -194 42 -194H29ZM353 431Q392 431 427 419L432 422Q436 426 439 429T449 439T461 453T472 471T484 495T493 524T501 560Q503 569 503 593Q503 611 502 616Q487 667 426 667Q384 667 347 643T286 582T247 514T224 455Q219 439 186 308T152 168Q151 163 151 147Q151 99 173 68Q204 26 260 26Q302 26 349 51T425 137Q441 171 449 214T457 279Q457 337 422 372Q380 358 347 358H337Q258 358 258 389Q258 396 261 403Q275 431 353 431Z",[1162,4095],{"id":4096,"d":3364},"MJX-49-TEX-I-1D6FE",[1195,4098,4099],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,4100,4101,4106,4111,4117,4122],{"dataMmlNode":1202},[1195,4102,4103],{"dataMmlNode":1707},[1207,4104],{"dataC":1711,"xLinkHref":4105},"#MJX-49-TEX-N-30",[1195,4107,4108],{"dataMmlNode":1213,"transform":3941},[1207,4109],{"dataC":3944,"xLinkHref":4110},"#MJX-49-TEX-N-3C",[1195,4112,4113],{"dataMmlNode":1205,"transform":3948},[1207,4114],{"dataC":4115,"xLinkHref":4116},"1D6FD","#MJX-49-TEX-I-1D6FD",[1195,4118,4120],{"dataMmlNode":1213,"transform":4119},"translate(2677.3,0)",[1207,4121],{"dataC":3944,"xLinkHref":4110},[1195,4123,4125],{"dataMmlNode":1205,"transform":4124},"translate(3733.1,0)",[1207,4126],{"dataC":3440,"xLinkHref":4127},"#MJX-49-TEX-I-1D6FE"," is a smaller slashing factor for the connected edges.",[1027,4130,4131],{},[1142,4132,4134],{"className":4133,"jax":1146},[1145],[1148,4135,4138,4170],{"style":1150,"xmlns":1151,"width":4136,"height":1153,"role":1154,"focusable":1155,"viewBox":4137,"xmlnsXLink":1157},"19.772ex","0 -750 8739.3 1000",[1159,4139,4140,4143,4146,4149,4152,4155,4158,4161,4164,4167],{},[1162,4141],{"id":4142,"d":2183},"MJX-50-TEX-I-1D464",[1162,4144],{"id":4145,"d":1592},"MJX-50-TEX-I-1D462",[1162,4147],{"id":4148,"d":3579},"MJX-50-TEX-I-1D456",[1162,4150],{"id":4151,"d":2283},"MJX-50-TEX-N-2190",[1162,4153],{"id":4154,"d":3351},"MJX-50-TEX-N-D7",[1162,4156],{"id":4157,"d":1173},"MJX-50-TEX-N-28",[1162,4159],{"id":4160,"d":1855},"MJX-50-TEX-N-31",[1162,4162],{"id":4163,"d":2887},"MJX-50-TEX-N-2212",[1162,4165],{"id":4166,"d":4093},"MJX-50-TEX-I-1D6FD",[1162,4168],{"id":4169,"d":1193},"MJX-50-TEX-N-29",[1195,4171,4172],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,4173,4174,4193,4199,4215,4221,4227,4233,4239,4245],{"dataMmlNode":1202},[1195,4175,4176,4181],{"dataMmlNode":1412},[1195,4177,4178],{"dataMmlNode":1205},[1207,4179],{"dataC":2200,"xLinkHref":4180},"#MJX-50-TEX-I-1D464",[1195,4182,4183,4188],{"dataMmlNode":1421,"transform":2204,"dataMjxTexclass":1423},[1195,4184,4185],{"dataMmlNode":1205},[1207,4186],{"dataC":1601,"xLinkHref":4187},"#MJX-50-TEX-I-1D462",[1195,4189,4190],{"dataMmlNode":1205,"transform":2212},[1207,4191],{"dataC":3678,"xLinkHref":4192},"#MJX-50-TEX-I-1D456",[1195,4194,4196],{"dataMmlNode":1213,"transform":4195},"translate(1725.2,0)",[1207,4197],{"dataC":2318,"xLinkHref":4198},"#MJX-50-TEX-N-2190",[1195,4200,4201,4205],{"dataMmlNode":1412,"transform":3892},[1195,4202,4203],{"dataMmlNode":1205},[1207,4204],{"dataC":2200,"xLinkHref":4180},[1195,4206,4207,4211],{"dataMmlNode":1421,"transform":2204,"dataMjxTexclass":1423},[1195,4208,4209],{"dataMmlNode":1205},[1207,4210],{"dataC":1601,"xLinkHref":4187},[1195,4212,4213],{"dataMmlNode":1205,"transform":2212},[1207,4214],{"dataC":3678,"xLinkHref":4192},[1195,4216,4218],{"dataMmlNode":1213,"transform":4217},"translate(4672.6,0)",[1207,4219],{"dataC":3416,"xLinkHref":4220},"#MJX-50-TEX-N-D7",[1195,4222,4224],{"dataMmlNode":1213,"transform":4223},"translate(5672.8,0)",[1207,4225],{"dataC":1224,"xLinkHref":4226},"#MJX-50-TEX-N-28",[1195,4228,4230],{"dataMmlNode":1707,"transform":4229},"translate(6061.8,0)",[1207,4231],{"dataC":1905,"xLinkHref":4232},"#MJX-50-TEX-N-31",[1195,4234,4236],{"dataMmlNode":1213,"transform":4235},"translate(6784.1,0)",[1207,4237],{"dataC":2962,"xLinkHref":4238},"#MJX-50-TEX-N-2212",[1195,4240,4242],{"dataMmlNode":1205,"transform":4241},"translate(7784.3,0)",[1207,4243],{"dataC":4115,"xLinkHref":4244},"#MJX-50-TEX-I-1D6FD",[1195,4246,4248],{"dataMmlNode":1213,"transform":4247},"translate(8350.3,0)",[1207,4249],{"dataC":1264,"xLinkHref":4250},"#MJX-50-TEX-N-29",[1027,4252,4253],{},"The effect of the penalty diminishes exponentially over longer paths in the network. Mathematically, this is inherent in the properties of the EC calculation. The further a node is from the penalized node, the less impact the inverse doping vector has on its EC score.",[1027,4255,4256,4257,4278,4279,1290,4301,4324],{},"This decay can be adjusted through the choice of decay factor ",[1142,4258,4260],{"className":4259,"jax":1146},[1145],[1148,4261,4264,4269],{"style":1345,"xmlns":1151,"width":4262,"height":1347,"role":1154,"focusable":1155,"viewBox":4263,"xmlnsXLink":1157},"1.448ex","0 -442 640 453",[1159,4265,4266],{},[1162,4267],{"id":4268,"d":3616},"MJX-51-TEX-I-1D6FC",[1195,4270,4271],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,4272,4273],{"dataMmlNode":1202},[1195,4274,4275],{"dataMmlNode":1205},[1207,4276],{"dataC":3787,"xLinkHref":4277},"#MJX-51-TEX-I-1D6FC"," and slashing factors ",[1142,4280,4282],{"className":4281,"jax":1146},[1145],[1148,4283,4287,4292],{"style":4078,"xmlns":1151,"width":4284,"height":4285,"role":1154,"focusable":1155,"viewBox":4286,"xmlnsXLink":1157},"1.229ex","1.486ex","0 -441 543 657",[1159,4288,4289],{},[1162,4290],{"id":4291,"d":3364},"MJX-52-TEX-I-1D6FE",[1195,4293,4294],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,4295,4296],{"dataMmlNode":1202},[1195,4297,4298],{"dataMmlNode":1205},[1207,4299],{"dataC":3440,"xLinkHref":4300},"#MJX-52-TEX-I-1D6FE",[1142,4302,4304],{"className":4303,"jax":1146},[1145],[1148,4305,4310,4315],{"style":4306,"xmlns":1151,"width":4307,"height":4308,"role":1154,"focusable":1155,"viewBox":4309,"xmlnsXLink":1157},"vertical-align: -0.439ex;","1.281ex","2.034ex","0 -705 566 899",[1159,4311,4312],{},[1162,4313],{"id":4314,"d":4093},"MJX-53-TEX-I-1D6FD",[1195,4316,4317],{"stroke":1197,"fill":1197,"stroke-width":1198,"transform":1199},[1195,4318,4319],{"dataMmlNode":1202},[1195,4320,4321],{"dataMmlNode":1205},[1207,4322],{"dataC":4115,"xLinkHref":4323},"#MJX-53-TEX-I-1D6FD",", allowing network designers to balance between strictness and leniency based on the desired security level.",[1027,4326,4327],{},"This slashing mechanism encourages nodes to maintain genuine connections and discourages malicious behavior.",[1060,4329,1012],{"id":4330},"conclusion",[1027,4332,4333],{},"Incorporating identity proofs and service proofs into the Local Protocol graph enhances the network's ability to verify users and transactions without relying solely on network connectivity. By modeling proofs as probabilistic boosts in eigenvector centrality (EC), we allow trust to propagate organically through the network. This approach balances the need for security with the practical limitations of obtaining proofs in various markets.",[1027,4335,4336],{},"By integrating proofs into the mathematical framework of the graph, we create a system where security (trust) is directly linked to economic rewards. Nodes are incentivized to provide proofs, not just for their own benefit, but also to enhance the trustworthiness of transacting partners in their Local network.",[1027,4338,4339],{},"Local Protocol supports a wide range of decentralized services, even those without hard cryptographic proofs, expanding the design space for DePIN projects. This enables more services to be both peer-to-peer and token-incentivized.",[4341,4342,4343],"style",{},"\nmjx-container[jax=\"SVG\"] {\n  direction: ltr;\n}\n\nmjx-container[jax=\"SVG\"] > svg {\n  overflow: visible;\n  min-height: 1px;\n  min-width: 1px;\n}\n\nmjx-container[jax=\"SVG\"] > svg a {\n  fill: blue;\n  stroke: blue;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"] {\n  display: block;\n  text-align: center;\n  margin: 1em 0;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"][width=\"full\"] {\n  display: flex;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"left\"] {\n  text-align: left;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"right\"] {\n  text-align: right;\n}\n\ng[data-mml-node=\"merror\"] > g {\n  fill: red;\n  stroke: red;\n}\n\ng[data-mml-node=\"merror\"] > rect[data-background] {\n  fill: yellow;\n  stroke: none;\n}\n\ng[data-mml-node=\"mtable\"] > line[data-line], svg[data-table] > g > line[data-line] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > rect[data-frame], svg[data-table] > g > rect[data-frame] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dashed, svg[data-table] > g > .mjx-dashed {\n  stroke-dasharray: 140;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dotted, svg[data-table] > g > .mjx-dotted {\n  stroke-linecap: round;\n  stroke-dasharray: 0,140;\n}\n\ng[data-mml-node=\"mtable\"] > g > svg {\n  overflow: visible;\n}\n\n[jax=\"SVG\"] mjx-tool {\n  display: inline-block;\n  position: relative;\n  width: 0;\n  height: 0;\n}\n\n[jax=\"SVG\"] mjx-tool > mjx-tip {\n  position: absolute;\n  top: 0;\n  left: 0;\n}\n\nmjx-tool > mjx-tip {\n  display: inline-block;\n  padding: .2em;\n  border: 1px solid #888;\n  font-size: 70%;\n  background-color: #F8F8F8;\n  color: black;\n  box-shadow: 2px 2px 5px #AAAAAA;\n}\n\ng[data-mml-node=\"maction\"][data-toggle] {\n  cursor: pointer;\n}\n\nmjx-status {\n  display: block;\n  position: fixed;\n  left: 1em;\n  bottom: 1em;\n  min-width: 25%;\n  padding: .2em .4em;\n  border: 1px solid #888;\n  font-size: 90%;\n  background-color: #F8F8F8;\n  color: black;\n}\n\nforeignObject[data-mjx-xml] {\n  font-family: initial;\n  line-height: normal;\n  overflow: visible;\n}\n\nmjx-container[jax=\"SVG\"] path[data-c], mjx-container[jax=\"SVG\"] use[data-c] {\n  stroke-width: 3;\n}\n",{"title":161,"searchDepth":16,"depth":16,"links":4345},[4346,4349,4352,4355,4358,4362],{"id":1062,"depth":16,"text":952,"children":4347},[4348],{"id":1068,"depth":52,"text":912},{"id":1077,"depth":16,"text":619,"children":4350},[4351],{"id":1092,"depth":52,"text":805},{"id":1112,"depth":16,"text":595,"children":4353},[4354],{"id":1137,"depth":52,"text":973},{"id":1974,"depth":16,"text":978,"children":4356},[4357],{"id":2086,"depth":52,"text":983},{"id":2836,"depth":16,"text":997,"children":4359},[4360,4361],{"id":2841,"depth":52,"text":1002},{"id":3450,"depth":52,"text":1007},{"id":4330,"depth":16,"text":1012},"2024-10-26","Modeling identity and service proofs as probabilistic graph attributes in Local Protocol, so trust propagates through the network without hard cryptographic proofs for every transaction.","md",null,{},true,{"title":947,"description":4364},"blog\u002Fproofs",[4372,4373,4374,4375],"research","proofs","depin","sybil-resistance","AcXzflPFQW_LoKWujROVy5efdu126EK0ND6cy5Ajfs0",[4366,4378],{"title":861,"path":860,"stem":4379,"children":-1},"blog\u002Fpage-rank",1783724203971]