На вики-страницах Javascript-API/geth указано, что at([address])
функция выполняет следующие действия :
// initiate contract for an address
var myContractInstance = MyContract.at('0x78e97bcc5b5dd9ed228fed7a4887c0d7287344a9');
1. Что здесь означает «создать экземпляр по адресу»?
2. Что происходит, когда at
звонят?
3. Должен ли параметр адреса быть из уже развернутого контракта или из нового адреса? _ 4. Что нужно вернуть?
Когда я использую at(..)
консоль geth, подключенную к testrpc, она возвращает undefined
. Должно ли это быть так? Например, следуя примеру в этом вопросе с настройкой «testrpc» следующим образом:
testrpc -a 1000
geth attach rpc:http://localhost:8545
РЕДАКТИРОВАТЬ:
Обратите внимание, я думаю, что нашел исходный код :
/**
* 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;
};
Эта функция создает новый MyContract
объект с полем адреса, установленным в качестве аргумента.
Вы должны передать адрес уже развернутого контракта.
Функция возвращает объект, который можно использовать для вызова функций контракта, указанных в ABI.
Побочных эффектов нет, и метод не проверяет, действительно ли существует контракт, который вы передали. Если нет, вы получите ошибки, когда попытаетесь вызвать методы контракта.
Микко Отамаа