tx · 4qV9EVJ5ZQ2mwaVux3ysFBJV5aJUu8Mo82tqbkPRN1Mt

3MpKvUfNxrgF7QotPjFwi8thMagSveNScKe:  -0.01400000 Waves

2020.11.30 20:46 [1288475] smart account 3MpKvUfNxrgF7QotPjFwi8thMagSveNScKe > SELF 0.00000000 Waves

{ "type": 13, "id": "4qV9EVJ5ZQ2mwaVux3ysFBJV5aJUu8Mo82tqbkPRN1Mt", "fee": 1400000, "feeAssetId": null, "timestamp": 1606758394634, "version": 2, "chainId": 84, "sender": "3MpKvUfNxrgF7QotPjFwi8thMagSveNScKe", "senderPublicKey": "9GE2xN4fms9YNDxR1hGg52RynqDd8125TA42g4X29ZV7", "proofs": [ "4bMoZo2o62S9Doe7tj3wM9QYb1sTNasYL3nUgGDRh6SGiShoSX8A8kbBVL1eUDANyd2LysLs7AvAaAd5MErkj2fo" ], "script": "base64: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", "height": 1288475, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EfWQ7CUKSC7EEC7YT23JzPyqyJyBNPkzTj1EEnJmjp1B Next: 9Lf9kbCkyTXnRoDw11CoS6vmYE5cZxusnbwuPP1sDLaw Diff:
OldNewDifferences
33 {-# CONTENT_TYPE DAPP #-}
44 let cf = addressFromPublicKey(fromBase58String("J7vyoUA8Gd5QMq4YVtedpv19dwCYroZEYrN8bKgLzqV8"))
55
6-let opbr = base58'HMov2457acf5MEJr85fvXYL3vrTEevFpsEQkHh1yfdUT'
6+let gtw = addressFromPublicKey(fromBase58String("C8jRoXECFheT6JPcAkcyWPadYbxBA6tSyAqXqjq5dicS"))
7+
8+let opbr = base58'BN6ta4Sfmmh8tfmJE4pqJrSxLNJReAqnerPePYqkjcjG'
79
810 func getAllowedTokens (tokenId) = {
911 let allow = match getString(this, tokenId) {
2022 let getMsg = toBytes(toBase58String(keccak256(blake2b256(toBytes(m)))))
2123 sigVerify(getMsg, fromBase58String(s), base58'C8jRoXECFheT6JPcAkcyWPadYbxBA6tSyAqXqjq5dicS')
2224 }
23-
24-
25-@Callable(i)
26-func opbrTest (tokenId,qtd,sig) = {
27- let pmt = i.payments
28- if ((tokenId == "kjflkdsjf"))
29- then throw("nada")
30- else throw((tokenId + toString((qtd + pmt[0].amount))))
31- }
32-
3325
3426
3527 @Callable(i)
5547 let c = fraction(1, pmt[0].amount, 100)
5648 [ScriptTransfer(i.caller, qtd, opbr), ScriptTransfer(cf, c, pmt[0].assetId)]
5749 }
50+ }
51+
52+
53+
54+@Callable(i)
55+func bygtw (orderId,payoutAddr,amount) = {
56+ let senderAddr = toBase58String(i.caller.bytes)
57+ if ((senderAddr != toString(gtw)))
58+ then throw("Your account is not authorized for gateway execution")
59+ else [ScriptTransfer(i.caller, 1000000, unit), ScriptTransfer(addressFromStringValue(payoutAddr), amount, opbr)]
5860 }
5961
6062
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let cf = addressFromPublicKey(fromBase58String("J7vyoUA8Gd5QMq4YVtedpv19dwCYroZEYrN8bKgLzqV8"))
55
6-let opbr = base58'HMov2457acf5MEJr85fvXYL3vrTEevFpsEQkHh1yfdUT'
6+let gtw = addressFromPublicKey(fromBase58String("C8jRoXECFheT6JPcAkcyWPadYbxBA6tSyAqXqjq5dicS"))
7+
8+let opbr = base58'BN6ta4Sfmmh8tfmJE4pqJrSxLNJReAqnerPePYqkjcjG'
79
810 func getAllowedTokens (tokenId) = {
911 let allow = match getString(this, tokenId) {
1012 case a: String =>
1113 a
1214 case _ =>
1315 false
1416 }
1517 allow
1618 }
1719
1820
1921 func verification (m,s) = {
2022 let getMsg = toBytes(toBase58String(keccak256(blake2b256(toBytes(m)))))
2123 sigVerify(getMsg, fromBase58String(s), base58'C8jRoXECFheT6JPcAkcyWPadYbxBA6tSyAqXqjq5dicS')
2224 }
23-
24-
25-@Callable(i)
26-func opbrTest (tokenId,qtd,sig) = {
27- let pmt = i.payments
28- if ((tokenId == "kjflkdsjf"))
29- then throw("nada")
30- else throw((tokenId + toString((qtd + pmt[0].amount))))
31- }
32-
3325
3426
3527 @Callable(i)
3628 func opbrBuy (tokenId,qtd,sig) = {
3729 let buyerAddr = toBase58String(i.caller.bytes)
3830 let pmt = i.payments
3931 let allowed = getAllowedTokens(tokenId)
4032 if ((size(pmt) == 0))
4133 then throw("Payment for exchange is mandatory")
4234 else if ((size(pmt) == 2))
4335 then throw("Only one payment per transaction is allowed")
4436 else if (!(verification((tokenId + toString((qtd + pmt[0].amount))), sig)))
4537 then throw("Stop hacking me!")
4638 else if (if (isDefined(pmt[0].assetId))
4739 then (allowed == false)
4840 else false)
4941 then throw("The used token is not accepted")
5042 else if (if (isDefined(pmt[0].assetId))
5143 then (fromBase58String(tokenId) != pmt[0].assetId)
5244 else false)
5345 then throw("declared token is different from submitted token")
5446 else {
5547 let c = fraction(1, pmt[0].amount, 100)
5648 [ScriptTransfer(i.caller, qtd, opbr), ScriptTransfer(cf, c, pmt[0].assetId)]
5749 }
50+ }
51+
52+
53+
54+@Callable(i)
55+func bygtw (orderId,payoutAddr,amount) = {
56+ let senderAddr = toBase58String(i.caller.bytes)
57+ if ((senderAddr != toString(gtw)))
58+ then throw("Your account is not authorized for gateway execution")
59+ else [ScriptTransfer(i.caller, 1000000, unit), ScriptTransfer(addressFromStringValue(payoutAddr), amount, opbr)]
5860 }
5961
6062
6163
6264 @Callable(i)
6365 func tokenList (tokenId,ticker) = {
6466 let Addr = toBase58String(i.caller.bytes)
6567 if (if ((Addr != toString(this)))
6668 then (Addr != toString(cf))
6769 else false)
6870 then throw("The address is not authorized to list tokens")
6971 else [StringEntry(tokenId, ticker), ScriptTransfer(cf, 1000000, unit)]
7072 }
7173
7274
7375
7476 @Callable(i)
7577 func tokenDelist (tokenId) = {
7678 let Addr = toBase58String(i.caller.bytes)
7779 if (if ((Addr != toString(this)))
7880 then (Addr != toString(cf))
7981 else false)
8082 then throw("The address is not authorized to delist tokens")
8183 else [DeleteEntry(tokenId), ScriptTransfer(cf, 10000000, unit)]
8284 }
8385
8486
8587 @Verifier(tx)
8688 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
8789

github/deemru/w8io/6500d08 
31.18 ms