paint-brush
Gỡ lỗi hợp đồng thông minh dễ dàng với Console.log của Truffletừ tác giả@MichaelB
994 lượt đọc
994 lượt đọc

Gỡ lỗi hợp đồng thông minh dễ dàng với Console.log của Truffle

từ tác giả Michael4m2023/01/30
Read on Terminal Reader

dài quá đọc không nổi

Truffle hiện [hỗ trợ ](https://trufflesuite.com/blog/truffle-now-supports-console-logging-in-solidity-smart-contract/)** trong [Solidity. Console.log là một tính năng rất phổ biến trong JavaScript và được các nhà phát triển sử dụng rộng rãi để dễ dàng xuất thông báo ghi nhật ký và trích xuất chi tiết từ mã.
featured image - Gỡ lỗi hợp đồng thông minh dễ dàng với Console.log của Truffle
Michael HackerNoon profile picture

Nếu bạn là nhà phát triển Solidity, bạn sẽ rất vui khi biết rằng Truffle hiện hỗ trợ đăng nhập bảng điều khiển trong hợp đồng thông minh Solidity . Mặc dù Truffle từ lâu đã dẫn đầu về công cụ phát triển hợp đồng thông minh—cung cấp môi trường dễ sử dụng để tạo, thử nghiệm và gỡ lỗi hợp đồng thông minh—console.log được tích hợp trực tiếp là một tính năng mà nó vẫn cần.


Nhưng không còn nữa! Giờ đây, các nhà phát triển có thể dễ dàng ghi nhật ký tin nhắn và gỡ lỗi hợp đồng thông minh của họ, tất cả đều nằm trong môi trường Truffle (Ganache) quen thuộc. Hãy xem làm thế nào.

Console.log là gì?

Console.log là một tính năng rất phổ biến trong JavaScript và được các nhà phát triển sử dụng rộng rãi để dễ dàng xuất thông báo ghi nhật ký và trích xuất chi tiết trực tiếp từ mã. Trong bối cảnh phát triển hợp đồng thông minh và web3, console.log đóng một vai trò tương tự, cho phép các nhà phát triển in ra các biến Solidity và thông tin khác từ hợp đồng thông minh của họ.


Ví dụ: bạn có thể sử dụng console.log để hiển thị giá trị của một biến hoặc đầu ra của lệnh gọi hàm trong hợp đồng thông minh của mình. Điều này có thể cực kỳ hữu ích khi gỡ lỗi hoặc thử nghiệm hợp đồng thông minh của bạn.

 console.log("Console Logging: The Smart Contract Developer's Best Friend");

Cách sử dụng ghi nhật ký bảng điều khiển trong Truffle

Việc sử dụng console.log khá đơn giản. Trước tiên, bạn sẽ phải đảm bảo rằng bạn có phiên bản Truffle cập nhật đang chạy trên máy tính của mình. Nếu bạn gặp bất kỳ sự cố nào, bạn có thể muốn gỡ cài đặt gói hoàn toàn rồi cài đặt lại. Đối với các lệnh được sử dụng trong bài đăng này, chúng tôi sẽ sử dụng NPM làm trình quản lý gói của chúng tôi.


 $ npm install -g truffle


Sau khi cài đặt thành công, tôi khuyên bạn nên sửa đổi tệp cấu hình truffle (tức là truffle-config.js ) như sau:

 module.exports = { . . . solidityLog: { displayPrefix: ' :', // defaults to "" preventConsoleLogMigration: true, // defaults to false }
  • displayPrefix : trang trí các đầu ra từ console.log để phân biệt nó với các nội dung khác được hiển thị bởi CLI.
  • ngănConsoleLogMigration : sàng lọc các triển khai hợp đồng không được thực hiện khi ở trên mạng thử nghiệm hoặc mạng chính. Bạn có thể chọn không tham gia điều này nếu muốn triển khai hợp đồng của mình có bao gồm console.log. Tuy nhiên, nếu bạn chọn làm điều này, hãy nhớ rằng console.log có hành vi không thể đoán trước khi sử dụng gas.


Bây giờ bạn đã sẵn sàng để thử nó! Nhập hợp đồng contract.sol vào mã Solidity của bạn như bình thường. Bây giờ bạn đã sẵn sàng sử dụng lệnh console.log() như trong JavaScript.

Điều này bao gồm việc sử dụng chuỗi thay thế như %s%f .

 pragma solidity ^0.8.9; import "truffle/console.sol"; contract BookStore { //... function transfer(address to, uint256 amount) external { console.log("Transferring %s tokens to %s", amount, to); require(balances[msg.sender] >= amount, "Not enough tokens"); balances[msg.sender] -= amount; balances[to] += amount; emit Transfer(amount, to, msg.sender); } }


Hàm truyền ở trên cho thấy console.log đang hoạt động. Hãy tưởng tượng một cuộc gọi đến chức năng chuyển không thành công với lỗi “ Không đủ mã thông báo ”. Trong trường hợp này, dòng console.log sẽ hiển thị số lượng mã thông báo mà cuộc gọi đang cố chuyển. Điều này cho phép nhà phát triển xem địa chỉsố lượng mã thông báo được chuyển. Tin nhắn sẽ trông như thế này.


 ... Transferring 10 tokens to 0x377bbcae5327695b32a1784e0e13bedc8e078c9c

Một cách thậm chí còn tốt hơn để gỡ lỗi này có thể là thêm balances[msg.sender] vào câu lệnh console.log hoặc in nó ra trên một dòng riêng. Bằng cách đó, số dư của người gửi cũng hiển thị trong bảng điều khiển. Bạn sẽ có được điểm!


Bạn cũng có thể để lại nhật ký trong mạng thử nghiệm và mạng chính; bằng cách này, bạn sẽ có một cách hay để quan sát hợp đồng thông minh của mình. Và điều đáng nói là các công cụ như Tenderly sẽ tích hợp tính năng loại bỏ nhật ký, điều này có thể hữu ích khi gỡ lỗi và thử nghiệm hợp đồng thông minh trong môi trường sản xuất.


Cuối cùng, khi sử dụng ghi nhật ký bảng điều khiển, điều quan trọng là phải tuân theo tất cả các quy tắc sử dụng tốt mà bạn đã biết, chẳng hạn như sử dụng thông báo tường trình rõ ràng và mô tả. Điều này sẽ giúp bạn hiểu đầu ra dễ dàng hơn và xác định bất kỳ vấn đề nào có thể phát sinh.

Các công cụ sửa lỗi khác trong Truffle

Mặc dù ghi nhật ký bảng điều khiển là một công cụ mạnh mẽ để gỡ lỗi hợp đồng thông minh, nhưng hãy nhớ rằng Truffle cũng cung cấp các công cụ gỡ lỗi khác. Truffle có một công cụ CLI trình gỡ lỗi tích hợp mạnh mẽ có thể được sử dụng để từng bước thực hiện hợp đồng thông minh và kiểm tra trạng thái của các biến tại các điểm khác nhau trong quá trình thực thi. Ngoài ra, các sự kiện là một cách hay để ghi lại thông điệp và theo dõi hành vi của hợp đồng thông minh.


Điều đó nói rằng, điều đáng chú ý là việc sử dụng trình gỡ lỗi cho một thứ đơn giản như đầu ra biến đổi có thể là quá mức cần thiết. Tương tự, ghi nhật ký sự kiện chỉ hoạt động khi giao dịch thành công, đây có thể là một hạn chế trong một số trường hợp nhất định.


Điểm mấu chốt là tính năng console.log—kết hợp với các công cụ sửa lỗi khác trong Truffle—có thể mang lại trải nghiệm tốt hơn cho nhà phát triển nhờ tính đơn giảndễ sử dụng của nó. Nó cung cấp cho các nhà phát triển khả năng ghi nhật ký tin nhắn nhanh chóng và dễ dàng cũng như theo dõi hành vi của các hợp đồng thông minh của họ, trong khi các công cụ gỡ lỗi khác có thể được sử dụng để gỡ lỗi và khắc phục sự cố nâng cao hơn.

Dùng thử

Tính năng ghi nhật ký bảng điều khiển mới của Truffle là một bổ sung có giá trị để phát triển hợp đồng thông minh. Nó rất dễ sử dụng và có thể hợp lý hóa quá trình gỡ lỗi và thử nghiệm. Khả năng ghi nhật ký tin nhắn và theo dõi hành vi của hợp đồng thông minh trong thời gian thực có thể làm giảm sự thiếu hiệu quả và đau đầu. Đó là một công cụ tuyệt vời để có trong hộp công cụ của bạn.