Step by Step Towards Creating a Safe Smart Contract: Lessons and Insights from a Cryptocurrency Lab View Full Text


Ontology type: schema:Chapter      Open Access: True


Chapter Info

DATE

2016-08-31

AUTHORS

Kevin Delmolino , Mitchell Arnett , Ahmed Kosba , Andrew Miller , Elaine Shi

ABSTRACT

We document our experiences in teaching smart contract programming to undergraduate students at the University of Maryland, the first pedagogical attempt of its kind. Since smart contracts deal directly with the movement of valuable currency units between contractual parties, security of a contract program is of paramount importance.Our lab exposed numerous common pitfalls in designing safe and secure smart contracts. We document several typical classes of mistakes students made, suggest ways to fix/avoid them, and advocate best practices for programming smart contracts. Finally, our pedagogical efforts have also resulted in online open course materials for programming smart contracts, which may be of independent interest to the community. More... »

PAGES

79-94

Identifiers

URI

http://scigraph.springernature.com/pub.10.1007/978-3-662-53357-4_6

DOI

http://dx.doi.org/10.1007/978-3-662-53357-4_6

DIMENSIONS

https://app.dimensions.ai/details/publication/pub.1020600151


Indexing Status Check whether this publication has been indexed by Scopus and Web Of Science using the SN Indexing Status Tool
Incoming Citations Browse incoming citations for this publication using opencitations.net

JSON-LD is the canonical representation for SciGraph data.

TIP: You can open this SciGraph record using an external JSON-LD service: JSON-LD Playground Google SDTT

