Escribí un contrato de bienvenida y mortal, son los siguientes:
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;
}
}
Luego compilé el código usando el compilador en línea Solidity. Copié el código compilado y lo pegué en un archivo de texto con el nombre "helloworld.js" de la siguiente manera:
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);
}
}
)
Fui al cmd y comencé mi red blockchain. En la consola geth, desbloqueé mi cuenta con etherbase y usé loadScript("C:/Rahul13615/blockchain/node1/contracts/helloworld.js")
Idealmente debería devolver: ¡Contrato minado! dirección: alguna dirección
pero vuelve:
loadScript("C:/Rahul13615/blockchain/node1/contracts/helloworld.js") nulo [objeto Objeto] verdadero
¿Qué tengo que hacer?
Publiqué esta pregunta hace una semana y con la ayuda de mis compañeros pude resolverla. La respuesta detallada es la siguiente:
Paso 1:
Con el siguiente comando, inicie su red blockchain privada (cambie los directorios de datos y otros parámetros de acuerdo con su configuración personalizada)
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"
Deje este terminal como está (pero no lo cierre) después de ejecutar el comando anterior.
Paso 2
Abre otra terminal y escribe:
geth attach
Esto abrirá la consola geth. Ahora debe haber creado algunas cuentas. Configuraremos etherbase para cualquier cuenta y ejecutaremos el script usando su dirección. Entonces ingrese los siguientes comandos.
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
Ahora, en helloworld.js, guardé el código compilado que copié del compilador de solidez del navegador en línea. Cambie la primera línea de código a:
var _greeting = "Hello World" ;
Guarde helloworld.js y ejecute el siguiente comando
loadScript("helloworld.js")
>null [object Object]
Contract mined! Address : someAddress, Txhash : somevalue
greeter.greet();
>Hello World
miner.stop()
>true
Por favor comente para cualquier duda o pregunta.
privacidadisahumanright.eth
privacidadisahumanright.eth