Ethereum - Amazing blockchain platform
Blockchain
11
White

Giaosucan viết ngày 08/01/2018

Bản quyền thuộc Fsoft Potato Tech Mag

Đón đọc những bài viết đặc sắc ở blog
http://giaosucan.com

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 developer 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, platform 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 muốn giới thiệu đến các bạn một platform blockchain mới, rất nổi tiếng đó là Ethereum, kiến trúc, cách develop và deploy một ứng dụng trên Ethereum blockchain.
Image result for ethereum
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.
Được đề xuất vào năm 2013 bởi Vitalik Buterin, một lập trình viên Bitcoin, với ý 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. 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ự bitcoun) được đào sẵn

alt text

Nguyên tắc hoạt động ra sao ?
alt text
Ethereum là một decentralized platform chạỵ các hợp đồng thông minh (smart contract). Bình thường, khi ký một hợp đồng để trao đổi giá trị 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ố mà có thể giúp cho việc thực hiện giao dịch trực tiếp giữa các thực thể mà không cần tin cậy nhau.
Smart contract trong ethereum là một chương trình thực thi các business logic, không bị kiểm duyệt hay can thiệp từ bên trung gian, 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 bytecode format 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 sử dụng mạng máy tính Ethereum
alt text
Trong mạng ethereum, có 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 smart contract trên EVM.
Buld Ethereum blockchain steps by steps
Phần này sẽ hướng dẫn cách
Build một mạng Ethereum blockchain đơn giản trên local PC và trên cloud
Lập trình một smartcontract bằng solidity và deployed lên mạng blockchain,
Phát triển một Daap để communicate với Ethereum client 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
Steps 1) Build Ethereum blockchain
Bạn có thể tự build 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 Build trên local PC
Ethereum cung cấp công cụ testrpc, một Node.js based Ethereum client để testing và develop ethereum.
Sử dụng npm để cài đặt testrpc
npm install -g ethereumjs-testrpc
Sau khi install xong, chạy testrpc trên terminal
alt text
Testrpc sẽ tạo ra một mạng private ethereum blockchain và listening ở port 8545
alt text
1.2 Build trên Azure cloud
Microsoft Azure cung cấp dịch vụ Ethereum Blokchain cho phép bạn có thể deploy một mạng private blockchain ethereum trên cloud
Bạn cần đăng kí một account trên Azure, Microsoft cho phép free trial trong vòng một năm, nên không lo tốn phí dịch vụ
Trên Azure dashboard, create new Ethereum Consortium Blokchain
alt text
Nhập các thông tin cần thiết cho Azure blockchain bao gồm
Basic settings: Ethereum Virtual Machine user name, password
Network size and performance
Ethereum Setting: configure số lượng node cần thiết

alt text
Sau khi thực hiện xong các bước trên, Azure sẽ tiến hành deploy một ethereum blockchain, virtual machine. Quá trình deploy mất khoảng 5 – 10 phút, sau đó sẽ được thông tin như hình dưới
2 thông tin quan trọng cần quan tâm là
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 admin để xem trạng thái của mạng ethereum blockchain
SSH-to-first-tx-node: Địa chỉ SSH để truy cập vào Ethereum virtual manchine
alt text
Step 2) Connect tới Ethereum blockchain
Sau khi deploy xong một mạng ethereum blockchain, bạn có thể sử dụng một chrome extension là Metamask để connect vào mạng blockchain.
Với metamask bạn có thể tạo ra các account, connect 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 accounts.
alt text

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 ở step 1 để connect tới Azure blockchain

