Probleme mit einem Vertrag, der einen anderen Vertrag mit der Truffle-Entwicklungsumgebung erstellt. Hier sind meine Schritte -
truffle console
var node = Node.deployed()
node.then(function(instance){node=instance})
var relay = node.createRelay()
Diese Antwort erhalten nach createRelay
:
{ tx:
'0x5172bd954f72d31bb73278a10343ddfbd613c4938162b5ae9574b2e173271d03',
receipt:
{ transactionHash:
'0x5172bd954f72d31bb73278a10343ddfbd613c4938162b5ae9574b2e173271d03',
transactionIndex: 0,
blockHash:
'0xcae09bb248baf2bc0cd9065c629958336874c2ae8c5b1e5fbd5f867600d63c56',
blockNumber: 40,
gasUsed: 159039,
cumulativeGasUsed: 159039,
contractAddress: null,
logs: [] },
logs: [] }
Wie Sie sehen können, contractAddress
ist null
.
Hier meine Verträge:
pragma solidity ^0.4.2;
import "./Relay.sol";
contract Node {
uint public fee;
address public owner;
address[] activeRelays;
function Node() {
owner = msg.sender;
fee = 10;
}
function createRelay () returns (address) {
address relay = new Relay();
activeRelays.push(relay);
return relay;
}
}
Relais:
pragma solidity ^0.4.2;
contract Relay {
address public owner;
function Relay() {
owner = msg.sender;
}
function fundRelay() payable returns (bool) {
}
function releaseFunds () {
}
}
Vielen Dank für jede Hilfe.
Es fehlt ein Schritt. Einfacher Weg nach vorn:
Erstens ,address[] public publicRelays; // easy access with free getter using "public"
Zweitens ist es normal, einen Transaktions-Hash zu erhalten, wenn Sie eine Transaktion übermitteln. Wir erwarten kein Ergebnis. Ergo kommen wir so nicht an die Vertragsadresse.
Warten Sie stattdessen, bis die Transaktion abgebaut ist. Beobachten Sie zu Beginn einfach Ihren Node/Miner. Wenn Sie sicher sind, dass ein Block abgebaut wurde, sollten Sie Folgendes tun können:
> var relay;
> node.publicRelays.call(0).then(function(response) { relay=response; });
> relay
0x123...
Das heißt, 1) den publicRelay()
Getter abfragen und oder Zeile 0 fragen (weil es ein Array ist). 2) Warten Sie auf die Antwort ... 3) Sehen Sie sich die Antwort an.
Ich hoffe es hilft.
Nikita Fuchs