API для вызова из php-скрипта

MatvikMatvik Posts: 2
Добрый день!
Мне нужно простое API для вызова из моего php-скрипта, а именно:
Послать ETH из одного кошелька на другой, и отобразить количество ETH на кошельке.
Время немного поджимает, а информации море, и пока что не нашел то, что требаеться. Есть ли такие публичные API, или необходимо ставить кошелек на сервер, и отдавать ему комманды из скрипта? Спасибо.

Comments

  • TeorAMKTeorAMK Posts: 36
    ну geth то по любому ставить надо на сервер и ему передовать комманды и т.п, а по другому то как ты с кошельком то работать собираешся ?
  • shark256shark256 Posts: 6
    Ставить нужно полюбому, но это полбеды, т.к. толком и документации нету как это сделать, посмотри тут хотя бы https://github.com/ethereum/go-ethereum/wiki/Management-APIs . Я сам еще до ума не довел, ни на bitcointalk.org, ни тут никто нормально ответить не может.
  • JackBBJackBB Posts: 11
    Все достаточно просто - ты должен из php направить ajax запрос в Dapp(JS), который создаст объект json(комманду, данные и т.д.), который ты сможешь передать в ноду, по крайней мере я делал так.

    Как напрямую послать команду из php в ноду я не знаю, по крайней мере у меня этого не получилось, потому что нормального моста на php попросту нет.
  • JackBBJackBB Posts: 11
    Вообще можно сделать и удаленно, такая возможность есть, но нода с ключами все равно должна где-то стоять.
  • shark256shark256 Posts: 6
    edited July 2016
    JackBB said:

    Все достаточно просто - ты должен из php направить ajax запрос в Dapp(JS), который создаст объект json(комманду, данные и т.д.), который ты сможешь передать в ноду, по крайней мере я делал так.

    Как напрямую послать команду из php в ноду я не знаю, по крайней мере у меня этого не получилось, потому что нормального моста на php попросту нет.

    А конкретно какая команда в geth console делает это:

    1. Генерация нового адреса
    2. Отправка средств
    3. Проверка баланса на аккаунте

    Хотя бы какая-то зацепа, потому что там куча классов - этот для того, а этот для этого, где, в конце концов, про монеты?)
  • TeorAMKTeorAMK Posts: 36
    1 - В консоль введите следующие данные: personal.newAccount("password") - вместо слова password в вышеприведенном пункте нужно вписать собственный пароль и хорошенько запомнить его
    * Далее в консоль введите: 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").

    все это есть в инете почему вы так плохо ишите ?
  • shark256shark256 Posts: 6
    Благодарю! Буду пробовать, сообщу о результатах здесь же.
  • vigmarvigmar Posts: 114 ✭✭
    Вообще то если вам это так надо, то на гитхабе есть исходники geth, бери и пользуй на своё усмотрение. Не понимаю, в чём проблема.
  • JackBBJackBB Posts: 11
    У него не в этом проблема. У него проблема в том, что он делает свое Dapp на удаленном сервере, что бы был доступ из браузера. Однако движок сайта у него скорее всего на php и он не знает как их связать
  • JackBBJackBB Posts: 11
    То есть допустим, ему нужно нажать на кнопку в браузере, что бы перевести средства со счета контракта (кошелек это тоже контракт) на другой аккаунт/кошелек/etc., причем на стороне сервера сайт с этой кнопкой (Dapp) стоит на каком-либо движке на php, и, допустим взаимодействует с бд, например вносит данные о переводе в базу данных mySQL и использует их где-либо еще.
    Либо наоборот сам сайт, работающий на 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);
    }
Sign In or Register to comment.