Ich verwende truffle
(was verwendet pudding
), um Verträge für meine testrpc
.
Nein, ich führe eine geth
Instanz lokal aus mit:
geth --mine -rpccorsdomain "*" --ipcapi "admin,eth,miner" --rpcapi "eth,web3" --networkid 1100 --maxpeers 5 --minerthreads 1 --unlock "0xXXXXXXXXetc.."-Konsole
Wenn ich jetzt versuche, meine Verträge bereitzustellen, erhalte ich:
Invalid JSON RPC response: "Error: connect ECONNREFUSED 127.0.0.1:8545 at..."
Was fehlt mir hier? Wie identifiziert sich Trüffel/Pudding gegenüber dem Knoten, wenn er bereitgestellt wird? (dh truffle deploy
) Ich kann nichts sehen, um dies zu konfigurieren.
Es stellte sich heraus, dass der Standardport nicht 8545 ist und diese Optionen hinzugefügt werden mussten:
--rpc --rpcport 8545
Die Vertragserstellung wird hier ausführlich beschrieben ; ein Beispiel könnte so aussehen:
./geth --datadir ~/eth/ --loglevel 6 --logtostderr=true --rpc --rpcport 8100 --rpccorsdomain '*' --mine console 2>> ~/eth/eth.log
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_compileSolidity","params":["contract test { function multiply(uint a) returns(uint d) { return a * 7; } }"],"id":1}' http://127.0.0.1:8100
(Stellen Sie sicher, dass Sie sich mit den richtigen Ports verbinden).
Die Vertragsbereitstellung wird hier gezeigt :
source = "contract test { function multiply(uint a) returns(uint d) { return a * 7; } }"
// compile with solc
contract = eth.compile.solidity(source).test
// create contract object
var MyContract = eth.contract(contract.info.abiDefinition)
// extracts info from contract, save the json serialisation in the given file,
contenthash = admin.saveInfo(contract.info, "~/dapps/shared/contracts/test/info.json")
// send off the contract to the blockchain
MyContract.new({from: primaryAccount, data: contract.code}, function(error, contract){
if(!error && contract.address) {
// calculates the content hash and registers it with the code hash in `HashReg`
// it uses address to send the transaction.
// returns the content hash that we use to register a url
admin.register(primaryAccount, contract.address, contenthash)
// here you deploy ~/dapps/shared/contracts/test/info.json to a url
admin.registerUrl(primaryAccount, hash, url)
}
});
truffle deploy
)
.Zunächst müssen Sie einen RPC-Port in Ihrem Geth als : hinzufügen geth --rpc --rpcport "portnumber"
.
Dann befindet sich in Ihrem Truffle-Projektordner eine Datei mit dem Namen truffle.js . Sie müssen den Abschnitt rpc als Abschnitt aktualisieren
rpc: {
host: "localhost",
port: portnumber
}
Somit wird es mit dem Knoten verbunden, der lokal auf Ihrem System läuft. Jetzt müssen Sie nur noch den Befehl ausführen truffle deploy
und Ihre Verträge werden auf Ihrer privaten Blockchain bereitgestellt. Der Fehler wird aufgrund des in der truffle.js-Datei festgelegten Standardwerts angezeigt, der versucht, eine Verbindung zu einem lokalen Knoten herzustellen, der auf Port 8545 ausgeführt wird. Ich hoffe, er wird Ihr Problem lösen.
Tjaden Hess
--rpc
Flag verwenden, um RPC-Verbindungen zu aktivieren