什么是 nwn
nwn 是一个用于构建基于 Web3 的应用的 JavaScript 库,它不仅提供了与以太坊区块链交互的 API,还提供了数据签名、加密、解密等功能。nwn 的设计初衷是为了让开发者可以更好地专注于 DApp 的业务逻辑。
安装
在使用 nwn 之前,需要先安装 Node.js 环境。然后,可以使用 npm 来安装 nwn:
npm install nwn
使用
创建一个新的 nwn 实例
const nwn = require('nwn'); const web3 = new nwn.Web3('HTTP://127.0.0.1:7545');
在这个例子中,我们使用 HTTP:127.0.0.1:7545 作为以太坊节点的访问地址,创建了一个新的 Web3 实例。
账户
在 nwn 中,账户由公钥和私钥组成。我们可以使用以下代码创建一个新的账户:
const account = web3.eth.accounts.create(); console.log(account.address); // 0x... console.log(account.privateKey); // 0x...
签名和验证
nwn 中的 eth.accounts.sign
方法可以用于对数据进行签名。签名后,我们可以把签名和原始数据一起传输到对方,对方可以使用 eth.accounts.recover
方法对签名和原始数据进行验证。
const message = 'Hello, world!'; const signature = web3.eth.accounts.sign(message, '0xprivateKey'); const signer = web3.eth.accounts.recover(message, signature.signature); console.log(signer); // 0x...
发送交易
我们可以使用 nwn 的 web3.eth.sendTransaction
方法来发送交易。以下是一个例子:
-- -------------------- ---- ------- ----- ---- - -------- -- ----- ----- -- - -------- -- ----- ----- ----- - --------------------- -- ----- --- ----- -------- - -------------- -- -------- ----- --- - --------- -- -------- -------------------------- ----- ----- --- --- ------ ------ --------- --------- ---- --- -- -------- ------- ----- - -- -------- - ------------------ -- ----- - ---
接收事件
通过 nwn,我们可以监听以太坊合约所触发的事件。假设我们有一个名为 eventContract
的合约,它有一个名为 testEvent
的事件,代码如下:
-- -------------------- ---- ------- ------ -------- -------- -------- ------------- - ----- ----------------- ------- ------- -------- ----------------- ------- ------ - ---- ------------------ - -
我们可以使用以下代码来监听 testEvent
事件:
const eventContract = new web3.eth.Contract(abi, address); eventContract.events.testEvent({ fromBlock: 0 }, function (error, event) { if (!error) { console.log(event); // 事件对象 } });
加密和解密
nwn 的 web3.eth.accounts.encrypt
方法可以用于将 JSON 格式的字符串转换为加密后的字符串。反过来,web3.eth.accounts.decrypt
方法可以将加密后的字符串解密为 JSON 格式的字符串。
const password = 'myPassword'; const keystore = web3.eth.accounts.encrypt(privateKey, password); const privateKeyDecrypted = web3.eth.accounts.decrypt(keystore, password).privateKey; console.log(privateKeyDecrypted === privateKey); // true
结论
本文介绍了 nwn 的主要功能和使用方法,包括创建 nwn 实例、账户、签名和验证、发送交易、接收事件、加密和解密等。希望这篇文章可以帮助初学者更好地学习和使用这个 npm 包。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066f953d1de16d83a66ce5