偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

使用Truffle Console.log!智能合約調(diào)試更輕松

譯文 精選
開發(fā) 開發(fā)工具
如果你是Solidity的開發(fā)者,你會(huì)很高興聽到Truffle現(xiàn)在支持Solidity智能合約的控制臺(tái)記錄。讓我們來看看是如何實(shí)現(xiàn)的吧。雖然 Truffle 長(zhǎng)期以來處于智能合約開發(fā)工具領(lǐng)導(dǎo)者的地位--為創(chuàng)建、測(cè)試和調(diào)試智能合約提供使用環(huán)境--直接集成控Console.log是它需要開發(fā)的一項(xiàng)功能。

譯者 | 崔皓

審校 | 孫淑娟

開篇

如果你是Solidity的開發(fā)者,你會(huì)很高興聽到Truffle現(xiàn)在支持Solidity智能合約的控制臺(tái)記錄。讓我們來看看是如何實(shí)現(xiàn)的吧。雖然 Truffle 長(zhǎng)期以來處于智能合約開發(fā)工具領(lǐng)導(dǎo)者的地位--為創(chuàng)建、測(cè)試和調(diào)試智能合約提供使用環(huán)境--直接集成控Console.log是它需要開發(fā)的一項(xiàng)功能。

但現(xiàn)在不需要了! 開發(fā)人員現(xiàn)在可以輕松地記錄信息和調(diào)試智能合約,所有這些都在Truffle(Ganache)環(huán)境中。讓我們來看看它是如何實(shí)現(xiàn)的。

什么是Console.log?

Console.log是JavaScript中一個(gè)非常流行的功能,被開發(fā)人員用于輸出日志信息,并直接從代碼中提取細(xì)節(jié)。在Web3和智能合約開發(fā)的背景下,console.log扮演著類似的角色,允許開發(fā)者從他們的智能合約中打印出Solidity變量和其他信息。

例如,您可以使用 console.log 來顯示一個(gè)變量的值或智能合約中的一個(gè)函數(shù)調(diào)用的輸出。在調(diào)試或測(cè)試你的智能合約時(shí),這可能是非常有用的。

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

如何在Truffle中使用控制臺(tái)記錄

使用其console.log非常簡(jiǎn)單。首先,確保電腦上運(yùn)行的是最新的Truffle版本。如果存在任何問題,可能需要完全卸載軟件包,然后再重新安裝它。在這篇文章中使用的命令,我們將使用NPM作為我們的包管理器。

$ npm install -g truffle

安裝成功后,我建議你修改truffle配置文件(即truffle-config.js),如下所示:

module.exports = {
. . .
solidityLog: {
displayPrefix: ' :', // defaults to ""
preventConsoleLogMigration: true, // defaults to false
}
  • displayPrefix:裝飾來自console.log的輸出,使其與CLI顯示的其他內(nèi)容相區(qū)別。
  • preventConsoleLogMigration:當(dāng)在測(cè)試時(shí),阻止合同部署的進(jìn)行。如果你希望在部署合同時(shí)包含console.log,你可以選擇不這樣做。然而,如果你選擇這樣做,請(qǐng)記住console.log在使用Gas時(shí)有不可預(yù)知的行為。(編者注明:Gas 在使用了智能合約時(shí),交易要是按照智能合約的規(guī)定一步一步執(zhí)行命令,每執(zhí)行一個(gè)命令都會(huì)產(chǎn)生一定的消耗,這個(gè)消耗用Gas作為單位)

如果你準(zhǔn)備好了,可以試一試了。像往常一樣將 contract.sol 合同導(dǎo)入你的 Solidity 代碼中?,F(xiàn)在你已經(jīng)準(zhǔn)備好像在 JavaScript 中那樣使用 console.log() 命令。

這包括使用字符串替換,如%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);
}
}

上面的轉(zhuǎn)移函數(shù)顯示了console.log的作用。想象一下,對(duì)轉(zhuǎn)移函數(shù)的調(diào)用因 " Not enough tokens"錯(cuò)誤而失敗。在這種情況下,console.log行將顯示該調(diào)用試圖轉(zhuǎn)移的代幣數(shù)量。這使得開發(fā)者可以看到正在轉(zhuǎn)移的地址和代幣數(shù)量。該消息看起來像這樣。

...
Transferring 10 tokens to 0x377bbcae5327695b32a1784e0e13bedc8e078c9c

