Wie berechnet man die Höhe der Gebühr in diesem Smart Contract richtig?

Ich untersuche tradeBalancesdie Methode dieses intelligenten Vertrags und versuche zu untersuchen, wie die Gebühr für diese Transaktion tatsächlich mit den folgenden decodierten Eingabedaten berechnet wird:

‌[
    "0xac709fcb44a43c35f0da4e3163b117a17f3770f5",
    "2500000000000000000000",
    "0x0000000000000000000000000000000000000000",
    "13775000000000000000",
    "3156959",
    "3696351802",
    "0xd8eeda4ee2657bb267bc35c1d60babdc5aedd269",
    "28",
    "b4bf0dcd37ca73bd5abce9532b033dcc6427be160683de113efca41320c27f3e",
    "78799d84040e5c245828b1b531ef97e1af124946f4dc1db5a20cf28a7073b269",
    "726181804936299500000"
]

Soweit ich aus der Gebührenberechnung erkenne:

tokens[tokenGet][feeAccount] = safeAdd(tokens[tokenGet][feeAccount], safeSub(safeAdd(feeMakeXfer, feeTakeXfer), feeRebateXfer));

Ich bekomme:

// fee constants
const feeMake = '0';
const feeTake = '3000000000000000';

// amout fee calculation
let feeMakeXfer = (726181804936299500000 * 0) / (1 ether); // 0 ETH
let feeTakeXfer = (726181804936299500000 * 3000000000000000) / (1 ether); // 2.1785... ETH

// fee calculation
let fee = (feeMakeXfer + feeTakeXfer) - feeRebateXfer; // 2.1785... ETH

Als Ergebnis der obigen Berechnungen erhalte ich, was meiner Meinung feenach 2.1785... ETHin diesem Fall sehr groß ist, da die Menge an ETH, die er gemäß der Formel kauft , lautet:

let amount = (13775000000000000000 * 726181804936299500000) / 2500000000000000000000; // 4.001261... ETH

Was mache ich falsch? Bitte auf meinen Fehler hinweisen. Vielen Dank im Voraus.

Antworten (1)

feeMakeund feeTakelauten auf dieselbe Währung wie amount. amountIn diesem Fall wird bezeichnet, 0xac709fcb44a43c35f0da4e3163b117a17f3770f5was ein Token ist, nicht Ether. Somit ist 2,1785 die Gebühr in Token.

Bei der Berechnung der Gebühr dividieren sie durch 1 etherjedoch bedeutet dies nicht, dass die Gebühr selbst in Ether ist, sie tun dies nur, um Rundungsfehler zu vermeiden.

danke für die Antwort. Ist es möglich in Äther zu kommen fee?
@Erik meinst du, die Gebühr in Ether umzuwandeln? Ich denke, es wird feeTakeXfer * priceOfTokenInEtherwo seinpriceOfTokenInEther = amountGive / amountGet
könnten Sie mir bitte bei dieser Frage helfen, bitte ethereum.stackexchange.com/questions/39957/…