Thảo Trịnh -
  • Agile
  • Chuyện code
    • Design Pattern
    • Blockchain
  • Chuyện đọc
Agile
Chuyện code
    Design Pattern
    Blockchain
Chuyện đọc
  • Agile
  • Chuyện code
    • Design Pattern
    • Blockchain
  • Chuyện đọc
Thảo Trịnh -
Blockchain

Tạo ứng dụng blockchain đầu tiên với C#

Thông qua bài viết này mình sẽ hướng dẫn các bạn làm quen và hiểu thêm về công nghệ Blockchain.

Mục đích

– Tạo hệ thống Blockchain đơn giản nhất.
– Tạo hệ thống mining (poor of work) đơn giản.
– Khám phá thêm về Blockchain.

Kiến thức cần chuẩn bị: OOP, biết 1 ngôn ngữ hướng đội tượng.
Ok giờ xắn tay vào việc nào

Making the Blockchain.

Một blockchain là danh sách, chuỗi các khối (A blockchain is just a chain/list of blocks). Mỗi block trong blockchain sẽ chứa chữ ký số của nó, chữ ký số của khối trước nó và dữ liệu của khối (dữ liệu giao dịch là một ví dụ).

Hash = Digital Signature.

Mỗi khối không chỉ chứa mã hash của khối trước nó mà nó còn chứa mã hash của chính nó, được tính toán dựa trên mã hash của khối trước nó. Nếu dữ liệu khối trước đó bị thay đổi (khối A), việc này dẫn tới thay đổi mã hash của khối A, do mã hash được tính toán dựa trên data này. Việc này dẫn tới sự thay đổi mã hash của tất cả các khối trong chuỗi. Việc tính toán và so sánh giúp chúng ta phát hiện ra bất kì sự thay đổi nào trong blockchain.

Điều này có nghĩa là gì? – Nghĩa là khi thay đổi dữ liệu của 1 block thì sẽ dẫn tới thay đổi dữ liệu của rất rất nhiều block, và dãn tới thay đổi chain (break the chain).

Giờ chúng ta sẽ thừ bắt đầu xây dựng một hệ thống Blockchain đơn giản.

Tạo project đặt tên là NoobChain

Thêm class Block để xây dựng blockchain

class Block
{
        public String hash;
        public String previousHash;
        private String data; // Trong ví dụ này chúng ta chỉ lưu data là một thông báo.
        private long timeStamp;
        

        //Block Constructor.
        public Block(String data, String previousHash)
        {
            this.data = data;
            this.previousHash = previousHash;
            this.timeStamp = DatetimeHandle.GetTime();            
        }     

}

Như bạn thấy Block cơ bản của chúng ta chứa một chuỗi hash sẽ dùng để lưu chữ kí số. Một biến previousHash để lưu hash của khối trước nó, và dữ liệu của khối.

Bước tiếp theo chúng ta sẽ tiến hành tạo chữ ký số.
Tạo lớp HashSha256, áp dụng thuật toán sha256 để sinh chuỗi, với nội dung như sau:

class HashSha256 { public override string Hash(string strInput) { try { var crypt = new System.Security.Cryptography.SHA256Managed(); var hash = new System.Text.StringBuilder(); byte[] crypto = crypt.ComputeHash(Encoding.UTF8.GetBytes(strInput)); foreach (byte theByte in crypto) { hash.Append(theByte.ToString("x2")); } return hash.ToString(); } catch (Exception e) { throw e; } } } Xem thêm

June 15, 2018by thaotrinh

Tìm kiếm

Bài viết mới

Giá trị của Scrum Master trong case study của Leflair

Giá trị của Scrum Master trong case study của Leflair

Vì sao bạn nên phân tích đối thủ để đưa ra giải pháp thiết kế tốt hơn

Vì sao bạn nên phân tích đối thủ để đưa ra giải pháp thiết kế tốt hơn

Scrum Master làm gì trong suốt một ngày?

Scrum Master làm gì trong suốt một ngày?

Tôi có thể làm gì trong những năm 20 tuổi để giúp phát triển bản thân và cả sự nghiệp của tôi?

Tôi có thể làm gì trong những năm 20 tuổi để giúp phát triển bản thân và cả sự nghiệp của tôi?

Sách đã đọc

Sách đã đọc

Chuyên mục

  • Agile learn
  • Chuyện đọc
  • Gã
  • Lập trình
    • .NET
    • Blockchain
    • Database
    • Design Pattern
    • Lập trình cơ bản
    • Laravel
  • Leading
  • Product
    • Design
  • Uncategorized

Mọi người quan tâm

Nguyên lý SOLID trong lập trình hướng đối tượng – và ví dụ sử dụng C#  – p2

Nguyên lý SOLID trong lập trình hướng đối tượng – và ví dụ sử dụng C# – p2

Tạo ứng dụng blockchain đầu tiên với C#

Tạo ứng dụng blockchain đầu tiên với C#

Cài đặt và cấu hình Apache, MySQL trên macos

Nguyên lý SOLID trong lập trình hướng đối tượng – và ví dụ sử dụng C#  – p3

Nguyên lý SOLID trong lập trình hướng đối tượng – và ví dụ sử dụng C# – p3

Nguyên lý SOLID trong lập trình hướng đối tượng – và ví dụ sử dụng C# – p1

Nguyên lý SOLID trong lập trình hướng đối tượng – và ví dụ sử dụng C# – p1

Tags

Agile Apache blockchain C# Case study CQRS Daily Scrum database DDD deadlocks Dependency Injection Dependency Inversion Design Pattern docker ebook fix mindset git Good Developer growth mindset kinh tế Pair programing Repository Retrospectives Risk Management Scrum Scrumban Scrum Guide Scrum Master Senior Senior Developer singleton solid Technical debt UI UnitOfWork UX Viết Động lực

Lịch sử

  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • September 2020
  • August 2020
  • June 2020
  • April 2020
  • March 2020
  • December 2019
  • November 2019
  • September 2019
  • August 2019
  • July 2019
  • June 2019
  • May 2019
  • April 2019
  • March 2019
  • November 2018
  • September 2018
  • July 2018
  • June 2018
  • March 2018
  • January 2018
  • December 2017
  • June 2017
  • May 2017
  • October 2016
  • August 2016
  • June 2016
  • March 2016
  • January 2016
  • December 2015
  • March 2015