Holen Sie sich das abi Vertrag

In meinem Kontakt habe ich mehrere Importe und meinen Vertrag erfolgreich bereitgestellt. Dies ist meine Vertragsadresse0xc2d4d839001f9d985618a22b89155ea8d6550ae6

Wie bekomme ich das abi meiner Verträge :

pragma solidity ^0.4.18;

import './DeveloperToken.sol';
import 'zeppelin-solidity/contracts/crowdsale/CappedCrowdsale.sol';
import 'zeppelin-solidity/contracts/crowdsale/RefundableCrowdsale.sol';

contract DeveloperCrowdsale is CappedCrowdsale, RefundableCrowdsale {

Ich habe das versucht:

var compiled = web3.eth.compile.solidity(contractaddress);

var code = compiled.code;
var abi = compiled.info.abiDefinition;

var contract = web3.eth.contract(abi);

Aber es funktioniert nicht. Wie bekomme ich das abi meines Smart Contracts?

Antworten (2)

Speichern Sie Ihren Quellcode in einer Datei und verwenden Sie den Solidity-Compiler, um die ABI zu generieren.

Du kannst es mit installieren

npm install -g solc

oder

yarn global add solc

und führen Sie es dann gegen Ihren Quellcode aus

solcjs --abi contract.sol

Es generiert die ABI in Ihrem aktuellen Verzeichniscontract_sol_[ContractName].abi

Ich habe dies versucht, dies gibt mir den Fehler: solcjs --abi DeveloperCrowdsale.sol DeveloperCrowdsale.sol:3:1: ParserError: Quelle "DeveloperToken.sol" nicht gefunden: Datei wurde ursprünglich nicht bereitgestellt. import './DeveloperToken.sol'; ^------------------------------------^ DeveloperCrowdsale.sol:4:1: ParserError: Source "zeppelin-solidity/contracts/crowdsale/ CappedCrowdsale.sol" nicht gefunden: Datei anfänglich nicht bereitgestellt. import 'zeppelin-solidity/contracts/crowdsale/CappedCrowdsale.sol'; ^------------------------------------------------------------- ----------------^
DeveloperCrowdsale.sol:5:1: ParserError: Quelle "zeppelin-solidity/contracts/crowdsale/RefundableCrowdsale.sol" nicht gefunden: Datei anfänglich nicht bereitgestellt. import 'zeppelin-solidity/contracts/crowdsale/RefundableCrowdsale.sol'; ^------------------------------------------------------------- --------------------^

Die einfachste Lösung, um das ABI zu erhalten, ist die Verwendung von Remix :

Zum Beispiel, wenn ich Ihren Code leicht ändere, um wie folgt zu sein


pragma solidity ^0.4.18;

import 'https://github.com/OpenZeppelin/zeppelin-solidity/contracts/token/ERC20/ERC20.sol';
import 'https://github.com/OpenZeppelin/zeppelin-solidity/contracts/crowdsale/validation/CappedCrowdsale.sol';
import 'https://github.com/OpenZeppelin/zeppelin-solidity/contracts/crowdsale/distribution/RefundableCrowdsale.sol';

contract DeveloperToken is ERC20 {

}   

contract DeveloperCrowdsale is CappedCrowdsale, RefundableCrowdsale {
}

Dann können Sie die ABI im Detailbereich der Registerkarte „Kompilieren“ abrufen, indem Sie diesen einfachen Schritten folgen:

Geben Sie hier die Bildbeschreibung ein

Sie werden jedoch feststellen, dass es zwei Unterschiede zwischen meinen Importaussagen und Ihren gibt:

  1. Remix benötigt eine URL zum Github-Konto.
  2. Sie verwenden eine veraltete Version der OpenZeppelin-Bibliotheken.

Es sieht so aus, als ob der Code, den Sie haben, aus einem Truffle - Projekt stammt. In diesem Fall wird beim Aufrufen truffle compileeine DeveloperCrowdsale.json-Datei im Verzeichnis ../build/contracts erstellt. Dieser JSON enthält die ABI.

Ja, du hast recht . Ich verwende Trüffel zum Kompilieren und Bereitstellen des Vertrags. Ja, in Build/Contracts befindet sich die Datei DeceloperCrowdsale.json, die den folgenden Code pastebin.com/b9BskCAh enthält