Ethereum – Nền tảng tuyệt vời cho Blockchain

535

Blockchain, công nghệ đằng sau đồng tiền ảo Bitcoin, đang trở thành một xu hướng mới trong cuộc cách mạng công nghệ. Đã có rất nhiều framework blockchain ra đời để giúp cho các nhà phát triển có thể phát triển phần mềm trên nền tảng blockchain một cách dễ dàng. Platform IBM hyperledger được phát triển bởi IBM, Ripple, nền tảng hỗ trợ cho việc chuyển tiền toàn cầu, Multichain open platform cho ứng dụng blockchain. Bài viết này sẽ giới thiệu về Ethereum – Platform blockchain mới, và cách phát triển, ứng dụng một ứng dụng trên Ethereum blockchain.

Ethereum là gì?

Ethereum (ETH) là một loại cryptocurrency mới tương tự như Bitcoin. Nhưng Ethereum không đơn thuần chỉ là một loại tiền tệ, Ethereum là một nền tảng điện toán có tính chất phân tán, công cộng, mã nguồn mở dựa trên công nghệ Blockchain.

Hệ thống xuất phát từ ý tưởng khắc phục những nhược điểm của Bitcoin như thời gian xác nhận chậm, sau đó được tài trợ bởi một tổ chức phi lợi nhuận tại Thụy Sĩ tên là Ethereum Foundation. Được đề xuất vào năm 2013 bởi Vitalik Buterin, một lập trình viên Bitcoin, hệ thông chính thức khởi động vào năm 30/7/2015 với hơn 11.9 triệu đồng either (một đồng tiền mới tương tự bitcoin) được đào sẵn.

Nguyên tắc hoạt động

Ethereum là một nền tảng phân quyền chạy các hợp đồng thông minh (Smart Contract). Thông thường, khi ký một hợp đồng kinh tế, chúng ta cần một bên thứ 3 có trách nhiệm hòa giải (ví dụ: Nhà môi giới, Tòa án, Sở đất đai…). Hợp đồng thông minh là một cơ chế trao đổi xác định, được kiểm soát bởi các phương tiện kỹ thuật số, giúp cho việc thực hiện giao dịch trực tiếp giữa các thực thể.

Hợp đồng thông minh trong ethereum là một chương trình thực thi các logic kinh doanh, không bị kiểm duyệt hay can thiệp từ bên trung gian, và viết bằng ngôn ngữ Solidity (một ngôn ngữ có cú pháp gần giống Javascript). Smart contract được dịch ra định dạng bytecode và được lưu trên Ethereum Virtual Machine (EVM) – một máy ảo có thể thực thi các kịch bản bằng cách sử dụng mạng máy tính Ethereum.

Trong mạng ethereum, các nodes liên kết với nhau tạo thành một mạng ngang hàng. Các nodes lưu trữ một bản copy của blockchain, các node này là các Ethereum client chạy các hợp đồng thông minh trên EVM.

Xây dựng Ethereum blockchain

Phần này sẽ hướng dẫn cách

  • Xây dựng một mạng Ethereum blockchain đơn giản trên local PC và trên cloud.
  • Lập trình một hợp đồng thông minh bằng solidity và triển khai lên mạng blockchain.
  • Phát triển một ứng dụng để giao tiếp với khách hàng Ethereum bằng JSON RPC.

Môi trường phát triển là Ubuntu 16.04, công cụ phát triển là visual studio code, Node.js (>= v6.9.1), ngôn ngữ lập trình Javascript, solidity

Bước 1: Xây dựng Ethereum blockchain

Có thể tự xây dựng ethereum blockchain trên máy local PC hoặc đăng kí sử dụng dịch vụ Azure Ethereum blockchain trên cloud.

1.1. Xây dựng trên local PC

Ethereum cung cấp công cụ testrpc, một Node.js dựa trên Ethereum client để kiểm thử và phát triển ethereum.

Sử dụng npm để cài đặt testrpc.

Sau khi cài đặt xong, chạy testrpc trên thiết bị đầu cuối.

Testrpc sẽ tạo ra một mạng Ethereum blockchain cá nhân và lắng nghe ở port 8545.

1.2. Xây dựng trên Azure cloud

Microsoft Azure cung cấp dịch vụ Ethereum Blokchain cho phép triển khai mạng blockchain ethereum cá nhân trên cloud. Bạn cần đăng kí một tài khoản trên Azure, Microsoft cho phép dùng bản dùng thử trong vòng một năm, nên không tốn phí dịch vụ. Trên Azure dashboard, tạo một Ethereum Consortium Blockchain mới.

Nhập các thông tin cần thiết cho Azure blockchain bao gồm:

  • Cài đặt cơ bản: Tên người dùng Ethereum Virtual Machine, mật khẩu;
  • Kích thước network and hiệu suất;
  • Cài đặt Ethereum: Cấu hình số lượng node cần thiết.

Sau khi thực hiện xong các bước trên, Azure sẽ tiến hành triển khai một ethereum blockchain, máy ảo. Quá trình triển khai mất khoảng 5 – 10 phút, sau đó sẽ được thông tin như hình bên dưới:

