Hợp đồng thông minh (Smart Contract) trong lập trình dApp với Ethereum

RESEARCH CREW
14:48 04/08/2018

Lịch sử hình thành

Công nghệ blockchain ra đời cùng với bitcoin đã giúp loại bỏ bên thứ ba tin cậy trong các giao dịch tài chính. Nhờ tính năng này, blockchain đã thu hút sự chú ý từ những lĩnh vực khác như: lưu trữ đám mây phi tập trung, hợp đồng thông minh, IoT, quản lý chuỗi cung ứng, quản lý hồ sơ bệnh án, v.v.

Như đã biết, blockchain là một dạng cấu trúc dữ liệu phân tán. Dữ liệu được lưu trữ trong từng khối (block), các khối sẽ được móc nối vào nhau thông qua một hàm băm mật mã (cryptographic hash) và tạo thành chuỗi (chain) — đây là lý do hình thành nên tên gọi: block-chain (chuỗi khối). 

Tiền mã hóa chỉ là bề nổi của những gì blockchain làm được. Sức mạnh của công nghệ mới này to lớn hơn rất nhiều. Blockchain có thể tạo nên sự đột phá trên mọi ngành công nghiệp, theo một cách nào đó mà chúng ta không thể bác bỏ, bất chấp việc vẫn còn một số rào cản phải vượt qua trước khi chúng ta có thể thấy những tác động biến đổi một cách toàn diện của nó.

Với những đặc thù của Blockchain, các chuyên gia cho rằng, công nghệ Blockchain sẽ mở ra một xu hướng ứng dụng tiềm năng cho nhiều lĩnh vực như tài chính ngân hàng, bán lẻ, vận chuyển hàng hóa, sản xuất, viễn thông...

Vào 31 tháng 10 năm 2008, hệ thống thanh toán điện tử ngang hàng có tên là Bitcoin ra đời. Một trong những yếu tố đặc biệt của hệ thống này là thanh toán ngang hàng (peer to peer), tức là thanh toán mà không cần phải thông quan trung gian (ví dụ như ngân hàng trong giao dịch ebanking). Bitcoin được xây dựng dựa trên một công nghệ lưu trữ và xử lí dữ liệu theo cách mới được gọi là blockchain (chuỗi khối).

Nhiều người nhận ra rằng, blockchain có thể áp dụng trong nhiều lĩnh vực khác với lĩnh vực tài chính. Một trong những người đó là Vitalik Buterin (còn rất trẻ – sinh năm 1994) đã tạo một blockchain mới có tên là Ethereum, một nền tảng blockchain về hợp đồng thông minh và phát triển ứng dụng phi tập trung.

Hợp đồng thông minh (smart contract)

Về cơ bản, ý tưởng của hợp đồng thông minh tương tự như hợp đồng trong đời sống hằng ngày chỉ có điều hợp đồng thông minh được viết ra bằng ngôn ngữ lập trình (cụ thể tên ngôn ngữ lập trình ở đây là Solidity). Một khi hợp đồng đã được tạo ra thì sẽ bắt buộc các bên kí kết phải thực thi những điều khoản.

Ý tưởng này ban đầu được đưa ra bởi nhà khoa học máy tính và viết mật mã Nick Szabo vào năm 1994.

Ông đã nêu ra những nguyên tắc hoạt động chính, nhưng ở thời điểm ấy thì vẫn chưa có đủ phương tiện và môi trường thích hợp để hiện thực hóa tất cả. Thế nhưng mọi chuyện đã thay đổi với sự ra đời và phát triển của công nghệ Blockchain.

Bitcoin đã đặt ra những nền tảng cơ bản cho việc thiết lập hợp đồng trên Blockchain. Tuy nhiên, nó vẫn chưa thể thỏa mãn mọi yêu cầu. Chỉ đến khi Ethereum xuất hiện thì ý tưởng smart contract mới được phổ biến đến cho mọi người dùng, cung cấp cho ta thêm một phương thức mới để thiết lập hợp đồng.

Smart Contract hoạt động như thế nào?

Nguyên lí vận hành của smart contract có thể đem so sánh với một chiếc máy bán hàng tự động.

Chúng chỉ tự động thực hiện những lệnh mà đã được lập trình sẵn từ trước. Đầu tiên, tài sản và điều khoản hợp đồng đều được mã hóa và chuyển vào một block thuộc Blockchain. Smart contract này tiếp đó sẽ được phân phối và sao chép lại bởi các node hoạt động trên nền tảng đó.

Sau khi có nhận lệnh triển khai thì hợp đồng sẽ được triển khai theo đúng như điều khoản định sẵn. Đồng thời, smart contract cũng sẽ tự động kiểm tra quá trình thực hiện những cam kết nêu trong hợp đồng

Ví dụ: Bạn gửi cho tôi 10 đồng tiền kĩ thuật số, sau đó mỗi tháng tôi sẽ gửi cho bạn 70% tiền lời vào ngày cuối cùng của mỗi tháng.

Một trong ứng dụng phổ biến nhất của Ethereum là tạo những đồng tiền ảo khác (phổ biến nhất là loại ERC20 token).

