Crypto Law
Upcoming SlideShare
Loading in...5
×
 

Crypto Law

on

  • 85 views

BitcoinConfHK

BitcoinConfHK

Statistics

Views

Total Views
85
Views on SlideShare
85
Embed Views
0

Actions

Likes
0
Downloads
9
Comments
0

0 Embeds 0

No embeds

Accessibility

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Crypto Law Crypto Law Presentation Transcript

  • Crypto Law Opportunities for cryptographic protocols in shaping the legal systems of the 21st century
  • Purpose of Law ● Prevent involuntary interactions ● eg. theft, murder, etc
  • Purpose of Law ● Mediate ongoing interactions ● eg. I offer to sell you shirt for $10, you send me $10, I do not send shirt
  • Types of fraud ● Total ● not sending a product ● Partial ● sending a product with very bad quality ● Visible ● defect is immediately obvious ● Invisible ● defects take months to manifest ● defects have only a small chance of manifesting ● Types of underlying commerce ● Product, one-time service, ongoing service ● Financial service
  • Idea: incentives ● No legal system ● Profit from acting honestly: $3 ● Profit from cheating: $10 ● Legal system ● Profit from acting honestly: $3 ● Profit from cheating: -$40 ● Problems ● How to prove fraud (information asymmetry) ● Cost of filing a claim ● Cost of enforcement
  • Cryptoeconomies ● Involuntary interaction ● Violent attack impractical ● Hacking, perhaps practical ● Ongoing interaction ● Fraud more difficult (information is more public) ● Fraud easier (people are anonymous) ● General problems ● Commerce international (enforcement harder) ● Rapidly changing society (harder to set standards)
  • Case studies TorWallet (2013) Pirateat40 (2012) Bitcoinica (2012) MtGox (2014)
  • Solutions ● Know whom you are trusting ● Add disincentive to cheat ● Require collusion to cheat ● Make cheating more visible ● Make cheating impossible
  • Know whom you are trusting ● Idea: if A trusts B, and B trusts C, then C is more likely to be trustworthy ● Secondary benefit: if C cheats B, C loses reputation with A too ● Naive implementations vulnerable to sybil attack, be careful
  • Add disincentive to cheat ● Deposits ● A submits N coins as deposit, if A cheats then deposit goes to B ● Sacrifices ● A sacrifices N coins to be able to participate in a system ● Idea: allow reputation to go negative ● Hostages ● A submits N coins as hostage, if A cheats then coins are destroyed or sent to charity
  • Require collusion to cheat ● Multisig ● Oracles (for data) ● Wallets (for personal security) ● Multisig 2.0 ● Withdrawal limits ● Rights of refusal
  • Make cheating more visible Provably fair gambling Provable solvency
  • Make cheating impossible ● Factum law ● Idea: the definition of how much money you have is based on the results of past contracts ● If you cheat, the system automatically deducts $X ● Problem: not everything is cryptographically verifiable ● Computational resources: yes ● Math problem solutions: yes ● Subjective effort: no ● Offline effort: no
  • Blockchain-based contracts Financial derivative, 21 lines of code: if !contract.storage[1000]: contract.storage[1000] = msg.sender contract.storage[1002] = msg.value contract.storage[1003] = msg.data[0] contract.storage[1004] = msg.data[1] elif !contract.storage[1001]: ethvalue = contract.storage[1002] if msg.value >= ethvalue: contract.storage[1001] = msg.sender c = call(contract.storage[1003],[contract.storage[1004]],1) othervalue = ethvalue * c contract.storage[1005] = othervalue contract.storage[1006] = block.timestamp + 500 else: othervalue = contract.storage[1005] ethvalue = othervalue / call(contract.storage[1003],contract.storage[1004]) if ethvalue >= contract.balance: send(contract.storage[1000],contract.balance) elif block.timestamp > contract.storage[1006]: send(contract.storage[1001],contract.balance - ethvalue) send(contract.storage[1000],ethvalue)
  • Applications ● Self-executing financial contracts ● Computational applications ● Proof of resource ● Proof of bandwidth ● Decentralized organization management ● Shareholder relations, board election rules, etc ● Decentralized oracles (Truthcoin, SchellingCoin)
  • Benefits ● Cost of enforcement tends to zero ● Scalable (works for both $1 microtransactions and very large trades) ● No barriers to entry, anyone can participate
  • Problems ● How to determine precedents? ● What level of bad quality is actually fraudulent? ● What are the defaults? ● Network effects ● Only effective if many people using it ● Solution: start in a community
  • End