# Nary=4, PreState & PostState 梳理 ## 规则与图示 ![image](https://hackmd.io/_uploads/H1nva9aGA.png) - 忽略output 与 trace差异 - trace的高度为2,数据如图 4/5/6/7 节点 ## Nary=2场景 ### 再次理解step函数中 PreClaim 与 PostClaim计算? #### PreClaim - step 为 Attack情况,RootClaim 或 ParentPos - 1对应cliam ``` 2 Attack 1, 4 Attack 2 中,对4进行step(Attack), PreClaim 为 RootCliam ``` - step 为 Defend情况,Parentcliam ``` 2 Attack 1, 4 Attack 2 中,对4进行step( Defend), PreClaim 为 4的Cliam ``` #### PostClaim - step 为 Attack情况,Parentcliam ``` 2 Attack 1, 4 Attack 2 中,对4进行step(Attack), PostClaim 为 4的Cliam ``` - step 为 Defend情况,ParentPos + 1对应cliam ``` 2 Attack 1, 4 Attack 2 中,对4进行step(Attack), PostClaim 为 (4+1的 = 2的)2的Claim ``` #### 怎么理解 ParentPos +- 1 对应的claim? - 这个节点本身没有上传claim(没actor提交这个节点),但通过找到他“祖先”,祖先的claim值为这个节点的claim值。 原理为A节点有claim值,A节点的最深、右节点也为这个claim值 ### 结论: `指定节点pos进行step(attack & defend),需要知道 pos-1、pos、pos+1 三个claim值` ## Nary=4的场景 ![image](https://hackmd.io/_uploads/H1nva9aGA.png) ### 场景,对1进行Attack,提交4/5/6的Claim值,然后对4/5/6进行step #### 疑问,对4进行step Defend,怎么取PostClaim? - PreState 为 4的Claim - PostState 为 4 + 1的Claim,但由于2的Claim没提交过,取不到5的Claim值 #### 推导 - 对4 step defend的语义,同意4是正确,同时也认可4 Attack的值1,即7(其中7的值,相当于1) - 则推导出,不认可5 或 不认可 6 - 不认可5,但认可4,则可attack 5 - 不认可6,但认可5(如不认可5的值,需要attack 5),则可attack 6 #### 结论 - 4、5节点不能进行defend,只能attack - 6节点,attack、defend 都支持