<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Towards Model-Driven Smart Contract Systems { Code Generation and Improving Expressivity of Smart Contract Modeling</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Marek Skotnica</string-name>
          <email>marek.skotnica@fit.cvut.cz</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jan Klicpera</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Robert Pergl</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Faculty of Information Technology, Czech Technical University</institution>
          ,
          <addr-line>Prague</addr-line>
          ,
          <country>Czech</country>
          <addr-line>Republic ORCiD: 0000-0002-8811-3389 ORCiD: 0000-0003-2980-4400</addr-line>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2020</year>
      </pub-date>
      <abstract>
        <p>Public blockchains are increasingly important in industries such as nance, supply-chain management, and governance. In the last two years, there has been increased usage of blockchain for decentralized nance (DeFi). The usage of DeFi mainly consists of cryptocurrency lending and providing liquidity for decentralized exchanges. However, the considerable volume of reports shows large nancial losses during network congestion, increasing transaction prices, programming errors, and hacker attacks. One survey suggested that only 40% of people working with DeFi smart contracts understand their source code. To address the issues, this paper proposes a model-driven approach to create blockchain smart contracts based on a visual domain-speci c language called DasContract. An improved design of the DasContract language is presented, and a code generation process into a blockchain smart contract is described. The proposed approach is demonstrated on a proofof-concept model of a decentralized mortgage process where the contract is designed, generated, and simulated in a blockchain environment.</p>
      </abstract>
      <kwd-group>
        <kwd>Process Modeling</kwd>
        <kwd>Blockchain</kwd>
        <kwd>Smart Contract</kwd>
        <kwd>DasContract</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1 Introduction</title>
      <p>
        The blockchain smart contracts promise a revolution in many industries that
so far resisted the digital revolution. They may play a signi cant role in
nance, supply chain management, voting, and many other industries. However,
the promises of the blockchain technology were not yet materialized. According
to the Gartner, mainstream adoption is expected in 2030 [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ].
      </p>
      <p>
        The public blockchains' primary use is currently the decentralized nance
(DeFi) that is used for decentralized exchanges and crypto loans. However, there
are many problems DeFi is currently facing. The rst one is network congestion,
which increases the transaction processing time and price (that reaches up to
12 USD per transaction [
        <xref ref-type="bibr" rid="ref39">39</xref>
        ]). Another issue is the smart contract programming
errors. In one of the many incidents, an input error led to a token price plunging
25% [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ]. Furthermore, according to the CoinGeco survey [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], only 40% of the
DeFi users can read and understand the smart contract's source code.
      </p>
      <p>
        To address these challenges, a visual language for modeling smart contracts,
DasContract, has been proposed in [
        <xref ref-type="bibr" rid="ref35">35</xref>
        ]. It argues that by using a visual
domainspeci c language (DSL), the readability of smart contracts would be more
comfortable, and using model-driven engineering (MDE) approach generates the
smart contracts source code. However, a complete method to generate the source
code was not provided, and the included case study was very elementary.
      </p>
      <p>
        Therefore, this paper aims to bridge the gap and build on top of the
preliminary research. First, the DSL initially provided by the DasContract
paper [
        <xref ref-type="bibr" rid="ref35">35</xref>
        ] was completely redesigned to support an automatic and blockchain
implementation-independent code generation suitable for a limited execution
environment provided by the blockchain technology. Second, a straightforward way
to generate smart contract algorithms with non-fungible tokens was described
together with an open-source implementation algorithm. Finally, to demonstrate
the functionality of the proposed approach, a decentralized mortgage case study
was created. A model of a mortgage process running in blockchain was modeled,
Solidity smart contract was generated, and nally, a simulation of the
functionality was performed.
      </p>
      <p>The paper is organized as follows: In Section 2, the research method and the
research question are formulated. In Section 3, the underlying scienti c
foundations are brie y discussed. An approach to generate blockchain smart contracts
from a DasContract language is introduced in Section 4. The proposed approach
is demonstrated on a Mortrage case study in Section 5. The related research is
discussed in Section 6. Finally, in Section 7, the current results are summarized,
and further research is proposed.</p>
    </sec>
    <sec id="sec-2">
      <title>2 Research Approach</title>
      <p>
        This research applies the design science (DS) approach of Hevner [
        <xref ref-type="bibr" rid="ref18 ref19">19, 18</xref>
        ], which
is shown in Figure 1. In the rst cycle, a relevance of the problem is discussed
in Section 1. The second cycle is described in Section 4. And nally, the
relevant grounding into the existing knowledge base is in Section 3, Section 4, and
Section 7.
      </p>
      <sec id="sec-2-1">
        <title>The research question is: How to generate blockchain smart contracts from a high-level modelling language in a deterministic way so the probability of creating error-free smart contracts is increased?</title>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3 Theoretical Background</title>
      <sec id="sec-3-1">
        <title>3.1 Blockchain</title>
        <p>
          First conceptualized in 2008 [
          <xref ref-type="bibr" rid="ref25">25</xref>
          ] by Satoshi Nakamato, blockchain is a technology
that provides a cryptographically secure, decentralized method to store data.
The key aspects of a blockchain systems are: 1)Decentralization The data in a
blockchain is distributed and managed by a cluster of computers, without any
central authority. 2)Transparency All the data in a blockchain is completely
visible to any computer in the blockchain.3) Immutability Once a data block is
veri ed and added to the blockchain, it is not possible to edit or remove it.
        </p>
      </sec>
      <sec id="sec-3-2">
        <title>3.2 Smart Contracts</title>
        <p>
          A smart contract is a computer protocol that allows creating digital contracts
