我想返回一个包含提供者对象的web3实例。我想将该对象返回给UI,以便我可以在UI中使用该web3实例。这有可能实现吗? 我尝试将web3转换为JSON.stringify(web3),但抛出错误无法将循环对象转换为字符串。
这是我的nodejs代码
const provider = new HDWalletProvider(
'dress steel phrase album average asd dd room exile web eree cause',
'https://rinkeby.infura.io/I7P2ErGiQjuq4jNp41OE',
);
web3 = new Web3(provider);
我想将web3实例从此节点返回到UI
app.get('/getWeb3', async (req, res) => {
console.log('web3 instance', web3);
res.json( JSON.stringify(web3)); // this is throwing error.
})
我尝试使用第三方库将对象转换为json,如warp库,但仍面临问题。任何建议都对我有所帮助。感谢
答案 0 :(得分:0)
您无法发送一个没有多大意义的web3
实例,因为您可以直接在客户端获得web3
实例。
通常在客户端,您使用Metamask,这样您就可以在不运行完整节点的情况下与以太坊网络进行交互。
客户端
if (typeof web3 !== 'undefined') {
web3 = new Web3(web3.currentProvider);
} else {
// set the provider you want from Web3.providers
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
}
// Interact with your contract
const Contract = web3.eth.contract(ABI);
const contract = Contract.at('address');
contract.someMethod((err, res) => console.log(res));
现在,用户将使用自己的地址和密钥与以太网进行交互,而不是使用您的私钥,这就是您尝试做的事情。
服务器上的web3
实例必须保持私有,不得向客户端公开。
不是试图将实例发送到客户端,为什么不告诉我们您要对该实例做什么,这是需要解决的实际问题。