Projekt Update Teil I: Alpha Launch — Werde Teil der Pantos Revolution

Pantos
Pantos
Published in
8 min readDec 9, 2021

Heute wollen wir einmal mehr unseren jüngsten Meilenstein feiern, unseren ersten Pantos Cross-Blockchain-Transfer in öffentlichen Test-Netzwerken. Es hat eine Weile gedauert, um hierher zu kommen, wir sind so vielen Menschen und Organisationen unglaublich dankbar. Wenn du auf die eine oder andere Weise zu diesem Erfolg beigetragen hast: Atme einmal tief durch und genieße diesen Moment!

In der Vergangenheit haben wir in unseren informellen Veröffentlichungen meist die Perspektive der Pantos-Stakeholder in Form von potenziellen Dienstleistern aber auch Pantos-Holdern dargestellt. Die erste Gruppe interessiert sich für die Bedingungen und Details der Bereitstellung von Dienstleistungen für das Pantos-Netzwerk, z.B. Staking im Sinne von Sicherheiten und Token-Setups oder die Anforderungen der Pantos-Software hinsichtlich Hardware-Setups. Pantos-Holder auf der anderen Seite sind oft an Token Use Cases interessiert, um ihre Gewinne zu maximieren, z. B. an einer Möglichkeit, Assets zwischen Blockchains zu übertragen. Eine solche Übertragungsfunktionalität könnte dann wiederum gewinnbringend genutzt werden. Die Idee eines Blockchain-Domination Index erfordert beispielsweise transparente und frei bewegliche Token über Blockchain-Grenzen hinweg.

Es gibt jedoch eine Gruppe, über die wir bisher nicht so viel gesprochen haben, bei der wir aber dennoch erwarten, dass sie einen wichtigen Teil des Pantos-Netzwerks ausmachen wird. Diese Gruppe sind externe Projekte. Die ersten Projekte dieser Art werden Token sein, die Cross-Chain-Transfers ermöglichen wollen. Projekte mit umfangreicheren Cross-Blockchain-Ambitionen werden in einer späteren Phase folgen. Pantos wird die Infrastruktur bereitstellen, damit beliebige Token von einer Blockchain auf eine andere übertragen werden können. Im technischen Teil des heutigen Projekt-Updates möchten wir darüber sprechen, wie Dritte ihre Token in das Pantos-Ökosystem integrieren können, um reibungslose Transfers zu ermöglichen.

Die Hauptanforderung an einen Token, um am Pantos-Ökosystem teilnehmen zu können, ist die Implementierung der Pantos-Token-Schnittstelle (IPantosToken). Die meisten Projekte, egal ob es sich um wrapped Token oder originäre Token handelt, können jedoch einfach die von uns empfohlene Referenzimplementierung PantosBaseToken als Grundlage für ihre Entwicklung verwenden. In der kommenden Beta-Testphase wird Pantos natürlich zu den Token gehören, die von einer Blockchain zur anderen übertragbar sind. Zusätzlich werden wir auch Wrapping Contracts für die nativen Blockchain-Währungen anbieten. Wrapping ermöglicht es, einen Vermögenswert zwischen Blockchains zu transferieren, ohne dass neuer Code in den jeweiligen Token-Contract implementiert werden muss. Es kann mit einem Gutschein verglichen werden, der jederzeit wieder gegen den ursprünglichen Vermögenswert eingelöst werden kann. pBNB kann beispielsweise von BSC auf die Ethereum-Blockchain übertragen werden. Die Konvertierung solcher umgewandelter Token zurück in ihre ursprüngliche Form (im Beispiel pBNB zu BNB) ist für unsere Implementierungen nur auf der ursprünglichen Blockchain (im Beispiel BSC) möglich.

