Lo siento si esto suena como una pregunta para principiantes, pero después de leer mucho material, tengo algunas preguntas.
En primer lugar, si ya se ha creado un contrato, ¿puedo llamar a sus funciones si conozco su ABI y dirección? Creo contract(ABI).at(contractAddress)
que hace esto, pero encontré la descripción bastante ambigua.
En segundo lugar, si estoy ejecutando web3 mediante la importación directa de bibliotecas sin MetaMask o Mist cuando inicio una llamada de función, ¿quién es el msg.sender
? Si se están ejecutando MetaMask o Mist, ¿es la msg.sender
billetera actualmente registrada?
Finalmente, si quiero crear un navegador Dapp, ¿cómo me aseguro de que algunas funciones solo puedan ser invocadas por el Dapp y nadie más (ni siquiera el propietario)?
¡Gracias de antemano!
1- si conoce la dirección y el ABI, puede llamar a la función del contrato como se describe en el documento oficial:
// creation of contract object
var MyContract = web3.eth.contract(abi);
// initiate contract for an address
var myContractInstance = MyContract.at('0x78e97bcc5b5dd9ed228fed7a4887c0d7287344a9');
var result = myContractInstance.myConstantMethod('myParam');
console.log(result) // '0x25434534534'
myContractInstance.myStateChangingMethod('someParam1', 23, {value: 200, gas: 2000}, function(err, result){ ... });
El remitente de 2 mensajes es la dirección del mensaje // la dirección del remitente de la llamada, por lo que si usa cualquier billetera de ethereum, la dirección de la cuenta se envía con su mensaje (como una IP).
3-para esto usa un modificador:
modifier isAllowed() {
if (msg.sender != allowed_address) {
throw;
}
_;
}
Alex Papageorgiou
Badr Bellaj
Alex Papageorgiou
Badr Bellaj
Alex Papageorgiou
Badr Bellaj
Alex Papageorgiou