Cơ bản về Ethereum (Part 2)

Cau Ta
8 min readMar 21, 2018

--

https://www.pexels.com/photo/100-dollar-bill-benjamin-franklin-blockchain-business-844122/

Phần này mình sẽ giới thiệu về các phần mềm quản lý ví ETH và hướng dẫn sử dụng cơ bản để tạo một transaction trên Ethereum network.

Metamask

Metamask là một extension trên trình duyệt chrome và firefox, bạn có thể download tại đây. Với metamask, bạn không cần phải đồng bộ blockchain về, mọi giao dịch được thực hiện thông qua server của metamask. Private key được lưu trữ ở phía local.

Đây là giao diện bên trong của metamask.

Metamask interface

Khi bạn mới cài đặt metamask về, bạn cần phải khởi tạo password để metamask bảo vệ tài khoản của bạn.

set up password

sau khi cài đặt password xong, metamask sẽ cho bạn 12 từ. những từ này là các seed word dùng để generate ra list các accounts Ethereum khác nhau. Hãy chắc chắn là mình lưu trữ ở đâu đó và mã hóa nó an toàn. Để có thể khôi phục nếu lỡ xóa trình duyệt hay xóa cache.

Metamask seed words

Khi vào bên trong metamask, bạn sẽ thấy nút một drop menu ở trên góc trái. Metamask cung cấp cho mình danh sách các network. Trong đó, main network là network chính của ethereum, nói dễ hiểu hơn là “real money”, các network còn lại là test net do cộng đồng dựng lên để phục vụ mục đích test. Coin trên test net sẽ được phát miễn phí, nhưng có giới hạn. Bạn chỉ cần request ở nút “Buy”, admin sẽ chuyển cho bạn.

Để tạo một giao dịch, click nút “Send”. Nhập vào địa chỉ nhận, lượng ETH muốn gửi. Ở dưới là optional data, nếu địa chỉ nhận là một contract thì đây là nơi định nghĩa function bạn muốn gọi.

Sau khi click “Next”, bạn sẽ thấy chi tiết của một transaction chuẩn bị được khởi tạo. “Submit” để ký xác nhận transaction và gửi lên cho miner.

Điểm mạnh của Metamask là không cần phải đồng bộ blockchain về, tạo transaction nhanh. phù hợp cho những người dùng nhỏ lẻ. Giao diện cũng rất rõ ràng và gọn. Hỗ trợ quản lý transaction.

Nhưng metamask sử dụng cách sinh key bằng một list các từ ngẫu nhiên gọi là seed word, chỉ cần có seed word này là có thể lấy lại được tất cả các tài khoản, do đó bạn cần giữ chúng thật cẩn thận, cẩn thận hơn nữa là học thuộc lòng nhớ trong đầu cho chắc. Một điểm yếu khác, mọi transaction đều thông qua server của metamask, do đó bạn phải phụ thuộc vào nó.

Cách đây vài tháng mình có thực hiện testing smart contract, cũng là lúc game Crypto kitties đang hot, lượng transaction từ 4k–5k/phút tăng lên >20k/phút. Metamask gần như tê liệt, etherscan cũng không thể push được transaction bởi tất cả người chơi game đều dùng metamask, server của nó không chịu nổi. Lúc đó mình hoàn toàn phụ thuộc vào metamask, không làm gì được, cuối cùng vài ngày sau nó mới back up được thêm server. Do đó, luôn có một phương án dự phòng để đề phòng trường hợp.

Myetherwallet

myetherwallet (mew) có hai cách sử dụng.

Cả hai đều không cần đồng bộ blockchain về, mà sẽ thông qua server khác. Có nhiều lựa chọn về nhà cung cấp network.

Với extension trên chrome, bạn sẽ phải import ví của mình vào, hoặc tạo mới. Có nhiều cách để import.

Mew generate wallet mới theo ngẫu nhiên, và lưu khóa bằng file Json, bạn sẽ phải nhập password để mã hóa private key.

add wallet on extension

Để tạo transaction, chọn tab “Send Ether & Tokens”. Nhập password để unlock. Giao diện sử dụng cũng rất đơn giản. Nhập địa chỉ người nhận, lượng muốn gửi, drop down menu bên phải là để chọn loại coin muốn gửi, trong đó bao gồm cả ETH và token chạy trên ETH, chọn gas limit và generate transaction, ở thanh trên sẽ có lựa chọn gas price để bạn điều chỉnh phí.

Với webapp, sẽ khác đi một chút, đó là nó không lưu trữ ví của bạn, mỗi lần gửi bạn cần import lại ví của mình, để đảm bảo bảo mật. Hoặc bạn có thể tạo mới ví, khi đó nó sẽ hỏi bạn download file Keystore về để sử dụng trong lần sau.

Có nhiều lựa chọn hơn để import ví, trong đó nó có thể liên kết với metamask để ký transaction và gửi thông qua server metamask.

add wallet on webapp