一個(gè)更好的調(diào)試方法是將余額[msg.sender]加入到console.log語句中,或?qū)⑵鋯为?dú)打印出來。這樣一來,發(fā)件人的余額在控制臺(tái)中也是可見的。就是這么簡(jiǎn)單!

你也可以在測(cè)試和主網(wǎng)中留下日志;這樣一來,你就有了一個(gè)觀察你的智能合約的好方法。而且值得一提的是,像Tenderly這樣的工具會(huì)整合日志的報(bào)廢,這在生產(chǎn)環(huán)境中調(diào)試和測(cè)試智能合約時(shí)很有用。(編者注明:主網(wǎng)就是發(fā)生實(shí)際交易的地方,在主網(wǎng)上會(huì)記錄在特定的分布式賬本上。 例如,以太坊主網(wǎng)是公共區(qū)塊鏈,能進(jìn)行網(wǎng)絡(luò)驗(yàn)證和交易。)

最后,在使用控制臺(tái)日志時(shí),重要的是要遵循你已經(jīng)知道的所有良好的使用規(guī)則,例如使用清晰和描述性的日志信息。這將使其更容易理解,并識(shí)別可能出現(xiàn)的任何問題。

Truffle中的其他調(diào)試工具

雖然控制臺(tái)日志是調(diào)試智能合約的強(qiáng)大工具,但請(qǐng)記住,Truffle也提供其他調(diào)試工具。Truffle有一個(gè)強(qiáng)大的內(nèi)置調(diào)試器CLI工具,可用于逐步執(zhí)行智能合約并檢查執(zhí)行中不同點(diǎn)的變量狀態(tài)。此外,針對(duì)事件可以進(jìn)行記錄信息和跟蹤智能合約行為。

也就是說,只為變量輸出使用調(diào)試器可能是矯枉過正。同樣,事件記錄只有在交易成功時(shí)才會(huì)發(fā)揮作用,這在某些情況下可能是一種限制。

console.log  中的Bottom line功能與Truffle中的其他調(diào)試工具相結(jié)合,使調(diào)試工作更加簡(jiǎn)單易用,為開發(fā)者提供更好的體驗(yàn)。它使開發(fā)人員能夠快速、輕松地記錄信息并監(jiān)控其智能合約的行為,而其他調(diào)試工具可用于更高級(jí)的調(diào)試和故障排除。

試用

Truffle的新控制臺(tái)記錄功能是對(duì)智能合約開發(fā)的寶貴補(bǔ)充。它容易使用,可以簡(jiǎn)化調(diào)試和測(cè)試過程。記錄信息和實(shí)時(shí)跟蹤智能合約行為的能力可以減少效率低下和頭痛的問題。它將會(huì)成為你工具箱中的一個(gè)偉大工具。

譯者介紹

崔皓,51CTO社區(qū)編輯,資深架構(gòu)師,擁有18年的軟件開發(fā)和架構(gòu)經(jīng)驗(yàn),10年分布式架構(gòu)經(jīng)驗(yàn)。

原文標(biāo)題:??Easy Smart Contract Debugging With Truffle’s Console.log??,作者:Michael Bogan

責(zé)任編輯:華軒 來源: 51CTO
相關(guān)推薦

2021-05-06 09:42:24

Truffle部署智能

2018-01-26 10:42:44

前端JavascriptConsole對(duì)象

2024-10-29 12:54:27

2021-03-17 08:53:21

JavaScript開發(fā)代碼

2023-08-31 09:10:18

JavaScript調(diào)試

2025-02-14 11:04:07

JavaScript開發(fā)函數(shù)

2024-04-08 11:42:14

代碼console開發(fā)

2024-04-15 00:00:00

console語法樹AST

2022-08-22 08:32:17

招聘函數(shù)string

2018-09-20 18:23:49

人工智能AI

2020-01-09 08:26:16

代碼JS開發(fā)

2009-05-20 14:43:38

ibmdwEasyMock測(cè)試

2024-03-18 07:56:49

CSSJS代碼調(diào)試

2024-12-24 00:00:00

技巧日志框架

2020-03-25 08:26:44

console.log前端

2017-09-12 15:11:12

Chrome

2021-03-09 23:22:04

區(qū)塊鏈以太坊開發(fā)

2025-01-06 05:20:00

前端開發(fā)定位

2021-09-07 07:53:43

Console函數(shù)DOM

2019-04-04 14:05:20

consolejs前端
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)