Xin chào các bạn, ở bài viết trước vakaxa.net đã tổng hợp kiến thức về smartcontract đầy đủ nhất. Nhưng mình chắc chắn rằng không phải ai cũng biết tạo một hợp đồng thông minh như thế nào.Bài viết sẽ hướng dẫn cách tạo một hợp đồng thông minh(smartcontract )đơn giản. Bạn nào chưa biết hợp đồng thông minh là gì có thể xem chi tiết: Smart Contract là gì? Tổng hợp kiến thức về Smart Contract

Như chúng ta đã biết, Bitcoin là đồng tiền điện tử đầu tiên và giá trị nhất cho đến ngày nay.  nhưng việc sử dụng Bitcoin  tại thời điểm này chỉ là tiền tệ. Điều này rất tốt cho thanh toán hàng ngày, nhưng nó cũng hạn chế  nhiều chức năng hơn.

Chúng ta vẫn có thể tạo hợp đồng thông minh với Bitcoin, nhưng ngôn ngữ hợp đồng thông minh của Bitcoin bị hạn chế và không thể mở rộng.Để các hợp đồng thông minh chạy trên một mạng lưới phi tập trung rộng lớn, chúng ta sẽ tạo các hợp đồng thông minh cho chuỗi khối Ethereum. 

Ethereum rất đặc biệt, bởi vì đây là lần triển khai blockchain đầu tiên có máy ảo Turing Complete được xây dựng từ đầu. Điều này có nghĩa là một hợp đồng thông minh Ethereum  (về mặt lý thuyết) có thể được sử dụng để thực hiện bất kỳ nhiệm vụ tính toán nào. Nói một cách đơn giản hơn, gần như bất kỳ chương trình nào cũng có thể chạy trên Ethereum.

Cách tạo một hợp đồng thông minh(smart contract)

Tiếp theo, chúng ta sẽ thực hiện một hợp đồng thông minh truy cập đơn giản, được viết bằng ngôn ngữ lập trình có tên là Solidity , một ngôn ngữ tương tự như JavaScript. 

Đầu tiên, bạn phải cài đặt Ganache , đây sẽ là công cụ sẽ sử dụng để tạo một blockchain riêng chỉ chạy trên máy. Bạn cũng cần tải xuống bản sao MyEtherWallet của riêng bạn (trang web được lưu trữ URL sẽ không hoạt động trong trường hợp này). Lưu ý: Ti xung etherwallet-v3.xx.xxzip.

Sau khi cài đặt xong, các bạn sẽ bắt đầu bằng cách truy cập https://remix.ethereum.org/ trong trình duyệt của các bạn, nơi các bạn sẽ thấy màn hình sau

Đây là Remix, một trình biên dịch trực tuyến cho Solidity. Đó là những gì chúng ta sẽ sử dụng để viết mã hợp đồng thông minh của mình. Khi bạn truy cập trang đầu tiên, trình soạn thảo văn bản được tải sẵn một số mã. Sau đó sẽ xóa tất cả văn bản đó và thay thế bằng văn bản sau

Mã truy cập trong Solidity

Đây là mã cho truy cập của bạn. Như có thể thấy, nó có một biến và ba hàm. Biến, count là một số nguyên riêng tư, có nghĩa là không thể truy cập được bởi bất kỳ ai ngoài chính hợp đồng. Hàm đầu tiên incrementCounter(), thay đổi hoặc thay đổi, giá trị của count bằng cách tăng giá trị của nó. Hàm thứ hai decrementCounter(), làm thay đổi giá trị của count bằng cách giảm giá trị của nó. Và, hàm thứ ba getCount(), truy cập count và trả về giá trị của nó cho bất kỳ ai hoặc bất cứ thứ gì được gọi là hàm.

Khi mã truy cập được dán vào Remix, nó sẽ trông giống như sau và tự động biên dịch.

Các bạn sẽ để tab đó mở, để có thể quay lại sau. Bây giờ, hãy mở Ganache và bạn sẽ thấy một cái gì đó như thế này.

Ở gần phía trên màn hình, bạn có thể thấy văn bản có nội dung là RPC SERVERNH. Và bạn sẽ cần nó sớm

Bây giờ, hãy giải nén MyEtherWallet tải xuống và mở thư mục. Sau đó, mở index.html tệp trong trình duyệt của bạn để xem màn hình sau

Ở góc trên bên phải, bạn có thể thấy một danh sách thả xuống cho MyEtherWallet biết mạng Ethereum nào sẽ kết nối với. Theo mặc định, nó kết nối với mạng chính Ethereum (ETH). Tiếp theo thay đổi điều này bằng cách nhấp vào menu thả xuống.

Nhấp vào thêm Node tùy chỉnh.

Bây giờ bạn có thể nhập thông tin Máy chủ RPC mà Ganache đã cung cấp cho bạn trước đó. Lưu ý: Bn có th đt tên cho nút ca mình bt c điu gì bn mun.

MyEtherWallet hiện được kết nối với blockchain tự lưu trữ của bạn thông qua Ganache. Hãy sử dụng MyEtherWallet để tải lên hợp đồng thông minh Counter của bạn lên blockchain. Để thực hiện việc này, chúng tôi sẽ nhấp vào các hợp đồng của nhóm ED trong thanh điều hướng hàng đầu của MyEtherWallet và chọn Hợp đồng triển khai hợp đồng.