Manche Token von Drittanbietern sind möglicherweise mit ausgefeilten Tokenomics versehen oder verfügen über keine Ownership mehr, was eine vollständige Umwandlung erschwert. In solchen Fällen können wrapped Token nützlich sein, bei denen der Token auf der Ursprungsblockchain gewrapped wird, sodass er über das Pantos-Netzwerk auf eine Zielblockchain übertragen werden kann. Für Token von Drittanbietern kann es sogar sinnvoll sein, das Unwrapping auf der Ziel-Blockchain zu ermöglichen, insbesondere wenn ein Token bereits auf beiden Blockchains existiert. In diesem Fall ist eine genaue Sicherheitsanalyse erforderlich, da das Pantos-Ökosystem keine Möglichkeit hat, Einblick in die Contract-Details von Drittanbieter-Token zu erhalten, und es dann zu Liquiditätskonflikten zwischen den auf unterschiedlichen Blockchains gewrappten Token kommen könnte.

Der bevorzugte Weg, die Pantos-Technologie in einen Token-Contract zu integrieren, ist die Verwendung unserer Referenzimplementierung PantosBaseToken als Vorlage. Für die meisten Anwendungsfälle reicht es aus, die neuen Funktionen einfach in den Contract zu integrieren und es müssen keine weiteren Änderungen vorgenommen werden.

Pantos blockchainübergreifende Transfers

Im Folgenden wird zunächst der Ablauf eines blockchainübergreifenden Transfers unter Nutzung des Pantos-Netzwerks beschrieben. Anschließend erläutern wir die Funktionen der IPantosToken-Schnittstelle, die unserer Meinung nach ein sehr guter Kandidat ist, um sich als Standard für Token-Transfers zu etablieren.

Ein blockchainübergreifender Transfer im Pantos-Ökosystem ist so konzipiert, dass für den Nutzer die einzige Voraussetzung darin besteht, PAN auf der Quellblockchain zu besitzen. Die anfallenden Gebühren werden in PAN gezahlt. Andernfalls müssten die Nutzer die nativen Währungen der Blockchains halten, an die sie Token senden möchten. Die Blaupause für eine solche Transaktion ist:

  • Pantos-Service-Nodes bewerben ihre Dienste in Form von Transferangeboten auf den Blockchains des Pantos-Ökosystems. Diese Angebote beinhalten den maximalen Übertragungsbetrag, die Übertragungsgebühren und die garantierte Übertragungszeit.
  • Der Nutzer signiert die Transaktionsabsicht, in welcher Absender, Empfänger und Überweisungsbetrag sowie die Auswahl eines Transferangebots enthalten sind, mit seinem privaten Schlüssel.
  • Anschließend sendet der Nutzer diese Absicht an einen Pantos-Service-Node.
  • Auf der Quell-Blockchain ruft der Pantos-Service-Node den PantosHub-Contract auf, der den PantosForwarder-Contract aufruft, um die Absicht zu verifizieren und die Burn Bestätigung an den Token-Contract weiterzuleiten.
  • Auf der Ziel-Blockchain wird, im Zuge der Verifizierung des Burn-Vorgangs (Quell-Blockchain), dann wieder der PantosHub aufgerufen, der wiederum den PantosForwarder-Contract aufruft, um die Transaktionsabsicht und den Burn-Vorgang zu verifizieren und die Create-Mitteilung an den Token-Contract weiterzuleiten.

Die Frage, die sich hier natürlich stellt, ist: Warum brauchen wir einen PantosForwarder-Contract? Die Antwort auf diese Frage ist, dass wir sicherstellen müssen, dass die betreffende Transaktion tatsächlich legitim und vom Absender beabsichtigt ist. In den folgenden Abschnitten werden wir diese Antwort mit mehr technischen Details erläutern.

Übertragung < Erlaubnis < PantosForwarder

Bei einem On-Chain-Token-Transfer gibt es immer einen Absender und einen Empfänger, die jeweils durch Adressen repräsentiert werden. Eine Adresse in EVM-basierten Blockchains wird in der Regel durch die Zeichen “0x”, gefolgt von 40 hexadezimalen Ziffern (d.h. Zahlen 0–9 oder Buchstaben a-f) dargestellt. Solche Adressen verweisen entweder auf eine persönliche Geldbörse oder auf einen Smart Contract. Smart Contracts und persönliche Wallets sind gleichwertig in Bezug auf Transaktionen, die sie initiieren können.