[
  {
    "@context": "https://springernature.github.io/scigraph/jsonld/sgcontext.json", 
    "about": [
      {
        "id": "http://purl.org/au-research/vocabulary/anzsrc-for/2008/08", 
        "inDefinedTermSet": "http://purl.org/au-research/vocabulary/anzsrc-for/2008/", 
        "name": "Information and Computing Sciences", 
        "type": "DefinedTerm"
      }, 
      {
        "id": "http://purl.org/au-research/vocabulary/anzsrc-for/2008/0803", 
        "inDefinedTermSet": "http://purl.org/au-research/vocabulary/anzsrc-for/2008/", 
        "name": "Computer Software", 
        "type": "DefinedTerm"
      }
    ], 
    "author": [
      {
        "affiliation": {
          "alternateName": "Department of Computer Science, University of Maryland, College Park, College Park, USA", 
          "id": "http://www.grid.ac/institutes/grid.410443.6", 
          "name": [
            "Department of Computer Science, University of Maryland, College Park, College Park, USA"
          ], 
          "type": "Organization"
        }, 
        "familyName": "Delmolino", 
        "givenName": "Kevin", 
        "type": "Person"
      }, 
      {
        "affiliation": {
          "alternateName": "Department of Computer Science, University of Maryland, College Park, College Park, USA", 
          "id": "http://www.grid.ac/institutes/grid.410443.6", 
          "name": [
            "Department of Computer Science, University of Maryland, College Park, College Park, USA"
          ], 
          "type": "Organization"
        }, 
        "familyName": "Arnett", 
        "givenName": "Mitchell", 
        "type": "Person"
      }, 
      {
        "affiliation": {
          "alternateName": "Department of Computer Science, University of Maryland, College Park, College Park, USA", 
          "id": "http://www.grid.ac/institutes/grid.410443.6", 
          "name": [
            "Department of Computer Science, University of Maryland, College Park, College Park, USA"
          ], 
          "type": "Organization"
        }, 
        "familyName": "Kosba", 
        "givenName": "Ahmed", 
        "id": "sg:person.010061613563.24", 
        "sameAs": [
          "https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.010061613563.24"
        ], 
        "type": "Person"
      }, 
      {
        "affiliation": {
          "alternateName": "Initiative for Cryptocurrencies and Contracts (IC3), Department of Computer Science, Cornell University, Ithaca, USA", 
          "id": "http://www.grid.ac/institutes/grid.5386.8", 
          "name": [
            "Department of Computer Science, University of Maryland, College Park, College Park, USA", 
            "Initiative for Cryptocurrencies and Contracts (IC3), Department of Computer Science, Cornell University, Ithaca, USA"
          ], 
          "type": "Organization"
        }, 
        "familyName": "Miller", 
        "givenName": "Andrew", 
        "id": "sg:person.010564637713.41", 
        "sameAs": [
          "https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.010564637713.41"
        ], 
        "type": "Person"
      }, 
      {
        "affiliation": {
          "alternateName": "Initiative for Cryptocurrencies and Contracts (IC3), Department of Computer Science, Cornell University, Ithaca, USA", 
          "id": "http://www.grid.ac/institutes/grid.5386.8", 
          "name": [
            "Initiative for Cryptocurrencies and Contracts (IC3), Department of Computer Science, Cornell University, Ithaca, USA"
          ], 
          "type": "Organization"
        }, 
        "familyName": "Shi", 
        "givenName": "Elaine", 
        "id": "sg:person.014706274717.52", 
        "sameAs": [
          "https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.014706274717.52"
        ], 
        "type": "Person"
      }
    ], 
    "datePublished": "2016-08-31", 
    "datePublishedReg": "2016-08-31", 
    "description": "We document our experiences in teaching smart contract programming to undergraduate students at the University of Maryland, the first pedagogical attempt of its kind. Since smart contracts deal directly with the movement of valuable currency units between contractual parties, security of a contract program is of paramount importance.Our lab exposed numerous common pitfalls in designing safe and secure smart contracts. We document several typical classes of mistakes students made, suggest ways to fix/avoid them, and advocate best practices for programming smart contracts. Finally, our pedagogical efforts have also resulted in online open course materials for programming smart contracts, which may be of independent interest to the community.", 
    "editor": [
      {
        "familyName": "Clark", 
        "givenName": "Jeremy", 
        "type": "Person"
      }, 
      {
        "familyName": "Meiklejohn", 
        "givenName": "Sarah", 
        "type": "Person"
      }, 
      {
        "familyName": "Ryan", 
        "givenName": "Peter Y.A.", 
        "type": "Person"
      }, 
      {
        "familyName": "Wallach", 
        "givenName": "Dan", 
        "type": "Person"
      }, 
      {
        "familyName": "Brenner", 
        "givenName": "Michael", 
        "type": "Person"
      }, 
      {
        "familyName": "Rohloff", 
        "givenName": "Kurt", 
        "type": "Person"
      }
    ], 
    "genre": "chapter", 
    "id": "sg:pub.10.1007/978-3-662-53357-4_6", 
    "inLanguage": "en", 
    "isAccessibleForFree": true, 
    "isPartOf": {
      "isbn": [
        "978-3-662-53356-7", 
        "978-3-662-53357-4"
      ], 
      "name": "Financial Cryptography and Data Security", 
      "type": "Book"
    }, 
    "keywords": [
      "smart contracts", 
      "smart contract programming", 
      "secure smart contracts", 
      "contract programming", 
      "independent interest", 
      "University of Maryland", 
      "typical class", 
      "course material", 
      "mistakes students", 
      "security", 
      "programming", 
      "contract program", 
      "paramount importance", 
      "best practices", 
      "lab", 
      "common pitfalls", 
      "contracts", 
      "step", 
      "kind", 
      "way", 
      "currency unit", 
      "parties", 
      "contractual parties", 
      "class", 
      "efforts", 
      "interest", 
      "program", 
      "pedagogical efforts", 
      "lessons", 
      "experience", 
      "students", 
      "community", 
      "University", 
      "movement", 
      "units", 
      "pitfalls", 
      "practice", 
      "attempt", 
      "insights", 
      "importance", 
      "Maryland", 
      "materials", 
      "pedagogical attempt", 
      "first pedagogical attempt", 
      "valuable currency units", 
      "numerous common pitfalls", 
      "online open course materials", 
      "open course materials", 
      "Safe Smart Contract", 
      "Cryptocurrency Lab"
    ], 
    "name": "Step by Step Towards Creating a Safe Smart Contract: Lessons and Insights from a Cryptocurrency Lab", 
    "pagination": "79-94", 
    "productId": [
      {
        "name": "dimensions_id", 
        "type": "PropertyValue", 
        "value": [
          "pub.1020600151"
        ]
      }, 
      {
        "name": "doi", 
        "type": "PropertyValue", 
        "value": [
          "10.1007/978-3-662-53357-4_6"
        ]
      }
    ], 
    "publisher": {
      "name": "Springer Nature", 
      "type": "Organisation"
    }, 
    "sameAs": [
      "https://doi.org/10.1007/978-3-662-53357-4_6", 
      "https://app.dimensions.ai/details/publication/pub.1020600151"
    ], 
    "sdDataset": "chapters", 
    "sdDatePublished": "2021-11-01T18:58", 
    "sdLicense": "https://scigraph.springernature.com/explorer/license/", 
    "sdPublisher": {
      "name": "Springer Nature - SN SciGraph project", 
      "type": "Organization"
    }, 
    "sdSource": "s3://com-springernature-scigraph/baseset/20211101/entities/gbq_results/chapter/chapter_383.jsonl", 
    "type": "Chapter", 
    "url": "https://doi.org/10.1007/978-3-662-53357-4_6"
  }
]
 

