26/3/17

Ethereum cho lập trình viên - Phần 1

Đây là một trong loạt bài về Ethereum mà mình viết trong quá trình tìm hiểu lý thuyết và áp dụng nó.
Nội dung bài viết có thể sẽ được thêm/cập nhật bất cứ lúc nào tuỳ vào tình hình tìm hiểu của mình.

Kiến thức yêu cầu

  • Kiến thức cơ bản về cách hoạt động của Internet
  • Kiến thức cơ bản về lập trình
  • Nhưng kiến thức cơ bản về công nghệ liên quan đến Bitcoin



Ethereum là gì?

Trên trang chủ ethereum được viết như sau:

Ethereum is a decentralized platform that runs smart contracts: applications that run exactly as programmed without any possibility of downtime, censorship, fraud or third party interference.

Đại khái thì Ethereum là:

  • Một nền tảng (platform) chạy trên nền tảng công nghệ Blockchain
  • Hỗ trợ hợp đồng thông minh (smart contract)
  • Mạng lưới sử dụng tiền mã hoá 2.0
  • Sử dụng blockchain riêng
  • Có dự định chuyển từ sử dụng Proof of Work (Ethash) sang Proof of Stake (Casper)
  • Có thể viết chương trình kiểu model Turing Complete chạy trên nền giao thức P2P
Tóm lại thì có thể xem Ethereum như là một giao thức dùng để trao đổi tài sản, hợp đồng một cách phi tập trung. 

Ethereum không phải là..?

Ethereum không phải là một loại tiền ảo như Bitcoin. Ether là tiền ảo trong Ethereum và được sử dụng như là một loại "nhiên liệu" dùng để chạy chương trình.

Một số keyword:

  • Ether: Là tiền ảo của Ethereum. Dùng để thanh toán chi phí xử lý chương trình (hợp đồng..)
  • message: Tương tự như một giao dịch (transaction) trong Bitcoin. Một message có thể là một yêu cầu thực thi hợp đồng.
  • transaction: Dùng để gửi Ether
  • smart property: Dùng để quản lý tài sản
  • smart contracts: Hợp đồng thông minh
  • GAS: "Nhiên liệu", chính là Ether dùng để thanh toán chi phí chạy chương trình
    • STARTGAS: Số bước xử lý tối đa cho phép của xử lý giao dịch
    • GASPRICE: Giá tiền thanh toán cho từng bước xử lý
  • EVM (Etherum Virtual Machine): Máy ảo để chạy chương trình Ethereum
  • Mist: Trình duyệt chuyên dụng cho các ứng dụng ĐApp
  • DApp: Decentralize Application. Ứng dụng phi tập trung
  • Mix (Đã tiến hoá thành Remix): Một IDE cho DApp

Về 2 loại account trong Ethereum

  1. EOA (Externally-Owned Account): Tài khoản sở hữu ngoài
    • Đây là tài khoản cho người sử dụng
    • Giống như một địa chỉ của tài khoản thông thường ở Bitcoin
    • Có thể được control bởi người sử dụng hoặc ĐApp
    • Có thể dùng để khởi tạo giao dịch (transaction)
    • Khoá bí mật của EOA sẽ là trigger của giao dịch được ký tên vào bởi khoá đó
    • Tài khoản này được quản lý bởi người dùng
  2. Contract Account
    • Đây là một tài khoản (địa chỉ) của một hợp đồng đã được phát hành
    • Được lưu trên blockchain
    • Có thể accept các giao dịch
    • Có thể gửi message đến một contract hoặc gửi đến chính mình
    • Khi gửi message thì một chương trình (đoạn mã) được thực thi

Message và Transaction

  • Khái niệm message trong Ethereum khá giống với Transaction trong Bitcoin, tuy nhiên có những điểm khác sau:
    1. Message có thể được tạo từ bên ngoài hoặc từ hợp đồng (contract)
    2. Có response
  • Transaction: Được kích hoạt bởi một account thuộc kiểu EOA hoặc Contract Account. Tuy nhiên Contract Account chỉ kích hoạt transaction khi nó bị tác động bởi một transaction khác. Do vậy mọi hoạt động trong blockchain đều xuất phát từ tài khoản kiểu EOA.

Không có nhận xét nào:

Đăng nhận xét