Ethereum, một nền tảng Blockchain đầy triển vọng!
Blockchain
29
smart contract
5
Ethereum
13
White

Lưu Xuân Trọng viết ngày 14/04/2018

Lời nói đầu

Trong thời gian qua, với cơn sốt về giá trị của các đồng tiền ảo mà nổi bật là Bitcoin, chắc chẳn mọi người cũng dần quen thuộc với thuật ngữ blockchain. Bài viết này mình tập trung xoay quanh Ethereum, một nền tảng nổi tiếng không kém gì bitcoin. Bài viết khá ngắn tổng hợp các kiến thức của cá nhân mình để các bạn có máu me với công nghệ blockchain sẽ có hứng thú với nền tảng etherum, để đạt được mục đích câu view cho các biết viết sau =)).

Ethereum là gì?

alt text
Ethereum là một nền tảng điện toán có tính chất phân tán, công khai, mã nguồn mở dựa trên công nghệ Blockchain, thực hiện các chương trình gọi là hợp đồng thông minh (smart contract). Nó sử dụng blockchain để đồng bộ hóa và lưu giữ trạng thái hệ thống cùng với 1 đơn vị tiền tệ kĩ thuật số là "Ether" để đo và chi trả chi phí tài nguyên thực thi. Ngoài ra "gas" là một cơ chế giá giao dịch nội bộ trong mang lưới, được sử dụng để giảm thiểu các giao dịch rác (spam) và phần bổ nguồn lực trên mạng lưới.
Nền tảng Ethereum cho phép các nhà phát triển xây dựng các ứng dụng phi tập trung (decentralized applications) dựa trên "built-in economic functions". Nó cho phép thời gian hoạt động liên tục, giảm hoặc loại bỏ kiểm duyệt, sự có mặt của bên thứ ba, giảm thiểu các nguy cơ tiềm ẩn giữa các đối tác trên mạng internet.

So sánh với Bitcoin

Có thể nền tảng ethereum vẫn còn lạ lẫm với nhiều người nhưng Bitcoin thì cực kì nổi tiếng và là tiếng chuông đầu tiên của cuộc cách mạng mang tên blockchain. Vậy nên mình chọn so sánh với Bitcoin. Ethereum cũng có các thành phần cơ bản của 1 mạng lưới blockchain bao gồm: mạng đổng đẳng (peer-to-peer network), một thuật toán đồng thuận để đồng bộ dữ liệu giữa các peer (Proof-of-Work), 1 đồng tiền kĩ thuật số (ether), và sổ cái công khai (the blockchain).

Các thành phần của mạng lưới blockchain

Các thành phần cơ bản của 1 mạng lưới Blockchain:

  • A peer-to-peer network: Mạng ngang hàng kết nối các thành phần của mạng lưới, lan truyền giao dịch và các khối dựa trên chuẩn giao thức "gossip" protocol.
  • Một tập hợp các cơ chế đồng thuận (consensus rule): được implement trong state machine.
  • Messages: thể hiện trạng thái, thông tin của các transaction.
  • State machine: Xử lí các transaction dựa trên cơ chế đồng thuận.
  • Sổ cái công khai: Lưu trữ nhật kí của toàn bộ các transaction.
  • Một thuật toán đồng thuận (Ex: Proof-of-work, proof-of-stake) nhằm phân quyền kiểm soát blockchain, buộc các thành phần tham gia mạng lưới phải cạnh tranh và hạn chế chúng bằng các quy tắc đồng thuận.
  • Một phần mềm mã nguồn mở implement tất cả những thứ ở trên.

Ethereum cũng là một nền tảng có đầy đủ các thành phần trên. Hiện tại ethereum đang sử dụng giải thuật proof-of-work cho việc tạo ra các block mới. Giải thuật này có điểm hạn chế là chưa phòng chống được cuộc tấn công 51%. Tuy nhiên hiện tại, chưa có kẻ tấn công tiềm năng đủ khả năng thực hiện cuộc tấn công 51% và nhóm phát triển cũng đang có hướng dịch chuyển sang giải thuật proof-of-stake (an toàn với cuộc tấn công 51%). Hiện tại mình cũng đang tìm hiểu giải thuật proof-of-stake và sẽ dành 1 bài viết riêng về 2 giải thuật này trong tương lai. Tiếp theo chúng ta đi đến quá trình phát triển của ethereum.

Quá trình ra đời của Ethereum