Download the RDF metadata as:  json-ld nt turtle xml License info

HOW TO GET THIS DATA PROGRAMMATICALLY:

JSON-LD is a popular format for linked data which is fully compatible with JSON.

curl -H 'Accept: application/ld+json' 'https://scigraph.springernature.com/pub.10.1007/978-3-662-53357-4_6'

N-Triples is a line-based linked data format ideal for batch operations.

curl -H 'Accept: application/n-triples' 'https://scigraph.springernature.com/pub.10.1007/978-3-662-53357-4_6'

Turtle is a human-readable linked data format.

curl -H 'Accept: text/turtle' 'https://scigraph.springernature.com/pub.10.1007/978-3-662-53357-4_6'

RDF/XML is a standard XML format for linked data.

curl -H 'Accept: application/rdf+xml' 'https://scigraph.springernature.com/pub.10.1007/978-3-662-53357-4_6'


 

This table displays all metadata directly associated to this object as RDF triples.

165 TRIPLES      23 PREDICATES      75 URIs      68 LITERALS      7 BLANK NODES

Subject Predicate Object
1 sg:pub.10.1007/978-3-662-53357-4_6 schema:about anzsrc-for:08
2 anzsrc-for:0803
3 schema:author N1904132db2194c56a2e0bfe7edc05a73
4 schema:datePublished 2016-08-31
5 schema:datePublishedReg 2016-08-31
6 schema:description We document our experiences in teaching smart contract programming to undergraduate students at the University of Maryland, the first pedagogical attempt of its kind. Since smart contracts deal directly with the movement of valuable currency units between contractual parties, security of a contract program is of paramount importance.Our lab exposed numerous common pitfalls in designing safe and secure smart contracts. We document several typical classes of mistakes students made, suggest ways to fix/avoid them, and advocate best practices for programming smart contracts. Finally, our pedagogical efforts have also resulted in online open course materials for programming smart contracts, which may be of independent interest to the community.
7 schema:editor N19da40072bbd489f96623f88657beb68
8 schema:genre chapter
9 schema:inLanguage en
10 schema:isAccessibleForFree true
11 schema:isPartOf N5c598ad725e145389c938d864aa4a41c
12 schema:keywords Cryptocurrency Lab
13 Maryland
14 Safe Smart Contract
15 University
16 University of Maryland
17 attempt
18 best practices
19 class
20 common pitfalls
21 community
22 contract program
23 contract programming
24 contracts
25 contractual parties
26 course material
27 currency unit
28 efforts
29 experience
30 first pedagogical attempt
31 importance
32 independent interest
33 insights
34 interest
35 kind
36 lab
37 lessons
38 materials
39 mistakes students
40 movement
41 numerous common pitfalls
42 online open course materials
43 open course materials
44 paramount importance
45 parties
46 pedagogical attempt
47 pedagogical efforts
48 pitfalls
49 practice
50 program
51 programming
52 secure smart contracts
53 security
54 smart contract programming
55 smart contracts
56 step
57 students
58 typical class
59 units
60 valuable currency units
61 way
62 schema:name Step by Step Towards Creating a Safe Smart Contract: Lessons and Insights from a Cryptocurrency Lab
63 schema:pagination 79-94
64 schema:productId N49f76bdcba9a475c9171afc7cf6352bd
65 N4a8d46a1d8f64ce19dd4193e0ce98607
66 schema:publisher N26a326669ed34529a4b2eb9eb396d577
67 schema:sameAs https://app.dimensions.ai/details/publication/pub.1020600151
68 https://doi.org/10.1007/978-3-662-53357-4_6
69 schema:sdDatePublished 2021-11-01T18:58
70 schema:sdLicense https://scigraph.springernature.com/explorer/license/
71 schema:sdPublisher Ndab741fced5a463789c260f99ec2779b
72 schema:url https://doi.org/10.1007/978-3-662-53357-4_6
73 sgo:license sg:explorer/license/
74 sgo:sdDataset chapters
75 rdf:type schema:Chapter
76 N1904132db2194c56a2e0bfe7edc05a73 rdf:first N23b5e3373148499aa5a3b42c138c9a48
77 rdf:rest N3c41a608fa7440ef997de90a4af37137
78 N197f4c94da9d4e7d8c0f3c4cb0868518 schema:familyName Clark
79 schema:givenName Jeremy
80 rdf:type schema:Person
81 N19da40072bbd489f96623f88657beb68 rdf:first N197f4c94da9d4e7d8c0f3c4cb0868518
82 rdf:rest N9421ddab53ae415dba6949af37806283
83 N2136bab91143471696d54d4d9b9f4e52 schema:familyName Meiklejohn
84 schema:givenName Sarah
85 rdf:type schema:Person
86 N23b5e3373148499aa5a3b42c138c9a48 schema:affiliation grid-institutes:grid.410443.6
87 schema:familyName Delmolino
88 schema:givenName Kevin
89 rdf:type schema:Person
90 N26a326669ed34529a4b2eb9eb396d577 schema:name Springer Nature
91 rdf:type schema:Organisation
92 N28c78ddd88ae49a39a83eebf12152da6 rdf:first Na2b8d98224fa4ff5946a4679f0f7d844
93 rdf:rest N8cf2b9f54d9b4f15b06aea18fbe7a007
94 N2d11f8b6c9394edca05d8fdbdf9a95cb rdf:first Nee49963b81a04ab7ae7b24097939374f
95 rdf:rest N5c660a182d1d4f72999445ce29218c7b
96 N3c41a608fa7440ef997de90a4af37137 rdf:first N8b97478530b5435786208e52e2d901f0
97 rdf:rest N93b9cca646044e35bed5432bc279a39e
98 N49f76bdcba9a475c9171afc7cf6352bd schema:name dimensions_id
99 schema:value pub.1020600151
100 rdf:type schema:PropertyValue
101 N4a8d46a1d8f64ce19dd4193e0ce98607 schema:name doi
102 schema:value 10.1007/978-3-662-53357-4_6
103 rdf:type schema:PropertyValue
104 N5c598ad725e145389c938d864aa4a41c schema:isbn 978-3-662-53356-7
105 978-3-662-53357-4
106 schema:name Financial Cryptography and Data Security
107 rdf:type schema:Book
108 N5c660a182d1d4f72999445ce29218c7b rdf:first Na1e457e28e114f01873cc417ef09850b
109 rdf:rest rdf:nil
110 N69043b6e52994531b136dd2884a5006c rdf:first sg:person.014706274717.52
111 rdf:rest rdf:nil
112 N8b97478530b5435786208e52e2d901f0 schema:affiliation grid-institutes:grid.410443.6
113 schema:familyName Arnett
114 schema:givenName Mitchell
115 rdf:type schema:Person
116 N8cf2b9f54d9b4f15b06aea18fbe7a007 rdf:first Nc59edc164b7946f7b1dddc0da87d815f
117 rdf:rest N2d11f8b6c9394edca05d8fdbdf9a95cb
118 N93b9cca646044e35bed5432bc279a39e rdf:first sg:person.010061613563.24
119 rdf:rest Neba8bf2ea794483e879e2f0f177b1488
120 N9421ddab53ae415dba6949af37806283 rdf:first N2136bab91143471696d54d4d9b9f4e52
121 rdf:rest N28c78ddd88ae49a39a83eebf12152da6
122 Na1e457e28e114f01873cc417ef09850b schema:familyName Rohloff
123 schema:givenName Kurt
124 rdf:type schema:Person
125 Na2b8d98224fa4ff5946a4679f0f7d844 schema:familyName Ryan
126 schema:givenName Peter Y.A.
127 rdf:type schema:Person
128 Nc59edc164b7946f7b1dddc0da87d815f schema:familyName Wallach
129 schema:givenName Dan
130 rdf:type schema:Person
131 Ndab741fced5a463789c260f99ec2779b schema:name Springer Nature - SN SciGraph project
132 rdf:type schema:Organization
133 Neba8bf2ea794483e879e2f0f177b1488 rdf:first sg:person.010564637713.41
134 rdf:rest N69043b6e52994531b136dd2884a5006c
135 Nee49963b81a04ab7ae7b24097939374f schema:familyName Brenner
136 schema:givenName Michael
137 rdf:type schema:Person
138 anzsrc-for:08 schema:inDefinedTermSet anzsrc-for:
139 schema:name Information and Computing Sciences
140 rdf:type schema:DefinedTerm
141 anzsrc-for:0803 schema:inDefinedTermSet anzsrc-for:
142 schema:name Computer Software
143 rdf:type schema:DefinedTerm
144 sg:person.010061613563.24 schema:affiliation grid-institutes:grid.410443.6
145 schema:familyName Kosba
146 schema:givenName Ahmed
147 schema:sameAs https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.010061613563.24
148 rdf:type schema:Person
149 sg:person.010564637713.41 schema:affiliation grid-institutes:grid.5386.8
150 schema:familyName Miller
151 schema:givenName Andrew
152 schema:sameAs https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.010564637713.41
153 rdf:type schema:Person
154 sg:person.014706274717.52 schema:affiliation grid-institutes:grid.5386.8
155 schema:familyName Shi
156 schema:givenName Elaine
157 schema:sameAs https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.014706274717.52
158 rdf:type schema:Person
159 grid-institutes:grid.410443.6 schema:alternateName Department of Computer Science, University of Maryland, College Park, College Park, USA
160 schema:name Department of Computer Science, University of Maryland, College Park, College Park, USA
161 rdf:type schema:Organization
162 grid-institutes:grid.5386.8 schema:alternateName Initiative for Cryptocurrencies and Contracts (IC3), Department of Computer Science, Cornell University, Ithaca, USA
163 schema:name Department of Computer Science, University of Maryland, College Park, College Park, USA
164 Initiative for Cryptocurrencies and Contracts (IC3), Department of Computer Science, Cornell University, Ithaca, USA
165 rdf:type schema:Organization
 




Preview window. Press ESC to close (or click here)


...