Ngoài ra, Ethereum thường được dùng để tạo các hợp đồng thông minh để kêu gọi vốn đầu tư, được gọi là ICO (Initial Coin Offering). Hiểu đơn giản thì ICO cũng tương tự như phát hành cổ phiếu công ty vậy. Các công ty sẽ tạo ra một hợp đồng thông minh với các điểu khoản. Ví dụ: Công ty InSec phát hành một đồng tiền kĩ thuật số có tên là InSecCoin được tạo theo chuẩn ERC20. Not Cuder sẽ tạo một hợp đồng với điều khoản: ai gửi cho công ty 1 đồng ether (đơn vị tiền tệ của mạng lưới Ethereum) thì sẽ được trả lại 10 đồng InSecCoin.

Tôi cần làm những gì để có thể lập nên một smart contract?

Để lập nên một smart contract, bạn cần:

Chương trình phải được cấp khả năng truy cập đến sản phẩm/dịch vụ liệt kê trong hợp đồng để có thể tự động khóa hay mở khóa chúng.

Tất cả các bên tham gia đồng ý triển khai thỏa thuận bằng các khóa cá nhân của họ.

Điều khoản của smart contract có dạng một chuỗi các hoạt động. Các bên tham gia hợp đồng đều phải ký chấp nhận nó.

Smart contract sau khi hoàn tất sẽ được tải lên Blockchain của nền tảng phân quyền tương ứng và được phân phối về cho các node của nền tảng ấy.

Lợi ích của Smart contract là gì?

Smart contract sử dụng tất cả những điểm mạnh của công nghệ Blockchain.

Smart contract được mã hóa và phân phối về cho các node. Cách thức này bảo đảm nó sẽ không bị thất lạc hay sửa đổi mà không được bạn cho phép.

Hầu hết các công đoạn đều được tự động hoá, và gần như loại bỏ hoàn toàn bên trung gian.

Hiện đã xuất hiện một loạt các hình thức smart contract khác nhau. Người dùng có thể chọn ra một kiểu và thay đổi sao cho phù hợp nhất với nhu cầu bản thân.

Smart contract có hạn chế gì không?

Smart contract dù gì cũng chưa phải là hoàn hảo.

Sau đây là một số các khiếm khuyết còn tồn đọng của smart contract:

Vì toàn bộ phần mã được soạn thảo bởi con người, và họ vẫn có thể mắc lỗi. Nếu smart contract đã được tải lên Blockchain, các nhà lập trình sẽ không thể nào thay đổi được nó.

Một ví dụ nổi tiếng về nhân tố con người đó chính là "sự kiện DAO". Lỗi lập trình của đội ngũ phát triển đã bị một số tin tặc phát hiện và tận dụng, từ đó cướp đoạt đến 60 triệu USD tiền vốn của người dùng

Hiện tại, smart contract vẫn chưa được quản lí bởi bất kì chính phủ nào cả. Vì thế cho nên vẫn tiềm ẩn khả năng xuất hiện mâu thuẫn nếu như các thể chế quản lí quyết định xây dựng bộ khung pháp lý dành cho hình thức smart contract còn khá mới mẻ này.

Smart contract không thể nào được lập nên mà không cần thông qua công đoạn lập trình. Do đó, điều cần thiết là phải có một chuyên gia lập trình dày dạn kinh nghiệm trong đội ngũ phát triển để hạn chế tối đa những sai sót có thể xảy ra đối với hợp đồng và bảo đảm cơ sở hạ tầng của công ty tương thích được với công nghệ Blockchain.

Làm thế nào để ứng dụng smart contract vào đời thực?

Smart contract có thể được tích hợp vào rất nhiều lĩnh vực.

Kết quả bỏ phiếu sẽ được chuyển vào Blockchain và phân phối về các node trong mạng lưới. Toàn bộ dữ liệu sẽ được mã hóa và hoàn toàn ẩn danh. Phương pháp này có thể loại bỏ âm mưu thao túng cuộc bầu cử.

Như chúng ta đều biết, chuỗi cung ứng mà một hệ thống kéo dài và gồm nhiều liên kết khác nhau. Mỗi liên kết cần phải nhận được xác nhận bởi cái ở trước để đủ điều kiện thực hiện phần việc của mình theo như hợp đồng.

Đây là một quá trình dài hơi và kém năng suất, nhưng với smart contract thì mỗi bộ phận tham gia đều có thể theo dõi tiến trình công việc để từ đó hoàn thành nhiệm vụ đúng hạn. Smart contract bảo đảm tính minh bạch trong điều khoản hợp đồng, chống gian lận.

Nó còn có thể cung cấp cho ta khả năng giám sát quá trình cung ứng nếu như được tích hợp chung với Mạng lưới vạn vật kết nối Internet (Internet of Things).

Bên cạnh đó Smart contract còn có vô vàn ứng dụng khác, ví dụ như trong quản lí, dịch vụ ngân hàng, bảo hiểm, bất động sản, v.v...

Ứng dụng phi tập trung (DApp – Decentralize Application)