Step 3) Truy cập vào Ethereum Virtual Machine
Trên Linux terminal, bạn có thể truy cập vào Ethereum Virtual Machine bằng SSH. SSH (viết tắt của từ Secure Socket Shell) là 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
ssh -p 3000 gethadmin@ether5fwzthn.eastus.cloudapp.azure.com
gethadmin@ether5fwzthn.eastus.cloudapp.azure.com địa chỉ của Azure Ethereum Virtual Machine bạn đã tạo ở step 1, Azure sẽ yêu cầu nhập password để truy cập
Nếu connect thành công, sẽ thấy như hình dưới
alt text
Bạn đã truy cập được vào máy ảo Ethereum trên blockchain, vào có thể sử dụng command line để thao tác trên máy chủ này
Ethereum cung cập một command line 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 account
Tạo các contract và gửi các transaction
Explore lịch sử các khối block trong blockchain
Tạo account mới, lock và unlock các account
Và rất nhiều thứ khác nữa
Tại EVM terminal, gõ command sau
geth attach
Bạn sẽ truy cập vào Geth JavaScript console. Đây là một javascript runtime environment cung cấp đẩy đủ API cho phép bạn viết những code javascript để tương tác với Ethereum blockchain
alt text
Dưới đây là một số script đơn giản
Xem danh sách account có trong ethereum blockchain
personal.listAccounts
Hiển thị danh sách các public address của các account. Public address là một chuỗi string để định danh các account trong blockchain, tương tự như username
alt text
Tạo một account mới
personal.newAccount('test')
Ethereum sẽ tạo ra một account với public address trên blockchain như hình dưới,
alt text
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 username, password như thông thường, ethereum sử dụng passphrase để thay thế
Theo mặc định các account mới được tạo ra sẽ ở trong trạng thái lock, bạn cần unlock những account này thì mới thực hiện giao dịch được
personal.unlockAccount('0x5605f53d689626c23e5b3ce625b1b6fbcf402d64')

Ethereum sẽ hỏi passphrase. nhập ‘test’, kết quả trả về true là thành công.
Step 4) Chuyển tiền ether giữa các account trên Ethereum
Truy cập vào admin site của ethereum trên Azure blockchain, bạn sẽ thấy được các thông tin về mạng ethereum blockchain đã deploy trên Azure
alt text

Trên Metask mask, sau khi kết nối tới Azure blockchain, bạn có thể tạo một account và lấy public address bằng cách dưới
alt text

Nhập address này vào trang admin để thực hiện chuyển 1000 Ether từ một account mặc định trên Azure ethereum blockchain đến account 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 account giaosucan được cập nhật lượng ether mới
alt text
Trên Javascript console của Ethereum, dùng script sau đó check balance của account
eth.getBalance("0x72f8ceeeba0f091fe811151487654f08cab75666")
0x72f8ceeeba0f091fe811151487654f08cab75666 là account đã chuyển 1000 ether đến account giaosucan trên metamask.
Balance của account đã được update
alt text
Trên đây là một số hướng dẫn cơ bản cách build và deploy 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. Bài tiếp theo sẽ hướng dẫn các bạn các bước để phát triển một ứng dụng phân tán trên blockchain.

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

Giaosucan

23 bài viết.
177 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
29 3
Đón đọc những bài viết đặc sắc ở blog https://giaosucan.blogspot.com Lịch sử ra đời Những người làm trong ngành tài chính ngân hàng sẽ không xa lạ...
Giaosucan viết 6 tháng trước
29 3
White
29 4
Bản quyền thuộc Fsoft Potato Tech Mag Giới thiệu series chuyện về kiến trúc Microservice từ thiết kế đển implementation Giaosucan's blog: Chia sẻ...
Giaosucan viết 1 tháng trước
29 4
White
19 4
Bản quyền thuộc Fsoft Potato Tech Mag Đón đọc những bài viết đặc sắc ở blog https://giaosucan.blogspot.com Năm Donal Trump lần thứ nhất, cách mạ...
Giaosucan viết 12 tháng trước
19 4
Bài viết liên quan
White
6 0
Xin chào mọi người. Đây là phần 4 trong bài viết của mình về xây dựng 1 blockchain đơn giản với ngôn ngữ Go. Các bạn có thể có thể tham khảo 3 ph...
Trần Mỹ viết 8 ngày trước
6 0
White
23 9
XIn chào mọi người. Thời gian gần đây mình có tìm hiểu về blockchain và golang. Mình viết bài viết này với mục đích chia sẻ và tổng hợp những kiến...
Trần Mỹ viết 1 tháng trước
23 9
White
1 0
Merkle tree, cũng như được biết đến là cây hash nhị phân, là một dạng cấu trúc dữ liệu sử dụng để lưu trữ hash của các thông tin cá nhân trong bộ d...
Vani viết 8 ngày trước
1 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


White
{{userFollowed ? 'Following' : 'Follow'}}
23 bài viết.
177 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á!