Tut mir leid, wenn das wie eine Anfängerfrage klingt, aber nachdem ich viel Material durchgelesen habe, habe ich einige Fragen.
Erstens, wenn ein Vertrag bereits erstellt wurde, kann ich seine Funktionen aufrufen, wenn ich seine ABI & Adresse kenne? Ich denke, contract(ABI).at(contractAddress)
tut dies, aber ich fand die Beschreibung eher zweideutig.
Zweitens, wenn ich web3 durch direkten Bibliotheksimport ohne MetaMask oder Mist ausführe, wenn ich einen Funktionsaufruf initiiere, wer ist der msg.sender
? Wenn MetaMask oder Mist ausgeführt werden, ist die msg.sender
Wallet derzeit angemeldet?
Wenn ich schließlich eine Browser-DApp erstellen möchte, wie stelle ich sicher, dass einige Funktionen nur von der DApp und von niemand anderem aufgerufen werden können (nicht einmal vom Eigentümer)?
Vielen Dank im Voraus!
1- Wenn Sie die Adresse und die ABI kennen, können Sie die Vertragsfunktion aufrufen, wie im offiziellen Dokument beschrieben:
// 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){ ... });
2-msg sender ist die Adresse des Nachrichten-//Anrufabsenders. Wenn Sie also eine Ethereum-Brieftasche verwenden, wird die Kontoadresse mit Ihrer Nachricht gesendet (wie eine IP).
3-dazu einen Modifikator verwenden:
modifier isAllowed() {
if (msg.sender != allowed_address) {
throw;
}
_;
}
Alex Papageorgiou
Badr Bellaj
Alex Papageorgiou
Badr Bellaj
Alex Papageorgiou
Badr Bellaj
Alex Papageorgiou