ECIP 1050: Smart Contract Status Codes

A presentation at Ethereum Classic Summit in October 2019 in Vancouver, BC, Canada by Brooklyn Zelenka

Slide 1

Slide 1

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 βš™ ✨

Slide 2

Slide 2

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

Slide 3

Slide 3

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

Slide 4

Slide 4

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

Slide 5

Slide 5

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 πŸš€

Slide 6

Slide 6

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

Slide 7

Slide 7

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

Slide 8

Slide 8

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

Slide 9

Slide 9

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

Slide 10

Slide 10

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 πŸ‘Œ

Slide 11

Slide 11

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 (

Slide 12

Slide 12

INTRO H T T P β†’ E TC

Slide 13

Slide 13

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

Slide 14

Slide 14

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

Slide 15

Slide 15

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

Slide 16

Slide 16

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

Slide 17

Slide 17

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

Slide 18

Slide 18

STRUCTURED CODES

Slide 19

Slide 19

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

Slide 20

Slide 20

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

Slide 21

Slide 21

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

Slide 22

Slide 22

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

Slide 23

Slide 23

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

Slide 24

Slide 24

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

Slide 25

Slide 25

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

Slide 26

Slide 26

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

Slide 27

Slide 27

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

Slide 28

Slide 28

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

Slide 29

Slide 29

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)

Slide 30

Slide 30

STRUCTURED CODES C O D E TA B L E

Slide 31

Slide 31

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

Slide 32

Slide 32

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

Slide 33

Slide 33

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

Slide 34

Slide 34

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

Slide 35

Slide 35

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

Slide 36

Slide 36

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

Slide 37

Slide 37

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

Slide 38

Slide 38

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

Slide 39

Slide 39

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

Slide 40

Slide 40

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

Slide 41

Slide 41

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

Slide 42

Slide 42

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

Slide 43

Slide 43

TOY FLOW

Slide 44

Slide 44

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

Slide 45

Slide 45

TOY FLOW N OT R E A DY Y E T

Slide 46

Slide 46

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

Slide 47

Slide 47

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

Slide 48

Slide 48

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

Slide 49

Slide 49

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

Slide 50

Slide 50

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

Slide 51

Slide 51

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

Slide 52

Slide 52

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

Slide 53

Slide 53

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 βœ‰ πŸ€–

Slide 54

Slide 54

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

Slide 55

Slide 55

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

Slide 56

Slide 56

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

Slide 57

Slide 57

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

Slide 58

Slide 58

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

Slide 59

Slide 59

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

Slide 60

Slide 60

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

Slide 61

Slide 61

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

Slide 62

Slide 62

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

Slide 63

Slide 63

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

Slide 64

Slide 64

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

Slide 65

Slide 65

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 🐁

Slide 66

Slide 66

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]

Slide 67

Slide 67

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

Slide 68

Slide 68

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

Slide 69

Slide 69

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 πŸ’°

Slide 70

Slide 70

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 πŸ’°

Slide 71

Slide 71

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 πŸ’° βœ‰ πŸ€”

Slide 72

Slide 72

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 πŸ’° βœ‰ πŸ€”

Slide 73

Slide 73

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 βœ‰ πŸ€” πŸ’° βœ‰ πŸ€”

Slide 74

Slide 74

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 βœ‰ πŸ€” βœ‰ 🚫 πŸ’° βœ‰ πŸ€”

Slide 75

Slide 75

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)

Slide 76

Slide 76

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) πŸ’‚

Slide 77

Slide 77

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) πŸ’‚

Slide 78

Slide 78

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) πŸ’‚

Slide 79

Slide 79

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) πŸ’‚ >

Slide 80

Slide 80

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) πŸ’‚ βœ‰ πŸ€”

Slide 81

Slide 81

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) πŸ’‚ βœ‰ πŸ€”

πŸ’‚

Slide 82

Slide 82

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) πŸ’‚ βœ‰ πŸ€”

βœ‰ πŸ€” πŸ’‚

Slide 83

Slide 83

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) πŸ’‚ βœ‰ πŸ€”

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

Slide 84

Slide 84

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) πŸ’‚ > βœ‰ πŸ€” βœ‰ βœ… πŸ’‚

Slide 85

Slide 85

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) πŸ’‚ > βœ‰ πŸ€” βœ‰ βœ… πŸ’‚

Slide 86

Slide 86

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) πŸ’‚ > βœ‰ πŸ€” βœ‰ βœ… πŸ’‚

Slide 87

Slide 87

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

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

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

Slide 88

Slide 88

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

Slide 89

Slide 89

USER FEEDBACK

Slide 90

Slide 90

USER FEEDBACK HπŸ’ŒJ

Slide 91

Slide 91

USER FEEDBACK EVOLUTION OF revert()

Slide 92

Slide 92

USER FEEDBACK EVOLUTION OF revert()

Slide 93

Slide 93

USER FEEDBACK EVOLUTION OF revert()

Slide 94

Slide 94

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

Slide 95

Slide 95

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

Slide 96

Slide 96

USER FEEDBACK S U C C E S S F LOW

Slide 97

Slide 97

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

Slide 98

Slide 98

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

Slide 99

Slide 99

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

Slide 100

Slide 100

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

Slide 101

Slide 101

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

Slide 102

Slide 102

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

Slide 103

Slide 103

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

Slide 104

Slide 104

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

Slide 105

Slide 105

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

Slide 106

Slide 106

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”

Slide 107

Slide 107

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”

Slide 108

Slide 108

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”

Slide 109

Slide 109

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”

Slide 110

Slide 110

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”

Slide 111

Slide 111

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”

Slide 112

Slide 112

USER FEEDBACK R E V E RT F LOW

Slide 113

Slide 113

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

Slide 114

Slide 114

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

Slide 115

Slide 115

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

Slide 116

Slide 116

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

Slide 117

Slide 117

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

Slide 118

Slide 118

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

Slide 119

Slide 119

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

Slide 120

Slide 120

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

Slide 121

Slide 121

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”

Slide 122

Slide 122

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”

Slide 123

Slide 123

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”

Slide 124

Slide 124

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”

Slide 125

Slide 125

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”

Slide 126

Slide 126

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”

Slide 127

Slide 127

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”

Slide 128

Slide 128

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”

Slide 129

Slide 129

WEB OF CONTRACTS

Slide 130

Slide 130

WEB OF CONTRACTS πŸ•·

Slide 131

Slide 131

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 πŸš€

Slide 132

Slide 132

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?

Slide 133

Slide 133

WEB OF CONTRACTS ON-CHAIN MICROSERVICES

Slide 134

Slide 134

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

Slide 135

Slide 135

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

Slide 136

Slide 136

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