Nhiều người thường lầm tưởng Ethereum là một mạng lưới thanh toán bằng tiền kĩ thuật số, nhưng ethereum sinh ra không phải với mục đích như vậy. Mặc dù trong ethereum network có đồng tiền Ether, nhưng đồng tiền này sinh ra để trả cho việc sử dụng, tính toán trên nền tảng ethereum. Ban đầu ethereum được đề xuất bởi Vitalik Buterin . Tháng 12 năm 2013 Vitalik bắt đầu chia sẻ white paper phác thảo các ý tưởng đằng sau ethereum, một vài người đã nhìn thấy bản phác thảo đầu tiên này và ngay lập tức bị cuốn hút, tạo tiền đề cho sự phát triển ethereum sau này. HIện tại thì Vitalik vẫn là core developer của ethereum. Các bạn có thể tham khảo white paper của ethereum tại đây.
Không giống như bitcoin, ngôn ngữ kịch bản rất hạn chế, Ethereum được thiết kế để trở thành một chương trình blockchain có thế chạy trên 1 máy ảo (virtual machine) có khả năng thực thi các mã phức tạp và không giới hạn. Trong khi Bitcoin's script language bị giới hạn bởi các điều kiện tính toán đơn giản là true/false, Ethereum language là Turing Complete, có nghĩa là nó tương đương với 1 máy tính có thể chạy bất kì 1 phép tính toán nào mà các Turing Machine thông thường có thể chạy. Để dễ hình dung thì JavaScript cũng là 1 Turing Complete.

Bốn giai đoạn phát triển của ethereum

Theo kế hoạch thì Ethereum sẽ chia làm 4 giai đoạn phát triển chính bao gồm: Frontier, Homestead, Metropolis và Serenity. Mỗi giai đoạn phát triển có thể bao gồm các sub-releases, được gọi là "hard fork" (thay đổi chức năng theo cách không tương thích ngược). Các hard fork có tên mã là: "Ice Age", "DAO", "Tangerine Whistle", "Spurious Dragon", "Byzantium" và "Constantinople". Tất cả các giai đoạn được liệt kê dưới đây với với thời điểm xảy ra hard fork:

Past transitions

Block #0

"Frontier" - Giai đoạn thử nghiệm ban đầu của ethereum, kéo dài từ 30 tháng 7 năm 2015 đến tháng 3 năm 2016

Block #200,000

"Ice Age" - Hard fork giới thiệu sự gia tăng độ khó theo số mũ, thúc đẩy chuyển đổi sang giải thuật Proof-of-Stake

Block #1,150,000

"Homestead" - Giai đoạn thứ 2 của ethereum ra mắt vào tháng 3 năm 2016

Block #1,192,000

"DAO" - Bạn nào chưa biết DAO là gì có thể tham khảo tại đây. Cuộc tấn công DAO thì khá là nổi tiếng và làm rúng động giới công nghệ cũng như giới đầu tư tài chính toàn cầu. Đây là 1 hard fork revert toàn bộ DAO contract đã bị tấn công bởi hacker, gây chia rẽ Ethereum thành 2 hệ thống cạnh tranh với nhau là Ethereum và Ethereum Classic.

Block #2,463,000

"Tangerine Whistle" - Hard fork thay đổi tính toán "gas" cho các tính toán nặng và xóa các trạng thái lưu lại từ một cuộc tấn công từ chối dịch vụ.

Block #2,675,000

"Spurious Dragon" - Hard fork cải thiện khả năng chống tấn công replay ... và 1 số cải thiện khác, các bạn có thể tham khảo tại đây.

Current state

Hiện chúng ta đang ở giai đoạn Metropolis, theo kế hoạch sẽ có 2 hard fork là Byzantium và Constantinople. Byzantium có hiệu lực vào tháng 10 năm 2017 và Constantinople được dự đoán vào giữa năm 2018 sẽ tiến hành hard fork.

Block #4,370,000

"Metropolis Byzantium" - Cải thiện tính riêng tư, khả năng mở rộng và các thuộc tính bảo mật của ethereum.

Future plans

"Constantinople" - Lần hard fork thứ 2 cho giai đoạn Metropolis dự kiến sẽ diễn ra trong năm nay bao gồm chuyển đổi giải thuật từ proof-of-work sang proof-of-stake và 1 số thay đổi khác.
"Serenity"
Giai đoạn 4 và là giai đoạn cuối cùng của ethereum và vẫn chưa có ngày phát hành dự kiến.

Các thành phần chính của ethereum network

Ethereum cũng có các thành phần của mạng lưới blockchain được mô tả ở trên, cụ thể như sau:

