Я написал контракт гриферу и морталу, они такие:
contract mortal {
address owner;
function mortal() { owner = msg.sender; }
function kill() { if (msg.sender == owner) selfdestruct(owner); }
}
contract greeter is mortal {
string greeting;
function greeter(string _greeting) public {
greeting = _greeting;
}
/* main function */
function greet() constant returns (string) {
return greeting;
}
}
Затем я скомпилировал код с помощью онлайн-компилятора Solidity. Я скопировал скомпилированный код и вставил его в текстовый файл с именем «helloworld.js» следующим образом:
var _greeting = /* var of type string here */ ;
var greeterContract = web3.eth.contract([
{"constant":false,"inputs": [], "name":"kill", "outputs":[], "payable":false, "type":"function"},
{"constant":true, "inputs": [], "name":"greet", "outputs":[{"name":"", "type":"string"}], "payable":false, "type":"function"},
{"inputs": [{"name":"_greeting", "type":"string"}], "type":"constructor"}]);
var greeter = greeterContract.new(_greeting,
{
from: web3.eth.accounts[0],
data: 'data (some numbers and alphabets)',
gas: 4700000
}, function (e, contract) {
console.log(e, contract);
if (typeof contract.address !== 'undefined') {
console.log('Contract mined! address: ' + contract.address + ' transactionHash: ' + contract.transactionHash);
}
}
)
Я пошел в cmd и запустил свою сеть блокчейнов. В консоли geth я разблокировал свою учетную запись с помощью etherbase и использовал loadScript ("C:/Rahul13615/blockchain/node1/contracts/helloworld.js").
В идеале должно вернуться: Контракт заминирован! адрес: какой-то адрес
но он возвращает:
loadScript("C:/Rahul13615/blockchain/node1/contracts/helloworld.js") null [object Object] true
Что я должен делать?
Я разместил этот вопрос неделю назад, и с помощью моих сверстников я смог его решить. Подробный ответ выглядит следующим образом:
Шаг 1:
Используя следующую команду, запустите свою частную сеть блокчейнов (измените каталоги данных и другие параметры в соответствии с вашими пользовательскими настройками).
geth --identity "node1" --rpc --rpcport "8000" --rpccorsdomain "*" --datadir "C:\Rahul13615\blockchain\node1" --port "30303" --nodiscover --ipcapi "admin,db,eth,debug,miner,net,shh,txpool,personal,web3" --rpcapi "db,eth,net,web3" --autodag --networkid 100 --nat "any"
Оставьте этот терминал как есть (но не закрывайте его) после выполнения вышеуказанной команды.
Шаг 2
Откройте другой терминал и введите:
geth attach
Это откроет консоль geth. Теперь вы, должно быть, создали несколько учетных записей. Мы установим etherbase для любой учетной записи и выполним скрипт, используя его адрес. Итак, введите следующие команды.
primary = eth.accounts[0]
>true (this is the output of above command)
web3.miner.setEtherbase(primary)
>true
personal.unlockAccount(primary,"passphrase") //here passphrase is the string you used while creating an account
>true
miner.start()
>true
Теперь в helloworld.js я сохранил скомпилированный код, который я скопировал из онлайн-компилятора солидности браузера. Измените первую строку кода на:
var _greeting = "Hello World" ;
Сохраните helloworld.js и выполните следующую команду
loadScript("helloworld.js")
>null [object Object]
Contract mined! Address : someAddress, Txhash : somevalue
greeter.greet();
>Hello World
miner.stop()
>true
Пожалуйста, прокомментируйте любые сомнения или вопросы.
конфиденциальностьisahumanright.eth
конфиденциальностьisahumanright.eth