Damit ein Token-Transfer stattfinden kann, muss er außerdem in die Blockchain übertragen werden. Genauer gesagt muss er an den Transaktionspool übermittelt werden, wo er hoffentlich von einem Miner aufgegriffen und in einen kommenden Block aufgenommen wird. Die Miner werden für jede Transaktion, die sie in ihre Blöcke aufnehmen, bezahlt.

Token-Transfers können vom Absender eingereicht werden, was die übliche Art und Weise ist, eine Transaktion durchzuführen. Aber der ERC20-Standard erlaubt bereits auch Transfers, die von einer dritten Partei eingereicht wurden. Dies wird insbesondere dann notwendig, wenn Smart-Contract-Interaktionen Teil der Transaktion sein sollen. Bei der EVM-basierten Smart-Contract-Technologie ist der Aufrufsstapel nur für eine einzigen Layer verifizierbar. Wenn ich eine Smart-Contract-Funktion mit meiner persönlichen Wallet aufrufe, dann weiß dieser Smart Contract mit Sicherheit, dass ich die Transaktion mit meinem privaten Schlüssel signiert habe. Dies ist der Fall bei einer gewöhnlichen Token-Überweisung, bei der ich den Token-Contract mit der Funktion transfer(Empfänger, Betrag) aufrufe. Wenn ich aber einen Smart Contract mit meiner persönlichen Wallet aufrufe und dieser Smart Contract in der gleichen Transaktion einen anderen Smart Contract aufruft, dann weiß der zweite Smart Contract mit Sicherheit nur, dass der erste Smart Contract ihn aufgerufen hat. Dies ist ein Sicherheitsfeature, andernfalls könnten Smart Contracts die Transaktionen des Nutzers leicht missbrauchen, um dessen Guthaben zu plündern. Der Handel mit Token auf dezentralen Börsen ist beispielsweise eine Transaktion der zweiten Kategorie. Um einen Token gegen einen anderen Token zu tauschen, reicht der Nutzer in der Regel eine Transaktion beim DEX-Contract ein, der wiederum die Token-Transfers einleitet, einmal vom Nutzer zum Liquiditätspool und einmal vom Liquiditätspool zum Nutzer. Damit dies auf sichere Weise geschehen kann, verwendet der ERC20-Standard ‘allowances’. Allowances können an Adressen vergeben werden, aber auch diese Vergabe ist eine Blockchain-Transaktion und muss vom Eigentümer der Token, für die die Allowance vergeben wird, eingereicht werden.

Für den Pantos-Anwendungsfall haben wir bereits festgestellt, dass ein Nutzer nicht verpflichtet sein sollte, native Blockchain-Währungen zu halten oder zu verwenden. Folglich reicht die ERC20-Methode mit Verwendung einer Allowance nicht aus. Und hier kommt unser PantosForwarder ins Spiel. Der einzige Zweck dieses Contracts ist es, die unterzeichneten Absichten der Nutzer zu verifizieren. Auf diese Weise kann ein Token-Contract, der vom PantosForwarder aufgerufen wird, sicher sein, dass der Besitzer eines Tokens auch wirklich die Absicht hat, die behauptete Transaktion durchzuführen. Durch die Verwendung des PantosForwarder-Contracts als Vermittler können wir letztendlich Transaktionen durchführen, die nur in PAN bezahlt werden.

PantosBaseToken Contract

Es sei an dieser Stelle darauf hingewiesen, dass ein Token-Projekt eines Drittanbieters einen anderen Forwarder-Contract als den PantosForwarder wählen könnte. Die IPantosToken-Schnittstelle erfordert lediglich, dass der Token-Contract die Funktionen pantosTransfer(), pantosTransferFrom(), pantosTranfserTo() und getPantosForwarder() aufweist. Standardmethoden erlauben auch und gerade für Interoperabilitätsszenarien einfachere Überprüfbarkeit. Aus diesem Grund empfehlen wir den PantosForwarder-Contract zu verwenden, da er eben die von uns stammende Referenzimplementierung ist. Spezielle Anwendungsfälle können einen angepassten Forwarder-Contract erfordern, aber in den meisten Fällen ist der PantosForwarder-Contract der beste Kandidat für diese Option.