between multiple parties without a need for a trusted third-party intermediary.
Once deployed, the smart contract will automatically evaluate the commitments
that may occur to the parties over time, based on the agreed terms [
          <xref ref-type="bibr" rid="ref36">36</xref>
          ].
        </p>
        <p>
          Ethereum [
          <xref ref-type="bibr" rid="ref13 ref14">13, 14</xref>
          ] is a smart contract implementation used in this paper that
is described as: \an open source, globally decentralized computing infrastructure
that executes programs called smart contracts. It uses a blockchain to synchronize
and store the system's state changes, along with a cryptocurrency called ether to
meter and constrain execution resource costs." [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]
        </p>
        <p>
          As further described in [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ], the smart contracts are deployed onto the
blockchain in the form of a specialized bytecode. This bytecode then runs on
each Ethereum node in a limited execution environment, called Ethereum
Virtual Machine (EVM). Since creating smart contracts directly in the bytecode
would be too impractical, multiple specialized high-level languages have been
created, together with the compilers needed to convert them into EVM bytecode.
The most popular high-level language for creating EVM-based smart contracts
is Solidity.
        </p>
      </sec>
      <sec id="sec-3-3">
        <title>3.3 Cryptographic Tokens</title>
        <p>
          As described by Voshmgir [
          <xref ref-type="bibr" rid="ref38">38</xref>
          ]: \Cryptographic tokens represent programmable
assets or access rights, managed by a smart contract and an underlying
distributed ledger. They are accessible only by the person who has the private key
for that address and can only be signed using this private key."
        </p>
        <p>
          On the Ethereum platform, Ethereum Improvement Proposals (EIPs) [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] are
used to standardize the general structure of tokens. This ensures that the smart
contracts running on Ethereum can interact with tokens de ned by other smart
contracts.
        </p>
        <p>
          One of these standards is the ERC-20, providing a typical list of rules on how
