The Merkle Tree and Cryptocurrencies

Brought by: Coursera

Overview

Apply what you have learned about cryptography and hashing in previous blockchain to the Merkle Tree, which underlies the process of adding new blocks — representing new transactions — to the blockchain. This course also introduces the concepts of proof of work and proof of stake, which play an important part in ensuring the integrity of the blockchain.

This course requires the purchase of two books for the completion of assignments:

Drescher, D. (2017). Blockchain Basics: A Non-Technical Introduction in 25 Steps. (ISBN-13: 978-1484226032)
Antonoupoulos, A. M. (2017). The Internet of Money, Volume Two. (ISBN-13: 978-1947910065)

Syllabus

  • Hashing and The Merkle Tree
    • This first week introduces more technical concepts including how we look at the manner in which data blocks are assembled as well as how hash values and encryption are used to ensure the proper sequencing and integrity of data blocks that are added to a blockchain.
  • Hashing and an Introduction to Cryptocurrencies
    • This week we will apply what we have learned up to this point about hash values and hash sequences. You will practice assembling block header hash values for a specified hash puzzle difficulty level.
  • Proof of Work and Proof of Stake I
    • Now that we have investigated hash functions and hash puzzles, we will focus on proof-of-work, which is an approach to modifying the blockchain that can be difficult and time-consuming to compute. We will also focus on proof-of-stake, an alternative to updating the blockchain in which larger nodes are modified that already represent a large portion of the blockchain. We will investigate the pros and cons of each approach and prepare to apply the principles of proof-of-work and proof-of-stake.
  • Proof of Work and Proof of Stake II
    • In this final week, after comparing proof-of-work and proof-of-stake, we will explore and describe alternative approaches that combine the best features of proof-of-work and proof-of-stake in this course’s final assignment.

Taught by

Stefano M. Stefan

The Merkle Tree and Cryptocurrencies
Go to course

The Merkle Tree and Cryptocurrencies

Brought by: Coursera

  • Coursera
  • Free
  • English
  • Certificate Available
  • Available at any time
  • beginner
  • French, Portuguese, Russian, English, Spanish, Arabic, German, Thai, Indonesian, Kazakh, Hindi, Swedish, Korean, Greek, Italian, Chinese, Ukrainian, Japanese, Polish, Dutch, Turkish
