
In den vorherigen Python-Tutorialbeiträgen habe ich den Ontology Smart Contract in eingeführt
Teil 1: Blockchain & Block API und
Teil 2: Speicher-APITeil 3: Laufzeit-APITeil 4: Native API und Beschreibung der Verwendung intelligenter Verträge für den ONT / ONG-Transfer.
Heute werden wir über die Verwendung der
Upgrade-API zum Upgrade von Smart Contract sprechen. Es gibt 2 APIs:
Destroy und
Migrate .
Sie werden wie folgt verwendet:

Gehen wir nun näher auf die Verwendung dieser beiden APIs ein. Zuvor können Sie im Ontology Smart Contract Development Tool
SmartX einen neuen Vertrag
erstellen und die folgenden Anweisungen befolgen. Wie üblich werde ich am Ende des Artikels den Link zum Quellcode anhängen.
Verwendung der Upgrade-API
Wie gewohnt müssen Sie die 2 Funktionen wie folgt importieren, bevor Sie sie verwenden können.
from ontology.interop.Ontology.Contract import Migrate from ontology.interop.System.Contract import Destroy
API zerstören
Die Destroy-API wird zum Löschen und Löschen eines Smart-Vertrags in der Kette verwendet. Unten finden Sie ein Codebeispiel der API.
from ontology.interop.System.Contract import Destroy from ontology.interop.System.Runtime import Notify def Main(operation, args): if operation == "destroy_contract": return destroy_contract() return False def destroy_contract(): Destroy() Notify(["The contract has been destoryed"]) return True
API migrieren
Die Migrate-API wird zum Migrieren intelligenter Verträge verwendet. Der bestehende Vertrag wird durch den neu migrierten Vertrag ersetzt. Die durch den alten Vertrag gespeicherten Daten werden ebenfalls in den neuen Vertrag migriert. Der alte Vertrag wird nach der Migration gelöscht.
Bitte beachten Sie, dass die Assets im Smart-Vertrag nicht automatisch migriert werden, sodass Sie sie im Voraus übertragen müssen. Andernfalls können Sie Ihre Vermögenswerte nicht abrufen.
Die Parameterliste der Migrate-Funktion lautet wie folgt:

Siehe unten das Codebeispiel der Migrate-Funktion:
from ontology.interop.Ontology.Contract import Migrate from ontology.interop.System.Runtime import Notify from ontology.libont import AddressFromVmCode def Main(operation, args): if operation == "migrate_contract": if len(args) != 7: return False avm_code = args[0] need_storage = args[1] name = args[2] version = args[3] author = args[4] email = args[5] description = args[6] return migrate_contract(avm_code, need_storage, name, version, author, email, description) return False def migrate_contract(avm_code, need_storage, name, version, author, email, description): res = Migrate(avm_code, need_storage, name, version, author, email, description) if res: Notify(["Migrate successfully"]) new_contract_hash=AddressFromVmCode(avm_code) Notify(new_contract_hash) return True else: return False
Sie können die folgenden Schritte ausführen, um das Ausführungsergebnis des Codebeispiels unter SmartX anzuzeigen:1. Kopieren Sie den obigen Code, fügen Sie ihn in SmartX ein und kompilieren Sie ihn, bevor Sie die Parameter eingeben. Achten Sie bei der Eingabe von Parametern besonders auf zwei Punkte:
- Stellen Sie sicher, dass avm_code in der Kette nicht vorhanden ist. Andernfalls wird ein Fehler zurückgegeben.
- Für die Migration ist ein hohes Gaslimit erforderlich, daher müssen Sie das Gaslimit anpassen, wenn Sie die Funktion ausführen.
2. Nach der Bereitstellung können Sie den neuen Vertrags-Hash über das Dashboard abrufen. In diesem Beispiel lautet der neue Vertragshash be4606c4663081b70f745ed9fc64d4c3b0d9c183.

Zusammenfassung
In diesem Artikel haben wir die Upgrade-API der Ontology-Blockchain vorgestellt. Entwickler können diese API verwenden, um intelligente Verträge zu aktualisieren. Die Destroy-API wird zum Löschen intelligenter Verträge in der Kette und die Migrate-API zum Migrieren intelligenter Verträge verwendet. Im nächsten Artikel werden wir die statische und dynamische API vorstellen, um zu untersuchen, wie der statische und dynamische Aufruf von Ontology-Smart-Verträgen mit Python implementiert wird.
Das Tutorial zu GitHub finden Sie
hier .
Sind Sie Entwickler? Stellen Sie sicher, dass Sie unserer Tech-Community auf
Discord beigetreten sind. Schauen Sie sich auch das
Developer Center auf unserer Website an. Dort finden Sie Entwicklertools, Dokumentation und mehr.
Finden Sie Ontologie woanders
Ontologie-WebsiteGithub /
ZwietrachtTelegramm
Englisch /
RussischTwitter /
Reddit