Làm thế nào để viết Hợp đồng thông minh đầu tiên của bạn?



Tìm hiểu kiến ​​thức cơ bản về Phát triển hợp đồng thông minh và bắt đầu viết hợp đồng thông minh đầu tiên của bạn. Bạn cũng sẽ biết cách kiểm tra hợp đồng thông minh.

bên trong , bạn đã tìm hiểu về Hợp đồng thông minh là gì, các ngôn ngữ Hợp đồng thông minh khác nhau và cách thiết lập Môi trường phát triển hợp đồng thông minh. Trong bài viết này, bạn sẽ học cách xây dựng hợp đồng thông minh đầu tiên của mình. Tôi sẽ sử dụngPhối lại IDE để phát triển và thử nghiệm hợp đồng thông minh.

Các chủ đề dưới đây được đề cập trong hướng dẫn phát triển hợp đồng thông minh này:





Xây dựng Hợp đồng thông minh của bạn

Hợp đồng thông minh đặt hàng đơn giản sẽ được phát triển như một phần của loạt blog này. Khi loạt bài này tiến triển và khi các khái niệm mới về ngôn ngữ lập trình solidity được giới thiệu, hợp đồng thông minh đặt hàng sẽ phát triển và cải thiện.



Cấu trúc của Hợp đồng thông minh

Về bản chất, hợp đồng thông minh Solidity là một tập hợp các

  • dữ liệu - duy trì trạng thái hiện tại của hợp đồng
  • chức năng - áp dụng logic để chuyển đổi trạng thái của hợp đồng

Hợp đồng thông minh Solidity tuân theo một cấu trúc tiêu chuẩn. Mọi hợp đồng thông minh đều bắt đầu bằng câu lệnh sau



Chỉ thị Pragma

Từ khóa 'pragma' có thể được sử dụng để kích hoạt một số tính năng hoặc kiểm tra của trình biên dịch. Câu lệnh dưới đây xác định rằng tệp nguồn (hợp đồng thông minh) sẽ không biên dịch với trình biên dịch trước 0.4.0 và phiên bản trình biên dịch sau 0.6.0. Khai báo này đảm bảo không có hành vi không mong muốn nào được đưa vào khi một phiên bản trình biên dịch mới được giới thiệu.

độ rắn pragma> = 0,4,0<=0.6.0 

Tuyên bố hợp đồng

Hợp đồng được khai báo bằng từ khóa “hợp đồng”. Điều này tuyên bố một hợp đồng trống được xác định bằng tên 'PurchaseOrder'.

hợp đồng PurchaseOrder {}

Lưu trữ dữ liệu liên quan đến hợp đồng

Mọi hợp đồng hoặc trong các điều khoản chung, mọi chương trình có thể yêu cầu lưu trữ một số dữ liệu. Thêm dữ liệu vào chương trình cung cấp cho nó một mức độ linh hoạt. Chuyển từ các giá trị được mã hóa cứng trong chương trình sang các giá trị do người dùng cung cấp là một tính năng quan trọng. Các biến cho phép bạn lưu trữ dữ liệu, gắn nhãn dữ liệu, truy xuất dữ liệu và thao tác trên dữ liệu.

Phát triển hợp đồng thông minh: Giới thiệu các biến

Về độ vững chắc, các biến có hai loại

  1. Loại giá trị: Các loại biến này được truyền theo giá trị, tức là chúng luôn được sao chép khi chúng được sử dụng làm đối số hàm hoặc trong các phép gán. Ví dụ: số nguyên, địa chỉ booleans, v.v.
  2. Các loại tham chiếu: Loại biến này thuộc loại phức tạp và được chuyển qua tham chiếu, những biến này không phù hợp với 256 bit và phải được quản lý cẩn thận vì việc sao chép chúng rất tốn kém.

Thêm dữ liệu vào Hợp đồng thông minh