8.1.2PHP Version252msRequest Duration2MBMemory UsageGET en/courses/{slug}Route
    • Booting (162ms)
    • Application (89.92ms)
    • 1 x Booting (64.1%)
      161.59ms
      1 x Application (35.67%)
      89.92ms
      14 templates were rendered
      • public.courses.show (resources/views/public/courses/show.blade.php)3bladefile
        Params
        0
        course
        1
        links
        2
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.courses.partials.details (resources/views/public/courses/partials/details.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.layouts.main (resources/views/public/layouts/main.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.meta (resources/views/public/layouts/partials/meta.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.navbar (resources/views/public/layouts/partials/navbar.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.links (resources/views/public/auth/profile/partials/links.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.layouts.partials.flash-session (resources/views/public/layouts/partials/flash-session.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      uri
      GET en/courses/{slug}
      middleware
      web, localize:en
      controller
      App\Http\Controllers\CourseController@show
      as
      en.courses.show
      namespace
      prefix
      /en
      where
      file
      app/Http/Controllers/CourseController.php:17-35
      7 statements were executed3.61ms
      • select * from `courses` where `slug_en` = 'the-merkle-tree-and-cryptocurrencies' limit 1
        2.24ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. the-merkle-tree-and-cryptocurrencies
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:20
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • update `courses` set `visitors` = `visitors` + 1, `courses`.`updated_at` = '2025-04-25 21:16:02' where `id` = 120
        430μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-04-25 21:16:02
        • 1. 120
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:21
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `topic_id`, `slug_en`, `slug_ar` from `subjects` where `subjects`.`id` in (24)
        180μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `slug_en`, `slug_ar` from `topics` where `topics`.`id` in (1)
        170μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 25. /app/Http/Controllers/CourseController.php:23
        • 26. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 27. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 28. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 29. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `institutions` where `institutions`.`id` in (20) and `institutions`.`deleted_at` is null
        170μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `providers` where `providers`.`id` in (2) and `providers`.`deleted_at` is null
        170μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `html_files` where `html_files`.`id` = 120 limit 1
        250μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 120
        Backtrace
        • 21. /app/Models/Course.php:84
        • 28. view::public.courses.show:29
        • 30. /vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:125
        • 31. /vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php:58
        • 32. /vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php:72
      App\Models\HtmlFile
      1
      App\Models\Provider
      1
      App\Models\Institution
      1
      App\Models\Topic
      1
      App\Models\Subject
      1
      App\Models\Course
      1
        _token
        Pl0RqR91q4MtAUlSi1ud3sjMjKBVpIxgXzWA3qwb
        locale
        en
        _previous
        array:1 [ "url" => "https://www.corspedia.com/en/courses/the-merkle-tree-and-cryptocurrencies" ]
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /en/courses/the-merkle-tree-and-cryptocurrencies
        status_code
        200
        
        status_text
        OK
        format
        html
        content_type
        text/html; charset=UTF-8
        request_query
        []
        
        request_request
        []
        
        request_headers
        0 of 0
        array:24 [ "cf-ipcountry" => array:1 [ 0 => "US" ] "cf-connecting-ip" => array:1 [ 0 => "18.216.169.23" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "sec-fetch-site" => array:1 [ 0 => "none" ] "accept" => array:1 [ 0 => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "sec-ch-ua-platform" => array:1 [ 0 => ""Windows"" ] "sec-ch-ua-mobile" => array:1 [ 0 => "?0" ] "sec-ch-ua" => array:1 [ 0 => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" ] "cache-control" => array:1 [ 0 => "no-cache" ] "pragma" => array:1 [ 0 => "no-cache" ] "sec-fetch-dest" => array:1 [ 0 => "document" ] "cf-ray" => array:1 [ 0 => "9360dbf22e41e814-ORD" ] "accept-encoding" => array:1 [ 0 => "gzip, br" ] "priority" => array:1 [ 0 => "u=0, i" ] "sec-fetch-user" => array:1 [ 0 => "?1" ] "sec-fetch-mode" => array:1 [ 0 => "navigate" ] "x-forwarded-for" => array:1 [ 0 => "18.216.169.23" ] "host" => array:1 [ 0 => "www.corspedia.com" ] "content-length" => array:1 [ 0 => "" ] "content-type" => array:1 [ 0 => "" ] ]
        request_server
        0 of 0
        array:50 [ "USER" => "www-data" "HOME" => "/var/www" "HTTP_CF_IPCOUNTRY" => "US" "HTTP_CF_CONNECTING_IP" => "18.216.169.23" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_CF_VISITOR" => "{"scheme":"https"}" "HTTP_SEC_FETCH_SITE" => "none" "HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" "HTTP_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "HTTP_UPGRADE_INSECURE_REQUESTS" => "1" "HTTP_SEC_CH_UA_PLATFORM" => ""Windows"" "HTTP_SEC_CH_UA_MOBILE" => "?0" "HTTP_SEC_CH_UA" => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_CF_RAY" => "9360dbf22e41e814-ORD" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_PRIORITY" => "u=0, i" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_X_FORWARDED_FOR" => "18.216.169.23" "HTTP_HOST" => "www.corspedia.com" "REDIRECT_STATUS" => "200" "SERVER_NAME" => "corspedia.com" "SERVER_PORT" => "443" "SERVER_ADDR" => "141.95.147.152" "REMOTE_USER" => "" "REMOTE_PORT" => "45820" "REMOTE_ADDR" => "172.71.254.169" "SERVER_SOFTWARE" => "nginx/1.18.0" "GATEWAY_INTERFACE" => "CGI/1.1" "HTTPS" => "on" "REQUEST_SCHEME" => "https" "SERVER_PROTOCOL" => "HTTP/2.0" "DOCUMENT_ROOT" => "/var/www/corspedia/public" "DOCUMENT_URI" => "/index.php" "REQUEST_URI" => "/en/courses/the-merkle-tree-and-cryptocurrencies" "SCRIPT_NAME" => "/index.php" "CONTENT_LENGTH" => "" "CONTENT_TYPE" => "" "REQUEST_METHOD" => "GET" "QUERY_STRING" => "" "SCRIPT_FILENAME" => "/var/www/corspedia/public/index.php" "PATH_INFO" => "" "FCGI_ROLE" => "RESPONDER" "PHP_SELF" => "/index.php" "REQUEST_TIME_FLOAT" => 1745615762.5433 "REQUEST_TIME" => 1745615762 ]
        request_cookies
        []
        
        response_headers
        0 of 0
        array:5 [ "content-type" => array:1 [ 0 => "text/html; charset=UTF-8" ] "cache-control" => array:1 [ 0 => "no-cache, private" ] "date" => array:1 [ 0 => "Fri, 25 Apr 2025 21:16:02 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IlNRTFVCaWJ2RklNNnBRbi9yYjdQVXc9PSIsInZhbHVlIjoiRks1RG9qV3BsSVpkVVkxWUhSUytIN0tZNFBrSzNSS0RBWDVFR0p3V1N1TUoyRGQ4N2IxcmprRFROZmlBWFpqOHlMQUxOMHBrSFVzVk1iR0NxeWFLS1Ywb3FYaTR2ZysyRzFIUE9LQnQ5U0VPOGk4akdlUDNldFdSdnZtako5cE0iLCJtYWMiOiIwYTk2OTNjZTk0YmQyZjU1NTUwNzNhMWU5OWFmNzg1YWEzZDRkMDhiOTVjYmVlZDkyNjc4Y2E0MzRiZjU3NTAyIiwidGFnIjoiIn0%3D; expires=Fri, 25 Apr 2025 23:16:02 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6IlNRTFVCaWJ2RklNNnBRbi9yYjdQVXc9PSIsInZhbHVlIjoiRks1RG9qV3BsSVpkVVkxWUhSUytIN0tZNFBrSzNSS0RBWDVFR0p3V1N1TUoyRGQ4N2IxcmprRFROZmlBWFpqOHlMQUxOM" 1 => "laravel_session=eyJpdiI6IkNNQzI0V3gvK0Q2SGJLbjVucVl0OEE9PSIsInZhbHVlIjoiOXgxMVBzMmVITk50WkJNMWd3UWdDV2FjOG5kQkNNZk1vUGlKTU5PVkJONVJVMldvZUswK240QTVpQ3FLNzVSMXU2emY0c1JLMWI3YkNEcWd4WTV1MGxEc2xwMzdxckQ1Q1pLRDM5NUVXZmQrNHZDL2xVQVVYd3krZ3k2QVlENjgiLCJtYWMiOiJiZmYyY2VjNzE4Mzg1YWY3Y2E1YTNlZTkxZjlhMDk4NTJiNzc0ZWU2YzdmZWMxM2I5NDg3YTM5MjY2M2I1MWI2IiwidGFnIjoiIn0%3D; expires=Fri, 25 Apr 2025 23:16:02 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6IkNNQzI0V3gvK0Q2SGJLbjVucVl0OEE9PSIsInZhbHVlIjoiOXgxMVBzMmVITk50WkJNMWd3UWdDV2FjOG5kQkNNZk1vUGlKTU5PVkJONVJVMldvZUswK240QTVpQ3FLNzVSMXU2" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IlNRTFVCaWJ2RklNNnBRbi9yYjdQVXc9PSIsInZhbHVlIjoiRks1RG9qV3BsSVpkVVkxWUhSUytIN0tZNFBrSzNSS0RBWDVFR0p3V1N1TUoyRGQ4N2IxcmprRFROZmlBWFpqOHlMQUxOMHBrSFVzVk1iR0NxeWFLS1Ywb3FYaTR2ZysyRzFIUE9LQnQ5U0VPOGk4akdlUDNldFdSdnZtako5cE0iLCJtYWMiOiIwYTk2OTNjZTk0YmQyZjU1NTUwNzNhMWU5OWFmNzg1YWEzZDRkMDhiOTVjYmVlZDkyNjc4Y2E0MzRiZjU3NTAyIiwidGFnIjoiIn0%3D; expires=Fri, 25-Apr-2025 23:16:02 GMT; path=/XSRF-TOKEN=eyJpdiI6IlNRTFVCaWJ2RklNNnBRbi9yYjdQVXc9PSIsInZhbHVlIjoiRks1RG9qV3BsSVpkVVkxWUhSUytIN0tZNFBrSzNSS0RBWDVFR0p3V1N1TUoyRGQ4N2IxcmprRFROZmlBWFpqOHlMQUxOM" 1 => "laravel_session=eyJpdiI6IkNNQzI0V3gvK0Q2SGJLbjVucVl0OEE9PSIsInZhbHVlIjoiOXgxMVBzMmVITk50WkJNMWd3UWdDV2FjOG5kQkNNZk1vUGlKTU5PVkJONVJVMldvZUswK240QTVpQ3FLNzVSMXU2emY0c1JLMWI3YkNEcWd4WTV1MGxEc2xwMzdxckQ1Q1pLRDM5NUVXZmQrNHZDL2xVQVVYd3krZ3k2QVlENjgiLCJtYWMiOiJiZmYyY2VjNzE4Mzg1YWY3Y2E1YTNlZTkxZjlhMDk4NTJiNzc0ZWU2YzdmZWMxM2I5NDg3YTM5MjY2M2I1MWI2IiwidGFnIjoiIn0%3D; expires=Fri, 25-Apr-2025 23:16:02 GMT; path=/; httponlylaravel_session=eyJpdiI6IkNNQzI0V3gvK0Q2SGJLbjVucVl0OEE9PSIsInZhbHVlIjoiOXgxMVBzMmVITk50WkJNMWd3UWdDV2FjOG5kQkNNZk1vUGlKTU5PVkJONVJVMldvZUswK240QTVpQ3FLNzVSMXU2" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "Pl0RqR91q4MtAUlSi1ud3sjMjKBVpIxgXzWA3qwb" "locale" => "en" "_previous" => array:1 [ "url" => "https://www.corspedia.com/en/courses/the-merkle-tree-and-cryptocurrencies" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]