Добрый день!
Мне нужно простое API для вызова из моего php-скрипта, а именно:
Послать ETH из одного кошелька на другой, и отобразить количество ETH на кошельке.
Время немного поджимает, а информации море, и пока что не нашел то, что требаеться. Есть ли такие публичные API, или необходимо ставить кошелек на сервер, и отдавать ему комманды из скрипта? Спасибо.
0 ·
Comments
Как напрямую послать команду из php в ноду я не знаю, по крайней мере у меня этого не получилось, потому что нормального моста на php попросту нет.
1. Генерация нового адреса
2. Отправка средств
3. Проверка баланса на аккаунте
Хотя бы какая-то зацепа, потому что там куча классов - этот для того, а этот для этого, где, в конце концов, про монеты?)
* Далее в консоль введите: eth.accounts - эта команда выведет вам адрес вашего Ethereum-кошелька
2 - Перевод Ether-средств на другой кошелек
* Разблокируйте свой аккаунт, введя в консоль personal.unlockAccount(eth.accounts[0], "password"), где password - ваш собственный пароль
* В консоль введите: eth.sendTransaction({from: 'your_address', to: 'recipient_address', value: web3.toWei(1, "ether")})
* В вышеприведенном коде замените your_address и recipient_address на необходимые адреса. Данный пример отражает пересылку в размере 1 Ether, но вы можете изменить значение по собственному усмотрению.
3 - * Чтобы проверить баланс, можно использовать команду web3.fromWei(eth.getBalance(eth.coinbase), "ether").
все это есть в инете почему вы так плохо ишите ?
Либо наоборот сам сайт, работающий на php должен посылать определенные команды на проведение транзации и т.д.
Так вот, процесс происходит таким образом:
Сначала производится какое-то действие, то есть пользователь жмет на кнопку и запускает JS контроллер (не php!) на библиотеке web3.js. Команда будет выглядеть примерно так :
function sendMoney(MemberAddress, Amnt) {
myContractInstance.transfer(MemberAddress, Amnt, {from:accounts[0]});
}
где myContractInstance - Объект содержащий все данные аккаунта клиента и данные контракта. (заранее заданные)
функция transfer вызывает одноименную функцию в умном контракте, которая собственно и переводит средства:
function transfer(address recipient, uint amount) public {
if (msg.sender != organizer) {return;} //contrat execute only by organizer themselves
if (MemberGot[recipient] == amount) { //условие перевода
address myAddress = this;
if (myAddress.balance >= amount) {
recipient.send(amount);
MemberGot[recipient] = 0;
WasSent(recipient, amount);
}
}
}
Если после этого инфу надо записать в бд или просто отправить в php скрипт, то нужно данные из js методом ajax можем передать в php и обратно:
Ajax:
$.post(
"/insert.php",
{
wallet: MemberAddress,
amount: Amnt
},
successInsert
);
function successInsert () {
console.log(data);
}
PHP: берем из массива post
include ('db.php');
mysqli_query('SET NAMES UTF8');
$query="SELECT balance FROM users WHERE wallet='" . $_POST['wallet']."'";
----------------------------------
_______________________________________
$sql="UPDATE users SET balance='".$new_balance."' WHERE wallet='".$_POST['wallet']."'";
$result3=mysqli_query($db,$sql);
// Проверяем, есть ли ошибки
if ($result3=='TRUE')
{
echo "Баланс Обновлен";
}
else {
echo "Ошибка! История не сохранилась";
echo $result3;
}
echo возвращает T/F в контроллер JS тем же аяксом, либо, если нужно передать обратно данные, то используем
header('Content-type: application/json');
die(json_encode($arr));
а на стороне контроллера
function onAjaxSuccess (data) {
var r=data;
console.log(data);
result=r.balance
console.log(result);
}