ãSuiã¹ããŒãã³ã³ãã©ã¯ãããã©ãããã©ãŒã
Login to comment
Login to comment
The MystenLabs Team ã hello@mystenlabs.com
Suiã¯ãã¢ã»ããã®äœã¬ã€ãã³ã·ãŒç®¡çã«ç¹åãããããŒããã·ã§ã³ã¬ã¹ã®åæ£åã¹ããŒãã³ã³ãã©ã¯ããã©ãããã©ãŒã ã§ããSuiã¯ãMoveããã°ã©ãã³ã°èšèªã䜿çšããŠãã¢ã»ãããã¢ãã¬ã¹ãææããå¯èœæ§ã®ãããªããžã§ã¯ããšããŠå®çŸ©ããŠããŸããMoveããã°ã©ã ã¯ããããã®åä»ãããããªããžã§ã¯ãã«å¯ŸããŠããã®äœæãæ°ããææè
ãžã®ãããã®ã¢ã»ããã®è²æž¡ãããã³ã¢ã»ãããå€ç°ãããæäœã®ããã®ã«ã¹ã¿ã ã«ãŒã«ãå®çŸ©ããŸãã
Suiã¯ãä»ã®ãããã¯ãã§ãŒã³ã·ã¹ãã ã«ãããããªããŒã¿ãŒããã€ããŒã®ãããªåœ¹å²ãæãããç¡èš±å¯ã®åœå±ã«ãã£ãŠç¶æãããŠããŸããè³ç£ã«å¯Ÿããå
±éã®æäœã®å®å
šæ§ã確ä¿ããããã«ãåœå±éã® Byzantine consistent ãããŒããã£ã¹ããããã³ã«ã䜿çšããByzantineåå®ãšæ¯èŒããŠãäœã¬ã€ãã³ã·ãŒãšåªããã¹ã±ãŒã©ããªãã£ã確ä¿ããŸããå
±æãªããžã§ã¯ãã®å®å
šæ§ã«ã€ããŠã¯ãByzantineåæã«ã®ã¿äŸåããŠããŸããã¬ããã³ã¹æäœããã§ãã¯ãã€ã³ããšåæ§ã«ãã¯ãªãã£ã«ã«ãªã¬ã€ãã³ã·ãŒãã¹ãå€ããŠå®è¡ãããŸããã¹ããŒãã³ã³ãã©ã¯ãã®å®è¡ããå¯èœãªéãèªç¶ã«äžŠååãããŸããSuiã¯ãèªã¿åããèªèšŒã§ããã©ã€ãã¯ã©ã€ã¢ã³ããšãå®å
šæ§ã®ããã«ãã¹ãŠã®ãã©ã³ãžã·ã§ã³ãç£æ»ã§ãããã«ã¯ã©ã€ã¢ã³ãããµããŒãããŠããŸãããããã®èšåã«ãããä»ã®ãããã¯ãã§ãŒã³ãžã®ä¿¡é Œæå°åã®æ©æž¡ããå¯èœã§ãã
ãã€ãã£ãã¢ã»ããSUIã¯ããã¹ãŠã®æäœã®ããã®ã¬ã¹ä»£ãæ¯æãããã«äœ¿çšãããŸãããŸãããã®ææè
ã¯ããšããã¯å
ã§Suiãæäœããããã«åœå±ã«ã¹ããŒã¯ãå§ä»»ããããã«äœ¿çšããã宿çã«åœå±ã¯å§ä»»ãããã¹ããŒã¯ã«åŸã£ãŠåæ§æãããŸããäœ¿çšæžã¿ã®ã¬ã¹ã¯ãã¹ããŒã¯ãšSuiã®éçšãžã®è²¢ç®åºŠã«å¿ããŠãåœå±ãšãã®å§ä»»è
ã«åé
ãããŸãã
ãã®ãã¯ã€ãããŒããŒã¯2éšæ§æã«ãªã£ãŠããïŒç¬¬2ç« ã§ã¯MoveèšèªãçšããSuiã®ããã°ã©ãã³ã°ã¢ãã«ã«ã€ããŠã第4ç« ã§ã¯Suiã®å®å
šæ§ã掻æ§åãæ§èœãä¿èšŒããããŒããã·ã§ã³ã¬ã¹åæ£åã·ã¹ãã ã®éçšã説æããŸãã
Suiã¹ããŒãã³ã³ãã©ã¯ãã¯Moveèšèªã§æžãããŠããŸããMoveã¯å®å
šã§è¡šçŸåãè±ãã§ããããã®åã·ã¹ãã ãšããŒã¿ã¢ãã«ã¯ãSuiãã¹ã±ãŒã©ãã«ã«ãã䞊ååæ/å®è¡æŠç¥ãèªç¶ã«ãµããŒãããŸããMoveã¯ãããšããšFacebookã§Diemãããã¯ãã§ãŒã³çšã«éçºãããã¹ããŒãã³ã³ãã©ã¯ãæ§ç¯çšã®ãªãŒãã³ãœãŒã¹ããã°ã©ãã³ã°èšèªã§ãããã®èšèªã¯ãã©ãããã©ãŒã ã«äŸåãããSuiã«æ¡çšãããã ãã§ãªããä»ã®ãã©ãããã©ãŒã ïŒ0LãStarCoinãªã©ïŒã§ã人æ°ãåããŠããŸãã
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãMoveèšèªã®äž»ãªç¹åŸŽã«ã€ããŠèª¬æãããããSuiäžã®è³ç£ã®äœæãšç®¡çã«ã©ã®ããã«äœ¿çšãããŠãããã説æããŸããMoveã®æ©èœã®ãã詳现ãªèª¬æã¯Move Programming Language bookã«ãããSuiã«ç¹åããMoveã®å
容ã¯Sui Developer Portalã«ãããŸãããŸããSuiã®æèã«ãããMoveã®ããæ£åŒãªèª¬æã¯ç¬¬3ç« ã«ãããŸãã
Suiã®ã°ããŒãã«ç¶æ
ã«ã¯ãMove颿°ãšåãå«ãMoveã¢ãžã¥ãŒã«ïŒè©³çްã¯2.1.1é
åç
§ïŒã®éåäœã§ããMoveããã±ãŒãžã«ãã£ãŠçæã管çãããããã°ã©ããã«ãªããžã§ã¯ãã®ããŒã«ãå«ãŸããŠããŸããç§»åããã±ãŒãžèªäœããªããžã§ã¯ãã§ãããããã£ãŠãSuiãªããžã§ã¯ãã¯æ¬¡ã®2ã€ã«åé¡ãããŸãã
æ§é äœããŒã¿å€ ïŒMoveã¢ãžã¥ãŒã«ã管çããåä»ãããŒã¿ãåãªããžã§ã¯ãã¯ãããªããã£ãåïŒæŽæ°ãã¢ãã¬ã¹ãªã©ïŒãä»ã®ãªããžã§ã¯ããéãªããžã§ã¯ãã®æ§é äœãå«ãããšãã§ãããã£ãŒã«ããæã€æ§é äœå€ã§ãã
ããã±ãŒãžã³ãŒãå€ïŒé¢é£ããMoveãã€ãã³ãŒãã¢ãžã¥ãŒã«ã®éåã§ãåååäœãšããŠçºè¡ãããŸããããã±ãŒãžå
ã®åã¢ãžã¥ãŒã«ã¯ããã®ããã±ãŒãžå
ã®ä»ã®ã¢ãžã¥ãŒã«ãšã以åã«å
¬éãããããã±ãŒãžã®ã¢ãžã¥ãŒã«ãšã®äž¡æ¹ã«äŸåããããšãã§ããŸãã
ãªããžã§ã¯ãã¯ãã¢ã»ããïŒäŸïŒãã¡ã³ãžãã«ããŸãã¯ãã³ãã¡ã³ãžãã«ããŒã¯ã³ïŒãç¹å®ã®é¢æ°ãåŒã³åºãããä»ã®ãªããžã§ã¯ããäœæãããããæš©éãä»äžããæ©èœãä»ã®ã¢ã»ããã管çãããã¹ããŒãã³ã³ãã©ã¯ãããªã©ãã³ãŒãåã§ããŸãïŒæ±ºå®ããã®ã¯ããã°ã©ããŒæ¬¡ç¬¬ã§ãïŒãã«ã¹ã¿ã Suiãªããžã§ã¯ãã¿ã€ãã宣èšããMoveã³ãŒãã¯ã次ã®ããã«ãªããŸãã
struct Obj has key { id: VersionedID, // globally unique ID and version f: u64 // objects can have primitive fields g: OtherObj // fields can also store other objects }
ïŒ.ïŒ.ïŒãã¢ãžã¥ãŒã«
Moveããã°ã©ã ã¯ãæ§é äœå®£èšãšé¢æ°å®£èšã®ãªã¹ããããªãã¢ãžã¥ãŒã«ã®éåãšããŠæ§æãããŸããã¢ãžã¥ãŒã«ã¯ãä»ã®ã¢ãžã¥ãŒã«ããæ§é äœãã€ã³ããŒãããããä»ã®ã¢ãžã¥ãŒã«ã宣èšãã颿°ãåŒã³åºãããšãã§ããŸãã
äŸãã°ãäžã®äŸã®ã¢ãžã¥ãŒã« OtherObj ã¯ãObj ãå®çŸ©ããŠããã¢ãžã¥ãŒã«ãšã¯å¥ã®ã¢ãžã¥ãŒã«ã§å®çŸ©ããããšãã§ããŸãã ããã¯ãå¥çŽã®å¢çãè¶ããŠæµããããšãã§ããã®ã¯éæ§é åãã€ãã ãã§ãããå€ãã®ã¹ããŒãã³ã³ãã©ã¯ãèšèªãšã¯ç°ãªãç¹ã§ããããããMoveã¯ãããã°ã©ããå
ç¢ã§å®å
šãªã³ãŒããæžããããã«ã«ãã»ã«åæ©èœãæäŸããŠãããããããããµããŒãããããšãã§ããã®ã§ããå
·äœçã«ã¯ãMoveã®åã·ã¹ãã ã¯ãäžèšã® Obj ã®ãããªåã¯ããã®åã宣èšããã¢ãžã¥ãŒã«å
éšã®é¢æ°ã«ãã£ãŠã®ã¿çæãç Žå£ãã³ããŒãèªã¿èŸŒã¿ãæžã蟌ã¿ãã§ããããšãä¿èšŒããŠããŸããããã«ãããã¢ãžã¥ãŒã«ã¯å®£èšãããåã«å¯ŸããŠãã¹ããŒãã³ã³ãã©ã¯ãã®ä¿¡é Œå¢çãè¶ããŠæµããŠãä¿æããç¶ãã匷ãäžå€æ§ã匷å¶ããããšãã§ããŸãã
ïŒ.ïŒ.ïŒ ã ãã©ã³ã¶ã¯ã·ã§ã³ãšãšã³ããªãŒãã€ã³ã
ã°ããŒãã«ãªããžã§ã¯ãããŒã«ã¯ããªããžã§ã¯ãã®äœæãç Žæ£ãèªã¿åããæžã蟌ã¿ãå¯èœãªãã©ã³ã¶ã¯ã·ã§ã³ã«ãã£ãп޿°ãããŸãããã©ã³ã¶ã¯ã·ã§ã³ã¯ãæäœãåžæããæ¢åã®åãªããžã§ã¯ããå
¥åãšããŠåãåããªããã°ãªããŸãããããã«ããã©ã³ã¶ã¯ã·ã§ã³ã¯ãããã±ãŒãžãªããžã§ã¯ãã®ããŒãžã§ã³IDããã®ããã±ãŒãžå
ã®ã¢ãžã¥ãŒã«åãšé¢æ°åã颿°ãžã®åŒæ°ïŒå
¥åãªããžã§ã¯ããå«ãïŒãå«ããå¿
èŠããããŸããäŸãã°ã
public fun entrypoint( o1: Obj, o2: &mut Obj, o3: &Obj, x: u64, ctx: &mut TxContext ) { ... }
ãšãã颿°ãåŒã³åºãå Žåããã©ã³ã¶ã¯ã·ã§ã³ã¯ãã¿ã€ããObjã§ãã3ã€ã®ç°ãªããªããžã§ã¯ãã®IDãšãxã«ãã€ã³ãããããã®æŽæ°ãæäŸããªããã°ãªããŸãããTxContextã¯ã©ã³ã¿ã€ã ã«ãã£ãŠæºããããç¹å¥ãªãã©ã¡ãŒã¿ã§ãéä¿¡è
ã¢ãã¬ã¹ãšæ°ãããªããžã§ã¯ããäœæããããã«å¿
èŠãªæ
å ±ãå«ãã§ããŸãã
ãšã³ããªãŒãã€ã³ããžã®å
¥åã¯ïŒããäžè¬çã«ã¯ Move颿°ãžã®å
¥åãïŒãåã«ãšã³ã³ãŒããããç°ãªã倿Žèš±å¯ãæã£ãŠæž¡ãããããšããããŸããObj å
¥åã¯ãèªã¿åããæžã蟌ã¿ã転éãç Žæ£ãå¯èœã§ãã&mut Obj å
¥åã¯ãèªã¿åããŸãã¯æžã蟌ã¿ã®ã¿å¯èœã§ã&Objã¯èªã¿åãã®ã¿å¯èœã§ãããã©ã³ã¶ã¯ã·ã§ã³ã®éä¿¡è
ã¯ãæå®ããããã¥ãŒã¿ããªãã£ããŒããã·ã§ã³ã§åå
¥åãªããžã§ã¯ãã䜿çšããæš©éããªããã°ãªããŸããã
ïŒ.ïŒ.ïŒ ã ãªããžã§ã¯ãã®äœæãšè»¢é
ããã°ã©ããŒã¯ããšã³ããªãŒãã€ã³ãã«æž¡ããã TxContext ã䜿çšããŠããªããžã§ã¯ãã®æ°é®®ãªIDãçæããããšã«ããããªããžã§ã¯ããäœæããããšãã§ããŸãã
public fun create_then_transfer( f: u64, g: OtherObj, o1: Obj, ctx: &mut TxContext ) { let o2 = Obj { id: TxContext::fresh_id(ctx), f, g }; Transfer::transfer(o1, TxContext:sender()); Transfer::transfer(o2, TxContext:sender()); }
ãã®ã³ãŒãã¯ãOtherObj åãš Obj åã®2ã€ã®ãªããžã§ã¯ããå
¥åãšããŠåãåããæåã®ãªããžã§ã¯ããšçæãããIDã䜿çšããŠæ°ãã Obj ãäœæããäž¡æ¹ã® Obj ãªããžã§ã¯ãããã©ã³ã¶ã¯ã·ã§ã³éä¿¡è
ã«è»¢éããŸãããªããžã§ã¯ãã転éããããšãããã¯ã°ããŒãã«ãªããžã§ã¯ãããŒã«ã«æµãããã©ã³ã¶ã¯ã·ã§ã³ã®æ®ãã®éšåã®ã³ãŒãã«ãã£ãŠã¢ã¯ã»ã¹ãããããšã¯ãããŸãããTransferã¢ãžã¥ãŒã«ã¯Suiæšæºã©ã€ãã©ãªã®äžéšã§ããªããžã§ã¯ãããŠãŒã¶ã¢ãã¬ã¹ãä»ã®ãªããžã§ã¯ãã«è»¢éããããã®é¢æ°ãå«ãŸããŠããŸãã ããããã°ã©ããŒã³ãŒãã転éåŒã³åºãã®äžã€ãå«ãããšãæ ã£ãå Žåããã®ã³ãŒãã¯Moveåã·ã¹ãã ã«ãã£ãŠæçµ¶ãããããšã«æ³šæããŠãã ãããMoveã¯ããªããžã§ã¯ããåæã«äœãããããã³ããŒããããã誀ã£ãŠç Žå£ããããããªãããã«ããªãœãŒã¹ã»ãŒããã£ä¿è·ã宿œããŠããŸãããªãœãŒã¹ã»ãŒããã£ã®ããäžã€ã®äŸãšããŠãåããªããžã§ã¯ãã2å転éããããšãããšããããMoveã¿ã€ãã·ã¹ãã ã«ãã£ãŠæåŠãããŸãã
æ¬ç¯ã§ã¯ã第2ç« ã§è¿°ã¹ãSuiããã°ã©ãã³ã°ã¢ãã«ã®éå
¬åŒãªèšè¿°ãçºå±ããã è©³çŽ°ãªæå³çå®çŸ©ã瀺ããŸããåç¯ã§ã¯Moveã®ãœãŒã¹ã³ãŒãã®äŸã瀺ããããããã§ã¯Moveã®ãã€ãã³ãŒãã®æ§é ãå®çŸ©ããŸããéçºè
ã¯ãããŒã«ã«ã§MoveãœãŒã¹ã³ãŒããèšè¿°ãããã¹ããã圢åŒçã«æ€èšŒããŸããMoveãœãŒã¹ã³ãŒããããŒã«ã«ã§æžããMoveãã€ãã³ãŒãã«ã³ã³ãã€ã«ããŠãããããã¯ãã§ãŒã³ã«å
¬éããŸãããããã¯ãã§ãŒã³äžã§å
¬éãããMoveãã€ãã³ãŒãã¯ãåãã¡ã¢ãªããªãœãŒã¹ã®å®å
šæ§ãšãã£ãäž»èŠãªç¹æ§ãæºããããšãä¿èšŒããããã«ããã€ãã³ãŒãæ€èšŒåšãééããå¿
èŠããããŸãã 第2ç« ã§è¿°ã¹ãããã«ãMoveã¯ãã©ãããã©ãŒã ã«äŸåããªãèšèªã§ãããã³ã¢èšèªããã©ãŒã¯ããããšãªããç°ãªãã·ã¹ãã ã®ç¹å®ã®ããŒãºã«é©åãããããšãã§ããŸãã以äžã®èª¬æã¯ãMoveèšèªã®ã³ã¢ãšãªãæŠå¿µïŒé»æåã§è¡šèšïŒãšãMoveã®ã³ã¢ãšãªãèšèªãæ¡åŒµããSuiç¬èªã®æ©èœïŒãªã¬ã³ãžè²ã®æåã§ç€ºãïŒã§ãã
衚1ïŒã¢ãžã¥ãŒã« Moveã³ãŒãã¯ã衚1ã«å®çŸ©ãããæ§é ãæã€ã¢ãžã¥ãŒã«ã«ç·šæãããŠããŸããã¢ãžã¥ãŒã«ã¯ãååä»ãæ§é äœå®£èšãšååä»ã颿°å®£èšã®éåããæ§æãããŸãïŒãããã®å®£èšã®äŸã¯2.1ç¯ã§èª¬æããŠããŸãïŒããŸããã¢ãžã¥ãŒã«ã¯ã¢ãžã¥ãŒã«åæååãšããŠç¹å¥ãªé¢æ°å®£èšãå«ãã§ããŸãããã®é¢æ°ã¯ãã¢ãžã¥ãŒã«ããªã³ãã§ãŒã³ã§å
¬éããããšãã«äžåºŠã ãåŒã³åºãããŸãã
æ§é äœå®£èšã¯ããã£ãŒã«ãåãæ ŒçŽå¯èœãªåã«ãããã³ã°ããããååä»ããã£ãŒã«ãã®éåäœã§ããæ§é äœå®£èšã«ã¯ããªãã·ã§ã³ã§èœåã®ãªã¹ããå«ãŸããŸãïŒæ ŒçŽå¯èœãªåãšèœåã®èª¬æã«ã€ããŠã¯ã第2ç« ãåç
§ããŠãã ããïŒãæ§é äœå®£èšã«ã¯ãèœåå¶çŽãæã€æ±çšçãªãã©ã¡ãŒã¿ãŒã®ãªã¹ããå«ããããšãã§ããäŸãã°ã struct Wrapper<T: copy>{ t: T } ã®ãããªå Žåã¯ãæ±çšæ§é äœå®£èšãšåŒã³ãŸãããžã§ããªãã¯ã»ãã©ã¡ãŒã¿ãŒã¯ãæ§é äœãã£ãŒã«ãã®å®£èšæã«äœ¿ãããåã衚ããŸããæ§é äœå®£èšæã«ã¯æªç¥æ°ã§ãæ§é äœã®ã€ã³ã¹ã¿ã³ã¹åæïŒã€ãŸããæ§é äœã®å€ãçæãããæïŒã«å
·äœçãªåãæäŸãããŸãã
颿°å®£èšã«ã¯ããã©ã¡ãŒã¿ã®åãæ»ãå€ã®åã颿°æ¬äœãæ§æããåœä»€ã®ãªã¹ããå«ãŸããŸãã颿°å®£èšã«ã¯ãèœåå¶çŽã®ããäžè¬çãªãã©ã¡ãŒã¿ãŒã®ãªã¹ããå«ããããšãã§ãããã®å Žåã¯ãäŸãã°ã fun unwrap<T: copy>(p: Wrapper){} ã®ãããªå Žåã¯ãäžè¬é¢æ°å®£èšãšåŒãã§ããŸããæ§é äœå®£èšãšåæ§ã«ãæ±çšãã©ã¡ãŒã¿ã¯ã颿°å®£èšæã«ã¯æªç¥ã®åã§ããã颿°ãã©ã¡ãŒã¿ãæ»ãå€ã颿°æ¬äœïŒå
·äœçãªåã¯é¢æ°ãåŒã°ãããšãã«æäŸãããŸãïŒã宣èšãããšãã«äœ¿ãããåã衚ããŸãã 颿°æ¬äœã§äœ¿çšã§ããåœä»€ã«ã¯ãã°ããŒãã«ã¹ãã¬ãŒãžåœä»€ïŒmove_to, move_from, borrow_global ãªã©ïŒãé€ããéåžžã®ãã¹ãŠã®Moveåœä»€ãå«ãŸããŸããã³ã¢Moveã®åœä»€ãšãã®ã»ãã³ãã£ã¯ã¹ã®å®å
šãªãªã¹ãã«ã€ããŠã¯[Marco Patrignani and Sam Blackshear. 2021. Robust Safety for Move. CoRR abs/2110.05043 (2021). arXiv:2110.05043 https://arxiv.org/abs/2110.05043\] ãåç
§ããŠãã ãããSuiã§ã¯ãã³ã¢Moveã®ã¢ã«ãŠã³ãããŒã¹ã®ã°ããŒãã«ã¹ãã¬ãŒãžã§ã¯ãªããSuiã®ã°ããŒãã«ãªããžã§ã¯ãããŒã«ãä»ããŠæ°žç¶ã¹ãã¬ãŒãžããµããŒããããŠããŸãã Suiç¹æã®ãªããžã§ã¯ãæäœã¯4ã€ãããŸãããããã®æäœã¯ãããããªããžã§ã¯ãã®æææš©ã¡ã¿ããŒã¿ã倿ŽãïŒ3.3ç¯åç
§ïŒããããã°ããŒãã«ãªãªããžã§ã¯ãããŒã«ã«æ»ããŸããæãç°¡åã«ã¯ãSuiãªããžã§ã¯ãã¯Suiãšã³ããŠãŒã¶ãŒã®ã¢ãã¬ã¹ã«è»¢éããããšãã§ããŸãããªããžã§ã¯ãã¯å¥ã®èŠªãªããžã§ã¯ãã«è»¢éããããšãã§ããŸãããã®æäœã§ã¯ãåŒã³åºãåŽããåãªããžã§ã¯ãã«å ããŠã芪ãªããžã§ã¯ããžã®å€æŽå¯èœãªåç
§ãäžããå¿
èŠããããŸããæåŸã«ããªããžã§ã¯ãã¯Suiã·ã¹ãã å
ã®èª°ã§ãèªãããšãã§ãããã誰ã§ãæžãããšãã§ããªãããã«ãäžå€ã«å
±æããããšãã§ããŸãã ç°ãªãçš®é¡ã®æææš©ãåºå¥ããæ©èœã¯ãSuiã®ãŠããŒã¯ãªæ©èœã§ããç§ãã¡ãç¥ã£ãŠããä»ã®ãããã¯ãã§ãŒã³ã»ãã©ãããã©ãŒã ã§ã¯ããã¹ãŠã®å¥çŽãšãªããžã§ã¯ãã¯ãã¥ãŒã¿ãã«ã«å
±æãããŠããŸããã»ã¯ã·ã§ã³4ã§èª¬æããããã«ãSuiã¯ãã®æ
å ±ãæŽ»çšããŠãïŒãã¹ãŠã®ãã©ã³ã¶ã¯ã·ã§ã³ã®ïŒäžŠåãã©ã³ã¶ã¯ã·ã§ã³å®è¡ãšïŒå
±æããããã¥ãŒã¿ããªãã£ãæããªããªããžã§ã¯ããå«ããã©ã³ã¶ã¯ã·ã§ã³ã®ïŒäžŠååæãå®çŸããŸãã ïŒ.ïŒãã¿ã€ããšã¢ããªã㣠衚2ïŒã¿ã€ããšã¢ããªã㣠Moveããã°ã©ã ã¯ãSuiã°ããŒãã«ãªããžã§ã¯ãããŒã«ã«æ ŒçŽãããããŒã¿ãšãMoveããã°ã©ã ã®å®è¡æã«äœæããããã©ã³ãžã§ã³ãããŒã¿ã®äž¡æ¹ãæäœããŸãããªããžã§ã¯ãããã©ã³ãžã§ã³ãããŒã¿ãèšèªã¬ãã«ã§ã¯Moveã®å€ã§ãããããããã¹ãŠã®å€ãåãããã«äœãããããã§ã¯ãªããåã«ãã£ãŠèŠå®ãããç°ãªãç¹æ§ãç°ãªãæ§é ãæã€å ŽåããããŸãã Moveã§äœ¿çšãããåã¯è¡š2ã«å®çŸ©ãããŠããŸããMoveã¯ä»ã®ããã°ã©ãã³ã°èšèªã§ãµããŒããããŠãããã®ãšåãããªããã£ãåãäŸãã°ããŒãªã¢ã³åãæ§ã
ãªå€§ããã®ç¬Šå·ãªãæŽæ°åãªã©ãå€ããµããŒãããŠããŸããããã«ãMoveã®ã³ã¢ã«ã¯ãã·ã¹ãã å
ã®ãšã³ããŠãŒã¶ãŒã衚ãã¢ãã¬ã¹åããããããã¯ãã©ã³ã¶ã¯ã·ã§ã³ã®éä¿¡è
ãïŒSuiã§ã¯ïŒãªããžã§ã¯ãã®ææè
ãç¹å®ããã®ã«ã䜿ãããŸããæåŸã«ãSuiã¯Suiãªããžã§ã¯ãã®IDã衚ãidåãå®çŸ©ããŠããŸãïŒè©³çްã¯3.3ç¯ãåç
§ïŒã struct type ã¯ãããã¢ãžã¥ãŒã«ã§å®£èšãããæ§é äœïŒæ§é äœå®£èšã«ã€ããŠã¯ç¬¬3.1ç¯ãåç
§ïŒã® ã€ã³ã¹ã¿ã³ã¹ïŒããªãã¡å€ïŒãèšè¿°ãããã®ã§ããäžè¬çãªæ§é äœå®£èšïŒgeneric struct typeïŒãè¡šãæ§é äœã¿ã€ãã«ã¯ãæ ŒçŽå¯èœãªã¿ã€ãã®ãªã¹ããå«ãŸããŸãããã®ãªã¹ãã¯ãæ§é äœå®£èšã®äžè¬çãªãã©ã¡ãŒã¿ãªã¹ããšå¯Ÿå¿ãããã®ã§ããæ ŒçŽå¯èœãªåã«ã¯ãå
·è±¡åïŒããªããã£ãåãæ§é äœåïŒãæ±çšåã®ããããããããŸãããã®ãããªåãã¹ãã¢ïŒä¿åïŒå¯èœåãšåŒã³ãŸãããããã¯ãåç
§åãã¹ãã¢ã§ããªãã®ã«å¯ŸããŠã æ§é äœã®ãã£ãŒã«ãããªã³ã»ãã§ãŒã³ã§æ°žç¶çã«ä¿åããããªããžã§ã¯ãã«è¡šç€ºããããšãã§ããããã§ãã äŸãã°ãWrapperæ§é äœåã¯ãæ ŒçŽå¯èœãªå
·è±¡ïŒããªããã£ãïŒåu64ããã©ã¡ãŒã¿ãšããæ±çšæ§é äœåã§ããã®åã¯ãæ§é äœã®ã€ã³ã¹ã¿ã³ã¹(å€)ãçæããããã«äœ¿çšããããšãã§ããŸããäžæ¹ãåãæ±çšæ§é äœã§ããå²ãæ§é äœã颿°å®£èšã®æ±çšãã©ã¡ãŒã¿ããæ¥ãæ±çšåïŒäŸãã°ãstruct Parent { w: Wrapper }ïŒã§ãã©ã¡ãŒã¿åã§ãããã®çš®ã®åã¯ãæ§é äœãã£ãŒã«ãã颿°ãã©ã¡ãŒã¿ãªã©ã®å®£èšã«äœ¿ãããšãã§ããŸããæ§é çã«ã¯ãæ±çšåã¯ãæ§é çã«ã¯ãæ±çšåã¯ãæ§é äœãŸãã¯é¢æ°å®£èšãå
å«ããæ±çšãã©ã¡ãŒã¿ãªã¹ããžã®æŽæ°ã€ã³ããã¯ã¹ïŒè¡š5ã§Nãšå®çŸ©ïŒã§ããã Moveã®ãã¯ãã«åã¯ãå質ãªå€ã®å¯å€é·ã®éåãèšè¿°ããŸãããã¯ãã«åã¯ãæ ŒçŽå¯èœãªåã®ã¿æ ŒçŽã§ããããèªäœãæ ŒçŽå¯èœãªåã§ãã Moveããã°ã©ã ã§ã¯ãå€ãçŽæ¥æäœããããšããåç
§ãä»ããŠéæ¥çã«ã¢ã¯ã»ã¹ããããšãã§ããŸããåç
§åã¯åç
§ãããä¿åå¯èœãªåãšãäžããããåã®å€ãèªã¿æžããã§ãã (mut) ãèªã¿åºãã®ã¿ãã§ãã (immut) ããæ±ºå®ïŒåŒ·å¶ïŒããããã«äœ¿ãããå€ç°æ§ä¿®é£Ÿåã®äž¡æ¹ãå«ãã§ããŸãããã®çµæãMoveã®å€åïŒè¡š2ã®TypeïŒã®æãäžè¬çãªåœ¢ã¯ãä¿åå¯èœãªåã§ãåç
§å¯èœãªåã§ãããã®ã§ãã æåŸã«ãMoveã®èœåã¯ãäžããããåã®å€ãã³ããŒïŒè€è£œïŒã§ãããã©ãããªã©ãäžããããåã®å€ã«å¯ŸããŠã©ã®ãããªåäœãèš±ãããããå¶åŸ¡ããŸããã¢ããªãã£ã¯æ§é äœå®£èšãšæ±çšåãã©ã¡ãŒã¿ãå¶çŽããŸããMoveãã€ãã³ãŒãããªãã¡ã€ã¢ã¯ãã³ããŒãªã©ã®éèŠãªæäœã察å¿ããèœåãæã€åã«å¯ŸããŠã®ã¿å®è¡å¯èœã§ããããšãä¿èšŒãã責任ãè² ã£ãŠããŸãã ïŒ.ïŒããªããžã§ã¯ããšæææš© 衚3ïŒãªããžã§ã¯ããšæææš© åSuiãªããžã§ã¯ãã¯ã°ããŒãã«ã«äžæãªèå¥åïŒè¡š3ã®ObjlDïŒãæã¡ãææè
éãä»ã®ãªããžã§ã¯ããšã®éã§ãããŒããéã«ããªããžã§ã¯ãã®æ°žç¶çãªã¢ã€ãã³ãã£ãã£ãšããŠæ©èœããŸãããã®IDã¯ããªããžã§ã¯ããäœæãããã©ã³ã¶ã¯ã·ã§ã³ã«ãã£ãŠãªããžã§ã¯ãã«å²ãåœãŠãããŸãããªããžã§ã¯ãIDã¯ãçŸåšã®ãã©ã³ã¶ã¯ã·ã§ã³ã®ã³ã³ãã³ããšããã®ãã©ã³ã¶ã¯ã·ã§ã³ãäœæãããªããžã§ã¯ãã®æ°ãèšé²ããã«ãŠã³ã¿ãŒã«ãèè¡çªæ§ã®ããã·ã¥é¢æ°ãé©çšããŠäœæãããŸãããã©ã³ã¶ã¯ã·ã§ã³ïŒãããã£ãŠãã®ãã€ãžã§ã¹ãïŒã¯ãåŸã§èª¬æããããã«ããã©ã³ã¶ã¯ã·ã§ã³ã®å
¥åãªããžã§ã¯ãã«å¯Ÿããå¶çŽã«ããäžæã§ããããšãä¿èšŒãããŸãã IDã«å ããåãªããžã§ã¯ãã¯ãã®æææš©ã«é¢ããã¡ã¿ããŒã¿ãæã¡ãŸãããªããžã§ã¯ãã¯ãã¢ãã¬ã¹ãŸãã¯ä»ã®ãªããžã§ã¯ãã«ãã£ãŠäžæã«ææãããããæžã蟌ã¿/èªã¿åãæš©éã§å
±æãããããèªã¿åãæš©éã®ã¿ã§å
±æããããã®ããããã§ãããªããžã§ã¯ãã®æææš©ã¯ããã©ã³ã¶ã¯ã·ã§ã³ããããå
¥åãšããŠäœ¿çšã§ãããã©ããããŸãã©ã®ããã«äœ¿çšã§ããããæ±ºå®ããŸãã倧ãŸãã«ã¯ãäžæã«ææããããªããžã§ã¯ãã¯ããã®ææè
ã«ãã£ãŠéå§ããããã©ã³ã¶ã¯ã·ã§ã³ããŸãã¯ãã®èŠªãªããžã§ã¯ããå
¥åãšããŠå«ããã©ã³ã¶ã¯ã·ã§ã³ã«ãããŠã®ã¿äœ¿çšã§ããŸããäžæ¹ãå
±æãªããžã§ã¯ãã¯ä»»æã®ãã©ã³ã¶ã¯ã·ã§ã³ã«ãã£ãŠäœ¿çšã§ããããç¹å®ã®å€æŽå¯èœæ§ããŒããã·ã§ã³ã«ãã£ãŠã®ã¿äœ¿çšã§ããŸããå®å
šãªèª¬æã¯ç¬¬4.4ç¯ãåç
§ããŠãã ããã ãªããžã§ã¯ãã«ã¯ãããã±ãŒãžã³ãŒããªããžã§ã¯ããšæ§é äœããŒã¿ãªããžã§ã¯ãã®2çš®é¡ããããŸããããã±ãŒãžãªããžã§ã¯ãã«ã¯ãã¢ãžã¥ãŒã«ã®ãªã¹ããå«ãŸããŸããæ§é äœãªããžã§ã¯ãã«ã¯ãMoveæ§é äœã®å€ãšãã®å€ã®Moveåãå«ãŸããŸãããªããžã§ã¯ãã®å
容ã¯å€åããŠãããã®IDããªããžã§ã¯ãã®åïŒããã±ãŒãžãæ§é äœãïŒãMoveæ§é äœã®åã¯äžå€ã§ããããã«ããããªããžã§ã¯ãã¯åŒ·ãåä»ããããæ°žç¶çãªã¢ã€ãã³ãã£ãã£ãæã€ããšãä¿èšŒãããŸãã æåŸã«ããªããžã§ã¯ãã¯ããŒãžã§ã³ãæã£ãŠããŸããçæãããã°ããã®ãªããžã§ã¯ãã¯ããŒãžã§ã³0ã§ããããã©ã³ã¶ã¯ã·ã§ã³ããªããžã§ã¯ããå
¥åãšããŠåãåããã³ã«ããªããžã§ã¯ãã®ããŒãžã§ã³ã¯ã€ã³ã¯ãªã¡ã³ããããŸãã ïŒ.ïŒãã¢ãã¬ã¹ãšèªèšŒå 衚4ïŒã¢ãã¬ã¹ãšèªèšŒå ã¢ãã¬ã¹ã¯ãSuiã®ãšã³ããŠãŒã¶ãŒã®æ°žç¶çãªã¢ã€ãã³ãã£ãã£ã§ãïŒãã ãã1人ã®ãŠãŒã¶ãŒãä»»æã®æ°ã®ã¢ãã¬ã¹ãæã€ããšãã§ããããšã«æ³šæããŠãã ããïŒããªããžã§ã¯ããä»ã®ãŠãŒã¶ãŒã«è»¢éããã«ã¯ãéä¿¡è
ã¯åä¿¡è
ã®ã¢ãã¬ã¹ãç¥ã£ãŠããå¿
èŠããããŸãã åŸã»ã©èª¬æããŸãããSuiã®ãã©ã³ã¶ã¯ã·ã§ã³ã¯ããã©ã³ã¶ã¯ã·ã§ã³ãéä¿¡ãã(ããªãã¡ãéå§ãã)ãŠãŒã¶ãŒã®ã¢ãã¬ã¹ãšããã®ã¢ãã¬ã¹ã«ãã€ãžã§ã¹ãããããããèªèšŒåãå«ãŸãªããã°ãªããŸãããã¢ãã¬ã¹ãšèªèšŒåãåé¢ããããšã§ãæå·ã®ä¿ææ§ãé«ããããšãã§ããŸããèªèšŒåã¯ãããšãç°ãªãéµé·ã䜿çšããçœ²åæ¹åŒã§ãã£ãŠã(äŸïŒãã¹ãã¯ã¢ã³ã¿ã 眲åããµããŒããããã)ãä»»æã®çœ²åæ¹åŒã®å
¬ééµã«ããããšãã§ããŸããããã«ãèªèšŒåã¯åäžã®å
¬ééµã§ããå¿
èŠã¯ãªãã(äŸãã°) K-of-Nãã«ãã·ã°ãã«éµã§ãã£ãŠã倧äžå€«ã§ãã ïŒ.ïŒããã©ã³ã¶ã¯ã·ã§ã³ 衚5ïŒãã©ã³ã¶ã¯ã·ã§ã³ Suiã«ã¯ãæ°ããMoveããã±ãŒãžã®å
¬éãšãæ¢ã«å
¬éãããŠããMoveããã±ãŒãžã®åŒã³åºããšãã2ã€ã®ç°ãªããã©ã³ã¶ã¯ã·ã§ã³ã¿ã€ãããããŸããå
¬éãã©ã³ã¶ã¯ã·ã§ã³ã¯ãããã±ãŒãžïŒåäžã®ãªããžã§ã¯ããšããŠäžç·ã«å
¬éãããã¢ãžã¥ãŒã«ã®ã»ããïŒãšããã®ããã±ãŒãžå
ã®ãã¹ãŠã®ã¢ãžã¥ãŒã«ã®äŸåé¢ä¿ïŒãã§ã«å
¬éãããããã±ãŒãžãªããžã§ã¯ããåç
§ããå¿
èŠããããªããžã§ã¯ãåç
§ã®ãªã¹ããšããŠãšã³ã³ãŒããããïŒãå«ã¿ãŸããå
¬éãã©ã³ã¶ã¯ã·ã§ã³ãå®è¡ããããã«ãSuiã©ã³ã¿ã€ã ã¯åããã±ãŒãžã«å¯ŸããŠMoveãã€ãã³ãŒãæ€èšŒãå®è¡ããããã±ãŒãžããã®äŸåé¢ä¿ã«å¯ŸããŠãªã³ã¯ããåã¢ãžã¥ãŒã«ã®ã¢ãžã¥ãŒã«åæååšãå®è¡ãããã¢ãžã¥ãŒã«ã€ãã·ã£ã©ã€ã¶ãŒã¯ãããã±ãŒãžã«ãã£ãŠå®è£
ãããã¢ããªã±ãŒã·ã§ã³ã®åæç¶æ
ãããŒãã¹ãã©ããããã®ã«æçšã§ãã ã³ãŒã«ãã©ã³ã¶ã¯ã·ã§ã³ã®æãéèŠãªåŒæ°ã¯ããªããžã§ã¯ãã®å
¥åã§ãããªããžã§ã¯ãã®åŒæ°ã¯ããªããžã§ã¯ãåç
§ïŒåäžææè
ããã³å
±æäžå€ãªããžã§ã¯ãã®å ŽåïŒãŸãã¯ãªããžã§ã¯ãIDïŒå
±æå¯å€ãªããžã§ã¯ãã®å ŽåïŒã§æå®ããŸãããªããžã§ã¯ããªãã¡ã¬ã³ã¹ã¯ããªããžã§ã¯ãIDããªããžã§ã¯ãããŒãžã§ã³ããªããžã§ã¯ãå€ã®ããã·ã¥ããæ§æãããŸããSuiã©ã³ã¿ã€ã ã¯ããªããžã§ã¯ãIDãšãªããžã§ã¯ãåç
§ã®äž¡æ¹ããã°ããŒãã«ãªããžã§ã¯ãããŒã«ã«æ ŒçŽããããªããžã§ã¯ãå€ã«è§£æ±ºããŸãããªããžã§ã¯ãåç
§ã®å Žåãã©ã³ã¿ã€ã ã¯åç
§ã®ããŒãžã§ã³ãããŒã«å
ã®ãªããžã§ã¯ãã®ããŒãžã§ã³ãšç
§åãããŸããåç
§ã®ããã·ã¥ãããŒã«ãªããžã§ã¯ããšäžèŽãããã©ããã確èªããŸããããã«ãããã©ã³ã¿ã€ã ã®ãªããžã§ã¯ãã«å¯ŸããèŠè§£ãããã©ã³ã¶ã¯ã·ã§ã³éä¿¡è
ã®ãªããžã§ã¯ãã«å¯ŸããèŠè§£ãšäžèŽããããšãä¿èšŒãããŸãã ããã«ãåŒã³åºããã©ã³ã¶ã¯ã·ã§ã³ã¯ãååŒæ°ããã³çŽç²ãªå€åŒæ°ãåãå
¥ããŸããååŒæ°ã¯ãåŒã³åºããããšã³ããªãã€ã³ã颿°ã®æ±çšåãã©ã¡ãŒã¿ãã€ã³ã¹ã¿ã³ã¹åããïŒäŸãã°ããšã³ããªãã€ã³ã颿°ã send_coin(c: Coin, ...) ã®å Žåãæ±çšåãã©ã¡ãŒã¿Tã¯ãSuiãã€ãã£ãããŒã¯ã³ãéãããã®ååŒæ°SUIã§ã€ã³ã¹ã¿ã³ã¹åããããšãå¯èœã§ãïŒãçŽç²ãªå€ã«ã¯ããªããã£ãåãšããªããã£ãåã®ãã¯ãã«ãå«ããããšãã§ããŸãããæ§é äœåã¯å«ããããŸããã åŒã³åºãã«ãã£ãŠåŒã³åºããã颿°ã¯ããªããžã§ã¯ãåç
§ïŒããã±ãŒãžãªããžã§ã¯ããåç
§ããªããã°ãªããªãïŒããã®ããã±ãŒãžã®ã¢ãžã¥ãŒã«åããã®ããã±ãŒãžã®é¢æ°åã«ãã£ãŠæå®ãããŸããåŒã³åºããã©ã³ã¶ã¯ã·ã§ã³ãå®è¡ããããã«ãSuiã©ã³ã¿ã€ã ã¯é¢æ°ã解決ããåããªããžã§ã¯ããããã³å€ã®åŒæ°ã颿°ãã©ã¡ãŒã¿ã«ãã€ã³ãããMove VMã䜿çšããŠé¢æ°ãå®è¡ããŸãã ã³ãŒã«ã»ãã©ã³ã¶ã¯ã·ã§ã³ãšãããªãã·ã¥ã»ãã©ã³ã¶ã¯ã·ã§ã³ã®äž¡æ¹ããã¬ã¹ã»ã¡ãŒã¿ãªã³ã°ãšã¬ã¹æéã®å¯Ÿè±¡ãšãªããŸããã¡ãŒã¿ãªã³ã°ã®äžéã¯ãæå€§ã¬ã¹ããžã§ããã§è¡šãããŸããã©ã³ã¿ã€ã ã¯ããžã§ããã«éãããŸã§ãã©ã³ã¶ã¯ã·ã§ã³ãå®è¡ããããžã§ããã䜿ãæãããå Žåã¯ïŒææ°æãå·®ãåŒããã¢ããŒãã³ãŒããå ±åãã以å€ïŒäœãããã«ã¢ããŒãããŸãã ææ°æã¯ããªããžã§ã¯ãåç
§ãšããŠæå®ãããã¬ã¹ãªããžã§ã¯ãããå·®ãåŒãããŸãããã®ãªããžã§ã¯ãã¯Suiãã€ãã£ãããŒã¯ã³ã§ãªããã°ãªããŸããïŒã€ãŸãããã®ã¿ã€ãã¯Coinã§ãªããã°ãªããŸããïŒãSuiã¯EIP15594ã¹ã¿ã€ã«ã®ææ°æã䜿çšããŠããŸãããããã³ã«ã¯ããšããã¯å¢çã§ã¢ã«ãŽãªãºã çã«èª¿æŽãããåºæ¬ææ°æïŒSuiããŒã¯ã³ããšã®ã¬ã¹åäœã§è¡šç€ºïŒãå®çŸ©ãããã©ã³ã¶ã¯ã·ã§ã³ã®éä¿¡è
ã¯ãªãã·ã§ã³ã®ãããïŒSuiããŒã¯ã³åäœã§è¡šç€ºïŒãå«ãããšãã§ããŸããéåžžã®ã·ã¹ãã è² è·ã§ããã°ãããããªãã§ãååŒã¯è¿
éã«åŠçãããŸããããããã·ã¹ãã ãæ··éããŠããå Žåã¯ãããå€ãã®ããããå«ãååŒãåªå
ãããŸããã¬ã¹ã»ãªããžã§ã¯ãããå·®ãåŒãããæéã¯ãïŒGasUsed * BaseFeeïŒ + Tip ãšãªããŸãã ïŒ.ïŒããã©ã³ã¶ã¯ã·ã§ã³ã®å¹æ 衚6ïŒãã©ã³ã¶ã¯ã·ã§ã³ã®å¹æ ãã©ã³ã¶ã¯ã·ã§ã³ã®å®è¡ã¯ããã©ã³ã¶ã¯ã·ã§ã³ã®å®è¡ãæåããå ŽåïŒè¡š6ã®SuccessEffectsïŒãšå€±æããå ŽåïŒè¡š6ã®AbortEffectsïŒãšã§ç°ãªããã©ã³ã¶ã¯ã·ã§ã³å¹æãçºçãããŸãã ãã©ã³ã¶ã¯ã·ã§ã³ãæ£åžžã«å®è¡ããããšããã©ã³ã¶ã¯ã·ã§ã³ã®å¹æã«ã¯ãSuiã®ã°ããŒãã«ãªããžã§ã¯ãããŒã«ã«å ãããã倿Žã«é¢ããæ
å ±ïŒæ¢åã®ãªããžã§ã¯ãã«å¯ŸããæŽæ°ãšæ°ããäœæããããªããžã§ã¯ãã®äž¡æ¹ãå«ãïŒãšããã©ã³ã¶ã¯ã·ã§ã³å®è¡äžã«çæãããã€ãã³ããå«ãŸããŸãããã©ã³ã¶ã¯ã·ã§ã³ã®å®è¡ãæåããå Žåã®å¥ã®å¹æãšããŠãã°ããŒãã«ããŒã«ããã®ãªããžã§ã¯ãã®åé€ïŒããªãã¡ãåé€ïŒãšããããªããžã§ã¯ããå¥ã®ãªããžã§ã¯ãã«ã©ããïŒããªãã¡ãåã蟌ã¿ïŒããããšãã§ããŸããããã¯åé€ãšåæ§ã®å¹æããããã©ãããããªããžã§ã¯ãã¯ã°ããŒãã«ããŒã«ããæ¶ãããããã©ãããããªããžã§ã¯ãã®äžéšåãšããŠã®ã¿ååšããããšã«ãªããŸããåé€ããããªããžã§ã¯ããã©ããããããªããžã§ã¯ãã¯ã°ããŒãã«ããŒã«ããã¢ã¯ã»ã¹ã§ããªããªãã®ã§ããããã®å¹æã¯ãªããžã§ã¯ãã®IDãšããŒãžã§ã³ã§è¡šçŸãããŸãã ã€ãã³ãã¯ãã°ããŒãã«ãªããžã§ã¯ãããŒã«ã®æŽæ°ãè¶
ããããã©ã³ã¶ã¯ã·ã§ã³ã®æ£åžžãªå®è¡ã®å¯æ¬¡ç广ã笊å·åããŸããæ§é çã«ãã€ãã³ãã¯Moveæ§é äœãšãã®åããæ§æãããŸããã€ãã³ãã¯ãããã¯ãã§ãŒã³å€ã®ã¢ã¯ã¿ãŒã«ãã£ãŠæ¶è²»ãããããšãæå³ããŠããŸãããMoveããã°ã©ã ã«ãã£ãŠèªã¿åãããããšã¯ãããŸããã Moveã®ãã©ã³ã¶ã¯ã·ã§ã³ã¯all-or-nothingã®ã»ãã³ãã£ã¯ã¹ãæã¡ãŸãããã©ã³ã¶ã¯ã·ã§ã³ã®å®è¡ãããæç¹ã§äžæããå ŽåïŒäŸãã°ãäºæãã¬é害ã«ãã£ãŠïŒããã®æç¹ä»¥åã«ãªããžã§ã¯ããžã®äœããã®å€æŽãèµ·ãã£ãŠããïŒãããã¯äœããã®ã€ãã³ããçæãããŠããïŒãšããŠãããããã®å¹æã¯äžæãããã©ã³ã¶ã¯ã·ã§ã³ã«ã¯æç¶ããŸããããã®ä»£ãããäžæããããã©ã³ã¶ã¯ã·ã§ã³ã®å¹æã«ã¯ãæ°å€ã®äžæã³ãŒããšãã©ã³ã¶ã¯ã·ã§ã³ã®äžæãçºçããã¢ãžã¥ãŒã«ã®ååãå«ãŸããŸããã¬ã¹æéã¯ãäžæããããã©ã³ã¶ã¯ã·ã§ã³ã«å¯ŸããŠåŒãç¶ã課éãããŸãã ïŒãSUIã·ã¹ãã æ¬ç¯ã§ã¯ãSuiãã·ã¹ãã ã®èгç¹ãã説æããŸããByzantineé害ã«ãããããããæš©åšéã®å®å
šæ§ãšæŽ»æ§ãä¿èšŒããæ©æ§ãå«ã¿ãŸãããŸããã·ã¹ãã ã®å®å
šãªç¶æ
ãæ€èšŒããããšãªããã·ã¹ãã ã®ç¶æ
ã«ã€ããŠäœããã®ä¿èšŒãå¿
èŠãšããã©ã€ãã¯ã©ã€ã¢ã³ããå«ããã¯ã©ã€ã¢ã³ãã®åäœã«ã€ããŠèª¬æããŸãã
The MystenLabs Team ã hello@mystenlabs.com
Suiã¯ãã¢ã»ããã®äœã¬ã€ãã³ã·ãŒç®¡çã«ç¹åãããããŒããã·ã§ã³ã¬ã¹ã®åæ£åã¹ããŒãã³ã³ãã©ã¯ããã©ãããã©ãŒã ã§ããSuiã¯ãMoveããã°ã©ãã³ã°èšèªã䜿çšããŠãã¢ã»ãããã¢ãã¬ã¹ãææããå¯èœæ§ã®ãããªããžã§ã¯ããšããŠå®çŸ©ããŠããŸããMoveããã°ã©ã ã¯ããããã®åä»ãããããªããžã§ã¯ãã«å¯ŸããŠããã®äœæãæ°ããææè
ãžã®ãããã®ã¢ã»ããã®è²æž¡ãããã³ã¢ã»ãããå€ç°ãããæäœã®ããã®ã«ã¹ã¿ã ã«ãŒã«ãå®çŸ©ããŸãã
Suiã¯ãä»ã®ãããã¯ãã§ãŒã³ã·ã¹ãã ã«ãããããªããŒã¿ãŒããã€ããŒã®ãããªåœ¹å²ãæãããç¡èš±å¯ã®åœå±ã«ãã£ãŠç¶æãããŠããŸããè³ç£ã«å¯Ÿããå
±éã®æäœã®å®å
šæ§ã確ä¿ããããã«ãåœå±éã® Byzantine consistent ãããŒããã£ã¹ããããã³ã«ã䜿çšããByzantineåå®ãšæ¯èŒããŠãäœã¬ã€ãã³ã·ãŒãšåªããã¹ã±ãŒã©ããªãã£ã確ä¿ããŸããå
±æãªããžã§ã¯ãã®å®å
šæ§ã«ã€ããŠã¯ãByzantineåæã«ã®ã¿äŸåããŠããŸããã¬ããã³ã¹æäœããã§ãã¯ãã€ã³ããšåæ§ã«ãã¯ãªãã£ã«ã«ãªã¬ã€ãã³ã·ãŒãã¹ãå€ããŠå®è¡ãããŸããã¹ããŒãã³ã³ãã©ã¯ãã®å®è¡ããå¯èœãªéãèªç¶ã«äžŠååãããŸããSuiã¯ãèªã¿åããèªèšŒã§ããã©ã€ãã¯ã©ã€ã¢ã³ããšãå®å
šæ§ã®ããã«ãã¹ãŠã®ãã©ã³ãžã·ã§ã³ãç£æ»ã§ãããã«ã¯ã©ã€ã¢ã³ãããµããŒãããŠããŸãããããã®èšåã«ãããä»ã®ãããã¯ãã§ãŒã³ãžã®ä¿¡é Œæå°åã®æ©æž¡ããå¯èœã§ãã
ãã€ãã£ãã¢ã»ããSUIã¯ããã¹ãŠã®æäœã®ããã®ã¬ã¹ä»£ãæ¯æãããã«äœ¿çšãããŸãããŸãããã®ææè
ã¯ããšããã¯å
ã§Suiãæäœããããã«åœå±ã«ã¹ããŒã¯ãå§ä»»ããããã«äœ¿çšããã宿çã«åœå±ã¯å§ä»»ãããã¹ããŒã¯ã«åŸã£ãŠåæ§æãããŸããäœ¿çšæžã¿ã®ã¬ã¹ã¯ãã¹ããŒã¯ãšSuiã®éçšãžã®è²¢ç®åºŠã«å¿ããŠãåœå±ãšãã®å§ä»»è
ã«åé
ãããŸãã
ãã®ãã¯ã€ãããŒããŒã¯2éšæ§æã«ãªã£ãŠããïŒç¬¬2ç« ã§ã¯MoveèšèªãçšããSuiã®ããã°ã©ãã³ã°ã¢ãã«ã«ã€ããŠã第4ç« ã§ã¯Suiã®å®å
šæ§ã掻æ§åãæ§èœãä¿èšŒããããŒããã·ã§ã³ã¬ã¹åæ£åã·ã¹ãã ã®éçšã説æããŸãã
Suiã¹ããŒãã³ã³ãã©ã¯ãã¯Moveèšèªã§æžãããŠããŸããMoveã¯å®å
šã§è¡šçŸåãè±ãã§ããããã®åã·ã¹ãã ãšããŒã¿ã¢ãã«ã¯ãSuiãã¹ã±ãŒã©ãã«ã«ãã䞊ååæ/å®è¡æŠç¥ãèªç¶ã«ãµããŒãããŸããMoveã¯ãããšããšFacebookã§Diemãããã¯ãã§ãŒã³çšã«éçºãããã¹ããŒãã³ã³ãã©ã¯ãæ§ç¯çšã®ãªãŒãã³ãœãŒã¹ããã°ã©ãã³ã°èšèªã§ãããã®èšèªã¯ãã©ãããã©ãŒã ã«äŸåãããSuiã«æ¡çšãããã ãã§ãªããä»ã®ãã©ãããã©ãŒã ïŒ0LãStarCoinãªã©ïŒã§ã人æ°ãåããŠããŸãã
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãMoveèšèªã®äž»ãªç¹åŸŽã«ã€ããŠèª¬æãããããSuiäžã®è³ç£ã®äœæãšç®¡çã«ã©ã®ããã«äœ¿çšãããŠãããã説æããŸããMoveã®æ©èœã®ãã詳现ãªèª¬æã¯Move Programming Language bookã«ãããSuiã«ç¹åããMoveã®å
容ã¯Sui Developer Portalã«ãããŸãããŸããSuiã®æèã«ãããMoveã®ããæ£åŒãªèª¬æã¯ç¬¬3ç« ã«ãããŸãã
Suiã®ã°ããŒãã«ç¶æ
ã«ã¯ãMove颿°ãšåãå«ãMoveã¢ãžã¥ãŒã«ïŒè©³çްã¯2.1.1é
åç
§ïŒã®éåäœã§ããMoveããã±ãŒãžã«ãã£ãŠçæã管çãããããã°ã©ããã«ãªããžã§ã¯ãã®ããŒã«ãå«ãŸããŠããŸããç§»åããã±ãŒãžèªäœããªããžã§ã¯ãã§ãããããã£ãŠãSuiãªããžã§ã¯ãã¯æ¬¡ã®2ã€ã«åé¡ãããŸãã
æ§é äœããŒã¿å€ ïŒMoveã¢ãžã¥ãŒã«ã管çããåä»ãããŒã¿ãåãªããžã§ã¯ãã¯ãããªããã£ãåïŒæŽæ°ãã¢ãã¬ã¹ãªã©ïŒãä»ã®ãªããžã§ã¯ããéãªããžã§ã¯ãã®æ§é äœãå«ãããšãã§ãããã£ãŒã«ããæã€æ§é äœå€ã§ãã
ããã±ãŒãžã³ãŒãå€ïŒé¢é£ããMoveãã€ãã³ãŒãã¢ãžã¥ãŒã«ã®éåã§ãåååäœãšããŠçºè¡ãããŸããããã±ãŒãžå
ã®åã¢ãžã¥ãŒã«ã¯ããã®ããã±ãŒãžå
ã®ä»ã®ã¢ãžã¥ãŒã«ãšã以åã«å
¬éãããããã±ãŒãžã®ã¢ãžã¥ãŒã«ãšã®äž¡æ¹ã«äŸåããããšãã§ããŸãã
ãªããžã§ã¯ãã¯ãã¢ã»ããïŒäŸïŒãã¡ã³ãžãã«ããŸãã¯ãã³ãã¡ã³ãžãã«ããŒã¯ã³ïŒãç¹å®ã®é¢æ°ãåŒã³åºãããä»ã®ãªããžã§ã¯ããäœæãããããæš©éãä»äžããæ©èœãä»ã®ã¢ã»ããã管çãããã¹ããŒãã³ã³ãã©ã¯ãããªã©ãã³ãŒãåã§ããŸãïŒæ±ºå®ããã®ã¯ããã°ã©ããŒæ¬¡ç¬¬ã§ãïŒãã«ã¹ã¿ã Suiãªããžã§ã¯ãã¿ã€ãã宣èšããMoveã³ãŒãã¯ã次ã®ããã«ãªããŸãã
struct Obj has key { id: VersionedID, // globally unique ID and version f: u64 // objects can have primitive fields g: OtherObj // fields can also store other objects }
ïŒ.ïŒ.ïŒãã¢ãžã¥ãŒã«
Moveããã°ã©ã ã¯ãæ§é äœå®£èšãšé¢æ°å®£èšã®ãªã¹ããããªãã¢ãžã¥ãŒã«ã®éåãšããŠæ§æãããŸããã¢ãžã¥ãŒã«ã¯ãä»ã®ã¢ãžã¥ãŒã«ããæ§é äœãã€ã³ããŒãããããä»ã®ã¢ãžã¥ãŒã«ã宣èšãã颿°ãåŒã³åºãããšãã§ããŸãã
äŸãã°ãäžã®äŸã®ã¢ãžã¥ãŒã« OtherObj ã¯ãObj ãå®çŸ©ããŠããã¢ãžã¥ãŒã«ãšã¯å¥ã®ã¢ãžã¥ãŒã«ã§å®çŸ©ããããšãã§ããŸãã ããã¯ãå¥çŽã®å¢çãè¶ããŠæµããããšãã§ããã®ã¯éæ§é åãã€ãã ãã§ãããå€ãã®ã¹ããŒãã³ã³ãã©ã¯ãèšèªãšã¯ç°ãªãç¹ã§ããããããMoveã¯ãããã°ã©ããå
ç¢ã§å®å
šãªã³ãŒããæžããããã«ã«ãã»ã«åæ©èœãæäŸããŠãããããããããµããŒãããããšãã§ããã®ã§ããå
·äœçã«ã¯ãMoveã®åã·ã¹ãã ã¯ãäžèšã® Obj ã®ãããªåã¯ããã®åã宣èšããã¢ãžã¥ãŒã«å
éšã®é¢æ°ã«ãã£ãŠã®ã¿çæãç Žå£ãã³ããŒãèªã¿èŸŒã¿ãæžã蟌ã¿ãã§ããããšãä¿èšŒããŠããŸããããã«ãããã¢ãžã¥ãŒã«ã¯å®£èšãããåã«å¯ŸããŠãã¹ããŒãã³ã³ãã©ã¯ãã®ä¿¡é Œå¢çãè¶ããŠæµããŠãä¿æããç¶ãã匷ãäžå€æ§ã匷å¶ããããšãã§ããŸãã
ïŒ.ïŒ.ïŒ ã ãã©ã³ã¶ã¯ã·ã§ã³ãšãšã³ããªãŒãã€ã³ã
ã°ããŒãã«ãªããžã§ã¯ãããŒã«ã¯ããªããžã§ã¯ãã®äœæãç Žæ£ãèªã¿åããæžã蟌ã¿ãå¯èœãªãã©ã³ã¶ã¯ã·ã§ã³ã«ãã£ãп޿°ãããŸãããã©ã³ã¶ã¯ã·ã§ã³ã¯ãæäœãåžæããæ¢åã®åãªããžã§ã¯ããå
¥åãšããŠåãåããªããã°ãªããŸãããããã«ããã©ã³ã¶ã¯ã·ã§ã³ã¯ãããã±ãŒãžãªããžã§ã¯ãã®ããŒãžã§ã³IDããã®ããã±ãŒãžå
ã®ã¢ãžã¥ãŒã«åãšé¢æ°åã颿°ãžã®åŒæ°ïŒå
¥åãªããžã§ã¯ããå«ãïŒãå«ããå¿
èŠããããŸããäŸãã°ã
public fun entrypoint( o1: Obj, o2: &mut Obj, o3: &Obj, x: u64, ctx: &mut TxContext ) { ... }
ãšãã颿°ãåŒã³åºãå Žåããã©ã³ã¶ã¯ã·ã§ã³ã¯ãã¿ã€ããObjã§ãã3ã€ã®ç°ãªããªããžã§ã¯ãã®IDãšãxã«ãã€ã³ãããããã®æŽæ°ãæäŸããªããã°ãªããŸãããTxContextã¯ã©ã³ã¿ã€ã ã«ãã£ãŠæºããããç¹å¥ãªãã©ã¡ãŒã¿ã§ãéä¿¡è
ã¢ãã¬ã¹ãšæ°ãããªããžã§ã¯ããäœæããããã«å¿
èŠãªæ
å ±ãå«ãã§ããŸãã
ãšã³ããªãŒãã€ã³ããžã®å
¥åã¯ïŒããäžè¬çã«ã¯ Move颿°ãžã®å
¥åãïŒãåã«ãšã³ã³ãŒããããç°ãªã倿Žèš±å¯ãæã£ãŠæž¡ãããããšããããŸããObj å
¥åã¯ãèªã¿åããæžã蟌ã¿ã転éãç Žæ£ãå¯èœã§ãã&mut Obj å
¥åã¯ãèªã¿åããŸãã¯æžã蟌ã¿ã®ã¿å¯èœã§ã&Objã¯èªã¿åãã®ã¿å¯èœã§ãããã©ã³ã¶ã¯ã·ã§ã³ã®éä¿¡è
ã¯ãæå®ããããã¥ãŒã¿ããªãã£ããŒããã·ã§ã³ã§åå
¥åãªããžã§ã¯ãã䜿çšããæš©éããªããã°ãªããŸããã
ïŒ.ïŒ.ïŒ ã ãªããžã§ã¯ãã®äœæãšè»¢é
ããã°ã©ããŒã¯ããšã³ããªãŒãã€ã³ãã«æž¡ããã TxContext ã䜿çšããŠããªããžã§ã¯ãã®æ°é®®ãªIDãçæããããšã«ããããªããžã§ã¯ããäœæããããšãã§ããŸãã
public fun create_then_transfer( f: u64, g: OtherObj, o1: Obj, ctx: &mut TxContext ) { let o2 = Obj { id: TxContext::fresh_id(ctx), f, g }; Transfer::transfer(o1, TxContext:sender()); Transfer::transfer(o2, TxContext:sender()); }
ãã®ã³ãŒãã¯ãOtherObj åãš Obj åã®2ã€ã®ãªããžã§ã¯ããå
¥åãšããŠåãåããæåã®ãªããžã§ã¯ããšçæãããIDã䜿çšããŠæ°ãã Obj ãäœæããäž¡æ¹ã® Obj ãªããžã§ã¯ãããã©ã³ã¶ã¯ã·ã§ã³éä¿¡è
ã«è»¢éããŸãããªããžã§ã¯ãã転éããããšãããã¯ã°ããŒãã«ãªããžã§ã¯ãããŒã«ã«æµãããã©ã³ã¶ã¯ã·ã§ã³ã®æ®ãã®éšåã®ã³ãŒãã«ãã£ãŠã¢ã¯ã»ã¹ãããããšã¯ãããŸãããTransferã¢ãžã¥ãŒã«ã¯Suiæšæºã©ã€ãã©ãªã®äžéšã§ããªããžã§ã¯ãããŠãŒã¶ã¢ãã¬ã¹ãä»ã®ãªããžã§ã¯ãã«è»¢éããããã®é¢æ°ãå«ãŸããŠããŸãã ããããã°ã©ããŒã³ãŒãã転éåŒã³åºãã®äžã€ãå«ãããšãæ ã£ãå Žåããã®ã³ãŒãã¯Moveåã·ã¹ãã ã«ãã£ãŠæçµ¶ãããããšã«æ³šæããŠãã ãããMoveã¯ããªããžã§ã¯ããåæã«äœãããããã³ããŒããããã誀ã£ãŠç Žå£ããããããªãããã«ããªãœãŒã¹ã»ãŒããã£ä¿è·ã宿œããŠããŸãããªãœãŒã¹ã»ãŒããã£ã®ããäžã€ã®äŸãšããŠãåããªããžã§ã¯ãã2å転éããããšãããšããããMoveã¿ã€ãã·ã¹ãã ã«ãã£ãŠæåŠãããŸãã
æ¬ç¯ã§ã¯ã第2ç« ã§è¿°ã¹ãSuiããã°ã©ãã³ã°ã¢ãã«ã®éå
¬åŒãªèšè¿°ãçºå±ããã è©³çŽ°ãªæå³çå®çŸ©ã瀺ããŸããåç¯ã§ã¯Moveã®ãœãŒã¹ã³ãŒãã®äŸã瀺ããããããã§ã¯Moveã®ãã€ãã³ãŒãã®æ§é ãå®çŸ©ããŸããéçºè
ã¯ãããŒã«ã«ã§MoveãœãŒã¹ã³ãŒããèšè¿°ãããã¹ããã圢åŒçã«æ€èšŒããŸããMoveãœãŒã¹ã³ãŒããããŒã«ã«ã§æžããMoveãã€ãã³ãŒãã«ã³ã³ãã€ã«ããŠãããããã¯ãã§ãŒã³ã«å
¬éããŸãããããã¯ãã§ãŒã³äžã§å
¬éãããMoveãã€ãã³ãŒãã¯ãåãã¡ã¢ãªããªãœãŒã¹ã®å®å
šæ§ãšãã£ãäž»èŠãªç¹æ§ãæºããããšãä¿èšŒããããã«ããã€ãã³ãŒãæ€èšŒåšãééããå¿
èŠããããŸãã 第2ç« ã§è¿°ã¹ãããã«ãMoveã¯ãã©ãããã©ãŒã ã«äŸåããªãèšèªã§ãããã³ã¢èšèªããã©ãŒã¯ããããšãªããç°ãªãã·ã¹ãã ã®ç¹å®ã®ããŒãºã«é©åãããããšãã§ããŸãã以äžã®èª¬æã¯ãMoveèšèªã®ã³ã¢ãšãªãæŠå¿µïŒé»æåã§è¡šèšïŒãšãMoveã®ã³ã¢ãšãªãèšèªãæ¡åŒµããSuiç¬èªã®æ©èœïŒãªã¬ã³ãžè²ã®æåã§ç€ºãïŒã§ãã
衚1ïŒã¢ãžã¥ãŒã« Moveã³ãŒãã¯ã衚1ã«å®çŸ©ãããæ§é ãæã€ã¢ãžã¥ãŒã«ã«ç·šæãããŠããŸããã¢ãžã¥ãŒã«ã¯ãååä»ãæ§é äœå®£èšãšååä»ã颿°å®£èšã®éåããæ§æãããŸãïŒãããã®å®£èšã®äŸã¯2.1ç¯ã§èª¬æããŠããŸãïŒããŸããã¢ãžã¥ãŒã«ã¯ã¢ãžã¥ãŒã«åæååãšããŠç¹å¥ãªé¢æ°å®£èšãå«ãã§ããŸãããã®é¢æ°ã¯ãã¢ãžã¥ãŒã«ããªã³ãã§ãŒã³ã§å
¬éããããšãã«äžåºŠã ãåŒã³åºãããŸãã
æ§é äœå®£èšã¯ããã£ãŒã«ãåãæ ŒçŽå¯èœãªåã«ãããã³ã°ããããååä»ããã£ãŒã«ãã®éåäœã§ããæ§é äœå®£èšã«ã¯ããªãã·ã§ã³ã§èœåã®ãªã¹ããå«ãŸããŸãïŒæ ŒçŽå¯èœãªåãšèœåã®èª¬æã«ã€ããŠã¯ã第2ç« ãåç
§ããŠãã ããïŒãæ§é äœå®£èšã«ã¯ãèœåå¶çŽãæã€æ±çšçãªãã©ã¡ãŒã¿ãŒã®ãªã¹ããå«ããããšãã§ããäŸãã°ã struct Wrapper<T: copy>{ t: T } ã®ãããªå Žåã¯ãæ±çšæ§é äœå®£èšãšåŒã³ãŸãããžã§ããªãã¯ã»ãã©ã¡ãŒã¿ãŒã¯ãæ§é äœãã£ãŒã«ãã®å®£èšæã«äœ¿ãããåã衚ããŸããæ§é äœå®£èšæã«ã¯æªç¥æ°ã§ãæ§é äœã®ã€ã³ã¹ã¿ã³ã¹åæïŒã€ãŸããæ§é äœã®å€ãçæãããæïŒã«å
·äœçãªåãæäŸãããŸãã
颿°å®£èšã«ã¯ããã©ã¡ãŒã¿ã®åãæ»ãå€ã®åã颿°æ¬äœãæ§æããåœä»€ã®ãªã¹ããå«ãŸããŸãã颿°å®£èšã«ã¯ãèœåå¶çŽã®ããäžè¬çãªãã©ã¡ãŒã¿ãŒã®ãªã¹ããå«ããããšãã§ãããã®å Žåã¯ãäŸãã°ã fun unwrap<T: copy>(p: Wrapper){} ã®ãããªå Žåã¯ãäžè¬é¢æ°å®£èšãšåŒãã§ããŸããæ§é äœå®£èšãšåæ§ã«ãæ±çšãã©ã¡ãŒã¿ã¯ã颿°å®£èšæã«ã¯æªç¥ã®åã§ããã颿°ãã©ã¡ãŒã¿ãæ»ãå€ã颿°æ¬äœïŒå
·äœçãªåã¯é¢æ°ãåŒã°ãããšãã«æäŸãããŸãïŒã宣èšãããšãã«äœ¿ãããåã衚ããŸãã 颿°æ¬äœã§äœ¿çšã§ããåœä»€ã«ã¯ãã°ããŒãã«ã¹ãã¬ãŒãžåœä»€ïŒmove_to, move_from, borrow_global ãªã©ïŒãé€ããéåžžã®ãã¹ãŠã®Moveåœä»€ãå«ãŸããŸããã³ã¢Moveã®åœä»€ãšãã®ã»ãã³ãã£ã¯ã¹ã®å®å
šãªãªã¹ãã«ã€ããŠã¯[Marco Patrignani and Sam Blackshear. 2021. Robust Safety for Move. CoRR abs/2110.05043 (2021). arXiv:2110.05043 https://arxiv.org/abs/2110.05043\] ãåç
§ããŠãã ãããSuiã§ã¯ãã³ã¢Moveã®ã¢ã«ãŠã³ãããŒã¹ã®ã°ããŒãã«ã¹ãã¬ãŒãžã§ã¯ãªããSuiã®ã°ããŒãã«ãªããžã§ã¯ãããŒã«ãä»ããŠæ°žç¶ã¹ãã¬ãŒãžããµããŒããããŠããŸãã Suiç¹æã®ãªããžã§ã¯ãæäœã¯4ã€ãããŸãããããã®æäœã¯ãããããªããžã§ã¯ãã®æææš©ã¡ã¿ããŒã¿ã倿ŽãïŒ3.3ç¯åç
§ïŒããããã°ããŒãã«ãªãªããžã§ã¯ãããŒã«ã«æ»ããŸããæãç°¡åã«ã¯ãSuiãªããžã§ã¯ãã¯Suiãšã³ããŠãŒã¶ãŒã®ã¢ãã¬ã¹ã«è»¢éããããšãã§ããŸãããªããžã§ã¯ãã¯å¥ã®èŠªãªããžã§ã¯ãã«è»¢éããããšãã§ããŸãããã®æäœã§ã¯ãåŒã³åºãåŽããåãªããžã§ã¯ãã«å ããŠã芪ãªããžã§ã¯ããžã®å€æŽå¯èœãªåç
§ãäžããå¿
èŠããããŸããæåŸã«ããªããžã§ã¯ãã¯Suiã·ã¹ãã å
ã®èª°ã§ãèªãããšãã§ãããã誰ã§ãæžãããšãã§ããªãããã«ãäžå€ã«å
±æããããšãã§ããŸãã ç°ãªãçš®é¡ã®æææš©ãåºå¥ããæ©èœã¯ãSuiã®ãŠããŒã¯ãªæ©èœã§ããç§ãã¡ãç¥ã£ãŠããä»ã®ãããã¯ãã§ãŒã³ã»ãã©ãããã©ãŒã ã§ã¯ããã¹ãŠã®å¥çŽãšãªããžã§ã¯ãã¯ãã¥ãŒã¿ãã«ã«å
±æãããŠããŸããã»ã¯ã·ã§ã³4ã§èª¬æããããã«ãSuiã¯ãã®æ
å ±ãæŽ»çšããŠãïŒãã¹ãŠã®ãã©ã³ã¶ã¯ã·ã§ã³ã®ïŒäžŠåãã©ã³ã¶ã¯ã·ã§ã³å®è¡ãšïŒå
±æããããã¥ãŒã¿ããªãã£ãæããªããªããžã§ã¯ããå«ããã©ã³ã¶ã¯ã·ã§ã³ã®ïŒäžŠååæãå®çŸããŸãã ïŒ.ïŒãã¿ã€ããšã¢ããªã㣠衚2ïŒã¿ã€ããšã¢ããªã㣠Moveããã°ã©ã ã¯ãSuiã°ããŒãã«ãªããžã§ã¯ãããŒã«ã«æ ŒçŽãããããŒã¿ãšãMoveããã°ã©ã ã®å®è¡æã«äœæããããã©ã³ãžã§ã³ãããŒã¿ã®äž¡æ¹ãæäœããŸãããªããžã§ã¯ãããã©ã³ãžã§ã³ãããŒã¿ãèšèªã¬ãã«ã§ã¯Moveã®å€ã§ãããããããã¹ãŠã®å€ãåãããã«äœãããããã§ã¯ãªããåã«ãã£ãŠèŠå®ãããç°ãªãç¹æ§ãç°ãªãæ§é ãæã€å ŽåããããŸãã Moveã§äœ¿çšãããåã¯è¡š2ã«å®çŸ©ãããŠããŸããMoveã¯ä»ã®ããã°ã©ãã³ã°èšèªã§ãµããŒããããŠãããã®ãšåãããªããã£ãåãäŸãã°ããŒãªã¢ã³åãæ§ã
ãªå€§ããã®ç¬Šå·ãªãæŽæ°åãªã©ãå€ããµããŒãããŠããŸããããã«ãMoveã®ã³ã¢ã«ã¯ãã·ã¹ãã å
ã®ãšã³ããŠãŒã¶ãŒã衚ãã¢ãã¬ã¹åããããããã¯ãã©ã³ã¶ã¯ã·ã§ã³ã®éä¿¡è
ãïŒSuiã§ã¯ïŒãªããžã§ã¯ãã®ææè
ãç¹å®ããã®ã«ã䜿ãããŸããæåŸã«ãSuiã¯Suiãªããžã§ã¯ãã®IDã衚ãidåãå®çŸ©ããŠããŸãïŒè©³çްã¯3.3ç¯ãåç
§ïŒã struct type ã¯ãããã¢ãžã¥ãŒã«ã§å®£èšãããæ§é äœïŒæ§é äœå®£èšã«ã€ããŠã¯ç¬¬3.1ç¯ãåç
§ïŒã® ã€ã³ã¹ã¿ã³ã¹ïŒããªãã¡å€ïŒãèšè¿°ãããã®ã§ããäžè¬çãªæ§é äœå®£èšïŒgeneric struct typeïŒãè¡šãæ§é äœã¿ã€ãã«ã¯ãæ ŒçŽå¯èœãªã¿ã€ãã®ãªã¹ããå«ãŸããŸãããã®ãªã¹ãã¯ãæ§é äœå®£èšã®äžè¬çãªãã©ã¡ãŒã¿ãªã¹ããšå¯Ÿå¿ãããã®ã§ããæ ŒçŽå¯èœãªåã«ã¯ãå
·è±¡åïŒããªããã£ãåãæ§é äœåïŒãæ±çšåã®ããããããããŸãããã®ãããªåãã¹ãã¢ïŒä¿åïŒå¯èœåãšåŒã³ãŸãããããã¯ãåç
§åãã¹ãã¢ã§ããªãã®ã«å¯ŸããŠã æ§é äœã®ãã£ãŒã«ãããªã³ã»ãã§ãŒã³ã§æ°žç¶çã«ä¿åããããªããžã§ã¯ãã«è¡šç€ºããããšãã§ããããã§ãã äŸãã°ãWrapperæ§é äœåã¯ãæ ŒçŽå¯èœãªå
·è±¡ïŒããªããã£ãïŒåu64ããã©ã¡ãŒã¿ãšããæ±çšæ§é äœåã§ããã®åã¯ãæ§é äœã®ã€ã³ã¹ã¿ã³ã¹(å€)ãçæããããã«äœ¿çšããããšãã§ããŸããäžæ¹ãåãæ±çšæ§é äœã§ããå²ãæ§é äœã颿°å®£èšã®æ±çšãã©ã¡ãŒã¿ããæ¥ãæ±çšåïŒäŸãã°ãstruct Parent { w: Wrapper }ïŒã§ãã©ã¡ãŒã¿åã§ãããã®çš®ã®åã¯ãæ§é äœãã£ãŒã«ãã颿°ãã©ã¡ãŒã¿ãªã©ã®å®£èšã«äœ¿ãããšãã§ããŸããæ§é çã«ã¯ãæ±çšåã¯ãæ§é çã«ã¯ãæ±çšåã¯ãæ§é äœãŸãã¯é¢æ°å®£èšãå
å«ããæ±çšãã©ã¡ãŒã¿ãªã¹ããžã®æŽæ°ã€ã³ããã¯ã¹ïŒè¡š5ã§Nãšå®çŸ©ïŒã§ããã Moveã®ãã¯ãã«åã¯ãå質ãªå€ã®å¯å€é·ã®éåãèšè¿°ããŸãããã¯ãã«åã¯ãæ ŒçŽå¯èœãªåã®ã¿æ ŒçŽã§ããããèªäœãæ ŒçŽå¯èœãªåã§ãã Moveããã°ã©ã ã§ã¯ãå€ãçŽæ¥æäœããããšããåç
§ãä»ããŠéæ¥çã«ã¢ã¯ã»ã¹ããããšãã§ããŸããåç
§åã¯åç
§ãããä¿åå¯èœãªåãšãäžããããåã®å€ãèªã¿æžããã§ãã (mut) ãèªã¿åºãã®ã¿ãã§ãã (immut) ããæ±ºå®ïŒåŒ·å¶ïŒããããã«äœ¿ãããå€ç°æ§ä¿®é£Ÿåã®äž¡æ¹ãå«ãã§ããŸãããã®çµæãMoveã®å€åïŒè¡š2ã®TypeïŒã®æãäžè¬çãªåœ¢ã¯ãä¿åå¯èœãªåã§ãåç
§å¯èœãªåã§ãããã®ã§ãã æåŸã«ãMoveã®èœåã¯ãäžããããåã®å€ãã³ããŒïŒè€è£œïŒã§ãããã©ãããªã©ãäžããããåã®å€ã«å¯ŸããŠã©ã®ãããªåäœãèš±ãããããå¶åŸ¡ããŸããã¢ããªãã£ã¯æ§é äœå®£èšãšæ±çšåãã©ã¡ãŒã¿ãå¶çŽããŸããMoveãã€ãã³ãŒãããªãã¡ã€ã¢ã¯ãã³ããŒãªã©ã®éèŠãªæäœã察å¿ããèœåãæã€åã«å¯ŸããŠã®ã¿å®è¡å¯èœã§ããããšãä¿èšŒãã責任ãè² ã£ãŠããŸãã ïŒ.ïŒããªããžã§ã¯ããšæææš© 衚3ïŒãªããžã§ã¯ããšæææš© åSuiãªããžã§ã¯ãã¯ã°ããŒãã«ã«äžæãªèå¥åïŒè¡š3ã®ObjlDïŒãæã¡ãææè
éãä»ã®ãªããžã§ã¯ããšã®éã§ãããŒããéã«ããªããžã§ã¯ãã®æ°žç¶çãªã¢ã€ãã³ãã£ãã£ãšããŠæ©èœããŸãããã®IDã¯ããªããžã§ã¯ããäœæãããã©ã³ã¶ã¯ã·ã§ã³ã«ãã£ãŠãªããžã§ã¯ãã«å²ãåœãŠãããŸãããªããžã§ã¯ãIDã¯ãçŸåšã®ãã©ã³ã¶ã¯ã·ã§ã³ã®ã³ã³ãã³ããšããã®ãã©ã³ã¶ã¯ã·ã§ã³ãäœæãããªããžã§ã¯ãã®æ°ãèšé²ããã«ãŠã³ã¿ãŒã«ãèè¡çªæ§ã®ããã·ã¥é¢æ°ãé©çšããŠäœæãããŸãããã©ã³ã¶ã¯ã·ã§ã³ïŒãããã£ãŠãã®ãã€ãžã§ã¹ãïŒã¯ãåŸã§èª¬æããããã«ããã©ã³ã¶ã¯ã·ã§ã³ã®å
¥åãªããžã§ã¯ãã«å¯Ÿããå¶çŽã«ããäžæã§ããããšãä¿èšŒãããŸãã IDã«å ããåãªããžã§ã¯ãã¯ãã®æææš©ã«é¢ããã¡ã¿ããŒã¿ãæã¡ãŸãããªããžã§ã¯ãã¯ãã¢ãã¬ã¹ãŸãã¯ä»ã®ãªããžã§ã¯ãã«ãã£ãŠäžæã«ææãããããæžã蟌ã¿/èªã¿åãæš©éã§å
±æãããããèªã¿åãæš©éã®ã¿ã§å
±æããããã®ããããã§ãããªããžã§ã¯ãã®æææš©ã¯ããã©ã³ã¶ã¯ã·ã§ã³ããããå
¥åãšããŠäœ¿çšã§ãããã©ããããŸãã©ã®ããã«äœ¿çšã§ããããæ±ºå®ããŸãã倧ãŸãã«ã¯ãäžæã«ææããããªããžã§ã¯ãã¯ããã®ææè
ã«ãã£ãŠéå§ããããã©ã³ã¶ã¯ã·ã§ã³ããŸãã¯ãã®èŠªãªããžã§ã¯ããå
¥åãšããŠå«ããã©ã³ã¶ã¯ã·ã§ã³ã«ãããŠã®ã¿äœ¿çšã§ããŸããäžæ¹ãå
±æãªããžã§ã¯ãã¯ä»»æã®ãã©ã³ã¶ã¯ã·ã§ã³ã«ãã£ãŠäœ¿çšã§ããããç¹å®ã®å€æŽå¯èœæ§ããŒããã·ã§ã³ã«ãã£ãŠã®ã¿äœ¿çšã§ããŸããå®å
šãªèª¬æã¯ç¬¬4.4ç¯ãåç
§ããŠãã ããã ãªããžã§ã¯ãã«ã¯ãããã±ãŒãžã³ãŒããªããžã§ã¯ããšæ§é äœããŒã¿ãªããžã§ã¯ãã®2çš®é¡ããããŸããããã±ãŒãžãªããžã§ã¯ãã«ã¯ãã¢ãžã¥ãŒã«ã®ãªã¹ããå«ãŸããŸããæ§é äœãªããžã§ã¯ãã«ã¯ãMoveæ§é äœã®å€ãšãã®å€ã®Moveåãå«ãŸããŸãããªããžã§ã¯ãã®å
容ã¯å€åããŠãããã®IDããªããžã§ã¯ãã®åïŒããã±ãŒãžãæ§é äœãïŒãMoveæ§é äœã®åã¯äžå€ã§ããããã«ããããªããžã§ã¯ãã¯åŒ·ãåä»ããããæ°žç¶çãªã¢ã€ãã³ãã£ãã£ãæã€ããšãä¿èšŒãããŸãã æåŸã«ããªããžã§ã¯ãã¯ããŒãžã§ã³ãæã£ãŠããŸããçæãããã°ããã®ãªããžã§ã¯ãã¯ããŒãžã§ã³0ã§ããããã©ã³ã¶ã¯ã·ã§ã³ããªããžã§ã¯ããå
¥åãšããŠåãåããã³ã«ããªããžã§ã¯ãã®ããŒãžã§ã³ã¯ã€ã³ã¯ãªã¡ã³ããããŸãã ïŒ.ïŒãã¢ãã¬ã¹ãšèªèšŒå 衚4ïŒã¢ãã¬ã¹ãšèªèšŒå ã¢ãã¬ã¹ã¯ãSuiã®ãšã³ããŠãŒã¶ãŒã®æ°žç¶çãªã¢ã€ãã³ãã£ãã£ã§ãïŒãã ãã1人ã®ãŠãŒã¶ãŒãä»»æã®æ°ã®ã¢ãã¬ã¹ãæã€ããšãã§ããããšã«æ³šæããŠãã ããïŒããªããžã§ã¯ããä»ã®ãŠãŒã¶ãŒã«è»¢éããã«ã¯ãéä¿¡è
ã¯åä¿¡è
ã®ã¢ãã¬ã¹ãç¥ã£ãŠããå¿
èŠããããŸãã åŸã»ã©èª¬æããŸãããSuiã®ãã©ã³ã¶ã¯ã·ã§ã³ã¯ããã©ã³ã¶ã¯ã·ã§ã³ãéä¿¡ãã(ããªãã¡ãéå§ãã)ãŠãŒã¶ãŒã®ã¢ãã¬ã¹ãšããã®ã¢ãã¬ã¹ã«ãã€ãžã§ã¹ãããããããèªèšŒåãå«ãŸãªããã°ãªããŸãããã¢ãã¬ã¹ãšèªèšŒåãåé¢ããããšã§ãæå·ã®ä¿ææ§ãé«ããããšãã§ããŸããèªèšŒåã¯ãããšãç°ãªãéµé·ã䜿çšããçœ²åæ¹åŒã§ãã£ãŠã(äŸïŒãã¹ãã¯ã¢ã³ã¿ã 眲åããµããŒããããã)ãä»»æã®çœ²åæ¹åŒã®å
¬ééµã«ããããšãã§ããŸããããã«ãèªèšŒåã¯åäžã®å
¬ééµã§ããå¿
èŠã¯ãªãã(äŸãã°) K-of-Nãã«ãã·ã°ãã«éµã§ãã£ãŠã倧äžå€«ã§ãã ïŒ.ïŒããã©ã³ã¶ã¯ã·ã§ã³ 衚5ïŒãã©ã³ã¶ã¯ã·ã§ã³ Suiã«ã¯ãæ°ããMoveããã±ãŒãžã®å
¬éãšãæ¢ã«å
¬éãããŠããMoveããã±ãŒãžã®åŒã³åºããšãã2ã€ã®ç°ãªããã©ã³ã¶ã¯ã·ã§ã³ã¿ã€ãããããŸããå
¬éãã©ã³ã¶ã¯ã·ã§ã³ã¯ãããã±ãŒãžïŒåäžã®ãªããžã§ã¯ããšããŠäžç·ã«å
¬éãããã¢ãžã¥ãŒã«ã®ã»ããïŒãšããã®ããã±ãŒãžå
ã®ãã¹ãŠã®ã¢ãžã¥ãŒã«ã®äŸåé¢ä¿ïŒãã§ã«å
¬éãããããã±ãŒãžãªããžã§ã¯ããåç
§ããå¿
èŠããããªããžã§ã¯ãåç
§ã®ãªã¹ããšããŠãšã³ã³ãŒããããïŒãå«ã¿ãŸããå
¬éãã©ã³ã¶ã¯ã·ã§ã³ãå®è¡ããããã«ãSuiã©ã³ã¿ã€ã ã¯åããã±ãŒãžã«å¯ŸããŠMoveãã€ãã³ãŒãæ€èšŒãå®è¡ããããã±ãŒãžããã®äŸåé¢ä¿ã«å¯ŸããŠãªã³ã¯ããåã¢ãžã¥ãŒã«ã®ã¢ãžã¥ãŒã«åæååšãå®è¡ãããã¢ãžã¥ãŒã«ã€ãã·ã£ã©ã€ã¶ãŒã¯ãããã±ãŒãžã«ãã£ãŠå®è£
ãããã¢ããªã±ãŒã·ã§ã³ã®åæç¶æ
ãããŒãã¹ãã©ããããã®ã«æçšã§ãã ã³ãŒã«ãã©ã³ã¶ã¯ã·ã§ã³ã®æãéèŠãªåŒæ°ã¯ããªããžã§ã¯ãã®å
¥åã§ãããªããžã§ã¯ãã®åŒæ°ã¯ããªããžã§ã¯ãåç
§ïŒåäžææè
ããã³å
±æäžå€ãªããžã§ã¯ãã®å ŽåïŒãŸãã¯ãªããžã§ã¯ãIDïŒå
±æå¯å€ãªããžã§ã¯ãã®å ŽåïŒã§æå®ããŸãããªããžã§ã¯ããªãã¡ã¬ã³ã¹ã¯ããªããžã§ã¯ãIDããªããžã§ã¯ãããŒãžã§ã³ããªããžã§ã¯ãå€ã®ããã·ã¥ããæ§æãããŸããSuiã©ã³ã¿ã€ã ã¯ããªããžã§ã¯ãIDãšãªããžã§ã¯ãåç
§ã®äž¡æ¹ããã°ããŒãã«ãªããžã§ã¯ãããŒã«ã«æ ŒçŽããããªããžã§ã¯ãå€ã«è§£æ±ºããŸãããªããžã§ã¯ãåç
§ã®å Žåãã©ã³ã¿ã€ã ã¯åç
§ã®ããŒãžã§ã³ãããŒã«å
ã®ãªããžã§ã¯ãã®ããŒãžã§ã³ãšç
§åãããŸããåç
§ã®ããã·ã¥ãããŒã«ãªããžã§ã¯ããšäžèŽãããã©ããã確èªããŸããããã«ãããã©ã³ã¿ã€ã ã®ãªããžã§ã¯ãã«å¯ŸããèŠè§£ãããã©ã³ã¶ã¯ã·ã§ã³éä¿¡è
ã®ãªããžã§ã¯ãã«å¯ŸããèŠè§£ãšäžèŽããããšãä¿èšŒãããŸãã ããã«ãåŒã³åºããã©ã³ã¶ã¯ã·ã§ã³ã¯ãååŒæ°ããã³çŽç²ãªå€åŒæ°ãåãå
¥ããŸããååŒæ°ã¯ãåŒã³åºããããšã³ããªãã€ã³ã颿°ã®æ±çšåãã©ã¡ãŒã¿ãã€ã³ã¹ã¿ã³ã¹åããïŒäŸãã°ããšã³ããªãã€ã³ã颿°ã send_coin(c: Coin, ...) ã®å Žåãæ±çšåãã©ã¡ãŒã¿Tã¯ãSuiãã€ãã£ãããŒã¯ã³ãéãããã®ååŒæ°SUIã§ã€ã³ã¹ã¿ã³ã¹åããããšãå¯èœã§ãïŒãçŽç²ãªå€ã«ã¯ããªããã£ãåãšããªããã£ãåã®ãã¯ãã«ãå«ããããšãã§ããŸãããæ§é äœåã¯å«ããããŸããã åŒã³åºãã«ãã£ãŠåŒã³åºããã颿°ã¯ããªããžã§ã¯ãåç
§ïŒããã±ãŒãžãªããžã§ã¯ããåç
§ããªããã°ãªããªãïŒããã®ããã±ãŒãžã®ã¢ãžã¥ãŒã«åããã®ããã±ãŒãžã®é¢æ°åã«ãã£ãŠæå®ãããŸããåŒã³åºããã©ã³ã¶ã¯ã·ã§ã³ãå®è¡ããããã«ãSuiã©ã³ã¿ã€ã ã¯é¢æ°ã解決ããåããªããžã§ã¯ããããã³å€ã®åŒæ°ã颿°ãã©ã¡ãŒã¿ã«ãã€ã³ãããMove VMã䜿çšããŠé¢æ°ãå®è¡ããŸãã ã³ãŒã«ã»ãã©ã³ã¶ã¯ã·ã§ã³ãšãããªãã·ã¥ã»ãã©ã³ã¶ã¯ã·ã§ã³ã®äž¡æ¹ããã¬ã¹ã»ã¡ãŒã¿ãªã³ã°ãšã¬ã¹æéã®å¯Ÿè±¡ãšãªããŸããã¡ãŒã¿ãªã³ã°ã®äžéã¯ãæå€§ã¬ã¹ããžã§ããã§è¡šãããŸããã©ã³ã¿ã€ã ã¯ããžã§ããã«éãããŸã§ãã©ã³ã¶ã¯ã·ã§ã³ãå®è¡ããããžã§ããã䜿ãæãããå Žåã¯ïŒææ°æãå·®ãåŒããã¢ããŒãã³ãŒããå ±åãã以å€ïŒäœãããã«ã¢ããŒãããŸãã ææ°æã¯ããªããžã§ã¯ãåç
§ãšããŠæå®ãããã¬ã¹ãªããžã§ã¯ãããå·®ãåŒãããŸãããã®ãªããžã§ã¯ãã¯Suiãã€ãã£ãããŒã¯ã³ã§ãªããã°ãªããŸããïŒã€ãŸãããã®ã¿ã€ãã¯Coinã§ãªããã°ãªããŸããïŒãSuiã¯EIP15594ã¹ã¿ã€ã«ã®ææ°æã䜿çšããŠããŸãããããã³ã«ã¯ããšããã¯å¢çã§ã¢ã«ãŽãªãºã çã«èª¿æŽãããåºæ¬ææ°æïŒSuiããŒã¯ã³ããšã®ã¬ã¹åäœã§è¡šç€ºïŒãå®çŸ©ãããã©ã³ã¶ã¯ã·ã§ã³ã®éä¿¡è
ã¯ãªãã·ã§ã³ã®ãããïŒSuiããŒã¯ã³åäœã§è¡šç€ºïŒãå«ãããšãã§ããŸããéåžžã®ã·ã¹ãã è² è·ã§ããã°ãããããªãã§ãååŒã¯è¿
éã«åŠçãããŸããããããã·ã¹ãã ãæ··éããŠããå Žåã¯ãããå€ãã®ããããå«ãååŒãåªå
ãããŸããã¬ã¹ã»ãªããžã§ã¯ãããå·®ãåŒãããæéã¯ãïŒGasUsed * BaseFeeïŒ + Tip ãšãªããŸãã ïŒ.ïŒããã©ã³ã¶ã¯ã·ã§ã³ã®å¹æ 衚6ïŒãã©ã³ã¶ã¯ã·ã§ã³ã®å¹æ ãã©ã³ã¶ã¯ã·ã§ã³ã®å®è¡ã¯ããã©ã³ã¶ã¯ã·ã§ã³ã®å®è¡ãæåããå ŽåïŒè¡š6ã®SuccessEffectsïŒãšå€±æããå ŽåïŒè¡š6ã®AbortEffectsïŒãšã§ç°ãªããã©ã³ã¶ã¯ã·ã§ã³å¹æãçºçãããŸãã ãã©ã³ã¶ã¯ã·ã§ã³ãæ£åžžã«å®è¡ããããšããã©ã³ã¶ã¯ã·ã§ã³ã®å¹æã«ã¯ãSuiã®ã°ããŒãã«ãªããžã§ã¯ãããŒã«ã«å ãããã倿Žã«é¢ããæ
å ±ïŒæ¢åã®ãªããžã§ã¯ãã«å¯ŸããæŽæ°ãšæ°ããäœæããããªããžã§ã¯ãã®äž¡æ¹ãå«ãïŒãšããã©ã³ã¶ã¯ã·ã§ã³å®è¡äžã«çæãããã€ãã³ããå«ãŸããŸãããã©ã³ã¶ã¯ã·ã§ã³ã®å®è¡ãæåããå Žåã®å¥ã®å¹æãšããŠãã°ããŒãã«ããŒã«ããã®ãªããžã§ã¯ãã®åé€ïŒããªãã¡ãåé€ïŒãšããããªããžã§ã¯ããå¥ã®ãªããžã§ã¯ãã«ã©ããïŒããªãã¡ãåã蟌ã¿ïŒããããšãã§ããŸããããã¯åé€ãšåæ§ã®å¹æããããã©ãããããªããžã§ã¯ãã¯ã°ããŒãã«ããŒã«ããæ¶ãããããã©ãããããªããžã§ã¯ãã®äžéšåãšããŠã®ã¿ååšããããšã«ãªããŸããåé€ããããªããžã§ã¯ããã©ããããããªããžã§ã¯ãã¯ã°ããŒãã«ããŒã«ããã¢ã¯ã»ã¹ã§ããªããªãã®ã§ããããã®å¹æã¯ãªããžã§ã¯ãã®IDãšããŒãžã§ã³ã§è¡šçŸãããŸãã ã€ãã³ãã¯ãã°ããŒãã«ãªããžã§ã¯ãããŒã«ã®æŽæ°ãè¶
ããããã©ã³ã¶ã¯ã·ã§ã³ã®æ£åžžãªå®è¡ã®å¯æ¬¡ç广ã笊å·åããŸããæ§é çã«ãã€ãã³ãã¯Moveæ§é äœãšãã®åããæ§æãããŸããã€ãã³ãã¯ãããã¯ãã§ãŒã³å€ã®ã¢ã¯ã¿ãŒã«ãã£ãŠæ¶è²»ãããããšãæå³ããŠããŸãããMoveããã°ã©ã ã«ãã£ãŠèªã¿åãããããšã¯ãããŸããã Moveã®ãã©ã³ã¶ã¯ã·ã§ã³ã¯all-or-nothingã®ã»ãã³ãã£ã¯ã¹ãæã¡ãŸãããã©ã³ã¶ã¯ã·ã§ã³ã®å®è¡ãããæç¹ã§äžæããå ŽåïŒäŸãã°ãäºæãã¬é害ã«ãã£ãŠïŒããã®æç¹ä»¥åã«ãªããžã§ã¯ããžã®äœããã®å€æŽãèµ·ãã£ãŠããïŒãããã¯äœããã®ã€ãã³ããçæãããŠããïŒãšããŠãããããã®å¹æã¯äžæãããã©ã³ã¶ã¯ã·ã§ã³ã«ã¯æç¶ããŸããããã®ä»£ãããäžæããããã©ã³ã¶ã¯ã·ã§ã³ã®å¹æã«ã¯ãæ°å€ã®äžæã³ãŒããšãã©ã³ã¶ã¯ã·ã§ã³ã®äžæãçºçããã¢ãžã¥ãŒã«ã®ååãå«ãŸããŸããã¬ã¹æéã¯ãäžæããããã©ã³ã¶ã¯ã·ã§ã³ã«å¯ŸããŠåŒãç¶ã課éãããŸãã ïŒãSUIã·ã¹ãã æ¬ç¯ã§ã¯ãSuiãã·ã¹ãã ã®èгç¹ãã説æããŸããByzantineé害ã«ãããããããæš©åšéã®å®å
šæ§ãšæŽ»æ§ãä¿èšŒããæ©æ§ãå«ã¿ãŸãããŸããã·ã¹ãã ã®å®å
šãªç¶æ
ãæ€èšŒããããšãªããã·ã¹ãã ã®ç¶æ
ã«ã€ããŠäœããã®ä¿èšŒãå¿
èŠãšããã©ã€ãã¯ã©ã€ã¢ã³ããå«ããã¯ã©ã€ã¢ã³ãã®åäœã«ã€ããŠèª¬æããŸãã
ç°¡åãªèæ¯
ãã·ã¹ãã ã¬ãã«ã§ã¯ãSuiã¯FastPayã®äœé
延決æžã·ã¹ãã ãé²åããããã®ã§ããŠãŒã¶ãŒå®çŸ©ã®ã¹ããŒãã³ã³ãã©ã¯ããéããŠä»»æã®ãªããžã§ã¯ãã§åäœããããã«æ¡åŒµããèš±å¯ãªãã®å§ä»»èšŒæã«ãããã«ãŒãã»ãªãã»ã¹ããŒã¯ ã³ãããã£æ§æã§æ§æããŠããŸãããªããžã§ã¯ãææè
ã«ããåºæ¬çãªè³ç£ç®¡çã¯ãByzantineåæã®åŸæ¥ã®å®è£
ãšæ¯èŒããŠã¬ã€ãã³ã·ãŒãäœããå€ãã®ãã·ã³éã§ã¹ã±ãŒã«ããããByzantineäžè²«ãããŒããã£ã¹ãã®å€çš®ã«åºã¥ããŠããŸããå®å
šåæãå¿
èŠãªå Žåãç°ãªãå
±æãªããžã§ã¯ãã§ã®å®è¡ã¯äžŠååãããŠããŸãããããã¯ç®¡çã®ããã«é«åŠçDAGããŒã¹ã®åæãäŸãã° [George Danezis, Eleftherios Kokoris-Kogias, Alberto Sonnino, and Alexander Spiegelman. 2021. Narwhal and Tusk: A DAG-based Mempool and Efficient BFT Consensus. CoRR abs/2105.11827] ã䜿çšããŸãã
ãããã³ã«ã®æŠèŠ
ãå³1ã¯ããã©ã³ã¶ã¯ã·ã§ã³ãã³ãããããããã®ãã¯ã©ã€ã¢ã³ããšSuiåœå±éã®é«ã¬ãã«ãªã€ã³ã¿ã©ã¯ã·ã§ã³ã瀺ãå³ã§ããããã§ã¯ãããããç°¡åã«èª¬æããŸãã ç§å¯çœ²åéµãæã€ãŠãŒã¶ãŒã¯ãSuiå
ã§èªåãææãããªããžã§ã¯ããå
±æãªããžã§ã¯ããå€ç°ãããããã®ãŠãŒã¶ãŒãã©ã³ã¶ã¯ã·ã§ã³ãäœæãã眲åããŸãããã®åŸããŠãŒã¶ãŒçœ²åéµã¯äžèŠãšãªããæ®ãã®åŠçã¯ãŠãŒã¶ãŒã»ã¯ã©ã€ã¢ã³ãããŸãã¯ãŠãŒã¶ãŒã«ä»£ãã£ãŠã²ãŒããŠã§ã€ãè¡ãããšãã§ããŸãïŒå³ã§ã¯ããŒã¬ã¹æäœãšè¡šèšïŒã ãŠãŒã¶ãã©ã³ã¶ã¯ã·ã§ã³ã¯Suiåœå±ã«éãããåœå±ã¯ãããããã©ã³ã¶ã¯ã·ã§ã³ã®æå¹æ§ããã§ãã¯ããæåããã眲åããŠã¯ã©ã€ã¢ã³ãã«çœ²åä»ããã©ã³ã¶ã¯ã·ã§ã³ãè¿ããŸããã¯ã©ã€ã¢ã³ãã¯ããã©ã³ã¶ã¯ã·ã§ã³èšŒææžã圢æããããã«ãåœå±ã®å®æ°ãã å¿çãåéããŸãã ãã©ã³ã¶ã¯ã·ã§ã³èšŒææžã¯æ¬¡ã«ãã¹ãŠã®æ©é¢ã«éãè¿ããããããã©ã³ã¶ã¯ã·ã§ã³ãå
±æãªããžã§ã¯ããå«ãã§ããã°ãããã¯Suiæ©é¢ã«ãã£ãŠéå¶ãããByzantineåæãããã³ã«ã«ãéãããŸããåœå±ã¯èšŒææžããã§ãã¯ããå
±æãªããžã§ã¯ããé¢äžããŠããå Žåã«ã¯ãåæãããã³ã«ãä»ã®å
±æãªããžã§ã¯ããã©ã³ã¶ã¯ã·ã§ã³ãšã®é¢é£ã§ãããã·ãŒã±ã³ã¹ããã®ãåŸ
ã¡ããã®åŸãã©ã³ã¶ã¯ã·ã§ã³ãå®è¡ãããã®å¹æã眲åããã广å¿çã«ãŸãšããŸãã åœå±ã®å®è¶³æ°ãèšŒææžãå®è¡ãããšããã®å¹æã¯æçµçãªãã®ãšãªããŸãïŒå³ã§ã¯æçµãšè¡šèšãããŠããŸãïŒãã¯ã©ã€ã¢ã³ãã¯ãæš©éå¿çã®å®è¶³æ°ãéããŠå¹æèšŒææžãäœæããããããã©ã³ã¶ã¯ã·ã§ã³å¹æã®æçµæ§ã®èšŒæãšããŠäœ¿çšããããšãã§ããŸãã ãã®ã»ã¯ã·ã§ã³ã§ã¯ããããã®åæäœã®è©³çްãšãåœå±éã§ç¶æ
ãåæ§æããã³ç®¡çããããã®æäœã«ã€ããŠèª¬æããŸãã ïŒ.ïŒãã·ã¹ãã ã¢ãã« Suiã¯ãð â {0, . . .}ã§ç€ºãããäžé£ã®ãšããã¯ã«ãããŠåäœããŸããåãšããã¯ã¯å§å¡äŒð¶ð = (ðð, ðð (·)) ã«ãã£ãŠç®¡çããïŒããã§ ðð ã¯æ¢ç¥ã®å
¬éæ€èšŒããŒãšãããã¯ãŒã¯ãšã³ããã€ã³ããæã€æš©åšã®éåã§ãã颿° ðð (ð£) ã¯ïŒåæš©åš ð£ â ðð t ãå§ä»»ãããã¹ããŒã¯ã®åäœæ°ã«å¯Ÿå¿ä»ããŸããåãšããã¯ã® ð¶ð ã¯ïŒãšããã¯e-1ã«ãããæš©åšã¹ããŒã¯ã®ã¯ã©ãŒã©ã ïŒäžèšåç
§ïŒã«ãã眲åãããŠãããšä»®å®ããŸã(4.7ç¯ã§å§å¡äŒã®åœ¢æãšç®¡çã«ã€ããŠè¿°ã¹ãŸã)ããšããã¯å
ã§ã¯ïŒããæš©åšã¯æ£ããïŒãããã³ã«ã«å¿ å®ã«åŸãïŒçããŠããïŒãããæš©åšã¯ByzantineïŒãããã³ã«ããä»»æã«éžè±ããïŒã§ããå®å
šæ§ã®ä»®å®ã¯ãæ£çŽãªåœå±ã®éå ð»ð â ðð ã¯ãšããã¯å
ã§ã¹ããŒã¯ãã¯ã©ãŒã©ã ã«å²ãåœãŠãããããšãããªãã¡i.e. à ââð»ð ðð (â) > 2/3 à ð£âðð ðð (ð£) (ãããŠã3åã®2以äžã®ã¹ããŒã¯ãæã€åœå±ã®éåãã¯ã©ãŒã©ã ãšåŒã¶)ã§ããããšã§ãã æ£çŽãªåœå±éã®åèšŒææž(4.3ç¯åç
§)ã®ãªã¬ãŒãšããŠæ©èœãããå°ãªããšã1ã€ã®çããŠããŠæ£ããããŒãã£ãååšããŸããããã¯ãã©ã€ãæ§ãä¿èšŒãããã¶ã³ãã³æŸéã«æçµçãªé
ä¿¡ç¹æ§ãæäŸããŸã(åèæç®[Christian Cachin, Rachid Guerraoui, and LuÃs Rodrigues. 2011. Introduction to reliable and secure distributed programming. Springer Science & Business Media]ã®ä¿¡é Œã§ããæŸéã®å
šäœå)ãåæš©åšã¯ãã®ãããªãªã¬ãŒããåå¥ã«ããŸãã¯éåçãªçºä¿¡ãããã³ã«ãä»ããŠéçšããŸãããŸããSuiã©ã€ãã¯ã©ã€ã¢ã³ããã¬ããªã«ããµãŒãã¹ãªã©ã®å€éšãšã³ãã£ãã£ããã®åœ¹å²ãæ
ãããšããããŸããååçãªæš©åšã®äžæ žãšãä¿¡é Œæ§ãä¿¡çšåºŠã®äœãå
éšãŸãã¯å€éšã®èœåçãªäžç¶ã³ã³ããŒãã³ããåºå¥ããããšã§ãSuiã®å®å
šæ§ãšæŽ»æ°ã«äŸåãããã©ã¹ãããã³ã³ãã¥ãŒãã£ã³ã°åºç€ãæç¢ºã«åºåããæå°åããããšãä¿èšŒããŠããã®ã§ãã ïŒ.ïŒãæš©éãšã¬ããªã«ã®ããŒã¿æ§é Suiæš©éã§ã¯ãç¶æ
ã衚çŸããããã«å€ãã®ããŒã¿æ§é ã«äŸåããŠããŸããæã
ã¯ããããã®æ§é ãããããããµããŒãããæäœã«åºã¥ããŠå®çŸ©ããŸãããããã¯ãã¹ãŠæ±ºå®è«çãªãã€ã衚çŸãæã£ãŠããŸãã ãªããžã§ã¯ãïŒObjïŒã¯ããŠãŒã¶ãŒã®ã¹ããŒãã³ã³ãã©ã¯ããšããŒã¿ãSuiå
ã«ä¿åããŸããããã¯ã第2ç« ã§ç޹ä»ããMoveãªããžã§ã¯ããSuiã®ã·ã¹ãã ã¬ãã«ã§ãšã³ã³ãŒããããã®ã§ãã å³1ïŒãã©ã³ã¶ã¯ã·ã§ã³ãã³ãããããããã®ã€ã³ã¿ã©ã¯ã·ã§ã³ã®æŠèŠã ref(Obj)ã¯ããªããžã§ã¯ãã®åç
§ïŒObjRefïŒãããªãã¡ããªãã¬ããïŒObjID, Version, ObjDigestïŒãè¿ããŸããObjlDã¯æ°ããäœæããããã¹ãŠã®ãªããžã§ã¯ãã«å¯ŸããŠå®è³ªçã«äžæã§ãããVersionã¯å€ç°ããŠãããªããžã§ã¯ãã®ããŒãžã§ã³ãè¡šãæ£ã®å¢å ããæŽæ°ã§ãã owner(Obj) ã¯ããã®ãªããžã§ã¯ãã®ææè
ã®èªèšŒå Auth ãè¿ããŸããæãåçŽãªã±ãŒã¹ã§ã¯ã Auth ã¯ã¢ãã¬ã¹ã§ããã®ãªããžã§ã¯ãã䜿çšããããšãã§ããå
¬ééµã衚ããŸããããè€éãªèªèšŒåãå©çšå¯èœã§ã (4.4ç¯ãåç
§ãã ãã)ã read-only(Obj) ã¯ãªããžã§ã¯ããèªã¿åãå°çšã§ããã°çãè¿ããŸããèªã¿åãå°çšã®ãªããžã§ã¯ãã¯æ±ºããŠå€ç°ãããããã©ããããããåé€ãããããããšã¯ã§ããŸããããŸãããã®ææè
ã ãã§ãªãã誰ã§ã䜿çšããããšãã§ããŸãã parent(Obj) ã¯ããªããžã§ã¯ããæåŸã«å€ç°ãŸãã¯äœæãããã©ã³ã¶ã¯ã·ã§ã³ãã€ãžã§ã¹ã (TxDigest) ãè¿ããŸãã contents(Obj)ã¯ããã©ã³ã¶ã¯ã·ã§ã³ã®æå¹æ§ã確èªãããªããžã§ã¯ãã®ã¢ããªã±ãŒã·ã§ã³åºæã®æ
å ±ãéã¶ããã«äœ¿çšã§ãããªããžã§ã¯ãã®ã¿ã€ãTypeãšããŒã¿Dataãè¿ããŸãã ãªããžã§ã¯ãåç
§ïŒObjRefïŒã¯ããªããžã§ã¯ãã®ã€ã³ããã¯ã¹ãäœæããããã«äœ¿çšãããŸãããŸããObjDigestã¯ãã®å®å
šãªå
容ã«å¯Ÿããã³ãããã¡ã³ãã§ããããããªããžã§ã¯ããèªèšŒããããã«ã䜿çšãããŸãã ãã©ã³ã¶ã¯ã·ã§ã³ïŒTxïŒã¯ã1ã€ãŸãã¯è€æ°ã®ãªããžã§ã¯ãã®ç¶æ
é·ç§»ãè¡šãæ§é äœã§ããããããã¯ä»¥äžã®æäœã®ã»ããããµããŒãããŸãã digest(Tx)ã¯TxDigestãè¿ããŸããããã¯ããã©ã³ã¶ã¯ã·ã§ã³ã«å¯Ÿããææåã® ããcryptoã°ã©ãã£ãã¯ã®ã³ãããã¡ã³ãã§ãã epoch(Tx) ã¯ããã®ãã©ã³ã¶ã¯ã·ã§ã³ãå®è¡ãããå¯èœæ§ã®ãããšããã·ããè¿ããŸãã inputs(Tx) ã¯ããã©ã³ã¶ã¯ã·ã§ã³ã®å®è¡ã«å¿
èŠãªãªããžã§ã¯ã(ObjRef)ã®åãè¿ããŸãã payment(Tx) ã¯ãã¬ã¹æéã®æ¯æãã«äœ¿çšããã ObjRef ãžã®åç
§ãšãã¬ã¹æéã®äžéãããã³ã¬ã¹æéã®åäœãšã¬ã¹æéã®ãªããžã§ã¯ãã®å€ã®åäœãšã®éã®å€æã¬ãŒããè¿ããŸãã valid(Tx, [Obj]) ã¯ãæäŸãããèŠæ±ãããå
¥åãªããžã§ã¯ããäžãããããšãã«ããã©ã³ã¶ã¯ã·ã§ ã³ãæå¹ã§ããã°trueãè¿ããŸããæå¹æ§ã«ã€ããŠã¯4.4ç¯ã§èª¬æããŸãã4.4ç¯ã§è°è«ããããã©ã³ã¶ã¯ã·ã§ã³ãå
¥åãªããžã§ã¯ãã«äœçšããããšãæ¿èªãããŠããããšãããã³ãã®å®è¡ã³ã¹ããã«ããŒããããã«ååãªã¬ã¹ãå©çšå¯èœã§ããããšã«é¢é£ããŸãã exec(Tx, [Obj]) ã¯ãã©ã³ã¶ã¯ã·ã§ã³ãå®è¡ãããã®å¹æãè¡šãæ§é äœãè¿ããŸããæå¹ãªãã©ã³ã¶ã¯ã·ã§ã³ã®å®è¡ã¯ç¢ºå®ã§ããããã®åºåã¯æ±ºå®è«çã§ãã ååŒã¯ãã®TxDigestã«ãã£ãŠã€ã³ããã¯ã¹åãããããã¯ãŸããã®å
šå
容ãèªèšŒããããã«äœ¿çšããããããããŸããããã¹ãŠã®æå¹ãªãã©ã³ã¶ã¯ã·ã§ã³(ç¹å¥ã«ããŒãã³ãŒããããgenesisãã©ã³ã¶ã¯ã·ã§ã³ãé€ã)ã¯ãå°ãªããšã1ã€ã®ææããå
¥åãããªãã¡ãã¬ã¹ä»£ãæ¯æãããã«äœ¿çšãããªããžã§ã¯ããæã¡ãŸãã ãã©ã³ã¶ã¯ã·ã§ã³å¹æ(Effects)æ§é äœã¯ããã©ã³ã¶ã¯ã·ã§ã³å®è¡ã®çµæãèŠçŽããŸããããã¯ã以äžã®æäœããµããŒãããã digest(Effects) ã¯ãEffects æ§é äœãžã®ã³ãããã¡ã³ã EffDigest ã§ãããã€ã³ããã¯ã¹ä»ããèªèšŒã«äœ¿çšãããããšããããŸãã transaction(Effects) ã¯ã广ãããããå®è¡ããããã©ã³ã¶ã¯ã·ã§ã³ã®TxDigestãè¿ããŸãã dependencies(Effects) ã¯ããããã®å¹æãæã€ãã©ã³ã¶ã¯ã·ã§ã³ãå®è¡ãããåã«å®è¡ããã ã¹ãäŸåé¢ä¿ [TxDigest] ã®ã·ãŒã±ã³ã¹ãè¿ããŸãã contents(Effects)ã¯ãå®è¡ã®æŠèŠãè¿ããStatusã¯ãã¹ããŒãã³ã³ãã©ã¯ãã®å®è¡çµæãå ±åããŸããCreatedãMutatedãWrappedãUnwrappedãDeletedã®åãªã¹ãã¯ãããããã®æäœãåãããªããžã§ã¯ãåç
§ããªã¹ãã¢ããããŠããŸãããããŠãEvents ã¯ãå®è¡ã«ãã£ãŠçºè¡ãããã€ãã³ãããªã¹ãã¢ããããŸãã ãã©ã³ã¶ã¯ã·ã§ã³ã«é¢ãããã©ã³ã¶ã¯ã·ã§ã³èšŒææž TxCert ã¯ããã©ã³ã¶ã¯ã·ã§ã³èªäœãšã æš©åšã®å®è¶³æ°ããã®èå¥åãšçœ²åãå«ã¿ãŸããåãè«ççãªèšŒææžããå®è¶³æ°ã圢æããç°ãªãã»ããã®æ©é¢ã«ãã£ãŠè¡š çŸããããããããªããšããç¹ã§ãèšŒææžã¯äžæã§ã¯ãªããããããªãããšã«æ³šæããŸããããã«ãèšŒææžã¯å³å¯ã«ã¯å®è¶³æ°ã®3åã®2以äžã«ãã£ãŠçœ²åãããªããããããŸããããããå€ãã®åœå±ãå¿çããå Žåã¯ãã以äžãšãªãå¯èœæ§ãããªãã¹ãããããåããã©ã³ã¶ã¯ã·ã§ã³äžã®2ã€ã®ç°ãªãæå¹ãªèšŒææžã¯ãæå³çã«åãèšŒææžã衚ããã®ãšããŠæ±ãããã¹ãã§ããéšåèšŒææž(TxSign)ã¯ãåãæ
å ±ãå«ã¿ãŸãããèŠæ±ãããå®è¶³æ°ãããäœãã¹ããŒã¯ã衚ãåœå±ã®éåããã®çœ²åã§ãéåžžã¯åäžã®åœå±ã§ããã眲åè
ã®èå¥åã¯ãèšŒææžãåŠçããæºåãã§ããŠããæš©åšãèå¥ããããã«ããŸãã¯èšŒææžãåŠçããããã«å¿
èŠãªéå»ã®æ
å ±ãããŠã³ããŒãããããã«äœ¿çšããããããããªãèšŒææžïŒèª¬æå¯èœãªçœ²å[ïŒ]ïŒã«å«ãŸããŠããŸãïŒ4.8é
åç
§ïŒã åæ§ã«ããšãã§ã¯ãæ§é äžã®ãšãã§ã¯ãèšŒææž EffCert ã¯ããšãã§ã¯ãæ§é ããèªäœãšããã©ã³ã¶ã¯ã·ã§ã³ãæå¹ãªãšããã¯ã®å®è¶³æ°ã代衚ããåœå±ããã®çœ²åãå«ã¿ãŸããéäžææ§ãšåäžæ§ã«ã€ããŠã¯ããã©ã³ã¶ã¯ã·ã§ã³èšŒææžãšåãæ³šæäºé
ãé©çšãããŸããéšåçãªãšãã§ã¯ãèšŒææžã¯ãéåžžãåäžã®æ©é¢ã®çœ²åãšãšãã§ã¯ãæ§é ãå«ã¿ãEffSign ãšè¡šèšãããŸãã
æ°žç¶çãªã¹ãã¢
ãåæš©åšãšã¬ããªã«ã¯ïŒæ°žç¶ã¹ãã¢ã®ã»ãããä¿æããŸããã¹ãã¢ã¯æ°žç¶çãªãããã»ãã³ãã£ãã¯ãå®è£
ããŠããïŒããŒãšå€ã®ãã¢ã®ã»ãã (ððð [ðððŠ] â ð£ððð¢ð ãšè¡šèš) ãšããŠè¡šçŸããããšãã§ãïŒäžããããããŒãæã€ãã¢ã¯1ã€ã ãã§ãããã¢ãæ¿å
¥ãããåã«contains(key)ãåŒã³åºããšfalseãè¿ããget(key)ã¯ãšã©ãŒãè¿ããŸãããã¢ãæ¿å
¥ãããåŸïŒcontains(key)ã³ãŒã«ã¯çãè¿ãïŒget(key)ã¯å€ãè¿ããŸããæš©åšã¯ä»¥äžã®æ°žç¶ã¹ãã¢ãä¿æããŸãã ãªãŒããŒããã¯ããã Locko [ObjRef] â TxSignOption ã¯ãææãããªããžã§ã¯ãããŒãžã§ã³ ObjRef ã«å¯ŸããŠæš©åšã眲åããæåã®æå¹ãªãã©ã³ã¶ã¯ã·ã§ã³ Tx ãèšé²ãããŸãã¯ãªããžã§ã¯ãããŒãžã§ã³ãååšãããããããå
¥åãšããæå¹ãªãã©ã³ã¶ã¯ã·ã§ã³ãèŠãããªãå Žå㯠None ãèšé²ããŸãããŸãããã®ãªããžã§ã¯ããå
¥åãšããŠèŠãæåã®èšŒææžãèšé²ããããšããããŸãããã®ããŒãã«ãšãã®æŽæ°èŠåã¯ãSuiåœå±ã«ãŸããããªããžã§ã¯ãã®åæ£ããã¯ã®ç¶æ
ã衚ãããã©ã³ã¶ã¯ã·ã§ã³ã®åæåŠçäžã§ã®å®å
šæ§ãä¿èšŒããŸãã èšŒææžããã Cty[TxDigest] â (TxCert, Effsign) ã¯ïŒæå¹æéå
ã«æš©åšã«ãã£ãŠåŠçããããã¹ãŠã®å®å
šãªèšŒææž TxCertïŒTxãå«ãïŒãããã®çœ²åä»ã广 EffSign ãšå
±ã«èšé²ããŸãããããã¯ãã©ã³ã¶ã¯ã·ã§ã³ãã€ãžã§ã¹ã TxDigest ã«ãã£ãŠã€ã³ããã¯ã¹åãããŸãã ãªããžã§ã¯ãããã Obj, [ObjRef] â Obj ã¯ãObjRef ã§ã€ã³ããã¯ã¹ãããCtyå
ã®èšŒææžã«å«ãŸãããã©ã³ã¶ã¯ã·ã§ã³ã«ãã£ãŠäœæããããã¹ãŠã®ãªããžã§ã¯ã Obj ãèšé²ããŸãããã®ã¹ãã¢ã¯ãCty å
ã®ãã¹ãŠã®èšŒææžãåå®è¡ããããšã§å®å
šã«å°ãåºãããšãã§ããŸããObjld ããã®IDãæã€ææ°ã®ãªããžã§ã¯ãã«ãããããäºæ¬¡ã€ã³ããã¯ã¹ãç¶æãããŸããããã¯æ°ãããã©ã³ã¶ã¯ã·ã§ã³ãåŠçããããã«å¿
èŠãªå¯äžã®æ
å ±ã§ãããå€ãããŒãžã§ã³ã¯èªã¿åããšç£æ»ã容æã«ããããã«ã®ã¿ç¶æãããŸãã åæããã p Syncð£ [ObjRef] â TxDigest ã¯ãCty å
ã®ãã¹ãŠã®èšŒææžããããããäœæã倿ŽããŸãã¯åé€ãããªããžã§ã¯ãããšã«ãã¿ãã« ObjRef ãšããŠããã·ã³ã°ãããã®ã§ãããã®æ§é ã¯ãCtyå
ã®ãã¹ãŠã®èšŒææžãåŠçããããšã§å®å
šã«åäœæããããšãã§ããã¯ã©ã€ã¢ã³ããæ°ã«ãããªããžã§ã¯ãã«åœ±é¿ãäžãããã©ã³ã¶ã¯ã·ã§ã³ã®åæãå©ããããã«äœ¿çšãããŸãã ãªãŒãœãªãã£ã¯4ã€ã®æ§é ãã¹ãŠãç¶æãããŸããä»ã®ãªãŒãœãªãã£ãã¬ããªã«ãåŠçæžã¿ã®èšŒææžäžåŒãããŠã³ããŒãã§ããããã«ããã®èšŒææžãããã®ããŒã«ã«ãã§ãã¯ãã€ã³ããžã®ã¢ã¯ã»ã¹ãæäŸããŸããã¬ããªã«ã¯ãã©ã³ã¶ã¯ã·ã§ã³ãåŠçãããèšŒææžã®ã¿ãåŠçãããªãŒãœãªãã£ãšåæ§ã«ä»ã®ããŒãã«ãæŽæ°ããããã«èšŒææžãåå®è¡ããŸãããŸããé åºããã¯ããããç¶æããéåæåãç£æ»ããŸãã ãªãŒãœãªãã£ã¯ãèªã¿åããšåæã容æã«ããããã«4ã€ã®ã¹ãã¢ïŒããã³ãã§ãã¯ãã€ã³ãïŒãç¶æããå®å
šãªã¬ããªã«ãšãæ°ãããã©ã³ã¶ã¯ã·ã§ã³ãšèšŒææžãåŠçããããã«äœ¿çšãããããªããžã§ã¯ãã®ææ°ããŒãžã§ã³ã®ãªããžã§ã¯ãããã¯ãšããªããžã§ã¯ãã®ã¿ãç¶æããæå°éã®ãªãŒãœãªãã£ã³ã¢ãšããŠçµã¿åãããŠèšèšããããšãã§ããŸããããã«ãããå®å
šæ§ã®ããã«äŸåãããã©ã¹ãããã»ã³ã³ãã¥ãŒãã£ã³ã°ã»ããŒã¹ãæå°åãããŸãã ããªãã¡ãããŒã®èªã¿åãã¯ãååšããããŒã«å¯ŸããŠå€ãŸãã¯Noneãååšãããã©ãããåžžã«è¿ãå¿
èŠãããããã®ãããªãã§ãã¯ã¯ããã¯ãNone以å€ã®å€ã«èšå®ããæŽæ°ãšã¢ãããã¯ã§ãªããã°ãªããŸãããããã¯ãããŒéã®åŒ·ãäžè²«æ§ããã匱ãç¹æ§ã§ãããã¹ã±ãŒãªã³ã°ã®ããã«ã¹ãã¢ãå¹ççã«ã·ã£ãŒãã£ã³ã°ããããšãå¯èœã«ããŸããä»ã®ã¹ãã¢ã¯ãå®å
šæ§ã«åœ±é¿ãäžããããšãªããæçµçã«äžè²«æ§ãä¿ã€ããšãã§ããŸãã ïŒ.ïŒãæš©éããŒã¹æäœ
ãã©ã³ã¶ã¯ã·ã§ã³ã®åŠç
ããã©ã³ã¶ã¯ã·ã§ã³ãåä¿¡ãããšãTxan æš©éã¯ããã€ãã®ãã§ãã¯ãå®è¡ããŸãã (1) epoch(Tx)ãçŸåšã®ãšããã¯ã§ããããšã確èªããŸãã (2) ãã¹ãŠã®ãªããžã§ã¯ãåç
§å
¥å(Tx)ãšæ¯æã(Tx)ã®ã¬ã¹ãªããžã§ã¯ãåç
§ãObjå
ã«ååšããããšã確èªãããããã[Obj]ã«ããŒãããŸããææãªããžã§ã¯ãã®å Žåã¯ãæ£ç¢ºãªåç
§ãå¯èœã§ããã¹ãã§ãèªã¿åãå°çšãŸãã¯å
±æãªããžã§ã¯ãã®å Žåã¯ããªããžã§ã¯ãID ãååšããªããã°ãªããŸããã (3)ååŒå®è¡ã®ã³ã¹ããã«ããŒããããã«ãååãªã¬ã¹ãã¬ã¹ãªããžã§ã¯ãã§å©çšå¯èœã§ããããšã確èªããŸãã (4) valid(Tx, [Obj])ã true ã§ããããšããã§ãã¯ããŸãããã®ã¹ãããã§ã¯ããã©ã³ã¶ã¯ã·ã§ã³ã®èªèšŒæ
å ±ã ã®èªèšŒæ
å ±ãææãããªããžã§ã¯ãã«ã¢ã¯ã»ã¹ã§ããããšã確èªããŸãã (5ïŒææãããã¹ãŠã®inputsïŒTxïŒãªããžã§ã¯ãã® Lockð£ [ObjRef] ãååšãããããNoneãåãTxã«èšå®ãããTxSignã«ã¢ãããã¯ã«èšå®ãããŠããããšããã§ãã¯ããŸã(ãããããããã¯ãã§ãã¯ããšåŒã³ãŸãïŒã ããããã®ãã§ãã¯ã«å€±æããå ŽåãåŠçã¯çµäºãããšã©ãŒãè¿ãããŸããããããLockyã®éšåæŽæ°ã¯å®å
šã«åç¶ããŸã(ãã ããæã
ã®çŸåšã®å®è£
ã§ã¯éšåæŽæ°ã§ã¯ãªãããã¹ãŠã®ããã¯ã®ååæŽæ°ãè¡ããŸã)ã ãã¹ãŠã®ãã§ãã¯ãæåããå Žåãæš©åšã¯ãã©ã³ã¶ã¯ã·ã§ã³ã®çœ²åãã€ãŸãéšåèšŒææž TxSign ãè¿ããŸããæ³šæã®åŠçã¯æåãããšã¹ãçã§ãããéšåèšŒææž(TxSign)ããŸãã¯å®å
šãªèšŒææž(TxCert)ãå©çšå¯èœã§ããã°ããããè¿ããŸãã ãããã®åœäºè
ãããšããã¯eã®å®è¶³æ°ã圢æããäžé£ã®åœå±ã«ã€ããŠããã©ã³ã¶ã¯ã·ã§ã³ãšçœ²å ïŒTxSignïŒãç
§åãããã©ã³ã¶ã¯ã·ã§ã³èšŒææž TxCert ã圢æããããšãã§ããŸãã
èšŒææžãåŠçãã
ãèšŒææžãåãåããšãåœå±ã¯ãããã¯ã«é¢é£ãããã®(ãããããããã¯ãã§ãã¯ã)ãé€ãããã©ã³ã¶ã¯ã·ã§ã³ã®ãã¹ãŠã®æå¹æ¡ä»¶ããã§ãã¯ããŸãã代ããã«ä»¥äžã®ãã§ãã¯ãè¡ãïŒinputs(Tx)ã®åææå
¥åãªããžã§ã¯ãã«ã€ããŠãããã¯ãååšããããšãããã³ãããNoneã§ããããä»»æã®TxSignã«èšå®ãããŠãããããŸãã¯çŸåšã®èšŒææžãšåããã©ã³ã¶ã¯ã·ã§ã³ã®èšŒææžã«èšå®ãããŠãããããã§ãã¯ããŸãããã®ä¿®æ£ãããããã¯ã®ãã§ãã¯ã倱æããå ŽåïŒåœå±ã¯å埩äžå¯èœãªByzantineéå®³ãæ€åºãïŒéåžžã®éçšã忢ãïŒçœå®³åŸ©æ§ããã»ã¹ãéå§ããŸããå
±æãªããžã§ã¯ãïŒ4.4é
åç
§ïŒã«ã€ããŠã¯ãåœå±ã¯ã䜿çšããå
±æãªããžã§ã¯ãã®ããŒãžã§ã³ã決å®ããããã«ãèšŒææžãã³ã³ã»ã³ãµã¹ã§ã·ãŒã±ã³ã¹ãããããšã«ãã£ãŠããã¯ãèšå®ãããããšã確èªããŸãããããããªãããã©ã³ã¶ã¯ã·ã§ã³ã¯å®è¡ããããããããŸãããããã§ãªãå Žåã¯ããŸããã®ãããªé åºä»ããåŸ
ã€å¿
èŠããããŸãã ãã§ãã¯ã«æåããå Žåãåœå±ã¯èšŒææžãããã®å®è¡ã®çµæãããããã广ãšãšãã«ãèšŒææžãããã«è¿œå ããŸããie. Ctð£ [TxDigest] â (TxCert, EffSign); ããã¯ãèšŒææžã«èšå®ãããŠããªãææããå
šãŠã®å
¥åãªããžã§ã¯ãã®èšŒææž Lockð£ [ObjRef] â TxCert ãèšé²ããããã«ããã¯ããããæŽæ°ããŠãããInput(Tx) ã®å
šãªããžã§ã¯ãã Objð£ ã«æ¿å
¥ããããšåæã«ãEffSign ã®å
šå¹æã ObjRef ãšå
容ã Objð£ ã«è¿œå ããŠå®äœåãããŸããæåŸã« EffSign ã§äœæãŸãã¯å€ç°ããããã¹ãŠã®ãã®ã«å¯ŸããŠãåæããããæŽæ°ãããTx ã«ããããããŸãã
åè
ããã©ã³ã¶ã¯ã·ã§ã³ãšèšŒææžãåŠçããããžãã¯ã¯ãå€ãã®éèŠãªããããã£ãå°ããŸãã
å æé¢ä¿ãšäžŠåæ§
ããã©ã³ã¶ã¯ã·ã§ã³ãšèšŒææžã®äž¡æ¹ã®åŠçæ¡ä»¶ã¯å æé¢ä¿ã®ããå®è¡ãä¿èšŒããŸããåœå±ã¯ããã©ã³ã¶ã¯ã·ã§ã³ãäŸåãããªããžã§ã¯ããäœæãããã¹ãŠã®èšŒææžïŒææãå
±æãèªã¿åãå°çšïŒãåŠçããå Žåã«ã®ã¿ããã©ã³ã¶ã¯ã·ã§ã³ã«çœ²åããããšã§ãæç¥šãããŸããåæ§ã«ãæš©åšã¯ããããäŸåãããã¹ãŠã®å
¥åãªããžã§ã¯ãããã®ããŒã«ã«ãªããžã§ã¯ããããã«ååšããå Žåã«ã®ã¿ãèšŒææžãåŠçããŸããããã¯å æé¢ä¿ã®ããå®è¡é åºã課ãããäºãã«å æé¢ä¿ã®ãªããã©ã³ã¶ã¯ã·ã§ã³ãç°ãªãã³ã¢ããã·ã³ã§äžŠåã«å®è¡ããããšãå¯èœã«ããŸãã
眲åã¯äžåºŠã ãããããŠå®å
š
ãLockð£ [·] å
ã®ãã¹ãŠã®ææããå
¥åãªããžã§ã¯ãã®ããã¯ã¯ãããã䜿ã£ãŠãã§ãã¯ããã¹ããæåã®ãã©ã³ã¶ã¯ã·ã§ã³Txã«èšå®ãããæ¬¡ã«ãã®ãªããžã§ã¯ããå
¥åãšããŠäœ¿ã£ãæåã®èšŒææžã«èšå®ãããŸããããããã®ãã©ã³ã¶ã¯ã·ã§ã³ã«å¯Ÿãããªããžã§ã¯ãã®ããã¯ãšåŒã³ã1ã€ã®ãšããã¯å
ã§ããã¯ãè§£é€ãããããšã¯ãããŸããããã®çµæãæš©åšã¯ããã¯ããšã«1ã€ã®ãã©ã³ã¶ã¯ã·ã§ã³ã«ãã眲åããªããããã¯äžè²«æ§ã®ãããããŒããã£ã¹ãã®å¿
é èŠçŽ ã§ããããããã£ãŠSuiã®å®å
šæ§ã§ãã
çœå®³åŸ©æ§
ãåãããã¯ã«å¯ŸããŠ2ã€ã®ççŸããèšŒææžãæ€åºããæš©åšã¯ãå埩äžå¯èœãªByzantineè¡åã®èšŒæãããªãã¡ã¯ã©ãŒã©ã ã®æ£çŽãªæš©åšã®ä»®å®ãæç«ããªãããšã®èšŒæãæã¡ãŸãããã®ççŸãã2ã€ã®èšŒææžã¯è©æ¬ºã®èšŒæã§ããããã¹ãŠã®æš©åšãšã¬ããªã«ã«å
±æãããçœå®³åŸ©æ§ããã»ã¹ãèµ·åãããããšãã§ããŸããæš©åšã¯ãŸããèšŒææžã®äžæ£ãªå®è¡ã衚ããšãã§ã¯ãïŒEffSignïŒã«å¯Ÿãã1/3以äžã®çœ²åã®ãããªãå埩äžå¯èœãªByzantineè¡åã®èšŒæãä»ã®åœ¢ã§åŸãããšãã§ããŸãããããã¯ã以åã«åŠçãããèšŒææžã®æ£ããåºåã衚ããªãå
¥åãªããžã§ã¯ããæã€èšŒææžã§ãããããã¯ãŸããäžæ£è¡çºã®èšŒæãšããŠããã±ãŒãžåããããã¹ãŠã®åœå±åã³ã¬ããªã«ãšå
±æããããšãã§ããŸãããããã¯ã蚱容ã§ããå°æ°æŽŸã®åœå±ïŒåºè³æ¯ç1/3æªæºïŒãŸãã¯ãªããžã§ã¯ãã®ææè
ïŒä»»æã®æ°ïŒãByzantineãŸãã¯è¡¡å¹³æ³ã§ãããšãã蚌æãšã¯ç°ãªããã®ã§ããããµãŒãã¹ã®äžæãªãã«èš±å®¹ããããã®ã§ããããšã«æ³šæããŠãã ããã
æçµçãªãã®
ãåœå±ã¯ãn Lockð£ ãCtð£ãããã³Objð£ãSyncð£ ã®ã€ã³ããã¯ã¹ã«å¯Ÿããèªã¿åãèŠæ±ã«å¯ŸããŠãèšŒææž(TxCert)ãšçœ²åæžã¿å¹æ(EffSign)ãè¿ããŸãããã©ã³ã¶ã¯ã·ã§ã³ã¯ãCtyã¹ãã¢ã«å«ãŸããTxãå ±åããæ©é¢ã®æ°ãäžå®ä»¥äžã§ããã°ãæçµçãªãã®ãšã¿ãªãããŸããããã¯ããšãã§ã¯ãèšŒææžïŒEffCertïŒãæçµæ§ã®è²æž¡å¯èœãªèšŒæãšãªãããšãæå³ããŸãããã ãããããªããžã§ã¯ãã䜿çšããèšŒææžã¯ããã®å æé¢ä¿ã®ããçµè·¯ã«ãããã¹ãŠã®åŸå±èšŒææžãæçµçãªãã®ã§ããããšã蚌æãããã®ã§ããããŸããèšŒææžãä»»æã®åœäºè
ã«æäŸãããã®åœäºè
ã¯ãããåŠçã®ããã«è¶
倿°ã®åœå±ã«æåºããããšãã§ããèšŒææžã®å¹æã®æçµæ§ãä¿èšŒããŸããæçµæ§ã¯ãåæ§ææã®å®å
šæ§ã確ä¿ããããã«ãfastpay ãããé
ãããšã«æ³šæããŠãã ãããããããæš©åšã¯ã³ããããåŸ
ã€ã®ã§ã¯ãªããèšŒææžãèŠãæç¹ã§ãã©ã³ã¶ã¯ã·ã§ã³ã®å¹æãé©çšããããšãã§ããŸãã ïŒ.ïŒãææè
ãèªå¯ãããã³å
±æãªããžã§ã¯ã ãã©ã³ã¶ã¯ã·ã§ã³ã®æå¹æ§ïŒ4.3é
åç
§ïŒã¯ããã©ã³ã¶ã¯ã·ã§ã³ãæå®ããããã¹ãŠã®å
¥å ãªããžã§ã¯ãããã©ã³ã¶ã¯ã·ã§ã³ã«å«ããããšãèªå¯ãããŠããããšãä¿èšŒããŸãããã®ãã§ãã¯ã¯ãææè
ãã£ãŒã«ããšåæ§ã«ããªããžã§ã¯ãã®æ§è³ªã«äŸåããŸãã èªã¿åãå°çšã®ãªããžã§ã¯ãã¯ãå€ç°ãåé€ãã§ããããã©ã³ã¶ã¯ã·ã§ã³ã§åæã«ããã¹ãŠã®ãŠãŒã¶ãŒã䜿çšããããšãã§ããŸããäŸãã°ãMoveã¢ãžã¥ãŒã«ã¯èªã¿åãå°çšã§ãããã®ãããªãªããžã§ã¯ãã¯ãã¹ããŒãã³ã³ãã©ã¯ãã®äžéšãšããŠäœ¿çšããããããããªãææè
ãæã€ããããã¯ãããã䜿çšããããã®æš©éã«åœ±é¿ããªãããããã¯ãããããã©ã³ã¶ã¯ã·ã§ã³ã«å«ãŸããããšãã§ããŸãã ææãããªããžã§ã¯ãã¯ãowner ãã£ãŒã«ããæã¡ãŸããææè
ã«ã¯ãå
¬ééµã衚ãã¢ãã¬ã¹ãèšå®ããããšãã§ããŸãããã®å Žåããã©ã³ã¶ã¯ã·ã§ã³ã¯ããã®ã¢ãã¬ã¹ã«ãã£ãŠçœ²åãããŠããã°ããã®ãªããžã§ã¯ãã䜿çšãããããå€ç°ãããããšãèš±å¯ãããŸãããã©ã³ã¶ã¯ã·ã§ã³ã¯1ã€ã®ã¢ãã¬ã¹ã«ãã£ãŠçœ²åããããããã£ãŠãã®ã¢ãã¬ã¹ãææãã1ã€ä»¥äžã®ãªããžã§ã¯ãã䜿çšããããšãã§ããŸãããããã1ã€ã®ãã©ã³ã¶ã¯ã·ã§ã³ã¯ãè€æ°ã®ã¢ãã¬ã¹ã«ãã£ãŠææããããªããžã§ã¯ãã䜿çšããããšã¯ã§ããŸãããåãªããžã§ã¯ããšåŒã°ãããªããžã§ã¯ãã®ãªãŒããŒã¯ã芪ãªããžã§ã¯ããšåŒã°ããå¥ã®ãªããžã§ã¯ãã®ObjIDã«èšå®ããããšãã§ããŸãããã®å Žåã芪ãªããžã§ã¯ãããã©ã³ã¶ã¯ã·ã§ã³ã«å«ãŸãããã©ã³ã¶ã¯ã·ã§ã³ããã®ãªããžã§ã¯ãã®äœ¿çšãèš±å¯ãããŠããå Žåã«ã®ã¿ãåãªããžã§ã¯ãã䜿çšããããšãã§ããŸãããã®æ©èœã¯ãã³ã³ãã©ã¯ããå¹ççãªã³ã¬ã¯ã·ã§ã³ãä»ã®è€éãªããŒã¿æ§é ãæ§ç¯ããããã«äœ¿çšããããšãã§ããŸãã å
±æãªããžã§ã¯ãã¯ã倿Žå¯èœã§ãããç¹å®ã®ææè
ãæã¡ãŸããããã®ä»£ããã«ãç°ãªãåœäºè
ã«ãããã©ã³ã¶ã¯ã·ã§ã³ã«å«ãŸããããšãã§ãããããªãæ¿èªãå¿
èŠãšããŸããããã®ä»£ããã圌ãèªèº«ã®èªèšŒããžãã¯ãå®è¡ããŸãããã®ãããªãªããžã§ã¯ãã¯ãå®å
šæ§ãšæŽ»æ§ã確ä¿ããªããè€æ°ã®æžã蟌ã¿è
ããµããŒãããªããã°ãªããªããããå®å
šã«äœ¿çšããããã«å®å
šãªåæãããã³ã«ãå¿
èŠãšããŸãããããã£ãŠãå®è¡åã«è¿œå ã®ããžãã¯ãå¿
èŠãšãããåœå±ã¯ã4.3ç¯ã«èŠå®ãããããã«ãã©ã³ã¶ã¯ã·ã§ã³ãåŠçããŸãã4.3ç¯ã«èŠå®ããããã©ã³ã¶ã¯ã·ã§ã³ããææãªããžã§ã¯ããšèªã¿åãå°çšãªããžã§ã¯ãã®ããã«åŠçããããã¯ã管çããŸããããããåœå±ã¯ãå
±æãªããžã§ã¯ãã®ããã¯ã管çããããã«ãäžè²«æ§ã®ãããããŒããã£ã¹ãã«äŸåããŸããããã®ä»£ãããå
±æãªããžã§ã¯ããå«ããã©ã³ã¶ã¯ã·ã§ã³ã®äœæè
ã¯ããã®ãã©ã³ã¶ã¯ ã·ã§ã³ã«é¢ããèšŒææžããäŸãã° [George Danezis, Eleftherios Kokoris-Kogias, Alberto Sonnino, and Alexander Spiegelman. 2021. Narwhal and Tusk: A DAG-based Mempool and Efficient BFT Consensus. CoRR abs/2105.11827 (2021)] ã®ãããªé«ã¹ã«ãŒãããã®ã³ã³ã»ã³ãµã¹ã·ã¹ãã ã«æ¿å
¥ããŸãããã¹ãŠã®æš©åšã¯ãã®ãããªèšŒææžã®äžè²«ããã·ãŒã±ã³ã¹ã芳å¯ãããã®ã·ãŒã±ã³ã¹ã«åŸã£ãŠåãã©ã³ã¶ã¯ã·ã§ã³ã§äœ¿çšãããå
±æãªããžã§ã¯ãã®ããŒãžã§ã³ãå²ãåœãŠãŸãããã®åŸãå®è¡ãé²ããããšãã§ãããã¹ãŠã®æ©é¢ã«ããã£ãŠäžè²«ããŠããããšãä¿èšŒãããŸããåœå±ã¯ããã©ã³ã¶ã¯ã·ã§ã³ã®å®è¡ã«äœ¿çšãããå
±æãªããžã§ã¯ãã®ããŒãžã§ã³ããEffectsèšŒææžå
ã«å«ããŸãã äžèšã®ã«ãŒã«ã«ãããèªã¿åãå°çšããã³ææã®ãªããžã§ã¯ããå«ããã©ã³ã¶ã¯ã·ã§ã³ã®å®è¡ã«ã¯ãäžè²«ãããããŒããã£ã¹ããšåäžã®èšŒææžã®ã¿ãå¿
èŠã§ãããByzantineåæã¯å
±æãªããžã§ã¯ããå«ããã©ã³ã¶ã¯ã·ã§ã³ã«ã®ã¿å¿
èŠã§ããããšãä¿èšŒãããŸãããã®ãããã¹ããŒãã³ã³ãã©ã¯ãã®äœæè
ã¯ãåäžãŠãŒã¶ãŒã®ãªããžã§ã¯ãã«å¯Ÿãã転éããã®ä»ã®æäœãããäœã¬ã€ãã³ã·ãŒã«æé©åããããã«åãšãã®æäœãèšèšã§ããäžæ¹ãè€æ°ã®ãŠãŒã¶ãŒããã¢ã¯ã»ã¹ãããå¿
èŠãããããžãã¯ãå®è£
ããããã«å
±æãªããžã§ã¯ãã䜿çšããæè»æ§ã享åããããšãã§ããã®ã§ãã ïŒ.ïŒãã¯ã©ã€ã¢ã³ã
ãã«ã¯ã©ã€ã¢ã³ããšã¬ããªã«
ãã¬ããªã«ã¯ãã«ã¯ã©ã€ã¢ã³ããšãåŒã°ããæ°ãããã©ã³ã¶ã¯ã·ã§ã³ãæ€èšŒããªãããç£æ»ç®çã®ããã«ã·ã¹ãã ã®æå¹ãªç¶æ
ã®äžè²«ããã³ããŒãç¶æãããŸããã©ã³ã¶ã¯ã·ã§ã³ãæ§ç¯ããããã©ã€ãã¯ã©ã€ã¢ã³ãã¯ãšãªãŒçšã®èªã¿åãã€ã³ãã©ã¹ãã©ã¯ãã£ãå«ããµãŒãã¹ãéå¶ãããããŸãã
ã©ã€ãã¯ã©ã€ã¢ã³ã
ããªããžã§ã¯ãåç
§ãšãã©ã³ã¶ã¯ã·ã§ã³ã®äž¡æ¹ã¯ããã®äœæãŸãã¯å®è¡ã«è³ããã©ã³ã¶ã¯ã·ã§ã³ã®å®å
šãªå æé¢ä¿ã®èªèšŒãå¯èœã«ããæ
å ±ãå«ãã§ããŸããå
·äœçã«ã¯ããªããžã§ã¯ãåç
§ïŒObjRefïŒã«ã¯ããªããžã§ã¯ãã®å®å
šãªç¶æ
ãèªèšŒããObjDigestãå«ãŸããparent(Obj)ãã€ãŸããªããžã§ã¯ããäœæããTxDigestãååŸããæ©èœãå«ãŸããŸããåæ§ã«ãTxDigestã¯ãå
¥åãªããžã§ã¯ãã®ãªããžã§ã¯ãåç
§ãinputs(Tx)ãéããŠæœåºããæ©èœãå«ãããã©ã³ã¶ã¯ã·ã§ã³ãèªèšŒãããã®ã§ãããããã£ãŠããªããžã§ã¯ããšèšŒææžã®ã»ããã¯ãèªå·±èªèšŒå¯èœãª2éšã°ã©ãã圢æããŸããããã«ã广æ§é ã眲åããããã©ã³ã¶ã¯ã·ã§ã³ã®å®è¡çµæãçŽæ¥èšŒæããå¹æèšŒææžã«ç
§åãããããšããããŸãã ãããã®èšåã¯ãå®å
šãªã¬ããªã«ããŒããç¶æããããšãªããSuiã®ç¶æ
ã«å¯ŸããŠé«ãå®å
šæ§ã®èªã¿åããå®è¡ã§ããã©ã€ãã¯ã©ã€ã¢ã³ãããµããŒãããããã«äœ¿çšããããããããªããå
·äœçã«ã¯ãæš©åšããŒããŸãã¯å®å
šããŒãã¯ããã©ã³ã¶ã¯ã·ã§ã³Txã«é¢ããèšŒææžTxCertãšinputs(Tx)ã«å¯Ÿå¿ããå
¥åãªããžã§ã¯ãObjãããªãç°¡æœãªèšŒæ ã®æãæäŸããŠãSuiå
ã§ãã©ã³ã¶ã¯ã·ã§ã³ãè¡ããããããšãã©ã€ãã¯ã©ã€ã¢ã³ãã«çŽåŸãããããšãã§ãããã©ã€ãã¯ã©ã€ã¢ã³ãã¯ãã®åŸããã®èšŒææžãæåºããããæçµæ§ã確ä¿ããããã«åœå±ã®å®è¶³æ°ãŸãã¯ãµã³ãã«ã«ãã£ãŠèŠããããã©ããããã§ãã¯ããããšãã§ããããããã¯ãå®è¡ã®çµæåŸããããªããžã§ã¯ãã䜿çšããŠãã©ã³ã¶ã¯ã·ã§ã³ãäœæãããããæåãããã©ããã芳å¯ããããšãã§ããã ããçŽæ¥çã«ã¯ããããµãŒãã¹ããSuiå
ã®é·ç§»ã®ååšãšæçµæ§ã確信ãããããã«ãã·ã¹ãã å
ã§ãã以äžã®åäœãçžäºäœçšãããããšãªããã¯ã©ã€ã¢ã³ãã«å¹æèšŒææžãæäŸããããšãã§ããŸãããšããã¯å¢çãªã©ã§ã確å®ããèšŒææžã®ãã§ãã¯ãã€ã³ããå©çšã§ããå Žåããã§ãã¯ãã€ã³ãã«èšŒææžãå«ãŸããŠããããšã®èšŒæãšäžç·ã«ãå
¥åãªããžã§ã¯ããšèšŒææžãå«ã蚌æ ã®æããŸããæçµæ§ã®èšŒæãšãªããŸãã åœå±ã¯ã宿çãªãã§ãã¯ãã€ã³ãæ©æ§ã䜿çšããŠã確å®ãããã©ã³ã¶ã¯ã·ã§ã³ã®éåçãªãã§ãã¯ãã€ã³ããäœæãããŸããæéã®çµéãšãšãã«Suiã®ç¶æ
ãäœæããããšãã§ããŸãããã§ãã¯ãã€ã³ãã«å¯Ÿããå®è¶³æ°ã®ã¹ããŒã¯ãæã€èšŒææžã¯ããªããžã§ã¯ããšæŸåºãããã€ãã³ãã®æè¿ã®ç¶æ
ãå¹ççã«æ€èšŒããããã«ãã©ã€ãã¯ã©ã€ã¢ã³ãã«ãã£ãŠäœ¿çšãããããšãã§ããŸãããã§ãã¯ãã€ã³ãæ©æ§ã¯ãšããã¯éã®å§å¡äŒåæ§æã®ããã«å¿
èŠã§ããããé »ç¹ãªãã§ãã¯ãã€ã³ãã¯ã©ã€ãã¯ã©ã€ã¢ã³ãã«ãšã£ãŠæçšã§ããããŸããåœå±ãå
éšããŒã¿æ§é ãå§çž®ããä»ã®åœå±ãšããå¹ççã«ç¶æ
ãåæããããã«äœ¿çšããããšãã§ããŸãã 4.6 ããªããž ã©ã€ãã¯ã©ã€ã¢ã³ããšByzantineåæã§ç®¡çãããå
±æãªããžã§ã¯ãã®ãã€ãã£ããµããŒãã«ãããSuiã¯ä»ã®ãããã¯ãã§ãŒã³ãšã®åæ¹åããªããžããµããŒãããããšãã§ããŸãããã®ãããªããªããžã®ä¿¡é Œåæã¯ãSuiãšä»ã®ãããã¯ãã§ãŒã³ã®ä¿¡é Œåæãåæ ããä»ã®ãããã¯ãã§ãŒã³ãã©ã€ãã¯ã©ã€ã¢ã³ãããµããŒãããå Žåã¯ãä¿¡é Œã§ãããªã©ã¯ã«ãããŒããŠã§ã¢ã«é Œãå¿
èŠã¯ãããŸããã ããªããžã¯ãä»ã®ãããã¯ãã§ãŒã³ã§çºè¡ãããã¢ã»ãããã€ã³ããŒãããŠè¡šçŸããSuiã·ã¹ãã å
ã§ã©ããã¢ã»ãããšããŠäœ¿çšããããã«äœ¿çšãããŸããæçµçã«ã¯ãã©ãããããã¢ã»ãããããã¯è§£é€ããŠããã€ãã£ããããã¯ãã§ãŒã³äžã®ãŠãŒã¶ãŒã«è»¢éããããšãã§ããŸããããªããžã¯ãSuiäžã§çºè¡ãããã¢ã»ãããããã¯ããä»ã®ãããã¯ãã§ãŒã³äžã§ã©ãããããã¢ã»ãããšããŠäœ¿çšããããšãå¯èœã§ããæçµçã«ã¯ãä»ã®ã·ã¹ãã äžã®ã©ããããããªããžã§ã¯ããç Žæ£ããSuiäžã®ãªããžã§ã¯ããæŽæ°ããŠç¶æ
ãæææš©ã®å€æŽãåæ ãããããã¯ãè§£é€ããããšãã§ããŸãã ã©ãããããè³ç£ãæçšã§ããããšãä¿èšŒããããã«ãããªããžãããè³ç£ã®ã»ãã³ãã£ã¯ã¹ã¯ããçšåºŠã®éèŠæ§ãæã£ãŠããŸãããããã¯ãã§ãŒã³éã§ããªããžãããFungibleã¢ã»ããã¯ããããªãããªã©ãã衚çŸãæäŸããããšãã§ããã©ããããããšãã«åå²å¯èœã§è²æž¡å¯èœã§ããããšãå¯èœã«ããŸããNonfungibleã¢ã»ããã¯ãåå²å¯èœã§ã¯ãªããè²æž¡å¯èœãªã ãã§ãããŸããã©ããæã«ç¶æ
ãå¶åŸ¡ãããæ¹æ³ã§å€ç°ãããä»ã®æäœããµããŒãããŠããå Žåããããããªããžããã¯ããŠã©ãããè§£é€ããéã«å®è¡ãããã«ã¹ã¿ã ã¹ããŒãã³ã³ãã©ã¯ãããžãã¯ãå¿
èŠã«ãªãå ŽåããããŸããããªããžã¯Suiã®ãã€ãã£ããªæŠå¿µã§ã¯ãªããMoveã§å®è£
ãããã¹ããŒãã³ã³ãã©ã¯ãã§ãããããSuiã¯æè»ã§ãã¹ããŒãã³ã³ãã©ã¯ãã®äœè
ããã®ãããªçµéšãå®çŸ©ããããšãå¯èœã«ããŸã - ãããã£ãŠãMoveãæäŸããçµã¿åããå¯èœæ§ãšå®å
šæ§ãå©çšããŠæ¡åŒµããããšãã§ããŸãã ïŒ.ïŒãCommitteeã®åæ§æ Committee ð¶ð ãCommittee ð¶ð â² ã«çœ®ãæãããããšãããšããã¯éã§åæ§æãçºçããŸãïŒð â² = ð + 1ïŒãåæ§æã®å®å
šæ§ã¯ããã©ã³ã¶ã¯ã·ã§ã³TxãeãŸãã¯ãã以åã«ã³ããããããå Žåãeã®åŸã«ç«¶åãããã©ã³ã¶ã¯ã·ã§ã³ãã³ãããããããšãã§ããªãããšãä¿èšŒããæå¹æ§ã¯ãTx ã e ãŸãã¯ãã以åã«ã³ããããããå Žåããã㯠e ã®åŸã«ãã³ããããããªããã°ãªããªãããšãä¿èšŒããŸãã ç§ãã¡ã¯ãSuiã¹ããŒãã³ã³ãã©ã¯ãã·ã¹ãã ãå©çšããŠãåæ§æã«å¿
èŠãªå€ãã®äœæ¥ãå®è¡ããŸããSuiã§ã¯ãã·ã¹ãã ã»ã¹ããŒãã³ã³ãã©ã¯ãã«ããããŠãŒã¶ãŒã¯ã¹ããŒã¯ãããã¯ããæš©éåè£ã«å§è²ããããšãã§ããŸãããšããã¯äžãã³ã€ã³ã®ææè
ã¯ãããŒã¯ã³ãããã¯ããããšã§å§ä»»ããããŒã¯ã³ãã¢ã³ããã¯ããããšã§å§ä»»ãè§£é€ãã1ã€ä»¥äžã®åœå±ãžã®å§ä»»ãèªç±ã«å€æŽããããšãã§ããŸãã ãšããã¯eã®å®è¶³æ°ã®ã¹ããŒã¯ããšããã¯ãçµäºããããšã«æç¥šãããšãåœå±ã¯ãã§ãã¯ãã€ã³ãã«ã³ãããããæ¬¡ã®å§å¡äŒã決å®ãããšããã¯ã倿Žããããã«æ
å ±ã亀æããŸãããŸãåœå±ã¯ããšããã¯eã®çµäºã®ããã®èªèšŒããããã§ãã¯ãã€ã³ãã«åæããããã«ãåæãããã³ã«ã®å©ããåããŠãã§ãã¯ãã€ã³ããããã³ã«ãå®è¡ããŸãããã®çµæããããã©ã³ã¶ã¯ã·ã§ã³ãåœå±ã®å®è¶³æ°ã«ãã£ãŠåŠçãããå ŽåããããåŠçããå°ãªããšã1ã€ã®æ£çŽãªåœå±ã¯ããšããã¯çµäºæã®ãã§ãã¯ãã€ã³ãã«ãã®åŠçããããã©ã³ã¶ã¯ã·ã§ã³ãå«ãŸãããã©ã³ã¶ã¯ã·ã§ã³ãšãã®å¹æããšããã¯éã§æ°žç¶ããããšãä¿èšŒãããŸããããã«ããã®ãããªèªå®ãã§ãã¯ãã€ã³ãã¯ããã¹ãŠã®ãã©ã³ã¶ã¯ã·ã§ã³ããšããã¯eã®æ£çŽãªåœå±ã«å©çšå¯èœã§ããããšãä¿èšŒããŠããŸãã ãããŠããšããã¯çµäºæã®ãã§ãã¯ãã€ã³ãã«ãããã¹ããŒã¯å§ä»»ã¯ããšããã¯e + 1ã®ããã®æ°ããæš©åšã®ã»ãããæ±ºå®ããããã«äœ¿çšãããŸããæ§æš©éè
ã®ã¹ããŒã¯ãšæ°æš©éè
ã®ã¹ããŒã¯ã®å®è¶³æ°ã®äž¡æ¹ããæ°ãã Committee ð¶ð â² ãšãæ°ãããšããã¯ã®éå§ç¹ãšãªããã§ãã¯ãã€ã³ãã«çœ²åããŸããäž¡æ¹ã®çœ²åãå©çšå¯èœã«ãªããšãæ°ãããšããã¯ã«å¯Ÿãããã©ã³ã¶ã¯ã·ã§ã³ã®åŠçãéå§ãããå€ãåœå±ã¯ãšããã¯çœ²åéµãåé€ããããšãã§ããŸãã
ãªã«ããªãŒ
ãã¯ã©ã€ã¢ã³ããšã©ãŒãŸãã¯ã¯ã©ã€ã¢ã³ãã¢ã€ã³ãã±ãŒã·ã§ã³ã«ããããããšããã¯å
ã§ææãªããžã§ã¯ãããããã¯ããããããã«é¢ãããã©ã³ã¶ã¯ã·ã§ã³ãèªèšŒïŒãŸãã¯ç¢ºå®ïŒãããªããªãããšãããåŸãŸããäŸãã°ãã¯ã©ã€ã¢ã³ããåãææãªããžã§ã¯ãã®ããŒãžã§ã³ã䜿çšããŠ2ã€ã®ç°ãªããã©ã³ã¶ã¯ã·ã§ã³ã«çœ²åããååã®åœå±ãããããã«çœ²åããŠããå Žåã2ã€ã®èšŒææžã®ãããã«ã眲åã®å®è¶³æ°ãå¿
èŠãšããèšŒææžã圢æããããšãã§ããªãããšã«ãªããŸãããªã«ããªãŒã¯ããšããã¯ã倿Žããããšããã®ãããªãªããžã§ã¯ããåã³ãã©ã³ã¶ã¯ã·ã§ã³ã§äœ¿çšã§ããç¶æ
ã«ãªãããšãä¿èšŒããŸããèšŒææžã圢æãããªãã®ã§ãå
ã®ãªããžã§ã¯ãã¯æ¬¡ã®ãšããã¯ã®éå§æã«æäœå¯èœã§ãããã©ã³ã¶ã¯ã·ã§ã³ã¯ãšããã¯çªå·ãå«ãã®ã§ãå€ãç䟡ãã©ã³ã¶ã¯ã·ã§ã³ã¯ãªããžã§ã¯ããåã³ããã¯ããªãã®ã§ããã®ææè
ã«ããã䜿çšããæ©äŒãäžããããšãã§ããŸãã
å ±é
¬ãšã¯ãªããçµæž
ãSuiã«ã¯ãäŸçµŠéãåºå®ããããã€ãã£ãããŒã¯ã³SUIããããŸããSUIã¯ã¬ã¹ã®æ¯æãã«äœ¿çšããããŸããšããã¯å
ã®åœå±ã®å§ä»»ãããæ ªåŒãšããŠäœ¿çšãããŸãããã®ãšããã¯å
ã®åœå±ã®æç¥šåã¯ããã®å§ä»»ãããã¹ããŒã¯ïŒåºè³æ¯çïŒã®é¢æ°ã§ãããšããã¯ã®çµããã«ã¯ãåŠçããããã¹ãŠã®ãã©ã³ã¶ã¯ã·ã§ã³ãéããŠéããããææ°æããSuiã®éå¶ãžã®è²¢ç®åºŠã«å¿ããŠåœå±ã«åé
ãããæ¬¡ã«åœå±ã¯ææ°æã®äžéšãã圌ãã«ã¹ããŒã¯ãå§ä»»ããã¢ãã¬ã¹ã«å ±é
¬ãšããŠåé
ããŸããSuiã®ããŒã¯ã³ãšã³ããã¯ã¹ã®å®å
šãªèª¬æã¯ãå°çšã®è«æã«å»¶æããŸãã ïŒ.ïŒãæš©éãšã¬ããªã«ã®æŽæ°
ã¯ã©ã€ã¢ã³ãäž»å°å
ãã¯ã©ã€ã¢ã³ãã®é害ãŸãã¯éByzantineèªèšŒæ©é¢ã®é害ã«ãããäžéšã®èªèšŒæ©é¢ã¯ãã¹ãŠã®èšŒææžãåŠçããŠããªãå¯èœæ§ããããŸãããã®çµæããããã®èšŒææžã«ãã£ãŠçæãããæ¬ èœãããªããžã§ã¯ãã«äŸåããå æé¢ä¿ã®ãããã©ã³ã¶ã¯ã·ã§ã³ã¯æåŠãããã§ããããããããã¯ã©ã€ã¢ã³ãã¯åžžã«ãæ£ãããã©ã³ã¶ã¯ã·ã§ã³ãåŠçã§ããæç¹ãŸã§ãèª å®ãªæ©é¢ ãæŽæ°ããããšãã§ããŸããããã¯ãããèªèº«ã®éå»ã®èšŒææžã®ã¹ãã¢ã䜿çšããããéå»ã®èšŒææžã®ãœãŒã¹ãšããŠ1ã€ä»¥äžã®ä»ã®èª å®ãªæš©åšã䜿çšããŠè¡ãããšãã§ããŸãã èšŒææžcãšãcãšãã®å æé¢ä¿ã®å±¥æŽãå«ã ð¶ð¡ð£ ã¹ãã¢ãäžãããããšãã¯ã©ã€ã¢ã³ãã¯æ£çŽãªæš©åš ð£ â² ãcãé©çšããããã€ã³ãã«ã¢ããããŒãããããšãã§ããŸããããã¯ãð£ â² ã®ãªããžã§ã¯ããé©çšããããšãã«cã®ãã¹ãŠã®å
¥åãå«ããããªãð£ â² ã«ãªãèšŒææžã®æå°ã®ã»ãããèŠã€ããããšãå«ã¿ãŸããèšŒææžTxCertãå«ãã¹ãã¢Ctã䜿çšããŠãé
ããŠããæš©åšBãæŽæ°ããããšã¯ã以äžãå«ã¿ãŸãã ã¯ã©ã€ã¢ã³ãã¯ãåæããèšŒææžã®ãªã¹ããä¿æããåæç¶æ
ã§ã¯TxCertã®ã¿ãå«ãããã«èšå®ãããŠããŸãã ã¯ã©ã€ã¢ã³ãã¯ãåæãå¿
èŠãšããæåŸã®TxCertãèæ
®ãããTxCertå
ã®Txãæœåºãããã®ãã¹ãŠã®å
¥åãªããžã§ã¯ããå°åºããŸãïŒInput(Tx)ã䜿çšïŒã åå
¥åãªããžã§ã¯ãã«ã€ããŠãæåŸã«çæãŸãã¯å€ç°ããTxïŒCtuã®Sync, indexã䜿çšïŒãBå
ã«èšŒææžãæã€ãã©ããããã§ãã¯ããããã§ãªããã°ãã®èšŒææžãCtããèªã¿åã£ãŠãåæããèšŒææžã®ãªã¹ãã«è¿œå ããŸãã ãã以äžèšŒææžã远å ã§ããªãå ŽåïŒBããã®å
¥åããªãããïŒãèšŒææžãªã¹ãã¯å æé¢ä¿é ã«ãœãŒããããBã«æåºãããŸãã äžèšã®ã¢ã«ãŽãªãºã ã¯ãæ°ãããã©ã³ã¶ã¯ã·ã§ã³ãæå¹ã«ããããã«ããªããžã§ã¯ããç¹å®ã®ããŒãžã§ã³ã« ã¢ããããŒãããå Žåã«ãé©çšãããŸãããã®å Žåããªããžã§ã¯ãã®ããŒãžã§ã³ãçæããTxã®èšŒææž(n Syncð£ [ObjRef]ã«ãã)ããé
ããŠããæš©åšã«æåºãããŸãããããBäžã§å®è¡ããããšãæ£ããããŒãžã§ã³ã®ãªããžã§ã¯ãã䜿çšã§ããããã«ãªããŸãã ãã®æäœãè¡ãã¯ã©ã€ã¢ã³ãããªã¬ã€ã€ãŒãšåŒã³ãŸããè€æ°ã®ãªã¬ã€ã€ãŒãç¬ç«ããŠåæã«åäœããããšãå¯èœã§ãããããã¯å®å
šæ§ã®ç¹ã§ã¯ä¿¡é Œãããããã®åäœã¯ããŒã¬ã¹ã§ããã¯ã©ã€ã¢ã³ã以å€ã«ããæš©åšã¯ãªã¬ã€ã€ãŒããžãã¯ãå®è¡ããŠäºãã«æŽæ°ãåãããšãã§ããŸãããŸãããµãŒãã¹ãéçšããã¬ããªã«ããªã¬ãŒã€ãšããŠæ©èœããé
ããŠããæš©åšãæŽæ°ããããšãã§ããŸãã
ãã«ã¯
ããªãŒãœãªãã£ã¯ããã©ãã¯ãŒãèšŒææžãåŠçããéã«ãã¢ããããŒããåãåãããã®èšåãæäŸããŸããããã«ãããã¬ããªã«ã¯ãªãŒãœãªãã£ã®ç¶æ
ãææ°ã«ä¿ã€ããšãã§ããŸããããã«ãåœå±ã¯ãçæçã«ã¯ãåŠçãããææ°ã®ãã©ã³ã¶ã¯ã·ã§ã³ãäºãã«æŽæ°ããããã«ããã·ã¥ãã«ãŽã·ãããããã¯ãŒã¯ã䜿çšãããã®æ©èœãå®è¡ããããã®äžç¶è
ã®å¿
èŠæ§ãæžããããšãã§ããŸããé·æçã«ã¯ãé
ããŠããåœå±ã¯ããããã§ãã¯ãã€ã³ããŸã§ã®èšŒææžã®å®å
šãªã»ãããåŠçããããšã確èªããããã«ããšããã¯å¢çãŸãã¯ããé »ç¹ã«ã宿çãªã¹ããŒãã³ãããã¡ã³ãã䜿çšããããšãã§ããŸãã ïŒãã¹ã±ãŒãªã³ã°ãšã¬ã€ãã³ã·ãŒ Suiã·ã¹ãã ã¯ãåœå±ãããå€ãã®ãªãœãŒã¹ãããªãã¡ãã·ã³å
ãŸãã¯è€æ°ã®ãã·ã³ã«ããã£ãŠCPUãã¡ã¢ãªããããã¯ãŒã¯ãã¹ãã¬ãŒãžããã©ã³ã¶ã¯ã·ã§ã³åŠçã«å²ãåœãŠãããšã«ãããã¹ã±ãŒãªã³ã°ããããšãã§ããŸãããªãœãŒã¹ã®å¢å ã¯ãã©ã³ã¶ã¯ã·ã§ã³ã®åŠçèœåã®åäžã«ã€ãªããããããã®ãªãœãŒã¹ãè³ãããã®ææ°æåå
¥ã®å¢å ã«ãã€ãªãããŸãããŸãããªãœãŒã¹ãå¢ããã°ãå¿
èŠãªãªãœãŒã¹ãå©çšå¯èœã«ãªãã®ãåŸ
ããã«ãªãã¬ãŒã·ã§ã³ãå®è¡ããããããã¬ã€ãã³ã·ãŒãäœããªããŸãã
ã¹ã«ãŒããã
ãããå€ãã®ãªãœãŒã¹ãæºç·åœ¢ã«å®¹éãå¢ããããšãä¿èšŒãããããSuiã®èšèšã§ã¯ãããã«ããã¯ãããªãŒãœãªãã£å
ã®ã°ããŒãã«ããã¯ãå¿
èŠãšããåæãã€ã³ããç©æ¥µçã«æžãããŠããŸãããã©ã³ã¶ã¯ã·ã§ã³ã®åŠçã¯ãïŒ1ïŒãã©ã³ã¶ã¯ã·ã§ã³ãç¹å®ã®ããŒãžã§ã³ã§ææãŸãã¯å
±æãªããžã§ã¯ããžã®æä»çã¢ã¯ã»ã¹ãæã€ããšãä¿èšŒããïŒ2ïŒãã®åŸããã©ã³ã¶ã¯ã·ã§ã³ãå®è¡ããŠãã®å¹æãã³ããããããšãã2ã€ã®ãã§ãŒãºã«ãããã«åé¢ãããŠããŸãã ãã§ãŒãºïŒ1ïŒã§ã¯ããã©ã³ã¶ã¯ã·ã§ã³ããªããžã§ã¯ãã®ç²åºŠã§åæ£ããã¯ãååŸããããšãå¿
èŠã§ããææãªããžã§ã¯ãã®å Žåãããã¯ä¿¡é Œã§ãããããŒããã£ã¹ãããªããã£ãã«ãã£ãŠå®è¡ãããæš©éå
ã®ã°ããŒãã«ãªåæãå¿
èŠãšããªããããObjIDã«ãã£ãŠè€æ°ã®ãã·ã³éã§ããã¯ç®¡çãã·ã£ãŒãã£ã³ã°ããããšã§ã¹ã±ãŒãªã³ã°ããããšãã§ããŸããå
±æãªããžã§ã¯ããå«ããã©ã³ã¶ã¯ã·ã§ã³ã§ã¯ãã³ã³ã»ã³ãµã¹ãããã³ã«ãçšããé åºä»ããå¿
èŠã§ããããã¯ããããã®ãã©ã³ã¶ã¯ã·ã§ã³ã«ã°ããŒãã«ãªé åºã課ããããã«ããã¯ãšãªãå¯èœæ§ãç§ããŠããŸããããããæè¿ã®é«ã¹ã«ãŒãããã®ã³ã³ã»ã³ãµã¹ãããã³ã«ã®ãšã³ãžãã¢ãªã³ã°ã®é²æ©ã«ãããã¹ããŒããã·ã³è€è£œã«ãããããã«ããã¯ã¯ã·ãŒã±ã³ã·ã£ã«å®è¡ã§ãããã·ãŒã±ã³ã·ã³ã°ã§ã¯ãªãããšãå®èšŒãããŠããŸããSuiã§ã¯ãã·ãŒã±ã³ã·ã£ã«å®è¡ã§ã¯ãªããå
¥åãããå
±æãªããžã§ã¯ãã®ããŒãžã§ã³ã決å®ããããã«ã®ã¿ãããªãã¡ãªããžã§ã¯ãã®ããŒãžã§ã³çªå·ãã€ã³ã¯ãªã¡ã³ãããããããã©ã³ã¶ã¯ã·ã§ã³ãã€ãžã§ã¹ãã«é¢é£ä»ããããã«ã·ãŒã±ã³ã·ã£ã«å®è¡ã䜿çšãããŸãã ãã§ãŒãºïŒ2ïŒã¯ããã¹ãŠã®å
¥åãªããžã§ã¯ãã®ããŒãžã§ã³ãåœå±ã«ç¥ãã(ãããŠåœå±éã§å®å
šã«åæãã)ãMoveãã©ã³ã¶ã¯ã·ã§ã³ã®å®è¡ãšãã®å¹æã®ã³ãããã䌎ããšãã«è¡ãããŸããå
¥åãªããžã§ã¯ãã®ããŒãžã§ã³ãåããã°ãå®å
šãªäžŠåå®è¡ãå¯èœã§ããè€æ°ã®ã³ã¢ãŸãã¯ç©çãã·ã³äžã®ä»®æ³ãã·ã³ãåãããããŒãžã§ã³ç®¡çãããå
¥åãªããžã§ã¯ããèªã¿ãå®è¡ããçµæã®ãªããžã§ã¯ããã¹ãã¢ããããŸãã¯ã¹ãã¢ã«æžã蟌ã¿ãŸãããªããžã§ã¯ãããã©ã³ã¶ã¯ã·ã§ã³ã®ã¹ãã¢ã«å¯Ÿããäžè²«æ§èŠä»¶ïŒãªãŒããŒããã¯ããã以å€ïŒã¯éåžžã«ç·©ããåæ©é¢å
éšã§ã¹ã±ãŒã©ãã«ãªåæ£ããŒããªã¥ãŒã¹ãã¢ã䜿çšããããšãã§ããŸããå®è¡ã¯å¶çºçã§ãããå®è¡ãæ±ãã³ã³ããŒãã³ãã®ã¯ã©ãã·ã¥ãããŒããŠã§ã¢é害ããã®å埩ã容æã§ãã ãã®çµæãäºãã«å æé¢ä¿ã®ãªããã©ã³ã¶ã¯ã·ã§ã³ã®å®è¡ã䞊è¡ããŠé²ããããšãã§ããŸãããããã£ãŠãã¹ããŒãã³ã³ãã©ã¯ãã®èšèšè
ã¯ããã®äžŠåæ§ãå©çšããããã«ãã³ã³ãã©ã¯ãå
ã®ãªããžã§ã¯ããæäœã®ããŒã¿ã¢ãã«ãèšèšããããšãã§ããŸãã ãã§ãã¯ãã€ã³ããšç¶æ
ã®ã³ãããã¡ã³ãã¯ãæ°ãããã©ã³ã¶ã¯ã·ã§ã³ã®åŠçã劚ããªããããã¯ãªãã£ã«ã«ãªãã©ã³ã¶ã¯ã·ã§ã³åŠçãã¹ããå€ããŠèšç®ãããŸãããããã¯ããã©ã³ã¶ã¯ã·ã§ã³ãå®äºããåã«èšç®ãšåæãå¿
èŠãšããã®ã§ã¯ãªããã³ããããããããŒã¿ã«å¯Ÿããèªã¿åãæäœã䌎ããŸãããããã£ãŠãæ°ãããã©ã³ã¶ã¯ã·ã§ã³ã®åŠçã®ã¬ã€ãã³ã·ãŒãã¹ã«ãŒãããã«åœ±é¿ãäžãããããèªäœãå©çšå¯èœãªãªãœãŒã¹ã«åæ£ãããããšãã§ããŸãã èªã¿åãã¯ãéåžžã«ã¢ã°ã¬ãã·ãã§ã¹ã±ãŒã©ãã«ãªãã£ãã·ã¥ã®æ©æµãåããããšãã§ããŸããèªèšŒå±ã¯ãã©ã€ãã¯ã©ã€ã¢ã³ããèªã¿èŸŒã¿ã«å¿
èŠãšãããã¹ãŠã®ããŒã¿ã«çœ²åããå©çšå¯èœã«ããŸãããããã®ããŒã¿ã¯ãéçããŒã¿ãšããŠåæ£ã¹ãã¢ããæäŸãããå ŽåããããŸããèšŒææžã¯ããã©ã³ã¶ã¯ã·ã§ã³ãšãªããžã§ã¯ãã®å®å
šãªå æé¢ä¿ã®å±¥æŽã«å¯Ÿããä¿¡é Œã®æ ¹æºãšããŠæ©èœããŸããããã«ã¹ããŒãã»ã³ãããã¡ã³ãã«ãããã·ã¹ãã å
šäœããå°ãªããšããšããã¯æ¯ããããã¯ããé »ç¹ã«åŠçããããã¹ãŠã®ã¹ããŒããšãã©ã³ã¶ã¯ã·ã§ã³ã«å¯ŸããŠã宿çã«ã°ããŒãã«ãªä¿¡é Œã®æ ¹ãæã€ããšãã§ããããã«ãªããŸãã
ã¬ã€ãã³ã·ãŒ
ãã¹ããŒãã³ã³ãã©ã¯ãã®èšèšè
ã¯ãå®çŸ©ãããªãã¬ãŒã·ã§ã³ãææãªããžã§ã¯ããšå
±æãªããžã§ã¯ãã®ã©ã¡ããå«ããã«ãã£ãŠãã¬ã€ãã³ã·ãŒãå¶åŸ¡ããæè»æ§ãäžããããŠããŸããææãªããžã§ã¯ãã¯ãå®è¡ãšã³ãããã®åã«ä¿¡é Œã§ãããããŒããã£ã¹ãã«äŸåããæçµçã«å°éããããã«åœå±ã®ã¯ã©ãŒã©ã ãžã®2åã®ã©ãŠã³ãããªãããå¿
èŠãšããŸããäžæ¹ãå
±æãªããžã§ã¯ããå«ãæäœã¯ãèšŒææžãäœæããããã«äžè²«ãããããŒããã£ã¹ããå¿
èŠãšãããã®åŸã³ã³ã»ã³ãµã¹ãããã³ã«å
ã§åŠçããããããã¬ã€ãã³ã·ãå¢å ããŸãïŒ[George Danezis, Eleftherios Kokoris-Kogias, Alberto Sonnino, and Alexander Spiegelman. 2021. Narwhal and Tusk: A DAG-based Mempool and Efficient BFT Consensus. CoRR abs/2105.11827 (2021)]ã®æç¹ã§ã¯ã©ãŒã©ã ãžã®4ïœ8åã®ã©ãŠã³ãããªããïŒã ïŒãªãªãžãã«ã®ãã¯ã€ãããŒããŒã¯ãã¡ã
ããã«èšèŒãããå
容ã¯ããããŸã§ãªãªãžãã«ãæ¥æ¬èªèš³ã«ãããã®ã§ãããç§KeiCryptoã«ãããã®ã§ã¯ãããŸãããèäœæš©ã¯ãªãªãžãã«ã®äœæè
ã®ãã®ã§ãã The content herein is only a Japanese translation of the original and is not by me, KeiCrypto. The copyright belongs to the original author.
ç°¡åãªèæ¯
ãã·ã¹ãã ã¬ãã«ã§ã¯ãSuiã¯FastPayã®äœé
延決æžã·ã¹ãã ãé²åããããã®ã§ããŠãŒã¶ãŒå®çŸ©ã®ã¹ããŒãã³ã³ãã©ã¯ããéããŠä»»æã®ãªããžã§ã¯ãã§åäœããããã«æ¡åŒµããèš±å¯ãªãã®å§ä»»èšŒæã«ãããã«ãŒãã»ãªãã»ã¹ããŒã¯ ã³ãããã£æ§æã§æ§æããŠããŸãããªããžã§ã¯ãææè
ã«ããåºæ¬çãªè³ç£ç®¡çã¯ãByzantineåæã®åŸæ¥ã®å®è£
ãšæ¯èŒããŠã¬ã€ãã³ã·ãŒãäœããå€ãã®ãã·ã³éã§ã¹ã±ãŒã«ããããByzantineäžè²«ãããŒããã£ã¹ãã®å€çš®ã«åºã¥ããŠããŸããå®å
šåæãå¿
èŠãªå Žåãç°ãªãå
±æãªããžã§ã¯ãã§ã®å®è¡ã¯äžŠååãããŠããŸãããããã¯ç®¡çã®ããã«é«åŠçDAGããŒã¹ã®åæãäŸãã° [George Danezis, Eleftherios Kokoris-Kogias, Alberto Sonnino, and Alexander Spiegelman. 2021. Narwhal and Tusk: A DAG-based Mempool and Efficient BFT Consensus. CoRR abs/2105.11827] ã䜿çšããŸãã
ãããã³ã«ã®æŠèŠ
ãå³1ã¯ããã©ã³ã¶ã¯ã·ã§ã³ãã³ãããããããã®ãã¯ã©ã€ã¢ã³ããšSuiåœå±éã®é«ã¬ãã«ãªã€ã³ã¿ã©ã¯ã·ã§ã³ã瀺ãå³ã§ããããã§ã¯ãããããç°¡åã«èª¬æããŸãã ç§å¯çœ²åéµãæã€ãŠãŒã¶ãŒã¯ãSuiå
ã§èªåãææãããªããžã§ã¯ããå
±æãªããžã§ã¯ããå€ç°ãããããã®ãŠãŒã¶ãŒãã©ã³ã¶ã¯ã·ã§ã³ãäœæãã眲åããŸãããã®åŸããŠãŒã¶ãŒçœ²åéµã¯äžèŠãšãªããæ®ãã®åŠçã¯ãŠãŒã¶ãŒã»ã¯ã©ã€ã¢ã³ãããŸãã¯ãŠãŒã¶ãŒã«ä»£ãã£ãŠã²ãŒããŠã§ã€ãè¡ãããšãã§ããŸãïŒå³ã§ã¯ããŒã¬ã¹æäœãšè¡šèšïŒã ãŠãŒã¶ãã©ã³ã¶ã¯ã·ã§ã³ã¯Suiåœå±ã«éãããåœå±ã¯ãããããã©ã³ã¶ã¯ã·ã§ã³ã®æå¹æ§ããã§ãã¯ããæåããã眲åããŠã¯ã©ã€ã¢ã³ãã«çœ²åä»ããã©ã³ã¶ã¯ã·ã§ã³ãè¿ããŸããã¯ã©ã€ã¢ã³ãã¯ããã©ã³ã¶ã¯ã·ã§ã³èšŒææžã圢æããããã«ãåœå±ã®å®æ°ãã å¿çãåéããŸãã ãã©ã³ã¶ã¯ã·ã§ã³èšŒææžã¯æ¬¡ã«ãã¹ãŠã®æ©é¢ã«éãè¿ããããããã©ã³ã¶ã¯ã·ã§ã³ãå
±æãªããžã§ã¯ããå«ãã§ããã°ãããã¯Suiæ©é¢ã«ãã£ãŠéå¶ãããByzantineåæãããã³ã«ã«ãéãããŸããåœå±ã¯èšŒææžããã§ãã¯ããå
±æãªããžã§ã¯ããé¢äžããŠããå Žåã«ã¯ãåæãããã³ã«ãä»ã®å
±æãªããžã§ã¯ããã©ã³ã¶ã¯ã·ã§ã³ãšã®é¢é£ã§ãããã·ãŒã±ã³ã¹ããã®ãåŸ
ã¡ããã®åŸãã©ã³ã¶ã¯ã·ã§ã³ãå®è¡ãããã®å¹æã眲åããã广å¿çã«ãŸãšããŸãã åœå±ã®å®è¶³æ°ãèšŒææžãå®è¡ãããšããã®å¹æã¯æçµçãªãã®ãšãªããŸãïŒå³ã§ã¯æçµãšè¡šèšãããŠããŸãïŒãã¯ã©ã€ã¢ã³ãã¯ãæš©éå¿çã®å®è¶³æ°ãéããŠå¹æèšŒææžãäœæããããããã©ã³ã¶ã¯ã·ã§ã³å¹æã®æçµæ§ã®èšŒæãšããŠäœ¿çšããããšãã§ããŸãã ãã®ã»ã¯ã·ã§ã³ã§ã¯ããããã®åæäœã®è©³çްãšãåœå±éã§ç¶æ
ãåæ§æããã³ç®¡çããããã®æäœã«ã€ããŠèª¬æããŸãã ïŒ.ïŒãã·ã¹ãã ã¢ãã« Suiã¯ãð â {0, . . .}ã§ç€ºãããäžé£ã®ãšããã¯ã«ãããŠåäœããŸããåãšããã¯ã¯å§å¡äŒð¶ð = (ðð, ðð (·)) ã«ãã£ãŠç®¡çããïŒããã§ ðð ã¯æ¢ç¥ã®å
¬éæ€èšŒããŒãšãããã¯ãŒã¯ãšã³ããã€ã³ããæã€æš©åšã®éåã§ãã颿° ðð (ð£) ã¯ïŒåæš©åš ð£ â ðð t ãå§ä»»ãããã¹ããŒã¯ã®åäœæ°ã«å¯Ÿå¿ä»ããŸããåãšããã¯ã® ð¶ð ã¯ïŒãšããã¯e-1ã«ãããæš©åšã¹ããŒã¯ã®ã¯ã©ãŒã©ã ïŒäžèšåç
§ïŒã«ãã眲åãããŠãããšä»®å®ããŸã(4.7ç¯ã§å§å¡äŒã®åœ¢æãšç®¡çã«ã€ããŠè¿°ã¹ãŸã)ããšããã¯å
ã§ã¯ïŒããæš©åšã¯æ£ããïŒãããã³ã«ã«å¿ å®ã«åŸãïŒçããŠããïŒãããæš©åšã¯ByzantineïŒãããã³ã«ããä»»æã«éžè±ããïŒã§ããå®å
šæ§ã®ä»®å®ã¯ãæ£çŽãªåœå±ã®éå ð»ð â ðð ã¯ãšããã¯å
ã§ã¹ããŒã¯ãã¯ã©ãŒã©ã ã«å²ãåœãŠãããããšãããªãã¡i.e. à ââð»ð ðð (â) > 2/3 à ð£âðð ðð (ð£) (ãããŠã3åã®2以äžã®ã¹ããŒã¯ãæã€åœå±ã®éåãã¯ã©ãŒã©ã ãšåŒã¶)ã§ããããšã§ãã æ£çŽãªåœå±éã®åèšŒææž(4.3ç¯åç
§)ã®ãªã¬ãŒãšããŠæ©èœãããå°ãªããšã1ã€ã®çããŠããŠæ£ããããŒãã£ãååšããŸããããã¯ãã©ã€ãæ§ãä¿èšŒãããã¶ã³ãã³æŸéã«æçµçãªé
ä¿¡ç¹æ§ãæäŸããŸã(åèæç®[Christian Cachin, Rachid Guerraoui, and LuÃs Rodrigues. 2011. Introduction to reliable and secure distributed programming. Springer Science & Business Media]ã®ä¿¡é Œã§ããæŸéã®å
šäœå)ãåæš©åšã¯ãã®ãããªãªã¬ãŒããåå¥ã«ããŸãã¯éåçãªçºä¿¡ãããã³ã«ãä»ããŠéçšããŸãããŸããSuiã©ã€ãã¯ã©ã€ã¢ã³ããã¬ããªã«ããµãŒãã¹ãªã©ã®å€éšãšã³ãã£ãã£ããã®åœ¹å²ãæ
ãããšããããŸããååçãªæš©åšã®äžæ žãšãä¿¡é Œæ§ãä¿¡çšåºŠã®äœãå
éšãŸãã¯å€éšã®èœåçãªäžç¶ã³ã³ããŒãã³ããåºå¥ããããšã§ãSuiã®å®å
šæ§ãšæŽ»æ°ã«äŸåãããã©ã¹ãããã³ã³ãã¥ãŒãã£ã³ã°åºç€ãæç¢ºã«åºåããæå°åããããšãä¿èšŒããŠããã®ã§ãã ïŒ.ïŒãæš©éãšã¬ããªã«ã®ããŒã¿æ§é Suiæš©éã§ã¯ãç¶æ
ã衚çŸããããã«å€ãã®ããŒã¿æ§é ã«äŸåããŠããŸããæã
ã¯ããããã®æ§é ãããããããµããŒãããæäœã«åºã¥ããŠå®çŸ©ããŸãããããã¯ãã¹ãŠæ±ºå®è«çãªãã€ã衚çŸãæã£ãŠããŸãã ãªããžã§ã¯ãïŒObjïŒã¯ããŠãŒã¶ãŒã®ã¹ããŒãã³ã³ãã©ã¯ããšããŒã¿ãSuiå
ã«ä¿åããŸããããã¯ã第2ç« ã§ç޹ä»ããMoveãªããžã§ã¯ããSuiã®ã·ã¹ãã ã¬ãã«ã§ãšã³ã³ãŒããããã®ã§ãã å³1ïŒãã©ã³ã¶ã¯ã·ã§ã³ãã³ãããããããã®ã€ã³ã¿ã©ã¯ã·ã§ã³ã®æŠèŠã ref(Obj)ã¯ããªããžã§ã¯ãã®åç
§ïŒObjRefïŒãããªãã¡ããªãã¬ããïŒObjID, Version, ObjDigestïŒãè¿ããŸããObjlDã¯æ°ããäœæããããã¹ãŠã®ãªããžã§ã¯ãã«å¯ŸããŠå®è³ªçã«äžæã§ãããVersionã¯å€ç°ããŠãããªããžã§ã¯ãã®ããŒãžã§ã³ãè¡šãæ£ã®å¢å ããæŽæ°ã§ãã owner(Obj) ã¯ããã®ãªããžã§ã¯ãã®ææè
ã®èªèšŒå Auth ãè¿ããŸããæãåçŽãªã±ãŒã¹ã§ã¯ã Auth ã¯ã¢ãã¬ã¹ã§ããã®ãªããžã§ã¯ãã䜿çšããããšãã§ããå
¬ééµã衚ããŸããããè€éãªèªèšŒåãå©çšå¯èœã§ã (4.4ç¯ãåç
§ãã ãã)ã read-only(Obj) ã¯ãªããžã§ã¯ããèªã¿åãå°çšã§ããã°çãè¿ããŸããèªã¿åãå°çšã®ãªããžã§ã¯ãã¯æ±ºããŠå€ç°ãããããã©ããããããåé€ãããããããšã¯ã§ããŸããããŸãããã®ææè
ã ãã§ãªãã誰ã§ã䜿çšããããšãã§ããŸãã parent(Obj) ã¯ããªããžã§ã¯ããæåŸã«å€ç°ãŸãã¯äœæãããã©ã³ã¶ã¯ã·ã§ã³ãã€ãžã§ã¹ã (TxDigest) ãè¿ããŸãã contents(Obj)ã¯ããã©ã³ã¶ã¯ã·ã§ã³ã®æå¹æ§ã確èªãããªããžã§ã¯ãã®ã¢ããªã±ãŒã·ã§ã³åºæã®æ
å ±ãéã¶ããã«äœ¿çšã§ãããªããžã§ã¯ãã®ã¿ã€ãTypeãšããŒã¿Dataãè¿ããŸãã ãªããžã§ã¯ãåç
§ïŒObjRefïŒã¯ããªããžã§ã¯ãã®ã€ã³ããã¯ã¹ãäœæããããã«äœ¿çšãããŸãããŸããObjDigestã¯ãã®å®å
šãªå
容ã«å¯Ÿããã³ãããã¡ã³ãã§ããããããªããžã§ã¯ããèªèšŒããããã«ã䜿çšãããŸãã ãã©ã³ã¶ã¯ã·ã§ã³ïŒTxïŒã¯ã1ã€ãŸãã¯è€æ°ã®ãªããžã§ã¯ãã®ç¶æ
é·ç§»ãè¡šãæ§é äœã§ããããããã¯ä»¥äžã®æäœã®ã»ããããµããŒãããŸãã digest(Tx)ã¯TxDigestãè¿ããŸããããã¯ããã©ã³ã¶ã¯ã·ã§ã³ã«å¯Ÿããææåã® ããcryptoã°ã©ãã£ãã¯ã®ã³ãããã¡ã³ãã§ãã epoch(Tx) ã¯ããã®ãã©ã³ã¶ã¯ã·ã§ã³ãå®è¡ãããå¯èœæ§ã®ãããšããã·ããè¿ããŸãã inputs(Tx) ã¯ããã©ã³ã¶ã¯ã·ã§ã³ã®å®è¡ã«å¿
èŠãªãªããžã§ã¯ã(ObjRef)ã®åãè¿ããŸãã payment(Tx) ã¯ãã¬ã¹æéã®æ¯æãã«äœ¿çšããã ObjRef ãžã®åç
§ãšãã¬ã¹æéã®äžéãããã³ã¬ã¹æéã®åäœãšã¬ã¹æéã®ãªããžã§ã¯ãã®å€ã®åäœãšã®éã®å€æã¬ãŒããè¿ããŸãã valid(Tx, [Obj]) ã¯ãæäŸãããèŠæ±ãããå
¥åãªããžã§ã¯ããäžãããããšãã«ããã©ã³ã¶ã¯ã·ã§ ã³ãæå¹ã§ããã°trueãè¿ããŸããæå¹æ§ã«ã€ããŠã¯4.4ç¯ã§èª¬æããŸãã4.4ç¯ã§è°è«ããããã©ã³ã¶ã¯ã·ã§ã³ãå
¥åãªããžã§ã¯ãã«äœçšããããšãæ¿èªãããŠããããšãããã³ãã®å®è¡ã³ã¹ããã«ããŒããããã«ååãªã¬ã¹ãå©çšå¯èœã§ããããšã«é¢é£ããŸãã exec(Tx, [Obj]) ã¯ãã©ã³ã¶ã¯ã·ã§ã³ãå®è¡ãããã®å¹æãè¡šãæ§é äœãè¿ããŸããæå¹ãªãã©ã³ã¶ã¯ã·ã§ã³ã®å®è¡ã¯ç¢ºå®ã§ããããã®åºåã¯æ±ºå®è«çã§ãã ååŒã¯ãã®TxDigestã«ãã£ãŠã€ã³ããã¯ã¹åãããããã¯ãŸããã®å
šå
容ãèªèšŒããããã«äœ¿çšããããããããŸããããã¹ãŠã®æå¹ãªãã©ã³ã¶ã¯ã·ã§ã³(ç¹å¥ã«ããŒãã³ãŒããããgenesisãã©ã³ã¶ã¯ã·ã§ã³ãé€ã)ã¯ãå°ãªããšã1ã€ã®ææããå
¥åãããªãã¡ãã¬ã¹ä»£ãæ¯æãããã«äœ¿çšãããªããžã§ã¯ããæã¡ãŸãã ãã©ã³ã¶ã¯ã·ã§ã³å¹æ(Effects)æ§é äœã¯ããã©ã³ã¶ã¯ã·ã§ã³å®è¡ã®çµæãèŠçŽããŸããããã¯ã以äžã®æäœããµããŒãããã digest(Effects) ã¯ãEffects æ§é äœãžã®ã³ãããã¡ã³ã EffDigest ã§ãããã€ã³ããã¯ã¹ä»ããèªèšŒã«äœ¿çšãããããšããããŸãã transaction(Effects) ã¯ã广ãããããå®è¡ããããã©ã³ã¶ã¯ã·ã§ã³ã®TxDigestãè¿ããŸãã dependencies(Effects) ã¯ããããã®å¹æãæã€ãã©ã³ã¶ã¯ã·ã§ã³ãå®è¡ãããåã«å®è¡ããã ã¹ãäŸåé¢ä¿ [TxDigest] ã®ã·ãŒã±ã³ã¹ãè¿ããŸãã contents(Effects)ã¯ãå®è¡ã®æŠèŠãè¿ããStatusã¯ãã¹ããŒãã³ã³ãã©ã¯ãã®å®è¡çµæãå ±åããŸããCreatedãMutatedãWrappedãUnwrappedãDeletedã®åãªã¹ãã¯ãããããã®æäœãåãããªããžã§ã¯ãåç
§ããªã¹ãã¢ããããŠããŸãããããŠãEvents ã¯ãå®è¡ã«ãã£ãŠçºè¡ãããã€ãã³ãããªã¹ãã¢ããããŸãã ãã©ã³ã¶ã¯ã·ã§ã³ã«é¢ãããã©ã³ã¶ã¯ã·ã§ã³èšŒææž TxCert ã¯ããã©ã³ã¶ã¯ã·ã§ã³èªäœãšã æš©åšã®å®è¶³æ°ããã®èå¥åãšçœ²åãå«ã¿ãŸããåãè«ççãªèšŒææžããå®è¶³æ°ã圢æããç°ãªãã»ããã®æ©é¢ã«ãã£ãŠè¡š çŸããããããããªããšããç¹ã§ãèšŒææžã¯äžæã§ã¯ãªããããããªãããšã«æ³šæããŸããããã«ãèšŒææžã¯å³å¯ã«ã¯å®è¶³æ°ã®3åã®2以äžã«ãã£ãŠçœ²åãããªããããããŸããããããå€ãã®åœå±ãå¿çããå Žåã¯ãã以äžãšãªãå¯èœæ§ãããªãã¹ãããããåããã©ã³ã¶ã¯ã·ã§ã³äžã®2ã€ã®ç°ãªãæå¹ãªèšŒææžã¯ãæå³çã«åãèšŒææžã衚ããã®ãšããŠæ±ãããã¹ãã§ããéšåèšŒææž(TxSign)ã¯ãåãæ
å ±ãå«ã¿ãŸãããèŠæ±ãããå®è¶³æ°ãããäœãã¹ããŒã¯ã衚ãåœå±ã®éåããã®çœ²åã§ãéåžžã¯åäžã®åœå±ã§ããã眲åè
ã®èå¥åã¯ãèšŒææžãåŠçããæºåãã§ããŠããæš©åšãèå¥ããããã«ããŸãã¯èšŒææžãåŠçããããã«å¿
èŠãªéå»ã®æ
å ±ãããŠã³ããŒãããããã«äœ¿çšããããããããªãèšŒææžïŒèª¬æå¯èœãªçœ²å[ïŒ]ïŒã«å«ãŸããŠããŸãïŒ4.8é
åç
§ïŒã åæ§ã«ããšãã§ã¯ãæ§é äžã®ãšãã§ã¯ãèšŒææž EffCert ã¯ããšãã§ã¯ãæ§é ããèªäœãšããã©ã³ã¶ã¯ã·ã§ã³ãæå¹ãªãšããã¯ã®å®è¶³æ°ã代衚ããåœå±ããã®çœ²åãå«ã¿ãŸããéäžææ§ãšåäžæ§ã«ã€ããŠã¯ããã©ã³ã¶ã¯ã·ã§ã³èšŒææžãšåãæ³šæäºé
ãé©çšãããŸããéšåçãªãšãã§ã¯ãèšŒææžã¯ãéåžžãåäžã®æ©é¢ã®çœ²åãšãšãã§ã¯ãæ§é ãå«ã¿ãEffSign ãšè¡šèšãããŸãã
æ°žç¶çãªã¹ãã¢
ãåæš©åšãšã¬ããªã«ã¯ïŒæ°žç¶ã¹ãã¢ã®ã»ãããä¿æããŸããã¹ãã¢ã¯æ°žç¶çãªãããã»ãã³ãã£ãã¯ãå®è£
ããŠããïŒããŒãšå€ã®ãã¢ã®ã»ãã (ððð [ðððŠ] â ð£ððð¢ð ãšè¡šèš) ãšããŠè¡šçŸããããšãã§ãïŒäžããããããŒãæã€ãã¢ã¯1ã€ã ãã§ãããã¢ãæ¿å
¥ãããåã«contains(key)ãåŒã³åºããšfalseãè¿ããget(key)ã¯ãšã©ãŒãè¿ããŸãããã¢ãæ¿å
¥ãããåŸïŒcontains(key)ã³ãŒã«ã¯çãè¿ãïŒget(key)ã¯å€ãè¿ããŸããæš©åšã¯ä»¥äžã®æ°žç¶ã¹ãã¢ãä¿æããŸãã ãªãŒããŒããã¯ããã Locko [ObjRef] â TxSignOption ã¯ãææãããªããžã§ã¯ãããŒãžã§ã³ ObjRef ã«å¯ŸããŠæš©åšã眲åããæåã®æå¹ãªãã©ã³ã¶ã¯ã·ã§ã³ Tx ãèšé²ãããŸãã¯ãªããžã§ã¯ãããŒãžã§ã³ãååšãããããããå
¥åãšããæå¹ãªãã©ã³ã¶ã¯ã·ã§ã³ãèŠãããªãå Žå㯠None ãèšé²ããŸãããŸãããã®ãªããžã§ã¯ããå
¥åãšããŠèŠãæåã®èšŒææžãèšé²ããããšããããŸãããã®ããŒãã«ãšãã®æŽæ°èŠåã¯ãSuiåœå±ã«ãŸããããªããžã§ã¯ãã®åæ£ããã¯ã®ç¶æ
ã衚ãããã©ã³ã¶ã¯ã·ã§ã³ã®åæåŠçäžã§ã®å®å
šæ§ãä¿èšŒããŸãã èšŒææžããã Cty[TxDigest] â (TxCert, Effsign) ã¯ïŒæå¹æéå
ã«æš©åšã«ãã£ãŠåŠçããããã¹ãŠã®å®å
šãªèšŒææž TxCertïŒTxãå«ãïŒãããã®çœ²åä»ã广 EffSign ãšå
±ã«èšé²ããŸãããããã¯ãã©ã³ã¶ã¯ã·ã§ã³ãã€ãžã§ã¹ã TxDigest ã«ãã£ãŠã€ã³ããã¯ã¹åãããŸãã ãªããžã§ã¯ãããã Obj, [ObjRef] â Obj ã¯ãObjRef ã§ã€ã³ããã¯ã¹ãããCtyå
ã®èšŒææžã«å«ãŸãããã©ã³ã¶ã¯ã·ã§ã³ã«ãã£ãŠäœæããããã¹ãŠã®ãªããžã§ã¯ã Obj ãèšé²ããŸãããã®ã¹ãã¢ã¯ãCty å
ã®ãã¹ãŠã®èšŒææžãåå®è¡ããããšã§å®å
šã«å°ãåºãããšãã§ããŸããObjld ããã®IDãæã€ææ°ã®ãªããžã§ã¯ãã«ãããããäºæ¬¡ã€ã³ããã¯ã¹ãç¶æãããŸããããã¯æ°ãããã©ã³ã¶ã¯ã·ã§ã³ãåŠçããããã«å¿
èŠãªå¯äžã®æ
å ±ã§ãããå€ãããŒãžã§ã³ã¯èªã¿åããšç£æ»ã容æã«ããããã«ã®ã¿ç¶æãããŸãã åæããã p Syncð£ [ObjRef] â TxDigest ã¯ãCty å
ã®ãã¹ãŠã®èšŒææžããããããäœæã倿ŽããŸãã¯åé€ãããªããžã§ã¯ãããšã«ãã¿ãã« ObjRef ãšããŠããã·ã³ã°ãããã®ã§ãããã®æ§é ã¯ãCtyå
ã®ãã¹ãŠã®èšŒææžãåŠçããããšã§å®å
šã«åäœæããããšãã§ããã¯ã©ã€ã¢ã³ããæ°ã«ãããªããžã§ã¯ãã«åœ±é¿ãäžãããã©ã³ã¶ã¯ã·ã§ã³ã®åæãå©ããããã«äœ¿çšãããŸãã ãªãŒãœãªãã£ã¯4ã€ã®æ§é ãã¹ãŠãç¶æãããŸããä»ã®ãªãŒãœãªãã£ãã¬ããªã«ãåŠçæžã¿ã®èšŒææžäžåŒãããŠã³ããŒãã§ããããã«ããã®èšŒææžãããã®ããŒã«ã«ãã§ãã¯ãã€ã³ããžã®ã¢ã¯ã»ã¹ãæäŸããŸããã¬ããªã«ã¯ãã©ã³ã¶ã¯ã·ã§ã³ãåŠçãããèšŒææžã®ã¿ãåŠçãããªãŒãœãªãã£ãšåæ§ã«ä»ã®ããŒãã«ãæŽæ°ããããã«èšŒææžãåå®è¡ããŸãããŸããé åºããã¯ããããç¶æããéåæåãç£æ»ããŸãã ãªãŒãœãªãã£ã¯ãèªã¿åããšåæã容æã«ããããã«4ã€ã®ã¹ãã¢ïŒããã³ãã§ãã¯ãã€ã³ãïŒãç¶æããå®å
šãªã¬ããªã«ãšãæ°ãããã©ã³ã¶ã¯ã·ã§ã³ãšèšŒææžãåŠçããããã«äœ¿çšãããããªããžã§ã¯ãã®ææ°ããŒãžã§ã³ã®ãªããžã§ã¯ãããã¯ãšããªããžã§ã¯ãã®ã¿ãç¶æããæå°éã®ãªãŒãœãªãã£ã³ã¢ãšããŠçµã¿åãããŠèšèšããããšãã§ããŸããããã«ãããå®å
šæ§ã®ããã«äŸåãããã©ã¹ãããã»ã³ã³ãã¥ãŒãã£ã³ã°ã»ããŒã¹ãæå°åãããŸãã ããªãã¡ãããŒã®èªã¿åãã¯ãååšããããŒã«å¯ŸããŠå€ãŸãã¯Noneãååšãããã©ãããåžžã«è¿ãå¿
èŠãããããã®ãããªãã§ãã¯ã¯ããã¯ãNone以å€ã®å€ã«èšå®ããæŽæ°ãšã¢ãããã¯ã§ãªããã°ãªããŸãããããã¯ãããŒéã®åŒ·ãäžè²«æ§ããã匱ãç¹æ§ã§ãããã¹ã±ãŒãªã³ã°ã®ããã«ã¹ãã¢ãå¹ççã«ã·ã£ãŒãã£ã³ã°ããããšãå¯èœã«ããŸããä»ã®ã¹ãã¢ã¯ãå®å
šæ§ã«åœ±é¿ãäžããããšãªããæçµçã«äžè²«æ§ãä¿ã€ããšãã§ããŸãã ïŒ.ïŒãæš©éããŒã¹æäœ
ãã©ã³ã¶ã¯ã·ã§ã³ã®åŠç
ããã©ã³ã¶ã¯ã·ã§ã³ãåä¿¡ãããšãTxan æš©éã¯ããã€ãã®ãã§ãã¯ãå®è¡ããŸãã (1) epoch(Tx)ãçŸåšã®ãšããã¯ã§ããããšã確èªããŸãã (2) ãã¹ãŠã®ãªããžã§ã¯ãåç
§å
¥å(Tx)ãšæ¯æã(Tx)ã®ã¬ã¹ãªããžã§ã¯ãåç
§ãObjå
ã«ååšããããšã確èªãããããã[Obj]ã«ããŒãããŸããææãªããžã§ã¯ãã®å Žåã¯ãæ£ç¢ºãªåç
§ãå¯èœã§ããã¹ãã§ãèªã¿åãå°çšãŸãã¯å
±æãªããžã§ã¯ãã®å Žåã¯ããªããžã§ã¯ãID ãååšããªããã°ãªããŸããã (3)ååŒå®è¡ã®ã³ã¹ããã«ããŒããããã«ãååãªã¬ã¹ãã¬ã¹ãªããžã§ã¯ãã§å©çšå¯èœã§ããããšã確èªããŸãã (4) valid(Tx, [Obj])ã true ã§ããããšããã§ãã¯ããŸãããã®ã¹ãããã§ã¯ããã©ã³ã¶ã¯ã·ã§ã³ã®èªèšŒæ
å ±ã ã®èªèšŒæ
å ±ãææãããªããžã§ã¯ãã«ã¢ã¯ã»ã¹ã§ããããšã確èªããŸãã (5ïŒææãããã¹ãŠã®inputsïŒTxïŒãªããžã§ã¯ãã® Lockð£ [ObjRef] ãååšãããããNoneãåãTxã«èšå®ãããTxSignã«ã¢ãããã¯ã«èšå®ãããŠããããšããã§ãã¯ããŸã(ãããããããã¯ãã§ãã¯ããšåŒã³ãŸãïŒã ããããã®ãã§ãã¯ã«å€±æããå ŽåãåŠçã¯çµäºãããšã©ãŒãè¿ãããŸããããããLockyã®éšåæŽæ°ã¯å®å
šã«åç¶ããŸã(ãã ããæã
ã®çŸåšã®å®è£
ã§ã¯éšåæŽæ°ã§ã¯ãªãããã¹ãŠã®ããã¯ã®ååæŽæ°ãè¡ããŸã)ã ãã¹ãŠã®ãã§ãã¯ãæåããå Žåãæš©åšã¯ãã©ã³ã¶ã¯ã·ã§ã³ã®çœ²åãã€ãŸãéšåèšŒææž TxSign ãè¿ããŸããæ³šæã®åŠçã¯æåãããšã¹ãçã§ãããéšåèšŒææž(TxSign)ããŸãã¯å®å
šãªèšŒææž(TxCert)ãå©çšå¯èœã§ããã°ããããè¿ããŸãã ãããã®åœäºè
ãããšããã¯eã®å®è¶³æ°ã圢æããäžé£ã®åœå±ã«ã€ããŠããã©ã³ã¶ã¯ã·ã§ã³ãšçœ²å ïŒTxSignïŒãç
§åãããã©ã³ã¶ã¯ã·ã§ã³èšŒææž TxCert ã圢æããããšãã§ããŸãã
èšŒææžãåŠçãã
ãèšŒææžãåãåããšãåœå±ã¯ãããã¯ã«é¢é£ãããã®(ãããããããã¯ãã§ãã¯ã)ãé€ãããã©ã³ã¶ã¯ã·ã§ã³ã®ãã¹ãŠã®æå¹æ¡ä»¶ããã§ãã¯ããŸãã代ããã«ä»¥äžã®ãã§ãã¯ãè¡ãïŒinputs(Tx)ã®åææå
¥åãªããžã§ã¯ãã«ã€ããŠãããã¯ãååšããããšãããã³ãããNoneã§ããããä»»æã®TxSignã«èšå®ãããŠãããããŸãã¯çŸåšã®èšŒææžãšåããã©ã³ã¶ã¯ã·ã§ã³ã®èšŒææžã«èšå®ãããŠãããããã§ãã¯ããŸãããã®ä¿®æ£ãããããã¯ã®ãã§ãã¯ã倱æããå ŽåïŒåœå±ã¯å埩äžå¯èœãªByzantineéå®³ãæ€åºãïŒéåžžã®éçšã忢ãïŒçœå®³åŸ©æ§ããã»ã¹ãéå§ããŸããå
±æãªããžã§ã¯ãïŒ4.4é
åç
§ïŒã«ã€ããŠã¯ãåœå±ã¯ã䜿çšããå
±æãªããžã§ã¯ãã®ããŒãžã§ã³ã決å®ããããã«ãèšŒææžãã³ã³ã»ã³ãµã¹ã§ã·ãŒã±ã³ã¹ãããããšã«ãã£ãŠããã¯ãèšå®ãããããšã確èªããŸãããããããªãããã©ã³ã¶ã¯ã·ã§ã³ã¯å®è¡ããããããããŸãããããã§ãªãå Žåã¯ããŸããã®ãããªé åºä»ããåŸ
ã€å¿
èŠããããŸãã ãã§ãã¯ã«æåããå Žåãåœå±ã¯èšŒææžãããã®å®è¡ã®çµæãããããã广ãšãšãã«ãèšŒææžãããã«è¿œå ããŸããie. Ctð£ [TxDigest] â (TxCert, EffSign); ããã¯ãèšŒææžã«èšå®ãããŠããªãææããå
šãŠã®å
¥åãªããžã§ã¯ãã®èšŒææž Lockð£ [ObjRef] â TxCert ãèšé²ããããã«ããã¯ããããæŽæ°ããŠãããInput(Tx) ã®å
šãªããžã§ã¯ãã Objð£ ã«æ¿å
¥ããããšåæã«ãEffSign ã®å
šå¹æã ObjRef ãšå
容ã Objð£ ã«è¿œå ããŠå®äœåãããŸããæåŸã« EffSign ã§äœæãŸãã¯å€ç°ããããã¹ãŠã®ãã®ã«å¯ŸããŠãåæããããæŽæ°ãããTx ã«ããããããŸãã
åè
ããã©ã³ã¶ã¯ã·ã§ã³ãšèšŒææžãåŠçããããžãã¯ã¯ãå€ãã®éèŠãªããããã£ãå°ããŸãã
å æé¢ä¿ãšäžŠåæ§
ããã©ã³ã¶ã¯ã·ã§ã³ãšèšŒææžã®äž¡æ¹ã®åŠçæ¡ä»¶ã¯å æé¢ä¿ã®ããå®è¡ãä¿èšŒããŸããåœå±ã¯ããã©ã³ã¶ã¯ã·ã§ã³ãäŸåãããªããžã§ã¯ããäœæãããã¹ãŠã®èšŒææžïŒææãå
±æãèªã¿åãå°çšïŒãåŠçããå Žåã«ã®ã¿ããã©ã³ã¶ã¯ã·ã§ã³ã«çœ²åããããšã§ãæç¥šãããŸããåæ§ã«ãæš©åšã¯ããããäŸåãããã¹ãŠã®å
¥åãªããžã§ã¯ãããã®ããŒã«ã«ãªããžã§ã¯ããããã«ååšããå Žåã«ã®ã¿ãèšŒææžãåŠçããŸããããã¯å æé¢ä¿ã®ããå®è¡é åºã課ãããäºãã«å æé¢ä¿ã®ãªããã©ã³ã¶ã¯ã·ã§ã³ãç°ãªãã³ã¢ããã·ã³ã§äžŠåã«å®è¡ããããšãå¯èœã«ããŸãã
眲åã¯äžåºŠã ãããããŠå®å
š
ãLockð£ [·] å
ã®ãã¹ãŠã®ææããå
¥åãªããžã§ã¯ãã®ããã¯ã¯ãããã䜿ã£ãŠãã§ãã¯ããã¹ããæåã®ãã©ã³ã¶ã¯ã·ã§ã³Txã«èšå®ãããæ¬¡ã«ãã®ãªããžã§ã¯ããå
¥åãšããŠäœ¿ã£ãæåã®èšŒææžã«èšå®ãããŸããããããã®ãã©ã³ã¶ã¯ã·ã§ã³ã«å¯Ÿãããªããžã§ã¯ãã®ããã¯ãšåŒã³ã1ã€ã®ãšããã¯å
ã§ããã¯ãè§£é€ãããããšã¯ãããŸããããã®çµæãæš©åšã¯ããã¯ããšã«1ã€ã®ãã©ã³ã¶ã¯ã·ã§ã³ã«ãã眲åããªããããã¯äžè²«æ§ã®ãããããŒããã£ã¹ãã®å¿
é èŠçŽ ã§ããããããã£ãŠSuiã®å®å
šæ§ã§ãã
çœå®³åŸ©æ§
ãåãããã¯ã«å¯ŸããŠ2ã€ã®ççŸããèšŒææžãæ€åºããæš©åšã¯ãå埩äžå¯èœãªByzantineè¡åã®èšŒæãããªãã¡ã¯ã©ãŒã©ã ã®æ£çŽãªæš©åšã®ä»®å®ãæç«ããªãããšã®èšŒæãæã¡ãŸãããã®ççŸãã2ã€ã®èšŒææžã¯è©æ¬ºã®èšŒæã§ããããã¹ãŠã®æš©åšãšã¬ããªã«ã«å
±æãããçœå®³åŸ©æ§ããã»ã¹ãèµ·åãããããšãã§ããŸããæš©åšã¯ãŸããèšŒææžã®äžæ£ãªå®è¡ã衚ããšãã§ã¯ãïŒEffSignïŒã«å¯Ÿãã1/3以äžã®çœ²åã®ãããªãå埩äžå¯èœãªByzantineè¡åã®èšŒæãä»ã®åœ¢ã§åŸãããšãã§ããŸãããããã¯ã以åã«åŠçãããèšŒææžã®æ£ããåºåã衚ããªãå
¥åãªããžã§ã¯ããæã€èšŒææžã§ãããããã¯ãŸããäžæ£è¡çºã®èšŒæãšããŠããã±ãŒãžåããããã¹ãŠã®åœå±åã³ã¬ããªã«ãšå
±æããããšãã§ããŸãããããã¯ã蚱容ã§ããå°æ°æŽŸã®åœå±ïŒåºè³æ¯ç1/3æªæºïŒãŸãã¯ãªããžã§ã¯ãã®ææè
ïŒä»»æã®æ°ïŒãByzantineãŸãã¯è¡¡å¹³æ³ã§ãããšãã蚌æãšã¯ç°ãªããã®ã§ããããµãŒãã¹ã®äžæãªãã«èš±å®¹ããããã®ã§ããããšã«æ³šæããŠãã ããã
æçµçãªãã®
ãåœå±ã¯ãn Lockð£ ãCtð£ãããã³Objð£ãSyncð£ ã®ã€ã³ããã¯ã¹ã«å¯Ÿããèªã¿åãèŠæ±ã«å¯ŸããŠãèšŒææž(TxCert)ãšçœ²åæžã¿å¹æ(EffSign)ãè¿ããŸãããã©ã³ã¶ã¯ã·ã§ã³ã¯ãCtyã¹ãã¢ã«å«ãŸããTxãå ±åããæ©é¢ã®æ°ãäžå®ä»¥äžã§ããã°ãæçµçãªãã®ãšã¿ãªãããŸããããã¯ããšãã§ã¯ãèšŒææžïŒEffCertïŒãæçµæ§ã®è²æž¡å¯èœãªèšŒæãšãªãããšãæå³ããŸãããã ãããããªããžã§ã¯ãã䜿çšããèšŒææžã¯ããã®å æé¢ä¿ã®ããçµè·¯ã«ãããã¹ãŠã®åŸå±èšŒææžãæçµçãªãã®ã§ããããšã蚌æãããã®ã§ããããŸããèšŒææžãä»»æã®åœäºè
ã«æäŸãããã®åœäºè
ã¯ãããåŠçã®ããã«è¶
倿°ã®åœå±ã«æåºããããšãã§ããèšŒææžã®å¹æã®æçµæ§ãä¿èšŒããŸããæçµæ§ã¯ãåæ§ææã®å®å
šæ§ã確ä¿ããããã«ãfastpay ãããé
ãããšã«æ³šæããŠãã ãããããããæš©åšã¯ã³ããããåŸ
ã€ã®ã§ã¯ãªããèšŒææžãèŠãæç¹ã§ãã©ã³ã¶ã¯ã·ã§ã³ã®å¹æãé©çšããããšãã§ããŸãã ïŒ.ïŒãææè
ãèªå¯ãããã³å
±æãªããžã§ã¯ã ãã©ã³ã¶ã¯ã·ã§ã³ã®æå¹æ§ïŒ4.3é
åç
§ïŒã¯ããã©ã³ã¶ã¯ã·ã§ã³ãæå®ããããã¹ãŠã®å
¥å ãªããžã§ã¯ãããã©ã³ã¶ã¯ã·ã§ã³ã«å«ããããšãèªå¯ãããŠããããšãä¿èšŒããŸãããã®ãã§ãã¯ã¯ãææè
ãã£ãŒã«ããšåæ§ã«ããªããžã§ã¯ãã®æ§è³ªã«äŸåããŸãã èªã¿åãå°çšã®ãªããžã§ã¯ãã¯ãå€ç°ãåé€ãã§ããããã©ã³ã¶ã¯ã·ã§ã³ã§åæã«ããã¹ãŠã®ãŠãŒã¶ãŒã䜿çšããããšãã§ããŸããäŸãã°ãMoveã¢ãžã¥ãŒã«ã¯èªã¿åãå°çšã§ãããã®ãããªãªããžã§ã¯ãã¯ãã¹ããŒãã³ã³ãã©ã¯ãã®äžéšãšããŠäœ¿çšããããããããªãææè
ãæã€ããããã¯ãããã䜿çšããããã®æš©éã«åœ±é¿ããªãããããã¯ãããããã©ã³ã¶ã¯ã·ã§ã³ã«å«ãŸããããšãã§ããŸãã ææãããªããžã§ã¯ãã¯ãowner ãã£ãŒã«ããæã¡ãŸããææè
ã«ã¯ãå
¬ééµã衚ãã¢ãã¬ã¹ãèšå®ããããšãã§ããŸãããã®å Žåããã©ã³ã¶ã¯ã·ã§ã³ã¯ããã®ã¢ãã¬ã¹ã«ãã£ãŠçœ²åãããŠããã°ããã®ãªããžã§ã¯ãã䜿çšãããããå€ç°ãããããšãèš±å¯ãããŸãããã©ã³ã¶ã¯ã·ã§ã³ã¯1ã€ã®ã¢ãã¬ã¹ã«ãã£ãŠçœ²åããããããã£ãŠãã®ã¢ãã¬ã¹ãææãã1ã€ä»¥äžã®ãªããžã§ã¯ãã䜿çšããããšãã§ããŸãããããã1ã€ã®ãã©ã³ã¶ã¯ã·ã§ã³ã¯ãè€æ°ã®ã¢ãã¬ã¹ã«ãã£ãŠææããããªããžã§ã¯ãã䜿çšããããšã¯ã§ããŸãããåãªããžã§ã¯ããšåŒã°ãããªããžã§ã¯ãã®ãªãŒããŒã¯ã芪ãªããžã§ã¯ããšåŒã°ããå¥ã®ãªããžã§ã¯ãã®ObjIDã«èšå®ããããšãã§ããŸãããã®å Žåã芪ãªããžã§ã¯ãããã©ã³ã¶ã¯ã·ã§ã³ã«å«ãŸãããã©ã³ã¶ã¯ã·ã§ã³ããã®ãªããžã§ã¯ãã®äœ¿çšãèš±å¯ãããŠããå Žåã«ã®ã¿ãåãªããžã§ã¯ãã䜿çšããããšãã§ããŸãããã®æ©èœã¯ãã³ã³ãã©ã¯ããå¹ççãªã³ã¬ã¯ã·ã§ã³ãä»ã®è€éãªããŒã¿æ§é ãæ§ç¯ããããã«äœ¿çšããããšãã§ããŸãã å
±æãªããžã§ã¯ãã¯ã倿Žå¯èœã§ãããç¹å®ã®ææè
ãæã¡ãŸããããã®ä»£ããã«ãç°ãªãåœäºè
ã«ãããã©ã³ã¶ã¯ã·ã§ã³ã«å«ãŸããããšãã§ãããããªãæ¿èªãå¿
èŠãšããŸããããã®ä»£ããã圌ãèªèº«ã®èªèšŒããžãã¯ãå®è¡ããŸãããã®ãããªãªããžã§ã¯ãã¯ãå®å
šæ§ãšæŽ»æ§ã確ä¿ããªããè€æ°ã®æžã蟌ã¿è
ããµããŒãããªããã°ãªããªããããå®å
šã«äœ¿çšããããã«å®å
šãªåæãããã³ã«ãå¿
èŠãšããŸãããããã£ãŠãå®è¡åã«è¿œå ã®ããžãã¯ãå¿
èŠãšãããåœå±ã¯ã4.3ç¯ã«èŠå®ãããããã«ãã©ã³ã¶ã¯ã·ã§ã³ãåŠçããŸãã4.3ç¯ã«èŠå®ããããã©ã³ã¶ã¯ã·ã§ã³ããææãªããžã§ã¯ããšèªã¿åãå°çšãªããžã§ã¯ãã®ããã«åŠçããããã¯ã管çããŸããããããåœå±ã¯ãå
±æãªããžã§ã¯ãã®ããã¯ã管çããããã«ãäžè²«æ§ã®ãããããŒããã£ã¹ãã«äŸåããŸããããã®ä»£ãããå
±æãªããžã§ã¯ããå«ããã©ã³ã¶ã¯ã·ã§ã³ã®äœæè
ã¯ããã®ãã©ã³ã¶ã¯ ã·ã§ã³ã«é¢ããèšŒææžããäŸãã° [George Danezis, Eleftherios Kokoris-Kogias, Alberto Sonnino, and Alexander Spiegelman. 2021. Narwhal and Tusk: A DAG-based Mempool and Efficient BFT Consensus. CoRR abs/2105.11827 (2021)] ã®ãããªé«ã¹ã«ãŒãããã®ã³ã³ã»ã³ãµã¹ã·ã¹ãã ã«æ¿å
¥ããŸãããã¹ãŠã®æš©åšã¯ãã®ãããªèšŒææžã®äžè²«ããã·ãŒã±ã³ã¹ã芳å¯ãããã®ã·ãŒã±ã³ã¹ã«åŸã£ãŠåãã©ã³ã¶ã¯ã·ã§ã³ã§äœ¿çšãããå
±æãªããžã§ã¯ãã®ããŒãžã§ã³ãå²ãåœãŠãŸãããã®åŸãå®è¡ãé²ããããšãã§ãããã¹ãŠã®æ©é¢ã«ããã£ãŠäžè²«ããŠããããšãä¿èšŒãããŸããåœå±ã¯ããã©ã³ã¶ã¯ã·ã§ã³ã®å®è¡ã«äœ¿çšãããå
±æãªããžã§ã¯ãã®ããŒãžã§ã³ããEffectsèšŒææžå
ã«å«ããŸãã äžèšã®ã«ãŒã«ã«ãããèªã¿åãå°çšããã³ææã®ãªããžã§ã¯ããå«ããã©ã³ã¶ã¯ã·ã§ã³ã®å®è¡ã«ã¯ãäžè²«ãããããŒããã£ã¹ããšåäžã®èšŒææžã®ã¿ãå¿
èŠã§ãããByzantineåæã¯å
±æãªããžã§ã¯ããå«ããã©ã³ã¶ã¯ã·ã§ã³ã«ã®ã¿å¿
èŠã§ããããšãä¿èšŒãããŸãããã®ãããã¹ããŒãã³ã³ãã©ã¯ãã®äœæè
ã¯ãåäžãŠãŒã¶ãŒã®ãªããžã§ã¯ãã«å¯Ÿãã転éããã®ä»ã®æäœãããäœã¬ã€ãã³ã·ãŒã«æé©åããããã«åãšãã®æäœãèšèšã§ããäžæ¹ãè€æ°ã®ãŠãŒã¶ãŒããã¢ã¯ã»ã¹ãããå¿
èŠãããããžãã¯ãå®è£
ããããã«å
±æãªããžã§ã¯ãã䜿çšããæè»æ§ã享åããããšãã§ããã®ã§ãã ïŒ.ïŒãã¯ã©ã€ã¢ã³ã
ãã«ã¯ã©ã€ã¢ã³ããšã¬ããªã«
ãã¬ããªã«ã¯ãã«ã¯ã©ã€ã¢ã³ããšãåŒã°ããæ°ãããã©ã³ã¶ã¯ã·ã§ã³ãæ€èšŒããªãããç£æ»ç®çã®ããã«ã·ã¹ãã ã®æå¹ãªç¶æ
ã®äžè²«ããã³ããŒãç¶æãããŸããã©ã³ã¶ã¯ã·ã§ã³ãæ§ç¯ããããã©ã€ãã¯ã©ã€ã¢ã³ãã¯ãšãªãŒçšã®èªã¿åãã€ã³ãã©ã¹ãã©ã¯ãã£ãå«ããµãŒãã¹ãéå¶ãããããŸãã
ã©ã€ãã¯ã©ã€ã¢ã³ã
ããªããžã§ã¯ãåç
§ãšãã©ã³ã¶ã¯ã·ã§ã³ã®äž¡æ¹ã¯ããã®äœæãŸãã¯å®è¡ã«è³ããã©ã³ã¶ã¯ã·ã§ã³ã®å®å
šãªå æé¢ä¿ã®èªèšŒãå¯èœã«ããæ
å ±ãå«ãã§ããŸããå
·äœçã«ã¯ããªããžã§ã¯ãåç
§ïŒObjRefïŒã«ã¯ããªããžã§ã¯ãã®å®å
šãªç¶æ
ãèªèšŒããObjDigestãå«ãŸããparent(Obj)ãã€ãŸããªããžã§ã¯ããäœæããTxDigestãååŸããæ©èœãå«ãŸããŸããåæ§ã«ãTxDigestã¯ãå
¥åãªããžã§ã¯ãã®ãªããžã§ã¯ãåç
§ãinputs(Tx)ãéããŠæœåºããæ©èœãå«ãããã©ã³ã¶ã¯ã·ã§ã³ãèªèšŒãããã®ã§ãããããã£ãŠããªããžã§ã¯ããšèšŒææžã®ã»ããã¯ãèªå·±èªèšŒå¯èœãª2éšã°ã©ãã圢æããŸããããã«ã广æ§é ã眲åããããã©ã³ã¶ã¯ã·ã§ã³ã®å®è¡çµæãçŽæ¥èšŒæããå¹æèšŒææžã«ç
§åãããããšããããŸãã ãããã®èšåã¯ãå®å
šãªã¬ããªã«ããŒããç¶æããããšãªããSuiã®ç¶æ
ã«å¯ŸããŠé«ãå®å
šæ§ã®èªã¿åããå®è¡ã§ããã©ã€ãã¯ã©ã€ã¢ã³ãããµããŒãããããã«äœ¿çšããããããããªããå
·äœçã«ã¯ãæš©åšããŒããŸãã¯å®å
šããŒãã¯ããã©ã³ã¶ã¯ã·ã§ã³Txã«é¢ããèšŒææžTxCertãšinputs(Tx)ã«å¯Ÿå¿ããå
¥åãªããžã§ã¯ãObjãããªãç°¡æœãªèšŒæ ã®æãæäŸããŠãSuiå
ã§ãã©ã³ã¶ã¯ã·ã§ã³ãè¡ããããããšãã©ã€ãã¯ã©ã€ã¢ã³ãã«çŽåŸãããããšãã§ãããã©ã€ãã¯ã©ã€ã¢ã³ãã¯ãã®åŸããã®èšŒææžãæåºããããæçµæ§ã確ä¿ããããã«åœå±ã®å®è¶³æ°ãŸãã¯ãµã³ãã«ã«ãã£ãŠèŠããããã©ããããã§ãã¯ããããšãã§ããããããã¯ãå®è¡ã®çµæåŸããããªããžã§ã¯ãã䜿çšããŠãã©ã³ã¶ã¯ã·ã§ã³ãäœæãããããæåãããã©ããã芳å¯ããããšãã§ããã ããçŽæ¥çã«ã¯ããããµãŒãã¹ããSuiå
ã®é·ç§»ã®ååšãšæçµæ§ã確信ãããããã«ãã·ã¹ãã å
ã§ãã以äžã®åäœãçžäºäœçšãããããšãªããã¯ã©ã€ã¢ã³ãã«å¹æèšŒææžãæäŸããããšãã§ããŸãããšããã¯å¢çãªã©ã§ã確å®ããèšŒææžã®ãã§ãã¯ãã€ã³ããå©çšã§ããå Žåããã§ãã¯ãã€ã³ãã«èšŒææžãå«ãŸããŠããããšã®èšŒæãšäžç·ã«ãå
¥åãªããžã§ã¯ããšèšŒææžãå«ã蚌æ ã®æããŸããæçµæ§ã®èšŒæãšãªããŸãã åœå±ã¯ã宿çãªãã§ãã¯ãã€ã³ãæ©æ§ã䜿çšããŠã確å®ãããã©ã³ã¶ã¯ã·ã§ã³ã®éåçãªãã§ãã¯ãã€ã³ããäœæãããŸããæéã®çµéãšãšãã«Suiã®ç¶æ
ãäœæããããšãã§ããŸãããã§ãã¯ãã€ã³ãã«å¯Ÿããå®è¶³æ°ã®ã¹ããŒã¯ãæã€èšŒææžã¯ããªããžã§ã¯ããšæŸåºãããã€ãã³ãã®æè¿ã®ç¶æ
ãå¹ççã«æ€èšŒããããã«ãã©ã€ãã¯ã©ã€ã¢ã³ãã«ãã£ãŠäœ¿çšãããããšãã§ããŸãããã§ãã¯ãã€ã³ãæ©æ§ã¯ãšããã¯éã®å§å¡äŒåæ§æã®ããã«å¿
èŠã§ããããé »ç¹ãªãã§ãã¯ãã€ã³ãã¯ã©ã€ãã¯ã©ã€ã¢ã³ãã«ãšã£ãŠæçšã§ããããŸããåœå±ãå
éšããŒã¿æ§é ãå§çž®ããä»ã®åœå±ãšããå¹ççã«ç¶æ
ãåæããããã«äœ¿çšããããšãã§ããŸãã 4.6 ããªããž ã©ã€ãã¯ã©ã€ã¢ã³ããšByzantineåæã§ç®¡çãããå
±æãªããžã§ã¯ãã®ãã€ãã£ããµããŒãã«ãããSuiã¯ä»ã®ãããã¯ãã§ãŒã³ãšã®åæ¹åããªããžããµããŒãããããšãã§ããŸãããã®ãããªããªããžã®ä¿¡é Œåæã¯ãSuiãšä»ã®ãããã¯ãã§ãŒã³ã®ä¿¡é Œåæãåæ ããä»ã®ãããã¯ãã§ãŒã³ãã©ã€ãã¯ã©ã€ã¢ã³ãããµããŒãããå Žåã¯ãä¿¡é Œã§ãããªã©ã¯ã«ãããŒããŠã§ã¢ã«é Œãå¿
èŠã¯ãããŸããã ããªããžã¯ãä»ã®ãããã¯ãã§ãŒã³ã§çºè¡ãããã¢ã»ãããã€ã³ããŒãããŠè¡šçŸããSuiã·ã¹ãã å
ã§ã©ããã¢ã»ãããšããŠäœ¿çšããããã«äœ¿çšãããŸããæçµçã«ã¯ãã©ãããããã¢ã»ãããããã¯è§£é€ããŠããã€ãã£ããããã¯ãã§ãŒã³äžã®ãŠãŒã¶ãŒã«è»¢éããããšãã§ããŸããããªããžã¯ãSuiäžã§çºè¡ãããã¢ã»ãããããã¯ããä»ã®ãããã¯ãã§ãŒã³äžã§ã©ãããããã¢ã»ãããšããŠäœ¿çšããããšãå¯èœã§ããæçµçã«ã¯ãä»ã®ã·ã¹ãã äžã®ã©ããããããªããžã§ã¯ããç Žæ£ããSuiäžã®ãªããžã§ã¯ããæŽæ°ããŠç¶æ
ãæææš©ã®å€æŽãåæ ãããããã¯ãè§£é€ããããšãã§ããŸãã ã©ãããããè³ç£ãæçšã§ããããšãä¿èšŒããããã«ãããªããžãããè³ç£ã®ã»ãã³ãã£ã¯ã¹ã¯ããçšåºŠã®éèŠæ§ãæã£ãŠããŸãããããã¯ãã§ãŒã³éã§ããªããžãããFungibleã¢ã»ããã¯ããããªãããªã©ãã衚çŸãæäŸããããšãã§ããã©ããããããšãã«åå²å¯èœã§è²æž¡å¯èœã§ããããšãå¯èœã«ããŸããNonfungibleã¢ã»ããã¯ãåå²å¯èœã§ã¯ãªããè²æž¡å¯èœãªã ãã§ãããŸããã©ããæã«ç¶æ
ãå¶åŸ¡ãããæ¹æ³ã§å€ç°ãããä»ã®æäœããµããŒãããŠããå Žåããããããªããžããã¯ããŠã©ãããè§£é€ããéã«å®è¡ãããã«ã¹ã¿ã ã¹ããŒãã³ã³ãã©ã¯ãããžãã¯ãå¿
èŠã«ãªãå ŽåããããŸããããªããžã¯Suiã®ãã€ãã£ããªæŠå¿µã§ã¯ãªããMoveã§å®è£
ãããã¹ããŒãã³ã³ãã©ã¯ãã§ãããããSuiã¯æè»ã§ãã¹ããŒãã³ã³ãã©ã¯ãã®äœè
ããã®ãããªçµéšãå®çŸ©ããããšãå¯èœã«ããŸã - ãããã£ãŠãMoveãæäŸããçµã¿åããå¯èœæ§ãšå®å
šæ§ãå©çšããŠæ¡åŒµããããšãã§ããŸãã ïŒ.ïŒãCommitteeã®åæ§æ Committee ð¶ð ãCommittee ð¶ð â² ã«çœ®ãæãããããšãããšããã¯éã§åæ§æãçºçããŸãïŒð â² = ð + 1ïŒãåæ§æã®å®å
šæ§ã¯ããã©ã³ã¶ã¯ã·ã§ã³TxãeãŸãã¯ãã以åã«ã³ããããããå Žåãeã®åŸã«ç«¶åãããã©ã³ã¶ã¯ã·ã§ã³ãã³ãããããããšãã§ããªãããšãä¿èšŒããæå¹æ§ã¯ãTx ã e ãŸãã¯ãã以åã«ã³ããããããå Žåããã㯠e ã®åŸã«ãã³ããããããªããã°ãªããªãããšãä¿èšŒããŸãã ç§ãã¡ã¯ãSuiã¹ããŒãã³ã³ãã©ã¯ãã·ã¹ãã ãå©çšããŠãåæ§æã«å¿
èŠãªå€ãã®äœæ¥ãå®è¡ããŸããSuiã§ã¯ãã·ã¹ãã ã»ã¹ããŒãã³ã³ãã©ã¯ãã«ããããŠãŒã¶ãŒã¯ã¹ããŒã¯ãããã¯ããæš©éåè£ã«å§è²ããããšãã§ããŸãããšããã¯äžãã³ã€ã³ã®ææè
ã¯ãããŒã¯ã³ãããã¯ããããšã§å§ä»»ããããŒã¯ã³ãã¢ã³ããã¯ããããšã§å§ä»»ãè§£é€ãã1ã€ä»¥äžã®åœå±ãžã®å§ä»»ãèªç±ã«å€æŽããããšãã§ããŸãã ãšããã¯eã®å®è¶³æ°ã®ã¹ããŒã¯ããšããã¯ãçµäºããããšã«æç¥šãããšãåœå±ã¯ãã§ãã¯ãã€ã³ãã«ã³ãããããæ¬¡ã®å§å¡äŒã決å®ãããšããã¯ã倿Žããããã«æ
å ±ã亀æããŸãããŸãåœå±ã¯ããšããã¯eã®çµäºã®ããã®èªèšŒããããã§ãã¯ãã€ã³ãã«åæããããã«ãåæãããã³ã«ã®å©ããåããŠãã§ãã¯ãã€ã³ããããã³ã«ãå®è¡ããŸãããã®çµæããããã©ã³ã¶ã¯ã·ã§ã³ãåœå±ã®å®è¶³æ°ã«ãã£ãŠåŠçãããå ŽåããããåŠçããå°ãªããšã1ã€ã®æ£çŽãªåœå±ã¯ããšããã¯çµäºæã®ãã§ãã¯ãã€ã³ãã«ãã®åŠçããããã©ã³ã¶ã¯ã·ã§ã³ãå«ãŸãããã©ã³ã¶ã¯ã·ã§ã³ãšãã®å¹æããšããã¯éã§æ°žç¶ããããšãä¿èšŒãããŸããããã«ããã®ãããªèªå®ãã§ãã¯ãã€ã³ãã¯ããã¹ãŠã®ãã©ã³ã¶ã¯ã·ã§ã³ããšããã¯eã®æ£çŽãªåœå±ã«å©çšå¯èœã§ããããšãä¿èšŒããŠããŸãã ãããŠããšããã¯çµäºæã®ãã§ãã¯ãã€ã³ãã«ãããã¹ããŒã¯å§ä»»ã¯ããšããã¯e + 1ã®ããã®æ°ããæš©åšã®ã»ãããæ±ºå®ããããã«äœ¿çšãããŸããæ§æš©éè
ã®ã¹ããŒã¯ãšæ°æš©éè
ã®ã¹ããŒã¯ã®å®è¶³æ°ã®äž¡æ¹ããæ°ãã Committee ð¶ð â² ãšãæ°ãããšããã¯ã®éå§ç¹ãšãªããã§ãã¯ãã€ã³ãã«çœ²åããŸããäž¡æ¹ã®çœ²åãå©çšå¯èœã«ãªããšãæ°ãããšããã¯ã«å¯Ÿãããã©ã³ã¶ã¯ã·ã§ã³ã®åŠçãéå§ãããå€ãåœå±ã¯ãšããã¯çœ²åéµãåé€ããããšãã§ããŸãã
ãªã«ããªãŒ
ãã¯ã©ã€ã¢ã³ããšã©ãŒãŸãã¯ã¯ã©ã€ã¢ã³ãã¢ã€ã³ãã±ãŒã·ã§ã³ã«ããããããšããã¯å
ã§ææãªããžã§ã¯ãããããã¯ããããããã«é¢ãããã©ã³ã¶ã¯ã·ã§ã³ãèªèšŒïŒãŸãã¯ç¢ºå®ïŒãããªããªãããšãããåŸãŸããäŸãã°ãã¯ã©ã€ã¢ã³ããåãææãªããžã§ã¯ãã®ããŒãžã§ã³ã䜿çšããŠ2ã€ã®ç°ãªããã©ã³ã¶ã¯ã·ã§ã³ã«çœ²åããååã®åœå±ãããããã«çœ²åããŠããå Žåã2ã€ã®èšŒææžã®ãããã«ã眲åã®å®è¶³æ°ãå¿
èŠãšããèšŒææžã圢æããããšãã§ããªãããšã«ãªããŸãããªã«ããªãŒã¯ããšããã¯ã倿Žããããšããã®ãããªãªããžã§ã¯ããåã³ãã©ã³ã¶ã¯ã·ã§ã³ã§äœ¿çšã§ããç¶æ
ã«ãªãããšãä¿èšŒããŸããèšŒææžã圢æãããªãã®ã§ãå
ã®ãªããžã§ã¯ãã¯æ¬¡ã®ãšããã¯ã®éå§æã«æäœå¯èœã§ãããã©ã³ã¶ã¯ã·ã§ã³ã¯ãšããã¯çªå·ãå«ãã®ã§ãå€ãç䟡ãã©ã³ã¶ã¯ã·ã§ã³ã¯ãªããžã§ã¯ããåã³ããã¯ããªãã®ã§ããã®ææè
ã«ããã䜿çšããæ©äŒãäžããããšãã§ããŸãã
å ±é
¬ãšã¯ãªããçµæž
ãSuiã«ã¯ãäŸçµŠéãåºå®ããããã€ãã£ãããŒã¯ã³SUIããããŸããSUIã¯ã¬ã¹ã®æ¯æãã«äœ¿çšããããŸããšããã¯å
ã®åœå±ã®å§ä»»ãããæ ªåŒãšããŠäœ¿çšãããŸãããã®ãšããã¯å
ã®åœå±ã®æç¥šåã¯ããã®å§ä»»ãããã¹ããŒã¯ïŒåºè³æ¯çïŒã®é¢æ°ã§ãããšããã¯ã®çµããã«ã¯ãåŠçããããã¹ãŠã®ãã©ã³ã¶ã¯ã·ã§ã³ãéããŠéããããææ°æããSuiã®éå¶ãžã®è²¢ç®åºŠã«å¿ããŠåœå±ã«åé
ãããæ¬¡ã«åœå±ã¯ææ°æã®äžéšãã圌ãã«ã¹ããŒã¯ãå§ä»»ããã¢ãã¬ã¹ã«å ±é
¬ãšããŠåé
ããŸããSuiã®ããŒã¯ã³ãšã³ããã¯ã¹ã®å®å
šãªèª¬æã¯ãå°çšã®è«æã«å»¶æããŸãã ïŒ.ïŒãæš©éãšã¬ããªã«ã®æŽæ°
ã¯ã©ã€ã¢ã³ãäž»å°å
ãã¯ã©ã€ã¢ã³ãã®é害ãŸãã¯éByzantineèªèšŒæ©é¢ã®é害ã«ãããäžéšã®èªèšŒæ©é¢ã¯ãã¹ãŠã®èšŒææžãåŠçããŠããªãå¯èœæ§ããããŸãããã®çµæããããã®èšŒææžã«ãã£ãŠçæãããæ¬ èœãããªããžã§ã¯ãã«äŸåããå æé¢ä¿ã®ãããã©ã³ã¶ã¯ã·ã§ã³ã¯æåŠãããã§ããããããããã¯ã©ã€ã¢ã³ãã¯åžžã«ãæ£ãããã©ã³ã¶ã¯ã·ã§ã³ãåŠçã§ããæç¹ãŸã§ãèª å®ãªæ©é¢ ãæŽæ°ããããšãã§ããŸããããã¯ãããèªèº«ã®éå»ã®èšŒææžã®ã¹ãã¢ã䜿çšããããéå»ã®èšŒææžã®ãœãŒã¹ãšããŠ1ã€ä»¥äžã®ä»ã®èª å®ãªæš©åšã䜿çšããŠè¡ãããšãã§ããŸãã èšŒææžcãšãcãšãã®å æé¢ä¿ã®å±¥æŽãå«ã ð¶ð¡ð£ ã¹ãã¢ãäžãããããšãã¯ã©ã€ã¢ã³ãã¯æ£çŽãªæš©åš ð£ â² ãcãé©çšããããã€ã³ãã«ã¢ããããŒãããããšãã§ããŸããããã¯ãð£ â² ã®ãªããžã§ã¯ããé©çšããããšãã«cã®ãã¹ãŠã®å
¥åãå«ããããªãð£ â² ã«ãªãèšŒææžã®æå°ã®ã»ãããèŠã€ããããšãå«ã¿ãŸããèšŒææžTxCertãå«ãã¹ãã¢Ctã䜿çšããŠãé
ããŠããæš©åšBãæŽæ°ããããšã¯ã以äžãå«ã¿ãŸãã ã¯ã©ã€ã¢ã³ãã¯ãåæããèšŒææžã®ãªã¹ããä¿æããåæç¶æ
ã§ã¯TxCertã®ã¿ãå«ãããã«èšå®ãããŠããŸãã ã¯ã©ã€ã¢ã³ãã¯ãåæãå¿
èŠãšããæåŸã®TxCertãèæ
®ãããTxCertå
ã®Txãæœåºãããã®ãã¹ãŠã®å
¥åãªããžã§ã¯ããå°åºããŸãïŒInput(Tx)ã䜿çšïŒã åå
¥åãªããžã§ã¯ãã«ã€ããŠãæåŸã«çæãŸãã¯å€ç°ããTxïŒCtuã®Sync, indexã䜿çšïŒãBå
ã«èšŒææžãæã€ãã©ããããã§ãã¯ããããã§ãªããã°ãã®èšŒææžãCtããèªã¿åã£ãŠãåæããèšŒææžã®ãªã¹ãã«è¿œå ããŸãã ãã以äžèšŒææžã远å ã§ããªãå ŽåïŒBããã®å
¥åããªãããïŒãèšŒææžãªã¹ãã¯å æé¢ä¿é ã«ãœãŒããããBã«æåºãããŸãã äžèšã®ã¢ã«ãŽãªãºã ã¯ãæ°ãããã©ã³ã¶ã¯ã·ã§ã³ãæå¹ã«ããããã«ããªããžã§ã¯ããç¹å®ã®ããŒãžã§ã³ã« ã¢ããããŒãããå Žåã«ãé©çšãããŸãããã®å Žåããªããžã§ã¯ãã®ããŒãžã§ã³ãçæããTxã®èšŒææž(n Syncð£ [ObjRef]ã«ãã)ããé
ããŠããæš©åšã«æåºãããŸãããããBäžã§å®è¡ããããšãæ£ããããŒãžã§ã³ã®ãªããžã§ã¯ãã䜿çšã§ããããã«ãªããŸãã ãã®æäœãè¡ãã¯ã©ã€ã¢ã³ãããªã¬ã€ã€ãŒãšåŒã³ãŸããè€æ°ã®ãªã¬ã€ã€ãŒãç¬ç«ããŠåæã«åäœããããšãå¯èœã§ãããããã¯å®å
šæ§ã®ç¹ã§ã¯ä¿¡é Œãããããã®åäœã¯ããŒã¬ã¹ã§ããã¯ã©ã€ã¢ã³ã以å€ã«ããæš©åšã¯ãªã¬ã€ã€ãŒããžãã¯ãå®è¡ããŠäºãã«æŽæ°ãåãããšãã§ããŸãããŸãããµãŒãã¹ãéçšããã¬ããªã«ããªã¬ãŒã€ãšããŠæ©èœããé
ããŠããæš©åšãæŽæ°ããããšãã§ããŸãã
ãã«ã¯
ããªãŒãœãªãã£ã¯ããã©ãã¯ãŒãèšŒææžãåŠçããéã«ãã¢ããããŒããåãåãããã®èšåãæäŸããŸããããã«ãããã¬ããªã«ã¯ãªãŒãœãªãã£ã®ç¶æ
ãææ°ã«ä¿ã€ããšãã§ããŸããããã«ãåœå±ã¯ãçæçã«ã¯ãåŠçãããææ°ã®ãã©ã³ã¶ã¯ã·ã§ã³ãäºãã«æŽæ°ããããã«ããã·ã¥ãã«ãŽã·ãããããã¯ãŒã¯ã䜿çšãããã®æ©èœãå®è¡ããããã®äžç¶è
ã®å¿
èŠæ§ãæžããããšãã§ããŸããé·æçã«ã¯ãé
ããŠããåœå±ã¯ããããã§ãã¯ãã€ã³ããŸã§ã®èšŒææžã®å®å
šãªã»ãããåŠçããããšã確èªããããã«ããšããã¯å¢çãŸãã¯ããé »ç¹ã«ã宿çãªã¹ããŒãã³ãããã¡ã³ãã䜿çšããããšãã§ããŸãã ïŒãã¹ã±ãŒãªã³ã°ãšã¬ã€ãã³ã·ãŒ Suiã·ã¹ãã ã¯ãåœå±ãããå€ãã®ãªãœãŒã¹ãããªãã¡ãã·ã³å
ãŸãã¯è€æ°ã®ãã·ã³ã«ããã£ãŠCPUãã¡ã¢ãªããããã¯ãŒã¯ãã¹ãã¬ãŒãžããã©ã³ã¶ã¯ã·ã§ã³åŠçã«å²ãåœãŠãããšã«ãããã¹ã±ãŒãªã³ã°ããããšãã§ããŸãããªãœãŒã¹ã®å¢å ã¯ãã©ã³ã¶ã¯ã·ã§ã³ã®åŠçèœåã®åäžã«ã€ãªããããããã®ãªãœãŒã¹ãè³ãããã®ææ°æåå
¥ã®å¢å ã«ãã€ãªãããŸãããŸãããªãœãŒã¹ãå¢ããã°ãå¿
èŠãªãªãœãŒã¹ãå©çšå¯èœã«ãªãã®ãåŸ
ããã«ãªãã¬ãŒã·ã§ã³ãå®è¡ããããããã¬ã€ãã³ã·ãŒãäœããªããŸãã
ã¹ã«ãŒããã
ãããå€ãã®ãªãœãŒã¹ãæºç·åœ¢ã«å®¹éãå¢ããããšãä¿èšŒãããããSuiã®èšèšã§ã¯ãããã«ããã¯ãããªãŒãœãªãã£å
ã®ã°ããŒãã«ããã¯ãå¿
èŠãšããåæãã€ã³ããç©æ¥µçã«æžãããŠããŸãããã©ã³ã¶ã¯ã·ã§ã³ã®åŠçã¯ãïŒ1ïŒãã©ã³ã¶ã¯ã·ã§ã³ãç¹å®ã®ããŒãžã§ã³ã§ææãŸãã¯å
±æãªããžã§ã¯ããžã®æä»çã¢ã¯ã»ã¹ãæã€ããšãä¿èšŒããïŒ2ïŒãã®åŸããã©ã³ã¶ã¯ã·ã§ã³ãå®è¡ããŠãã®å¹æãã³ããããããšãã2ã€ã®ãã§ãŒãºã«ãããã«åé¢ãããŠããŸãã ãã§ãŒãºïŒ1ïŒã§ã¯ããã©ã³ã¶ã¯ã·ã§ã³ããªããžã§ã¯ãã®ç²åºŠã§åæ£ããã¯ãååŸããããšãå¿
èŠã§ããææãªããžã§ã¯ãã®å Žåãããã¯ä¿¡é Œã§ãããããŒããã£ã¹ãããªããã£ãã«ãã£ãŠå®è¡ãããæš©éå
ã®ã°ããŒãã«ãªåæãå¿
èŠãšããªããããObjIDã«ãã£ãŠè€æ°ã®ãã·ã³éã§ããã¯ç®¡çãã·ã£ãŒãã£ã³ã°ããããšã§ã¹ã±ãŒãªã³ã°ããããšãã§ããŸããå
±æãªããžã§ã¯ããå«ããã©ã³ã¶ã¯ã·ã§ã³ã§ã¯ãã³ã³ã»ã³ãµã¹ãããã³ã«ãçšããé åºä»ããå¿
èŠã§ããããã¯ããããã®ãã©ã³ã¶ã¯ã·ã§ã³ã«ã°ããŒãã«ãªé åºã課ããããã«ããã¯ãšãªãå¯èœæ§ãç§ããŠããŸããããããæè¿ã®é«ã¹ã«ãŒãããã®ã³ã³ã»ã³ãµã¹ãããã³ã«ã®ãšã³ãžãã¢ãªã³ã°ã®é²æ©ã«ãããã¹ããŒããã·ã³è€è£œã«ãããããã«ããã¯ã¯ã·ãŒã±ã³ã·ã£ã«å®è¡ã§ãããã·ãŒã±ã³ã·ã³ã°ã§ã¯ãªãããšãå®èšŒãããŠããŸããSuiã§ã¯ãã·ãŒã±ã³ã·ã£ã«å®è¡ã§ã¯ãªããå
¥åãããå
±æãªããžã§ã¯ãã®ããŒãžã§ã³ã決å®ããããã«ã®ã¿ãããªãã¡ãªããžã§ã¯ãã®ããŒãžã§ã³çªå·ãã€ã³ã¯ãªã¡ã³ãããããããã©ã³ã¶ã¯ã·ã§ã³ãã€ãžã§ã¹ãã«é¢é£ä»ããããã«ã·ãŒã±ã³ã·ã£ã«å®è¡ã䜿çšãããŸãã ãã§ãŒãºïŒ2ïŒã¯ããã¹ãŠã®å
¥åãªããžã§ã¯ãã®ããŒãžã§ã³ãåœå±ã«ç¥ãã(ãããŠåœå±éã§å®å
šã«åæãã)ãMoveãã©ã³ã¶ã¯ã·ã§ã³ã®å®è¡ãšãã®å¹æã®ã³ãããã䌎ããšãã«è¡ãããŸããå
¥åãªããžã§ã¯ãã®ããŒãžã§ã³ãåããã°ãå®å
šãªäžŠåå®è¡ãå¯èœã§ããè€æ°ã®ã³ã¢ãŸãã¯ç©çãã·ã³äžã®ä»®æ³ãã·ã³ãåãããããŒãžã§ã³ç®¡çãããå
¥åãªããžã§ã¯ããèªã¿ãå®è¡ããçµæã®ãªããžã§ã¯ããã¹ãã¢ããããŸãã¯ã¹ãã¢ã«æžã蟌ã¿ãŸãããªããžã§ã¯ãããã©ã³ã¶ã¯ã·ã§ã³ã®ã¹ãã¢ã«å¯Ÿããäžè²«æ§èŠä»¶ïŒãªãŒããŒããã¯ããã以å€ïŒã¯éåžžã«ç·©ããåæ©é¢å
éšã§ã¹ã±ãŒã©ãã«ãªåæ£ããŒããªã¥ãŒã¹ãã¢ã䜿çšããããšãã§ããŸããå®è¡ã¯å¶çºçã§ãããå®è¡ãæ±ãã³ã³ããŒãã³ãã®ã¯ã©ãã·ã¥ãããŒããŠã§ã¢é害ããã®å埩ã容æã§ãã ãã®çµæãäºãã«å æé¢ä¿ã®ãªããã©ã³ã¶ã¯ã·ã§ã³ã®å®è¡ã䞊è¡ããŠé²ããããšãã§ããŸãããããã£ãŠãã¹ããŒãã³ã³ãã©ã¯ãã®èšèšè
ã¯ããã®äžŠåæ§ãå©çšããããã«ãã³ã³ãã©ã¯ãå
ã®ãªããžã§ã¯ããæäœã®ããŒã¿ã¢ãã«ãèšèšããããšãã§ããŸãã ãã§ãã¯ãã€ã³ããšç¶æ
ã®ã³ãããã¡ã³ãã¯ãæ°ãããã©ã³ã¶ã¯ã·ã§ã³ã®åŠçã劚ããªããããã¯ãªãã£ã«ã«ãªãã©ã³ã¶ã¯ã·ã§ã³åŠçãã¹ããå€ããŠèšç®ãããŸãããããã¯ããã©ã³ã¶ã¯ã·ã§ã³ãå®äºããåã«èšç®ãšåæãå¿
èŠãšããã®ã§ã¯ãªããã³ããããããããŒã¿ã«å¯Ÿããèªã¿åãæäœã䌎ããŸãããããã£ãŠãæ°ãããã©ã³ã¶ã¯ã·ã§ã³ã®åŠçã®ã¬ã€ãã³ã·ãŒãã¹ã«ãŒãããã«åœ±é¿ãäžãããããèªäœãå©çšå¯èœãªãªãœãŒã¹ã«åæ£ãããããšãã§ããŸãã èªã¿åãã¯ãéåžžã«ã¢ã°ã¬ãã·ãã§ã¹ã±ãŒã©ãã«ãªãã£ãã·ã¥ã®æ©æµãåããããšãã§ããŸããèªèšŒå±ã¯ãã©ã€ãã¯ã©ã€ã¢ã³ããèªã¿èŸŒã¿ã«å¿
èŠãšãããã¹ãŠã®ããŒã¿ã«çœ²åããå©çšå¯èœã«ããŸãããããã®ããŒã¿ã¯ãéçããŒã¿ãšããŠåæ£ã¹ãã¢ããæäŸãããå ŽåããããŸããèšŒææžã¯ããã©ã³ã¶ã¯ã·ã§ã³ãšãªããžã§ã¯ãã®å®å
šãªå æé¢ä¿ã®å±¥æŽã«å¯Ÿããä¿¡é Œã®æ ¹æºãšããŠæ©èœããŸããããã«ã¹ããŒãã»ã³ãããã¡ã³ãã«ãããã·ã¹ãã å
šäœããå°ãªããšããšããã¯æ¯ããããã¯ããé »ç¹ã«åŠçããããã¹ãŠã®ã¹ããŒããšãã©ã³ã¶ã¯ã·ã§ã³ã«å¯ŸããŠã宿çã«ã°ããŒãã«ãªä¿¡é Œã®æ ¹ãæã€ããšãã§ããããã«ãªããŸãã
ã¬ã€ãã³ã·ãŒ
ãã¹ããŒãã³ã³ãã©ã¯ãã®èšèšè
ã¯ãå®çŸ©ãããªãã¬ãŒã·ã§ã³ãææãªããžã§ã¯ããšå
±æãªããžã§ã¯ãã®ã©ã¡ããå«ããã«ãã£ãŠãã¬ã€ãã³ã·ãŒãå¶åŸ¡ããæè»æ§ãäžããããŠããŸããææãªããžã§ã¯ãã¯ãå®è¡ãšã³ãããã®åã«ä¿¡é Œã§ãããããŒããã£ã¹ãã«äŸåããæçµçã«å°éããããã«åœå±ã®ã¯ã©ãŒã©ã ãžã®2åã®ã©ãŠã³ãããªãããå¿
èŠãšããŸããäžæ¹ãå
±æãªããžã§ã¯ããå«ãæäœã¯ãèšŒææžãäœæããããã«äžè²«ãããããŒããã£ã¹ããå¿
èŠãšãããã®åŸã³ã³ã»ã³ãµã¹ãããã³ã«å
ã§åŠçããããããã¬ã€ãã³ã·ãå¢å ããŸãïŒ[George Danezis, Eleftherios Kokoris-Kogias, Alberto Sonnino, and Alexander Spiegelman. 2021. Narwhal and Tusk: A DAG-based Mempool and Efficient BFT Consensus. CoRR abs/2105.11827 (2021)]ã®æç¹ã§ã¯ã©ãŒã©ã ãžã®4ïœ8åã®ã©ãŠã³ãããªããïŒã ïŒãªãªãžãã«ã®ãã¯ã€ãããŒããŒã¯ãã¡ã
ããã«èšèŒãããå
容ã¯ããããŸã§ãªãªãžãã«ãæ¥æ¬èªèš³ã«ãããã®ã§ãããç§KeiCryptoã«ãããã®ã§ã¯ãããŸãããèäœæš©ã¯ãªãªãžãã«ã®äœæè
ã®ãã®ã§ãã The content herein is only a Japanese translation of the original and is not by me, KeiCrypto. The copyright belongs to the original author.
25 min read · August 19, 2022
25 min read · August 19, 2022
No activity yet