Ethereum là gì
Nhìn vào những lợi thế mà Bitcoin – một loại tiền kỹ thuật số mang lại, mọi người muốn sử dụng khái niệm Blockchain trong các ứng dụng của riêng họ. Mọi người muốn chuyển từ các hợp đồng vật lý của họ sang các hợp đồng kỹ thuật số thông minh, nơi một số vấn đề như thoái thác, minh bạch, bảo mật, v.v. sẽ được tự động giải quyết. Kết quả của nỗ lực này đã dẫn đến việc tạo ra Ethereum – một nền tảng phổ biến để tạo ra các ứng dụng Blockchain phân tán hỗ trợ các hợp đồng thông minh
Ethereum – Giới thiệu
Một thành công lớn của Bitcoin đã làm dấy lên sự quan tâm trong tâm trí của một số người để tạo ra tiền tệ của riêng họ. Nhìn vào những lợi thế mà Bitcoin – một loại tiền kỹ thuật số mang lại, mọi người muốn sử dụng khái niệm Blockchain trong các ứng dụng của riêng họ. Mọi người muốn chuyển từ các hợp đồng vật lý của họ sang các hợp đồng kỹ thuật số thông minh, nơi một số vấn đề như thoái thác, minh bạch, bảo mật, v.v. sẽ được tự động giải quyết. Kết quả của nỗ lực này đã dẫn đến việc tạo ra Ethereum – một nền tảng phổ biến để tạo ra các ứng dụng Blockchain phân tán hỗ trợ các hợp đồng thông minh.
Trong hướng dẫn này, bạn sẽ học cách tạo một ứng dụng phân tán (DAPP) trên nền tảng Ethereum. Cụ thể hơn, bạn sẽ học cách viết hợp đồng, thử nghiệm nó trên một Blockchain cục bộ và cuối cùng là triển khai nó trên một Blockchain bên ngoài để thử nghiệm sâu và sử dụng cho mục đích thương mại. Bạn sẽ sử dụng Solidity , một ngôn ngữ hướng đối tượng để phát triển hợp đồng. Bạn cũng sẽ sử dụng Remix , một IDE mã nguồn mở để phát triển và thử nghiệm các hợp đồng. Để triển khai hợp đồng đã được thử nghiệm trên một Blockchain bên ngoài, bạn sẽ sử dụng Ganache . Để tương tác với hợp đồng, bạn sẽ cần một ứng dụng khách. Tôi sẽ sử dụng MyEtherWallet để tạo ví cho từng khách hàng như vậy. Người tạo hợp đồng sẽ xuất bản hợp đồng. Bất kỳ khách hàng nào khác sẽ xem xét giá trị liên hệ bằng cách sử dụng giao diện được cung cấp bởi hợp đồng và gửi một số tiền cho người tạo để thực hiện một phần của hợp đồng. Vì vậy, chúng ta hãy bắt đầu bằng cách viết hợp đồng
Ethereum – Hợp đồng thông minh
Có một số công cụ có sẵn để phát triển và kiểm tra các hợp đồng. Một trong những công cụ đơn giản nhất được cung cấp trên chính trang Ethereum chính thức. Công cụ này có tên là Remix , chúng tôi sẽ sử dụng công cụ này để phát triển hợp đồng của mình
Phát triển hợp đồng
Mở Remix IDE bằng cách nhập URL sau vào trình duyệt của bạn.
https://remix.ethereum.org Màn hình sau sẽ xuất hiện
Trong cửa sổ trung tâm, bạn sẽ thấy một số mã mặc định, đây là mã Solidity mẫu. Bạn sẽ nhập mã hợp đồng của mình vào trình soạn thảo mã này. Mã của bạn có thể được biên dịch tự động. Sau khi biên dịch thành công mã, bạn sẽ có thể chạy mã trong cùng một IDE. Khi bạn thực hiện các phương thức hợp đồng, kết quả sẽ được hiển thị trong cùng một cửa sổ IDE. Có các phương tiện để gỡ lỗi mã và kiểm tra đơn vị dự án của bạn. Chúng có thể được nhìn thấy trong thanh menu ở trên cùng bên phải như được hiển thị trong ảnh chụp màn hình IDE bên dưới. Bạn sẽ sớm sử dụng các tùy chọn này
Bây giờ bạn sẽ bắt đầu viết hợp đồng của mình.
Ethereum – Sự vững chắc để viết hợp đồng
Solidity là một ngôn ngữ hướng đối tượng đặc biệt được phát triển để viết hợp đồng. Nó là một ngôn ngữ cấp cao, kế thừa các đặc điểm từ C ++, Python và JavaScript. Trình biên dịch Solidity biên dịch mã nguồn của bạn thành mã bytecode chạy trên Máy ảo Ethereum (EVM).
Để hiểu nhanh về cú pháp Solidity, hãy xem mã mẫu trong IDE.
pragma solidity >=0.4.22 <0.6.0;
contract Ballot {
Dòng đầu tiên là một chỉ thị cho trình biên dịch. Dòng thứ hai bắt đầu định nghĩa của hợp đồng. Trong hợp đồng, bạn khai báo các biến như:
address chairperson;
Bạn cũng có thể xác định các cấu trúc như Đề xuất và tạo một mảng các mục cấu trúc này. Kiểm tra điều này trong cửa sổ mã.
Sau đó, bạn có thể xác định một phương thức khởi tạo được gọi tại thời điểm khởi tạo hợp đồng.
constructor(uint8 _numProposals) public {
Sau hàm tạo, bạn sẽ xác định một số phương thức, đó là các phương thức hợp đồng. Trong hợp đồng mẫu, giveRightToVote là một trong những phương thức như vậy có cú pháp sau:
function giveRightToVote(address toVoter) public {
Các công từ khóa làm cho phương pháp này công khai invokable bởi bất kỳ khách hàng những người có quyền truy cập vào các hợp đồng. Tương tự như vậy, hợp đồng mẫu xác định thêm ba phương pháp được gọi là ủy quyền, bỏ phiếu và chiến thắng Proposal . Kiểm tra những điều này để bạn hiểu rõ về cú pháp Solidity. Đây là những điều kiện tiên quyết để viết hợp đồng của riêng bạn. Giải thích cú pháp đầy đủ của Solidity nằm ngoài phạm vi của hướng dẫn này.
Ethereum – Phát triển MyContract
Chúng tôi sẽ đặt tên cho hợp đồng của mình là MyContract như trong phần khai báo sau:
contract MyContract {
Chúng ta sẽ khai báo hai biến như sau:
uint amount;
uint value;
Số tiền thay đổi sẽ giữ số tiền tích lũy được gửi bởi những người thực hiện hợp đồng cho người tạo hợp đồng. Trường giá trị sẽ giữ giá trị hợp đồng. Khi những người thực thi thực hiện hợp đồng, trường giá trị sẽ được sửa đổi để phản ánh giá trị hợp đồng cân bằng.
Trong hàm tạo hợp đồng, chúng tôi đặt giá trị của hai biến này.
constructor (uint initialAmount, uint initialValue) public {
amount = 0;
value = 1000;
}
Như ban đầu, số tiền thu được trên hợp đồng là 0, chúng tôi đặt trường số tiền là 0. Chúng tôi đặt giá trị hợp đồng thành một số tùy ý, trong trường hợp này là 1000. Người tạo hợp đồng quyết định giá trị này.
Để kiểm tra số tiền đã thu thập tại bất kỳ thời điểm nhất định nào, chúng tôi cung cấp một phương thức hợp đồng công khai được gọi là getAmount được định nghĩa như sau:
function getAmount() public view returns(uint) {
return amount;
}
Để có được giá trị hợp đồng cân bằng tại bất kỳ thời điểm nhất định nào, chúng tôi xác định phương pháp getBalance như sau:
function getBalance() public view returns(uint) {
return value;
}
Cuối cùng, chúng tôi viết một phương thức hợp đồng (Gửi) . Nó cho phép khách hàng gửi một số tiền cho người tạo hợp đồng
function send(uint newDeposit) public {
value = value - newDeposit;
amount = amount + newDeposit;
}
Việc thực hiện phương thức gửi sẽ sửa đổi cả hai trường giá trị và số tiền của hợp đồng. Mã hợp đồng đầy đủ được cung cấp bên dưới
contract MyContract {
uint amount;
uint value;
constructor (uint initialAmount, uint initialValue) public {
amount = 0;
value = 1000;
}
function getBalance() public view returns(uint) {
return value;
}
function getAmount() public view returns(uint) {
return amount;
}
function send(uint newDeposit) public {
value = value - newDeposit;
amount = amount + newDeposit;
}
}
Ethereum – Biên dịch hợp đồng
Khi bạn viết mã hợp đồng hoàn chỉnh, việc biên dịch mã đó trong IDE này là không cần thiết. Chỉ cần nhấp vào hộp kiểm Tự động biên dịch trong IDE như được hiển thị trong ảnh chụp màn hình bên dưới
Ngoài ra, bạn có thể biên dịch hợp đồng bằng cách nhấp vào nút có tiêu đề “Bắt đầu biên dịch” .
Nếu có bất kỳ lỗi đánh máy nào, hãy sửa lỗi đó trong cửa sổ mã. Đảm bảo mã được biên dịch đầy đủ mà không có lỗi. Bây giờ, bạn đã sẵn sàng để triển khai hợp đồng
Ethereum – Triển khai hợp đồng
Trong chương này, chúng ta sẽ tìm hiểu cách triển khai hợp đồng trên Ethereum. Nhấp vào tùy chọn menu Run để triển khai hợp đồng. Màn hình sau sẽ xuất hiện
Tên hợp đồng được hiển thị trong hộp danh sách được đánh dấu. Dưới đây, bạn sẽ thấy nút Deploy , nhấp vào nút này để triển khai hợp đồng. Hợp đồng sẽ được triển khai trên Blockchain tích hợp sẵn của Remix. Bạn sẽ có thể thấy hợp đồng đã triển khai ở cuối màn hình. Bạn có thể thấy điều này trong phần được đánh dấu của ảnh chụp màn hình bên dưới. Lưu ý, sự hiện diện của ba tên phương thức trong vùng được đánh dấu này. Tiếp theo, bạn sẽ tương tác với hợp đồng bằng cách thực hiện các phương thức hợp đồng
Ethereum – Tương tác với Hợp đồng
Khi bạn nhấp vào hợp đồng đã triển khai, bạn sẽ thấy các phương thức công khai khác nhau được cung cấp bởi hợp đồng. Điều này được hiển thị trong ảnh chụp màn hình bên dưới.
Phương thức đầu tiên gửi có một hộp chỉnh sửa ở phía trước nó. Tại đây, bạn sẽ nhập các tham số theo yêu cầu của phương thức hợp đồng. Hai phương thức còn lại không nhận bất kỳ tham số nào.
Gửi tiền
Bây giờ, hãy nhập một số tiền chẳng hạn như 100 vào trước chức năng gửi trong cửa sổ hợp đồng. Bấm vào nút gửi . Điều này sẽ thực hiện phương thức gửi hợp đồng , làm giảm giá trị của trường giá trị hợp đồng và tăng giá trị của trường số tiền .
Kiểm tra giá trị hợp đồng
Hành động gửi tiền trước đó đã làm giảm giá trị hợp đồng xuống 100. Bây giờ bạn có thể kiểm tra điều này bằng cách gọi phương thức getBalance của hợp đồng. Bạn sẽ thấy kết quả đầu ra khi bạn nhấp vào nút getBalance như được hiển thị trong ảnh chụp màn hình bên dưới
Giá trị hợp đồng hiện giảm xuống còn 900.
Kiểm tra số tiền đã thu
Trong phần này, chúng tôi sẽ xem xét số tiền thu được từ trước đến nay trên hợp đồng này. Đối với điều này, hãy nhấp vào nút getAmount . Màn hình sau sẽ xuất hiện.
Các mức giá trị trường đã thay đổi từ 0 đến 100. Hãy thử một vài thao tác gửi và kiểm tra giá trị hợp đồng và các trường số tiền để kết luận rằng hợp đồng đã triển khai đang thực hiện như mong đợi.
Ethereum – Hạn chế của Remix
Remix IDE mà bạn đã sử dụng cho đến nay đủ tốt để phát triển và thử nghiệm ban đầu cho hợp đồng của bạn. Đối với các hợp đồng ngoài đời thực, bạn cần kiểm tra chức năng của mình dựa trên các thông số khác nhau. Remix không thể tạo tài khoản người dùng thực (không thử nghiệm) để chuyển tiền giữa họ. Bạn không có quyền kiểm soát cấu hình của Blockchain do Remix tạo ra. Bạn thậm chí không thể giám sát việc thực hiện các giao dịch. Remix bỏ lỡ một số thao tác nâng cao. Do đó, chúng tôi cần triển khai hợp đồng của mình trên một Blockchain phức tạp hơn cung cấp tất cả các tính năng này. Một trong những Blockchain như vậy là Ganache mà bạn sẽ tìm hiểu trong chương tiếp theo của chúng tôi.