Wie wird die Datei ausgelöst, wenn der MyCo.sol-Vertrag auf den Owned.sol-Vertrag zugreifen muss? Muss die Owned.sol-Datei der Blockchain hinzugefügt werden, bevor MyCo.sol ausgelöst wird; Wenn ja, muss es vor der Ausführung nur unter dem Vertrag/der Adresse des Eigentümers festgelegt werden?
Verweist der ./
or ../
-Speicherort auf einen Speicherort in der Kette oder wird er nur verwendet, um die Datei zu lokalisieren, bevor sie mit einem tx festgelegt wird?
MyCo.sol
import "../lib/Owned.sol";
Woher weiß MyCo.sol, wo die importierten Dateien zu finden sind? Sind sie irgendwie in die anfängliche Migration eingebettet worden?
Ich glaube, ich bin nur verwirrt über die Blockchain-Dateistruktur und wie sie auf diese importierten Dateien zugreifen würde. Ist alles in der Kette resident oder eine Mischung aus MyCo.sol, der nativen Go-Ethereum-Sprache, und wbd3.js-Protokollen?
Es ist eine Compiler-Direktive, die ihn anweist, die Datei aus dem lokalen Dateisystem zur Kompilierzeit zu laden . Es ist für niemanden relevant, der den kompilierten Vertrag verwendet, außer den Bytecode mit der Quelle zu verifizieren; sie müssen es sehen.
Obwohl es neue De-facto-Standards für solche Dinge gibt, gibt es keine Garantie dafür, dass Ihre Person Owned.sol
genau mit der anderer übereinstimmt. Folglich ist der eigentliche Quellcode, den Sie verwenden, Owned.sol
Teil Ihres Projekts und sollte mit dem Rest Ihres Codes veröffentlicht werden, falls Sie Ihren Quellcode veröffentlichen möchten.
import
ist ungefähr gleichbedeutend mit dem Einfügen in dieselbe Quelldatei, mit dem offensichtlichen Vorteil, Codeduplizierung zu vermeiden:
contract Owned {
// do something
}
contract Mine is Owned {
// do something
}
Ich hoffe es hilft.
Finneymann
Rob Hitchens