Ich untersuche tradeBalances
die 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 fee
nach 2.1785... ETH
in 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.
feeMake
und feeTake
lauten auf dieselbe Währung wie amount
. amount
In diesem Fall wird bezeichnet, 0xac709fcb44a43c35f0da4e3163b117a17f3770f5
was ein Token ist, nicht Ether. Somit ist 2,1785 die Gebühr in Token.
Bei der Berechnung der Gebühr dividieren sie durch 1 ether
jedoch bedeutet dies nicht, dass die Gebühr selbst in Ether ist, sie tun dies nur, um Rundungsfehler zu vermeiden.
Erik
fee
?medwedew1088
feeTakeXfer * priceOfTokenInEther
wo seinpriceOfTokenInEther = amountGive / amountGet
Erik