Geth Was macht die Funktion eth.contract(abi).at?

Die Javascript-API/Geth-Wiki-Seiten geben an, dass die at([address])Funktion Folgendes tut :

// initiate contract for an address
var myContractInstance = MyContract.at('0x78e97bcc5b5dd9ed228fed7a4887c0d7287344a9');

1. Was bedeutet hier "Instanziieren nach Adresse"?
2. Was ist los, wenn atgerufen wird?
3. Soll der Adressparameter aus einem bereits bereitgestellten Vertrag oder einer neuen Adresse stammen? _ 4. Was soll zurückgegeben werden?

Wenn ich at(..)von einer an testrpc angeschlossenen Geth-Konsole verwendet habe, gibt es undefined. Sollte dies der Fall sein? Befolgen Sie beispielsweise das Beispiel in dieser Frage , wobei „testrpc“ folgendermaßen eingerichtet ist:

testrpc -a 1000
geth attach rpc:http://localhost:8545

BEARBEITEN:

Hinweis, ich glaube, ich habe den Quellcode gefunden :

/**
 * Should be called to get access to existing contract on a blockchain
 *
 * @method at
 * @param {Address} contract address (required)
 * @param {Function} callback {optional)
 * @returns {Contract} returns contract if no callback was passed,
 * otherwise calls callback function (err, contract)
 */
ContractFactory.prototype.at = function (address, callback) {
    var contract = new Contract(this.eth, this.abi, address);

    // this functions are not part of prototype,
    // because we dont want to spoil the interface
    addFunctionsToContract(contract);
    addEventsToContract(contract);

    if (callback) {
        callback(null, contract);
    }
    return contract;
};

/**
 * Should be called to create new contract instance
 *
 * @method Contract
 * @param {Array} abi
 * @param {Address} contract address
 */
var Contract = function (eth, abi, address) {
    this._eth = eth;
    this.transactionHash = null;
    this.address = address;
    this.abi = abi;
};

Antworten (1)

Diese Funktion erstellt ein neues MyContractObjekt, bei dem das Adressfeld auf das Argument gesetzt ist.

Sie sollten die Adresse eines bereits bereitgestellten Vertrags angeben.

Die Funktion gibt ein Objekt zurück, mit dem Sie ABI-spezifizierte Funktionen des Vertrags aufrufen können.

Es gibt keine Nebeneffekte, und die Methode überprüft nicht, ob der von Ihnen übergebene Vertrag tatsächlich vorhanden ist. Wenn nicht, erhalten Sie Fehler, wenn Sie versuchen, die Methoden des Vertrags tatsächlich aufzurufen.

Und zur Verdeutlichung: Das initiierte MyContrcat-Objekt t ist ein Proxy-Objekt für den bereitgestellten Ethereum Smart Contract. Es verwendet den zugrunde liegenden web3-Verbindungsanbieter, um eine Verbindung mit einem laufenden Ethereum-Knoten über die JSON-RPC-API herzustellen, um Remoteprozeduraufrufe durchzuführen.