Как сделать графический интерфейс с помощью Geth

На самом деле, я даже не уверен, возможно ли то, о чем я прошу.

На данный момент я могу запустить скрипт в консоли Geth, который создает контракт на локальном компьютере. Я хотел бы создать простой интерфейс с двумя входами и кнопкой отправки, чтобы украсить процесс.

Есть ли у вас какие-либо идеи о самом простом пути к этому?

Ответы (2)

Вы должны взглянуть на библиотеку web3 , это библиотека JavaScript для Ethereum. Таким образом, вы сможете создать простой веб-интерфейс для компиляции и развертывания контрактов.

Найдите простой пример (большая часть кода взята из документации web3):

// Import web3
var Web3 = require('web3');


// create an instance of web3 using the HTTP provider.
var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545")); 


var contractSource = "" + 
    "contract test {\n" +
    "   function multiply(uint a) returns(uint d) {\n" +
    "       return a * 7;\n" +
    "   }\n" +
    "}\n";

// Compile the contract source
var contractCompiled = web3.eth.compile.solidity(contractSource);

// It should return sometihng like that
// contractCompiled  : {
  "test": {
    "code": "0x605280600c6000396000f3006000357c010000000000000000000000000000000000000000000000000000000090048063c6888fa114602e57005b60376004356041565b8060005260206000f35b6000600782029050604d565b91905056",
    "info": {
      "source": "contract test {\n\tfunction multiply(uint a) returns(uint d) {\n\t\treturn a * 7;\n\t}\n}\n",
      "language": "Solidity",
      "languageVersion": "0",
      "compilerVersion": "0.8.2",
      "abiDefinition": [
        {
          "constant": false,
          "inputs": [
            {
              "name": "a",
              "type": "uint256"
            }
          ],
          "name": "multiply",
          "outputs": [
            {
              "name": "d",
              "type": "uint256"
            }
          ],
          "type": "function"
        }
      ],
      "userDoc": {
        "methods": {}
      },
      "developerDoc": {
        "methods": {}
      }
    }
  }
}


// Deploy your contract
var contract = web3.eth.contract(contractCompiled.test.info.abiDefinition);
var contractInstance = contract.new();

Надеюсь, это поможет вам создать простой интерфейс.

В остальном мне очень нравится Truffle , который является фреймворком Ethereum и предоставляет мощный инструмент командной строки для разработки, компиляции, тестирования и развертывания контрактов.

Это должен быть комментарий, но он был слишком длинным, так что... извините.


Web3, безусловно, самый простой способ сделать это на сегодняшний день. У нас в MyEtherWallet.com не было такой роскоши, как Web3, поэтому мы очень просто настроили и продолжаем работать без web3.

Недавно мы создали пользовательский интерфейс для развертывания контрактов @ https://www.myetherwallet.com/#deploy-contract .

У вас есть свой байт-код, газ, а затем вы выбираете свой закрытый ключ / файл хранилища ключей, чтобы сгенерировать, подписать и передать транзакцию. Закрытый ключ никогда не покидает вашу машину.

Мы думали добавить компиляцию из Solidity, но решили, что Browser Solidity великолепен и дает вам все опции и версии, которые вы хотите, так что зачем беспокоиться.

После того, как у вас есть скомпилированный байт-код, на самом деле развертывание довольно просто. Оцените газ, сгенерируйте TX, используя предоставленные данные (байт-код), подпишите его и транслируйте. Код этой страницы можно увидеть здесь: https://github.com/kvhnuke/etherwallet/blob/mercury/app/scripts/controllers/deployContractCtrl.js .