So rufen Sie einen Vertrag über einen Vertrag auf

Vor einiger Zeit habe ich mich mit einem Vertragsproblem befasst, bei dem ERC20 auf ERC721 zugreift. Dabei handelt es sich um gegenseitige Anrufe zwischen zwei Verträgen. Nach der Recherche der Informationen habe ich eine Methode gefunden, die zu mir passt, und ich werde sie hier mit Ihnen teilen.
Ich werde hier ein einfaches Beispiel schreiben und es mit allen teilen. Wenn Sie etwas nicht verstehen, können Sie zur Kommunikation v hinzufügen. v:54516204
Vertrag 1
Pragma-Solidität ^0.6.12;
Vertrag test1 { uint256 public test = 1;

function settest(uint256  itest) public  {
     test = itest;
}
function gettest() public  veiw returns(uint256) {
	return test;
}

}
Dies ist ein einfacher Vertrag. Wenn ich in einem anderen Vertrag auf die Funktionen settest und gettest in Vertrag 1 zugreifen möchte, wie kann ich das tun? Das Folgende ist die Pragma-Festigkeit von Vertrag 2 ^0.6.12; Vertrag test1 { //Deklarieren
Sie
zuerst zwei Funktionen für den Zugriff: Funktion settest(uint) public gibt (uint256) zurück {} function gettest() public pure gibt (uint256) zurück {}


}
Vertrag Vorhanden {

test1 ts1;

//Definieren Sie die Adresse von Vertrag 1.
Adresse intern: ad1=die Adresse von Vertrag 1;
ts1=test1(ad1);
Funktion getts1() public view returns (uint result) { return ts1.gettest(); }

function setts1(uint256 value) public  {
    ts1.settest(value);
}

}
Auf diese Weise kann Vertrag 2 normalerweise auf die Funktionen von Vertrag 1 zugreifen. Wenn Sie auf mehr zugreifen möchten, können Sie in test1 weitere öffentliche Funktionen deklarieren.

おすすめ

転載: blog.csdn.net/weixin_38532278/article/details/124568394