Các thông tin trọng tâm bao gồm:

  • Ethereum-RPC-Endpoint: Các Daap cần sử dụng endpoint này để tương tác với Ethereum blockchain;
  • Admin-site: Trang quản trị để xem trạng thái của mạng Ethereum blockchain;
  • SSH-to-first-tx-node: Địa chỉ SSH để truy cập vào máy ảo Ethereum.

Bước 2: Kết nối tới Ethereum blockchain

Sau khi triển khai xong một mạng ethereum blockchain, bạn có thể sử dụng một tiện ích mở rộng của Chrome là Metamask để kết nối vào mạng blockchain. Với Metamask bạn có thể tạo ra các tài khoản, kết nối vào các mạng blockchain khác nhau bao gồm public blockchain và private blockchain, gửi nhận eth đến các tài khoản.

Open metamask, chọn danh sách các mạng blockchain bao gồm cả public network và private network:

  • Localhost:8545 mạng local ethereum trên máy PC.
  • Main Ethereum Network, Ropsten Test Network: Một số public ethereum blockchain network.

Custom RPC: Nhập địa chỉ Azure RPC endpoint ở bước 1 để kết nối tới Azure blockchain.

Bước 3: Truy cập vào máy ảo Ethereum

Trên Linux terminal, bạn có thể truy cập vào máy ảo Ethereum bằng SSH (Secure Socket Shell-một giao thức mạng được sử dụng để đăng nhập vào một máy tính từ xa)

Gõ command sau trên linux terminal.

Địa chỉ của máy ảo Azure Ethereum đã tạo ở bước 1, Azure sẽ yêu cầu nhập mật khẩu để truy cập. Nếu kết nối thành công, sẽ cho kết quả như hình:

Bạn đã truy cập được vào máy ảo Ethereum trên blockchain, vào có thể sử dụng dòng lệnh (command line) để thao tác trên máy chủ này.

Ethereum cung cập một dòng lệnh là geth để làm việc với ethereum blockchain ví dụ như

  • Thực hiện chuyển tiền ether giữa các tài khoản
  • Tạo các hợp đồng và gửi các giao dịch
  • Khám phá lịch sử các khối block trong blockchain
  • Tạo tài khoản mới, khóa và mở khóa các tài khoản

Tại EVM terminal, gõ câu lệnh sau:

Bạn sẽ truy cập vào Geth JavaScript console. Đây là một môi trường Javascript runtime cung cấp đẩy đủ API cho phép bạn viết những code javascript để tương tác với Ethereum blockchain.

Dưới đây là một số script đơn giản

Xem danh sách tài khoản có trong ethereum blockchain.

Hiển thị danh sách các địa chỉ công khai của các tài khoản. Địa chỉ công khai là một chuỗi để định danh các tài khoản trong blockchain, tương tự như tên người dùng.

Tạo một tài khoản mới

Ethereum sẽ tạo ra một tài khoản với địa chỉ công khai trên blockchain như hình:

Tham số ‘test’ ở trên gọi là passphrase. Đó 1 chuỗi kí tự được dùng để mã hóa thông tin. Thay vì nhập tên người dùng, mật khẩu như thông thường, ethereum sử dụng passphrase để thay thế.

Theo mặc định các tài khoản mới được tạo ra sẽ ở trong trạng thái khóa, bạn cần mở khóa những tài khoản này thì mới thực hiện giao dịch được.

Ethereum sẽ hỏi passphrase. nhập ‘test’, kết quả trả về “true” là thành công.

Bước 4: Chuyển tiền ether giữa các tài khoản trên Ethereum

Truy cập vào trang quản trị của ethereum trên Azure blockchain, bạn sẽ thấy được các thông tin về mạng ethereum blockchain đã triển khai trên Azure.

Trên Metamask, sau khi kết nối tới Azure blockchain, bạn có thể tạo một tài khoản và lấy địa chỉ công khai bằng cách dưới.

Nhập địa chỉ này vào trang quản trị để thực hiện chuyển 1000 Ether từ một tài khoản mặc định trên Azure ethereum blockchain đến tài khoản bạn vừa tạo ở Metamask.

Giao dịch sẽ mất khoảng vài giây để hoàn thành, bạn sẽ thấy tài khoản giaosucan được cập nhật lượng ether mới.

Trên Javascript console của Ethereum, dùng script sau đó kiểm tra sự balance của tài khoản.

Đây là tài khoản đã chuyển 1000 ether đến tài khoản giaosucan trên metamask. Balance của tài khoản đã được cập nhật.

Trên đây là một số hướng dẫn cơ bản cách xây dựng và triển khai một ethereum blockchain trên local và cloud, một số những Javascript đơn giản để thực hiện giao dịch trên Ethereum blockchain.

Đỗ Trọng Nguyên – FPT Software
Theo POTATO Tech Mag

BÌNH LUẬN

Please enter your comment!
Please enter your name here