Da sich der PantosForwarder-Contract um die Validierung der Transaktionsabsicht kümmert, sehen wir uns nun die weitere Funktionalität des PantosBaseToken-Contracts genauer an. Der vorliegende Contract ist eine Annäherung an den Contract, der zum Start der Beta-Phase veröffentlicht werden wird. Die Annäherung besteht hier vor allem im Weglassen von Schlüsselwörtern und Details, die für die vorliegende Diskussion nicht relevant sind.

2:     modifier onlyPantosForwarder() 
3: {
4: require(
5: msg.sender == _pantosForwarder,
6: "PantosBaseToken: caller is not the PantosForwarder"
7: );
8: _;
9: }

Der Modifikator onlyPantosForwarder() dient dazu, ein Schlüsselwort zu definieren. Durch Hinzufügen dieses Schlüsselworts zu Funktionsdefinitionen im Smart Contract wird sichergestellt, dass die Funktion nur vom PantosForwarder aufgerufen werden kann. Da der PantosForwarder nur verifizierte Transaktionen weiterleitet, können die durch diesen Modifikator modifizierten Funktionen als sicher angesehen werden.

11:     function pantosTransfer(
12: address sender,
13: address recipient,
14: uint256 amount
15: ) onlyPantosForwarder {
16: _transfer(sender, recipient, amount);
17: }

Die Funktion pantosTransfer() ist einem normalen Transfer sehr ähnlich. Der Unterschied besteht darin, dass mit dem Modifikator onlyPantosForwarder diese Funktion anstelle des Absenders nur vom PantosForwarder aufgerufen werden kann. Dies ermöglicht On-Chain-Token-Transfers, bei denen die vom Absender gezahlte Gebühr ausschließlich in PAN geleistet wird.

19:     function pantosTransferFrom(
20: address sender,
21: uint256 amount)
22: ) onlyPantosForwarder
23: {
24: _burn(sender, amount);
25: }
26:
27: function pantosTransferTo(
28: address recipient,
29: uint256 amount
30: ) onlyPantosForwarder
31: {
32: _mint(recipient, amount);
33: }

Die Funktionen pantosTransferFrom() und pantosTransferTo() sind auch wieder mit dem Schlüsselwort onlyPantosForwarder versehen und stellen die Gegenstücke einer blockchainübergreifenden Transaktion dar. Auf der Quell-Blockchain wird pantosTransferFrom() aufgerufen, wodurch der Betrag vom Guthaben des Absenders abgebucht wird. Nach der Überprüfung dieser Transaktion wird auf der Ziel-Blockchain pantosTransferTo() aufgerufen, um den überwiesenen Betrag an die Adresse des Empfängers zu senden.

Wie zu sehen ist, verwendet die PantosBaseToken-Referenzimplementierung die nahezu standardisierten Funktionen _transfer(), _burn() und _mint(). Diese Funktionen sind Teil der Mehrheit aller Token-Smart Contracts. Wir stellen weder Anforderungen an die Details dieser Funktionen, noch an die weitere Funktionalität des Token-Contracts.

In den meisten Fällen bedeutet dies, dass die gegebenen PantosBaseToken-Funktionen einfach zu einem beliebigen Token-Contract hinzugefügt werden können, um den Token mit Pantos Cross-Chain-Funktionalität sehr einfach zu erweitern.

Besuche unseren Blog schon bald für den zweiten Teil dieses Projekt-Updates, in dem wir einen neuen Blick auf die Zukunft werfen und über unsere Mission sprechen.

--

--

Pantos
Pantos
Editor for

The first multi-blockchain token system. Made with ♥ and care in Vienna by @bitpanda.