Wie kann ich eine Transaktion mit Metamask auf zwei Adressen aufteilen?

Meine Idee ist, Benutzer zu fragen, welchen Betrag sie einem anderen Benutzer geben möchten. Ich möchte jedoch 5% dieses Betrags nehmen und an eine andere Adresse senden (als Provision für den Website-Betreiber).

Ich weiß, dass der Benutzer zwei Transaktionen bestätigen müsste, aber hat Metamask oder Web3 eine Möglichkeit, Massentransaktionen oder eine Transaktion durchzuführen, die von der anderen abhängig ist?

Wenn ein Benutzer 1 US-Dollar Trinkgeld geben möchte, gehen 95 Cent an den Empfänger und 5 Cent an den Website-Betreiber.

Ich möchte sicherstellen, dass sie beide Transaktionen genehmigen müssen, damit sie durchlaufen werden (dh: sie daran hindern, die Provisionstransaktion nicht zu senden).

Ist dies nur mit Standard-Web3-Transaktionen möglich oder benötige ich einen Smart Contract, der die Provisionstransaktion abwickelt und den Rest an den beabsichtigten Empfänger zahlt?

Antworten (2)

Am einfachsten ist es wahrscheinlich mit einem Smart Contract dafür. Eine einzelne Transaktion zielt immer nur auf eine Adresse ab, und es gibt keine native Möglichkeit, Batch-Transaktionen durchzuführen.

Einige Wallet-Clients bieten möglicherweise eine Art Batch-Transaktionen an, aber wahrscheinlich sind diese auch nicht das, was Sie brauchen.

Sie können den Benutzer bitten, zuerst die Provisionstransaktionen zu senden und ihm erst danach zu erlauben, die eigentliche Transaktion zu senden. Aber meiner Meinung nach ist dies eine Verschwendung von Transaktionen (und Geld), da Sie dies mit einem Smart Contract und einer einzigen Transaktion problemlos tun können.

Beispiel für eine einfache Provisionsfunktion (wird wahrscheinlich nicht einmal kompiliert, veranschaulicht aber hoffentlich den Punkt):

function pay() payable public {
  uint mainPart = msg.value * 95 / 100;
  uint commission = msg.value - mainPart;

  address(0x123).transfer(mainPart);
  address(0x345).transfer(commission);
}
Können Sie einen Beispielvertrag nennen, der eine Provision abziehen würde?
ein Beispiel hinzugefügt
Also ein paar Dinge, basierend auf dem, was andere vorgeschlagen haben: Der Manager sollte in der Lage sein, die Provisionsadresse zu ändern