0

我将使用 OP_RETURN (testnet) 将数据嵌入到区块链中。

我在一个目录中有两个文件。第一个keys.js包含为比特币测试网交易生成地址和私钥的代码。

键.js:

const bitcoin = require('bitcoinjs-lib');
const { testnet } = bitcoin.networks
const myKeyPair = bitcoin.ECPair.makeRandom({ network: testnet });
//extract the publickey
const publicKey = myKeyPair.publicKey;
//get the private key
const myWIF = myKeyPair.toWIF();
//get an address from the myKeyPair we generated above.
const { address } = bitcoin.payments.p2pkh({
  pubkey: publicKey,
  network: testnet
});

console.log("myAdress: " + address + " \nmyWIF: " + myWIF);

第二个op_return.js包含允许我将随机文本嵌入区块链的方法。

这是 op_return.js 的结尾:

const importantMessage = 'RANDOM TEXT INTO BLOCKCHAIN'
buildOpReturnTransaction(myKeyPair, importantMessage)
.then(pushTransaction)
.then(response => console.log(response.data))

问题在于常量myKeyPairop_return.js因为在输入node op_returnnode.js 命令提示符后出现错误:

buildOpReturnTransaction(myKeyPair, importantMessage)
                         ^

ReferenceError: myKeyPair is not defined
    at Object.<anonymous> (C:\Users\Paul\Desktop\mydir\op_return:71:26)
    at Module._compile (internal/modules/cjs/loader.js:1133:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1153:10)
    at Module.load (internal/modules/cjs/loader.js:977:32)
    at Function.Module._load (internal/modules/cjs/loader.js:877:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
    at internal/main/run_main_module.js:18:47
4

2 回答 2

1

在一个 JavaScript 文件中声明的变量不能在另一个文件中自动访问,但 Node.js 中有一项可用的功能允许您通过modules导入和导出变量。

假设您myKeyPair在“file1.js”中定义了变量,但您想myKeyPair在“file2.js”中使用。

myKeyPair解决办法是在file1.js中导出:

// file1.js

const myKeyPair = ['hello', 'world'];

module.exports.myKeyPair = myKeyPair;

然后,要myKeyPair在 file2.js 中使用,您可以使用require()语句从 file1.js 导入它。

// file2.js

const myKeyPair = require('./file1.js');
于 2020-05-14T17:00:51.767 回答
0

您已定义myKeyPairinkeys.js而不是 in op_return.js。如果您需要在一个文件中定义它并在另一个文件中使用它,则需要将变量定义为全局变量。查看下面的链接以获取节点中的全局变量

https://stackabuse.com/using-global-variables-in-node-js/

于 2020-05-14T16:33:01.600 回答