Ich habe ein privates Netzwerk mit Go-Ethereum mit 2 Clients erstellt, die VMs sind (Ubuntu 14.04).
Auf VM1 habe ich einen Vertrag erstellt:
N1greeterSource ='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; } function changeMessage(string myMsg) returns (string){ greeting = myMsg; return myMsg; } function greet() returns (string) { return greeting; } }'
N1greeterCompiled = web3.eth.compile.solidity(N1greeterSource);
_greeting = "Hello world !";
N1greeterContract = web3.eth.contract(N1greeterCompiled.greeter.info.abiDefinition);
N1greeter = N1greeterContract.new(_greeting,{from:web3.eth.accounts[0], data: N1greeterCompiled.greeter.code, gas: 310000}, function(e, contract){
if(!e) {
if(!contract.address) {
console.log("Contract transaction send: TransactionHash: " + contract.transactionHash + " waiting to be mined...");
} else {
console.log("Contract mined! Address: " + contract.address);
console.log(contract);
}
}
else{
console.log("Error:>>>>>>>>>>>>>");
console.log(e);
}
})
Auf VM2 sehe ich Vertrag von:
N1greeter = eth.contract([{ constant: false, inputs: [], name: "kill", outputs: [], type: "function" }, { constant: false, inputs: [{ name: "myMsg", type: "string" }], name: "changeMessage", outputs: [{ name: "", type: "string" }], type: "function" }, { constant: false, inputs: [], name: "greet", outputs: [{ name: "", type: "string" }], type: "function" }, { inputs: [{ name: "_greeting", type: "string" }], type: "constructor" }] ).at("0x526e636021fbfef1584097690798145ff32be21a");
Alles ist ok.
Aber ich weiß nicht, wie VM2 den Vertrag automatisch finden kann? (Adresse und abi in VM1 finden, um diesen Code hinzuzufügen: N1greeter = eth.contract(abi).at(address) )
Vielen Dank.
Sie können den Namensregistrierungsvertrag ausprobieren , der verwendet wird, um die Adresse Ihres Vertrags einem Namen zuzuordnen. Im Falle eines privaten Testnetzes müssen Sie den Registrierungscode in Ihrem Netzwerk bereitstellen. Dazu müssen Sie zunächst den Code aus ihrem Git- Repo kompilieren und sie in Ihrem Netzwerk bereitstellen, so wie Sie es für jeden anderen Vertrag tun würden.
Weitere Informationen zum Registrar: Was ist der globale Registrar?
Ein weiterer Ansatz zur Interaktion mit einem Vertrag ist die Verwendung des NatSpec-Protokolls. Für weitere Informationen dazu, hier ist der Link: NatSpec Github Wiki .
Ajk Do
rupshabagchi
Ajk Do