Это функция, которую я использовал для передачи ethets:
function addBalance(address beneficiary) payable returns(bool success){ if (beneficiary.send(msg.value)) throw; return true; }
Вызов функции с помощью web3:
contract.addBalance.sendTransaction(contractAddress,
{from: senderAddress, to: contractAddress, gas:1000000, value: web3.toWei(7, "ether")},function (error, result){
if(!error){
} else{
console.log(error);
}
});
ИЛИ
contract.addBalance.sendTransaction(contractAddress,
{from: web3.eth.accounts[5], to: contractAddress, gas:1000000, value: web3.toWei(7, "ether")},function (error, result){
if(!error){
} else{
console.log(error);
}
});
Когда я вызываю это, это дает ошибку. Говоря:
Error: authentication needed: password or unlock
at Object.InvalidResponse (errors.js:35)
at requestmanager.js:86
at XMLHttpRequest.request.onreadystatechange (httpprovider.js:118)
Я уже разблокировал свою учетную запись. Если я изменю адрес отправителя на адрес coinbase, он будет работать нормально, но не будет работать с любым другим адресом учетной записи.
Вызов, который отлично работает, ниже:
contract.addBalance.sendTransaction(contractAddress,
{from: web3.eth.coinbase, to: contractAddress, gas:1000000, value: web3.toWei(7, "ether")},function (error, result){
if(!error){
} else{
console.log(error);
}
});
Вам необходимо разблокировать аккаунт, с которого вы отправляете эфиры:
personal.unlockAccount(eth.accounts[0])
и введите пароль в geth
консоль.
СвапнилКумбхар