Còn một số tính năng khác nữa bạn có thể tự tìm hiểu.

Mew cho ta nhiều sự lựa chọn hơn về network provider và nhiều lựa chọn hơn về sử dụng ví. Không cần phải đồng bộ blockchain về. Thay vì nhớ 12 từ kia thì bạn có thể lựa chọn tạo ví bằng password.

Mew có thể tương tác với contract nhưng không tiện lợi bằng metamask. Chi tiết về cách tương tác với smart contract sẽ có trong bài nâng cao.

Mist / Ethereum Wallet

Mist và Ethereum Wallet là một, chỉ khác nhau một chút về giao diện. Mist có giao diện giống trình duyệt web còn EW giao diện ứng dụng sử dụng công nghệ electron.

Ethereum Blockchain Syncing

Ethereum Wallet (EW) cần phải đồng bộ chain về máy, do đó bạn cần phải có một máy mạnh khoảng 16GB RAM, CPU >i5. Dung lượng ổ cứng để lưu trữ khá lớn.

Sau khi đã đồng bộ xong, click “launch application” để vào bên trong. Bạn có thể chọn network đồng bộ, gồm 4 network. Main net chính là network thật, Ropsten và Rinkeby là testnet, Solo network là network bạn tự tạo ra.

EW chạy ở máy của bạn và khởi tạo transaction bằng cách ký xác nhận và push lên network, không thông qua bất kỳ một server nào khác. Bản thân EW đã tự start một server ở local để có thể broadcast transaction đi toàn mạng. Để đảm bảo tính phi tập trung thay vì phụ thuộc quá nhiều vào các network provider.

EW UI

Chuyển qua Tab Send để tạo transaction. Cũng bao gồm các thông số như những phần mềm quản lý ví khác: địa chỉ nhận, lượng muốn gửi, đơn vị gửi bao gồm ETH và token chạy trên ETH, bên dưới là optional data định nghĩa function gọi trong contract, lựa chọn transaction fee.

Tab Contract là nơi quản lý và deploy mới contract. Bạn có thể tạo code smart contract rồi deploy, hoặc load một smart contract đã được deploy về để sử dụng.

Mist và Ethereum Wallet là phần mềm quản lý ví khá mạnh, đảm bảo bảo mật vì mọi thao tác đều diễn ra ở local trước khi transaction được broadcast lên mạng. Nhưng cần máy mạnh và thời gian để đồng bộ chain.

Core bên dưới sử dụng ngôn ngữ Go-lang. Mist và Ethereum Wallet sẽ start một server ở bên dưới với domain localhost:8545, sau đó tương tác với blockchain thông qua API/RPC.

Parity

Parity là một phần mềm quản lý ví được phát triển bởi Parity Inc. Core bên dưới được viết bằng ngôn ngữ Rust, bên trên là một layer web UI.

Sau khi cài đặt parity sẽ start một server local với domain localhost:8180. Đây cũng là một phần mềm cần phải đồng bộ chain trước khi dùng.

Sau khi trải qua các bước cài đặt và khởi tạo ví, parity sử dụng mnemonic phrase seed word để sinh key như metamask, bạn cần phải copy xuống, sau đó nó sẽ bắt viết lại. Hơi rườm rà khi không cho paste.

inside parity

Parity thể hiện chi tiết các thông số của mạng hơn Mist và EW. Mình ít dùng cái này nên chỉ giới thiệu sơ qua. Có rất nhiều feature trong đó.

Bên tab setting để chọn network muốn đồng bộ

Vào setting enable contract để theo dõi, deploy, viết một smart contract, …

Một số Dapps mở rộng được thêm vào tiện ích cho người dùng.

Parity nhìn trực quan, rõ ràng, đầy đủ các tính năng và thêm nhiều tiện ích khác cho người dùng phát triển phần mềm.

Chain được đồng bộ về đảm bảo tính phi tập trung và bảo mật. Software chạy ổn định, Mist và Ethereum Wallet đôi khi giở chứng lắm. Parity mình ít dùng nên không rõ lắm khi chạy xong nó như thế nào nhưng trong quá trình đồng bộ và sử dụng thì có vẻ smooth hơn hẳn Mist và Ethereum Wallet.

Conclusion

Bài viết này giới thiệu về một số phần mềm quản lý ví và cách sử dụng. Hi vọng các bạn có thể hình dung phần nào cách hoạt động, giao dịch trên Ethereum network. Có thể mày mò thêm một số tính năng khác mà không được liệt kê trong đây.

Phần sau mình sẽ đi vào nâng cao, cách code và deploy một contract. Các chuẩn smart contract được sử dụng bởi cộng đồng và một số ứng dụng đã được phát triển.

Xem phần 1 tại đây:

https://medium.com/p/eb9eca249a68?source=linkShare-6c7b4f3bc181-1526663066

Hope you like it…!

--

--

Cau Ta

Blockchain expert, Cryptos Researcher, Software Engineering. Founder Crypitor Service.