Hãy thêm một số biến dữ liệu vào hợp đồng. Đối với mỗi đơn đặt hàng, phải có một số lượng sản phẩm được liên kết với nó. Hãy để chúng tôi thêm một biến product_quantity sẽ có kiểu dữ liệu là số nguyên hoặc số.

ứng dụng của phân tích dữ liệu lớn

Biến chúng ta đang giới thiệu bây giờ là một số nguyên không dấu và được biểu thị bằng uint256, 256 ở đây biểu thị bộ lưu trữ 256 bit.

  • U - chưa ký (nghĩa là kiểu này chỉ có thể biểu diễn số nguyên dương, không phải số nguyên dương và âm)
  • INT - số nguyên
  • 256 - 256 bit có kích thước
  • giá trị tối thiểu uint256 có thể được gán là 0
  • giá trị tối đa uint256 có thể được chỉ định là 2 ^ 256-1 [một số rất lớn]

Số lượng sản phẩm chỉ là một giá trị dương và giả định hiện tại là chúng ta sẽ phục vụ cho một giá trị rất lớn cho số lượng sản phẩm.

Biến “product_quantity” được khai báo là một phần của trạng thái hợp đồng và do đó được duy trì hoặc được lưu trữ trong không gian hợp đồng. Hiện tại, biến này sẽ mặc định là giá trị 0.

hợp đồng PurchaseOrder {uint256 product_quantity}

Định nghĩa hàm tạo

Hàm tạo được gọi khi hợp đồng được triển khai. Hàm khởi tạo khởi tạo hợp đồng với một số giá trị. Trong kịch bản hiện tại, số lượng sản phẩm được đặt thành 100, khi hợp đồng được triển khai. Một phương thức khởi tạo được tham số hóa cũng có thể được tạo bằng cách truyền một biến và khởi tạo product_quantity bằng cách sử dụng giá trị được truyền vào.

Điểm quan trọng cần lưu ý ở đây là công cụ sửa đổi truy cập 'public' được liên kết với hàm tạo. Từ khóa công khai chỉ định rằng bất kỳ ai cũng có thể truy cập chức năng này, đây không phải là chức năng bị hạn chế.

constructor () public {product_quantity = 100}

Thêm chức năng

Bây giờ chúng ta hãy thêm chức năng để làm cho chương trình của chúng ta tương tác. Chức năng là các khả năng được kiểm soát có thể được thêm vào chương trình. Bất kỳ chức năng nào được đặt trước bởi chức năng từ khóa. Nhìn chung, đây là cách khai báo hàm trông như thế nào' chức năng ”.

Nhận chức năng

Một trong những yêu cầu phổ biến nhất, đối với bất kỳ chương trình nào, là đọc giá trị được lưu trữ. Trong hợp đồng sau, chúng ta sẽ cần đọc giá trị “product_quantity”. Để cung cấp khả năng này, một hàm đọc hoặc một hàm nhận được thêm vào. Trong hàm này, chúng tôi không thực hiện bất kỳ thao tác nào đối với giá trị được lưu trữ, chúng tôi chỉ lấy giá trị được lưu trữ.

Bây giờ chúng ta hãy chia nhỏ hàm get (get_quantity)

Không. Từ khóa Giá trị
một get_quantity (){không có tham số nào được truyền}
2 công cộng{bất kỳ ai cũng có thể truy cập chức năng}
3 lượt xem{biểu thị hàm chỉ đọc trạng thái của hợp đồng, không thay đổi trạng thái của hợp đồng, do đó xem}
4 trả về một biến kiểu uint256 {được định nghĩa là những gì được trả về bởi hàm}
function get_quantity () public view trả về (uint256) {return product_quantity}

Chức năng setter

Việc đọc dữ liệu là cần thiết và chúng tôi đã hoàn thành nó trong phần trước, nhưng hầu hết các kịch bản cũng yêu cầu khả năng ghi / cập nhật dữ liệu. Khả năng cụ thể này được cung cấp bằng cách thêm một hàm setter. Hàm này nhận một giá trị từ người dùng dưới dạng một tham số đầu vào. Sử dụng giá trị do người dùng cung cấp cho hàm, giá trị của biến “product_quantity” được ghi vào / cập nhật.

