Phần 6: Tìm hiểu về Smart Contract và đồng tiền ảo Ethereum
Bài này đang được chỉnh sửa... (Viết vội theo yêu cầu của một anh bạn) Nối tiếp 5 phần trước, phần này tôi sẽ giới thiệu để các bạn hiểu về khái niệm Smart Contract và đồng tiền ảo Ethereum. Chúng ta đã hiểu rõ thế nào là tiền ảo, thế nào là giao dịch được bảo mật rất tốt trong Blockchain ...
Bài này đang được chỉnh sửa... (Viết vội theo yêu cầu của một anh bạn)
Nối tiếp 5 phần trước, phần này tôi sẽ giới thiệu để các bạn hiểu về khái niệm Smart Contract và đồng tiền ảo Ethereum.
Chúng ta đã hiểu rõ thế nào là tiền ảo, thế nào là giao dịch được bảo mật rất tốt trong Blockchain rồi đúng không?
Nếu ta hiểu rồi thì sẽ thấy, Blockchain đường như chỉ là một cơ sở dữ liệu để giao dịch mua đi bán lại và chứa tiền nong là hợp lý. Vì dữ liệu lưu trong các Block của Blockchain theo như 4 phần demo toàn là GiaoDich. Mà các giao dịch này lại là chuỗi cố định, vì người dùng muốn chắc chắn là chuỗi lưu vào Block phải cố định.
Vậy có vẻ cơ sở dữ liệu Blockchain không có tác dụng gì khác? Bạn nhầm!
Nếu bây giờ ta muốn lưu thứ gì đó thay đổi được vào một Block thì sao? Hãy tưởng tượng bạn mua bán, nhưng thay vì chuyển tiền, bạn cần trao đổi một giao dịch dưới dạng HỢP ĐỒNG. Nếu là hợp đồng, nghĩa là giao dịch của bạn có chữ Nếu-Thì. Nếu thỏa màn điều kiện A, thì tôi trả anh từng này, nếu anh làm tốt hơn, nhanh hơn, thỏa điều kiện B, tôi trả anh mức cao hơn. Hoặc bạn cần trao đổi một loại hợp đồng bảo hiểm. Lúc này hợp đồng ghi: Nếu gãy tay, từng này tiền, nếu liệt nửa người, từng này tiền, nếu không may Die, một cục ngần này tiền. Một khi đã đặt bút ký, thì cả 2 bên bắt đầu thực hiện hợp đồng.
Vậy thì ta thấy là các dữ liệu lưu trong Block lúc này là tiền. nhưng lại kèm theo điều kiện "If-Else". Cần phải có một loại cơ sở dữ liệu lưu trữ được dạng data kỳ dị này. Và cũng cần có một người đứng ra phân giải nếu hợp đồng có tranh chấp kiện tụng.
May thay, có người đã sớm nghĩ ra thuật toán cho nó, đó là lý do Smart Contract và đồng tiền ảo Ethereum ra đời.
Smart Contract chính là cái cục If-Else nằm bên trong một Blockchain, kèm theo mỗi giao dịch. Làm thế nào để có thể kiểm tra được If-Else. Nghe như là phải chạy một đoạn lệnh If-Else ấy nhỉ? Đúng vậy. Smart Contract là một chuỗi, trong đó chứa luôn một đoạn lệnh If-else luôn. Thậm chí là có cả các hàm API trong đây. Để làm gì? để các bên liên quan có thể mở SmartContract và chạy thử đoạn lệnh đó, xem là hiện tại đầu vào đã đủ theo tiêu chuẩn Hợp đồng hay chưa.
Đầu vào ở đây là gì?
Ờ, cái này có thể là bất kỳ cái gì, vì nó không liên quan đến Blockchain, nó liên quan đến các hàm viết trong API để tính toán xem điều kiện khi nào thỏa mãn. Ví dụ, Smart Contract về bảo hiểm, thì họ sẽ đính kèm API điều kiện hưởng bảo hiểm. Đầu vào sẽ là hóa đơn bệnh viện. Bạn có đủ chấn thương, tự động số tiền sẽ nhảy vào tài khoản của bạn, không cần mất công làm hồ sơ rồi đi đòi.
Lấy thêm một ví dụ nữa. Một công ty muốn kêu gọi vốn đầu tư, họ đặt ra giới hạn là đến 1-1-2019 ra mắt 1 chiếc ô tô bay. Họ cần mỗi người đóng góp 1000usd thì sẽ được mua ô tô đó giá gốc. Góp vốn được 1tr đô thành công thì họ sẽ hứa giao xe đúng hẹn vào ngày 1-1-2019. Nếu k đủ 1tr đô thì họ sẽ trả lại tiền, ai về nhà nấy, họ cũng hủy luôn dự án và coi như chưa ai nói gì nhé. Dự án kiểu này thường được kêu gọi vốn bằng Kickstarter. Một server trung gian để Người góp vốn và người làm dự án phải đổ tiền vào. Bên thứ ba này sẽ giữ tiền của cả 2 bên để hai bên TIN TƯỞNG NHAU.
Giờ nếu Blockchain tham gia vào. thì SmartContract sẽ là cái dùng để TIN TƯỞNG NHAU. Vì Blockchain và SmartContract luôn luôn công bằng nên rất đáng tin. Và điều kiện đưa vào Contract rất rõ ràng, không ai chạy làng được và không ai sửa được. Vậy nên chắc chắn nó sẽ là nền tảng cho tương lai, khi mà không cần bên thứ 3 trung gian đứng ra bảo lãnh nữa.
Vậy thì công nghệ SmartContract chỉ đơn giản như thế thôi ư, đồng tiền Ethereum đóng vai trò gì giữa Blockchain và SmartContract?
Đồng tiền ảo Ethereum dĩ nhiên là có một chuỗi Blockchain của riêng nó, khác hẳn với công nghệ của đồng tiền BitCoin. Ethereum sinh ra là để hỗ trợ lưu trữ được SmartContract vào Block. Và hơn thế nữa. Ethereum có các hàm API để phục vụ việc thực hiện đầu vào của SmartContract và tính toán SmartContract xem nó đúng hay sai, và trả tiền cho các bên liên quan.
Vậy nếu mỗi đoạn lệnh If-Else đưa vào Blockchain lại phải có một API để xử lý nó riêng biệt, thế thì người dùng sẽ tốn công sức lắm nhỉ?
Đúng là như vậy. Và Ethereum đã định nghĩa ra một ngôn ngữ mới (có thể gọi nó là ngôn ngữ lập trình mới) là Solidity để giải quyết việc này. Đây là một cú pháp, quy định các điều khoản hợp đồng và cách để xác thực nó, cách để connect API trong một Block.
Người dùng sau khi tạo ra một Block thì viết các truy vấn bằng Solidity để theo dõi Block đó.
(to be continues....)