На самом деле, я даже не уверен, возможно ли то, о чем я прошу.
На данный момент я могу запустить скрипт в консоли Geth, который создает контракт на локальном компьютере. Я хотел бы создать простой интерфейс с двумя входами и кнопкой отправки, чтобы украсить процесс.
Есть ли у вас какие-либо идеи о самом простом пути к этому?
Вы должны взглянуть на библиотеку 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 .