ECIP-1050 S M A RT C O N T R ACT STAT U S C O D E S πŸ€– πŸ’ž C O M P O S I T I O N A L I T Y , I N T E R O P E R A B I L I T Y , A U T O M AT I O N , M E S S A G I N G , A N D M O R E βš™ ✨

INTRO B R O O K LY N Z E L E N K A , @ e x p e d e

INTRO B R O O K LY N Z E L E N K A , @ e x p e d e β€’ Cofounder/CTO at Fission β€” https://fission.codes

INTRO B R O O K LY N Z E L E N K A , @ e x p e d e β€’ Cofounder/CTO at Fission β€” https://fission.codes β€’ PLT & VM enthusiast

INTRO B R O O K LY N Z E L E N K A , @ e x p e d e β€’ Cofounder/CTO at Fission β€” https://fission.codes β€’ PLT & VM enthusiast β€’ Prev. ETH Core Dev, now visiting from IPFS-land πŸš€

INTRO B R O O K LY N Z E L E N K A , @ e x p e d e β€’ Cofounder/CTO at Fission β€” https://fission.codes β€’ PLT & VM enthusiast β€’ Prev. ETH Core Dev, now visiting from IPFS-land πŸš€ β€’ EIPs β€’ 615: EVM Subroutines & Static Jumps β€’ 902: Token Permissions / Validation β€’ 1066: Standardized Status Codes β€’ 1444: Permissionless On-Chain Translation

INTRO B R O O K LY N Z E L E N K A , @ e x p e d e β€’ Cofounder/CTO at Fission β€” https://fission.codes β€’ PLT & VM enthusiast β€’ Prev. ETH Core Dev, now visiting from IPFS-land πŸš€ β€’ EIPs β€’ 615: EVM Subroutines & Static Jumps β€’ 902: Token Permissions / Validation β€’ 1066: Standardized Status Codes β€’ 1444: Permissionless On-Chain Translation β€’ ECIP 1050

INTRO B I G , H A I RY, AU D A C I O U S G O A L

INTRO B I G , H A I RY, AU D A C I O U S G O A L β€’ Write less code πŸ•‘

INTRO B I G , H A I RY, AU D A C I O U S G O A L β€’ Write less code πŸ•‘ β€’ Have higher confidence πŸ‘Œ

