So teilen Sie Gelder in einer einzelnen Sendetransaktion auf

Szenario:

  • Alice-Konto = 2 ETH
  • Admin-Konto = 0 ETH
  • Bob-Konto = 0 ETH

Alice möchte mit meiner Anwendung 1 ETH an Bob senden. Die Anwendung berechnet 0,01 ETH als Provision und wird zur Gesamttransaktionsgebühr hinzugefügt

Gesamtgebühr = Antragsgebühr (0,01) + Netzgebühr (Gaslimit * Gaspreis)

Angenommen, die Netzwerkgebühr wird mit 0,001008 ETH berechnet.

Zu zahlender Gesamtbetrag = 1,011008 ETH (1 + 0,01 + 0,001008)

Nach erfolgreicher Transaktion sollten die Kontodaten folgen

  • Alice-Konto = 0,988992 ETH
  • Admin-Konto = 0,01 ETH
  • Bob-Konto = 1 ETH

wobei 0,001008 ETH an Bergleute gezahlt werden

Anfrage:

Q1. Wie kann ich eine Anwendung erstellen, bei der ein Geldbetrag einer einzelnen Sendetransaktion an zwei verschiedene Adressen (Bobs Adresse und Admins Adresse) gesendet werden kann?

Q2. Ist es möglich, eine solche Anwendung zu erstellen, ohne Smart Contracts zu verwenden?

Möglicherweise benötigen Sie dazu eine Festkomma-Mathematikbibliothek. Siehe PRBMath und diesen Thread: Welche mathematischen Bibliotheken mit festen oder Gleitkommazahlen sind in Solidity verfügbar?

Antworten (1)

Ein Smart Contract müsste in den Prozess eingebunden werden. Es würde grundsätzlich die Gelder überweisen und sie an verschiedene Konten senden, wie in seiner Logik angegeben.

Hier ist ein sehr schnelles Beispiel, das ich für Sie zusammengestellt habe:

pragma solidity ^0.4.24;

contract Forwarder {

    address admin;
    uint fee = 10;

    constructor() public {

        admin = msg.sender;
    }

    function splitFunds(address _b) public payable {

        admin.transfer(msg.value * fee / 100);
        _b.transfer(msg.value - (msg.value * fee / 100));
    }
}

Geben Sie hier die Bildbeschreibung ein

Also Gebühr gleich 10 bedeutet 10 Prozent? oder 1 Prozent?