Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Upcoming SlideShare
What to Upload to SlideShare
Next
Download to read offline and view in fullscreen.

0

Share

Download to read offline

Dylan Butler & Oliver Hager - Building a cross platform cryptocurrency app

Download to read offline

Palestra DevCamp 2019

Related Books

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

Dylan Butler & Oliver Hager - Building a cross platform cryptocurrency app

  1. 1. Building a cross-platform cryptocurrency app Oliver Hager & Dylan Butler
  2. 2. Oliver Hager Software Craftsman @ Dextra Developer @ Burst Brazil since 2008 Capoeira since 2001 Coding since 1992 oliverhager ohager @ohager5
  3. 3. Dylan Butler Manager, Cloud Front End Engineering @ PlayStation Developer @ Burst Developer for 15 years Licensed attorney dylanbutler blankey1337 @blankey1337
  4. 4. Building a cross-platform cryptocurrency application
  5. 5. Cross-Platform Monorepo App Architecture
  6. 6. Library Development & Maintenance
  7. 7. Cryptocurrency App Development
  8. 8. Smart Contracts
  9. 9. Blockchain Basics
  10. 10. A block contains transactions. TX1 ... TXn
  11. 11. Transactions carry arbitrary data of limited length. TX1 ... TXn 4022e1a87 23171628e 484750a.. .
  12. 12. 0x98F… TX1 ... TXn Each validated block is identified by a hash. 4022e1a87 23171628e 484750a.. .
  13. 13. 0x98F… TX1 ... TXn Validation is done by the P2P network. 4022e1a87 23171628e 484750a.. . 0x98F...
  14. 14. This hash is combined with the content of the prior block. 0x1337… TX1 ... TXn 0xBA75… TX1 ... TXn 0xF0CA… TX1 ... TXn
  15. 15. Blockchain is useful as a ledger, or transaction record.
  16. 16. Most famous use case: Cryptocurrency
  17. 17. BURSTCOIN and BITCOIN
  18. 18. The difference?
  19. 19. Proof of Capacity
  20. 20. Energy Efficient
  21. 21. Faster transactions
  22. 22. Smart Contracts
  23. 23. And even more features
  24. 24. Community August 2014 Genesis Block Dev Unknown August 2017 PoC Consortium January 2019 BAT and BMF founded January 2016 Community Takeover
  25. 25. How I got started
  26. 26. June 2017
  27. 27. BTC Price: $2.500 USD
  28. 28. BTC is gaining traction.
  29. 29. What would I do if I could go back in time?
  30. 30. I’d jump into 2010 and start mining Bitcoin!
  31. 31. But I was too late.
  32. 32. Then I heard about hard-drive mining.
  33. 33. I was immediately interested.
  34. 34. I tested out mining.
  35. 35. It could be more user-friendly.
  36. 36. My first contribution: Autoplotter
  37. 37. I started working on other tools.
  38. 38. Still mining this whole time.
  39. 39. How I got started
  40. 40. I wanted to understand.
  41. 41. I wanted to help.
  42. 42. I saw opportunity.
  43. 43. I built a few small Burst tools.
  44. 44. But something was preventing mass adoption.
  45. 45. Getting a local wallet setup and running was painful.
  46. 46. The Burst wallet was also not available on iOS devices.
  47. 47. If I couldn’t use it, my friends & family couldn’t either.
  48. 48. It was clear what needed to be done.
  49. 49. Burst needed an easy-to-use wallet.
  50. 50. I started working on a new wallet.
  51. 51. It was a popular idea.
  52. 52. Then I got a message.
  53. 53. Let’s get started
  54. 54. Project Goals
  55. 55. 1. It needs to be easy to use
  56. 56. 2. It needs to be secure
  57. 57. 3. It needs to be cross-platform:
  58. 58. A. Web
  59. 59. B. Desktop
  60. 60. C. Mobile
  61. 61. What should we call this project?
  62. 62. Project Phoenix
  63. 63. A cross-platform cryptocurrency wallet
  64. 64. Is this real life?
  65. 65. We both have full-time jobs.
  66. 66. Time is precious.
  67. 67. We started thinking.
  68. 68. Code reuse is going to be important.
  69. 69. How are we going to manage these apps and libs?
  70. 70. Enter the monorepo
  71. 71. Monorepo, not monolith
  72. 72. Mobile, desktop, and npm libs are published separately.
  73. 73. npm library (@burstjs)
  74. 74. NPM Library Do’s and Don’ts
  75. 75. Do: Follow Semver Credits: jontejada.com
  76. 76. Don’t: Import from src
  77. 77. Do: Import from dist or out
  78. 78. Do: Use Lerna for scoped packages
  79. 79. Do: Document the reusable things
  80. 80. We settled on jsdoc2md and typedoc
  81. 81. npm scoped packages
  82. 82. Minified bundle
  83. 83. Hammer Demo Time
  84. 84. Modern software requires modern tooling.
  85. 85. Code Quality
  86. 86. Drafting a releaseTravis CI
  87. 87. Codacy
  88. 88. Codecov
  89. 89. Snyk
  90. 90. Drafting a release
  91. 91. One line does everything
  92. 92. It builds and tests the Angular app
  93. 93. It builds each of the desktop targets
  94. 94. It creates a draft release on GitHub
  95. 95. And uploads the artifacts to the release
  96. 96. Docs are auto-published to Github Pages
  97. 97. We’ve got our stack. Now what?
  98. 98. Let’s build a crypto app
  99. 99. Logging into a crypto app is different.
  100. 100. A client/server architectures require trust.
  101. 101. Trust in the server.
  102. 102. Cryptocurrencies are different.
  103. 103. Decentralized = trustless
  104. 104. No username-password pair
  105. 105. No username-password pair
  106. 106. Just a single passphrase
  107. 107. Your passphrase is your account
  108. 108. Your passphrase is your account
  109. 109. You never actually login.
  110. 110. Prove that public key derives from passphrase.
  111. 111. No server calls
  112. 112. Making a transaction Sending money
  113. 113. What do we need to make a transaction?
  114. 114. Sufficient balance
  115. 115. A correct passphrase
  116. 116. Sender
  117. 117. Recipient
  118. 118. Amount
  119. 119. Fee
  120. 120. If we have those ingredients, we can make a transaction.
  121. 121. sendAmount
  122. 122. How to send transactions over the blockchain?
  123. 123. Send, sign and broadcast
  124. 124. Sign and broadcast
  125. 125. generateSignature
  126. 126. Broadcast it to peers
  127. 127. Those peers will tell their peers
  128. 128. Miners put transactions into a block
  129. 129. Then seal a block with a hash
  130. 130. Nodes validate the block
  131. 131. And the cycle repeats
  132. 132. Smart Contracts
  133. 133. 0x98F… TX1 ... TXn Remember? 4022e1a87 23171628e 484750a.. .
  134. 134. 0x98F… TX1 ... TXn Executable Code is Data 12070300003033040308000000350 001090000001e090000000c129b02 00002835070308000000123100000 01a06000000331001090000003506 030a000000100a000000110700000 033100109000000320a033504010a 000000100a0000001106000000020 a00000007000000060a0000000400 0000100a
  135. 135. Code is Law
  136. 136. Blockchain is Single Source of Truth
  137. 137. Smart Contracts are the reactive parts
  138. 138. Automated and Trustless Execution
  139. 139. Use case: Gaming
  140. 140. Use case: Ownership
  141. 141. Use case: Supply Chain
  142. 142. In BURST Smart Contracts are written in Java
  143. 143. Compiled to machine code
  144. 144. Published to the blockchain
  145. 145. Triggered on each transaction
  146. 146. And eventually executes
  147. 147. Execution costs!
  148. 148. Limited Space for Code!
  149. 149. Blocktime
  150. 150. Hammer Demo Time

Palestra DevCamp 2019

Views

Total views

523

On Slideshare

0

From embeds

0

Number of embeds

12

Actions

Downloads

2

Shares

0

Comments

0

Likes

0

×