使用 web3.js 将新合约部署到以太坊网络
Posted
技术标签:
【中文标题】使用 web3.js 将新合约部署到以太坊网络【英文标题】:Deploying new contract to etherium network with web3.js 【发布时间】:2020-03-09 23:57:51 【问题描述】:我已尝试使用相关依赖项运行此代码以获取合约地址,但收到错误
No "from" address specified in neither the given options, nor the default options.
来自浏览器。此外,使用 metamask ropsten 测试网使用 Remix 工具进行部署时也没有错误。
onSubmit = async (event) =>
event.preventDefault();
this.setState( loading: true, errorMessage: '' );
try
const accounts = await web3.eth.getAccounts();
console.log(accounts)
await factory.methods
.createCampaign(this.state.minimumContribution)
.send( from: accounts[0] )
Router.pushRoute('/');
catch (err)
this.setState( errorMessage: err.message )
this.setState( loading: false );
【问题讨论】:
能否提供您如何设置 web3 的代码?import Web3 from 'web3'; let web3; if ( typeof window !== 'undefined' && typeof window.eth !== 'undefined') web3 = new Web3(window.web3.currentProvider); else const provider = new Web3.providers.HttpProvider( 'https://ropsten.infura.io/v3/741b62b06288435e856e8567767a3a5b' ); web3 = new Web3(provider); export default web3;
【参考方案1】:
console.log(accounts)
是否打印任何内容?
如果没有,请尝试使用以下代码设置 web3:
if (typeof web3 !== 'undefined')
window.web3 = new Web3(web3.currentProvider);
web3.currentProvider.enable();
else
window.web3 = new Web3(new Web3.providers.HttpProvider("..."));
【讨论】:
以上是关于使用 web3.js 将新合约部署到以太坊网络的主要内容,如果未能解决你的问题,请参考以下文章