the tokens should be structured. These tokens are fungible, meaning that tokens
of the same type are interchangeable. That makes them easy to trade, as there
is no need to di erentiate the tokens. To represent unique assets, however, the
tokens must be non-fungible { every token is unique and non-interchangeable,
even if they are of the same type. In order to facilitate these types of tokens, the
ERC-721 standard was created. [
          <xref ref-type="bibr" rid="ref38">38</xref>
          ]
3.4 BPMN
BPMN is a standard notation for business process modeling under the Object
Management Group (OMG) [
          <xref ref-type="bibr" rid="ref27">27</xref>
          ]. There are three levels of BPMN modeling based
on the goal. This paper uses the DasContract language that builds on BPMN
level 3 to express machine-executable process models.
        </p>
      </sec>
      <sec id="sec-3-4">
        <title>3.5 Uni ed Modeling Language (UML)</title>
        <p>
          Uni ed Modeling Language (UML) [
          <xref ref-type="bibr" rid="ref32">32</xref>
          ] is a standardized modeling language
enabling developers to specify, visualize, construct and document artifacts of a
software system. [
          <xref ref-type="bibr" rid="ref37">37</xref>
          ] In this paper, a UML Class diagram is used to describe
a meta-model of a DasContract language and also to represent a DasContract
data model.
        </p>
      </sec>
      <sec id="sec-3-5">
        <title>3.6 DasContract</title>
        <p>
          The DasContract was rst introduced in [
          <xref ref-type="bibr" rid="ref35">35</xref>
          ] and it builds on top of the existing
knowledge about Business Process Management (BPM) [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ] and Enterprise
Engineering discipline [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ]. DasContract provides a visual domain-speci c language to
describe blockchain smart contracts that is based on an extended combination
of DEMO modeling language [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ], BPMN [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ], and UML [
          <xref ref-type="bibr" rid="ref28">28</xref>
          ].
        </p>
        <p>The main goal of the DasContract is to provide a way to conclude digital
contracts for people, companies, and governments without the need for an
intermediary. The contract conditions are agreed on upfront and inserted into a
blockchain smart contract that ensures the contract's immutability and
execution according to the agreed conditions.</p>
        <p>The proposed concept architecture of the DasContract is shown on Figure 2.
First, a contract between parties is formalized using the DasContract language
and a legal text, then a smart contract is generated, and nally, the people,
companies, and legal authorities interact according to the smart contract logic.</p>
        <p>However, the original paper does not provide a straightforward method for
translating the DEMO model to the executable BPMN and does not provide</p>
        <sec id="sec-3-5-1">
          <title>Human Understanding</title>
        </sec>
        <sec id="sec-3-5-2">
          <title>Technical Implementation</title>
        </sec>
        <sec id="sec-3-5-3">
          <title>Digital Interaction</title>
        </sec>
        <sec id="sec-3-5-4">
          <title>A Contract</title>
        </sec>
        <sec id="sec-3-5-5">
          <title>Legal Text +</title>
        </sec>
        <sec id="sec-3-5-6">
          <title>Formal</title>
        </sec>
        <sec id="sec-3-5-7">
          <title>Models</title>
        </sec>
        <sec id="sec-3-5-8">
          <title>Code</title>
        </sec>
        <sec id="sec-3-5-9">
          <title>Generation</title>
        </sec>
        <sec id="sec-3-5-10">
          <title>A Blockchain</title>
        </sec>
        <sec id="sec-3-5-11">
          <title>A Smart</title>
        </sec>
        <sec id="sec-3-5-12">
          <title>Contract</title>
        </sec>
        <sec id="sec-3-5-13">
          <title>Code</title>
        </sec>
        <sec id="sec-3-5-14">
          <title>A Person</title>
        </sec>
        <sec id="sec-3-5-15">
          <title>A Company</title>
        </sec>
        <sec id="sec-3-5-16">
          <title>A Legal</title>
        </sec>
        <sec id="sec-3-5-17">
          <title>Authority</title>
          <p>
            code generation algorithms. This leaves a gap that this paper aims to ll by
introducing a new DSL language (shown in Figure 3) and describes how the
smart contract code should be generated.
4 Towards Generating Smart Contracts from DasContract
Language
This section introduces a way to generate blockchain smart contracts using a
Model-Driven Engineering approach (MDE) [
            <xref ref-type="bibr" rid="ref5">5</xref>
            ]. To achieve this, a complete
redesign of the original DasContract metamodel [
            <xref ref-type="bibr" rid="ref35">35</xref>
            ] was done, and a way of
automatically generating blockchain smart contracts is described. Ethereum Solidity
language is used as a demonstration; however, the principles described should
be transferable to other blockchain implementations.
          </p>
          <p>
            The new DasContract DSL metamodel is shown on g. 3. The original
DasContract metamodel was based on DEMO models. Although the execution of
DEMO models is described in [
            <xref ref-type="bibr" rid="ref34">34</xref>
            ] and the translation of DEMO to BPMN
in [
            <xref ref-type="bibr" rid="ref24">24</xref>
            ], the approach creates models that contain all possible execution paths
according to the DEMO transaction axiom. This is not desired in a blockchain
smart contract because only the necessary execution paths should be modeled
to prevent unwanted behavior. However, the DEMO models still should be
produced before modeling the DasContract to achieve a better ontological
understanding of the domain.
          </p>
          <p>As a basis for the execution behavior, an extended subset of BPMN 2.0 level
3 is used. However, compared to the BPM systems that interpret the model, an
approach that generates code with the model behavior is used. This approach is
used due to blockchain performance and storage limitations. Each line of code
executed in the blockchain costs money, and the storage costs are also at a
premium.</p>
          <p>
            The algorithm described in this paper is implemented in C# programming
language and published on Github under an MIT license [
            <xref ref-type="bibr" rid="ref33">33</xref>
            ].
          </p>
          <p>ProcessRole
+ Id: string
+ Name: string
+ Description: string
0..* 0..*</p>
          <p>0..*</p>
          <p>ProcessUser
+ Id: string
+ Name: string
+ Description: string
0..* 1
0..*
1</p>
          <p>Contract
+ Id: string
+ ProcessDiagram: string
1
1</p>
          <p>Process
+ Id: string
1
0..*</p>
          <p>ProcessElement
+ Id: string
+ Name: string
1
1
1
1
StartEvent</p>
          <p>EndEvent</p>
          <p>ParallelGateway</p>
          <p>ExclusiveGateway
0..*
0..*
Source
Target</p>
          <p>Entity
+ Id: string
+ Name: string</p>
          <p>SequenceFlow
+ Id: string
+ Name: string
+ Condition: string
0..* 0..*</p>
          <p>1
low1
F
e
c
n
e
u
q
e
S
lt
u
a
f
e</p>
          <p>D 0..*
Gateway</p>
          <p>Property
0..* + Id: string
+ Name: string
+ IsMandatory: boolean
+ IsCollection: boolean
+ Type: PropertyType
&lt;&lt;Enumeration&gt;&gt;</p>
          <p>PropertyType
Int
Uint
Bool
String
DateTime
Address
AddressPayable
Data</p>
          <p>Entity</p>
          <p>ScriptTask
+ Script: string</p>
          <p>BusinessRuleTask
+ BusinessRuleDefinitionXml: string
&lt;&lt;Enumeration&gt;&gt;</p>
          <p>FormFieldType
Property
Custom
s
e
l
o
R
e
t
a
d
i
d
n
a
C
s
r
e
s
U
e
t
a
d
i
d
n
a
C
e
e
n
g
i
s</p>
          <p>A
0..*
0..*
UserTask</p>
          <p>0..*
+ Id: string
+ Name: string
+ Id: string
1
1
UserForm
1</p>
          <p>StartForm
1</p>
          <p>Event
0..*</p>
          <p>Task</p>
          <p>ServiceTask
+ ImplementationType: string
+ Configuration: string</p>
          <p>FormField
+ Id: string
+ Order: int
0..* + Type: FormFieldType
+ DisplayName: string
+ IsReadOnly: boolean
+ PropertyExpression: string
+ CustomConfiguration: string</p>
          <p>The DasContract DSL consists of the following models: Data Model Speci es
data structures used inside of the smart contract. These structures can be
referenced inside of the process model. Process Model Speci es a contract's business
process as an extended subset of the BPMN 2.0 language. Forms Model Speci es
a user form required to ll by the user in a process user task. The forms provide
a way to interact with smart contracts.</p>
        </sec>
      </sec>
      <sec id="sec-3-6">
        <title>4.1 Data Model</title>
        <p>The data model's implementation is straightforward because the blockchain
smart contract languages provide generous native support to specify data
structures. The supported concepts are entities, properties, entity properties, and
arrays. Each property can also be marked as mandatory. The data types of
properties are Int, UInt, Bool, String, DateTime, Address, AddressPayable, Data,
Entity. The types Address and AddressPayable are blockchain speci c and
support cryptocurrency or token payments.</p>
        <p>Example Let's have an entity Payment with four properties { two addresses
identifying the sender and receiver, a numeric de ning the amount sent and a
boolean indicating whether the payment was on schedule. The generated code
is shown in Listing 1.
struct Payment {
uint256 amount;
bool onSchedule;
address sender;
address receiver;</p>
      </sec>
      <sec id="sec-3-7">
        <title>4.2 Process Model</title>
        <p>
          The process model uses an extended subset of the BPMN 2.0 level 3 notation.
The formal speci cation of a BPMN execution is already well researched, and
there are many di erent formalizations such as [
          <xref ref-type="bibr" rid="ref21 ref9">9, 21</xref>
          ]. In this paper, the
algorithms are based on Petri-net based formalization described in [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ].
        </p>
        <p>The blockchain smart contracts are more similar to a programmable database
rather than a desktop, web, or console application. Due to this fact, not all of
the BPMN concepts can be implemented or make sense. Therefore only a limited
subset is implemented: user task, script task, XOR gateway, parallel gateway,
start event, and end event. The blockchain-speci c activities were added:
payment task. The payment task is a task attribute that can be added to both user
and script task to add support to work with cryptocurrency or tokens.
Process Flow Exclusive gateways are converted into a sequence of if-else
statements, advancing the execution based on the statement's result. Parallel
gateways are more complex, as they can not only create multiple execution branches
but are also used for synchronizing multiple ows (branches) into a single ow. If
a gateway has multiple incoming ows, then a counter is de ned, keeping track
of the number of ows that have reached the gateway. The outgoing ows are
triggered once the counter matches the number of incoming ows. An example
can be seen in Listing 2, that contains the logic of parallel gateways generated
based on Figure 4.
Activities Functions are also used to encapsulate the logic of activities. Unlike the
internal gateway functions, these functions are publicly visible. User activities
allow accepting parameters and store them inside of the contract using property
binding logic. The generator also allows restricting access to function execution
based on the executor's address. This is done using roles de ned using square
brackets inside the name of the activity (see Figure 4). The addresses to each
role are assigned at runtime, meaning that anyone can execute an activity with
an unassigned role. The rst execution assigns the role, reserving the remaining
activities of the given role to that address.
modifier isEscrowPropertyRightsState{
require(isStateActive("EscrowPropertyRights")==true);
_;
function EscrowPropertyRights(bool Agree) isEscrowPropertyRightsState
isEscrowPropertyRightsAuthorized public {</p>
        <p>ActiveStates["EscrowPropertyRights"] = false;
escrowagreement.agreeToEscrow = Agree;
ActiveStates["EscrowProperty"] = true;</p>
        <p>EscrowProperty();
Listing 3. User task logic generated based on the model snippet in Figure 4.</p>
        <p>An example of a converted user activity can be seen in Listing 3, generated
based on the Escrow Property Rights activity in Figure 4. The generated function
contains two modi ers, checking whether the contract is in the valid state and
whether the executor (Property Owner role) is authorized. The function has
one input parameter that has been de ned using the editor. This parameter is
then stored inside the contract according to the de ned property binding logic.
An address of the property owner is read from the msg.sender property that
provides a sender's public address veri ed by his private key while sending the
transaction to the blockchain.</p>
        <p>Token Activities Described in Section 3.3, tokens play a signi cant role in the
smart contract ecosystem by allowing to express ownership of an asset. By
complying with the token standards, these tokens can also interact with other smart
contracts. An activity that would allow us to create/send/receive tokens would
signi cantly improve the generated smart contracts' capabilities. For example,
it would allow sending voting ballots (in the form of a token) to the voters.</p>
      </sec>
      <sec id="sec-3-8">
        <title>4.3 Forms Model</title>
        <p>The forms model de nes a form that is shown to a user and allows interaction
with a contract. Such logic is implemented in two places called on-chain and
o -chain.
On-chain code is run inside the blockchain. Our algorithm is represented as
parameters that are passed into a function generated from a user task. An example
is shown on Listing 3 - the method EscrowPropertyRights contains a parameter
Agree that will be provided by the user while calling the method.
O -chain code is run inside a cryptocurrency wallet to provide the user with
comfortable user experience while interacting with a smart contract. However,
the Ethereum Solidity does not support o -chain code, and therefore we leave
this aspect for further research.</p>
      </sec>
      <sec id="sec-3-9">
        <title>4.4 Design, Compilation and Execution</title>
        <p>
          For the modeling of the new DasContract models, a new visual modeling
environment was created. The visual modeling reduces the modeler's errors and
reduces the time required to produce a model. The modeling environment is
available on Github under an MIT license [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ].
        </p>
        <p>Compilation to the Solidity code assumes a valid DasContract model
created in the modeling environment and does not check for other errors. The last
check is done during the Solidity code compilation (usually in the Remix
environment) and allows the modeler to x issues in custom script tasks and user
task validation logic.</p>
      </sec>
      <sec id="sec-3-10">
        <title>4.5 Limitations</title>
        <p>
          There are the following limitations to this approach, and they should be
addressed in future research. First, the script tasks and a validation logic of
user tasks still need to be expressed in Solidity language. An
implementationindependent DSL for such expressions should be added to the design of the
language. Second, the language only contains support for receiving tokens.
Support to issue both fungible and non-fungible tokens would be required. Third,
it is not clear how would people authenticate themselves and prove their roles
outside of the standard smart contract wallet. A way to support decentralized
identity standards such as W3C DID should be explored. Finally, according to
Gartner [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ], the public blockchains are still immature for mass adoption mostly
because of low transaction processing capability and high cost and, therefore,
only minimal applications such as initial coin o erings, escrows, and
decentralized nance are currently possible.
        </p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>5 Case Study: Mortgage</title>
      <p>
        This section provides a case study to demonstrate the capabilities of the
approach proposed in the previous section. A case of a decentralized mortgage
that supports non-fungible tokens (ERC-721) to represent the property
ownership was created. This case study designs the process in a decentralized way
that means that the property token is held in the smart contract as collateral.
A scenario where the lenders can request a default of the loan is modeled. The
complete DasContract model and the generated source code are published on
Github under an MIT license [
        <xref ref-type="bibr" rid="ref33">33</xref>
        ].
      </p>
      <p>[Borrower]
Cancel
Application
[Lender]
Escrow Money</p>
      <p>[Property
Owner] Escrow
Property Rights
[Insurer] Accept</p>
      <p>Insurance
[Borrower]
Apply For a
Mortgage</p>
      <p>Validate</p>
      <p>Contract
[Insurer] Pay for
the Borrower
Invalid</p>
      <p>Valid
[Borrower] Pay
Mortgage Fee</p>
      <p>Check Payment</p>
      <p>Schedule
Payment to the
Insurer and
Lender
Payment On</p>
      <p>Schedule
[Lender]
Request Default</p>
      <p>Validate Terms</p>
      <p>Violation</p>
      <p>Terms Violated
Terms Not
Violated
Release
Escrows</p>
      <p>Invalid</p>
      <p>Valid
Pay Owner
Payment</p>
      <p>Contract</p>
      <p>Canceled
Transfer the
Property to the</p>
      <p>Borrower
Loan Completed
Transfer the
Property to the</p>
      <p>Lender</p>
      <p>Loan Defaulted
[Insurer] Check
Indemnity Terms</p>
      <p>Behind Payment</p>
      <p>Payments</p>
      <p>Finished
[Lender]
Transfer
Proportion
Money to the</p>
      <p>Borrower</p>
      <p>
        The following steps were taken while conducting this case study: 1) A
DasContract model was created in a visual editor. 2) An Ethereum Solidity smart
contract code was created by an algorithm described in Section 4. 3) A
simulation of the generated smart contract was performed in the Remix [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] test
environment.
      </p>
      <p>The process model of the proposed process can be seen in Figure 5. The
process begins with a borrower applying for a mortgage. Three other parties
{ insurer, property owner, lender { must then con rm their involvement by
carrying out their speci c action. If any of them declines, or the borrower changes
their mind, then the contract is deemed invalid, and any escrows that have been
already transferred will be released back to their previous holders.</p>
      <p>When all parties agree and the contract is successfully validated, then the full
payment to the owner is automatically released, also ending their involvement in
the contract. In the next phase of the contract, the borrower is tasked to carry
out to periodically pay the mortgage fees. Those fees are then automatically
distributed to the insurer and lender. The payment schedule is checked afterward,
resulting in three possible scenarios. First, the payment is on schedule; the
contracts state will return to \waiting" for another payment. Second, The payments
are behind schedule; in this case, the insurer checks the indemnity terms, paying
for the borrower if they are met. Third, the payments are nished, in which case
the property is automatically transferred to the borrower, ending the contract.</p>
      <p>Before the payments are fully nished, the lender is also at any time allowed
to request for borrower's default to check whether the borrower has not violated
terms. If the terms have indeed been violated, then the lender will pay
proportion money de ned in the terms to the borrower. The property will then be
transferred to the lender, ending the contract.</p>
      <p>The described process was simulated using the Remix IDE. The test
environment allows to perform transactions from various addresses, enabling to
simulate people interacting with the smart contract. The transaction was
successfully run by the borrower (left sidebar), returning status information about
the transaction (right window).</p>
      <p>
        The limitations of the case study are the following. First, the mortgage is
paid in a cryptocurrency, which is a very volatile asset. This can be addressed
using a stablecoins [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]. The second issue is that the case requires a cadastre
of properties being represented by a non-fungible token that is recognized in a
country's legal context. This can be addressed by a legal binding of the token
to property and mapping to a real cadastre record using a blockchain oracle
solution such as [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. Third, the insurer is represented by a human oracle and is
not enforced by a code to pay. Therefore, the terms of insurance would be needed
to sign in a separate legal contract. This is already a part of the DasContract
architecture described at Figure 2.
      </p>
    </sec>
    <sec id="sec-5">
      <title>6 Related Research</title>
      <p>
        A very similar research is done by the Caterpillar project [
        <xref ref-type="bibr" rid="ref30 ref31">30, 31</xref>
        ] that is
creating a BPM engine in the Solidity language. The main di erence between the
approaches is that the DasContract generates the logic of the model into the
smart contract where the Caterpillar interprets it. The goal of the DasContract
is to provide a decentralized way to conduct contracts between people,
companies, and governments in a blockchain implementation independent way. The
Caterpillar is currently bound to the Solidity programming language.
      </p>
      <p>
        Other approaches provide a graphic environment to visually compose smart
contract code based on Blockly [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] such as [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. There is also another approach
that proposes a domain speci c language for de nition of nancial smart
contracts called Marlowe [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ]. The approach presented in this paper does not
represent the script part in the visual format; it instead focuses on modeling data,
processes, and forms that is not supported by Blockly-based approaches.
      </p>
    </sec>
    <sec id="sec-6">
      <title>7 Conclusions</title>
      <p>The paper introduced an approach to creating a model-driven blockchain smart
contracts. The potential bene ts are: 1) An increase readability of the blockchain
smart contracts by providing a visual DSL that allows contract simulation. 2)The
simulation also contributes to eliminating smart contract errors as the behavior
can be examined before publishing the contract. 3)The expressivity was
improved by a complete redesign of the DasContract DSL and providing the
capability to support non-fungible tokens. To demonstrate the proposed approach's
functionality, a decentralized mortgage case study was presented in Section 5.
The mortgage case was modeled; a Solidity code was generated and simulated
in the Remix environment.</p>
      <p>
        The major limitation of this approach remains the immaturity of available
blockchain implementations. According to the Gartner [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], the blockchain
technology is very immature to support most of the potential use cases, and there
is still a tremendous amount of research, implementation, and adoption to be
done.
      </p>
      <p>
        Further research is following: 1) Support for generation of smart contracts
on di erent platforms. 2) Case studies and usability studies to improve the
proposed language design. 3) Explore a possible extension with more BPMN
symbols and concepts. 4) Explore a possible extension of the proposed model by
DMN [
        <xref ref-type="bibr" rid="ref29">29</xref>
        ] OMG standard. 5) Propose a method to devise DasContract models
