Необходимо разблокировать учетную запись для вызова функций контрактов на стороне клиента. Так что мне нужно использовать web 3 или web 3 расширенный. Но это не работает. Метод недоступен. Возможно, вы знаете какие-то другие способы вызова функции специально в IOS-приложении.
Вы можете вызвать метод unlockAccount класса personal из своего веб-приложения. Я использую версию Web3 0.18.2.
В приведенном ниже вызове метода последним параметром является продолжительность, т.е. как долго учетная запись будет оставаться разблокированной в секундах. Это необязательно. Вы можете использовать любой из способов.
Когда вы запускаете свой узел с помощью Geth, вам необходимо предоставить персональный доступ через rpc. Я использую этот параметр "--rpcapi "db,eth,net,web3,personal". Хотя не рекомендуется выставлять персональный через rpc.
Пример кода
var web3 = new Web3(new Web3.providers.HttpProvider(" http://localhost:8545 ")); web3.personal.unlockAccount("(адрес учетной записи)", "(парольная фраза)");web3.personal.unlockAccount("(адрес аккаунта)", "(парольная фраза)", 500);
Это просто, просто введите эту команду в консоли geth:
web3.personal.unlockAccount("0x..", "<pass>");
может что-то в этом духе:
function unlockAccount(val) {
var accounts = web3.eth.coinbase;
var passphrase = val;
if(passphrase !=null){
web3.personal.unlockAccount(web3.eth.coinbase, passphrase,1000, function (error, result){
if(error){
var str =error.toString();
if(str.includes("could not decrypt")){
bootbox.hideAll();
document.getElementById("loading").style.display = "none";
document.getElementById("successAlert").style.display = "none";
if(document.getElementById("dangerAlert")){
document.getElementById("dangerAlert").style.display = "none";
}
bootbox.alert("Please enter the valid Passphrase.! ");
}
}
});
}
}
мы используем этот JS для разблокировки учетной записи перед вызовом функций смарт-контрактов и т. д.
/Б
geth --networkid 1234 --datadir c:\geth\01\ --rpc --rpccorsdomain "*" --rpcapi "db,net,web3,miner,eth,personal" --port "30301" --rpcport 8101 --maxpeers 3 console
Алексей Барсук