Introduction and Applications of
Smart Contracts
What is Blockchain?
⦿ Blockchain technology is a software; a protocol for the secure
transfer of unique instances of value (e.g. money, property,
contracts, and identity credentials) via the internet without
requiring a third-party intermediary such as a bank or
government
⦿ Email over IP, Voice over IP, Money over IP
Application Phone
Email Bitcoin
calls
Protocol
SMTP VoIP Blockchain
Infrastructure
Internet
Page 7 © Copyright 2017 | All Right Reserved
How does Bitcoin work?
Use eWallet app to submit transaction
Scan recipient’s address $ appears in recipient’s eWallet
and submit transaction
Wallet has keys not money
Creates PKI Signature address pairs A new PKI hashed signature for each transaction
Source: https://www.youtube.com/watch?v=t5JGQXCTe3c
Page 8 © Copyright 2017 | All Right Reserved
P2P network confirms & records
transactions
Transactions submitted to mempool, and miners assemble Transaction computationally confirmed
new batch (block) of transactions each 10 min Ledger account balances updated
Each block includes a cryptographic hash of the last
block, chaining the blocks, hence “Blockchain” Peer nodes maintain distributed ledger
Source: https://www.youtube.com/watch?v=t5JGQXCTe3c
Page 9 © Copyright 2017 | All Right Reserved
How robust is the Bitcoin p2p
network?
• 11,678 global nodes run full Bitcoind (2/18); 160 gb
p2p: peer to peer; Source: https://bitnodes.21.co, https://github.com/bitcoin/bitcoin
Page 10 © Copyright 2017 | All Right Reserved
Run the software yourself:
What is Bitcoin mining?
Mining is the accounting function to record transactions,
fee-based ($130,000/block each 10 min)
Mining ASICs “discover new blocks”
Mining software makes nonce guesses to win the
right to record a new block (“discover a block”)
At the rate of 2^32 (4 billion) hashes (guesses)/second
One machine at random guesses the 32-bit nonce
Winning machine confirms and records the transactions,
and collects the rewards
All nodes confirm the transactions and append the
new block to their copy of the distributed ledger
“Wasteful” effort deters malicious players
Fast because ASICs
represent the hashing
algorithm as hardware
Page 11 © Copyright 2017 | All Right Reserved
Key Blockchain
Concepts
⦿Public-private networks
⦿Trustless vs trusted
⦿Distributed network
⦿Consensus algorithms
⦿Immutability
⦿Blockchain: trustless, distributed (peer-
based), consensus-driven, immutable
Page 12 © Copyright 2017 | All Right Reserved
What is a Ledger?
⦿A ledger is like a database, a
Google or Excel spreadsheet
⦿Add new records by appending
rows
⦿Each row contains information
⦿Account balances, who owns
certain assets
⦿Memory and execution state
of a computer program
Page 13 © Copyright 2017 | All Right Reserved
Why Distributed?
⦿Distributed network
⦿Many nodes or peers that are
connected in a network with no single
point of failure or centralized control
⦿Security and resiliency: design the
network so that if some peers crash or
attack the network maliciously, the
network can still operate (Byzantine
Fault Tolerance)
Page 14 © Copyright 2017 | All Right Reserved
What is Immutable?
⦿Cannot change the data once its
committed to the ledger
⦿Data is auditable
⦿Change by issuing offsetting
transaction
⦿Smart contract code
Page 15 © Copyright 2017 | All Right Reserved
Cryptographic Identity
⦿To use the network, need a Cryptographic Identity
⦿(sort of like an email address)
⦿If want to access your email, you need the
password, which functions similarly to a private
key and your public key is like your address
(more complicated)
⦿Authentication: peers sign transactions with their
cryptographic identity, this enables account
“ownership” and can attribute blame
Page 16 © Copyright 2017 | All Right Reserved
Consensus in
Distributed Networks
⦿In order to update the ledger, the network needs to come to
consensus using an algorithm
⦿Consensus: what does it mean to come to consensus on a
distributed network?
⦿It means that everyone agrees on the current state (e.g.
how much money does each account have) and making
sure that no one is double-spending money (easy in
Bitcoin, more complex in Ethereum, business networks)
⦿How do we come to consensus in this distributed manner?
Page 17 © Copyright 2017 | All Right Reserved
Three Primary
Consensus Algorithms
⦿POW: Proof of Work (Bitcoin)
⦿Expensive, not ecological, wasteful computation
⦿POS: Proof of Stake (Ethereum)
⦿Next-gen: PBFT: Practical Byzantine Fault Tolerance (DFINITY,
Algorand)
⦿Law of large numbers: diversity of participants
⦿For each block of transactions, randomly select a small, one-time group of
users in a safe and fair way
⦿To protect from attackers, the identities of these users are hidden until the
block is confirmed
⦿The size of this group remains constant as the network grows
Page 18 © Copyright 2017 | All Right Reserved
Key Blockchain
Concepts
⦿Public-private networks
⦿Trustless vs trusted
⦿Distributed network
⦿Consensus algorithms
⦿Immutability
⦿Blockchain: trustless, distributed (peer-
based), consensus-driven, immutable
Page 19 © Copyright 2017 | All Right Reserved
Blockchain Context
Code is law
What are Smart Contracts
Definition: Smart contracts are self-executing contracts with
the terms of the agreement directly written into code. They
automatically enforce and execute the terms of the contract
when predefined conditions are met.
Characteristics:
- Immutable
- Trustless
- Automated
- Secure
What are Smart Contracts
1. **Immutable:** Once deployed on the blockchain, smart
contracts cannot be altered or tampered with, providing a high
level of security and trust.
2. **Trustless:** Smart contracts operate on a decentralized
network, removing the need for trust between parties as the
code itself ensures execution without the need for
intermediaries.
What are Smart Contracts
3. **Automated:** Smart contracts automatically execute
actions when specific conditions are met, eliminating the need
for manual intervention and reducing the potential for human
error.
4. **Secure:** Utilizing cryptographic techniques and operating
on a distributed ledger, smart contracts offer enhanced
security, making them resistant to fraud and unauthorized
alterations.
Smart contracts represent a significant innovation in contract
execution, offering efficiency, transparency, and security in
various applications across industries.
Brief History of Smart Contracts
- Early Concept: Proposed by computer scientist Nick Szabo
in 1994.
- Ethereum Introduction: Vitalik Buterin introduced Ethereum
in 2013, which popularized the concept of smart contracts
by allowing developers to deploy them on its blockchain.
- Evolution: Since then, smart contracts have evolved
significantly, finding applications across various industries.
Applications of Smart Contracts
- Financial Services:
- Automated Payments
- Loan Agreements
- Derivatives Trading
- Supply Chain Management:
- Traceability
- Transparency
- Automated Compliance
Supply chain management (SCM) in the context of smart
contracts involves leveraging blockchain technology to improve
transparency, traceability, and efficiency in supply chain operations.
Smart contracts can automate and streamline various aspects of
the supply chain, including procurement, logistics, inventory
management, and payment settlements.
Applications of Smart Contracts
- Real Estate:
- Property Transfers
- Rental Agreements
- Healthcare:
- Patient Data Management
- Insurance Claims Processing
- Drug Traceability
Applications of Smart Contracts
- Legal Industry:
- Automated Contract Execution
- Legal Documentation Management
- Dispute Resolution
- Gaming and Entertainment:
- In-game Asset Trading
- Ticket Sales
- Royalty Distribution
Smart Contracts Examples
Example 1 of Smart Contracts
Creating a flowchart for a smart contract related to food delivery
involves multiple steps and interactions between various parties.
Here's a simplified flowchart outlining the basic logic:
Start
|
Input Order Details (Customer Address, Delivery Address, Items, Payment Details)
|
Verify Payment
|
Accept Order
|
Assign Delivery Person
|
Pickup Order
|
Deliver Order to Customer Address
|
Confirm Delivery
|
Release Payment to Delivery Person
|
End
Example 1 of Smart Contracts
Let's break down the flow:
Start: The contract execution begins.
Input Order Details: Input data including the customer's address,
delivery address, ordered items, and payment details.
Verify Payment: Verify that the payment has been made by the
customer.
Accept Order: If the payment is verified, accept the order.
Assign Delivery Person: Assign a delivery person to fulfill the
order.
Pickup Order: The delivery person picks up the order from the
restaurant or designated pickup location.
Deliver Order to Customer Address: The delivery person delivers
the order to the customer's specified address.
Confirm Delivery: The customer confirms the receipt of the order.
Release Payment to Delivery Person: If the delivery is confirmed,
release the payment to the delivery person.
End: Contract execution concludes.
Example 2 of Smart Contracts
Creating a flowchart for a smart contract can be a bit abstract since
smart contracts are typically written in programming languages such as
Solidity for the Ethereum blockchain. However, I can provide you with a
simplified flowchart that outlines the logic of a basic smart contract.
Let's consider a simple example of a token transfer smart contract.
Start
|
Input Sender Address, Receiver Address, Token Amount
|
Check if Sender has Sufficient Balance
|
If Yes, Deduct Token Amount from Sender's Balance
|
Add Token Amount to Receiver's Balance
|
Update Sender's and Receiver's Balances on the Blockchain
|
End
Example of Smart Contracts
This flowchart represents a basic smart contract logic for transferring
tokens between two parties on a blockchain. Here's a breakdown of the
flow:
Start: The contract execution begins.
Input Sender Address, Receiver Address, Token Amount: Input
data including the sender's address, receiver's address, and the amount
of tokens to transfer.
Check if Sender has Sufficient Balance: Verify if the sender has
enough tokens to transfer.
Deduct Token Amount from Sender's Balance: If the sender has
sufficient balance, deduct the token amount from their balance.
Add Token Amount to Receiver's Balance: Add the deducted token
amount to the receiver's balance.
Update Sender's and Receiver's Balances on the Blockchain:
Update the balances of both the sender and receiver on the blockchain.
End: Contract execution concludes.
Benefits of Smart Contracts
- Efficiency: Automation reduces manual intervention and
speeds up processes.
- Transparency: All transactions are recorded on a
distributed ledger, ensuring transparency and auditability.
- Security: Cryptography and decentralization enhance
security, reducing the risk of fraud or tampering.
- Cost Savings: Eliminates the need for intermediaries,
reducing overhead costs.
- Accessibility: Smart contracts can be accessed and
executed from anywhere with an internet connection.
Challenges and Considerations
- Scalability: Current blockchain technologies face scalability
issues, limiting the number of transactions per second.
- Security Risks: Smart contracts are susceptible to bugs and
vulnerabilities that could lead to financial losses.
- Legal Compliance: Ambiguities in legal frameworks
regarding smart contracts pose challenges for adoption.
- User Experience: The complexity of smart contract
development and execution may deter mainstream
adoption.
Challenges and Considerations
Scalability: Current blockchain technologies face scalability
issues, limiting the number of transactions per second.
Explanation: Current blockchain technologies, including those on
which smart contracts are deployed, often face scalability issues.
This means that as more transactions occur on the network, the
speed and efficiency of processing those transactions can
decrease.
Example: In a decentralized finance (DeFi) application where smart
contracts are used for lending and borrowing, high transaction
volumes can lead to network congestion and increased transaction
fees. This can deter users and limit the scalability of the application.
Challenges and Considerations
Security Risks:
Explanation: Smart contracts are susceptible to bugs and
vulnerabilities in their code, which can lead to unintended
consequences or exploitation by malicious actors. Once deployed,
smart contracts are immutable, meaning any errors or
vulnerabilities cannot be easily rectified.
Example: In 2016, the Decentralized Autonomous Organization
(DAO) was exploited due to a vulnerability in its smart contract
code, resulting in the loss of millions of dollars worth of
cryptocurrency. This incident highlighted the importance of thorough
auditing and testing of smart contract code to mitigate security risks.
Challenges and Considerations
Legal Compliance:
Explanation: Legal frameworks regarding smart contracts vary
across jurisdictions and may not always align with the technology's
capabilities. Ambiguities in laws and regulations can pose
challenges for the widespread adoption of smart contracts,
particularly in areas such as contract enforceability and dispute
resolution.
Example: In some jurisdictions, traditional contract law may require
written agreements signed by all parties, which may conflict with the
purely digital nature of smart contracts. Resolving these legal
ambiguities is crucial for the broader acceptance and integration of
smart contracts into legal frameworks.
Challenges and Considerations
User Experience:
Explanation: The complexity of developing, deploying, and
interacting with smart contracts can be a barrier to mainstream
adoption. Users may require technical expertise to understand how
smart contracts function and how to interact with them effectively.
Example: A decentralized application (DApp) built on smart
contracts may require users to manage private keys and interact
with blockchain wallets, which can be intimidating for those
unfamiliar with blockchain technology. Improving the user
experience through intuitive interfaces and simplified processes is
essential for increasing adoption.
Addressing these challenges through technological advancements,
regulatory clarity, and improved user interfaces is critical for
unlocking the full potential of smart contracts and realizing their
benefits across various industries.
Smart Contract Lifecycle
ABI stands for Application Binary Interface.
The ABI defines how functions and data are accessed in a smart
contract. It serves as an interface between the compiled smart contract
bytecode and the outside world, enabling external applications, such as
user interfaces or other smart contracts, to interact with the contract.
The ABI specifies the following details:
Function Signatures: It includes the names and parameters of the
functions defined in the smart contract, along with their input and output
data types.
Events: It describes the structure of events emitted by the smart
contract, including their names and parameters.
Data Structures: It outlines the layout of complex data structures used
within the smart contract.
The ABI is crucial for developers who want to interact with a deployed
smart contract programmatically. It allows them to understand how to
construct function calls and interpret the responses from the contract.
Additionally, ABI is essential for tools and libraries that facilitate smart
contract interactions, such as web3.js for Ethereum-based contracts.
Interacting with a Smart Contract
• Smart contract is not self-executable
• It requires an external call to be executed. Otherwise, it is
pending till one calls one of its implemented functions [9]
• Once it is executed, transactions resulting from the
execution are transcribed on the blockchain and
eventually smart contract’s meta data are updated
Interacting with a Smart Contract
• Contract address and its ABI are needed in order to
communicate with a smart contract
• Smart contract execution can be launched by human
(private key account) or by smart contract (public key
account) calls
• Example of smart contract calls: alarm clock service
Alarm Clock Service
• Smart contracts are not self-executable
• A transaction is executed as soon as it is added to a block [14]
• Ethereum contracts that do not implement suicide, and allows to schedule
any contract function calls in a specified block
• Equivalent to decentralized crons [16]
• Scheduling can be done by contracts or Ethereum account holders [15]
• Scheduled function calls execution allow to earn ethers
• Anyone can execute function call since he is operating on Ethereum node
• We can specify a list of authorized schedulers addresses [15]
• Alarm clock contract specifies the transaction details: destination address,
execution time window, transaction gas cost and the reward to be paid to
the account that triggered the transaction [14]