from DEMO. 6) Propose a case study of a smart contract in nancial domain
aligned with CC-CP ontology [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ].
      </p>
      <p>Acknowledgement This research has been supported by CTU SGS grant
No. SGS20/209/OHK3/3T/18</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>1. Ethereum improvement proposals, https://eips.ethereum.org/</mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>2. Remix - ethereum ide, https://ethereum.org/en/foundation/</mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Antonopoulos</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wood</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          :
          <article-title>Mastering Ethereum: Building Smart Contracts and DApps (</article-title>
          <year>2018</year>
          ), https://github.com/ethereumbook/ethereumbook/ blob/develop/book.asciidoc
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4. BPM: What is
          <string-name>
            <surname>BPM</surname>
          </string-name>
          (
          <year>2012</year>
          ), http://bpm.com/what-is-bpm
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Brambilla</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cabot</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wimmer</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Model-Driven Software Engineering in Practice: Second Edition</article-title>
          . Morgan &amp; Claypool Publishers, 2nd edn. (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6. CAMUNDA:
          <article-title>Bpmn 2.0 symbol reference</article-title>
          , https://camunda.com/bpmn/ reference/
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7. CoinGeco: Coingecko yield farming survey
          <year>2020</year>
          , https://www.coingecko.com/ buzz/yield-farming-survey-2020?locale=en, [online], [cit. 2020-
          <volume>09</volume>
          -22]
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Dietz</surname>
            ,
            <given-names>J.L.G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mulder</surname>
            ,
            <given-names>H.B.F.</given-names>
          </string-name>
          :
          <article-title>Enterprise Ontology: A Human-Centric Approach to Understanding the Essence of Organisation</article-title>
          .
          <source>The Enterprise Engineering Series</source>
          , Springer International Publishing (
          <year>2020</year>
          ), https://www.springer.com/gp/book/ 9783030388539
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Dijkman</surname>
            , R., Van Gorp,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Bpmn 2.0 execution semantics formalized as graph rewrite rules</article-title>
          . In: Mendling,
          <string-name>
            <given-names>J.</given-names>
            ,
            <surname>Weidlich</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Weske</surname>
          </string-name>
          , M. (eds.) Business Process Modeling Notation. pp.
          <volume>16</volume>
          {
          <fpage>30</fpage>
          . Springer Berlin Heidelberg, Berlin, Heidelberg (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Dijkman</surname>
            ,
            <given-names>R.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dumas</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ouyang</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Formal semantics and analysis of bpmn process models using petri nets</article-title>
          . Queensland University of Technology,
          <source>Tech. Rep</source>
          pp.
          <volume>1</volume>
          {
          <issue>30</issue>
          (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Drozd</surname>
          </string-name>
          k, M., e.a.: Dascontract editor github repository (
          <year>2020</year>
          ), https://github. com/drozdik-m/
          <article-title>das-contract-editor</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Ellis</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Juels</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nazarov</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Chainlink: A decentralized oracle network (</article-title>
          <year>2017</year>
          ), https://link.smartcontract.com/whitepaper
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Ethereum</surname>
          </string-name>
          <article-title>Foundation: About the ethereum foundation</article-title>
          , https://ethereum.org/ en/foundation/
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14. Ethereum Foundation:
          <article-title>Ethereum whitepaper</article-title>
          , https://ethereum.org/en/ whitepaper/
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Garther</surname>
          </string-name>
          :
          <article-title>The reality of blockchain</article-title>
          , https://www.gartner.com/ smarterwithgartner/the-reality-of-blockchain/, [online], [cit. 2019-
          <volume>01</volume>
          - 29]
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16. Github:
          <article-title>Solidity for blockly</article-title>
          , https://github.com/promethe42/ blockly-solidity, [online], [cit. 2020-
          <volume>08</volume>
          -10]
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17. Google: Blockly, https://developers.google.com/blockly/, [online], [cit. 2020-
          <volume>08</volume>
          -10]
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Hevner</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>A Three Cycle View of Design Science Research</article-title>
          .
          <source>Scandinavian Journal of Information Systems</source>
          <volume>19</volume>
          (
          <issue>2</issue>
          ) (
          <year>Jan 2007</year>
          ), http://aisel.aisnet.org/sjis/vol19/ iss2/4
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Hevner</surname>
            ,
            <given-names>A.R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>March</surname>
          </string-name>
          , S.T.,
          <string-name>
            <surname>Park</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ram</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <source>Design Science in Information Systems Research. MIS Q</source>
          .
          <volume>28</volume>
          (
          <issue>1</issue>
          ),
          <volume>75</volume>
          {105 (Mar
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Hunka</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kervel</surname>
            ,
            <given-names>S.:</given-names>
          </string-name>
          <article-title>A Generic DEMO Model for Co-creation and Co-production as a Basis for a Truthful and Appropriate REA Model Representation</article-title>
          , pp.
          <volume>203</volume>
          {
          <issue>218</issue>
          (08
          <year>2019</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Lam</surname>
            ,
            <given-names>V.S.:</given-names>
          </string-name>
          <article-title>A precise execution semantics for bpmn</article-title>
          .
          <source>IAENG International Journal of Computer Science</source>
          <volume>39</volume>
          (
          <issue>1</issue>
          ),
          <volume>20</volume>
          {
          <fpage>33</fpage>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Lamela</surname>
            <given-names>Seijas</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            ,
            <surname>Thompson</surname>
          </string-name>
          ,
          <string-name>
            <surname>S.</surname>
          </string-name>
          :
          <source>Marlowe: Financial Contracts on Blockchain: 8th International Symposium, ISoLA</source>
          <year>2018</year>
          , Limassol, Cyprus, November 5-
          <issue>9</issue>
          ,
          <year>2018</year>
          , Proceedings,
          <string-name>
            <surname>Part</surname>
            <given-names>IV</given-names>
          </string-name>
          , pp.
          <volume>356</volume>
          {
          <issue>375</issue>
          (11
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Mita</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ito</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ohsawa</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tanaka</surname>
          </string-name>
          , H.:
          <article-title>What is stablecoin?: A survey on price stabilization mechanisms for decentralized payment systems</article-title>
          .
          <source>In: 2019 8th International Congress on Advanced Applied Informatics (IIAI-AAI)</source>
          . pp.
          <volume>60</volume>
          {
          <fpage>66</fpage>
          .
          <string-name>
            <surname>IEEE</surname>
          </string-name>
          (
          <year>2019</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>Mraz</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Naplava</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pergl</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Skotnica</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Converting DEMO PSI Transaction</surname>
          </string-name>
          <article-title>Pattern into BPMN: A Complete Method</article-title>
          . In: Aveiro,
          <string-name>
            <given-names>D.</given-names>
            ,
            <surname>Pergl</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            ,
            <surname>Guizzardi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            ,
            <surname>Almeida</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.P.</given-names>
            , Magalha~es, R.,
            <surname>Lekkerkerk</surname>
          </string-name>
          , H. (eds.) Advances in Enterprise Engineering XI: 7th Enterprise Engineering Working Conference,
          <string-name>
            <surname>EEWC</surname>
          </string-name>
          <year>2017</year>
          , Antwerp, Belgium, May 8-
          <issue>12</issue>
          ,
          <year>2017</year>
          , Proceedings, pp.
          <volume>85</volume>
          {
          <fpage>98</fpage>
          . Springer International Publishing,
          <string-name>
            <surname>Cham</surname>
          </string-name>
          (
          <year>2017</year>
          ), http://dx.doi.org/10.1007/978-3-
          <fpage>319</fpage>
          -57955-
          <issue>9</issue>
          _
          <fpage>7</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25.
          <string-name>
            <surname>Nakamoto</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Bitcoin: A peer-to-peer electronic cash system (</article-title>
          <year>2008</year>
          ), https:// bitcoin.org/bitcoin.pdf
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          26.
          <string-name>
            <surname>News</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>De 's smart contract risks: Cream nance's input error led to cream token plunging 25%</article-title>
          , https://blockchain.news/news/ defi-smart
          <article-title>-contract-risks-cream-finance-input-error-token-</article-title>
          <string-name>
            <surname>plunge</surname>
          </string-name>
          , [online], [cit. 2020-
          <volume>09</volume>
          -22]
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          27. OMG:
          <article-title>Business Process Model and Notation (BPMN</article-title>
          ),
          <source>Version 2.0 (Jan</source>
          <year>2011</year>
          ), http://www.omg.org/spec/BPMN/2.0
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          28. OMG: Uni ed Modeling Language,
          <source>version 2.5 (Mar</source>
          <year>2015</year>
          ), http://www.omg.org/ spec/UML/2.5
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          29.
          <string-name>
            <surname>OMG</surname>
          </string-name>
          <article-title>: Decision Model and Notation (DMN</article-title>
          ),
          <source>Version 1.2 (Jan</source>
          <year>2019</year>
          ), https:// www.omg.org/spec/DMN/1.2/
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          30.
          <string-name>
            <surname>Pintado</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Caterpillar</surname>
            :
            <given-names>A</given-names>
          </string-name>
          <string-name>
            <surname>Blockchain-Based Business Process Management System</surname>
          </string-name>
          (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          31.
          <string-name>
            <surname>Pintado</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Garc</surname>
          </string-name>
          a-Ban~uelos, L.,
          <string-name>
            <surname>Dumas</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Weber</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ponomarev</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>CATERPILLAR: A Business Process Execution Engine on the Ethereum Blockchain (</article-title>
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          32.
          <string-name>
            <surname>Rumbaugh</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jacobson</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Booch</surname>
          </string-name>
          , G.:
          <article-title>Uni ed Modeling Language Reference Manual, The (2nd Edition)</article-title>
          .
          <source>Pearson Higher Education</source>
          (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          33.
          <string-name>
            <surname>Skotnica</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , e.a.:
          <article-title>Dascontract 1.0 github repository (</article-title>
          <year>2020</year>
          ), https://github.com/ CCMiResearch/DasContract/tree/v1.0
        </mixed-citation>
      </ref>
      <ref id="ref34">
        <mixed-citation>
          34.
          <string-name>
            <surname>Skotnica</surname>
          </string-name>
          , M.,
          <string-name>
            <surname>van Kervel</surname>
            ,
            <given-names>S.J.H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pergl</surname>
            , R.:
            <given-names>A DEMO</given-names>
          </string-name>
          <string-name>
            <surname>Machine - A Formal</surname>
          </string-name>
          <article-title>Foundation for Execution of DEMO Models</article-title>
          . In: Aveiro,
          <string-name>
            <given-names>D.</given-names>
            ,
            <surname>Pergl</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            ,
            <surname>Guizzardi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            ,
            <surname>Almeida</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.P.</given-names>
            ,
            <surname>Magalhaes</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            ,
            <surname>Lekkerkerk</surname>
          </string-name>
          , H. (eds.) Advances in Enterprise Engineering XI. pp.
          <volume>18</volume>
          {
          <fpage>32</fpage>
          . Springer International Publishing,
          <string-name>
            <surname>Cham</surname>
          </string-name>
          (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref35">
        <mixed-citation>
          35.
          <string-name>
            <surname>Skotnica</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pergl</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          :
          <article-title>Das contract - a visual domain speci c language for modeling blockchain smart contracts</article-title>
          . In: Aveiro,
          <string-name>
            <given-names>D.</given-names>
            ,
            <surname>Guizzardi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            ,
            <surname>Borbinha</surname>
          </string-name>
          ,
          <string-name>
            <surname>J</surname>
          </string-name>
          . (eds.) Advances in Enterprise Engineering XIII. pp.
          <volume>149</volume>
          {
          <fpage>166</fpage>
          . Springer International Publishing,
          <string-name>
            <surname>Cham</surname>
          </string-name>
          (
          <year>2020</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref36">
        <mixed-citation>
          36.
          <string-name>
            <surname>Szabo</surname>
          </string-name>
          , N.:
          <article-title>Smart contracts</article-title>
          , https://www.fon.hum.uva.nl/rob/Courses/ InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best. vwh.net/smart.contracts.html
        </mixed-citation>
      </ref>
      <ref id="ref37">
        <mixed-citation>
          37. Techopedia: De nition
          <article-title>- what does uni ed modeling language (uml) mean?</article-title>
          , https: //www.techopedia.com/definition/3243/unified-modeling
          <string-name>
            <surname>-</surname>
          </string-name>
          language-uml, [online], [cit. 2019-
          <volume>01</volume>
          -29]
        </mixed-citation>
      </ref>
      <ref id="ref38">
        <mixed-citation>
          38.
          <string-name>
            <surname>Voshmgir</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          : Token Economy:
          <article-title>How Blockchains and Smart Contracts Revolutionize the Economy</article-title>
          . Shermin
          <string-name>
            <surname>Voshmgir</surname>
          </string-name>
          (
          <year>2019</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref39">
        <mixed-citation>
          39. YChart:
          <article-title>Ethereum average transaction fee (</article-title>
          <year>2020</year>
          ), https://ycharts.com/ indicators/ethereum_average_transaction_fee
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>