P2P Network

Ethereum chạy trên Ethereum Main Network, có địa chỉ TCP port 30303, và chạy 1 giao thức gọi là ÐΞVp2p.

Consensus rules

Các cơ chế đồng thuận được định nghĩa và đặc tả trong yellow paper.

Transactions

Ethereum transaction là các network message bao gồm các thông tin: người gửi, người nhận, giá trị và dữ liệu.

State Machine

Trong Ethereum network các tính toán được xử lí trên máy ảo EVM (Ethereum Virtual Machine), 1 máy ảo stack-base thực hiện bytecode. Các hợp đồng thông minh được viết bằng các ngôn ngữ lập trình bậc cao (Solidity ...), compile ra bytecode và được thực thi trên máy ảo EVM.

Blockchain

Blockchain của ethereum được lưu trữ trên tất cả các node, chứa các giao dịch và trạng thái của hệ thống và sử dụng cấu trúc dữ liệu Merkle Patricia Tree.

Consensus Algorithm

Ethereum hiện sử dụng thuật toán đồng thuận proof-of-work Ethash, tương lai dự kiến sẽ sử dụng thuật toán proof-of-stake có tên là Casper.

Client

Ethereum triển khai các client software, nổi bật nhất là Go-Ethereum (Geth) với tập lệnh vô cùng phong phú giúp tương tác với mạng lưới ethereum.

Các ứng dụng của ethereum

Nhìn chung, sẽ có 3 nhóm ứng dụng dựa trên nền tảng ethereum. Đầu tiên là các ứng dụng tài chính, cung cấp cho người dùng những cách quản lí và kí kết hợp đồng mạnh mẽ bằng tiền của họ. Nó bao gồm các đơn vị tiền tệ, các công cụ tài chính phát sinh, các hợp đồng bảo hiểm rủi ro, ví tiền tiết kiệm, di chúc, và thậm chí một số các loại hợp đồng lao động. Loại thứ 2 là các ứng dụng bán tài chính, trong đó có tiền tệ và những thứ phi tiền tệ, ví dụ như các giải pháp tính toán phân tán. Và cuối cùng là các ứng dụng như bỏ phiếu trực tuyến, quản trị phân quyền hoàn toàn không liên quan đến tài chính và tiền tệ.
Các ứng dụng nổi bật của ethereum có thể kể đến như: hệ thống token, đơn vị tài chính tiền tệ có sự ổn định (hoặc có thể điều chỉnh để trở nên ổn định) dùng trong các hợp đồng, hệ thống nhận dạng, xác nhận chủ sở hữu tài sản, hệ thống lưu trữ file phân tán, các tổ chức tự trị phi tập trung (Decentralized Autonomous Organizations) ...
Do các ứng dụng của ethereum khá là rộng và vẫn còn đang tiếp tục phát triển nên trong phạm vi bài viết này mình xin nói qua về DApp (Decentralized Application).

Các ứng dụng phi tập trung (Decentralized Application)

The Web3

Năm 2004, thuật ngữ "Web 2.0" trở nên phổ biến, mô tả sự phát triển của web đối với nội dung do người dùng tạo ra, các giao diện responsive và khả năng tương tác. Web 2.0 không phải là một đặc tả kĩ thuật, nó là 1 thuật ngữ nhằm mô tả trọng tâm mới của các ứng dụng web.
DApp đưa World Wide Web đến sự tiến hóa tự nhiên tiếp theo của nó, giới thiệu các ứng dụng phân quyền với giao thức peer-to-peer và đưa chúng vào sử dụng trong mọi khía cạnh của ứng dụng web. Thuật ngữ được sử dụng để mô tả sự tiến hóa này là Web3 (version 3 of web) được đề xuất bởi Gavin Wood, Web3 đại diện cho tầm nhìn và trọng tâm mới cho các ứng dụng web, chuyển từ các ứng dụng do trung tâm quản lí tới các ứng dụng được xây dựng trên giao thức phi tập trung.
Hiện tại, web3js là 1 thư viện javascript làm cầu nối giữa các ứng dụng JavaScrit chạy trên trình duyệt với Ethereum Blockchain. web3.js cũng bao gồm 1 interface với một mạng lưu trữ P2P được gọi là Swarm, và dịch vụ nhắn tin P2P được gọi là Whisper.
Các thành phần trong hệ thống DApp:
alt text

Làm thế nào để xây dựng 1 ứng dụng phi tập trung?

