tx · 9Lf9kbCkyTXnRoDw11CoS6vmYE5cZxusnbwuPP1sDLaw

3MpKvUfNxrgF7QotPjFwi8thMagSveNScKe:  -0.01400000 Waves

2020.12.01 14:10 [1289514] smart account 3MpKvUfNxrgF7QotPjFwi8thMagSveNScKe > SELF 0.00000000 Waves

{ "type": 13, "id": "9Lf9kbCkyTXnRoDw11CoS6vmYE5cZxusnbwuPP1sDLaw", "fee": 1400000, "feeAssetId": null, "timestamp": 1606821034279, "version": 2, "chainId": 84, "sender": "3MpKvUfNxrgF7QotPjFwi8thMagSveNScKe", "senderPublicKey": "9GE2xN4fms9YNDxR1hGg52RynqDd8125TA42g4X29ZV7", "proofs": [ "Yw8LssAca2PruVXJp3JrsWV4NP8gKwJumqoCj3HbT61BnFb8FmcUNcMNa1ZeEgugiTXMkpkfuR1EEvHYuEiev81" ], "script": "base64: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", "height": 1289514, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4qV9EVJ5ZQ2mwaVux3ysFBJV5aJUu8Mo82tqbkPRN1Mt Next: 43nR2V446viMoai4CSHnDWt5PsUwEfqWfnBpfktxyUUZ Diff:
OldNewDifferences
1515 false
1616 }
1717 allow
18+ }
19+
20+
21+func getPayout (payoutKey) = {
22+ let payout = match getString(gtw, payoutKey) {
23+ case a: Unit =>
24+ false
25+ case _ =>
26+ true
27+ }
28+ payout
1829 }
1930
2031
5667 let senderAddr = toBase58String(i.caller.bytes)
5768 if ((senderAddr != toString(gtw)))
5869 then throw("Your account is not authorized for gateway execution")
59- else [ScriptTransfer(i.caller, 1000000, unit), ScriptTransfer(addressFromStringValue(payoutAddr), amount, opbr)]
70+ else if ((getPayout(((toString(orderId) + " ") + payoutAddr)) == true))
71+ then throw("Payout already Executed")
72+ else [ScriptTransfer(i.caller, 1000000, unit), ScriptTransfer(addressFromStringValue(payoutAddr), amount, opbr)]
6073 }
6174
6275
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let cf = addressFromPublicKey(fromBase58String("J7vyoUA8Gd5QMq4YVtedpv19dwCYroZEYrN8bKgLzqV8"))
55
66 let gtw = addressFromPublicKey(fromBase58String("C8jRoXECFheT6JPcAkcyWPadYbxBA6tSyAqXqjq5dicS"))
77
88 let opbr = base58'BN6ta4Sfmmh8tfmJE4pqJrSxLNJReAqnerPePYqkjcjG'
99
1010 func getAllowedTokens (tokenId) = {
1111 let allow = match getString(this, tokenId) {
1212 case a: String =>
1313 a
1414 case _ =>
1515 false
1616 }
1717 allow
18+ }
19+
20+
21+func getPayout (payoutKey) = {
22+ let payout = match getString(gtw, payoutKey) {
23+ case a: Unit =>
24+ false
25+ case _ =>
26+ true
27+ }
28+ payout
1829 }
1930
2031
2132 func verification (m,s) = {
2233 let getMsg = toBytes(toBase58String(keccak256(blake2b256(toBytes(m)))))
2334 sigVerify(getMsg, fromBase58String(s), base58'C8jRoXECFheT6JPcAkcyWPadYbxBA6tSyAqXqjq5dicS')
2435 }
2536
2637
2738 @Callable(i)
2839 func opbrBuy (tokenId,qtd,sig) = {
2940 let buyerAddr = toBase58String(i.caller.bytes)
3041 let pmt = i.payments
3142 let allowed = getAllowedTokens(tokenId)
3243 if ((size(pmt) == 0))
3344 then throw("Payment for exchange is mandatory")
3445 else if ((size(pmt) == 2))
3546 then throw("Only one payment per transaction is allowed")
3647 else if (!(verification((tokenId + toString((qtd + pmt[0].amount))), sig)))
3748 then throw("Stop hacking me!")
3849 else if (if (isDefined(pmt[0].assetId))
3950 then (allowed == false)
4051 else false)
4152 then throw("The used token is not accepted")
4253 else if (if (isDefined(pmt[0].assetId))
4354 then (fromBase58String(tokenId) != pmt[0].assetId)
4455 else false)
4556 then throw("declared token is different from submitted token")
4657 else {
4758 let c = fraction(1, pmt[0].amount, 100)
4859 [ScriptTransfer(i.caller, qtd, opbr), ScriptTransfer(cf, c, pmt[0].assetId)]
4960 }
5061 }
5162
5263
5364
5465 @Callable(i)
5566 func bygtw (orderId,payoutAddr,amount) = {
5667 let senderAddr = toBase58String(i.caller.bytes)
5768 if ((senderAddr != toString(gtw)))
5869 then throw("Your account is not authorized for gateway execution")
59- else [ScriptTransfer(i.caller, 1000000, unit), ScriptTransfer(addressFromStringValue(payoutAddr), amount, opbr)]
70+ else if ((getPayout(((toString(orderId) + " ") + payoutAddr)) == true))
71+ then throw("Payout already Executed")
72+ else [ScriptTransfer(i.caller, 1000000, unit), ScriptTransfer(addressFromStringValue(payoutAddr), amount, opbr)]
6073 }
6174
6275
6376
6477 @Callable(i)
6578 func tokenList (tokenId,ticker) = {
6679 let Addr = toBase58String(i.caller.bytes)
6780 if (if ((Addr != toString(this)))
6881 then (Addr != toString(cf))
6982 else false)
7083 then throw("The address is not authorized to list tokens")
7184 else [StringEntry(tokenId, ticker), ScriptTransfer(cf, 1000000, unit)]
7285 }
7386
7487
7588
7689 @Callable(i)
7790 func tokenDelist (tokenId) = {
7891 let Addr = toBase58String(i.caller.bytes)
7992 if (if ((Addr != toString(this)))
8093 then (Addr != toString(cf))
8194 else false)
8295 then throw("The address is not authorized to delist tokens")
8396 else [DeleteEntry(tokenId), ScriptTransfer(cf, 10000000, unit)]
8497 }
8598
8699
87100 @Verifier(tx)
88101 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
89102

github/deemru/w8io/6500d08 
36.02 ms