Bây giờ chúng ta hãy chia nhỏ hàm đã đặt của chúng ta (update_quantity)

cách tạo chuỗi ngẫu nhiên trong java

Thêm chức năng cập nhật giá trị số lượng sản phẩm

Không. Từ khóa Giá trị
một update_quantity (giá trị uint256){giá trị tham số của kiểu uint256 được truyền vào}
2 công cộng{bất kỳ ai cũng có thể truy cập chức năng}
3 Không bắt buộc vì trạng thái đang được cập nhật bởi các chức năng
4 trả về một biến kiểu uint256 (được xác định bởi hàm trả về)
function update_quantity (uint256 value) public {product_quantity = product_quantity + value}

Kết hợp tất cả những điều này với nhau, đây là cách hợp đồng tổng thể sẽ như thế nào.

độ rắn pragma> = 0,4,0<=0.6.0 contract PurchaseOrder{ uint256 product_quantity //state variable /*Called with the contract is deployed and initializes the value*/ constructor() public{ product_quantity = 100 } // Get Function function get_quantity() public view returns(uint256){ return product_quantity } // Set Function function update_quantity(uint256 value) public { product_quantity = product_quantity + value } } 

Triển khai Hợp đồng thông minh

Đã đến lúc kiểm tra hợp đồng thông minh. Để kiểm tra hợp đồng thông minh này, chúng tôi sẽ sử dụng Phối lại IDE trực tuyến .

Remix là một sân chơi trực tuyến dành cho hợp đồng thông minh ethereum . Remix hoàn toàn dựa trên trình duyệt. Remix cung cấp cho bạn một IDE trực tuyến (Môi trường phát triển tích hợp), nơi bạn có thể viết các hợp đồng thông minh của mình. Remix cung cấp cho bạn khả năng biên dịch solidity trực tuyến. Hợp đồng thông minh trong Remix IDE có thể được biên dịch bằng một phiên bản trình biên dịch cụ thể một cách liền mạch.

Remix cũng cung cấp khả năng nhanh chóng kiểm tra hợp đồng thông minh.

Remix cung cấp một bộ công cụ hoàn chỉnh để bắt đầu phát triển hợp đồng thông minh và đơn vị kiểm tra hợp đồng thông minh mà không cần thực hiện bất kỳ cài đặt nào trên máy cục bộ của bạn. Điều này rất hữu ích cho sự khởi đầu với sự vững chắc vì các nhà phát triển chỉ cần tập trung vào việc viết một hợp đồng thông minh, thay vì lo lắng về cơ sở hạ tầng.

Với Remix IDE, tất cả những gì bạn cần là trình duyệt và kết nối internet để bắt đầu phát triển hợp đồng thông minh. Phát triển, thử nghiệm và xác thực nhanh ý tưởng cho một hợp đồng thông minh.

Remix gần đây đã nâng cấp giao diện người dùng của họ.

nạp chồng hàm trong c ++

Remix-UI-Smart-Contracts-Edureka

Nhấp vào biểu tượng tệp được đánh dấu trong hình trên, trình khám phá tệp sẽ mở ra.

  1. Nhấp vào biểu tượng dấu cộng, tệp mới có thể được tạo, đặt tên tệp là PurchaseOrder.sol
  2. Thao tác này sẽ tạo một tệp trống có tên là PurchaseOrder.sol, hãy nhấp vào và mở tệp này.
  3. Hãy để chúng tôi sao chép và dán toàn bộ hợp đồng vào PurchaseOrder.sol.
  4. Nhấp vào biểu tượng thứ hai, trong menu bên trái ngay bên dưới biểu tượng tệp, tùy chọn trình biên dịch solidity sẽ xuất hiện.
  5. Dưới nhãn Trình biên dịch, chọn phiên bản trình biên dịch. Phiên bản được chọn hiện tại là 0.5.8.
  6. Đăng lựa chọn phiên bản trình biên dịch, nhấp vào “Biên dịch PurchaseOrder.sol”. Điều này sẽ biên dịch hợp đồng thông minh.

7. Khi hợp đồng thông minh được biên dịch thành công, hãy nhấp vào nút “Chi tiết biên dịch” và các chi tiết sau sẽ xuất hiện. Bài tổng hợp, hai thông tin chính được cung cấp

    • ABI - Giao diện nhị phân ứng dụng. Đây là một tệp json trình bày chi tiết tất cả các phương pháp được hiển thị trong hợp đồng thông minh cùng với dữ liệu meta của các phương thức. Nhiều hơn về điều này sẽ được thảo luận trong các blog tiếp theo.
    • Bytecode- Mã hoạt động EVM (máy ảo Ethereum), logic hợp đồng thông minh được chuyển đổi thành mã bytecode khi biên dịch.

8. Để kiểm tra hợp đồng thông minh, hợp đồng thông minh cần được triển khai. Để triển khai hợp đồng thông minh, hãy nhấp vào biểu tượng tiếp theo ở menu bên trái, biểu tượng biên dịch bên dưới. Màn hình sau sẽ xuất hiện. Để kiểm tra hợp đồng thông minh, hợp đồng thông minh cần được triển khai. Để triển khai hợp đồng thông minh, hãy nhấp vào biểu tượng tiếp theo ở menu bên trái, biểu tượng biên dịch bên dưới. Màn hình sau sẽ xuất hiện.

Tùy chọn triển khai

Màn hình triển khai cung cấp một số lựa chọn, chúng ta hãy xem xét từng lựa chọn một.

  • Môi trường: Đây có thể được coi là một lựa chọn tương tự như chọn mua máy tính xách tay từ Amazon, Flipkart, Newegg (tất cả đều là nhà bán lẻ trực tuyến) mà bạn lựa chọn nơi bạn muốn mua, dựa trên yêu cầu của bạn. Tương tự, trong trường hợp của Remix, chúng tôi có một tùy chọn để triển khai hợp đồng thông minh và thử nghiệm hợp đồng thông minh. Menu thả xuống bên cạnh nhãn môi trường cung cấp ba lựa chọn
    • JavaScript VM - một nút đơn Ethereum cục bộ được tạo ra trong bộ nhớ trình duyệt và cung cấp 5 tài khoản thử nghiệm được hoàn vốn trước có thể được sử dụng cho giao dịch (triển khai, gọi hàm)
    • Cung cấp Web3 được tiêm - Điều này dựa vào MetaMask. Metamask giống như một nhà môi giới hoặc người trung gian, cho phép các ứng dụng web tương tác với hợp đồng thông minh. Metamask cung cấp khả năng quản lý danh tính và cũng ký các giao dịch sẽ được gửi đến mạng ethereum.rdbên cung cấp giúp bạn xác định mạng blockchain mà hợp đồng thông minh sẽ được triển khai.
    • Nhà cung cấp Web3 - nếu bạn đang chạy một nút Ethereum cục bộ và có sẵn điểm cuối RPC, bạn có thể sử dụng tùy chọn này. Hợp đồng thông minh sẽ được triển khai cho nút Ethereum địa phương.
  • Tài khoản: Thông tin này được điền dựa trên môi trường đã chọn. Ví dụ. JavaScript VM cung cấp 5 tài khoản thử nghiệm được hoàn vốn trước. Trong trường hợp nhà cung cấp Web3 và Injected Web3 không cung cấp tài khoản thử nghiệm được hoàn tiền trước.
  • Giới hạn Gas: Điều này xác định số lượng Gas tối đa mà người khởi tạo sẵn sàng chi cho bất kỳ giao dịch nào. Đây là nơi để bảo vệ khỏi vòng lặp vô hạn và làm cạn kiệt tất cả tiền của tài khoản trong trường hợp điều kiện vòng lặp vô hạn.
  • Giá trị: Giá trị có thể được yêu cầu để gửi trong khi triển khai hợp đồng thông minh. Đây là một giá trị tùy chọn.

Để triển khai hợp đồng, hãy chọn tùy chọn JavaScript VM, chọn tài khoản đầu tiên từ các tài khoản thả xuống, lưu ý số dư tài khoản (100 ether).

Đảm bảo tên hợp đồng thông minh xuất hiện là PurchaseOrder, nhấp vào triển khai. Các hành động chính sẽ xảy ra

  1. Số dư tài khoản thay đổi từ 100 ether thành 99,999999 ether, số tiền được trừ là chi phí giao dịch để triển khai hợp đồng thông minh.
  2. Theo hợp đồng đã triển khai, một ô mới cho hợp đồng thông minh sẽ xuất hiện, ô này cũng sẽ cung cấp địa chỉ của hợp đồng thông minh mới giống như thế này (0x692a70d2e424a56d2c6c27aa97d1a86395877b3a)
  3. Trong cửa sổ bảng điều khiển, thông tin sau sẽ xuất hiện
    1. Băm giao dịch - xác định duy nhất việc triển khai hợp đồng
    2. Chi phí giao dịch
    3. Địa chỉ hợp đồng

Tương tác với hợp đồng đã triển khai

  1. Theo hợp đồng đã triển khai, có hai phương thức tương tác sau là update_quantity và get_quantity.
  2. Cả hai phương pháp tương tác này đều là phương pháp công khai được xác định trong hợp đồng “Đơn đặt hàng”.
  3. Phương thức cập nhật số lượng “update_quantity” yêu cầu tham số đầu vào, do đó là hộp nhập.
  4. Phương thức lấy số lượng “get_quantity” truy xuất giá trị của product_quantity.
  5. Hãy để chúng tôi kiểm tra điều gì sẽ xảy ra khi get_quantity được gọi, giá trị trả về 100 được hiển thị, được khởi tạo trong hàm tạo. Điều này không làm cho một giao dịch xảy ra
  6. Hãy để chúng tôi gọi update_quantity và cung cấp 30 làm đầu vào. Điều này làm cho một giao dịch xảy ra

Tóm lại, bất kỳ hoạt động nào gây ra hoạt động ghi vào trạng thái của hợp đồng (tức là thay đổi các biến hợp đồng) sẽ dẫn đến một giao dịch.

Bất kỳ hoạt động nào chỉ đọc trạng thái của hợp đồng sẽ không gây ra giao dịch.

Kết luận phát triển hợp đồng thông minh

Với điều này, chúng tôi vừa tạo ra hợp đồng thông minh đầu tiên của mình, chỉ làm xước bề mặt của sự vững chắc. Chúng ta vừa thấy những gì cần thiết để kiểm tra hợp đồng thông minh ngay từ khi triển khai hợp đồng thông minh đến khi bắt đầu giao dịch.

Trong blog tiếp theo, phần tiếp theo của loạt bài phát triển hợp đồng thông minh, chúng ta sẽ đi sâu hơn vào các nguyên tắc cơ bản về tính vững chắc, đi sâu hơn vào việc triển khai hợp đồng thông minh.

Với điều đó, tôi kết luận điều này Hợp đồng thông minh blog phát triển. Tôi hy vọng bạn thích đọc blog này và thấy nó có nhiều thông tin.

TôiNếu bạn muốn tìm hiểu Hợp đồng thông minh, xây dựng sự nghiệp trong lĩnh vực Blockchain và có được kiến ​​thức chuyên môn về lập trình Ethereum, hãy đăng ký tham gia trực tuyến ở đây, đi kèm với hỗ trợ 24 * 7 để hướng dẫn bạn trong suốt thời gian học tập của bạn.

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến vấn đề này trong phần nhận xét của 'Phát triển hợp đồng thông minh' và chúng tôi sẽ liên hệ lại với bạn tại earliest