Ich möchte einen Solidity-Vertrag mit dem Mist-Browser ansehen. Ich weiß, wie das geht, und es braucht die Adresse und den JSON. Ich habe die Adresse, aber ich habe nicht den JSON. Ich habe den Quellcode.
Kann ich den JSON aus dem Quellcode und/oder der Ethereum-Adresse generieren?
Der JSON wird als ABI bezeichnet.
Sie benötigen den Quellcode, wie Sie ihn haben, und eine Möglichkeit, die ABI zu erhalten, besteht darin, sie in Remix IDE einzufügen , zu kompilieren und dann auf die Schaltfläche „ABI“ zu klicken, um die ABI in Ihre Zwischenablage zu kopieren.
Wenn der Vertrag in Etherscan verifiziert wird, ruft das folgende Skript die ABI ab und speichert sie in einer JSON-Datei. Verwenden Sie es wie
$ python fetch_abi.py <contract address> -o <target JSON file>
fetch_abi.py
#!/usr/bin/python
import argparse
import requests
import json
# Exports contract ABI in JSON
ABI_ENDPOINT = 'https://api.etherscan.io/api?module=contract&action=getabi&address='
parser = argparse.ArgumentParser()
parser.add_argument('addr', type=str, help='Contract address')
parser.add_argument('-o', '--output', type=str, help="Path to the output JSON file", required=True)
def __main__():
args = parser.parse_args()
response = requests.get('%s%s'%(ABI_ENDPOINT, args.addr))
response_json = response.json()
abi_json = json.loads(response_json['result'])
result = json.dumps({"abi":abi_json}, indent=4, sort_keys=True)
open(args.output, 'w').write(result)
if __name__ == '__main__':
__main__()
So erhalten Sie das abi
, indem Sie Ihren lokalen solc
Compiler verwenden:
solc filename.sol --abi
Sie benötigen auch den bin
Code, um den Vertrag bereitzustellen, den Sie wie folgt erhalten:
solc filename.sol --bin
Wenn Sie eine Solc-kombinierte Ausgabe (z. B. für Parität) wünschen, wobei bin
Teil der abi
JSON-Zeichenfolge ist, verwenden Sie Folgendes:
solc filename.sol --combined-json abi,bin
BEARBEITEN
Klicken Sie auf Compile
der Registerkarte (rechtes oberes Menü) einfach auf Details
.
ALTE METHODE
In der neuen Version von Solidity Browser können Sie Interface
Wert finden, indem Sie auf klickenContract details (bytecode, interface etc.)
Contract details (bytecode, interface etc.)
sich? @NineCattoRulesCompile
der Registerkarte einfach aufDetails
Sie können ABI json von der Etherscan-API wie unten erhalten.
var Web3 = require('web3');
var web3 = new Web3(new Web3.providers.HttpProvider());
var version = web3.version.api;
$.getJSON('https://api.etherscan.io/api?module=contract&action=getabi&address=0xfb6916095ca1df60bb79ce92ce3ea74c37c5d359', function (data) {
var contractABI = "";
contractABI = JSON.parse(data.result);
if (contractABI != ''){
var MyContract = web3.eth.contract(contractABI);
var myContractInstance = MyContract.at("0xfb6916095ca1df60bb79ce92ce3ea74c37c5d359");
var result = myContractInstance.memberId("0xfe8ad7dd2f564a877cc23feea6c0a9cc2e783715");
console.log("result1 : " + result);
var result = myContractInstance.members(1);
console.log("result2 : " + result);
} else {
console.log("Error" );
}
})
Gehen Sie zu EtherScan > geben Sie die Vertragsadresse ein > klicken Sie auf den Code in der Überschrift des Registerkartenabschnitts > scrollen Sie nach unten, um die Vertrags-ABI zu finden > klicken Sie auf das Symbol Kopieren, um sie zu kopieren
Gehen Sie einfach zu http://remix.ethereum.org/ und fügen Sie den Quellcode des Vertrags ein. Klicken Sie auf Kompilieren starten und nach ein paar Sekunden wird Ihr Vertrag verarbeitet. Klicken Sie auf die Detailschaltfläche (oben rechts). Auf dem Popup würden Sie ABI, METADATA, BYTECODE usw. finden
David
eth