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": "2022-01-01T19:25", 
    "sdLicense": "https://scigraph.springernature.com/explorer/license/", 
    "sdPublisher": {
      "name": "Springer Nature - SN SciGraph project", 
      "type": "Organization"
    }, 
    "sdSource": "s3://com-springernature-scigraph/baseset/20220101/entities/gbq_results/chapter/chapter_440.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 Nb0e4b6883777400aa91f8e367da6e887
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 N23f03ac98d6040588e95563e1b707bd9
8 schema:genre chapter
9 schema:inLanguage en
10 schema:isAccessibleForFree true
11 schema:isPartOf N21309a6b601d4f97896f0c7170ff67a4
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 N299f6e11739a4f9899dea8be4669bbc6
65 Nb9793bf30bd24f85bbf0283e562ce8c8
66 schema:publisher Na66638674fc1473aa36d720b44d16af1
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 2022-01-01T19:25
70 schema:sdLicense https://scigraph.springernature.com/explorer/license/
71 schema:sdPublisher N9766cc63a71c46859a5b892987ab09e1
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 N21309a6b601d4f97896f0c7170ff67a4 schema:isbn 978-3-662-53356-7
77 978-3-662-53357-4
78 schema:name Financial Cryptography and Data Security
79 rdf:type schema:Book
80 N23f03ac98d6040588e95563e1b707bd9 rdf:first Nc1ca74087aa0405699a2cf0669de7f90
81 rdf:rest Nd79c702ba35a489ab8fed73ea4683db6
82 N299f6e11739a4f9899dea8be4669bbc6 schema:name dimensions_id
83 schema:value pub.1020600151
84 rdf:type schema:PropertyValue
85 N31420c926835410b9aa2583f3dc6fb40 rdf:first Nc068aab68939410ca168e92dd71d4497
86 rdf:rest Naf0651b2956c405f9399983e6d424f3f
87 N32e9564ea8274b91b78edbd771025da5 schema:familyName Meiklejohn
88 schema:givenName Sarah
89 rdf:type schema:Person
90 N3cf37b6b2c9d4febacc855fda65bdd88 schema:familyName Wallach
91 schema:givenName Dan
92 rdf:type schema:Person
93 N40859039006246dab4eb73bf4f517efd rdf:first Nbb1c03bcbc7f47d49b7c47a6879b1041
94 rdf:rest rdf:nil
95 N4c725966d26a4decb61f86b1fc5c3590 schema:familyName Ryan
96 schema:givenName Peter Y.A.
97 rdf:type schema:Person
98 N66163bb997b047f3a2eb193014cb9274 rdf:first N3cf37b6b2c9d4febacc855fda65bdd88
99 rdf:rest Nf628294ecf734f269dbd0bd6db42cf1c
100 N9766cc63a71c46859a5b892987ab09e1 schema:name Springer Nature - SN SciGraph project
101 rdf:type schema:Organization
102 Na52b2b2fe7f34df98689ac67aef094c6 rdf:first sg:person.010564637713.41
103 rdf:rest Ndfdc4281434c43b7a1e25576493a4232
104 Na66638674fc1473aa36d720b44d16af1 schema:name Springer Nature
105 rdf:type schema:Organisation
106 Naf0651b2956c405f9399983e6d424f3f rdf:first sg:person.010061613563.24
107 rdf:rest Na52b2b2fe7f34df98689ac67aef094c6
108 Naf0bcc67a37740e698b907e91e9e911b rdf:first N4c725966d26a4decb61f86b1fc5c3590
109 rdf:rest N66163bb997b047f3a2eb193014cb9274
110 Nafb86b015c194e638bc21f5adf50e8c9 schema:affiliation grid-institutes:grid.410443.6
111 schema:familyName Delmolino
112 schema:givenName Kevin
113 rdf:type schema:Person
114 Nb0e4b6883777400aa91f8e367da6e887 rdf:first Nafb86b015c194e638bc21f5adf50e8c9
115 rdf:rest N31420c926835410b9aa2583f3dc6fb40
116 Nb9793bf30bd24f85bbf0283e562ce8c8 schema:name doi
117 schema:value 10.1007/978-3-662-53357-4_6
118 rdf:type schema:PropertyValue
119 Nbb1c03bcbc7f47d49b7c47a6879b1041 schema:familyName Rohloff
120 schema:givenName Kurt
121 rdf:type schema:Person
122 Nc068aab68939410ca168e92dd71d4497 schema:affiliation grid-institutes:grid.410443.6
123 schema:familyName Arnett
124 schema:givenName Mitchell
125 rdf:type schema:Person
126 Nc1ca74087aa0405699a2cf0669de7f90 schema:familyName Clark
127 schema:givenName Jeremy
128 rdf:type schema:Person
129 Nd0fc6e9364c64c23aee95b18134b345f schema:familyName Brenner
130 schema:givenName Michael
131 rdf:type schema:Person
132 Nd79c702ba35a489ab8fed73ea4683db6 rdf:first N32e9564ea8274b91b78edbd771025da5
133 rdf:rest Naf0bcc67a37740e698b907e91e9e911b
134 Ndfdc4281434c43b7a1e25576493a4232 rdf:first sg:person.014706274717.52
135 rdf:rest rdf:nil
136 Nf628294ecf734f269dbd0bd6db42cf1c rdf:first Nd0fc6e9364c64c23aee95b18134b345f
137 rdf:rest N40859039006246dab4eb73bf4f517efd
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)


...