Như bạn có thể thấy, MyEtherWallet yêu cầu cung cấp mã byte của hợp đồng. Để xác định vị trí này, bạn sẽ quay trở lại Remix IDE trước đó và nhấp vào nút Chi tiết trực tuyến

Bây giờ bạn sẽ thấy một hộp thoại có nhiều thông tin về hợp đồng Counter.

Để sao chép mã byte, nhấp vào biểu tượng clipboard bên cạnh BYECECEE.

Sau đó, quay lại MyEtherWallet và dán mã byte vào hộp thoại

Bây giờ, có thể cuộn xuống và nhập một tài khoản để tải lên hợp đồng. Ganache đã cho 5 địa chỉ có thể sử dụng để tương tác với blockchain riêng. Để sử dụng một trong số chúng để tải lên hợp đồng này, quay lại Ganache và nhấp vào biểu tượng chính cho bất kỳ địa chỉ nào.

Nó sẽ cho chúng ta thấy khóa riêng được liên kết với tài khoản này.

Sao chép khóa riêng này và dán nó vào MyEtherWallet

Bây giờ nếu nhấp vào Mở khóa, thì MyEtherWallet sẽ hỏi nếu muốn ký giao dịch này và triển khai hợp đồng

Nếu giao dịch xảy ra thành công, thì Ganache sẽ tăng giá trị khối hiện tại của nhóm và số giao dịch của tài khoản đã sử dụng để triển khai hợp đồng cũng tăng lên.

Hợp đồng hiện đã được tải lên blockchain! Để tương tác với nó bằng cách tăng và giảm bộ đếm, chúng ta có thể quay lại MyEtherWallet và chọn Tương tác với Hợp đồng.

MyEtherWallet hiện yêu cầu địa chỉ mà hợp đồng mới được triển khai cư trú và Giao diện nhị phân ứng dụng (ABI) trong hợp đồng. Để tìm địa chỉ hợp đồng, quay lại Ganache và xem nhật ký giao dịch của chúng tôi.

Trang này hiển thị giao dịch đã tạo trước đó khi triển khai hợp đồng. Như bạn có thể thấy, Ganache cho biết địa chỉ đã sử dụng để triển khai hợp đồng, địa chỉ hợp đồng trên blockchain và thêm thông tin về giao dịch. Hãy nhấp vào giao dịch, sao chép địa chỉ hợp đồng đã tạo và dán nó vào MyEtherWallet.

 

 

Tất cả những gì còn lại mà chúng ta cần là ABI. Đây là những gì cho MyEtherWallet biết cách tương tác với hợp đồng. Để có được nó, quay lại Remix và nhấp vào biểu tượng clipboard bên cạnh GIAO DỊCH GIAO DỊCH – ABI, để sao chép nó.

Bây giờ chúng ta có thể quay lại MyEtherWallet, dán ABI vào hộp văn bản của nó và nhấp vào nút Truy cập vào đường dẫn

Tuyệt vời! Bây giờ chúng ta có thể tương tác với hợp đồng của mình bằng cách nhấp vào nút Chọn một chức năng thả xuống.

Trong mã của này, chúng ta đặt countgiá trị ban đầu là 0. Để xác nhận rằng hợp đồng đang hoạt động đúng, hãy gọi getCount()hàm.

Nó đã làm việc! Hợp đồng trả về 0 khi nhận được giá trị counttrước khi thay đổi. Nhưng, thực hiện hai chức năng khác, incrementCounter() và decrementCounter(). Hãy gọi incrementCounter()để kiểm tra nó. Sau đó, chọn lại chức năng thả xuống, chọn incrementCountervà tạo một giao dịch mới.

Điều này chỉ làm tăng giá trị của count. Bây giờ chúng ta có thể gọi getCount()lại để xác nhận xem giá trị có thực sự thay đổi hay không.

Như bạn có thể thấy, count bây giờ bằng 1! Vì vậy, incrementCount() chức năng  hoạt động. Bạn có thể tự do kiểm tra decrementCount(), và khám phá nhiều hơn nữa!

Trong suốt bài đăng này, mình đã đưa ra một blockchain trên chính máy của bạn, triển khai một hợp đồng thông minh cho nó và tương tác với hợp đồng. Điều này rất giống với quy trình làm việc của các nhà phát triển hợp đồng thông minh Ethereum chuyên nghiệp, mặc dù có một chút khác biệt. Quá trình này hoạt động rất tốt trong quá trình phát triển sớm hợp đồng thông minh, nhưng điều gì xảy ra nếu bạn muốn người khác tương tác với hợp đồng thông minh của mình mà không sử dụng tiền thật bằng cách triển khai nó lên mainnet?

 Trong trường hợp đó, bạn có thể tải hợp đồng của mình lên mạng thử nghiệm Ethereum hoặc testnet để hợp đồng được sao chép vào mọi máy trong mạng toàn cầu của Ethereum nhưng người dùng vẫn có thể sử dụng tiền giả để tương tác với nó. Trong một bài đăng sau, tôi sẽ đề cập đến cách triển khai các hợp đồng thông minh đến testnet bằng cách sử dụng một quy trình tương tự như quy trình được đề cập trong bài đăng này.

 

Pin It on Pinterest

Share This