Phi tập trung ở đây hiểu đơn giản là không có máy chủ trung tâm để xử lí. Việc xử lí sẽ được thực thi bởi các máy tham gia vào mạng lưới.

Để hiểu rõ hơn thế nào phi tập trung, ta sẽ phân 3 dạng mạng lưới cơ bản: Tâp trung, phân tán và phi tập trung.

Tập trung (Centralize)

Ở mạng lưới tập trung, sẽ có duy nhất một máy chủ đóng vai trò xử lí tập trung cho toàn bộ giao dịch.

Một ví dụ cơ bản của mạng lưới tập trung đó là hệ thống ebanking của một ngân hàng. Trong hệ thống này, mọi giao dịch chuyển tiền  đều được xử lí tập trung ở hệ thống máy chủ để đảm bảo đồng bộ dữ liệu.

 

Một điểm cho tất cả

Ưu điểm của hệ thống tập trung đó là việc dễ dàng cập nhật vì chỉ có 1 điểm xử lí và lưu trữ. Tuy nhiên việc này lại làm do hệ thống dễ dàng bị sụp đỗ nếu điểm trung tâm bị chết.

Phân tán (Distributed)

Trong mạng lưới phân tán, ngoài điểm xử lí trung tâm, ta sẽ có thêm các điểm xử lí nhỏ hơn để hỗ trợ xử lí. Ngoài ra, cơ sở dữ liệu cũng được phân tán.

Ví dụ: Hệ thống mạng xã hội của Facebook. Ngoài điểm xử lí ở trung tâm, Facebook còn đặt các điểm xử lí khác ở khác châu lục khác nhau để xử lí cho người dùng ở từng châu lục.

Hệ thống phân tán sẽ làm tăng khả năng chịu lỗi của hệ thống so với hệ thống tập trung. Tuy nhiên, chúng ta cần phải xây dựng thêm cơ chế đồng bộ dữ liệu giữa các máy chủ.

Phi tập trung (Decentralize)

Quay trở lại với nhân vật chính. Ứng dụng phi tập trung là những gì mà Ethereum mang lại.

Trong mạng lưới phi tập trung, sẽ không có bất kì điểm xử lí và lưu trữ tập trung nào. Các máy trong mạng lưới đều có thể tham gia vào xử lí giao dịch. Ngoài ra, mỗi máy tham gia quá trình xử lí, sẽ kèm theo việc lưu trữ 1 bản sao dữ liệu được đồng bộ trên toàn mạng lưới.

Đối với mạng lưới phi tập trung, việc cập nhật một phiên bản phầm mềm mới sẽ vô cùng khó khăn do phải đạt được sự đồng thuận của toàn bộ mạng lưới. Ngoài ra, việc xử lí giao dịch sẽ chậm hơn hệ thống tập trung.

Tuy nhiên, do các máy trong mạng lưới giao tiếp ngang hàng, đều có quyền xử lí như nhau, lưu trữ cùng một bản sao dữ liệu nên hệ thống phi tập trung sẽ không bao giờ bị hủy diệt nếu còn người chấp nhập sử dụng hệ thống này. 

 

Kết

Blockchain là một cấu trúc dữ liệu phi tập trung đảm báo tính toàn vẹn và thống nhất của dữ liệu. Blockchain đảm bảo rằng không một cá nhân hay tổ chức có thể chỉnh sửa, thay đổi dữ liệu đã tạo ra.
Blockchain hứa hẹn đem lại giải pháp cho nhiều vấn đề thực tế như: hợp đồng bất động sản, hồ sơ bệnh án, truy xuất nguồn gốc, bỏ phiếu, quản lý ký kết hợp đồng, kế toán/kiểm toán, ngân hàng, hồ sơ sở hữu trí tuệ
Ethereum là nền tảng blockchain hỗ trợ hợp đồng thông minh và phát triển ứng dụng phi tập trung.
Hợp đồng thông minh là một bản tập hợp các quy tắc được viết bằng ngôn ngữ lập trình. 
Ứng dụng phi tập trung (dApp) sẽ tạo nên hệ thống không có bất kì điểm xử lí và lưu trữ tập trung nào.
TIN LIÊN QUAN
Trong bối cảnh công nghệ Blockchain được nhiều chuyên gia trong lĩnh vực nghiên cứu học thuật và lập trình viên đầu tư thời gian và công sức để áp dụng  vào trong các ngữ cảnh ứng dụng thực tế khác nhau, Ethereum cùng với ngôn ngữ Solidity là một...
Lỗ hổng bảo mật trong Hợp đồng thông minh  Hợp đồng thông minh (Smart Contract) là một thiết kế đột phá, cho phép triển khai mọi giao dịch mà không cần bên thứ ba xác nhận. Thiết kế này là một ứng dụng rất hữu ích trên nền tảng Blockchain....
EOS là một nền tảng Blockchain để phát triển các ứng dụng phi tập trung (DApp), tương tự Ethereum. Nó giúp cho việc phát triển DApp dễ dàng hơn bằng cách cung cấp nhóm các dịch vụ, tính năng giống như hệ điều hành và phù hợp cho DApp. Ý...