Bài viết này của mình chỉ có mục đích giúp các bạn có một cái nhìn tổng thể về nền tảng ethereum. Vậy nên mình sẽ chỉ liệt kê các kiến thức các bạn cần phải nắm được để có thể xây dựng 1 ứng dụng DApp hoàn chỉnh. Các loạt bài liên quan đến blockchain của mình cũng sẽ cần có những kiến thức này và mình phát triển trên ubuntu 16.04.4 LTS

  • Solidity: 1 ngôn ngữ lập trình hướng contract, dùng để viết smartcontract.
  • NodeJS.
  • Geth (go-ethereum).
  • Truffle framework: dễ dàng phát triển và deploy contract.
  • web3 JS API.
  • MetaMask/MIST.
  • Html.
  • Css.
  • Javascript frameworks để xây dựng frontend.
  • Data storage: Do chi phí cho việc lưu trữ trên smart contract khá là tốn kém, nên ta không thể lưu trữ toàn bộ dữ liệu trên smart contract, do đó hầu hết các DApp sẽ sử dụng các kho lưu trữ phân tán như IPFS hoặc Swarm để lưu trữ images, video ...
  • Ngoài ra thì có 1 số tool static analysis và chạy coverity như oyente (static analysis), solidity coverage (coverity), cái này thì các dự án lớn sẽ cần, làm demo chơi chơi thì cũng chưa cần tìm hiểu làm gì.
  • Cuối cùng, muốn trở nên master thì bạn phải có khả năng đọc hiểu mã nguồn geth (viết bằng golang). Vậy nên nếu bạn biết golang thì bạn sẽ lợi thế cực lớn trong việc hiểu sâu và debug sau này. Ngoài ra, nếu bạn biết C++ thì sẽ cũng là 1 lợi thế nữa vì trình biên dịch solidity được viết bằng C++ mà các phiên bản của solidity thì thay đổi liên tục.

Tại sao lại là ethereum?

Blockchain là một công nghệ đầy triển vọng, nó kết hợp rất nhiều domain như programming, information security, cryptography, economics, distributed systems, peer-to-peer networks ... nhằm mục đích khiến cuộc sống trở nên tốt đẹp hơn. Do kết hợp nhiều domain nên nó trở nên khó tiếp cận vì cần nhiều kiến thức tổng hợp, tuy nhiên ethereum làm mọi thứ trở nên dễ dàng hơn.
Ethereum là một nền tảng tuyệt vời để xây dựng và phát triển các ứng dụng blockchain, cộng đồng của nó phát triển nhanh hơn bất kì 1 nền tảng blockchain nào khác. Mình xin copy nguyên văn câu nói tiếng Anh: "Ethereum is a developer’s blockchain, built by developers, for developers". Việc tiếp cận và viết mã trên ethereum khá là dễ dàng tuy nhiên để trở nên expert thì không hề đơn giản. Nhưng, đừng vì điều đó mà chùn bước, hãy bắt đầu bước chân vào thế giới blockchain trước khi quá trễ!

Tổng kết

Ở bài viết này, mình đưa ra những khái niệm tổng quan nhất có thể. Do mình được dành toàn thời gian nghiên cứu blockchain nên các bài viết sắp tới của mình sẽ bóc tách từng khía cạnh mà mình đã nêu ra ở trên, nhằm mục đích cuối cùng là xây dựng các ứng dụng trên nền tảng ethereum. Cảm ơn mọi người đã dành thời gian đọc đến đây. Hẹn các bạn trong bài viết tiếp theo, mình sẽ giới thiệu về solidity và các cú pháp của ngôn ngữ này.

Tài liệu tham khảo

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Lưu Xuân Trọng

2 bài viết.
7 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
6 0
Lời nói đầu Xin chào các bạn, để tiếp tục loạt bài về blockchain, hôm nay mình xin nói về smart contract và các khái niệm, công cụ xoay quanh Smar...
Lưu Xuân Trọng viết 5 tháng trước
6 0
Bài viết liên quan
White
1 0
Những ai tìm hiểu nhiều về Ethereum chắc hẳn cũng sẽ biết vụ án nổi tiếng the DAO attack. Attacker đã lợi dụng reentrancy attack để lấy 50tr đô từ ...
Kayden Le viết 5 tháng trước
1 0
White
4 0
Xin chào các bạn Mình đã quay trở lại đây :smile: Ở phần 1 thì các bạn đã biết thế nào để tạo một Smart Contract (SC) đơn giản và deploy lên local ...
Derek Nguyen viết 1 tháng trước
4 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
2 bài viết.
7 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!