INTRO B I G , H A I RY, AU D A C I O U S G O A L β€’ Write less code πŸ•‘ β€’ Have higher confidence πŸ‘Œ β€’ Make Ethereum more accessible (

INTRO H T T P β†’ E TC

INTRO H T T P β†’ E TC πŸ–₯ 404 πŸ’»

INTRO H T T P β†’ E TC πŸ–₯ 404 πŸ’» 0xC4

INTRO H T T P β†’ E TC πŸ–₯ 404 πŸ’» 0xC4

INTRO R E AS O N S TO CA R E πŸŒ–

INTRO R E AS O N S TO CA R E πŸŒ– β€’ Dependency for several ERCs β€” notably security tokens β€’ Approved to be a primitive in Vyper 🐍 β€’ Flow automation β€’ Interoperability β€’ Deployed contract reuse (safety!) β€’ Open to extension β€’ Highly portable β€’ Developer & user feedback, incl. (nearly) gas-free localization

STRUCTURED CODES

STRUCTURED CODES SO SIMPLE A MACHINE CAN USE IT πŸ˜‰πŸ€–

STRUCTURED CODES TA S T Y N I B B L E S 🐭

STRUCTURED CODES TA S T Y N I B B L E S 🐭 0x41

STRUCTURED CODES TA S T Y N I B B L E S 🐭 0x41 0100 0001

STRUCTURED CODES TA S T Y N I B B L E S 🐭 0x41 Category 0100 0001

STRUCTURED CODES TA S T Y N I B B L E S 🐭 0x41 Category 0100 0001 Reason

STRUCTURED CODES TA S T Y N I B B L E S 🐭 0x41 Category 0100 0001 Reason

STRUCTURED CODES TA S T Y N I B B L E S 🐭 0x41 Category 0100 0001 Reason

STRUCTURED CODES TA S T Y N I B B L E S 🐭 0x41 Category 0100 0001 Reason 0x0B

STRUCTURED CODES TA S T Y N I B B L E S 🐭 0x41 Category 0100 0001 Reason 0x0B 0000 1011

STRUCTURED CODES TA S T Y N I B B L E S 🐭 0x41 Category 0100 0001 Reason 0x0B 0000 1011 (0x0* General is same as just the reason alone)

STRUCTURED CODES C O D E TA B L E

STRUCTURED CODES C O D E TA B L E 0* 1* 2* 3* 4* 5* 6* 7* 8* 9* A* B* C* D* E* F* 0 1 2 3 4 5 6 7 8 9 A B C D E F

STRUCTURED CODES C O D E TA B L E Category Time Range Auth Agreements Off Chain … 0* 1* 2* 3* 4* 5* 6* 7* 8* 9* A* B* C* D* E* F* 0 1 2 3 4 5 6 7 8 9 A B C D E F

Category STRUCTURED CODES Time C O D E TA B L E Auth Agreements Off Chain … 0* 1* 2* 3* 4* 5* 6* 7* 8* 9* A* B* C* D* E* F* 0 1 Reason 2 3 Fail Ok Accepted/Started Action Required … Range 4 5 6 7 8 9 A B C D E F

Category STRUCTURED CODES Time C O D E TA B L E Range Agreements Off Chain … 0* 1* 2* 3* 4* 5* 6* 7* 8* 9* A* B* C* D* E* F* 0 1 4 5 6 7 8 9 A B C D E F SEARCH / MATCH Reason 2 3 Fail Ok Accepted/Started Action Required … Auth

Category STRUCTURED CODES Time C O D E TA B L E Range Auth Agreements … 0* 1* 2* 3* 4* 5* 6* 7* 8* 9* A* B* C* D* E* F* 0 1 AWA I T I N G 4 5 6 7 8 9 A B C D E F SEARCH / MATCH Reason 2 3 Fail Ok Accepted/Started Action Required … Off Chain

Category STRUCTURED CODES Time C O D E TA B L E Range Auth Agreements … 0* 1* 2* 3* 4* 5* 6* 7* 8* 9* A* B* C* D* E* F* 0 1 AWA I T I N G 4 5 6 7 8 9 A B C D E F SEARCH / MATCH Reason 2 3 Fail Ok Accepted/Started Action Required … Off Chain

Category STRUCTURED CODES Time C O D E TA B L E Auth Agreements Off Chain … 0* 1* 2* 3* 4* 5* 6* 7* 8* 9* A* B* C* D* E* F* 0 1 0x23 Awaiting Match 2 3 AWA I T I N G 4 5 6 7 8 9 A B C D E F SEARCH / MATCH Reason Fail Ok Accepted/Started Action Required … Range

STRUCTURED CODES HELPER LIBRARY πŸ›  npmjs.com/package/fission-codes

STRUCTURED CODES HELPER LIBRARY πŸ›  npmjs.com/package/fission-codes

STRUCTURED CODES HELPER LIBRARY πŸ›  npmjs.com/package/fission-codes Combine (inclusions)

STRUCTURED CODES HELPER LIBRARY πŸ›  npmjs.com/package/fission-codes Combine (inclusions) Pull Apart (projections)

STRUCTURED CODES HELPER LIBRARY πŸ›  npmjs.com/package/fission-codes Combine (inclusions) Pull Apart (projections) Automatic require with (hardcoded) message*

TOY FLOW

TOY FLOW πŸ’ΈπŸ§ΈπŸ’°

TOY FLOW N OT R E A DY Y E T

TOY FLOW N OT R E A DY Y E T πŸ’° πŸ’± πŸ€–

TOY FLOW N OT R E A DY Y E T πŸ’° πŸ’± πŸ€–

TOY FLOW N OT R E A DY Y E T πŸ’° πŸ’± buy(πŸ’°, 10) βœ‰ πŸ€–

TOY FLOW N OT R E A DY Y E T πŸ’° buyFor(πŸ€–, 10) βœ‰ πŸ’± buy(πŸ’°, 10) βœ‰ πŸ€–

TOY FLOW N OT R E A DY Y E T πŸ’° buyFor(πŸ€–, 10) πŸ•šπŸ’± βœ‰ πŸ’± buy(πŸ’°, 10) βœ‰ πŸ€–

TOY FLOW N OT R E A DY Y E T πŸ’° buyFor(πŸ€–, 10) πŸ•šπŸ’± βœ‰ 0x43 I’ll call you back when ready βœ‰ πŸ’± buy(πŸ’°, 10) βœ‰ πŸ€–

TOY FLOW N OT R E A DY Y E T πŸ’° πŸ’± buy(πŸ’°, 10) buyFor(πŸ€–, 10) πŸ•šπŸ’± βœ‰ 0x43 I’ll call you back when ready βœ‰ πŸ•šπŸ’°πŸ€– βœ‰ πŸ€–

TOY FLOW N OT R E A DY Y E T πŸ’° πŸ’± buy(πŸ’°, 10) βœ‰ buyFor(πŸ€–, 10) πŸ•šπŸ’± βœ‰ 0x43 I’ll call you back when ready βœ‰ πŸ•šπŸ’°πŸ€– 0x43 I’ll call you back when ready βœ‰ πŸ€–

TOY FLOW I M PAT I E N C E πŸ’° πŸ•šπŸ’± πŸ’± πŸ•šπŸ’°πŸ€– πŸ€–

TOY FLOW I M PAT I E N C E πŸ’° πŸ•šπŸ’± πŸ’± πŸ€– πŸ•šπŸ’°πŸ€– isDoneYet(πŸ’°) βœ‰

TOY FLOW I M PAT I E N C E πŸ’° πŸ•šπŸ’± πŸ’± πŸ€– πŸ•šπŸ’°πŸ€– isDoneYet(πŸ’°) βœ‰ 0x43 I’ll call you back when ready βœ‰ πŸ’”

TOY FLOW K I C K- O F F πŸ’° πŸ•šπŸ’± πŸ’± πŸ•šπŸ’°πŸ€–πŸ§™ πŸ€–

TOY FLOW K I C K- O F F πŸ’° openForBiz() βœ‰ πŸ•šπŸ’± πŸ’± πŸ•šπŸ’°πŸ€–πŸ§™ πŸ€–

TOY FLOW K I C K- O F F πŸ’° openForBiz() βœ‰ πŸ•šπŸ’± 0x41 Ready! βœ‰ πŸ’± πŸ•šπŸ’°πŸ€–πŸ§™ πŸ€–

TOY FLOW K I C K- O F F πŸ’° openForBiz() βœ‰ πŸ•šπŸ’± 0x41 πŸ’± Ready! βœ‰ buyFor([πŸ€–,πŸ§™], 10) βœ‰ βœ‰βœ‰βœ‰ πŸ•šπŸ’°πŸ€–πŸ§™ πŸ€–

TOY FLOW K I C K- O F F πŸ’° openForBiz() βœ‰ πŸ•šπŸ’± 0x41 πŸ’± Ready! βœ‰ buyFor([πŸ€–,πŸ§™], 10) βœ‰ βœ‰βœ‰βœ‰ (0x31, [πŸ€–,πŸ§™], 10) Agreed & complete βœ‰ πŸ•šπŸ’°πŸ€–πŸ§™ πŸ€–

TOY FLOW K I C K- O F F πŸ’° openForBiz() βœ‰ πŸ•šπŸ’± 0x41 πŸ’± Ready! βœ‰ πŸ€– πŸ•šπŸ’°πŸ€–πŸ§™ buyFor([πŸ€–,πŸ§™], 10) βœ‰ βœ‰βœ‰βœ‰ (0x31, [πŸ€–,πŸ§™], 10) Agreed & complete βœ‰ (0x31, πŸ’°, 10) Agreed & complete βœ‰

TOY FLOW K I C K- O F F πŸ’° openForBiz() βœ‰ πŸ•šπŸ’± 0x41 πŸ’± Ready! βœ‰ πŸ€– πŸ•šπŸ’°πŸ€–πŸ§™ buyFor([πŸ€–,πŸ§™], 10) βœ‰ βœ‰βœ‰βœ‰ (0x31, [πŸ€–,πŸ§™], 10) Agreed & complete βœ‰ (0x31, πŸ’°, 10) Agreed & complete βœ‰ πŸŽ‰πŸ’ βœ‰

M O T I V AT I N G M O R E C O N T E X T

M O T I V AT I N G M O R E C O N T E X T 🐘 G R E AT E R T H A N B O O L E A N S 🐁

M O T I V AT I N G M O R E C O N T E X T To make use of a Boolean, you have to know its provenance so that you can know what it means. πŸ‘ πŸ‘Ž CONOR MCBRIDE [VIA HARPER]

M O T I V AT I N G M O R E C O N T E X T ERC-902

M O T I V AT I N G M O R E C O N T E X T LOW C O N T E X T B O O L E A N S

M O T I V AT I N G M O R E C O N T E X T LOW C O N T E X T B O O L E A N S πŸ’°

M O T I V AT I N G M O R E C O N T E X T LOW C O N T E X T B O O L E A N S πŸ’°

M O T I V AT I N G M O R E C O N T E X T LOW C O N T E X T B O O L E A N S πŸ’° βœ‰ πŸ€”

M O T I V AT I N G M O R E C O N T E X T LOW C O N T E X T B O O L E A N S πŸ’° βœ‰ πŸ€”

M O T I V AT I N G M O R E C O N T E X T LOW C O N T E X T B O O L E A N S βœ‰ πŸ€” πŸ’° βœ‰ πŸ€”

M O T I V AT I N G M O R E C O N T E X T LOW C O N T E X T B O O L E A N S βœ‰ πŸ€” βœ‰ 🚫 πŸ’° βœ‰ πŸ€”

M O T I V AT I N G M O R E C O N T E X T LOW C O N T E X T B O O L E A N S βœ‰ πŸ€” βœ‰ 🚫 πŸ’° βœ‰ πŸ€”

(false, but don’t explode)

M O T I V AT I N G M O R E C O N T E X T LOW C O N T E X T B O O L E A N S βœ‰ πŸ€” βœ‰ 🚫 πŸ’° βœ‰ πŸ€”

(false, but don’t explode) πŸ’‚

M O T I V AT I N G M O R E C O N T E X T LOW C O N T E X T B O O L E A N S βœ‰ πŸ€” βœ‰ 🚫 πŸ’° βœ‰ πŸ€”

βœ‰ πŸ€”

(false, but don’t explode) πŸ’‚

M O T I V AT I N G M O R E C O N T E X T LOW C O N T E X T B O O L E A N S βœ‰ πŸ€” βœ‰ 🚫 πŸ’° βœ‰ πŸ€”

βœ‰ πŸ€” βœ‰ βœ…

(false, but don’t explode) πŸ’‚

M O T I V AT I N G M O R E C O N T E X T LOW C O N T E X T B O O L E A N S βœ‰ πŸ€” βœ‰ 🚫 πŸ’° βœ‰ πŸ€”

βœ‰ πŸ€” βœ‰ βœ…

(false, but don’t explode) πŸ’‚ >

M O T I V AT I N G M O R E C O N T E X T LOW C O N T E X T B O O L E A N S βœ‰ πŸ€” βœ‰ 🚫 πŸ’° βœ‰ πŸ€”

βœ‰ πŸ€” βœ‰ βœ…

(false, but don’t explode) πŸ’‚ βœ‰ πŸ€”

M O T I V AT I N G M O R E C O N T E X T LOW C O N T E X T B O O L E A N S βœ‰ πŸ€” βœ‰ 🚫 πŸ’° βœ‰ πŸ€”

βœ‰ πŸ€” βœ‰ βœ…

(false, but don’t explode) πŸ’‚ βœ‰ πŸ€”

πŸ’‚

M O T I V AT I N G M O R E C O N T E X T LOW C O N T E X T B O O L E A N S βœ‰ πŸ€” βœ‰ 🚫 πŸ’° βœ‰ πŸ€”

βœ‰ πŸ€” βœ‰ βœ…

(false, but don’t explode) πŸ’‚ βœ‰ πŸ€”

βœ‰ πŸ€” πŸ’‚

M O T I V AT I N G M O R E C O N T E X T LOW C O N T E X T B O O L E A N S βœ‰ πŸ€” βœ‰ 🚫 πŸ’° βœ‰ πŸ€”

βœ‰ πŸ€” βœ‰ βœ…

(false, but don’t explode) πŸ’‚ βœ‰ πŸ€”

βœ‰ πŸ€” βœ‰ βœ… πŸ’‚

M O T I V AT I N G M O R E C O N T E X T LOW C O N T E X T B O O L E A N S βœ‰ πŸ€” βœ‰ 🚫 πŸ’° βœ‰ πŸ€”

βœ‰ πŸ€” βœ‰ βœ… βœ‰ πŸ€” βœ‰ βœ…

(false, but don’t explode) πŸ’‚ > βœ‰ πŸ€” βœ‰ βœ… πŸ’‚

M O T I V AT I N G M O R E C O N T E X T LOW C O N T E X T B O O L E A N S βœ‰ πŸ€” βœ‰ 🚫 πŸ’° βœ‰ πŸ€” βœ‰ βœ…

βœ‰ πŸ€” βœ‰ βœ… βœ‰ πŸ€” βœ‰ βœ…

(false, but don’t explode) πŸ’‚ > βœ‰ πŸ€” βœ‰ βœ… πŸ’‚

M O T I V AT I N G M O R E C O N T E X T LOW C O N T E X T B O O L E A N S βœ‰ πŸ€” βœ‰ 🚫 πŸ’° βœ… βœ‰ πŸ€” βœ‰ βœ…

βœ‰ πŸ€” βœ‰ βœ… βœ‰ πŸ€” βœ‰ βœ…

(false, but don’t explode) πŸ’‚ > βœ‰ πŸ€” βœ‰ βœ… πŸ’‚

M O T I V AT I N G M O R E C O N T E X T HIGHER CONTEXT βœ‰ πŸ€” βœ‰ πŸ‘Ά πŸ’° βœ… βœ‰ πŸ€” βœ‰ βœ…

πŸ’‚ βœ‰ πŸ€” βœ‰ πŸ‘Œ

βœ‰ πŸ€” βœ‰ πŸ“ˆ πŸ’‚

M O T I V AT I N G M O R E C O N T E X T HIGHER CONTEXT βœ‰ πŸ€” βœ‰ πŸ‘Ά πŸ’° βœ… βœ‰ πŸ€” βœ‰ βœ…

E πŸ’‚ G βœ‰ πŸ€” βœ‰ πŸ‘Œ F βœ‰ πŸ€” βœ‰ πŸ“ˆ πŸ’‚F

USER FEEDBACK

USER FEEDBACK HπŸ’ŒJ

USER FEEDBACK EVOLUTION OF revert()

USER FEEDBACK EVOLUTION OF revert()

USER FEEDBACK EVOLUTION OF revert()

USER FEEDBACK EVOLUTION OF revert() Spieler β€œBob” existiert nicht Nicht autorisiert, ΓΌberprΓΌfen Sie mit idcheck.net

USER FEEDBACK O N - C H A I N L O C A L I Z AT I O N KπŸ€– Requestor β¬…β¬†β¬‡βž‘ LocalizationPreference V S Q P U T R Localization Localization Localization Localization Localization Localization Localization

USER FEEDBACK S U C C E S S F LOW

USER FEEDBACK S U C C E S S F LOW πŸ’ P

USER FEEDBACK S U C C E S S F LOW πŸ’ P πŸ€–

USER FEEDBACK S U C C E S S F LOW πŸ’ P πŸ€–

USER FEEDBACK S U C C E S S F LOW πŸ’ P tx πŸ€–

USER FEEDBACK S U C C E S S F LOW πŸ’ P tx readOrMutate(…) πŸ€–

USER FEEDBACK S U C C E S S F LOW πŸ’ P tx readOrMutate(…) 0x11 πŸ€–

USER FEEDBACK S U C C E S S F LOW πŸ’ P tx readOrMutate(…) 0x11 β¬…β¬†β¬‡βž‘ πŸ€–

USER FEEDBACK S U C C E S S F LOW πŸ’ P tx readOrMutate(…) 0x11 textFor(0x11) β¬…β¬†β¬‡βž‘ πŸ€–

USER FEEDBACK S U C C E S S F LOW πŸ’ tx P readOrMutate(…) 0x11 tx .o ri g in textFor(0x11) β¬…β¬†β¬‡βž‘ πŸ€–

USER FEEDBACK S U C C E S S F LOW πŸ’ tx P readOrMutate(…) 0x11 tx .o ri g in πŸ€– textFor(0x11) β¬…β¬†β¬‡βž‘ W 0x11 -> β€œPovoleno” P 0x11 -> β€œθ¨±γ™β€ V 0x11 -> β€œAllowed”

USER FEEDBACK S U C C E S S F LOW πŸ’ tx P readOrMutate(…) 0x11 tx .o ri g in πŸ€– textFor(0x11) textFor(0x11) β¬…β¬†β¬‡βž‘ W 0x11 -> β€œPovoleno” P 0x11 -> β€œθ¨±γ™β€ V 0x11 -> β€œAllowed”

USER FEEDBACK S U C C E S S F LOW πŸ’ tx P readOrMutate(…) 0x11 tx .o ri g in πŸ€– textFor(0x11) textFor(0x11) β¬…β¬†β¬‡βž‘ β€œθ¨±γ™β€ W 0x11 -> β€œPovoleno” P 0x11 -> β€œθ¨±γ™β€ V 0x11 -> β€œAllowed”

USER FEEDBACK S U C C E S S F LOW πŸ’ tx P readOrMutate(…) 0x11 tx .o ri g in β€œθ¨±γ™β€ πŸ€– textFor(0x11) textFor(0x11) β¬…β¬†β¬‡βž‘ β€œθ¨±γ™β€ W 0x11 -> β€œPovoleno” P 0x11 -> β€œθ¨±γ™β€ V 0x11 -> β€œAllowed”

USER FEEDBACK S U C C E S S F LOW πŸ’ tx readOrMutate(…) β€œθ¨±γ™β€ 0x11 P tx .o ri g in β€œθ¨±γ™β€ πŸ€– textFor(0x11) textFor(0x11) β¬…β¬†β¬‡βž‘ β€œθ¨±γ™β€ W 0x11 -> β€œPovoleno” P 0x11 -> β€œθ¨±γ™β€ V 0x11 -> β€œAllowed”

USER FEEDBACK S U C C E S S F LOW AuthorizingContract 許す πŸ’ tx readOrMutate(…) β€œθ¨±γ™β€ 0x11 P tx .o ri g in β€œθ¨±γ™β€ πŸ€– textFor(0x11) textFor(0x11) β¬…β¬†β¬‡βž‘ β€œθ¨±γ™β€ W 0x11 -> β€œPovoleno” P 0x11 -> β€œθ¨±γ™β€ V 0x11 -> β€œAllowed”

USER FEEDBACK R E V E RT F LOW

USER FEEDBACK R E V E RT F LOW πŸ’ X

USER FEEDBACK R E V E RT F LOW πŸ’ X

USER FEEDBACK R E V E RT F LOW πŸ’ X πŸ€–

USER FEEDBACK R E V E RT F LOW doTheThing() πŸ€– πŸ’ X

USER FEEDBACK R E V E RT F LOW doTheThing() tx πŸ€– πŸ’ X

USER FEEDBACK R E V E RT F LOW doTheThing() tx πŸ€– revertWith(0x40) πŸ€– πŸ’ X

USER FEEDBACK R E V E RT F LOW doTheThing() πŸ’ X tx πŸ€– β¬…β¬†β¬‡βž‘ revertWith(0x40) πŸ€–

USER FEEDBACK R E V E RT F LOW doTheThing() πŸ’ X tx πŸ€– textFor(0x40) revertWith(0x40) πŸ€– β¬…β¬†β¬‡βž‘

USER FEEDBACK R E V E RT F LOW doTheThing() πŸ’ X tx πŸ€– textFor(0x40) revertWith(0x40) πŸ€– β¬…β¬†β¬‡βž‘ W 0x40 -> β€œProΕ‘lý” X 0x40 -> β€œΰΊ«ΰΊ‘#ດອາຍu” V 0x40 -> β€œExpired”

USER FEEDBACK R E V E RT F LOW doTheThing() tx πŸ€– πŸ’ X tx.origin textFor(0x40) revertWith(0x40) πŸ€– β¬…β¬†β¬‡βž‘ W 0x40 -> β€œProΕ‘lý” X 0x40 -> β€œΰΊ«ΰΊ‘#ດອາຍu” V 0x40 -> β€œExpired”

USER FEEDBACK R E V E RT F LOW doTheThing() tx πŸ€– πŸ’ X tx.origin textFor(0x40) revertWith(0x40) πŸ€– β¬…β¬†β¬‡βž‘ 0x40 W 0x40 -> β€œProΕ‘lý” X 0x40 -> β€œΰΊ«ΰΊ‘#ດອາຍu” V 0x40 -> β€œExpired”

USER FEEDBACK R E V E RT F LOW doTheThing() tx πŸ€– πŸ’ X tx.origin β€œΰΊ«ΰΊ‘#ດອາຍu” textFor(0x40) revertWith(0x40) πŸ€– β¬…β¬†β¬‡βž‘ 0x40 W 0x40 -> β€œProΕ‘lý” X 0x40 -> β€œΰΊ«ΰΊ‘#ດອາຍu” V 0x40 -> β€œExpired”

USER FEEDBACK R E V E RT F LOW doTheThing() tx πŸ€– πŸ’ X tx.origin β€œΰΊ«ΰΊ‘#ດອາຍu” textFor(0x40) revertWith(0x40) πŸ€– β€œΰΊ«ΰΊ‘#ດອາຍu” β¬…β¬†β¬‡βž‘ 0x40 W 0x40 -> β€œProΕ‘lý” X 0x40 -> β€œΰΊ«ΰΊ‘#ດອາຍu” V 0x40 -> β€œExpired”

USER FEEDBACK R E V E RT F LOW doTheThing() tx revert(β€œΰΊ«ΰΊ‘#ດອາຍu”) πŸ€– πŸ’ X tx.origin β€œΰΊ«ΰΊ‘#ດອາຍu” textFor(0x40) revertWith(0x40) πŸ€– β€œΰΊ«ΰΊ‘#ດອາຍu” β¬…β¬†β¬‡βž‘ 0x40 W 0x40 -> β€œProΕ‘lý” X 0x40 -> β€œΰΊ«ΰΊ‘#ດອາຍu” V 0x40 -> β€œExpired”

USER FEEDBACK R E V E RT F LOW doTheThing() πŸ˜­β€œΰΊ«ΰΊ‘#ດອາຍuβ€πŸ˜­ tx revert(β€œΰΊ«ΰΊ‘#ດອາຍu”) πŸ€– πŸ’ X tx.origin β€œΰΊ«ΰΊ‘#ດອາຍu” textFor(0x40) revertWith(0x40) πŸ€– β€œΰΊ«ΰΊ‘#ດອາຍu” β¬…β¬†β¬‡βž‘ 0x40 W 0x40 -> β€œProΕ‘lý” X 0x40 -> β€œΰΊ«ΰΊ‘#ດອາຍu” V 0x40 -> β€œExpired”

USER FEEDBACK R E V E RT F LOW doTheThing() πŸ˜­β€œΰΊ«ΰΊ‘#ດອາຍuβ€πŸ˜­ tx revert(β€œΰΊ«ΰΊ‘#ດອາຍu”) πŸ€– πŸ’ X tx.origin β€œΰΊ«ΰΊ‘#ດອາຍu” textFor(0x40) revertWith(0x40) πŸ€– β€œΰΊ«ΰΊ‘#ດອາຍu” β¬…β¬†β¬‡βž‘ 0x40 W 0x40 -> β€œProΕ‘lý” X 0x40 -> β€œΰΊ«ΰΊ‘#ດອາຍu” V 0x40 -> β€œExpired”

WEB OF CONTRACTS

WEB OF CONTRACTS πŸ•·

WEB OF CONTRACTS A F U T U R E A LO N G S I D E U N I X & H T T P πŸš€

WEB OF CONTRACTS A F U T U R E A LO N G S I D E U N I X & H T T P πŸš€ β€’ What do Unix and HTTP have in common? β€’ ETC is a shared system β€” can we leverage each other’s contacts? β€’ Can high value data & utilities make money on-chain?

WEB OF CONTRACTS ON-CHAIN MICROSERVICES

WEB OF CONTRACTS ON-CHAIN MICROSERVICES dApp ERC902 ACL ERC20 ERC721 Storage DEX ERC1337

WEB OF CONTRACTS ON-CHAIN MICROSERVICES β€’ β€œWeb of contracts” β€’ Leverage shared infrastructure (pluggable) dApp ERC902 ACL ERC20 ERC721 DEX β€’ High quality smart contracts β€’ Efficient, reviewed, security hardened β€’ Compose new protocols β€’ New biz models for high-value service contracts Storage ERC1337

https://fission.codes https://tools.fission.codes πŸŽ‰ THANK YOU, E TC SUMMIT! F brooklyn@fission.codes g i t h u b . c o m /e x p e d e @expede