[英]Account balance zero when trying to make an transaction on private network
編輯:解決,是由聲明this.web3而不是web3引起的
我正在運行帶有松露的專用網絡,並且遇到了這個奇怪的問題,在Metamask和Mist處顯示我的平衡為100 eth。 當我實際嘗試進行交易時,它說該帳戶具有零eth。 我的合同相當復雜,我不確定是什么問題。
我嘗試幾次重新啟動松露,重新編譯和遷移合同,並且多次重新安裝了metamask。 當我嘗試Mist時,它也會這樣做。
我在智能合約方面還很陌生,但是我正在嘗試用它創建一個更大的應用程序。 我使用Solidity對合同進行編碼,並且已經對混音中的合同進行了測試,沒有任何問題,並且可以通過松露操作合同。 我認為可能是因為前端。我正在用react編程。 這是我稱為js的代碼中的特定部分。 這只是一種簡單的身份驗證機制。 我使用松露合約,this.database是合約。
authAddress(sotu, password) {
return new Promise ((resolve, reject) => {
this.database.deployed().then(instance => {
return instance.authAddress(sotu, password);
}).then(res => {
resolve();
}).catch(error => {
reject(error);
});
});
}
堅固性對應如下:
function authAddress(string sotu, string password) public {
//Check if already logged in
require(authenticatedAddresses[msg.sender] == address(0));
Person p = persons[keccak256(sotu)];
p.login(keccak256(password), msg.sender);
authenticatedAddresses[msg.sender] = p;
}
我仍在學習這些內容,但是對於這個問題的存在我感到有些沮喪,就我嘗試搜索的情況而言,似乎沒有其他人對此提出反駁。 我完全錯過了什么嗎?
編輯:
這是web3提供程序init:
try {
if(web3 != null) {
this.web3 = new Web3(web3.currentProvider);
}
} catch (error) {
this.web3 = null;
}
我嘗試僅當您具有metamask或類似標記時才使該站點可用。 我想將web3包裝到一個類中,但是如果這使uo搞砸了,請告訴我。
我的數據庫處理程序初始化
initDatabaseHandler() {
return new Promise((resolve, reject) => {
this.databaseHandler = new DatabaseHandler();
this.databaseHandler.loadContract(this.state.coinbase, this.web3.currentProvider)
.then(() => {
this.databaseHandler.getAccountInfo()
.then(info => {
this.setState({userinfo: info}, resolve());
}).catch(err => {
console.log(err);
});
})
.catch(err => reject(err));
});
}
和抽象的合同加載器:
loadContract(coinbase, provider) {
return new Promise((resolve, reject) => {
this.database = new Contract(Database);
this.database.setProvider(provider);
this.database.web3.eth.defaultAccount = coinbase;
this.person = new Contract(Person);
this.person.setProvider(provider);
this.person.web3.eth.defaultAccount = coinbase;
console.log(this.database.web3.eth.defaultAccount);
resolve();
});
}
解決,是由於聲明了this.web3而不是web3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.